Hallo MMORPG-Core,
in diesem sicherlich längeren Tutorial werde ich euch soviel ich kann von der World Dialog alles erklären.
Sollte ich mehr später rausbekommen, wird es natürlich aktualisiert.
_____________________________________
Dann fangen wir mal an.
Index
Was macht die World Dialog ?
Spoiler anzeigen
Welche Funktionen gibt es ?
Spoiler anzeigen
Wie kann ich NPC's einfügen ?
Spoiler anzeigen
Wie weise ich einem NPC Funktionen hinzu ?
Spoiler anzeigen
Einem NPC kann man mit der Funktion AddKey( ... ) funktionen zu weisen, wenn man aber eigene Texte da haben will und den Key für die funktion ändern will, kann man AddKey( ..., ... ) mit den 2 Parametern nehmen.
AddKey( DWORD szWord , DWORD szKey );
v
AddKey( n'te Zeile -1 , Key );
Sagen wir euer Text befindet sich in Zeile 1501, dann müsst ihr als Zeile 1500 nehmen. Und key könnt ihr eine der Funktionen nehmen. Im beispiel werde ich 43 nehmen. So wäre dies dann:
AddKey( 1500, 43 );
Wenn ihr nun in der WorldDialog.txt in Zeile 1501 "Hallo" steht, wird beim klick darauf die Funktion in Key 43 aufgerufen.
Nehmen wir uns mal Key 43 vor und machen da mal einen level up, wenn man es anklickt.
Alles anzeigen
Nun würd dies bei jedem klick darauf ein level up machen, wenn man allerdings verhindern will, dass es über das Maximale level geht, dann macht man eine If abfrage.
Alles anzeigen
In diesem beispiel soll 179 das Maximale Level darstellen.
Beispiele für Funktionen
Spoiler anzeigen
Say( DWORD szMsg )
GetPlayerLvl()
GetPlayerJob()
AddExp( int nExp )
CreateItem( DWORD dwID, int nCount)
AddGold(int nGold)
Spoiler anzeigen
Man kann damit Penya hinzufügen oder abziehen.
Alles anzeigen
RemoveItem(DWORD dwID, int nCount )
GetItemNum( DWORD dwID )
RemoveAllItem( DWORD dwID )
ChangeJob(int nJob )
GetPlayerSex()
AddKey( DWORD szWord )
AddKey( DWORD szWord , DWORD szKey )
AddKey( DWORD szWord , DWORD szKey, int nParam )
Spoiler anzeigen
Siehe oben im Thread bei NPC hinzufügen.
IsParty()
IsPartyMaster()
Spoiler anzeigen
Das selbe wie IsParty() nur das man hier Leader abfragt
IsGuild()
Spoiler anzeigen
Ist das selbe wie IsParty(), nur das hier nach einer Guild abgefragt wird.
IsGuildMaster()
Spoiler anzeigen
Ist das Selbe wie IsGuild(), nur das hier der Guild Master abgefragt wird.
CreateGuild()
Spoiler anzeigen
Erstellt eine Guilde
DestroyGuild()
Spoiler anzeigen
Löscht eine Guilde
GetLang()
Exit()
Spoiler anzeigen
Schließt das Dialogfenster.
GetPlayerExpPercent()
SetLevel( int nSetLevel )
AddGPPoint( int nAddGPPoint )
DO NOT COPY & PASTE
in diesem sicherlich längeren Tutorial werde ich euch soviel ich kann von der World Dialog alles erklären.
Sollte ich mehr später rausbekommen, wird es natürlich aktualisiert.
_____________________________________
Dann fangen wir mal an.
Index
- Was macht die World Dialog ?
- Welche Funktionen gibt es ?
- Wie kann ich NPC's einfügen ?
- Wie weise ich einem NPC Funktionen hinzu ?
- Beispiele für Funktionen.
Was macht die World Dialog ?
Die WorldDialog dient dazu, um bestimmte sachen in NPC's zu Programieren, damit diese bestimmte sachen machen, das erstellen einer Guild oder Job Changes nach Quests (oder auch ohne Quest).
Mit der WorldDialog kann man aufjeden fall einiges machen.
Mit der WorldDialog kann man aufjeden fall einiges machen.
Welche Funktionen gibt es ?
Hierzu hab ich mal eine Tabelle erstellt, die die Funktionen alle (die ich kenne) erklärt.
Auf die Nutzung der Funktionen gehe ich später ein.
[table="head"]Funktion|Beschreibung
Say( DWORD szMsg )| Lässt den NPC im Dialog etwas sagen
GetPlayerLvl()|Ermittelt das Spieler Level
GetPlayerJob()|Ermittelt den Spieler Job
SetQuestState(int nQuest, int n)|Setzt einen Quest Status
GetQuestState(int nQuest)|Ermittelt nach die Quest Status
SetQuest(int nQuest)|Setzt eine Quest
RemoveQuest(int nQuest)|Entfernt eine Quest
AddExp( int nExp )|Fügt EXP hinzu
CreateItem( DWORD dwID, int nCount)|Erstellt ein Item
AddGold(int nGold)|Fügt Penya hinzu
RemoveGold( int nGold )|Entfernt Penya
GetPlayerGold()|Fragt nach der Penya
RemoveItem(DWORD dwID, int nCount )|Entfernt ein Item
GetLocalEventState( int nEvent )|Fragt nach dem Event State
InitStat()|Löscht alle Stat werte und gibt die Punkte wieder
InitStr()|Löscht alle STR werte und gibt die Punkte wieder
InitSta()|Löscht alle STA werte und gibt die Punkte wieder
InitDex()|Löscht alle DEX werte und gibt die Punkte wieder
InitInt()|Löscht alle INT werte und gibt die Punkte wieder
GetItemNum( DWORD dwID )|Fragt nach der Anzahl eines Items
RemoveAllItem( DWORD dwID )|Entfernt alle Items nach ID
ChangeJob(int nJob )|Ändert die Job Klasse
GetPlayerSex()|Fragt nach dem geschlecht des Spielers
AddKey( DWORD szWord )|Fügt einen Key hinzu
AddKey( DWORD szWord , DWORD szKey )|Fügt einen Key hinzu
AddKey( DWORD szWord , DWORD szKey, int nParam )|Fügt einen Key hinzu
IsParty()|Fragt nach der Party (Bool Wert)
IsPartyMaster()|Fragt nach dem Leader der Party (Bool Wert)
IsGuild()|Fragt nach der Guild ab (Bool Wert)
IsGuildMaster()|Fragt nach dem Leader der Guild (Bool Wert)
CreateGuild()|Erstellt eine Guild
DestroyGuild()|Löscht eine Guild
GetLang()|Fragt nach der LANG
Exit()|Schließt das Dialog Fenster
GetPlayerExpPercent()|Fragt nach der EXP des Spielers (9999 = 99.99%)
SetLevel( int nSetLevel )|Setzt das Spieler Level
AddGPPoint( int nAddGPPoint )|Fügt GP Punkte hinzu[/table]
Auf die Nutzung der Funktionen gehe ich später ein.
[table="head"]Funktion|Beschreibung
Say( DWORD szMsg )| Lässt den NPC im Dialog etwas sagen
GetPlayerLvl()|Ermittelt das Spieler Level
GetPlayerJob()|Ermittelt den Spieler Job
SetQuestState(int nQuest, int n)|Setzt einen Quest Status
GetQuestState(int nQuest)|Ermittelt nach die Quest Status
SetQuest(int nQuest)|Setzt eine Quest
RemoveQuest(int nQuest)|Entfernt eine Quest
AddExp( int nExp )|Fügt EXP hinzu
CreateItem( DWORD dwID, int nCount)|Erstellt ein Item
AddGold(int nGold)|Fügt Penya hinzu
RemoveGold( int nGold )|Entfernt Penya
GetPlayerGold()|Fragt nach der Penya
RemoveItem(DWORD dwID, int nCount )|Entfernt ein Item
GetLocalEventState( int nEvent )|Fragt nach dem Event State
InitStat()|Löscht alle Stat werte und gibt die Punkte wieder
InitStr()|Löscht alle STR werte und gibt die Punkte wieder
InitSta()|Löscht alle STA werte und gibt die Punkte wieder
InitDex()|Löscht alle DEX werte und gibt die Punkte wieder
InitInt()|Löscht alle INT werte und gibt die Punkte wieder
GetItemNum( DWORD dwID )|Fragt nach der Anzahl eines Items
RemoveAllItem( DWORD dwID )|Entfernt alle Items nach ID
ChangeJob(int nJob )|Ändert die Job Klasse
GetPlayerSex()|Fragt nach dem geschlecht des Spielers
AddKey( DWORD szWord )|Fügt einen Key hinzu
AddKey( DWORD szWord , DWORD szKey )|Fügt einen Key hinzu
AddKey( DWORD szWord , DWORD szKey, int nParam )|Fügt einen Key hinzu
IsParty()|Fragt nach der Party (Bool Wert)
IsPartyMaster()|Fragt nach dem Leader der Party (Bool Wert)
IsGuild()|Fragt nach der Guild ab (Bool Wert)
IsGuildMaster()|Fragt nach dem Leader der Guild (Bool Wert)
CreateGuild()|Erstellt eine Guild
DestroyGuild()|Löscht eine Guild
GetLang()|Fragt nach der LANG
Exit()|Schließt das Dialog Fenster
GetPlayerExpPercent()|Fragt nach der EXP des Spielers (9999 = 99.99%)
SetLevel( int nSetLevel )|Setzt das Spieler Level
AddGPPoint( int nAddGPPoint )|Fügt GP Punkte hinzu[/table]
Wie kann ich NPC's einfügen ?
Um einen NPC Einzufügen, muss man bestimmte sachen beachten.
Hier mal ein Beispiels NPC, den ihr als Vorlage nehmen könnt:
Dies ist der NPC Name, den ihr in der Character.inc stehen habt.
Dies sind die Keys, die müssen so bleiben.
Dieser Eintrag kommt in die NpcScrip.cpp
Alles anzeigen
In die NpcScript.h folgendes:
Alles anzeigen
Und in NpcScripHelper.cpp das hier:
Alles anzeigen
- Einen NPC Namen nehmen, den es noch nicht gibt.
- Auf Groß-Klein Schreibweise achten.
Hier mal ein Beispiels NPC, den ihr als Vorlage nehmen könnt:
Dies ist der NPC Name, den ihr in der Character.inc stehen habt.
Dies sind die Keys, die müssen so bleiben.
Dieser Eintrag kommt in die NpcScrip.cpp
Quellcode
- void CNpcScript::[COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_0[/COLOR]()
- {
- Speak( NpcId(), 535 );
- SetScriptTimer( 15 );
- }
- void CNpcScript::[COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_1[/COLOR]()
- {
- switch( Random( 3 ) )
- {
- case 0: PlaySound( 536 ); break;
- case 1: PlaySound( 537 ); break;
- case 2: PlaySound( 538 ); break;
- }
- LaunchQuest();
- }
- void CNpcScript::[COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_2[/COLOR]()
- {
- }
- void CNpcScript::[COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_3[/COLOR]()
- {
- }
- void CNpcScript::[COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_4[/COLOR]()
- {
- }
- void CNpcScript::[COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_5[/COLOR]()
- {
- }
- void CNpcScript::[COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_6[/COLOR]()
- {
- }
- void CNpcScript::[COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_7[/COLOR]()
- {
- }
- void CNpcScript::[COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_8[/COLOR]()
- {
- }
- void CNpcScript::[COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_9[/COLOR]()
- {
- }
- void CNpcScript::[COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_26[/COLOR]()
- {
- }
- void CNpcScript::[COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_42[/COLOR]()
- {
- }
- void CNpcScript::[COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_43[/COLOR]()
- {
- }
- void CNpcScript::[COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_10[/COLOR]()
- {
- switch( Random( 2 ) )
- {
- case 0: PlaySound( 552 ); break;
- case 1: PlaySound( 553 ); break;
- }
- Speak( NpcId(), 554 );
- Exit();
- }
Quellcode
- void [COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_0[/COLOR]();
- void [COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_1[/COLOR]();
- void [COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_2[/COLOR]();
- void [COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_3[/COLOR]();
- void [COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_4[/COLOR]();
- void [COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_5[/COLOR]();
- void [COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_6[/COLOR]();
- void [COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_7[/COLOR]();
- void [COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_8[/COLOR]();
- void [COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_9[/COLOR]();
- void [COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_26[/COLOR]();
- void[COLOR=RoyalBlue] BEISPIEL_NPC[/COLOR][COLOR=Red]_42[/COLOR]();
- void [COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_43[/COLOR]();
- void [COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_10[/COLOR]();
Quellcode
- {"[COLOR=deepskyblue]BEISPIEL_NPC[/COLOR][COLOR=red]_0[/COLOR]", &CNpcScript::[COLOR=deepskyblue]BEISPIEL_NPC[/COLOR][COLOR=red]_0[/COLOR]},
- {"[COLOR=deepskyblue]BEISPIEL_NPC[/COLOR][COLOR=red]_1[/COLOR]", &CNpcScript::[COLOR=deepskyblue]BEISPIEL_NPC[/COLOR][COLOR=red]_1[/COLOR]},
- {"[COLOR=deepskyblue]BEISPIEL_NPC[/COLOR][COLOR=red]_2[/COLOR]", &CNpcScript::[COLOR=deepskyblue]BEISPIEL_NPC[/COLOR][COLOR=red]_2[/COLOR]},
- {"[COLOR=deepskyblue]BEISPIEL_NPC[/COLOR][COLOR=red]_3[/COLOR]", &CNpcScript::[COLOR=deepskyblue]BEISPIEL_NPC[/COLOR][COLOR=red]_3[/COLOR]},
- {"[COLOR=deepskyblue]BEISPIEL_NPC[/COLOR][COLOR=red]_4[/COLOR]", &CNpcScript::[COLOR=deepskyblue]BEISPIEL_NPC[/COLOR][COLOR=red]_4[/COLOR]},
- {"[COLOR=deepskyblue]BEISPIEL_NPC[/COLOR][COLOR=red]_5[/COLOR]", &CNpcScript::[COLOR=deepskyblue]BEISPIEL_NPC[/COLOR][COLOR=red]_5[/COLOR]},
- {"[COLOR=deepskyblue]BEISPIEL_NPC[/COLOR][COLOR=red]_6[/COLOR]", &CNpcScript::[COLOR=deepskyblue]BEISPIEL_NPC[/COLOR][COLOR=red]_6[/COLOR]},
- {"[COLOR=deepskyblue]BEISPIEL_NPC[/COLOR][COLOR=red]_7[/COLOR]", &CNpcScript::[COLOR=deepskyblue]BEISPIEL_NPC[/COLOR][COLOR=red]_7[/COLOR]},
- {"[COLOR=deepskyblue]BEISPIEL_NPC[/COLOR][COLOR=red]_8[/COLOR]", &CNpcScript::[COLOR=deepskyblue]BEISPIEL_NPC[/COLOR][COLOR=red]_8[/COLOR]},
- {"[COLOR=deepskyblue]BEISPIEL_NPC[/COLOR][COLOR=red]_9[/COLOR]", &CNpcScript::[COLOR=deepskyblue]BEISPIEL_NPC[/COLOR][COLOR=red]_9[/COLOR]},
- {"[COLOR=deepskyblue]BEISPIEL_NPC[/COLOR][COLOR=red]_26[/COLOR]", &CNpcScript::[COLOR=deepskyblue]BEISPIEL_NPC[/COLOR][COLOR=red]_26[/COLOR]},
- {"[COLOR=deepskyblue]BEISPIEL_NPC[/COLOR][COLOR=red]_42[/COLOR]", &CNpcScript::[COLOR=deepskyblue]BEISPIEL_NPC[/COLOR][COLOR=red]_42[/COLOR]},
- {"[COLOR=deepskyblue]BEISPIEL_NPC[/COLOR][COLOR=red]_43[/COLOR]", &CNpcScript::[COLOR=deepskyblue]BEISPIEL_NPC[/COLOR][COLOR=red]_43[/COLOR]},
- {"[COLOR=deepskyblue]BEISPIEL_NPC[/COLOR][COLOR=red]_10[/COLOR]", &CNpcScript::[COLOR=deepskyblue]BEISPIEL_NPC[/COLOR][COLOR=red]_10[/COLOR]},
Wie weise ich einem NPC Funktionen hinzu ?
Einem NPC kann man mit der Funktion AddKey( ... ) funktionen zu weisen, wenn man aber eigene Texte da haben will und den Key für die funktion ändern will, kann man AddKey( ..., ... ) mit den 2 Parametern nehmen.
AddKey( DWORD szWord , DWORD szKey );
v
AddKey( n'te Zeile -1 , Key );
Sagen wir euer Text befindet sich in Zeile 1501, dann müsst ihr als Zeile 1500 nehmen. Und key könnt ihr eine der Funktionen nehmen. Im beispiel werde ich 43 nehmen. So wäre dies dann:
AddKey( 1500, 43 );
Wenn ihr nun in der WorldDialog.txt in Zeile 1501 "Hallo" steht, wird beim klick darauf die Funktion in Key 43 aufgerufen.
Nehmen wir uns mal Key 43 vor und machen da mal einen level up, wenn man es anklickt.
Quellcode
Quellcode
- [align=left]void CNpcScript::[COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_2[/COLOR]()
- {
- AddKey( 1500, 43 );
- AddKey( 10 );
- }
- [/align]
- [align=left]void CNpcScript::[COLOR=RoyalBlue]BEISPIEL_NPC[/COLOR][COLOR=Red]_43[/COLOR]()
- {
- if( GetPlayerLvl() < 179 ){
- SetLevel( GetPlayerLvl() + 1 );
- } else {
- Exit();
- }
- }
- [/align]
Beispiele für Funktionen
Say( DWORD szMsg )
GetPlayerLvl()
GetPlayerJob()
AddExp( int nExp )
CreateItem( DWORD dwID, int nCount)
AddGold(int nGold)
Man kann damit Penya hinzufügen oder abziehen.
Quellcode
- AddGold( 500 );
- oder
- AddGold( -500 );
- [/spoiler]
- [B]RemoveGold( int nGold )[/B]
- [spoiler=0]
- Diese funktion dient dazu um Penya zu removen.
- [code]RemoveGold( 500 );
- [/spoiler]
- [B]GetPlayerGold()[/B]
- [spoiler=0]
- Hiermit kann man nach der Penya Anzahl fragen, die der User hat.
- [code]if( GetPlayerGold() > 500 ){
- // dein code
- }
RemoveItem(DWORD dwID, int nCount )
GetItemNum( DWORD dwID )
RemoveAllItem( DWORD dwID )
ChangeJob(int nJob )
GetPlayerSex()
AddKey( DWORD szWord )
AddKey( DWORD szWord , DWORD szKey )
AddKey( DWORD szWord , DWORD szKey, int nParam )
Siehe oben im Thread bei NPC hinzufügen.
IsParty()
IsPartyMaster()
Das selbe wie IsParty() nur das man hier Leader abfragt
IsGuild()
Ist das selbe wie IsParty(), nur das hier nach einer Guild abgefragt wird.
IsGuildMaster()
Ist das Selbe wie IsGuild(), nur das hier der Guild Master abgefragt wird.
CreateGuild()
Erstellt eine Guilde
DestroyGuild()
Löscht eine Guilde
GetLang()
Exit()
Schließt das Dialogfenster.
GetPlayerExpPercent()
SetLevel( int nSetLevel )
AddGPPoint( int nAddGPPoint )
DO NOT COPY & PASTE