PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zum Chat Befehl



Flaver
14.10.2009, 16:44
Hallo,

nach einer längeren Pause von GMod möchte ich jetzt wieder anfangen und zu gleich auch mit Lua anfangen.

Nur zur Frage:

Ich probier im moment nur ein bisschen rum mit ner GameMode aber nun
würde ich gerne einen Chat Befehl machen, nur hab ich null Ahnung wie ich das machen muss :s



Hoffe ihr könnt mir helfen.


-Flaver

Terminator-X29B
14.10.2009, 16:47
Definiere "Chat-Befehl"? Was genau meinst du mit einem Chat Befehl? Soll der Befehl etwas aufrufen wie bei ULX das Menü?

monky2k6
14.10.2009, 18:00
Ein... Chatbefehl eben o_O
Also du gibst was in den Chat ein wie "/kick Mingebag" und der User mit dem Namen Mingebag wird gekickt z.B. :gmod:

don-banane
14.10.2009, 19:29
http://wiki.garrysmod.com/?title=Gamemode.PlayerSay

Stoned
14.10.2009, 19:43
local commands = {
["kick"] = function(arg)
local name,txt = arg:match("([%w_]+)%s?(.*)") -- wieder pattern action :D
for k,v in pairs(player.GetAll()) do -- alle player
if v:Name():lower():find(name) then -- die mit dem argument was gemeinsam haben
v:Kick(txt ~= "" and txt or "The admin does not like you!") -- werden gekickt!
end
end
end,
["hp"] = function(arg)
local name,hp = arg:match("([%w_]+)%s?(.*)") -- wieder pattern action :D
for k,v in pairs(player.GetAll()) do -- alle player
if v:Name():lower():find(name) then -- die mit dem argument was gemeinsam haben
v:SetHealth(hp ~= "" and hp or 100) -- kriegen entweder die angegebenen oder 100 hp
end
end
end,
}

function ChatCommand(ply,text)
if text:sub(1,1) == "/" then -- wir haben den richtigen anfang!
local cmd,arg = text:sub(2):match("([%w_]+)%s(.+)") -- zeit fuer pattern action :)
if commands[cmd] then -- falls die funktion (kick,hp,...) existiert
commands[cmd](arg) -- ruft man sie mit dem argument auf
return "" -- und returned nichts, damit nichts im chat steht
end
end
end
hook.Add("PlayerSay","Record commands",ChatCommand)

Sowas? :P