•LUA - edytor pokoju• |
23 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
______________________________1. Wstęp ______________________________2. Budowa ______________________________3. Słowa, wartości, znaki ______________________________4. Przykłady ______________________________5. Błędy ______________________________6. Inne 1. Co to jest? _Lua to język programowania głównie służący do wzbogacenia funkcjonalności istniejącego programu. Jego wykorzystanie jest dość częste, ponieważ język ten jest stosunkowo łatwy względem innych oraz jego skrypty są krótkie. 2. Jak rozumieć lua _Jeżeli znasz podstawowe słówka z języka angielskiego, połowa już jest za Tobą - wystarczy przetłumaczyć sobie którykolwiek kod aby wiedzieć do czego on służy. Co do samego modułu, można go sobie wyobrazić jako użytkownika TFM, ale nie jest on myszką tylko całym pokojem. Moduł nie gra tak jak wszyscy biegając za serem i norą, jedyne co robi to interpretuje rozkazy graczy i je spełnia. Jeżeli chcemy, abyśmy dostali serek po wpisaniu komendy '!ser' skrypt może być taki: function eventChatCommand(nick,komd) if komd=="ser" then tfm.exec.giveCheese(nick) end if komd=="szam" then tfm.exec.setShaman(nick) end end funkcja wydarzenieKomendaCzatu(nick,komenda) jeśli komenda=="ser" wtedy --jeśli [komenda] jest 'ser' wtedy tfm.exec.dajSer(nick) koniec jeśli komenda=="szam" wtedy tfm.exec.ustawSzamana(nick) koniec koniec function eventChatCommand("Ouake","ser") if "ser"=="ser" then tfm.exec.giveCheese("Ouake") end if "ser"=="szam" then tfm.exec.setShaman("Ouake") end end 3. Jak korzystać z lua W celu przesłania skryptu lua do modułu należy otworzyć konsolę poprzez wpisanie komendy '/lua', tam wpisujemy/wklejamy co chcemy i wybieramy "Wyślij". Każdy skrypt jest odczytywany przez moduł, ale jeżeli zostanie wykryty jakiś błąd zakłócający pracę programu, wtedy moduł zostaje automatycznie wyłączony. _Każdą funkcję zaczynamy od logicznego słowa function i dalej wybrany przez Nas event, czyli na co funkcja ma zadziałać. Dalej są wpisywane różne nazwy zmiennych tej funkcji jakie event pobiera i zazwyczaj dotyczą tej osoby, która to aktywuje, ale może zadziałać także na wszystkich. Te wartości są typu local, więc nie można ich używać poza funkcją. Następnym krokiem jest zapisanie bloku funkcji, czyli co ma się stać po jej aktywacji i wpisanie w nawiasie istotnych danych, które mogą pochodzić z pobranych wartości eventa, wpisać własne stałe wartości lub jeszcze inne zmienne zewnętrzne. Jeżeli wprowadzimy już wszystko co chcemy, zamykamy całość przez end lub kilka endów i funkcja jest gotowa. 1. Prosta funkcja _Jak zrobić prostą funkcję, czyli bez żadnych waruków czy zmiennych aktywacyjnych zapisałem wyżej, więc tylko dam tu przykład: function eventPlayerGetCheese(nick) system.bindMouse(nick,true) end 2. Funkcja z warunkiem _Dodanie warunku sprawia, że funkcja zadziała Tylko wtedy, gdy sens tego warunku będzie prawdą, dzięki temu możemy określić kiedy dana część bloku ma się aktywować. Do zapisania warunku korzystamy z formuły if [coś] then, gdzie w miejsce [coś] podajemy zmienną, znak porównania i żądaną wartość lub odwrotnie. Przykład dla warunku z 1 zdaniem logicznym: function eventChatCommand(nick,komd) if komd=="szam" then tfm.exec.setShaman(nick) end end function eventChatCommand(nick,komd) if komd=="pomoc" or komd=="help" then ui.addPopup(0,0,"Heh, i niby czego oczekujesz? xD",nick,300,100,200) end end function eventChatCommand(nick,komd) if komd=="win" and tfm.get.room.playerList[nick].hasCheese==true or komd=="win" and tfm.get.room.playerList[nick].isShaman==true then tfm.exec.giveCheese(nick) tfm.exec.playerVictory(nick) end end if <komd=="win" and tfm.(...).hasCheese==true> or <komd=="win" and tfm.(...).isShaman==true> then if <komd=="win"> or <tfm.(...).hasCheese==true and komd=="win"> or <tfm.(...).isShaman==true> then 3. Funkcja z aktywacją _Do wykonania tego przyda się wykorzystać zmienne, które ustala sam programista (Ty). Ich nazwa może być jaka tylko zechcesz, ale nie może to być słowo kluczowe. Teraz zrobimy taki kod, przez co po wpisaniu '!start' będzie można używać ducha pod sobą, a "!stop" wyłączy to: ffa=0 for nick in pairs(tfm.get.room.playerList) do tfm.exec.bindKeyboard(nick,32,true) end function eventChatCommand(nick,komd) if komd=="start" then ffa=1 elseif komd=="stop" then ffa=0 end end function eventKeyboard(nick,klaw,wd,x,y) if klaw==32 and ffa==1 then tfm.exec.addShamanObject(24,x,y+20) --* end end * - pominięte wartości są uznawane przez moduł za 'nil'. 4. Osobne ustawienia graczy _Kod podany wyżej można nazwać dobrym, ponieważ wykonuje to co chcemy. Dobrze byłoby go jednak ulepszyć tak, aby opcja zadziałała tylko na osobę, która użyje komendę w danej chwili, a w takim przypadku takie zmienne należy tabelkować: Tab={} -- tak sie tabelkuje zmienną for nick in pairs(tfm.get.room.playerList) do tfm.exec.bindKeyboard(nick,32,true) Tab[nick]=0 -- tak się podaje wartość zmiennej tabelowanej end function eventChatCommand(nick,komd) if komd=="start" then Tab[nick]=1 elseif komd=="stop" then Tab[nick]=0 end end function eventKeyboard(nick,klaw,wd,x,y) if klaw==32 and Tab[nick]==1 then tfm.exec.addShamanObject(24,x,y+20) end end 5. End _Tak więc kiedy i ile razy trzeba użyć wpisu end? Służy on do zamykania jeszcze otwartych stopni, ale zamyka on tylko 1, jeżeli ma kilka np. warunek, wtedy ma 2 stopnie i potrzebne są 2 endy. Co otwiera nowy stopień? Są to function if for while i repeat - każdy trzeba osobno zamykać. Oprócz tego jest jeszcze elseif i else, które można wpisać w miejsce end od if, ale ostatni elseif czy else trzeba zamknąć przez end. 1. Słowa _Jako że mają one ważny sens w kodzie, nie mogą być one nazwami zmiennych. Spis tych słów i ich rola:
2. Znaki
3. Wartości 1) Prawda/Fałsz Boolean tfm.get.room.playerList[nick].hasCheese==true 2) Liczba rzeczywista Float tfm.exec.displayParticle(8,400,200,3.5,2,-0.15,-0.05,nick) 3) Liczba całkowita Int tfm.exec.addShamanObject(24,x,y) 4) Tekst String ui.addTextArea(0,"Cześć, jestem <J>Twoim Bogiem",nil,30,30) 5) Tabela Table Tab={} Tab[nick]=0 6) funkcja Function function eventLoop(t) print(t) end 4. Wzorce Te wpisy są w stanie odczytać określony fragment tekstu lub wpisać wartość zmiennej. Lista wzorców:
► Odradzasz się gdy zginiesz function eventPlayerDied(nick) tfm.exec.respawnPlayer(nick) end ► Komenda '!pomoc' function eventChatCommand(nick,komd) if komd=="pomoc" then ui.addTextArea(0,"<J>Oto jest pomoc dla Ciebie!",nick,100,100,0,0,0x1c3c41,0x1c3c41) end end ► Latanie spacją function eventNewGame() for nick in pairs(tfm.get.room.playerList) do tfm.exec.bindKeyboard(nick,32,true) end end function eventKeyboard(nick,klaw) if klaw==32 then tfm.exec.movePlayer(nick,0,0,true,0,-50,true) end end ► Wstawianie skrzynki w miejscu kliknięcia for nick in pairs(tfm.get.room.playerList) do system.bindMouse(nick,true) end function eventMouse(nick,x,y) tfm.exec.addShamanObject(1,x,y) end ► Ser za całus function eventEmotePlayed(nick,id) if id==3 then tfm.exec.giveCheese(nick) end end ► Odbieranie odpowiedzi okienka for nick in pairs(tfm.get.room.playerList) do ui.addPopup(1,2,"Wpisz se coś",nick,100,100,120) end function eventPopupAnswer(id,nick,odp) if id==1 then ui.addTextArea(0,odp,nil,300,150,200,40,0x1c3c41,0x1c3c41,1) ui.addPopup(1,2,"Wpisz se coś",nick,100,100,120) end end ► Komenda wczytująca mapę function eventChatCommand(nick,komd) if komd:sub(0,3)=="map" then tfm.exec.newGame(komd:sub(5)) end end ► Komenda zmieniająca kolor nicku function eventChatCommand(nick,komd) local sekw = {} for arg in komd:gmatch("%S+") do table.insert(sekw,arg) end if sekw[1]=="color" then tfm.exec.setNameColor(sekw[2], tonumber("0x"..sekw[3])) -- tfm.exec.setNameColor([nick], 0x[kod RGB]) end end Tutaj opisane są błędy, które najczęściej występują. 1. Init Error "Init" to skrót od "inicjacji" i oznacza, że kod nie jest poprawny. # Attempt to call nil. Ten błąd pojawia się, gdy kod otrzymuje wartość nil w miejscu gdzie jest ona niedozwolona. Zdarza się też, że dana wartość jest odpowiednio ustalona, ale wtedy ważna jest kolejność wpisów print(test) test="Hejka." Print("Hejka.") # Index expected, got nil. Próba przywołania wartości z tabeli, gdzie tabela nie istnieje. tbl[1]="Tabela tbl nie została wcześniej stworzona." # ')' expected (to close '(' at line [liczba]) Pojawia się, gdy nie zamkniemy otwartego nawiasu lub wpiszemy źle jedną z danych wewnątrz nawiasu print("Hej" print("Hejka, lubicie "Władcę pierścieni"?") # '[instrukcja]' expected Jeśli nie wpiszemy wymaganej instrukcji, np. then po if, otrzymamy to. Może to się też zdarzyć gdy wykonujemy porównanie złym znakiem A=1 if A==1 print("nie ma then, czyli błąd") end A=1 if A=1 then print("powinno być ==, czyli błąd") end # '' expected. To może się pojawić, gdy pierwszy warunek rozpoczniemy przez elseif elseif 2>1 then print("elseif nie powinno być pierwsze.") end # Multiple points. Prawidłową liczbę z ułamkiem dziesiętnym zapisuje się wprowadzając najpierw część całkowitą, kropka, część ułamka. Ten błąd wystąpi, gdy spróbujemy dodać więcej kropek --Prawidłowy ułamek dziesiętny. 20.4391 --Nieprawidłowy ułamek dziesiętny. 20.43.9.1 # Unfinished (long) comment/string. Jeżeli otwierasz pole tekstu lub komentarza przez np. [[ musisz to później też zamknąć text="Ten tekst nigdy się nie kończy. --[[ Ten komentarz nigdy się nie kończy. # Nesting of [[...]] is deprecated. Gdy piszesz komentaż na kilka liń, nie możesz używać kilka razy tego samego nawiasu --[[ Tu jest komentarz A [[ To jest w środku komentarza A ]] To jest koniec komentarza A. Co z tym po prawej? ]] # Attempt to index ? (a nil value). Próba przywołania wartości z tabeli z miejsca, gdzie nie ma żadnej wartości (jest nil). tbl={} print(tbl[1]) # Null To jest błąd modułu API, którego nie da się rozwiazać. 2. Runtime Error Są to błędy, które występują w trakcie działania modułu, nie zawsze oznacza to wyłączenie modułu. # Attempt to concatenate [typ] and [typ]. Nie można łączyć ze sobą różnych typów danych używając "..", wyjątkiem jest łączenie tekstu i liczb --Tak jest dobrze. "Tekst "..34 --Tak jest źle. {"This","is","tabela","!!!"}.."tekst" nil..{"tabela"} nil.."tekst" function().."tekst" # Invalid key to 'next'. To pojawia się, gdy w funkcji next() są nieprawidłowe dane. Funkcja pairs() korzysta z next() tbl={Coś=true, CośJeszcze=true} for k,v in pairs(tbl) do tbl[k]=nil end # Attempt to perform arithmetic on a [typ] value. Jeżeli spróbujemy zwiększyć wartość tekstu lub całej tabeli o jakąś liczbę, wynikiem będzie ten błąd. Działania matematyczne można używać tylko na liczbach {"table"}+4 # Attempt to compare [typ] with [typ]. Nie można porównywać ze sobą różnych typów danych if {"table"}>4 then print("Za to otrzymasz błęda.") end # [typ] expected, got [typ]. Kiedy funkcja oczekuje pewnego typu danej ale otrzyma inną, pojawi się ten błąd for key,value in pairs("tekst") do print("pętla for powyżej oczekuje tabeli.") end # Lua destroyed : Runtime can't exceed 40 ms in 4 seconds ! function eventLoop() for i=1,1000 do --To spowoduje błąd. end end # Lua destroyed: Runtime too long! for i=1,10000000000 do --To też spowoduje błąd. end 3. Argument error Błędy argumentów rzadko przerywają pracę skryptu, częściej jest to tylko ostrzerzenie, że coś nie działa jak powinno. # Argument must be integer. To występuje gdy argument w funkcji oczekuje liczby, ale otrzymuje inny typ. for name in pairs(tfm.get.room.playerList) do tfm.exec.movePlayer(name,"text",200) end 4. Misc error # vm error: java.lang.ArrayIndexOutOfBoundsException: 256 Może wystapić przez wiele rzeczy, ale najczęściej gdy coś jest powtarzane w nieskończoność function a() a() end a() # You don't have the right to use this function ([funkcja]). Niektórych funkcji nie można używać w chatkach plemiennych tfm.exec.chatMessage() system.newTimer() system.removeTimer() system.loadFile() system.loadPlayerData() system.saveFile() system.savePlayerData() ◈ Przypisywanie wartości zmiennym można wykonywać osobno x=1 y=2 x,y=1,2 x,y=y,x ◈ Pętla while: a=0 x=0 while a<11 do tfm.exec.addShamanObject(6,x,100) a=a+1 x=x+80 end ◈ Pętla repeat: a=0 x=0 repeat tfm.exec.addShamanObject(6,x,100) a=a+1 x=x+80 until not(A1<11) ◈ Własne funkcje: function Start() tfm.exec.disableAutoNewGame(true) tfm.exec.disableAfkDeath(true) ui.addPopup(0,1,"Pytanie: Cześć?",nil,200,100,200) end Start() ◈ not. Jest to jeszcze jedno słowo używane w warunkach, a wpisanie go obraca kolejny zapis w przeciwieństwo. if not keyCode==32 then --wykonuje to samo co if keyCode~=32 then ◈ Używając symbolu .. można łączyć zwykły tekst z różnymi zmiennymi, ale nie z nil, tabelami czy funkcjami. i=1 for nick in pairs(tfm.get.room.playerList) do tfm.exec.bindKeyboard(nick,32,true) end function eventKeyboard(nick,klaw) if klaw==32 then ui.addTextArea(0,"<p align='center'><V>"..nick.." jest pro, po raz "..i.." !",nil,50,40,140,20,0x1c3c41,0x1c3c41,1) i=i+1 end end ◈ Wpisywanie wartości do stworzonej tabeli wykonuje się tak: Tabela={} Tabela[1]=1 Tabela[2]=2 Tabela[150]=3 Tabela["Cześć"]="Tak też może być" Tabela={1,2,[150]=3,["Cześć"]="I tak też może być"} Tabela={1,2,[150]=3,["Cześć"]="To już co innego, ale może być"} a=Tabela[1] --jeżeli nie ustalimy pozycji, moduł automatycznie przydziela liczbami od 1 w góre b=Tabela[150] ◈ Wybieranie fragmentów z tekstu: TXT="W tym przypadku zostaną odczytane fragmenty ten:'Dzieńdobry', jeszcze ten:'Umiesz używać...', i ten:'Lua?', czyli 3 odczyty, a dlatego takie, bo użyto wpis:'‘([^‘]+)‘', no i teraz 4 :-). Poza tym niżej będą 3 liczby dzięki %d i gratisek." s="" for odcz in TXT:gmatch("'([^']+)'") do s=s..odcz.."\n" end s=s.."\n\t" for odcz in TXT:gmatch("%d") do s=s..odcz.."\t" end s=s..":D" ui.addTextArea(1,s,nil,30,30) ◈ Użycie słowa return: function Kwadrat(x) y=x*x return y end function eventChatCommand(nick,komd) if komd:sub(1,4)=="test" and komd:sub(6)~="" then print("Odpowiedź fukcji Kwadrat:"..Kwadrat(tonumber(komd:sub(6)))) end end Dernière modification le 1461162060000 |
18 | ||||||||||||||||||||||||||||||||||||||||||||
______________________________7. Kody lua ______________________________8. Numeracja ID ______________________________9. Tagi Transformice i html ______________________________10. Drzewo Lua
1. Eventy eventChatCommand(String nick, String komd) • Reaguje, gdy gracz wpisze w czacie '![komd]'. eventChatMessage(String nick, String txt) • Reaguje, gdy gracz wyśle dowolną wiadomość w czacie. eventColorPicked(Int id, String nick) • Reaguje, gdy gracz wybierze kolor z okienka wyboru koloru. eventEmotePlayed(String nick, Int id, String arg) • Reaguje, gdy gracz wykona daną emotke. eventFileLoaded(String nazwa, String plik) eventFileSaved(String nazwa) eventKeyboard(String nick, Int klaw, Boolean wduszony, Int x, Int y) • Reaguje, gdy gracz wciśnie dany klawisz. eventLoop(Int obecnyCzas, Int pozostałyCzas) • Reaguje co 500 milisekund. eventMouse(String nick, Int x, Int y) • Reaguje, gdy gracz kliknie. eventNewGame() • Reaguje na początku wczytywania nowej mapy. eventNewPlayer(String nick) • Reaguje, gdy gracz wejdzie do pokoju. eventPlayerDataLoaded(String nick, String plik) eventPlayerDied(String nick) • Reaguje, gdy gracz zginie. eventPlayerGetCheese(String nick) • Reaguje, gdy gracz zdobędzie ser. eventPlayerLeft(String nick) • Reaguje, gdy gracz opuści pokój. eventPlayerRespawn(String nick) • Reaguje, gdy gracz zmartwychwstanie. eventPlayerVampire(String nick) • Reaguje, gdy gracz zmieni się w wampira. eventPlayerWon(String nick, Int czasOdStartu, Int czasOdWskrzeszenia) • Reaguje, gdy gracz wygra mapę. eventPopupAnswer(Int id, String nick, String odp) • Reaguje, gdy gracz odpowie na dane okienko. eventSummoningStart(String nick, Int idObj, Int x, Int y, Int kat) • Reaguje, gdy gracz jako szaman rozpocznie tworzenie obiektu. eventSummoningCancel(String nick) • Reaguje, gdy gracz jako szaman wycofa tworzenie obiektu. eventSummoningEnd(String nick, Int idObj, Int x, Int y, Int kat, Table Info, Int vy, Table Info) • Reaguje, gdy gracz jako szaman zakończy tworzenie obiektu. eventTextAreaCallback(Int id, String nick, String odp) • Reaguje, gdy gracz kliknie tekst-przycisk. Przykład: <a href="event:nazwaOdp">Kliknij tutaj</a>. • Wpisanie <a href="event:#clear,nazwaOdp">Kliknij tutaj</a> oczyści pole tekstowe po kliknięciu 2. Funkcje print(String tekst) • Wpisuje do czatu #lua tekst tylko osobie wczytującej kod lua. system.bindKeyboard(String nick, Int kod, Boolean wduszony, Boolean tak) • Włącza przechwytywanie kliknięć gracza klawiszami. system.bindMouse(String nick, Boolean tak) • Włącza przechwytywanie kliknięć gracza myszą dla eventów. system.disableChatCommandDisplay(String komd, Boolean tak) • Wyłącza wpisywanie danej komendy do czatu. (maks. 100) system.exit() • Wyłącza aktualny skrypt lua. system.loadFile(Int numerPliku) system.loadPlayerData(String nick) system.newTimer(Function funkcja, Int czasMS, Boolean pętluj, Object arg1, Object arg2, Object arg3, ...) • Zwrot: Int idLicznika system.removeTimer(Int idLicznika) system.saveFile(String data, Int numerPliku) system.savePlayerData(String nick, String data) ui.addPopup(Int id, Int typ, String tekst, String nick, Int x, Int y, Int szer, Boolean wzglEkranu) • Wstawia okienko. Typy okien: 0 (zwykłe), 1 ("Tak" lub "Nie"), 2 (Z paskiem do wpisania tekstu). Okno pokazuje się wszystkim, gdy [nick] to nil. ui.addTextArea(Int id, String tekst, String nick, Int x, Int y, Int szer, Int wys, Int kolor, Int kolorRamy, Float alfa, Boolean wzglEkranu) • Wstawia pole tekstowe. Pole pokazuje się wszystkim, gdy [nick] to nil. ui.removeTextArea(Int id, String nick) • Usuwa pole tekstowe. Pole usuwa się wszystkim, gdy [nick] to nil. ui.setMapName(String tekst) • Zmienia nazwę mapy w pasku. ui.setShamanName(String tekst) • Zmienia nazwę shamana w pasku. ui.showColorPicker(Int id, String nick, Int kolorDomyślny, String tytuł) • Wstawia okienko wyboru koloru. ui.updateTextArea(Int id, String tekst, String nick) • Aktualizuje pole tekstowe. Pole aktualizuje się wszystkim, gdy [nick] to nil. tfm.exec.addConjuration(Int x, Int y, Int czasMS) • Wstawia conjuration na mapę. tfm.exec.addImage(String nazwa, String cel, Int x, Int y, String nick) • Zwrot: Int idObrazka #idObiektu $nick %nick ?WarstwaTła _WarstwaGruntów !WarstwaPierwszoplanowa &WarstwaWzglEkranu tfm.exec.addJoint(Int idPoł, Int idGr1, Int idGr2, Table Par) • Dodaje połączenie pomiędzy dwoma gruntami lua. • Par to tabela zawierająca właściwości linii, które są definiowane przez: - type (Int): 0-JD, 1-JP, 2-JPL, 3-JR - point1 (String "x,y"): współrzędne punktu przybicia do pierwszego gruntu - point2 (String "x,y"): współrzędne punktu przybicia do drugiego gruntu, dotyczy JD i JPL - point3 (String "x,y"): współrzędne pierwszego punktu przybicia do tła, dotyczy JPL - point4 (String "x,y"): współrzędne drugiego punktu przybicia do tła, dotyczy JPL - frequency (Float): spowolnienie szybkości rozciągania, dotyczy JD - damping (Float): usztywnienie lini łączącej/maksymalne rozciągnięcie, dotyczy JD - axis (String "x,y"): kierunek rozciągania przedlinii, dotyczy JP - angle (Int): kąt rozciągania przedlinii, dotyczy JP - limit1 (Float): lewa granica rozciągania_przedlini/maksymalnego_obrotu, dotyczy JP i JR - limit2 (Float): prawa granica rozciągania_przedlini/maksymalnego_obrotu, dotyczy JP i JR - forceMotor (Float): siła rozciągania/obracania - speedMotor (Float): szybkość i kierunek rozciągania/obracania - ratio (Float): równowaga rozciągania, dotyczy JPL - line (Int): grubość linii - color (Int): kolor linii - alpha (Float): przezroczystość linii - foreground (Boolean): ustawienie na pierwszy plan tfm.exec.addPhysicObject(Int idGruntu, Int x, Int y, Table Par) • Wstawia lua-grunt na mapę. • Par to tabela zawierająca właściwości gruntu, które są definiowane przez: - type (Int): typ gruntu - width (Int): szerokość - height (Int): wysokość - foreground (Boolean): pierwszy plan - friction (Float): tarcie - restitution (Float): odbijalność - angle (Int): kąt obrócenia - color (Int): kolor, dotyczy prostokątu i koła - miceCollision (Boolean): kolizyjność z myszami - groundCollision (Boolean): kolizyjność z obiektami - dynamic (Boolean): grunt dynamiczny - mass (Int): masa - fixedRotation (Boolean): stały kąt nachylenia - linearDamping (Float): tłumienie liniowe - angularDamping (Float): tłumienie kątowe tfm.exec.addShamanObject(Int idTypuObj, Int x, Int y, Int kąt, Int vx, Int vy, Boolean przezr) • Wstawia obiekt szamana na mapę. • Zwrot: Int idObiektu tfm.exec.bindKeyboard(String nick, Int kod, Boolean wduszony, Boolean tak) • Włącza przechwytywanie kliknięć gracza klawiszami. tfm.exec.chatMessage(String tekst, String nick) tfm.exec.disableAfkDeath(Boolean tak) • Wyłącza śmierć gracza poprzez afk. tfm.exec.disableAllShamanSkills(Boolean tak) • Wyłącza wszystkie umiejętności szamana. tfm.exec.disableAutoNewGame(Boolean tak) • Wyłącza automatyczną zmiane mapy. tfm.exec.disableAutoScore(Boolean tak) • Wyłącza systemowe otrzymywanie punktów. tfm.exec.disableAutoShaman(Boolean tak) • Wyłącza losowe wybieranie szamana. tfm.exec.disableAutoTimeLeft(Boolean tak) • Wyłącza automatyczną zamiane czasu. tfm.exec.displayParticle(Int id, Int x, Int y, Float vx, Float vy, Float ax, Float ay, String nick) • Wstawia cząstke. Cząstka wstawiana jest wszystkim, gdy [nick] to nil. tfm.exec.explosion(Int x, Int y, Int moc, Int zasięg, Boolean tylkoMyszy) • Tworzy eksplozję. tfm.exec.giveCheese(String nick) • Daje ser graczowi. tfm.exec.giveMeep(String nick) • Daje meep'a graczowi. tfm.exec.killPlayer(String nick) • Zabija gracza. tfm.exec.lowerSyncDelay(, String nick) • Zmniejsza odstęp pomiędzy synchronizacją gracza do maksymalnie 400 milisekund. tfm.exec.moveObject(Int idObj, Int x, Int y, Boolean offset, Int vx, Int vy, Boolean offset) • Przemieszcza oraz nadaje szybkość danemu graczowi. tfm.exec.movePlayer(String nick, Int x, Int y, Boolean offset, Int vx, Int vy, Boolean offset) • Przemieszcza oraz nadaje szybkość danemu graczowi. tfm.exec.newGame(String kodMapy, Boolean odwrócona) • Wczytuje mapę. Można użyć: 6 / @3706640 (wybrana mapa), #4 (losowa mapa z perm), zaczynające sie na '<' (mapa XML), nil (zupełnie losowa). tfm.exec.playEmote(String nick, Int id, String argument) • Wymusza na graczu wykonanie emotki. tfm.exec.playerVictory(String nick) • Gracz wygrywa. tfm.exec.removeImage(Int idObrazka) tfm.exec.removeJoint(Int idLinii) • Usuwa linię. tfm.exec.removeObject(Int idObiektu) • Usuwa obiekt. tfm.exec.removePhysicObject(Int idGruntu) • Usuwa lua-grunt. tfm.exec.respawnPlayer(String nick) • Wskrzesza gracza. tfm.exec.setGameTime(Int czasS) • Ustawia pozostały czas mapy. tfm.exec.setNameColor(String nick, Int kolor) • Zmienia kolor nicku gracza. tfm.exec.setPlayerScore(String nick, Int punkty, Boolean dodaj) • Ustawia punkty graczowi. tfm.exec.setRoomMaxPlayers(Int maksGraczy) tfm.exec.setRoomPassword(String hasło) tfm.exec.setShaman(String nick) • Ustawia gracza jako szamana. tfm.exec.setUIMapName(String tekst) • Zmienia nazwę mapy w pasku. tfm.exec.setUIShamanName(String tekst) • Zmienia nazwę shamana w pasku. tfm.exec.setVampirePlayer(String nick) • Ustawia gracza jako wampira. tfm.exec.snow(Int czasS, Int moc) • Włącza padanie śniegu 1. Emotki 0 - Taniec 1 - Śmiech 2 - Płacz 3 - Całus 4 - Złość 5 - Klaskanie 6 - Spanie 7 - Facepalm 8 - Siedzenie 9 - Konfetti 10 - Flaga 11 - Pianka na patyku 12 - Zdjęcie 13 - Piątka 14 - Przytulanie 15 - Całus 16 - Papier, kamień, nożyce 2. Obiekty 0 - Strzałka 1 - Mała skrzynka 2 - Duża skrzynia 3 - Mała deska 4 - Duża decha 6 - Piłka 7 - Trampolina 10 - Kowadło 17 - Kula w górę 23 - Bomba 24 - Duch 26 - Niebieski Portal 27 - Pomarańczowy Portal 28 - Balon 29 - Czerwony Balon 30 - Zielony Balon 31 - Żółty Balon 32 - Runa 33 - Kurczak 34 - Śniezka 35 - Strzała Kupidyna 39 - Jabłko 40 - Owca 45 - Lodowa deska 46 - Czekoladowa deska 54 - Zamrożona mysz 57 - Chmura 59 - Bańka 60 - Malutka deseczka 61 - Skrzynia towarzysząca 62 - Stabilna runa 63 - Złota rybka 65 - Rozdymka 67 - Super decha 68 - Trójkątna skrzynia 69 - Deska-zygzak 80 - Papierowy samolocik 85 - Głaz 89 - Dyńka 90 - Nagrobek 95 - Papierowa kulka 96 - Skrzynka z myszkami 101 - Walentynkowa skrzynka 102 - Mechaniczna skrzynka 103 - Świąteczna skrzynka 104 - Skrzynka-ciasto 105 - Muzyczna skrzynka 106 - Książki 107 - Skrzynka-duch 201 - Walentynkowa skrzynia 202 - Mechaniczna skrzynia 203 - Szklana skrzynia 204 - Skrzynia-dynia 205 - Świąteczna skrzynia 206 - Szamańska skrzynia 207 - Skrzynia-ciasto 208 - Muzyczna skrzynia 209 - Tabliczka 210 - Skrzynia z pająkiem 301 - Walentynkowa deska 302 - Mechaniczna deska 303 - Deska-kość 304 - Świąteczna deska 305 - Słodka deska 306 - Muzyczna deska 307 - Krótki ołówek 401 - Walentynkowa decha 402 - Mechaniczna decha 403 - Decha-krokodyl 404 - Decha-kość 405 - Świąteczna decha 406 - Szamańska decha 407 - Słodka decha 408 - Muzyczna decha 409 - Długi ołówek 601 - Piłka-pokeball 602 - Piłka-czaszka 603 - Piłka-trąbka 604 - Piłka nożna 701 - Drewniana trampolina 1002 - Mechaniczne kowadło 1003 - Kowadło-głaz 1004 - Lukrecjowe kowadło 1005 - Kowadło-nagrobek 1701 - Szklana kula 1702 - Kula-lizak 1703 - Kula-bombka 1704 - Szamańska kula 1705 - Czerwone jabłko 2801 - Balon-kot 2802 - Balon-złoty trybik 2803 - Balon-biało-różowy 2804 - Balon-(mechaniczny) 2805 - Balon-żaba 2806 - Balon-serce 2807 - Balon-akwarium 2808 - Balon-choinka 2809 - Balon-gwiazdka 2810 - Szamański balon 2811 - Balon-ciasto 2812 - Balon-pisanka 2813 - Muzyczny Balon 2814 - Balon-Nuta 3. Cząsteczki 0 - Biały błysk 1 - Fioletowy błysk 2 - Żółty blask 3 - Dymek 4 - Słaby biały blask 5 - Serce 6 - Bańka #1 (~1,2s) 7 - Bańka #2 (~1,4s) 8 - Bańka #3 (~2s) 9 - Turkusowy blask 10 - Spirit 11 - Słaby żółty blask 12 - Super spirit 13 - Czerwony blask 14 - Bańka wodna 15 - "+1" 16 - "+10" 17 - "+12" 18 - "+14" 19 - "+16" 20 - "meep" 21 - Czerwone konfetti 22 - Zielone konfetti 23 - Niebieskie konfetti 24 - Żółte konfetti 25 - Deszcz #1 26 - Wiatr #1 27 - Wiatr #2 28 - Deszcz#2 29 - Gwiazdka 30 - Małe czerwone serduszko 31 - Małe różowe serduszko 32 - Kwiatek 33 - Dzwonek 34 - Bombka 35 - Wślizg szamana 36 - Teleport #1 37 - Teleport #2 38 - Lizak 39 - Żółty cukierek 40 - Różowy cukierek 41 - Magiczna kulka 42 - Pióro 4. Klawisze 0 - bieg w lewo 1 - skok 2 - bieg w prawo 3 - kucanie 8 - Backspace 9 - Tab 16 - Shift 17 - Ctrl 18 - Alt 19 - Pause/Break 20 - Caps lock 27 - Escape 33 - Page up 34 - Page down 35 - End 36 - Home 37 - ← 38 - ↑ 39 - → 40 - ↓ 46 - Delete 48 - 0 49 - 1 50 - 2 51 - 3 52 - 4 53 - 5 54 - 6 55 - 7 56 - 8 57 - 9 65 - Q 66 - B 67 - C 68 - D 69 - E 70 - F 71 - G 72 - H 73 - I 74 - J 75 - K 76 - L 77 - M 78 - N 79 - O 80 - P 81 - A 82 - R 83 - S 84 - T 85 - U 86 - V 87 - Z 88 - X 89 - Y 90 - W 91 - Lewy klawisz Windows 92 - Prawy klawisz Windows 96 - Numpad 0 97 - Numpad 1 98 - Numpad 2 99 - Numpad 3 100 - Numpad 4 101 - Numpad 5 102 - Numpad 6 103 - Numpad 7 104 - Numpad 8 105 - Numpad 9 106 - Mnożenie 107 - Dodawanie 109 - Odejmowanie 110 - Kropka ułamkowa 111 - Dzielenie 112 - F1 113 - F2 114 - F3 115 - F4 116 - F5 117 - F6 118 - F7 119 - F8 120 - F9 121 - F10 122 - F11 123 - F12 144 - Num lock 145 - Scroll lock 186 - ; 187 - = 188 - , 189 - - 190 - . 191 - / 192 - ~ 219 - [ 220 - \ 221 - ] 222 - ' 5. Grunty 0 - Drewno 1 - Lód 2 - Trampolina 3 - Lawa 4 - Czekolada 5 - Ziemia 6 - Trawa 7 - Piasek 8 - Chmura 9 - Woda 10 - Kamień 11 - Śnieg 12 - Prostokąt 13 - Koło 14 - Niewidzialny 15 - Pajęczyna 1. Tagi Transformice <N> - zwykły tekst
Jesteś w pokoju [1]. Wpisz /room NazwaPokoju by stworzyć swój własny pokój lub dołączyć do już istniejącego.
<a:active> - ? <a:hover> - ? <a href='event:[nazwa]'>[tekst]</a> - tworzenie tekstu z akcją 2. Tagi html
3. Inne
_G _G assert(...) bit32 arshift band bor bnot extract lrotate lshift replace rshift rrotate coroutine create resume running status warp yield debug errordisableEventLog disableTimerLog ipairs getmetatable math nextabs acos asin atan atan2 ceil cos cosh deg exp floor fmod frexp huge ldexp log log10 max min modf pi pow rad random randomseed sin sinh sqrt tan tanh os pairsdate difftime time pcall rawequal rawget rawlen rawset select setmetatable string byte char dump find format gmatch gsub len lower match rep reverse sub upper system bindKeyboard bindMouse disableChatCommandDisplay exit loadFile newTimer removeTimer saveFile table concat foreach foreachi getn insert maxn remove sort tfm tonumberexec addConjuration addJoint addPhysicObject addShamanObject disableAfkDeath disableAllShamanSkills disableAutoNewGame disableAutoScore disableAutoShaman disableAutoTimeLeft displayParticle explosion giveCheese giveMeep killPlayer loverSyncDelay moveObject movePlayer newGame playerVictory removeJoint removeObject removePhysicObject respawnPlayer setGameTime setNameColor setPlayerScore setShaman setVampirePlayer snow addImage chatMessage removeImage setRoomMaxPlayers setRoomPassword bindKeyboard setUIMapName setUIShamanName enum emote angry clap confetti cry dance facepaw flag kiss laugh marshmallow selfie sit sleep ground chocolate circle cloud earth grass ice invisible lava rectangle sand snow stone trampoline water web wood particle bell blueGlitter bubble cloud curlyWind daisy diagonalRain blueConfetti dullWhiteGlitter egg ghostSpirit greenConfetti heart littlePinkHeart littleRedHeart lollipopConfetti meep mouseTeleportation orangeGlitter pinkCandyConfetti plus1 plus12 plus10 plus14 plus16 projection rain redConfetti redGlitter shamanTeleportation spirit star tealConfetti waterBubble whiteGlitter wind yellowCandyConfetti yellowConfetti yellowGlitter shamanObject anvil apple arrow ball balloon balloonFish blueBalloon bluePortal board bomb box bubble cannon chicken cloud companionCube cupidonArrow greenBalloon iceCube littleBoard littleBoardChocolate littleBoardIce littleBox longBoard orangePortal paperBall paperPlane pumpkinBall redBalloon rock rune sBoard sheep snowBall stableRune tinyBoard tombstone trampoline triangle yellowBalloon get misc apiVersion bouboumVersion transformiceVersion room community currentMap maxPlayers mirroredMap name objectList ► objectList[id] * angle baseType colors[id] ghost id type vx vy x y passwordProtected playerList uniquePlayers► playerList[id] * community hasCheese isDead isFacingRight isJumping isShaman isVampire look movingLeft movingRight playerName registrationDate score shamanMode title tribeName vx vy x y inHardMode xmlMapInfo author mapCode permCode xml tostring type ui xpcalladdPopup addTextArea removeTextArea setMapName setShamanName showColorPicker updateTextArea *playerList[nick] - playerList to tabela danych o graczach w pokoju, więc jeżeli chcemy coś od niej odczytać, w miejsce "nick" musi pojawić się nazwa gracza. *objectList[id] - objectList to tabela danych o obiektach w pokoju, więc jeżeli chcemy coś od niej odczytać, w miejsce "id" musi pojawić się id obiektu. Każdy obiekt ma swój własny "id" tak samo jak gracze i w podobnym miejscu, tylko że obiekty mają w tfm.get.room.objectList. Dernière modification le 1461162000000 |
Basterfeild « Citoyen » 1382701260000
| 6 | ||
Fajny, czytelny poradnik :] Życzę przypięcia i odznaczenia :) |
Jakubqwe « Citoyen » 1382719860000
| 2 | ||
Nareszcie ktoś się postarał i zrobił fajny poradnik. Dzięki. |
Basterfeild « Citoyen » 1382788980000
| 1 | ||
Nie wiecie może, co robi <hspace="33" /> ? |
Jakubqwe « Citoyen » 1382789100000
| 1 | ||
. Basterfeild a dit : Nie wiem. |
3 | ||
Basterfeild a dit : algorytmy.pl a dit : [quote=algorytmy.pl nie napisał/a tego, bo Ouake to trochę zedytował, czyli Ouake]Przestrzeń dookoła loga zostanie otoczona po lewej i po prawej stronie 33 pikselowym odstępem. Dzięki temu układ akapitu jest bardziej czytelny. Zabieg często stosowany w przypadku oblewania tekstem dużej ilości fotografii.[/quote] algorytmy.pl a dit : Czyli możemy o tym zapomnieć, bo nie da się użyć <img> w tekście. |
Basterfeild 1382804460000
| | ||
[Modéré par Lament, raison : Podwójny post.] |
Basterfeild « Citoyen » 1382902380000
| 1 | ||
Szkoda :/ Wpiszcie kod XML Zmoderujcie Wyszedł normalny tekst Dernière modification le 1487615880000 |
3 | ||
- Dodane kody ID klawiszy - - Drzewo lua zostało powiększone - |
Woterek « Citoyen » 1383160920000
| 1 | ||
[edit] |
Basterfeild « Citoyen » 1383336300000
| 1 | ||
Opiszesz "string"'i? |
Roksiunia « Citoyen » 1383670740000
| 1 | ||
Jak to zrobic?!?!?! |
3 | ||
Nowości: + eventPlayerDataLoaded(String nick, String dane) + system.loadPlayerData(String nick) + system.savePlayerData(String nick, String dane) Rozwinięte: ui.addPopup(Int id, Int typ, String tekst, String nickCel, Int x, Int y, Int szer, Boolean fixedPos) Rozwinięte: ui.addTextArea(Int id, String text, String targetPlayer, Int x, Int y, Int width, Int height, Int backgroundColor, Int borderColor, Float backgroundAlpha, Boolean fixedPos) Rozwinięte: tfm.exec.snow(Int sekundy, Int moc) 02/12/2013 Kolejne nowości: + tfm.exec.displayParticle(Int particleId, Int xPosition, Int yPosition, Float xSpeed, Float ySpeed, Float xAcceleration, Float yAcceleration, String targetPlayer) • Dodana numeracja ID cząstek |
Dawidmdxpl « Citoyen » 1386082260000
| 1 | ||
/delete |
Woterek « Citoyen » 1386084180000
| 1 | ||
Dawidmdxpl a dit : ??? o jakie "cząsteczki" ci chodzi? |
Jufaster « Citoyen » 1387634160000
| 1 | ||
Nowa funkcja. tfm.exec.giveENForumHuntPresent(Code U97RYF) • Here's the code for present 3 in EN's Christmas present hunt! This is not a real function!! heh |
3 | ||
Tak widziałem, ale nie działa dla nas, a ja takich nie wypisuję, bo po co. |
Kiriami « Citoyen » 1388172540000
| 1 | ||
nie umiem :( pierwszy raz to widze wpisałam function eventChatCommand(Kiriami,message) if message=="wampir" then tfm.exec.giveVampire(Kiriami) end if message=="latam" then tfm.exec.setFly(Kiriami) end end i nic sie nie dzieje (nie znam zabardzo angielskiego ;c |
3 | ||
a dit : |