Protocoles

Accueil > Jeux Vidéo > Shattered Realm > Protocoles

Protocole Réseau : Serveur → Client

Les identifiants <id> et <charID> sont textuels (ils peuvent être composés de plusieurs chiffres séparés par des points ou de mots, mais dans tous les cas ils sont à interpréter comme des chaînes ASCII).
Les <aspect> sont des identifiants numériques positifs entiers. Les tilesets sont à charger les uns après les autres, dans un ordre prédéterminé ; chaque tile recevant un identifiant incrémental. (Par exemple, le premier tile du premier fichier a comme identifiant 0, et après avoir chargé un premier fichier contenant 100 tiles, identifiés de 0 à 99, le premier tile du fichier suivant recevra l'identifiant 100.)
Il est à noter que le protocole ne présupose pas quel personnage est contrôlé par le client.

	msg <text>
Rajouter la ligne <text> à la console.

	move <charID> <aspect> <X> <Y>
Créer ou mettre à jour le personnage <charID> avec l'aspect <Aspect> et aux coordonnées <X> et <Y>.
TODO : renommer en "updatechar" ?
TODO : rajouter le nom (à afficher au-dessus).

	floor <W> <H> <name>
Changer de zone (oublier les informations de la zone précédente et des personnages vus) ; la nouvelle zone est de dimensions <W> par <H> et est nommée <name>.
Cette commande est suivie par une seule ligne comportant une liste d'identifiants d'aspects séparés par des virgules de taille <W>*<H>, dans l'ordre de lecture occidental (chaque ligne de gauche à droite puis de haut en bas ; la première case étant celle en haut à gauche, de coordonnées 0;0).
TODO : renommer en "newzone" ou "changezone" ?

	floorchange <aspect> <X> <Y>
Changer l'<aspect> de la case aux coordonnées <X> et <Y>.

	gauge <id> <name> <val> <max> <full> <empty>
Créer ou mettre à jour la jauge <id> de nom <name> avec une valeur <val> sur un maximum <max>, et dont les icônes ont l'aspect <full> lorsqu'elles sont pleines et <empty> lorsqu'elles sont vides. (Par exemple, une jauge avec <val> à 2 et <max> à 5 affichera deux icônes <full> suivies de trois icônes <empty>.)

	nogauge <id>
Supprime la jauge <id>.

	follow <charID>
Suivre les déplacements du personnage <charID> (cette information persiste entre chaque changement de zone).

	hint <aspect> <text>
Créer une nouvelle commande <text> avec l'aspect <aspect>.
TODO : depreciated.
		

Pritives Lua : Scripts → Serveur

c_rand(max) -> int
setverbose()
setnoverbose()
isverbose() -> bool
info(message)
warning(message)
fatal(message)

halt()
open(port, spawn_script_filename, spawn_zone, x, y)
close()
is_open() -> bool
get_port() -> int

add_action(trigger, script)
get_action(trigger) -> string
delete_action(trigger)
set_default_action(script)
-- list_actions()
register_aspect(string, int [, passable])
set_disconnection_script(script)

serialize_place(zone, x, y) -> string
deserialize_place(string) -> string, int, int // zone, x, y

server_gettag(tag_id)
server_settag(tag_id, value)
server_deltag(tag_id)

create_timer(duration, script) -> timer_id
delete_timer(timer_id)
timer_getremaining(timer_id) -> int | 0
timer_setremaining(timer_id, val)
timer_triggernow(timer_id)

new_zone(id, name, width, height, tile_id [, passable])
delete_zone(zone_id)
assert_zone(zone_id) -> bool
zone_getname(zone_id) -> string
zone_setname(zone_id, name)
zone_getwidth(zone_id) -> int
zone_getheight(zone_id) -> int
zone_event(zone_id, message)
zone_gettag(zone_id, tag_id)
zone_settag(zone_id, tag_id, value)
zone_deltag(zone_id, tag_id)
zone_getcharacters(zone_id) -> table of { character_id }

assert_place(zone_id, x, y) -> bool
place_getaspect(zone_id, x, y)
place_setaspect(zone_id, x, y, aspect) // Automatically set aspect's default passability.
place_ispassable(zone_id, x, y)
place_setpassable(zone_id, x, y)
place_setnotpassable(zone_id, x, y)
place_getlandon(zone_id, x, y)
place_setlandon(zone_id, x, y, script)
place_resetlandon(zone_id, x, y)
place_gettag(zone_id, x, y, tag_id)
place_settag(zone_id, x, y, tag_id, value)
place_deltag(zone_id, x, y, tag_id)

create_npc(aspect [, name]) -> character_id
delete_character(character_id)
assert_character(character_id) -> bool
character_spawn(character_id, zone_id, x, y)
character_getname(character_id) -> string
character_setname(character_id, name)
character_getaspect(character_id) -> int
character_setaspect(character_id, aspect)
character_hasplayer(character_id) -> bool
character_detachplayer(character_id) -> player_id
character_attachplayer(character_id, player_id) -> old_player_id
character_getzone(character_id) -> string
character_getx(character_id) -> int
character_gety(character_id) -> int
character_setxy(character_id, x, y)
character_move(character_id, x_shift, y_shift)
character_changezone(character_id, zone_id, x, y)
character_setnozone(character_id)
character_setcanmove(character_id)
character_setcantmove(character_id)
character_getcanmove(character_id) -> bool
character_getwhendeath(character_id) -> string
character_setwhendeath(character_id, script)
character_getwhenbump(character_id) -> string
character_setwhenbump(character_id, script)
-- character_list_gauges(character_id)
character_delgauge(character_id, gauge_id)
character_gettag(character_id, tag_id) -> string | tag
character_settag(character_id, tag_id, value)
character_deltag(character_id, tag_id)
character_isghost(character_id) -> bool
character_setghost(character_id, bool)
character_message(character_id, message)
character_follow(character_id, target_character_id)
character_hint(character_id, aspect, hint)

new_gauge(character_id, gauge_id, gauge_name, val, max, aspectFull, aspectEmpty, [, visible])
assert_gauge(character_id, gauge_id) -> bool
gauge_getname(character_id, gauge_id) -> string
gauge_setname(character_id, gauge_id, name)
gauge_getval(character_id, gauge_id) -> int
gauge_setval(character_id, gauge_id, val)
gauge_increase(character_id, gauge_id, val)
gauge_decrease(character_id, gauge_id, val)
gauge_getmax(character_id, gauge_id) -> int
gauge_setmax(character_id, gauge_id, max)
gauge_getwhenfull(character_id, gauge_id) -> string
gauge_setwhenfull(character_id, gauge_id, script)
gauge_resetwhenfull(character_id, gauge_id)
gauge_getwhenempty(character_id, gauge_id) -> string
gauge_setwhenempty(character_id, gauge_id, script)
gauge_resetwhenempty(character_id, gauge_id)
gauge_isvisible(character_id, gauge_id) -> bool
gauge_setvisible(character_id, gauge_id, bool)

create_inventory(size, [type]) -> inventory_id
delete_inventory(inventory_id)
assert_inventory(inventory_id) -> bool
inventory_gettype(inventory_id) -> string
inventory_size(inventory_id) -> int
inventory_resize(inventory_id, size)
inventory_total(inventory_id) -> int
inventory_available(inventory_id) -> int
inventory_get(inventory_id, item_name) -> table of { artifact_id }
inventory_get_all(inventory_id) -> table of { artifact_id }

create_artifact(inventory_id, name, type, [quantity] ) -> artifact_id
delete_artifact(inventory_id, artifact_id, [quantity] ) -> bool
assert_artifact(inventory_id, artifact_id) -> bool
artifact_move(inventory_id, artifact_id, destination_inventory_id, [quantity]) -> bool
artifact_getname(inventory_id, artifact_id) -> string
artifact_setname(inventory_id, artifact_id, name)
artifact_gettype(inventory_id, artifact_id) -> string
artifact_settype(inventory_id, artifact_id, type)
artifact_getquantity(inventory_id, artifact_id) -> int
artifact_gettag(inventory_id, artifact_id, tag_id) -> string
artifact_settag(inventory_id, artifact_id, tag_id, value)
artifact_deltag(inventory_id, artifact_id, tag_id)