Recomand puțină experiență în programare deoarece nu o să explic absolut toate detaliile!
Sintaxa Documentație Enum-uri Snippets & Scripts
Lua poate fii folosită pentru OOP, dar și rezolvare iterativă. Instrucțiunile se rezolvă de sus în jos, cu excepția eventurilor care sunt chemate doar când sunt triggered.
- Variabilele
DenumireCe reprezintăExempluintnumere întregia = 5floatnumere cu virgulăa = 3.45 sau b = 3stringșiruri de caractere/textenume = "Buna!"booleanexprimă adevărat/falsok = false sau ok = truetablede tip tabel (ce minune!)table[1] = 5 sau table["Buna"] = "ziua" sau table["Ok?"] = 1
Observație: La fel ca în python, la declararea variabilelor nu este necesară specificarea tipului de date! Desigur, pentru a folosi o variabilă trebuie întâi să îi alocăm memorie dându-i o valoare. Comentariile se scriu folosind -- în față.
Observație: Tipul tabel poate servi pe post de map (C++)/ Dictionary (C#) sau de șir de valori (int, boolean, grupuri de valori, etc.)code_language.lua:print(a) -- aici va fi nil! Nu este alocată memorie pentru a a = 5 print(a) -- în chatul [lua] va afișa 5 a = "Buna!!!" print(a) -- afiseaza stringul table[0] = 0 table[1] = "Valoare1" table["Al doilea cuvant"] = "Valoare2" table["Ceva"] = false table["Ceva2"] = 3 print(table[0]) print(table[1]) print(table["Al doilea cuvant"]) print(table["Ceva"]) print(table["Ceva2"])
- Condiții și bucle
Condiție
Structură
if & elsecode_language.lua:if [condiție] then [cod] end if[condiție] then [cod] else [cod] endwhilecode_language.lua:while [condiție] do [instrucțiuni] endrepeat (echivalent cu do while din C++/C#/Java)code_language.lua:repeat [instrucțiuni] until [condiție]for numeric și for genericcode_language.lua:-- for numeric for index = first, last, delta do -- dacă delta e negativ bucla merge descrescător [instrucțiuni] end -- for generic for key, value in pairs(_G) do -- unde G e un tabel [instrucțiiuni] end
- Funcții
Funcțiile se apelează folosind doar [nume]([parametrii corespunzători]). Parametrii pot lipsi din declararea funcției.code_language.lua:function [nume]([parametrii]) [cod] end
Exemplu:
code_language.lua:function doarAfis() print("Buna din functia doarAfis"); end function returnString() return "Aici returnez ceva!"; end function returnInt() return 1; end doarAfis(); print(returnString()); print(returnInt());
Atenție! Documentația prezentată mai jos nu este completă. Am inclus funcțiile folosite cel mai des în codurile pentru minigame-uri. Orice întrebare despre eventuri, id-uri sau enum-uri o puteți adresa mai jos.
- Eventurile suportate de joc:
NumeParametriiDescriereeventChatCommand
string playerName, string message
funcția este apelată când un jucător scrie în chat un mesaj care începe cu "!"
eventEmotePlayed
string playerName, int emoteID
apelată când un jucător pune un emote
eventKeyboard
string playerName, int keyCode, boolean down, int xPlayerPosition, int yPlayerPosition
event apelat când un jucător apasă o tastă
eventLoop
int currentTime, int timeRemaining
chemat la fiecare 0.5s
eventMouse
string playerName, int xMousePosition, int yMousePosition
chemat când un jucător dă click pe ecran
eventNewGame
-
chemat la fiecare început de joc
eventNewPlayer
string playerName
apelat când intră un jucător pe sală
eventPlayerDied
string playerName
chemat când un jucător moare
eventPlayerGetCheese
string playerName
chemat când un jucător ia brânza
eventPlayerLeft
string playerName
chemat când pleacă un jucător
eventPlayerMeep
string playerName, int xPosition, int yPosition
chemat când un player apasă pe meep
eventPlayerRespawn
string playerName
apelat când un jucător este respawnat
eventPlayerVampire
string playerName
apelat când un jucător devine vampir
eventPlayerWon
string playerName
chemat când un jucător câștigă
eventPopupAnswer
int popupId, string playerName, string answer
chemat când un player răspunde la un popup (vezi ex. 1 de jos)
eventSummoningCancel
string playerName
apelat când un shaman renunță la crearea unui obiect
eventSummoningEnd
string playerName, int objectType, int xPosition, int yPosition, int angle, int xSpeed, int ySpeed, int object Type, Table other
chemat când un player termină invocarea
eventSummoningStart
string playerName, int objectType, int xPosition, int yPosition, int angle
chemat când un player începe invocarea
eventTextAreaCallback
int textAreaId, string playerName, string callback
chemat când un player dă click pe un textArea (vezi exemplul 2. de jos)
- Metodele acceptate de miceforce (funcții)
tfm.exec DenumireParametriiExplicațieaddConjuration
int xPosition, int yPosition, int timeInMillis
adaugă pătrățele magice
addImage
string imageName, string target, int xPosition, int yPosition, string targetPlayer
adaugă imaginea la mapă. Targetul poate fi #mobileId, $playerName, %playerName, ?backgroundLayerDepth, _groundLayerDepth, !foregroundLayerDepth
addJoint
int id, int physicObject1, int physicObject2, Table JointDef
adaugă o legătură între cele două obiecte. Pentru detalii acccesați linkul de la sfârșitul threadului
addPhysicObject
int id, int xPosition, int yPosition, Table bodyDef
adaugă un obiect. De asemenea, pentru detalii accesați linkul de la sfârșitul threadului.
addShamanObject
int objectId, int xPosition, int yPosition, int angle, int xSpeed, int ySpeed, boolean ghost
adaugă un obiect de shaman în joc
bindKeyboard
string playerName, int keyCode, boolean down, boolean yes
"Ascultă" când un player apasă pe o tastă
displayParticle
int particleId, int xPosition, int yPosition, float xSpeed, float ySpeed, float xAcceleration, float yAcceleration, string targetPlayer
adaugă particula cu proprietățile specificate (pentru id-uri, vezi secțiunea enum)
explosion
int xPosition, int yPosition, int power, int distance, boolean miceOnly
crează o explozie
giveCheese
string playerName
dă brânzică unui jucător
giveMeep
string playerName, boolean canMeep
dă sau ia abilitatea de a da meep a unui jucător
killPlayer
string playerName
omoară playerul
movePlayer
string playerName, int xPosition, int yPosition, boolean offset, int xSpeed, int ySpeed, boolean offset
definește viteza și poziția unui jucător
newGame
string mapCode
mapCode poate fi dat ca @123456 sau ca XML
playerVictory
string playerName
pune un player câștigător
removeCheese
string playerName
ia brânzica unui șoricel! Oh nu!!!
removeJoint
int id
șterge o legătură
removeObject
int objectId
șterge un obiect
respawnPlayer
string playerName
respawneaza un jucător
setGameTime
int seconds
setează timpul jocului
setNameColor
string playerName, int color
schimbă culoarea numelui jucătorului specificat. Culoarea trebuie folosită cu formatul 0xFFFFFF
setPlayerScore
string playerName, int score, boolean add
setează punctajul playerului
setShaman
string playerName, boolean makeShaman
face jucătorul un șaman
setShamanMode
string playerName, int mode
schimbă modul de șaman al unui jucător
setUIMapName
string text
setează numele mapei
setUIShamanName
string text
setează numele șamanului din partea de sus a hărții
setVampierPlayer
string playerName, boolean makeVampire
face jucătorul un vampir
snow
int seconds, int snowballPower
ninge!!!
disableAfkDeath
boolean yes
disableAllShamanSkills
boolean yes
disableAutoNewGame
boolean yes
disableAutoScore
boolean yes
disableAutoShaman
boolean yes
disableAutoTimeLeft
boolean yes
disableDebugCommand
boolean yes
disableMinimalistMode
boolean yes
disableMortCommand
boolean yes
disablePhysicalConsumables
boolean yes
disablePrespawnPreview
boolean yes
permite/nu permite un preview pentru obiectele de șaman
disableWatchCommand
boolean yes
tfm.get tfm.get.roomDenumire
Returnează tip
Explicare return:
community
string community
abrevierea numelui comunității actuale
maxPlayers
int maxPlayers
numărul maxim de jucători
objectList
table objectList
o listă cu obiectele de șaman existente
name
string roomName
returnează numele sălii
playerList
table playerList
o listă cu toți jucătorii din sală
currentMap
string mapCode
codul hărții curente de pe sală
xmlMapInfo
table xmlMapInfo
o listă cu informații despre mapă
tfm.get.room.playerList conține pentru fiecare element:Nume
Returnează
Descriere (dacă este necesară)
hasCheese
boolean yes
hasTribe
boolean yes
isDead
boolean yes
isFacingRight
boolean yes
inHardMode
boolean yes
isJumping
boolean yes
isShaman
boolean yes
isVampire
boolean yes
look
string look
returnează itemele pe care le poartă la momentul respectiv precum: blănița, ochii, urechile etc.
movingLeft
boolean yes
movingRight
boolean yes
playerName
string playerName
score
num score
title
num titleID
tribeName
string tribeName
vx
num vx
viteza pe axa Ox a jucătorului
vy
num vy
viteza pe axa Oy a jucătorului
x
num x
coordonata x
y
num y
coordonata y
tfm.get.room.objectList conține pentru fiecare element:Nume
Returnează
Descriere
id
num id
id-ul obiectului pe hartă
x
num x
coordonata x
y
num y
coordonata y
angle
num angle
unghiul obiectului
ghost
boolean yes
dacă este sau nu transparent
type
num type
id-ul obiectului
tfm.get.room.xmlMapInfo conține:Nume
Returnează
Descriere
permCode
num p
codul P.... al mapei
author
string author
mapCode
num mapCode
returnează codul (sub forma @123456)
xml
string xml
returnează xml-ul hărții curente. Atenție trebuie chemat în eventNewGame, altfel returnează nil!
ui:Nume
Parametrii
Descriere
addPopup
Int id, Int type, String text, String targetPlayer, Int x, Int y, Int width, Boolean fixedPos (false))
adaugă un popup. Tipurile: 0 (simplu), 1 (da sau nu), 3 (input). Dacă targetPlayer este nil, atunci toți playerii vor vedea popup-ul.
addTextArea
Int id, String text, String targetPlayer, Int x, Int y, Int width, Int height, Int backgroundColor, Int borderColor, Float backgroundAlpha, Boolean fixedPos (false)
adaugă o arie cu text. La fel, dacă targetPlayer este nil, toți jucătorii o vor vedea.
removeTextArea
Int id, String targetPlayer
șterge aria cu id-ul dat
updateTextArea
Int id, String text, String targetPlayer
modifică un textArea deja existent
Toată documentația: https://transformice.fandom.com/wiki/Lua
Exemple lămuriri funcții:
- eventPopupAnswer: acesta ne ajută să prelucrăm răspunsul unei întrebări puse printr-un popup:
Codul generat mai sus va afișa în chat-ul lua id-ul popup-ului la care a fost răspuns, ce player a răspuns și ce răspuns a dat.code_language.lua:ui.addPopup(1, 2, "Aici o intrebare foarte interesanta", nil, 300, 100, 300, true) function eventPopupAnswer(popupId,playerName,answer) print(popupId) print(playerName) print(answer) end
- eventTextAreaCallback: ne ajută să vedem când un player dă click pe un textArea.
Codul acesta afișează în chat pe ce text area a fost dat click.code_language.lua:ui.addTextArea(1, "<a href='event:text1'>Text area 1", nil, 300, 100, 100, 100, 0xFFFFFF, 0xFFFFFF, 1, true) ui.addTextArea(2, "<a href='event:text2'>Text area 2", nil, 500, 100, 100, 100, 0xFFFFFF, 0xFFFFFF, 1, true) function eventTextAreaCallback(id, playerName, link) print(link) -- link-ul este dat de ce se află dupa "event:" la declararea textului din textArea end
Enumurile sunt grupări de variabile statice a.k.a. variabile cu valoare prestabilită (de exemplu id-uri pentru obiecte). Id-urile sunt următoarele:
tfm.enum
- emote
- dance : 0
laugh : 1
cry : 2
kiss : 3
angry : 4
clap : 5
sleep : 6
facepaw : 7
sit : 8
confetti : 9
flag : 10
marshmallow : 11
selfie : 12
highfive : 13
highfive_1 : 14
highfive_2 : 15
partyhorn : 16
hug : 17
hug_1 : 18
hug_2 : 19
jigglypuff : 20
kissing : 21
kissing_1 : 22
kissing_2 : 23
carnaval : 24
rockpaperscissors : 25
rockpaperscissors_1 : 26
rockpaperscissor_2 : 27
- dance : 0
- ground
- wood : 0
ice : 1
trampoline : 2
lava : 3
chocolate : 4
earth : 5
grass : 6
sand : 7
cloud : 8
water : 9
stone : 10
snow : 11
rectangle : 12
circle : 13
invisible : 14
web : 15
- wood : 0
- particle
- whiteGlitter : 0
blueGlitter : 1
orangeGlitter : 2
cloud : 3
dullWhiteGlitter : 4
heart : 5
bubble : 6
tealGlitter : 9
spirit : 10
yellowGlitter : 11
ghostSpirit : 12
redGlitter : 13
waterBubble : 14
plus1 : 15
plus10 : 16
plus12 : 17
plus14 : 18
plus16 : 19
meep : 20
redConfetti : 21
greenConfetti : 22
blueConfetti : 23
yellowConfetti : 24
diagonalRain : 25
curlyWind : 26
wind : 27
rain : 28
star : 29
littleRedHeart : 30
littlePinkHeart : 31
daisy : 32
bell : 33
egg : 34
projection : 35
mouseTeleportation : 36
shamanTeleportation : 37
lollipopConfetti : 38
yellowCandyConfetti : 39
pinkCandyConfetti : 40
- whiteGlitter : 0
- shamanObject
- arrow : 0
littleBox : 1
box : 2
littleBoard : 3
board : 4
ball : 6
trampoline : 7
anvil : 10
cannon : 17
bomb : 23
orangePortal : 26
blueBalloon : 28
redBalloon : 29
greenBalloon : 30
yellowBalloon : 31
rune : 32
chicken : 33
snowBall : 34
cupidonArrow : 35
apple : 39
sheep : 40
littleBoardIce : 45
littleBoardChocolate : 46
iceCube : 54
cloud : 57
bubble : 59
tinyBoard : 60
companionCube : 61
stableRune : 62
balloonFish : 65
longBoard : 67
triangle : 68
sBoard : 69
paperPlane : 80
rock : 85
pumpkinBall : 89
tombstone : 90
paperBall : 95
- arrow : 0
- emote
Observație: Nu uita, la majoritatea scripturilor prezentate mai jos trebuie schimbată variabila admin pentru a putea controla jocul. Dacă observi ca un cod lua nu funționează, lasă aici mesaj ca să pot să îl șterg de aici sau să îl modific! Orice sugestie pentru script-uri este bine venită!
Snippets: Click aici, aici, aici
Joc
Link unde puteți găsi:
Cerere în căsătorie
Labirint
Mesaje secrete
Fantomă
https://mforum.ist/threads/lua-script-papusa-bantuita-update.5312/
Survivor (ish)
https://pastebin.com/vSDk80yK - aici trebuie adăugate doar mapele de survivor in tabelul maps
Versus 4 echipe
https://www.youtube.com/ watch?v=xri6RQxmvug - sunt in descriere linkul si parola pentru decriptare
Cards against humanity
https://pastebin.com/sy7DvTcp - acest cod este facut de mine; orice eroare sau sugestie mi-o puteti spune intr-un mesaj!
Adevăr și provocare
https://mforum.ist/threads/script-adevar-si-provocare-tradus-in-romana-nu-imi-apartine.12192/

