Tutorial + Documentație LUA

Mirred

Mouse
Tutorial lua (2).png
În acest tutorial voi explica sintaxa limbajului, librăriile și funcțiile prestabilite pentru a vă fi mai ușor să înțelegeți un cod, să-l modificați sau să vă creați propriul cod! Dacă aveți recomandări le puteți lăsa aici în comentarii sau îmi puteți trimite un mesaj. Orice nelămurire puneți-o aici în comentarii și voi încerca să vă răspund cât mai repede! (Dacă știi tu răspunsul la întrebări puse de alți utilizatori, încearcă să îi ajuți!)

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
    Variabilele se împart în mai multe tipuri de date, cele mai folosite pentru coduri sunt următoarele:

    Denumire​

    Ce reprezintă​

    Exemplu​

    int​

    numere întregi​

    a = 5​

    float​

    numere cu virgulă​

    a = 3.45 sau b = 3​

    string​

    șiruri de caractere/texte​

    nume = "Buna!"​

    boolean​

    exprimă adevărat/fals​

    ok = false sau ok = true​

    table​

    de 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ță.











    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"])
    Observație: Tipul tabel poate servi pe post de map (C++)/ Dictionary (C#) sau de șir de valori (int, boolean, grupuri de valori, etc.)


    • Condiții și bucle

    Condiție

    Structură

    if & else​

    code_language.lua:
    if [condiție] then
    [cod]
    end
    
    if[condiție] then
    [cod]
    else
    [cod]
    end

    while​

    code_language.lua:
    while [condiție] do
    [instrucțiuni]
    end

    repeat (echivalent cu do while din C++/C#/Java)​

    code_language.lua:
    repeat
    [instrucțiuni]
    until [condiție]

    for numeric și for generic​

    code_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
    Poți declara propriile funcții. Toate funcțiile în lua se declară la fel, utilizând cuvântul function, ele reprezintă atât funcțiile de tip void, cât și cele cu return. Structură generală:

    code_language.lua:
    function [nume]([parametrii])
        [cod]
    end
    Funcțiile se apelează folosind doar [nume]([parametrii corespunzători]). Parametrii pot lipsi din declararea funcției.

    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:

    Nume​

    Parametrii​

    Descriere​

    eventChatCommand

    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)
    Scrise înaintea tabelelor sunt numele librăriilor din care funcțiile fac parte. Funcțiile trebuie chemate în cod folosind numeLibrărie.numeFuncție (tfm.exec.addConjuration(parametrii...))

    tfm.exec

    Denumire​

    Parametrii​

    Explicație​

    addConjuration

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

    Denumire

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

    • eventTextAreaCallback: ne ajută să vedem când un player dă click pe un textArea.
    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
    Codul acesta afișează în chat pe ce text area a fost dat click.






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







  • 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

    https://mforum.ist/threads/script-cerere-in-casatorie.963/

    Labirint

    https://mforum.ist/threads/script-labirinto.2548/

    Mesaje secrete

    https://pastebin.com/mwve4QTx

    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/


 
Last edited:
Top
"Dev-TR" theme by Soulzone