Jump to content

MIKI785

Uživatel
  • Příspěvků

    2195
  • Registrován

  • Aktivní

  • Vítězných dnů

    1

Příspěvky posted by MIKI785

  1. Priste napis ze se jedna o herni mod race. To nikdo nepise pritom je to podstatna informace, to si to mam vyvucat z prustu?

    No, abych nepsal jen kraviny, ten text se nezmeni jen tak sam od sebe.. musis dat do prikazu nextmap zmenu toho textu. DxDrawy jsou ale client-only, takze budes muset vytvorit event a ten pak vyvolat kdyz nekdo napise /nextmap. Naprosto jednoduchy pokud umis zaklady, pokud ne tak je to tezky :d

  2. 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:

    function pm ()
    
    end
    
    addCommandHandler("pm", pm) --Prirazeni prikazu /pm k funkci pm()
    

    Nyni do funkce pridame argumenty a najdeme hrace ktery ma zpravu obdrzet

    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 ... .

     

    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:

    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 ;)

     

    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:

    
    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

  3. Zdravim, zde vam ukazu jak si vytvorit vlastni funkce a jak je pouzivat. Cela lua je zalozena na funkcich.

     

    Funkce se vytvareji nasledovne:

    function nazevFunkce () --Do zavorek se davaji pripadne parametry oddelene carkou
    
    --co se ma vykonat.
    
    end --Kazda funkce se musi radne ukoncit.
    

     

    Ukazu vam jak udelat funkci ktera vypise neco do chatu s predefinovanou barvou, tudiz zadavame jen text.

    function zprava (text) --Definovani funkce 'zprava' s parametrem 'text'
    
    outputChatBox(text, getRootElement(), 255,0,0, true) --Odesle zpravu v cervene barve
    
    end --Ukonceni
    

    Funkci zprava pote pouzijeme nasledovne: zprava("Muj Text")

     

    A jak muzeme vytvorit funkci ktera je vyvolana hracem pomoci prikazu? Uplne jednoduse pomoci addCommandHandler()

    Prikazy muzete delat dvema zpusoby, bud:

    addCommandHandler("prikaz",
    
    function (player, cmd)
    
    end)
    

    nebo muzete samostatne vytvorit funkci a pak k ni priradit prikaz:

    function funkce (player, cmd)
    
    end
    
    addCommandHandler("prikaz", funkce)
    

    Jeste je zde moznost to provest prez event onPlayerCommand ale to je zbytecnost.

    Urcite ste si vsimli ze funkce maji parametry player a cmd, to proto ze addCommandHandler poskytuje pro vyvolane funkce parametry kterymy jsou: Element Hrace ktery prikaz zadal (player), text prikazu, v tomto pripade "prikaz" (cmd), a pak uz jto so libovolne parametry ktere zada hrac... pokud zada napriklad '/prikaz 24' tak cislo 24 se da ziskat tak ze do vyvolane funkce pridate jeden parametr, napr. function (player, cmd, cislo).

    Pozor! parametr player je poskytovan pouze server-sided, v clientu jsou pak parametry nasledovne: function (cmd, cislo)

     

    Zde vam ukazu priklad ktery zjisti hracovi pozice po zadani prikazu /getpos

     

    addCommandHandler("getpos",
    
    function (player, cmd)
    
    local x, y, z = getElementPosition(player) --Zjisteni suradnic
    outputChatBox("Souradnice: " .. x .. ", " .. y .. ", " .. z, player) --Posle zpravu danemu hraci.
    
    end)
    

     

    Doufam ze vam tento tutorial neco rekl ;)

  4. Free hostingy jsou nejvetsi odpad. Ja bych si nikdy nenechal hostovat server u free hostingu, jednoduse pro to ze to neni duveryhodny (kradeze..) a taktez proto ze kdyz je to zdarma tak majitel asi nema zadne zisky, takze asi nebude mit penize na neaky slusny stroj, coz znamena lagy.

×
×
  • Create New...