Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Wszystkie funkcje LUA w najnowszych SVN!


Rekomendowane odpowiedzi

Opublikowano

Zacznijmy od rzeczy definitywnej - w najnowszych SVN nie ma rozróżnienia na funkcję dla NPCów, Actions, Movements, Talkactions itp... wszystkie funkcje są dostępne dla wszystkich skryptów.

 

W poniższym spisie pragnę omówić wszystkie funkcje LUA, które możesz zastosować w swoich skryptach.

 

Funkcje podstawowe spiszę tutaj:

To jest ukryta treść, proszę

 

 

function onUse(cid, item, frompos, item2, topos) – funkcja wyzwalana przy użyciu przedmiotu. Wywoływana z argumentami: cid (właściwie to uid, ale cid to ten, który użył przedmiot, więc będzie najczęściej używany), item (przedmiot, który jest używany. Aby go wywołać posługujemy się komendą item.uid), frompos (pozycja, z jakiej został użyty przedmiot.), item2 (przedmiot, na którym używamy przedmiotu... wiem, że to zawile brzmi. Wywołuje się to komendą item2.uid) oraz topos (pozycja na której został użyty przedmiot).

Funkcje z udziałem tej funkcji zapisujemy w data/actions/scripts. Deklarujemy je w actions.xml.

 

To jest ukryta treść, proszę

 

(UID to unique ID, a AID to action ID)

 

Przykład skryptu:

 

To jest ukryta treść, proszę

 

function onStepIn(cid, item, pos) – funkcja wyzwalana przy wejściu na daną tile (przedmiot). Wywoływana z argumentami cid, item, pos (jeżeli nie wiesz, co to za argumenty, spójrz do opisu onUse... pos to pozycja, na którą wszedł gracz). Takowe skrypty zapisujemy do data/movements/scripts. Deklarujemy je w movements.xml.

 

Przykłady deklaracji:

To jest ukryta treść, proszę

 

Przykład skryptu:

 

To jest ukryta treść, proszę

 

function onStepOut(cid, item, pos) – funkcja odwrotna do onStepIn. Deklaruje się ją w tym samym miejscu. Uruchamia się, gdy gracz ZEJDZIE z danego pola.

 

Przykłady deklaracji:

 

To jest ukryta treść, proszę

 

Przykład skryptu:

To jest ukryta treść, proszę

 

function onEquip(cid, item, slot) – funkcja wyzwalana przy equipie (“założeniu na siebie”) danego itemu. Deklaruje się ją w tym samym miejsciu co onStepIn oraz onStepOut. Również w tym samym miejscu się ją zapisuje. Wywoływana z argumentami cid, item, slot (tutaj tylko slot jest nowy – jest to miejsce, gdzie item jest wsadzony...)

 

Przykłady deklaracji:

 

To jest ukryta treść, proszę

 

function onDeEquip(cid, item, slot) – funkcja odwrotna do onEquip. Deklaruje się ją w tym samym miejsciu co onStepIn oraz onStepOut. Również w tym samym miejscu się ją zapisuje. Wywoływana z argumentami cid, item, slot.

 

Przykłady deklaracji:

 

To jest ukryta treść, proszę

 

Przykład skryptu:

 

To jest ukryta treść, proszę

 

UWAGA! W deklaracji podałem tajemnicze “miejsce”... mianowicie, wpisuje się tam:

 

To jest ukryta treść, proszę

 

function onAddItem(moveitem, tileitem, pos) – funkcja wyzwalana przy stworzeniu przedmiotu na danym przedmiocie, gdzie moveitem to ten przedmiot (tworzony), tileitem to przedmiot, na którym ten przedmiot jest tworzony. Zapisuje się tam gdzie inne movement funkcje.

 

Przykłady deklaracji:

 

To jest ukryta treść, proszę

 

Przykład skryptu:

To jest ukryta treść, proszę

 

function onRemoveItem(moveitem, tileitem, pos) – funkcja odwrotna od onAddItem. Argumenty te same, zapisywanie to same.

 

Przykłady deklaracji:

To jest ukryta treść, proszę

 

Przykład skryptu:

To jest ukryta treść, proszę

 

function onUseWeapon(cid, var) – Funkcja wywoływana przy użyciu broni (ataku). Argumenty są jasne, var nie jest dla nas istotne . Skrypty z tą funkcją zapisuje się do data/weapons/scripts, a deklaruje w weapons.xml

 

Przykłady deklaracji:

To jest ukryta treść, proszę

 

Przykład skryptu:

 

To jest ukryta treść, proszę

 

function onTargetCreature(cid, target) – Funkcja wywoływana na “trafionej creature”. Cid to kreatura, która rzuca spell, a target to nasz cel. Skrypty z tą funkcją zapisuje się do data/spells/scripts. Deklaruje się je w actions.xml. UWAGA! Ten skrypt jest “stale zespolony” z funkcją onCastSpell!

function onCastSpell(cid, var) – zespolona z onTargetCreature.

 

Przykłady deklaracji:

 

To jest ukryta treść, proszę

 

Przykład skryptu:

 

To jest ukryta treść, proszę

 

 

To wszystko. Przejdźmy do poleceń:

 

uid – po prostu cid, albo inny cel (target.uid)

 

getPlayerFood(uid) – Pobiera foodstatus gracza i zapisuje go w postaci liczby.

getPlayerHealth(uid) - Pobiera AKTUALNĄ ilość życia gracza i zapisuje ją w postaci liczby.

getPlayerMana(uid) – jw. Tyle, że z maną.

getPlayerLevel(uid) – Pobiera level gracza i zapisuje go w postaci liczby.

getPlayerMagLevel(uid) - Pobiera magic level gracza i zapisuje go w postaci liczby.

getPlayerName(uid) - Pobiera nazwę gracza i zapisuje ją w postaci stringu.

getPlayerAccess(uid) – Pobiera access gracza i zapisuje go w postaci liczby.

getPlayerPosition(uid) – Pobiera pozycję gracza i zapisuje ją w postaci TABLICY (to ważne) trzech elementów: x, y, z. Nie można odnieść się do całej tablicy, więc należy zadeklarować zmienną, a potem odnosić się do składników tablicy za pomocą “.x”, “.z”, “.y” dopisanymi na koniec.

 

To jest ukryta treść, proszę

 

getPlayerSkill(uid,skillid) – Pobiera wartość skilla gracza i zapisuje go pod postacią liczby. “skillid” to ID skilla, odpowiednio:

 

To jest ukryta treść, proszę

 

 

getPlayerMasterPos(uid) – Pobiera pozycje templa gracza i zapisuje ją w postaci TABLICY. Zachować się tak samo jak przy getPlayerPosition(uid) .

getPlayerVocation(uid) – Pobiera vocation gracza i zapisuje je pod postacią liczby.

 

Vocations:

To jest ukryta treść, proszę

 

getPlayerItemCount(uid,itemid) – Pobiera ilość itemów o danym ID, jakie posiada gracz i zapisuje tą liczbę. “itemid” to właśnie ID tych itemów.

getPlayerSoul(uid) – Pobiera ilość souli gracza i zapisuje je w postaci liczby.

getPlayerFreeCap(uid) – Pobiera ilość wolnego jeszcze capa playera i zapisuje tą liczbę.

getPlayerLight(uid) – Pobiera ilość światła, które “wydziela” player i zapisuje tą liczbę.

getPlayerSlotItem(uid, slot) – Pobiera przedmiot z danego slotu gracza i zwraca jego itemid.

getPlayerDepotItems(uid, depotid) – Pobiera ilość przedmiotów, które znajdują się w depocie gracza (depot o DepotID równym drugiemu argumentowi) i zapisuje tą liczbę.

getPlayerGuildId(uid) – Pobiera GuildID (numer gildii) gracza i zapisuje tą liczbę.

getPlayerGuildName(uid) – Pobiera nazwę gildii gracza i zapisuje ją.

getPlayerGuildRank(uid) – Pobiera rangę w gildii gracza i zapisuje ją.

getPlayerGuildNick(uid) – Pobiera tytuł w gildii gracza i zapisuje go.

getPlayerStorageValue(uid,valueid) – Pobiera storagevalue o valueid i zapisuje tą liczbę.

getGlobalStorageValue(valueid) – Pobiera globalvalue i zapisuje tą liczbę.

getTilePzInfo(pos) – Sprawdza, czy tile o danej pozycji jest PZ, czy nie. Jeżeli nie, zwraca 0. W przeciwnym wypadku zwraca 1.

getTileHouseInfo(pos) - Sprawdza, czy tile o danej pozycji należy do domku, czy nie. Jeżeli nie, zwraca 0. W przeciwnym wypadku zwraca houseID tego domku.

getItemRWInfo(uid) – Sprawdza, czy na przedmiocie można pisać czy nie.

getThingfromPos(pos) – Pobiera rzecz z danej pozycji.

getThing(uid) – Pobiera rzecz o danym UID.

getThingPos(uid) – Pobiera pozycję rzeczy o danym UID.

doRemoveItem(uid,n) – Usuwa n itemów o danym UID.

doPlayerFeed(uid,food) – Dodaje +food do foodstatusu rzeczy o danym UID. (i tak to zawsze gracz )

doPlayerSendCancel(uid,text) – Przerywa wczytywanie skryptu i wysyła wiadomość do gracza.

doPlayerSendDefaultCancel(uid, ReturnValue) - Przerywa wczytywanie skryptu i wysyła domyślnie zdefiniowaną wiadomość do gracza.

doTeleportThing(uid,newpos) – Teleportuje rzecz o danym UID do newpos.

doTransformItem(uid,toitemid) – Przemienia przedmiot o danym UID na przedmiot o ID równym toitemid.

doPlayerSay(uid,text,type) – Sprawia, że gracz coś mówi. Type to typ wiadomości.

doSendMagicEffect(position,type) – Wysyła animowany efekt na daną pozycję.

doChangeTypeItem(uid,new_type) – Zmienia item.type przedmiotu na inny.

doSetItemActionId(uid,actionid) – Zmienia actionid przedmiotu o danym UID.

doSetItemText(uid,text) – Zmienia zapisany tekst na przedmiocie o danym UID.

doSetItemSpecialDescription(uid,desc) – Dodaje specjalny opis przedmiotowi o danym UID.

doSendAnimatedText(position,text,color) – Wysyła animowany text na daną pozycje.

doPlayerAddSkillTry(uid,skillid,n) – Dodaje ilość “prób” do zdobycia skilla graczowi o danym UID.

doPlayerAddHealth(uid,health) – Dodaje “health” życia graczowi o danym UID. (Uwaga: równie dobrze ta funkcja może odbierać życie... wystarczy wpisać wartość minusową...)

doCreatureAddHealth(uid,health) – Dodaje “health” życia KREATURZE (to dość istotna różnica – gracz to tylko gracz, a kreatura to i gracz i potwór i NPC) o danym UID. Reszta analogicznie do doPlayerAddHealth(uid,health).

doPlayerAddMana(uid,mana) – Dodaje “mana” many graczowi o danym UID.

doPlayerAddSoul(uid,soul) – jw. Tylko, że soule zamiast many.

doPlayerAddItem(uid,itemid,count or type) – dodaje item graczowi o danym UID. “count” to ilość (lub typ, jeżeli mówimy o runach – liczba ładunków, a jeżeli mówimy o fluidach – ID napoju w środku)

doPlayerSendTextMessage(uid,MessageClasses,message ) – Wysyła wiadomość tekstową danemu graczowi. MessageClasses to typ wiadomości.

doPlayerRemoveMoney(uid,money) – Usuwa “money” ilości pieniędzy graczowi o danym uid.

doShowTextWindow(cid,maxlen,canWrite) – wyświetla okienko tekstowe graczowi o danym UID. Maxlen to ilość znaków, jakie gracz może wpisać, a canWrite to czy może pisać, czy nie.

doDecayItem(uid) – Rozpoczyna “decayowanie” przedmiotu o danym UID.

doCreateItem(itemid,type or count,position) – Tworzy item na danej pozycji. (działa tylko na ziemi)

doSummonCreature(name, position) – Przywołuje “dziką” kreaturę o nazwie “name” na daną pozycje.

doMoveCreature(uid, direction) – Przesuwa kreaturę o danym UID o 1 pole w danym kierunku.

doPlayerSetMasterPos(uid,pos) – Zmienia pozycję temple gracza o danym UID.

doPlayerSetVocation(uid,voc) – Zmienia profesję gracza o danym UID.

doPlayerRemoveItem(uid,itemid,count) – Usuwa “count” przedmiotów od gracza o danym UID.

doPlayerAddExp(uid,exp) – Dodaje “exp” doświadczenia graczowi o danym UID.

doPlayerSetGuildRank(uid, rank) – Zmienia rangę w gildii gracza o danym UID.

doPlayerSetGuildNick(uid, nick) – Zmienia tytuł w gildii gracza o danym uid.

doPlayerAddOutfit(uid,looktype,addons) – Dodaje outfit o looktype równym “looktype” i z addonami równymi “addons” graczowi o danym UID.

doPlayerRemOutfit(uid,looktype,addons) – jw. Tylko, że usuwa .

doSetCreatureLight(uid, lightLevel, lightColor, time) – Zmienia poziom światła o kolorze “lightColor” kreaturze o danym UID na czas równy “time”.

isPlayer(uid) – Sprawdza, czy rzecz o danym UID to player. Jeżeli tak, zwraca 1, jeżeli nie, zwraca -1.

isContainer(uid) – Sprawdza, czy rzecz o danym UID to kontener. Jeżeli tak, zwraca 1, jeżeli nie, zwraca -1.

isMoveable(uid) - Sprawdza, czy rzecz o danym UID da się przesunąć. Jeżeli tak, zwraca 1, jeżeli nie, zwraca -1.

Podpowiedź: Te 3 funkcje stosuje się w instrukcjach warunkowych, na przykład:

To jest ukryta treść, proszę

 

getPlayerByName(name) – Zwraca UID gracza o danym imieniu.

getContainerSize(uid) – Pobiera pojemność kontenera o danym UID.

getContainerCap(uid) – Pobiera capacity kontenera o danym UID.

getContainerItem(uid, slot) – Pobiera kontener ze slotu gracza o danym UID.

doAddContainerItem(uid, itemid, count or subtype) – Dodaje kontener graczowi o danym UID.

getHouseOwner(houseid) – Pobiera właściciela domku o danym UID.

setHouseOwner(houseid, owner) – Zmienia właściciela domku o danym UID.

getWorldType() - Sprawdza, czy serwer jest Non-PVP, czy PVP, czy PVP-Enforced.

getWorldTime() - Pobiera godzinę w grze.

getWorldLight() - Pobiera stan światła na serwerze.

getWorldCreatures(type) – pobiera ilość kreatur aktualnie na serwerze (0 – gracze, 1 – potwory, 2 – NPCe, 3 – wszystkie).

getWorldUpTime() - Pobiera wartość uptime'u serwera.

getGuildId(guild_name) – Pobiera GuildID gildii o danej nazwie

getPlayerSex(uid) – Pobiera płeć gracza o danym UID (0 – kobieta, 1 – mężczyzna).

Od razu ostrzegam: Zawarte tu funkcje są już bardzo hardkorowe :

createCombatArea( {area}, {extArea} ) - tworzy battle area (obszar, gdzie otrzymasz “mieczyki”).

createConditionObject(type) – Tworzy kondycję (np. Poison).

setCombatArea(combat, area) – zmienia battle area.

setCombatCondition(combat, condition) – tworzy kondycje na całym batlle area.

setCombatParam(combat, key, value) – Zmienia parametr battle area.

setConditionParam(condition, key, value) – Zmienia parametr kondycji.

addOutfitCondition(condition, lookTypeEx, lookType, lookHead, lookBody, lookLegs, lookFeet) – Tworzy “kondycję outfitową” (np. Djinn, gdy zamienia w rata).

setCombatCallBack(combat, key, function_name) – szczerze mówiąc, nie mam zielonego pojęcia ;dd.

setCombatFormula(combat, type, mina, minb, maxa, maxb) – Tworzy formułę obrażeń battle area.

setConditionFormula(combat, mina, minb, maxa, maxb) – Tworzy formułę obrażeń kondycji.

doCombat(cid, combat, param) – Tworzy battlearea (wieńczy dzieło, rzec można ).

createCombatObject() - Tworzy obiekt battlearea.

doAreaCombatHealth(cid, type, pos, area, min, max, effect) – Zmienia życie na battlearea.

doTargetCombatHealth(cid, target, type, min, max, effect) – jw. Tylko, że na celu.

doAreaCombatMana(cid, pos, area, min, max, effect) i doTargetCombatMana(cid, target, min, max, effect) – to samo co powyższe, tyle, że mana.

doAreaCombatCondition(cid, pos, area, condition, effect) – Tworzy obszarową kondycje.

doTargetCombatCondition(cid, target, condition, effect) – Tworzy kondycje na celu.

doAreaCombatDispel(cid, pos, area, type, effect) – Usuwa kondycję na obszarze.

doTargetCombatDispel(cid, target, type, effect) – jw. Tylko, że na celu.

doChallengeCreature(cid, target) – Wyzywa daną kreaturę (wiecie, “exeta res”).

doConvinceCreature(cid, target) – Convincuje daną kreaturę.

variantToNumber(var) – Tutaj możesz poznać, co kryje ten nieszczęsny “var”, przerabiając go na liczbę.

variantToString(var) – jw. Tylko, że na string.

Koniec hardkoru.

doChangeSpeed(cid, delta) – Zmienia szybkość kreatury o danym UID.

doSetMonsterOutfit(cid, name, time) – Zmienia outfit na outfit danego potwora na czas równy “time”.

doSetItemOutfit(cid, item, time) – Zmienia outfit na outfit danego itemu na czas równy “time”.

doSetCreatureOutfit(cid, outfit, time) – doSetMonsterOutfit(cid, name, time) – Zmienia outfit na outfit o ID równym “outfit” na czas równy “time”.

getCreatureOutfit(cid) – Pobiera outfit kreatury o danym UID.

debugPrint(text) – Wywalenie błędu do konsoli.

isInArray(array, value) – Zwraca, czy COŚ jest w zasięgu.

 

Po różne dziwne zmienne typu “MessageClasses” zapraszam do “global.lua”

 

Oczywiście te funkcje istnieją tylko w najnowszych SVN. Na innych typu “YurOTS” mogą nie działać poprawnie, bądź może ich w ogóle nie być.

 

Pozdrawiam i zapraszam an następne poradniki

1396292564-U784394.png

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...