2015-04-10 2 views
-1

Следующий сценарий прерывается между печатью («2») и печатью («3»), потому что он не может найти переменную «тег». Как я могу это исправить?Почему этот скрипт не работает?

local Humanoid = script.Parent.Zombie -- Or Zombie Or Whatever 
function PwntX_X() 
    print("1") 
    local tag = Humanoid:findFirstChild("creator") 
    print("2") 
    if tag ~= nil then 
     print("3") 
     if tag.Value ~= nil then 
      print("4") 

      local Leaderstats = tag.Value:findFirstChild("leaderstats") 
      print("5") 
      if Leaderstats ~= nil then 
       print("6") 
       Leaderstats.Cash.Value = Leaderstats.Cash.Value + 5 
       print("7") 
       wait(0.1)`enter code here` 
       script:remove() 
      end 
     end 
    end 
end 
Humanoid.Died:connect(PwntX_X) 

У меня уже есть скрипт для таблицы лидеров, который работает 100%. Этот скрипт используется для игры под названием «ROBLOX». Благодаря!

+0

Более Lua способ проверить не ноль: if not tag then ... end – Moop

+0

Хорошо, я его поменяю. –

+0

И чтобы ответить на ваш реальный вопрос, функция findFirstChild («создатель») возвращает nil, поэтому вам придется опубликовать код этой функции, чтобы люди могли помочь. – Moop

ответ

0

Хорошо, во-первых, scriptinghelpers.org был создан как сервис, похожий на stackoverflow специально для Roblox, я предлагаю в следующий раз, вы спрашиваете, теперь, на вещи;

-- If you have further problems, My Roblox username is 'ZeroBits' (REMOVE THIS LINE) 

DEBUG = true -- Debug Print, so you can disable it when you're done. 
local function print_D(t) 
    if DEBUG == true then warn(t) end end 
print_D("DEBUG MODE, Switch Debug Value to False when finished") 

local Humanoid = script.Parent:FindFirstChild("Zombie") -- We'll use FindFirstChild() here 
--if not Humanoid then -- Uncomment this statement if you want it to affect objects named Humanoid as well 
-- Humanoid = script.Parent:FindFirstChild("Humanoid") 
--end 
function HumanoidKilled() -- Renamed the function to be a little less cringeworthy 
    print_D("1") -- switched these print statements with the Print_D() function 
    local tag = Humanoid:FindFirstChild("creator") -- Capitalized the first letter in FindFirstChild() 
    print_D("2") 
    if not tag then 
     warn("No Tag Found check Humanoid and weapon script") --if this prints, there's either no tag, or a serious problem, and you should check the humanoid object for a tag, or make sure the weapons you use actually generate tags. 
    else -- changed 'if tag ~= nil then' to 'if not tag then 'do stuff' else' to simplify the code, and add an else statement early on. 
     print_D("3") 
     if tag.Value then -- removed '~= nil' because it's just useless clutter 
      print_D("4") 
      local Leaderstats = tag.Value:findFirstChild("leaderstats") 
      print_D("5") 
      if Leaderstats ~= nil then 
       print_D("6") 
       Leaderstats.Cash.Value = Leaderstats.Cash.Value + 5 
       print_D("7") 
       wait(0.1) 
       script:Destroy() -- switched remove() to Destroy(), remove() is deprecated 
      end 
     end 
    end 
end 
Humanoid.Died:connect(HumanoidKilled) 

Это устраняет все проблемы в скрипте и делает его более эффективным. если все еще есть проблемы, это либо в скрипте создания тега, либо теги не хранятся в гуманоиде, либо теги не называются «создателем»

Кроме того, я переключил операторы печати на функцию print_D , который использует warn(), а не print(), почти нет различий, за исключением того, что текст отладки будет желтым на консоли, а не белым.

сценарий используется для игры под названием «ROBLOX». Благодаря!

Это для игры На Roblox, а не в игре Roblox, то, что вы сказали, сродни произношению; Я сделал этот мод для Source Engine, когда вы на самом деле сделали мод для Half-Life 2