Scripting Referenz

Aus Invertika Wiki

Wechseln zu: Navigation, Suche

Der Server manaserv benutzt als Skripting Sprache LUA. Dies stellt eine Referenz der implementierten Methoden da.

Inhaltsverzeichnis

Erstellung von Dingen

create_npc

Benutzung: create_npc(string name, int spriteID, int x, int y, function talkfunct, function updatefunct)


Rückgabewert: Ein Handle zum erzeugten NPC. Erstell einen neuen NPC mit dem Namen name an den Kooridinaten x:y mit einem Bild aus der npcs.xml weclhes über die spriteID definiert wird. Jeden Game Tick wird die Funktion updatefunct mit dem Handle des NPC's aufgerufen. Wenn ein Charakter mit dem NPC redet wird die Funktion talkfunct mit dem NPC und dem Charakter Handle aufgerüfen.

mana.monster_create

Benutzung: mana.monster_create(int monsterID, int x, int y)

Rückgabewert: Ein Handle zum erzeugten Monster.

Spawnt ein neues Monster vom Typ monsterID auf der aktuellen Karte an den Pixelkoordinaten x:y.

mana.trigger_create

Benutzung: mana.trigger_create (int x, int y, int width, int height, string functionname, int arg, bool once)

Erzeugt einen neuen Triggerbereich mit der gegebenen height und width in Pixeln ab der Mapposition x:y in Pixel. Wenn jemand in einen solchen Bereich tritt wird die die Funktion mit dem Namen functionname aufgerufen mit dem Argument arg. Wenn der Parameter once false ist so wird diese Funktion jeden in jedem Game Tick ausgeführt ansonsten wird die Funktion nur einmal beim Betreten des Bereiches ausgeführt.

mana.effect_create

Benutzung: mana.effect_create (int id, int x, int y)

Erzeugt einen Effekt mit einer id aus der effects.xml (particle and/or sound) at map location x:y. Dabei ist zu beachten das Effekte keine Auswirkungen auf das Gameplay haben. Der Client kann die Darstellung von Effekten auch unterbinden, daher sollten sie nicht für wichtige Dinge die man immer bemerken muss benutzt werden.

Ein- und Ausgabe

do_message

Benutzung: do_message(handle npc, handle character, string message)

Warnung: Diese Funktion sollte nur aus einer NPC Talk Funktion heraus aufgerufen werden.

Zeigt eine NPC DialogBox auf dem Bildschirm des Charakters ch welche den String msg anzeigt. Idlet im aktuellen Thread bis der User auf Ok klickt.

do_choice

Benutzung: do_choice(handle npc, handle character, string option1, ... string optionN)

Rückgabewert: Nummer der Option die der Player selektiert habt (startet mit 1).

Warnung: Diese Funktion sollte nur aus einer NPC Talk Funktion heraus aufgerufen werden.

Zeigt eine NPC Dialog Box mit einer Auswahl an Optionen auf dem Bildschirm des Charakters an. Idlet im aktuellen Thread bis der User etwas auswählt oder auf Cancel klickt.

mana.being_say

Benutzung: mana.being_say(handle being, string message)

Ein Charakter, Monster oder NPC (being), spricht den String message als würde er/es ihn selber im Chat eingegeben haben.

mana.chatmessage

Benutzung: mana.chatmessage(handle character, string message)

Gibt den String message im Chatlog von character aus. Dies kann für private Nachrichten vom Server benutzt werden.

Inventory interaction

mana.npc_trade

Benutzung: mana.npc_trade(handle npc, handle character, bool mode, {int item1id, int item1cost, int item1amount}, ..., {int itemNid, int itemNcost, int itemNamount})

Öffnet ein Handelsfenster für character wenn er mit npc redet. Wenn mode true ist verkauft der Händler ansonsten false für das kaufen von Items. Für jedes item wird der Preis sowie die maximal zu verkaufende Menge angegeben (pro Handelsvorgang).

Das ganze sieht dann so aus:

mana.npc_trade(npc, ch, false, { {10001, 10, 20}, {20001, 10, 30}, {20002, 10, 50} })

mana.chr_inv_count

Benutzung: mana.chr_inv_count(handle character, int id1, ..., int idN)

Rückgabewerts: Anzahl des Items id welches der character besitzt.

mana.chr_inv_change

Benutzung: mana.chr_inv_change(handle character, int id1, int number1, ..., int idN, numberN)

Rückgabewert: True wenn der Vorgang erfolgreich, False bei einem Fehler

Ändert die Nummer der Items mit der Item ID id welche der character besitzt nach number. You can change any number of items with this function by passing multiple id and ammount pairs. A failure can be caused by trying to take items the character doesn't possess.

Warnung: When one of the operations fails the following operations are ignored but these before are executed. For that reason you should always check if the character possesses items you are taking away using mana.chr_invcount.

mana.chr_money

Benutzung: mana.chr_money(handle character)

Rückgabewert: Das Guthaben des Charakters character.

mana.chr_money_change

Benutzung: mana.chr_money_change(handle character, int amount)

Ändert das Guthaben des character anhand amount.

Warnung: Bevor das Geld reduziert wird, sollte geschaut werden ob der Spieler überhaupt soviel hat.

Charakter und Wesen Interaktion

get_quest_var(npc, ch, name)
mana.chr_setquest
mana.being_walk
mana.being_damage
mana.get_beings_in_circle

mana.being_get_attribute

Benutzung: mana.being_get_attribute(handle being, int attribute)

Gibt den Wert des Attributes zurück.

mana.being_get_name

Benutzung: mana.being_get_name(handle being)

Gibt den Namen von being zurück.

mana.being_type

Benutzung: mana.being_type(handle being)

Gibt den Typ des übergebenen Gegenstandes/Wesens zurück. Dabei sind folgende Konstanten in der libtmw-constants.lua definiert:

0 TYPE_ITEM
1 TYPE_ACTOR
2 TYPE_NPC
3 TYPE_MONSTER
4 TYPE_CHARACTER
5 TYPE_EFFECT
6 TYPE_OTHER

mana.chr_warp

Benutzung: mana.chr_warp(handle character, int mapID, int posX, int posY)

Teleportiert den character zu der Position posX:posY auf der Karte mit der ID Nummer mapID. Die mapID kann auf "nil" gesetzt werden. Dadurch wird der Spieler auf der aktuellen Map teleportiert.

mana.posX

Benutzung: mana.posX(handle being)

Rückgabewert: Die vertikale Position von being in Pixeln gemessen von der linken Seite der aktuellen Karte.

mana.posY

Benutzung: mana.posY(handle being)

Rückgabewert: Die vertikale Position von being in Pixeln gemessen von der oberen Seite der aktuellen Karte.

mana.being_get_attribute

Benutzung: mana.being_get_attribute(handle being, int attribute)

Rückgabewert: Gibt die Score in attribute von being zurück. Kann dazu benutzt werden die Skilllevel eines Charakters zu ermitteln.

mana.chr_get_exp

Benutzung: mana.chr_get_exp(handle character, int attribute)

Rückgabewert: Die totale Anzahl der Erfahrungspunkte gesammelt von character im Skill attribute.

mana.chr_give_exp

Benutzung: mana.chr_give_exp(handle character, int attribute, int amount)

Gibt character amount viele Erfahrung im Skill attribute.

mana.exp_for_level

Benutzung: mana.exp_for_level(int level)

Rückgabewert: Gibt die totale Anzahl der Erfahrungspunkte um das Level level in jedem Skill zu ereichen (fängt bei 0 an zu zählen).

mana.char_get_hair_color

Usage: mana.chr_get_hair_color(handle character)

Return value: The hair color id of character

mana.char_set_hair_color

Usage: mana.chr_set_hair_color(handle character, int color)

Sets the hair color id of character to color

mana.char_get_hair_style

Usage: mana.chr_get_hair_style(handle character)

Return value: The hair style id of character

mana.char_set_hair_style

Usage: mana.chr_set_hair_style(handle character, int style)

Sets the hair style id of character to style

mana.chr_get_rights

Benutzung: mana.chr_get_rights(handle character)

Rückgabewert: Das Account Zugriffslevel des Charakters.

Terminierung

atinit

Benutzung: atinit(function() [function body] end)

Fügt eine Funktion hinzu welche ausgeführt wird wenn der Gameserver die Karte lädt. Dies kann genutzt um NPC's oder Trigger Bereiche oder Cronjobs (schedule_every) zu setzen. Jede Art von Funktion kann auf diesem Weg hinzugefügt werden.

schedule_in

Benutzung: schedule_in(seconds, function() [function body] end)

Führt die Funktion function body in seconds Sekunden aus.

schedule_every

Benutzung: schedule_every(seconds, function() [function body] end)

Führt die Funktion function body alle seconds Sekunden oft aus.

on_death

Benutzung: on_death(handle being, function() [function body] end)

Führt die Funktion function body aus wenn being getötet wird.

on_remove

Benutzung: on_remove(handle being, function() [function body] end)

Führt den function body wenn being sich nicht länger auf der Karte aufhält. Dies kann durch folgende Events ausgelöst werden:

  • being verlässt die Karte
  • being wird von der Karte gewarpt
  • being logt sich aus
  • being wird beim Cleanup entfernt (z.B. wenn der Charakter stirbt)

Allgemeine Information

mana.get_map_id()

Benutzung: mana.get_map_id()

Rückgabewert: die ID Nummer der Karte auf der das Skript läuft.

Weblinks