2012-08-03 74 views
0

我期待嘗試啓用/禁用使用!commands的能力(命令在這個遊戲(命令和征服:叛徒)總是前綴!)取決於文本文件是否指示用戶被允許使用它或不使用它。爲了兼容性和集成,我正在尋找Lua中的代碼。例如:Lua命令啓用/禁用

Harry1被允許使用!spectate
Harry2不允許使用!spectate

然而,這可能是用戶的無限數量,因爲每一個都可以選擇一個最大的3「選項」,而這些「選項」其餘的都不準是誰沒有把它作爲自己3.一個例如,一個用戶可以訪問:

Harry1選擇!spectate!cookie!pizza
Harry2選擇!cookie!icecream!chocolate

因此,Harry1將無法使用!icecream!chocolate和Harry2不能使用!spectate!pizza

Get_Player_ID(pID)使用播放器ID。

+0

是否有文件類型限制,或者你可以選擇它自由? – 2012-08-03 11:29:17

+0

對不起,我應該說在OP中:我希望它在lua中,因此它可以集成到現有的代碼中......我缺乏任何形式的C++知識,這將是唯一的選擇。 – Talisman 2012-08-03 11:31:44

回答

0

最好先設計數據的佈局。由於Lua是設計爲也是數據描述語言,是很自然的使用本地的語法,所以選擇的文件應該是這樣的:

user { 
    name: "Harry1", 
    choices: {["spectate"]=true, ["cookie"]=true, ["pizza"]=true}, 
} 

user { 
    name: "Harry2", 
    choices: {["cookie"]=true, ["icecream"]=true, ["chocolate"]=true}, 
} 

然後,在代碼中,你可以做到以下幾點:

users = {} 

function user_docommand(user, command) 
    if users[user].choices[command] == true do 
     --- do the command 
    end 
end 

do 
    function user(u) 
     if users[u.name] == nil then 
      users[u.name] = {} 
     end 
     users[u.name].choices = u.choices 
    end 
    --- perharps use a safer function than dofile here 
    dofile("choices.lua") 
end 

10.1 - Data Description from PIL 1st edition

+0

感謝您的協助!但是,對於這樣的事情,我是一個全新的東西,我想知道:我在哪裏把特定的命令放在你給我看的第二段代碼中? :s另外,我不確定第一部分代碼的目標是什麼,實質上,用戶將是選擇命令的人...儘管如此,感謝您的幫助! – Talisman 2012-08-03 12:16:46

+0

@HarryLudlow第一部分將是配置文件 - 它也可以由程序編寫。至於第二部分,它顯示了實現特權功能的一點原則,它遠非完整 - 完整的實現取決於已經存在的代碼,並且對於該站點來說太具體。 – 2012-08-03 12:27:42

+0

我明白了,但是如何讓程序編寫配置文件呢?我曾嘗試過使用write/readini的東西,但無濟於事:/你有任何鏈接可以提供創建這些文件的簡單的觀點嗎? – Talisman 2012-08-03 12:31:47