It is currently Fri 22. Nov 2024 23:12:34

All times are UTC + 1 hour [ DST ]




Post new topic  Post a reply   Page 1 of 1  [ 1 post ] 
Author Message

LazyFox83
 Post subject: Jednoduchy PM system
PostPosted: Wed 09. May 2012 20:19:09 
offline
Hlavní Administrátor
Hlavní Administrátor
User avatar

Joined: Thu 13. Oct 2011 18:32:25
Posts: 1625
Location: Dublin, Irsko

Admin Level: 5
Points: 1 581 548
Cash: $2 088 468
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 :D

___________________
Ten nepodstatnej hlavni admin :D
Image


Top
   
 
Display posts from previous:  Sort by  
Post new topic  Post a reply   Page 1 of 1  [ 1 post ] 

All times are UTC + 1 hour [ DST ]


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
TOPlist
Powered by phpBB® Forum Software © phpBB Group

©MSHost.cz