Tiendas WoD - Información técnica - Transacciones
De World of Dungeons - Enzykloplaedia
An die URL http://SERVER/wod/spiel/wodpartner/transfer.php kannst du die hier beschriebenen Anfragen stellen. SERVER ist dabei der Server von WoD, der bei Login des Spielers angegeben ist. Näheres findest du im Kapitel WoD Shops - Technical Information - First Steps.
Änderungen an der Schnittstelle ohne Vorankündigung
Die Schnittstelle zu WoD ist in der ständigen Weiterentwicklung. Sie kann sich ständig ändern und ergänzt werden.
Folgende Änderungen werden ohne Vorankündigung gemacht:
- die Reihenfolge der Felder in der Antwort auf eine Anfrage ändert sich, z.B.
user: Friar Tack world: EA
statt
world: EA user: Friar Tack
- die Felder werden um weitere Felder ergänzt, z.B.
world: EA user: Friar Tack additional data: some extra data
statt
world: EA user: Friar Tack
Deshalb ist es sehr wichtig, das WoD-Geschäft so zu programmieren, dass
- die Ausgabe unabhängig von der Reihenfolge der Felder ausgewertet wird
- unbekannte Felder ignoriert werden.
The example source code meets these requirements!
Nur Änderungen, bei der Felder wegfallen oder ihre Bedeutung ändern, werden angekündigt. Solche Änderungen sind aber extrem unwahrscheinlich, da sie Änderungen an allen bestehenden Geschäften erfordern. Im Fall der Fälle wird es eine langfristige Übergansregelung geben.
Allgemeine Transaktionen
Gold/Gegenstände an Spieler transferieren: action=transfer
?partner=SHOPID &password=PASSWORD &action=transfer &uid=ID &gold=GOLD ?partner=SHOPID &password=PASSWORD &uid=ID&action=transfer &items=ITEMS ?partner=SHOPID &password=PASSWORD &uid=ID &action=transfer &gold=GOLD&items=ITEMS
Example 1
Your GET-Parameters: ...&uid=123&gold=250
WoD's response:
world: EA worldname: Aberon user: Friar Tack level: 17 class: priest people: gnome gold: ok balance: 2006
250 Gold wurden von deinem Geschäftskonto (in der Welt von Friar Tack) an Friar Tack überwiesen. Friar Tack ist auf Stufe 17.
Example 2
Your GET-Parameters: ...&uid=123&gold=2500
WoD's response:
world: EA worldname: Aberon user: Friar Tack level: 17 class: priest people: gnome gold: error balance: 2256
Du hattest nicht genug Gold auf deinem Geschäftskonto (in der Welt von Friar Tack).
Example 3
Your GET-Parameters: ...&items=112,334,556
WoD's response:
world: EA worldname: Aberon user: Friar Tack level: 17 class: priest people: gnome item 112: ok item 334: ok item 556: ok balance: 2256
Diese 3 Gegenstände wurden aus deinem Geschäftslager (in der Welt von Friar Tack) in Friar Tacks Lager gepackt
Example 4
Your GET-Parameters: ...&items=112,335,556
WoD's response:
world: EA worldname: Aberon user: Friar Tack level: 17 class: priest people: gnome item 112: ok item 335: error item 556: ok balance: 2256
Gegenstand 335 war nicht in deinem WoD-Geschäftslager (weil er schon an einem anderen Spieler übergeben wurde, zum Festpreis verkauft worden ist oder gar nicht in deine WoD-Geschäftslager war)
Example 5
Your GET-Parameters: ...&gold=250&items=112,334,556
WoD's response:
world: EA worldname: Aberon user: Friar Tack level: 17 class: priest people: gnome gold: ok item 112: ok item 334: ok item 556: ok balance: 2006
Gegenstands- und Goldtransfer kombiniert.
Zahlung/Gegenstände der Spieler prüfen: action=validate
?partner=SHOPID &password=PASSWORD &action=validate &uid=ID &userpass=USERPASS &gold=GOLD &transfer_id=TRANSFER_ID
?partner=SHOPID &password=PASSWORD &action=validate &uid=ID &userpass=USERPASS &items=ITEMS
?partner=SHOPID &password=PASSWORD &&action=validate &uid=ID &userpass=USERPASS &items=ITEMS &gold=GOLD &transfer_id=TRANSFER_ID
Bitte nur 1 mal pro Spielerbesuch aufrufen.
Beachte bitte, dass bei den Gegenständen nicht geprüft wird, ob sie mit dem aktuellen Besuch des Helden in deinem Geschäft übertragen worden sind. Auch wenn der Spieler (durch Manipulation an den POST-Variablen) Gegenstände angibt, der er schon früher in dein Geschäft gebracht hat, wird das als ok gemeldet. Dies ist kein Problem, da ja jeder Gegenstand eine eindeutige ID hat.
Example 1
Your GET-Parameters: ...&uid=123&userpass=Sd3d9vAsdf
WoD's response:
world: EA worldname: Aberon player: root player_id: 1 user: Friar Tack level: 17 class: priest people: gnome login: ok balance: 1232
Friar Tack hat sich anmeldet - das Kennwort stimmt. Ob er Gold/Gegenstände mitgebracht hat, wird nicht überprüft. Level ist die Stufe von Friar Tack. Balance ist das aktuelle Guthaben auf deinem Geschäftskonto (in der Welt von Friar Tack).
Example 2
Your GET-Parameters: ...&uid=123&userpass=wrong_password
WoD's response:
world: EA worldname: Aberon login: error
Jemand hat sich als Friar Tack ausgegeben.
Example 3
Your GET-Parameters: ...uid=123&userpass=Sd3d9vAsdf&items=112,334,556
WoD's response:
world: EA worldname: Aberon player: root player_id: 1 user: Friar Tack level: 17 login: ok item 112: type=23; usage=0/0; hp=25/25; cond=6; \ value=100/100; prev_owner=123; name="Buckler"; \ classes="Schild"; where="shield hand" item 334: type=45; usage=50/50; hp=20/20; cond=6; \ value=140/140; prev_owner=123; name="Armbrustbolzen"; \ classes="Bolzen für Armbrust"; where="pocket" item 445: type=56 usage=3/3; hp=10/10; cond=6; \ value=500/500; prev_owner=123; \ name="strong healing potion (phiole)";\ classes="healing potin"; where="pocket" balance: 1232
Friar Tack hat 3 Gegenstände mitgebracht. Sie sind jetzt in deinem Geschäftslager.
The item record is explained here: WoD Shops - Technical Information - First Steps, Section Validating the players information.
Example 4
Your GET-Parameters: ...&uid=123&userpass=Sd3d9vAsdf&items=112,335,556
WoD's response:
world: EA worldname: Aberon player: root player_id: 1 user: Friar Tack level: 17 class: priest people: gnome login: ok item 112: type=23; usage=0/0; hp=25/25; cond=6; \ value=100/100; prev_owner=123; name="Buckler"; \ classes="armor"; where="shield hand" item 335: error item 556: type=67; usage=50/50; hp=20/20; cond=6; \ value=140/140; prev_owner=123; name="poisened arrows"; \ classes="arrows"; where="pocket" balance: 1232
Hier hat Friar Tack gemogelt - den Gegenstand 335 hat er gar nicht im Lager gehabt. Es war auch wirklich Friar Tack, der gemogelt hat, da der Login ok war.
Example 5
Your GET-Parameters: ...&uid=123&userpass=Sd3d9vAsdf&gold=3000&transfer_id=1232
WoD's response:
world: EA worldname: Aberon player: root player_id: 1 user: Friar Tack level: 17 class: priest people: gnome login: ok gold: ok
Nur die Gold-Zahlung des Helden wird geprüft.
Example 6
Your GET-Parameters: ...&uid=123&userpass=Sd3d9vAsdf&gold=3000&transfer_id=1232
WoD's response:
world: EA worldname: Aberon player: root player_id: 1 user: Friar Tack level: 17 class: priest people: gnome login: ok gold: used
Der Spieler hat dieselbe TransferId nochmal verwendet, z.B. durch einen Reload der Seite.
Example 7
Your GET-Parameters: ...&uid=123&userpass=Sd3d9vAsdf&gold=3000&transfer_id=1232&items=112,334,556
WoD's response:
world: EA worldname: Aberon player: root player_id: 1 user: Friar Tack level: 17 class: priest people: gnome login: ok gold: ok item 112: type=23; usage=0/0; hp=25/25; cond=6; \ value=100/100; prev_owner=123; name="Buckler"; \ classes="Schild"; where="shield hand" item 334: type=45; usage=3/3; hp=10/10; cond=6; \ value=500/500; prev_owner=123; \ name="Heiltrank (Flasche)";\ classes="Heiltrank"; where="pocket" item 556: type=67; usage=50/50; hp=20/20; cond=6; \ value=140/140; prev_owner=123; name="Armbrustbolzen"; \ classes="Bolzen für Armbrust"; where="pocket" balance: 1232
Gold- und Gegenstandsprüfung kombiniert.
Gegenstände zum Festpreis verkaufen: action=sellfixprice
?partner=SHOPID &password=PASSWORD &action=sellfixprice &items=ITEMS
Verkauft die angezeigten Gegenstände zum Festpreis. Da dies die Datenbank entlastet, kannst du gerne möglichst viele Gegenstände verkaufen!
Example 1
Your GET-Parameters: ...&items=17617,18740,18769,15253
WoD's response:
world: EA worldname: Aberon item 17617: 153 item 18740: 162 item 18769: 130 item 15253: 40 sum: 485 balance: 2523
Für die vier Gegenstände ist jeweils der Verkaufspreis angegeben. sum ist der Gesamterlös dieses Verkaufs. Balance ist das aktuelle Guthaben auf dem Geschäftskonto.
Example 2
Your GET-Parameters: ..&items=17617,18740,18769,15253
WoD's response:
world: EA worldname: Aberon item 17617: 153 item 18740: error item 18769: error item 15253: 40 sum: 193 balance: 2231
Hier ist der Verkauf von 2 Gegenständen fehlgeschlagen - entweder wurden sie schon verkauft oder sie wurden schon an Spieler abgegeben.
Lager anzeigen: action=items
?partner=SHOPID &password=PASSWORD &action=items
Listet alle Gegenstände auf, die sich im Lager des Geschäftes befinden.(Bitte nur max. 1 mal täglich aufrufen)
Example
WoD's response:
world: EA worldname: Aberon item 18669868: type=32563; usage=0/0; hp=41/41; cond=6; \ value=338/338; prev_owner=123; \ name="Einfache Kriegsaxt"; classes="Axt,Nahkampfwaffen"; \ where="weapon hand"; price=766 item 18423570: type=33416; usage=0/0; hp=11/11; cond=6; \ value=225/225; prev_owner=123; \ name="Einfache Leder-Armschiene"; classes="Rüstung"; \ where="arms"; price=523 item 17749150: type=47956; usage=0/0; hp=15/15; cond=6; \ value=1500/1500; prev_owner=123; \ name="Verbesserter Ork-Helm des Zorns"; \ classes="Rüstung"; \ where="head"; price=3432 item 18356672: type=33418; usage=0/0; hp=23/23; cond=6; \ value=525/525; prev_owner=123; \ name="Einfache Leder-Brustplatte"; classes="Rüstung"; \ where="torso"; price=931 item 20592443: type=42081; usage=10/10; hp=5/5; cond=6; \ value=150/150; prev_owner=123; \ name="Kriegsfarbe des Barbroxu (braun)"; \ classes="Amulett der Stärkung"; \ where="neck"; price=232
The item record is explained here: WoD Shops - Technical Information - First Steps, Section Validating the players information.
Guthaben anzeigen: action=balance
?partner=SHOPID &password=PASSWORD &action=balance
Das aktuelle Guthaben deines WoD-Geschäfts - bitte nur 1 mal stündlich aufrufen. Example
world: EA worldname: Aberon balance: 2523 items: 200 maxitems: 10000 tax: 8%
- balance ist dein aktuelles Guthaben auf deinem Geschäftskonto.
- items ist die Zahl der Gegenstände in deinem Geschäftslager
- maxitems ist die Größe deines Geschäftslagers. Im Example haben insgesamt 10.000 Gegenstände darin Platz.
- tax ist die aktuelle Umsatzsteuer für Einzahlungen der Spieler in Prozent (die aktuelle Umsatzsteuer wird immer nachts bestimmt). (Auszahlungen an die Spieler sind steuerfrei)
Nachricht an Held senden: action=mail
?partner=SHOPID &password=PASSWORD &action=mail &uid=ID1,ID2,ID3,... &subject=BASE64_ENCODED_SUBJECT &message=BASE64_ENCODED_MESSAGE
Schickt eine In-Game Nachricht an einen Helden. Wer spammt, wird mit dem verrosteten Kanonenrohr erschossen!
Bitte hänge an die Nachricht eine Signatur an, aus der sichtbar wir, von welchem Geschäft die Nachricht gesendet wurde. Du kannst den bbCode für einen Link auf dein Geschäft dabei verwenden, z. B.
-- Besuche [menu:bazar?show=SHOPID|GESCHÄFTSNAME]!
Die Nachricht wird dem Spieler als Ereignis-Nachricht zugestellt. Dem Betreff wird automatisch die SHOPID + ': ' vorangestellt, z. B.: SHOPID: Mein Betreff
- uid Liste der ID der Empfänger-Helden (durch Kommata "," getrennt).
- subject ist der base64-encodiert Betreff, in PHP z.B.
'subject=' . base64_encode('Dies ist mein Betreff :-)');
- message ist die base64-encodiert Nachricht.
Example
Your GET-Parameters:
..&uid=123&subject=V2ljaHRpZ2VyIEhpbndlaXM= & messsage=QmV6YWhsZSBiaXR0ZSBkZWluZSBTY2h1bGRlbg==
WoD's response:
world: EA worldname: Aberon user: Friar Tack status: ok
Falls der Empfänger nicht existiert, ist WoD's response:
world: EA ERROR: invalid user id
Falls Subject oder Nachricht leer ist, ist WoD's response:
user: Friar Tack status: error
Konvertierungen eines Helden: action=conversionhistory
?partner=SHOPID &password=PASSWORD &action=conversionhistory &uid=ID
Listet alle Konvertierungen und Namensänderungen auf, die der Held gemacht hat.
Example
Your GET-Parameters: ...&uid=123
world: EA worldname: Aberon user: Friar Tack conversion 1166518230 \ new_id="123"; new_name="Friar Tack"; \ new_race_id="14"; new_race="gnome"; \ new_class_id="69"; new_class="priest"; \ old_id="123"; old_name="Gevatter Bernhard"; \ old_race_id="14"; old_race="gnome"; \ old_class_id="69"; old_class="priest"; \ player_id="1"; date_unix="1166518412" date="Heute 9:53"; conversion 1166518230: \ new_id="123"; new_name="Gevatter Bernhard"; \ new_race_id="14"; new_race="gnome"; \ new_class_id="69"; new_class="priest"; \ old_id="21"; old_name="Gevatter Bernhard; \ old_race_id="15"; old_race="Hügelzwerg"; \ old_class_id="30"; old_class="Quacksalber"; \ player_id="1"; date_unix="1166518136" date="Heute 9:55";
Um 9:53 (conversion 1166518412) wurde der Held Gevatter Bernhard konvertiert von Quacksalber in priest.
Um 9:55 (conversion 1166518136) wurde der Held Gevatter Bernhard in Friar Tack umbenannt. Deshalb sind die old_XXX- und new_XXX-Einträge gleich, bis auf old_name bzw. new_name.
Beachte bitte, dass es auch zur gleichen Zeit mehrere Einträge geben kann!
Logs anzeigen: action=log
?partner=SHOPID &password=PASSWORD &action=log
Die letzten Gold-Transaktionen anzeigen (bitte nur 1 mal täglich aufrufen)
Example
"transfer_id"; "time"; "uid"; "gold"; "tax" 111233; 20050717000737; 123; 215; 19 111232; 20050717000612; 123; 550; 44 111231; 20050717000535; 123; -50; 0
- transfer_id: eindeutige ID für die Ein-/Auszahlung
- time: Zeitpunkt der Ein-/Auszahlung
- uid: Sender/Empfänger der Ein-/Auszahlung
- gold: Betrag der Ein-/Auszahlung
- tax: Umsatzsteuer, die bei der Ein-/Auszahlung fällig wurde (der Sender der Transaktion zahlt den Gold+Betrag und die Steuer)
Die Ausgabe erfolgt (anders als bei den anderen Aktionen) im CSV-Format. Hinter jedem Semikolon befindet sich ein Tabulartorzeichen "\t", keine Leerzeichen!
Negative Beträge stehen für Auszahlungen an die Spieler und sind Steuerfrei.
Umfangreiche Logs anzeigen: action=dumplog
?partner=SHOPID &password=PASSWORD &action=dumplog &seconds=1234
Zeigt umfangreiche Informationen an. Zur Zeit ist die Aktion "give" implementiert. Falls der Paremeter SECONDS angegeben ist, wird das Log für die Aktionen der letzten SECONDS Sekunden angezeigt. Falls nicht, für die letzten 24 Stunden.
Die Ausgabe erfolgt im CSV-Format:
"time";"world";"action";"text" "2006-11-07 15:06:22"; "WG"; "give"; "hero 86309: name="Friar Tack", ep=2, gold=3" "2006-11-07 15:12:32"; "WB"; "give"; "group 92635: name="Designerteam", members=1, fame=4"
Hinter jedem Semikolon befindet sich ein Tabulartorzeichen "\t", kein Leerzeichen!
Welten anzeigen: action=worlds
?partner=SHOPID &password=PASSWORD &action=worlds
Gibt eine Liste aller Welten aus. Bitte progammiere dein Geschäft so, dass es _keine_ statische Liste der Welten enthält, sondern die Welten über diese Abfrage ermittelt. Ansonsten muss dein Geschäft bei jeder Änderung bei den Welten angepasst werden, was auf Dauer mit viel Aufwand ist (falls du bei Neustart oder Schließung einer Welt mal im Urlaub bist).
Example
WoD's response:
EA: Aberon WB: Barkladesh WC: Cartegon
Also:
WELTKÜRZEL: WELTNAME WELTKÜRZEL: WELTNAME
WELTKÜRZEL ist der Programminterne Name (maximal 7 Zeichen, also Datenbanktyp VARCHAR(7)).
WELTNAME ist der Langname der Welt, den auch die Spieler sehen (max. 31 Zeichen, VARCHAR(31)).
Details auflisten
?partner=SHOPID &password=PASSWORD &action=worlds &list=details
Mit dem GET-Paramter list=details erhält man zusätzlich eine Liste der Webserver der Welten. Das Ausgabeformat ist leicht geändert:
worldlist: EA,WB,WC name EA: Aberon name WB: Barkladesh name WC: Cartegon server EA: wda1.world-of-dungeons.de,wda2.world-of-dungeons.de server WB: wdb1.world-of-dungeons.de server WC: wdc1.world-of-dungeons.de,wdc2.world-of-dungeons.de,wdc3.world-of-dungeons.de
Also:
worldlist: WELTKÜRZEL,WELTKÜRZEL,... name WELTKÜRZEL: WELTNAME name WELTKÜRZEL: WELTNAME server WELTENKÜRZEL: SERVER,SERVER,... server WELTENKÜRZEL: SERVER,SERVER,... ...
WELTKÜRZEL ist der Programminterne Name (maximal 7 Zeichen, also Datenbanktyp VARCHAR(7)).
WELTNAME ist der Langname der Welt, den auch die Spieler sehen (max. 31 Zeichen, VARCHAR(31)).
SERVER ist der Domainname eines Servers, auf dem die Spieler spielen können.
Duelle ausführen
Besondere Geschäfte erhalten das Recht, Duelle auszuführen. Dann stehen die folgendne Transaktionen zur Verfügung.
Duellinfos: action=duellinfo
?partner=SHOPID &password=PASSWORD &action=duellinfo
Zeigt Informationen zur Austragung von Duelle an, nämlich:
- Preis für einen Ruhmpunkte in Gold
- Verfügbare NPCs
Example
world: EA worldname: Aberon balance: 10000 reward fame: yes reward ep: yes goldfameratio: 25 epfameratio: 20 npc 23: name="Assassine", stufe=3, groupsize=1 npc 77: name="Bolzenfalle", stufe=1, groupsize=1 npc 11: name="Fledermaus, stufe=2, groupsize=5
- world die aktuelle Welt
- balance das aktuelle Guthaben des Geschäftskontos in dieser Welt
- reward fame yes|no gibt an, ob das Geschäft Ruhm als Duellbelohnung vergeben darf.
- reward ep yes|no dito für EPs.
- goldfameratio so viele Goldstücke kostet ein Ruhmpunkt, der als Belohnung vergeben werden kann
- epfameratio so viele Goldstücke kostet ein Erfahrungspunkt (EP) der als Belohnung vergeben werden kann
- npc id: diese NPC (Non-Player-Charakter) ist für ein Duell verfügbar. Dabei werden folgende Infos angegeben:
- name: der Name des NPC
- stufe: ein Indiz dafür wie stark der NPC ist
- groupsize: manche NPCs tauchen in der Regel in Rudeln auf. Dies ist die empfohlene Größe der Gruppe.
Duelle durchführen: action=duellstart
?partner=SHOPID &password=PASSWORD &action=duellstart &type=hero &attacker=id,id,... &defender=id,id,... &goldbonus=NNN &famebonus=NNN &noitemdmg=BIT &comment=base64_text &delay=SECONDS &autostart=SECONDS &npc_at_frontline=id,id,id,... &npc_at_backline=id,id,id,... &npc_at_front=id,id,id,... &npc_at_left=id,id,id,... &npc_at_right=id,id,id,... &npc_at_center=id,id,id,... &npc_at_back=id,id,id,... &npc_at_ambush=id,id,id,... &npc_def_frontline=id,id,id,... &npc_def_backline=id,id,id,... &npc_def_front=id,id,id,... &npc_def_left=id,id,id,... &npc_def_right=id,id,id,... &npc_def_center=id,id,id,... &npc_def_back=id,id,id,... &npc_def_ambush=id,id,id,... &msg_title_a=base64_text &msg_title_d=base64_text &msg_intro_a=base64_text &msg_intro_d=base64_text &msg_success_a=base64_text &msg_success_d=base64_text &msg_failure_a=base64_text &msg_failure_d=base64_text &msg_draw_a=base64_text &msg_draw_d=base64_text
- type
| Parameter | Werte | Beschreibung |
|---|---|---|
| type |
hero group |
Gibt an, ob ein Heldenschaukampf oder ein Gruppenschaukampf gestartet wird. |
| attacker
(Optional¹) |
IDs oder base64-encodierte Namen von Helden bzw. Gruppen |
Bestimmt die Herausforderer. Bei jedem Helden bzw. jeder Gruppe wird geprüft, ob sie teilnehmen kann. Falls nicht, wird das Duell mit einer Fehlermeldung abgebrochen. Es kann eine ID oder der mit der Funktion base64_encode() codierte Name angegeben werden. |
| defender
(Optional¹) |
IDs von Helden bzw. Gruppen |
Bestimmt die Verteidiger. Bei jedem Helden bzw. jeder Gruppe wird geprüft, ob sie teilnehmen kann. Falls nicht, wird das Duell mit einer Fehlermeldung abgebrochen. |
| goldbonus
(Optional) |
Goldbetrag |
Jeder Held der Gewinnerseite erhält diesen Goldbetrag. Das Gold wird bei Start des Duells vom Geschäftskonto abgebucht. Sollte nicht genug Gold auf dem Geschäftskonto vorhanden sein, wird eine Fehlermeldung zurückgegeben. Jedes Geschäft, das Duelle veranstalten darf, darf (sein) Gold als Belohnung vergeben. |
| famebonus
(Optional) |
Ruhmpunkte |
Diese Zahl an Ruhmpunkten erhält jeder Held der Gewinnerseite. Für jeden Ruhmpunkt wird ein gewisser Goldbetrag vom Geschäftskonto abgebucht. Siehe Parameter goldfameratio. Sollte nicht genug Gold auf dem Geschäftskonto vorhanden sein oder das Geschäft keinen Ruhm verteilen dürfen, wird eine Fehlermeldung zurückgegeben. |
| epbonus
(Optional) |
EPs |
Diese Zahl an Erfahrungspunkten erhält jeder Held der Gewinnerseite. Für jeden EP wird ein gewisser Goldbetrag vom Geschäftskonto abgebucht. Siehe Parameter goldepratio. Sollte nicht genug Gold auf dem Geschäftskonto vorhanden sein oder das Geschäft keine EP verteilen dürfen, wird eine Fehlermeldung zurückgegeben. |
| noitemdmg
(Optional) |
0 1 |
Falls 0 (Standard), sind bei dem Duell Gegenstandsschäden eingeschaltet. D.h. die Ausrüstung der Helden kann Schaden im Kampf nehmen. Falls 1, kann die Ausrüstung nicht beschädigt werden. Anwendungen bei Verbrauchsgütern werden in jedem Fall abgebucht. |
| comment |
Text |
Dieser Base64-codierter Text wird beim Duell unter Liga/Turnier angezeigt. Siehe PHP-Funktion base64_encode(). |
| autostart
(Optional) |
INT |
Falls angegeben und >0, wird das Duell nach dieser Zeit (in Sekunden) automatisch durchgeführt - mit den Helden, die das Duell bis dahin angenommen haben. |
| delay
(Optional) |
INT |
Falls angegeben und >0, startet das Duell erst nach dieser Zeit (in Sekunden), nachdem alle Teilnehmer angenommen haben. |
| npc_at_POSITION
(Optional¹) |
IDs von NPCs |
NPCs auf Seite der Angreifer. Mögliche Werte für POSITION sind:
|
| npc_def_POSITION
(Optional¹) |
IDs von NPCs | dito für NPCS auf Seite der Verteidiger. |
| creator_hero
(Optional) |
text/int | ID oder mit der PHP-Funktion base64_encode() codierte Name des Helden, der als Ersteller beim Duell eingetragen wird. Dieser Held muss das Recht duels haben (siehe Parameter permissions beim Login.
|
| msg_title_a
(Optional) |
base64_text | Base64-codierte Überschrift, den beim Herausforderer über den Details zu diesem Duell angezeigt wird. |
| msg_title_d
(Optional) |
base64_text | Base64-codierte Überschrift, den beim 'Verteidiger' über den Details zu diesem Duell angezeigt wird. Siehe PHP-Funktion base64_encode(). |
| msg_intro_a
(Optional) |
base64_text | Base64-codierter Einleitungstext, den die Herausforderer in den Duelldetails vor dem Kampf sehen. BBCode ist möglich. Siehe PHP-Funktion base64_encode(). |
| msg_intro_d
(Optional) |
base64_text | Base64-codierter Einleitungstext, den die Verteidiger in den Duelldetails vor dem Kampf sehen. BBCode ist möglich. Siehe PHP-Funktion base64_encode(). |
| msg_success_a
(Optional) |
base64_text | Base64-codierter Abschlusstext, den die Herausforderer in den Duelldetails nach dem Kampf sehen, sofern sie gewonnen haben. BBCode ist möglich. Siehe PHP-Funktion base64_encode(). |
| msg_success_d
(Optional) |
base64_text | Base64-codierter Abschlusstext, den die Verteidiger in den Duelldetails nach dem Kampf sehen, sofern sie gewonnen haben. BBCode ist möglich. Siehe PHP-Funktion base64_encode(). |
| msg_failure_a
(Optional) |
base64_text | Abschlusstext, den die Herausforderer in den Duelldetails nach dem Kampf sehen, sofern sie verloren haben. BBCode ist möglich. Siehe PHP-Funktion base64_encode(). |
| msg_failure_d
(Optional) |
base64_text | Abschlusstext, den die Verteidiger in den Duelldetails nach dem Kampf sehen, sofern sie verloren haben. BBCode ist möglich. Siehe PHP-Funktion base64_encode(). |
| msg_draw_a
(Optional) |
base64_text | Abschlusstext, den die Herausforderer in den Duelldetails nach dem Kampf sehen, sofern es ein Unentschieden gab. Dies ist bei WoD zurzeit nicht implemnentiert. BBCode ist möglich. Siehe PHP-Funktion base64_encode(). |
| msg_draw_d
(Optional) |
base64_text | Abschlusstext, den die Verteidiger in den Duelldetails nach dem Kampf sehen, sofern es ein Unentschieden gab. Dies ist bei WoD zurzeit nicht implemnentiert. BBCode ist möglich. Siehe PHP-Funktion base64_encode(). |
¹ Damit das Duell starten kann, müssen Angreifer und Verteidiger vorhanden sein. Dies können jeweils Helden und/oder NPCs sein. Examplesweise kann ein Duell Held gegen Held, Held gegen Ork oder Ork gegen Ork stattfinden.
Beim Start eines Duells gelten folgende Regeln:
- Bei Helden-Schaukämpfen: Nur Helden, die in den letzten 7 Tagen das Geschäft betreten haben, nehmen am Schaukämpf teil. Wenn ein Held diese Regel nicht erfüllt, wird der Schaukampf mit einer Fehlermeldung abgebrochen.
- Ein Geschäft darf einen bestimmten Helden nur höchstens alle 15 Stunden zu einem Schaukampf einladen. In der Regel sollte jeder maximal einmal täglich an einem Schaukampf durch ein bestimmtes Geschäft teilnehmen.
- Bei Gruppen-Schaukämpfen gilt diese Regelung analog: Der Gruppenverwalter oder einer seiner Stellvertreter muss in den letzten 7 Tagen das Geschäft besucht haben.
- Wie bei den Helden gilt für jede Gruppe eine Pause von 15 Stunden, wobei in der Regel nur einmal täglich ein Duell stattfinden sollte.
- Nur aktive Helden nehmen an den Kämpfen teil.
- Clan-Duelle sind nicht möglich.
- Alle Duelle werden automatisch gestartet. Eine Zustimmung des Helden ist nicht notwendig.
Example
Your GET-Parameters: &type=hero&attacker=21,22,23&npc_def_frontline=71,72,73&gold=50
WoD's response:
world: EA worldname: Aberon cost: 150 duellid: 1234 balance: 1550 status: ok starttime: 1161702592
In den Duell treten 3 Helden gegen 3 NPCs. Der Gewinner erhält je 50 Goldstücke. Es kann auch Ruhm vergeben werden, der dem Geschäft in Gold berechnet wird - siehe goldfameratio.
Die Kosten sind immer im Voraus zu entrichten und werden vom Geschäftskonto abgebucht. Die Kosten richten sie nach der größeren Heldengruppe. Hier fallen die Kosten für 3 Helden an.
Falls auf Angreifer- und Verteigerseite nicht gleich viele Helden sind, werden die Kosten nach der größeren Heldenanzahlberechnet.
Die Kosten fallen auch dann an, wenn die kleinere Heldengruppe gewinnt. Deshalb kann es sinnvoll sein, Prämien innerhalb des WoD-Geschäfts auszuschütten.
starttime ist die Zeit, zu der das Duell frühestens startet (wenn alle angenommen haben).
Duellstatus abfragen: action=duellstatus
?partner=SHOPID &password=PASSWORD &action=duellstatus &duellid=ID &report=1
Gibt den Status für das angebene Duell aus (sofern es von dem angegebenen Geschäft gestartet worden ist).
Example 1
Your GET-Parameters: ..&action=duellstatus&duellid=1234
WoD's response:
- Falls das Duell noch nicht durchgeführt wurde:
world: EA worldname: Aberon duellid: 1234 status: waiting starttime: 1161702592 changed: Heute 19:51 attacker_hero 21: name="Friar Tack", status="accepted" attacker_hero 22: name="The Crusher", status="accepted" attacker_hero 23: name="Pale the Innocent", status="accepted"
- status:
- waiting: warten darauf, dass alle annehmen
- ready: das Duell wird in den nächsten Sekunden durchgeführt
- finished: das Duell wurde durchgeführt und die Kampfberichte liegen vor
- cancelled: das Duell wurde abgebrochen
- startime: falls beim Duellstart der Parameter delay benutzt wurde, wird die Zeit des Starts (in Sekunden nach dem 1.1.1970, wie sie die PHP-Funktion time() zurückgibt) angegeben.
- attacker_hero NNN: Held, der als Herausforderer eingeladen wurde. NNN ist die ID des Helden.
- defender_hero NNN: Held, der als Verteidiger eingeladen wurde. NNN ist die ID des Helden.
- attacker_group NNN: Gruppe, die auf Herausfordererseite eingeladen wurde. NNN ist die ID der Gruppe.
- defender_group NNN: Gruppe, die auf Verteidigerseite eingeladen wurde. NNN ist die ID der Gruppe.
- Dabei gibt es Datenfelder:
- name den Namen des Helden bzw. der Gruppe
- status entweder invited (der Held bzw. die Gruppe hat noch nicht reagiert) oder accepted (hat angenommen) bzw. rejected (hat abgelehnt)
- status:
- Wenn der Sieger feststeht:
world: EA worldname: Aberon duellid: 1234 status: finished winner: attacker round limit reached: no changed: Heute 19:59 attacker_hero 21: name="Friar Tack", status="accepted" attacker_hero 22: name="The Crusher", status="accepted" attacker_hero 23: name="Pale the Innocent", status="accepted"
oder
world: EA worldname: Aberon duellid: 1234 status: finished winner: defender round limit reached: no changed: Heute 19:59 attacker_hero 21: name="Friar Tack", status="accepted" attacker_hero 22: name="The Crusher", status="accepted" attacker_hero 23: name="Pale the Innocent", status="accepted"
Falls der Verteidiger gewinnt, weil nach Erreichen des Rundenlimits noch kein Sieger feststeht, wird angegeben:
round limit reached: yes
Bei anderen Spieltypen als WoD (z.B. bei Starmarines), entfällt der Parameter round limit reached. Statt dessen endet ein Duell bei Erreichen des Rundenlimits unentschieden:
winner: draw
Example 2
Your GET-Parameters: ..&action=duellstatus&duellid=1234&report=1
WoD's response:
world: EA worldname: Aberon duellid: 1234 status: finished winner: attacker changed: Heute 19:51 attacker_hero 21: name="Friar Tack", status="accepted" attacker_hero 22: name="The Crusher", status="accepted" attacker_hero 23: name="Pale the Innocent", status="accepted" statistic attacker: "PGgyPjxhIG5hbWU9IiM4NDY4NCIgaHJlZj0iLi4vaGVyby9w ... cm=" statistic defender: "PGgyPjxhIG5hbWU9IiM4NTA2MCIgaHJlZj0iLi4vaGVyby9w ... C4K" itemlist attacker: "PHRhYmxlPgo8dHIgaGVpZ2h0PSIxMCI+PHRkPjwvdGW49IjIi ... go=" itemlist defender: "PHRhYmxlPgo8dHIgaGVpZ2h0PSIxMCI+PHRkPjwvdGQ+PC90c ... g==" report round 1: "PGhyPgo8cCBjbGFzcz0iUkVQX1JVTkRFX1VFQkVSU0NIUklGV ... c2l" report round 2: "PJVTkRFX1VFQkVSU0NIUGhyPgo8cCBjb1klGVGFzcz0iUkVQX ... a8=" report round 3: "PQkVSJVTkRFVFU0NIUGhyX1cz0iUkVQXPgo8cCBjb1klGVGFz ... b==" number of rounds: 3
- statistic attacker: die Übersicht der Statistik (Angriffe, Paraden) des Angreifers als Base64-encodierter HTML-Code
- statistic defender: dito für den Verteidiger
- itemlist attacker: die Liste der Gegenstände des Angreifers
- itemlist defender: dito für den Verteidiger
- report round N: der detaillierte Kampfbericht für die N. Runde. Es wird wenigstens eine Runde (N=1) angezeigt. Die Zahl der Runden ist nicht begrenzt.
- number of rounds: Anzahl der Runden, die gekämpft worden sind.
Um den HTML-Code zu erhalten, wird die PHP-Funktion base64_decode benötigt ($statistic_attacker_encoded enthält z.B. den Wert von statistic attacker):
$statistic_attacker_html = base64_decode( str_replace( ' ', '+', $statistic_attacker_encoded ) );
Dieser HTML-Code kann direkt in die Webseite eingebaut werden. Damit der HTML-Code korrekt dargestellt wird, sollte noch folgender HTML- und Javascript-Code eingebunden werden (bitte den Server scripts.wod-bazar.de nicht ändern):
- im HTML-Header
<link rel="stylesheet" type="text/css" href="http://forum.world-of-dungeons.de/wod/design/bright/styles.css">
<script language="javascript" src="http://scripts.wod-bazar.de/javascript/my_jump.js" type="text/javascript"></script>
<script language="javascript" src="http://scripts.wod-bazar.de/javascript/wodtooltip.js" type="text/javascript"></script>
- im Body-Tag
<body onLoad="wodToolTipInit(); wodSetHttpHost( 'WOD_SERVER');">
'SERVER' ist hierbei der Web-Server, der beim Betreten des Geschäfts als Parameter $_GET['server'] übergeben wurde, z.B. 'a1.world-of-dungeons.de'. Alternativ kann als weitere Option 'http://' oder 'https://' angegeben werden.
Damit die Links im Bericht funktionieren, muss der Spieler Javascript und Cookies aktiviert haben.
Duell abbrechen: action=duellcancel
?partner=SHOPID &password=PASSWORD &action=duellcancel &duellid=ID
Das Duell wird abgebrochen. Nur Duelle mit Status waiting können abgebrochen werden.
Duelle, bei Deinen ein Teilnehmer absagt, werden automatisch abgebrochen (es sei denn, über den Parameter delay wurde eine Startzeit festgelegt - dann findest das Duell zur Startzeit statt mit den Teilnehmern, die zugesagt haben).
Duellbelohnungen verteilen: action=give
?partner=SHOPID
&password=PASSWORD
&action=give
&what=NNNep:hUID,NNNep:hUID,...,NNNgold:hUID,NNNgold:hUID,...,NNNfame:hUID,NNNfame:hUID,... \
NNNep:gGID,NNNep:gGID,...,NNNgold:gGID,NNNgold:gGID,...,NNNfame:gGID,NNNfame:gGID,...
Verteilt EP, Gold und/oder Ruhm an verschiedene Helden oder Gruppen.
NNN steht für die Menge.
UID für die ID eines Helden oder für den base64-codierten Namen eines Helden.
GID für die ID einer Gruppe oder für den base64-codierten Namen einer Gruppe.
Das Gold wird nicht vom Konto des Geschäfts abgezogen.
Example
Your GET-Parameters: ..&action=give&what=100ep:h123,50gold:h123,10fame:h123,10fame:g234
WoD's response:
world: EA worldname: Aberon hero 123: name="Friar Tack", ep=100, gold=50, fame=10 group 234: name="Die letzten Helden", members=10, fame=10
Ausrufer
Dein WoD-Geschäft kann auch im Ausrufer Werbung machen. Dies kostet allerdings Gold.
Nachricht senden: action=ticker
?partner=SHOPID &password=PASSWORD &action=ticker &msg=BASE64_ENC_MSG &pricelimit=GOLD
Zeigt eine Nachricht im Ausrufer an. Der Preis ist variabel. Die Nachricht wird nur angezeigt, wenn der Preis nicht über dem Preislimit liegt und das Geschäft genug Gold hat, den Preis zu zahlen.
Variiere die Texte dabei bitte. Sonst empfinden die Spieler die Nachrichten schnell als SPAM.
| Parameter | Werte | Beschreibung |
|---|---|---|
| msg | Text |
Die mittels der PHP-Funktion base64_encode() codierte Nachricht. Ausrufer-Nachrichten müssen einzeilig sein. Verwende den bbCode [shop:...], um einen Link auf das Geschäft zu erstellen. Du findest den bbCode unter Taverne->Geschäfte. Oder verwende [shop] für ein Link auf das Geschäft. |
| pricelimit | Goldbetrag |
Die Nachricht wurde nur angezeigt, wenn der Preis unter diesem Preiselimit liegt. Beachte bitte, dass Nachrichten sehr schnell sehr teuer werden, wenn das Geschäft mehrere Nachrichten hintereinander anzeigen läßt. |
Example 1
Your GET-Parameters: ...msg=QmVzdWNoZSBbc2hvcF0h&pricelimit=500
status: ok price: 20 msg limit in 24h: 4 msgs sent in 24h: 2
Die Nachricht wurde gesendet und kostet 20 Goldstücke. Es wurden (einschl. der gerade gesendeten Nachricht) in den letzten 24 Stunden 2 Nachrichten gesendet. 4 Nachrichten dürfen ingesgesamt in 24 Stunden geschickt werden.
Example 2
Your GET-Parameters: ...msg=QmVzdWNoZSBbc2hvcF0h&pricelimit=500 (wie oben)
status: not sent reason: pricelimit to low price: 600 msg limit in 24h: 4 msgs sent in 24h: 2
Deine Nachricht wurde nicht gesendet, da der Preis über dem Preislimit liegt.
Example 3
Your GET-Parameters: ...msg=QmVzdWNoZSBbc2hvcF0h&pricelimit=500 (wie oben)
status: not sent reason: message limit reached price: 400 msg limit in 24h: 4 msgs sent in 24h: 4
Deine Nachricht wurde nicht gesendet, da schon vier Nachrichten in 24 Stunden gesendet worden sind.
Example 4
Your GET-Parameters: ...msg=QmVzdWNoZSBbc2hvcF0h&pricelimit=500 (wie oben)
status: not sent reason: not enough gold price: 400 msg limit in 24h: 4 msgs sent in 24h: 2
Deine Nachricht wurde nicht gesendet, da das Geschäft nicht genug Gold hat, den Preis zu zahlen.
Example 5
Your GET-Parameters: ...msg=QmVzdWNoZSBbc2hvcF0h&pricelimit=500 (wie oben)
status: not sent reason: banned ban reason: 01.10.2007 17:10: all other shops are bad banned by: root price: 400 msg limit in 24h: 4 msgs sent in 24h: 2
Deine Nachricht wurde nicht gesendet, da ein Admin das Geschäft vom Ausrufer gebannt hat.
Resetting a game world
When a game world is resetted, during the reset a single call to the reset url of your shop is made.
Your reset script needs to check, if there is really a reset.
You do this by the following parameter:
Check for world reset: action=checkreset
?action=checkreset &world=WORLD
Please send this request to server barkladesh.world-of-dungeons.de (for all languages/all game types), z.B.: http://barkladesh.world-of-dungeons.de/wod/spiel/wodpartner/transfer.php?action=checkreset&world=WORLD
Replace WORLD by the key of the world beeing resetted. E.g.: EA für Aberon (1. world WoD.net), WD for Darakesh (4. world of WoD.de) MA (1. world von Starmarines.de) usw.
Note that this action requires noe authentication.
If the given world is beeing resetted, the result is:
status: ok
Then your shop has to reset the accounts of all heroes of the gieven world.
If the world is not beeing resetted, you get this result:
status: ERROR
Then you shop should do nothing.
Test your script
If you use DEMO as WORLD, always status:ok is returned, e.g.: http://barkladesh.world-of-dungeons.de/wod/spiel/wodpartner/transfer.php?action=checkreset&world=DEMO