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.

Contenido

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

  • frontline der NPC steht (zufällig ermittelt) auf Kampfposition Vorne, Linke Seite oder Rechte Seite
  • backline der NPC steht (zufällig ermittelt) auf Kampfposition Zentrum oder Hinten
  • front der NPC steht auf Kampfposition Vorne
  • left Linke Seite
  • right Rechte Seite
  • center Zentrum
  • back Hinten
  • ambush Im Rücken
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)
  • 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

Véase también

Herramientas personales