MSHost.cz https://forum.mshost.cz:443/ |
|
Jednoduchy PM system https://forum.mshost.cz:443/viewtopic.php?f=18&t=1087 |
Page 1 of 1 |
Author: | MIKI785 [ Wed 09. May 2012 20:19:09 ] |
Post subject: | Jednoduchy PM system |
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) 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 end addCommandHandler("pm", pm) 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 |
Page 1 of 1 | All times are UTC + 1 hour [ DST ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |