2016-10-09 96 views
0
local function CreateCvar(cvar, value) 
    CreateClientConVar(cvar, value) 
end 
--cvars 
CreateCvar("bunnyhop_test", 0) 
CreateCvar("bunnyhop_test_off", 0) 

if CLIENT then 
    function ReallyHiughJumpoBHOP() 
    --concommand.Add("+bhop",function() 
    if GetConVarNumber("bunnyhop_test") then 
    hook.Add("Think","hook",function() 
    RunConsoleCommand(((LocalPlayer():IsOnGround() or LocalPlayer():WaterLevel() > 0) and "+" or "-").."jump") 
    end 
end) 


    function ReallyHiughJumpoBHOPoff() 
--concommand.Add("-bhop",function() 
    if GetConVarNumber("bunnyhop_test_off") then 
    RunConsoleCommand("-jump") 
    hook.Remove("Think","hook") 
end) 

這是一個爲遊戲「Garry's mod」製作的lua腳本。這樣做應該反覆跳轉。我編輯了可以工作的基本代碼,現在我的代碼不再有效。如何調試Lua腳本代碼?

試圖使用createcvars使其工作。我確實沒有顯示任何錯誤,但在遊戲中,當我在控制檯中鍵入「bunnyhop_test 1」時,它不起作用。

下面是原碼我開始:

if CLIENT then 
    concommand.Add("+bhop",function() 
     hook.Add("Think","hook",function() 
      RunConsoleCommand(((LocalPlayer():IsOnGround() or LocalPlayer():WaterLevel() > 0) and "+" or "-").."jump") 
     end) 
    end) 

    concommand.Add("-bhop",function() 
     RunConsoleCommand("-jump") 
     hook.Remove("Think","hook") 
    end) 
end 
+0

是的,我有點害怕它^^ – user1244458

+0

好吧,我可以看到你想用你自己的控制檯變量來改變腳本。我更新了代碼,以便您可以編寫'bunnyhop_test 1'來啓用和'bunnyhop_test 0'來禁用腳本。當然你需要用'+ bhop'來啓動它。 –

回答

1

你搞砸了你的end關鍵字訂單。某些if語句不能正確關閉,並且某些函數聲明沒有正確關閉end

從編輯,我只能猜測這是你想要做什麼:

local function CreateCvar(cvar, value) 
    CreateClientConVar(cvar, value) 
end 

--cvars 
CreateCvar("bunnyhop_test", 0) 

if CLIENT then 
    concommand.Add("+bhop",function() 
      hook.Add("Think","hook",function() 
       if GetConVarNumber("bunnyhop_test") == 1 then 
        RunConsoleCommand(((LocalPlayer():IsOnGround() or LocalPlayer():WaterLevel() > 0) and "+" or "-").."jump") 
       end 
      end) 
     end 
    end) 

    concommand.Add("-bhop",function() 
     RunConsoleCommand("-jump") 
     hook.Remove("Think","hook") 
    end) 
end 

看到的,當一個函數聲明爲inline,被稱爲封閉,你必須有與之相匹配的關鍵字end,表示其結束。此外,請注意,您將這些內聯函數作爲參數傳遞給另一個函數.Add,該函數以(開頭,並且必須以)結束。 if聲明,還需要有一個end關鍵字來表示if的結尾。所有這些都是基本的編程原則,請嘗試閱讀更多代碼以熟悉如何編寫更多代碼,可能從lua documentation開始。

我還修改了代碼,以便您可以編寫bunnyhop_test 0禁用,並且bunnyhop_test 1啓用該腳本。

+0

謝謝我現在沒有任何錯誤。代碼確實按預期工作,但我不明白的是這個。我以爲我加入了這個會議廳,我可以開啓/關閉它。當我進入我的控制檯並輸入「+ bhop」時,它工作正常!但如果我嘗試通過「bunnyhop_test 1」打開它,它什麼也不做。我不明白這一部分。 – user1244458

+0

'GetConVarNumber'將返回您設置的值的值**,但**因爲它返回0,所以lua會將其作爲'true',只有'false'或'nil'爲假。你將必須檢查平等,如'GetConVarNumber(「bunnyhop_test_off」)== 1' –

+0

因此,我需要這樣的事情嗎? ------------------------------------如果GetConVarNumber(「bunnyhop_test」)> 0那麼 – user1244458