Zdravim, zde vam ukazu jak vytvorit jednoduchy PM system. Bude to fungovat tak ze napisete /pm nick text.
Uplny zaklad scriptu je funkce a prikaz prirazeny k ni. Takze zaklad vypada takto: Code: function pm ()
end
addCommandHandler("pm", pm) --Prirazeni prikazu /pm k funkci pm()
Nyni do funkce pridame argumenty a najdeme hrace ktery ma zpravu obdrzet Code: function pm (odesilatel, cmd, nickPrijemce, text)
local prijemce = getPlayerFromName(nickPrijemce) --Zjisteni hrace podle nicku
end
addCommandHandler("pm", pm)
Avsak nastal problem, text je jako jeden argument, coz znamena ze muzeme poslat pouze jedno slovo, ale co by to bylo za PM system s jednim slovem, ze? Da se to celkem jednoduse vyresit pomoci table.concat. Zmenime parametr text na ... .
Code: function pm (odesilatel, cmd, nickPrijemce, ...)
local text = table.concat({...}, " ") --Vytvorime tabulku obsahujici slova zpravy local prijemce = getPlayerFromName(nickPrijemce)
end
addCommandHandler("pm", pm)
Takze nyni mame prichystaneho prijemce i text, takze muzeme udelat cely system, komentare jsou primo v kodu: Code: function pm (odesilatel, cmd, nickPrijemce, ...)
local text = table.concat({...}, " ") --Vytvoreni tabulky obsahujici zpravy local prijemce = getPlayerFromName(nickPrijemce)
Takze to mame PM system hotov. Ted uz jen pokud se vyskytne to, ze hrac neni nalezen nebo odesilatel zapomene napsat zpravu tak udelame 'ochranu' proti tomuto ;)
Code: function pm (odesilatel, cmd, nickPrijemce, ...)
local text = table.concat({...}, " ") --Vytvoreni tabulky obsahujici zpravy local prijemce = getPlayerFromName(nickPrijemce)
if prijemce then --Pokud byl nalezen prijemce if zprava then --Pokud byla napsana zprava outputChatBox("PM od " .. getPlayerName(odesilatel) .. ": " .. text, prijemce, 0, 255, 0, true) --PM odeslana prijemci outputChatBox("PM pro " .. getPlayerName(prijemce) ,, ": " .. text, odesilatel, 0, 255, 0, true) --Zprava pro odesilatele else outputChatBox("Nenapsal jsi zadnou zpravu!", odesilatel, 255,0,0) end else outputChatBox("Hrac \"" .. nickPrijemce .. "\" nebyl nalezen!", odeilatel, 255,0,0) end end
addCommandHandler("pm", pm)
Tak to je vse ;) Ovsem, nick se musi naprosto shodovat s hracovym nickem! Pokud chcete tomuto predejit a zadavat jen cast nicku bez ohledu na to zda ma v nicku HEX cody nebo velke/male znaky, pouzijte nasledujici kod: Code:
function getPlayerFromName(name) if name then for i, player in ipairs(getElementsByType("player")) do if string.find(getPlayerName(player):lower(), tostring(name):lower(), 1, true) then return player end end end return false end --Autorem je TAPL
Toto nahradi funkci getPlayerFromName, takze uz nic editovat nemusite ;) Takhle kdyz budu mit nick treba #ff0000miki_cz tak staci zadat /pm miki zprava a PM se odesle ;)
To je ode mne vse :D
_________________ Ten nepodstatnej hlavni admin :D