Ich mach mal eine Sammlung von Source Edits
nicht alle von mir einige auch von anderen ( werde Credits angeben ).
Post Bug Fix
Neue NPC Dialoge [Sehr NICE!]
"Neue NPC Dialoge [Sehr NICE!
Sunkist entfernen / ändern
"Sunkist entfernen / ändern"
Ihr sucht in der Neuz nach sunkist und dann werdet ihr das sehen.
Kommentiert es aus und ihr könnt die neuz einfach so starten.
Wenn ihr verändern wollt ändert einfach das wort sunkist
MD5 Hash ändern
"MD5 Hash ändern"
Ihr kommt nicht Ingame kommt immer Passwort falsch dan liegt es warscheinlich daran das bei LANG_ENG nicht kikugalanet steht so könnt ihr das ändern.
Also ihr sucht in der neuz nach kikugalanet und werdet das hier finden und ändert das wort zu Kikugalanet.
Bow Damage in Propjob.inc hinzufügen
"Bow Damage hinzufügen"
Bow Damage in Propjob.inc hinzufügen
Öffne Moverattack.cpp
und suche :
Du wirst was sehen von Job_PROP
Da musst du den roten Text hinzufügen.
Alles anzeigen
then search for:
Du wirst finden :
Du musst das dan in das hier umwandeln :
Öffne ProjectDmn.h
Und suche :
Du wirst das finden :
Alles anzeigen
Dann fügst dann den roten Text hinzu.
Dann such in ProjectCmn.h das hier :
Du wirst das hier finden :
Alles anzeigen
Du wirst das hier finden :
Alles anzeigen
Den roten Text müsst ihr hinzufügen
Der Letze Teil des Guides
Ihr müsst das hier in die probjob.inc hinzufügen.
Alles anzeigen
Credits : Mentus
Ich hab es auf Deutsch nur geschrieben. ^^
[/CODE]
Shop Items einzeln hinzufügen
"Shop Items einzeln hinzufügen"
Was ist das?
Kennt ihr das lästige hinzufügen von Items durch AddVendorShop? Es nervt, dass es keine Funktion dafür gibt einzelne Items hinzufügen zu können. Deswegen stelle ich euch hier meine Mod zur Verfügung und ein kleines How To wie ihr sie einfach in euren Source hinzufügen könnt.
Nach dem einfügen könnt ihr einfach in der character.inc die Funktion AddShopItem benutzen.
Beispiel: AddShopItem( 0, II_WEA_WOODEN );
Das würde ein Wooden Sword im Tab 0 hinzufügen
Ihr sucht nach
und nach der Zeile
(am Ende der Funktion) fügt ihr das ein
Alles anzeigen
Danach sucht ihr nach
und nach der Zeile
fügt ihr das ein
Dann sucht ihr nach
und nach den Zeilen
fügt ihr das ein
Alles anzeigen
Und zum Schluss sucht ihr
und fügt DRÜBER das ein
Natürlich müsst ihr noch in jeder VersionCommon.h #define __ADDSHOPITEM hinzufügen
Nicht vergessen alle Server und die Neuz neu zu kompilieren
Credits: Flyff-Service
Hier nochmal GM Name vor den Shout hab ich zwar auch selber herausgefunden finde das TuT von Cross aber einfach toll :D
"Gm Name hsout"
Crash Pakets fixxen
"Crash Pakets"
Deutsche Übersetzung für euch: ( von Cross )
Ok leute, da ich derzeit nichts zu tun habe werde ich hier releasen wie ihr jedes crash/dupe Packet blocken und die/den ID/Nicknamen der Person, die versucht euren Server zu crashen, zu speichern.
Als erstes benötigt ihr ein installiertes VS.NET 2003 mit Service Pack 1 und den/die Flyff Source
Um diese packete zu blocken, müsst ihr due DPServer.cpp öffnen, welche sich im WORLDSERVER ordner befinded.
Equiptment Crash
Suche nach:
Füge unter das gefundene hinzu:
Und kommentiere das erste
unter dem eingefügtem aus.
Buy Crash
Du musst dieses 2x machen!! Einmal für normale Käufe und einmal für Käufe mit Red Chips!!
Suche nach:
Füge darunter hinzu:
Und kommentiere das erste
unter dem eingefügtem aus.
Pocket Crash
Suche nach:
Füge darunter hinzu:
Alles anzeigen
Entschuldigt bitte falls ein paar English-fehler im Text sind, da ich Brasilianer bin.
Ach, ich würde es gut finden wenn es jemand auf Deutsch übersetzen kann
kkthbye
Fenstername ändern
Homo Couple usw.
"Homo Lespen Couple"
Ihr öffnet couplehelper.cpp und sucht nach den 2 If Abfragen
Nun können alle gleichgeschlechtigen Spielern Couple machen.
GM Level Anzeige für Normale Spieler
"GM Anzeige"
Öffnet WndWorld.cpp und sucht nach
Du wirst das hier sehen
Ändert das AUTH_GAMEMASTER in AUTH_GENERAL und normale Spiele kkönnen das Level Ingame sehen.
Shop max. Kaufanzahl ändern
Jobchange Statpoints anpassen
"Jobchangedd"
Als erstes öffnet ihr die WorldDialog Source dann NPCScript.cpp
und sucht nach :
Ihr werdet dann zum Master Jobchange kommen dort seht ihr diese Funktionen :
So könnt ihr den Spieler mehr GPPoint geben.
Update 18.03
Emotion clientcrashfix:
"Fix"
Sro Fix[found on RZ]
"sro fix"
Alles anzeigen
With this, you will be able to set awakenings, such as:
Bloomeffeckt verbessern:
"Bloom"
Den Gameguard aus eurem Source verbannen !
"GG EnTF"
Version im Login BG changen
"Version im Login BG changen"
"Cross Zitat"
Ich werde es immer updaten.
Ich hoffe es gefällt euch.
MFG Luoo
nicht alle von mir einige auch von anderen ( werde Credits angeben ).
Post Bug Fix
Neue NPC Dialoge [Sehr NICE!]
"]
[Source]How to add new NPC Dialog's
So, Hallo erstmal an alle, die hier in der Flyff welt ihre Seele verloren haben
Ich will euch heute mal zeigen wie man eigene NPC Dialoge via WorldDialog.dll + WorldDialog.txt Addet in paar einfach Schritten, damit es auch 100% jeder Kapiert.
Als erstes brauchen wie folgende daten:
- WorldDialog.txt
- character.txt.txt
- character.inc
- WorldDialog.dll (Besser: Source)
- Mathe Kenntnisse
So dann fangen wir mal an
Als erstes öffnen wir mal die "character.inc" dann sieht das am anfang so aus:
Alles anzeigen
dort scrollen wir mal ganz runter, und adden einen neuen NPC mit diesem Code:
Alles anzeigen
So, das "MaFi_Herold.txt" könnt ihr erstmal ignorieren, das zeig ich euch in meinem nächsten tut.
Wichtig ist im moment nur:
Name = "MaFi_TUT_CRASY"
Figur = "IDS_CHARACTER_INC_000864" (könnt z.b. auch ihn als Aibatt hin haun)
IG Name = "IDS_CHARACTER_INC_000865"
als nächstes addet ihr in der "Character.txt.txt" folgendes ganz unten:
Wichtig ist, das die ID hinter "INC_" genau überein stimmt mit der ID in der Character.inc, so nun habt ihr eigentlich schon die Hälfte geschafft, aber zu hauptteil kommen wir erst jetzt.
Und zwar öffnet ihr nun mal die Source, btw nicht nur ihrgend eine Source sondern die "WorldDialog71.sln" diese findet ihr im Ordner "WORLDDIALOG" in der Source, wenn ihr dies getan habt öffnet ihr an der seite (bei mir rechts) die 2 dateien "NpcScript.cpp" und die dazugehörende ".h" datei, als erstes kommen wir zu der "NpcScript.cpp" datei wenn ihr die offen habt steht am anfang erstmal nur sowas:
Alles anzeigen
Das ist für uns aber im moment nicht wichtig.
Geht nun in dieser datei ans ende bis zu "//Script End" addet vor dem "//Script End" folgenden code:
Alles anzeigen
So, dort seht ihr "Say( ZEILE );" dies ist momentan noch nicht wichtig, dazu kommen wir später, nun ist nur wichtig das ihr in der "NpcScript.h" datei folgendes addet ganz unten vor dem "};":
Alles anzeigen
so nun öffnet ihr mal die "WorldDialog.txt" datei und addet ganz unten das, was euer NPC sagen soll, ich nehme nun mal einfach "Hallo, mein Name ist: Crasy" und als 2. adde ich darunter "Wie lautet dein Name?" dann sollte das einfach mal so aussehen:
ihr dürft es nicht hinter einander schreiben!
Okay, jetzt geht ihr auf den text "Hallo, mein Name ist: Crasy" oder einfach euern 1. Text, wenn ihr das habt macht ihr mal "STRG + G" dann bekomt ihr eine Zeile angezeigt, in meinem Fall sind das die "1251" und "1252", jetzt gehen wir mit diesen 2 zeilen wieder zurück zu unserer "NpcScript.cpp" und da seht ihr, das ich 2x "Say( ZEILE)" addet habe, diese ersetzt ihr nun durch:
So, ihr habt es eigentlich geschafft, alles speichern und die WorldDialog Compilen, ihr den Res ordner ziehen und fertig, schon kann euer NPC Reden
Hier noch paar Codes, für die, die nicht auf den lw text stehen:
Wer noch, will, das der NPC den text wo ihr wollt öfters Say't dann müsst ihr
ändern, und der NPC ist schneller
Wer Probleme o. Fragen hat, kann die hier o. per PN stellen.
Ich werde bald auch ein Tut schreiben wo wir "Speak, AddKey" behandeln, bin im moment zu Müde dafür
Öhm ja, hier noch Credits:
Found + Geschrieben von: Crasy 100%
Wachhalten + Unterhaltung: Cross, danke auch dafür
So, das wars erstmal bis später.
Mfg euer Crasy
[Source]How to add new NPC Dialog's
So, Hallo erstmal an alle, die hier in der Flyff welt ihre Seele verloren haben
Ich will euch heute mal zeigen wie man eigene NPC Dialoge via WorldDialog.dll + WorldDialog.txt Addet in paar einfach Schritten, damit es auch 100% jeder Kapiert.
Als erstes brauchen wie folgende daten:
- WorldDialog.txt
- character.txt.txt
- character.inc
- WorldDialog.dll (Besser: Source)
- Mathe Kenntnisse
So dann fangen wir mal an
Als erstes öffnen wir mal die "character.inc" dann sieht das am anfang so aus:
Quellcode
- [align=left] //이 파일 수정 시에 절대 EditPlus를 사용하시지 마십시요.
- //유니코드 부분에 충돌이 있습니다.
- //메모장을 사용하여 주십시요.
- /*
- 국가별 NPC 출력 설정 방법
- SetLang( 국가 디파인 )
- SetLang( 국가 디파인, 국가 서브 디파인 )
- SetOutput( truth )
- setLang으로 국가 설정. SetOutput으로 설정된 국가에만 NPC를 출력 할지(ture), 출력 안할지(false) 설정.
- 기본값은 truth임
- */
- /*
- 국가별 MMI 출력 설정 방법
- AddMenuLang( LANG_KOR, 0, MMI_XXXX )
- 가운데 0은 SUB LANG
- 여러국가에서 나와야 하는경우엔 여러개 써야함
- AddVendorSlotLang
- 설명 : AddVendorSlot( 0, IDS_CHARACTER_INC_000022 );의 확장입니다.
- 사용법 : AddVendorSlotLang( LANG_JAP, 0, 0, IDS_CHARACTER_INC_000022 );
- // 뒤 2개 인자는 AddVendorSlot과 동일 하고 앞의 두개는
- // 국가 디파인, 국가 서브 디파인입니다.
- ... usw
- [/align]
Quellcode
So, das "MaFi_Herold.txt" könnt ihr erstmal ignorieren, das zeig ich euch in meinem nächsten tut.
Wichtig ist im moment nur:
Name = "MaFi_TUT_CRASY"
Figur = "IDS_CHARACTER_INC_000864" (könnt z.b. auch ihn als Aibatt hin haun)
IG Name = "IDS_CHARACTER_INC_000865"
als nächstes addet ihr in der "Character.txt.txt" folgendes ganz unten:
Wichtig ist, das die ID hinter "INC_" genau überein stimmt mit der ID in der Character.inc, so nun habt ihr eigentlich schon die Hälfte geschafft, aber zu hauptteil kommen wir erst jetzt.
Und zwar öffnet ihr nun mal die Source, btw nicht nur ihrgend eine Source sondern die "WorldDialog71.sln" diese findet ihr im Ordner "WORLDDIALOG" in der Source, wenn ihr dies getan habt öffnet ihr an der seite (bei mir rechts) die 2 dateien "NpcScript.cpp" und die dazugehörende ".h" datei, als erstes kommen wir zu der "NpcScript.cpp" datei wenn ihr die offen habt steht am anfang erstmal nur sowas:
C-Quellcode
- [COLOR=#000000][COLOR=#ff8000]#include "stdafx.h"
- #include "NpcScript.h"
- /////////////////////////////////////////////////////////////////////////////
- // extern functions
- /////////////////////////////////////////////////////////////////////////////
- [/COLOR][COLOR=#0000bb]extern void InitFunctions[/COLOR][COLOR=#007700]();
- [/COLOR][COLOR=#0000bb]extern PFN GetFunction[/COLOR][COLOR=#007700]( const [/COLOR][COLOR=#0000bb]char[/COLOR][COLOR=#007700]* [/COLOR][COLOR=#0000bb]szFunction [/COLOR][COLOR=#007700]);
- [/COLOR][COLOR=#ff8000]/////////////////////////////////////////////////////////////////////////////
- // global variable
- [/COLOR][COLOR=#0000bb]usw[/COLOR][COLOR=#007700].. [/COLOR][/COLOR]
Das ist für uns aber im moment nicht wichtig.
Geht nun in dieser datei ans ende bis zu "//Script End" addet vor dem "//Script End" folgenden code:
Quellcode
- [align=left] void CNpcScript::mafl_Crasy_0()
- {
- Speak( NpcId(), 1267 );
- SetScriptTimer( 15 );
- }
- void CNpcScript::mafl_Crasy_1()
- {
- }
- void CNpcScript::mafl_Crasy_2()
- {
- AddKey( 9 );
- AddKey( 10 );
- }
- void CNpcScript::mafl_Crasy_3()
- {
- }
- void CNpcScript::mafl_Crasy_4()
- {
- Say( ZEILE );
- }
- void CNpcScript::mafl_Crasy_5()
- {
- }
- void CNpcScript::mafl_Crasy_6()
- {
- }
- void CNpcScript::mafl_Crasy_7()
- {
- }
- void CNpcScript::mafl_Crasy_8()
- {
- }
- void CNpcScript::mafl_Crasy_9()
- {
- Say( ZEILE );
- }
- void CNpcScript::mafl_Crasy_10()
- {
- Speak( NpcId(), 1268 );
- Exit();
- [/align]
- }
Quellcode
so nun öffnet ihr mal die "WorldDialog.txt" datei und addet ganz unten das, was euer NPC sagen soll, ich nehme nun mal einfach "Hallo, mein Name ist: Crasy" und als 2. adde ich darunter "Wie lautet dein Name?" dann sollte das einfach mal so aussehen:
ihr dürft es nicht hinter einander schreiben!
Okay, jetzt geht ihr auf den text "Hallo, mein Name ist: Crasy" oder einfach euern 1. Text, wenn ihr das habt macht ihr mal "STRG + G" dann bekomt ihr eine Zeile angezeigt, in meinem Fall sind das die "1251" und "1252", jetzt gehen wir mit diesen 2 zeilen wieder zurück zu unserer "NpcScript.cpp" und da seht ihr, das ich 2x "Say( ZEILE)" addet habe, diese ersetzt ihr nun durch:
So, ihr habt es eigentlich geschafft, alles speichern und die WorldDialog Compilen, ihr den Res ordner ziehen und fertig, schon kann euer NPC Reden

Hier noch paar Codes, für die, die nicht auf den lw text stehen:
Wer noch, will, das der NPC den text wo ihr wollt öfters Say't dann müsst ihr
ändern, und der NPC ist schneller

Wer Probleme o. Fragen hat, kann die hier o. per PN stellen.
Ich werde bald auch ein Tut schreiben wo wir "Speak, AddKey" behandeln, bin im moment zu Müde dafür

Öhm ja, hier noch Credits:
Found + Geschrieben von: Crasy 100%
Wachhalten + Unterhaltung: Cross, danke auch dafür

So, das wars erstmal bis später.
Mfg euer Crasy

Sunkist entfernen / ändern
Ihr sucht in der Neuz nach sunkist und dann werdet ihr das sehen.
Kommentiert es aus und ihr könnt die neuz einfach so starten.
Wenn ihr verändern wollt ändert einfach das wort sunkist
MD5 Hash ändern
Ihr kommt nicht Ingame kommt immer Passwort falsch dan liegt es warscheinlich daran das bei LANG_ENG nicht kikugalanet steht so könnt ihr das ändern.
Also ihr sucht in der neuz nach kikugalanet und werdet das hier finden und ändert das wort zu Kikugalanet.
Bow Damage in Propjob.inc hinzufügen
Bow Damage in Propjob.inc hinzufügen
Öffne Moverattack.cpp
und suche :
Du wirst was sehen von Job_PROP
Da musst du den roten Text hinzufügen.
Quellcode
- case JOB_PROP_SWD:
- return pProperty->fMeleeSWD;
- case JOB_PROP_AXE:
- return pProperty->fMeleeAXE;
- case JOB_PROP_STAFF:
- return pProperty->fMeleeSTAFF;
- case JOB_PROP_STICK:
- return pProperty->fMeleeSTICK;
- case JOB_PROP_KNUCKLE:
- return pProperty->fMeleeKNUCKLE;
- case JOB_PROP_WAND:
- return pProperty->fMagicWAND;
- case JOB_PROP_YOYO:
- return pProperty->fMeleeYOYO;
- [COLOR=red] case JOB_PROP_BOW:
- return pProperty->fMeleeBOW;[/COLOR]
- case JOB_PROP_BLOCKING:
- return pProperty->fBlocking;
- case JOB_PROP_CRITICAL:
- return pProperty->fCritical;
Du wirst finden :
Und suche :
Du wirst das finden :
Quellcode
Dann such in ProjectCmn.h das hier :
Du wirst das hier finden :
Quellcode
- // 직업에 따른 프로퍼티 ( propJob.inc에서 읽어들임 )
- struct JobProp
- {
- float fAttackSpeed; //공속
- float fFactorMaxHP; //최대 HP 계산에 사용되는 factor
- float fFactorMaxMP; //최대 MP 계산에 사용되는 factor
- float fFactorMaxFP; //최대 FP 계산에 사용되는 factor
- float fFactorDef; //물리 방어력 계산에 사용되는 factor
- float fFactorHPRecovery; //HP회복 factor
- float fFactorMPRecovery; //MP회복 factor
- float fFactorFPRecovery; //FP회복 factor
- float fMeleeSWD; //WT_MELEE_SWD의 ATK factor
- float fMeleeAXE; //WT_MELEE_AXE의 ATK factor
- float fMeleeSTAFF; //WT_MELEE_STAFF의 ATK factor
- float fMeleeSTICK; //WT_MELEE_STICK의 ATK factor
- float fMeleeKNUCKLE; //WT_MELEE_KNUCKLE의 ATK factor
- float fMagicWAND; //WT_MAGIC_WAND의 ATK factor
- float fBlocking; //블록킹 factor
- float fMeleeYOYO; //요요의 ATK factor
- float fCritical; //크리티컬 처리
- [COLOR=red] float fMeleeBOW; [/COLOR]
- };
- Du musst den roten Text hinzufügen.
- Dann suchst du das hier :
- [CODE] fMeleeYOYO
Quellcode
- JobProp* pProperty = &m_aPropJob[nJob];
- pProperty->fAttackSpeed = scanner.GetFloat();
- pProperty->fFactorMaxHP = scanner.GetFloat();
- pProperty->fFactorMaxMP = scanner.GetFloat();
- pProperty->fFactorMaxFP = scanner.GetFloat();
- pProperty->fFactorDef = scanner.GetFloat();
- pProperty->fFactorHPRecovery = scanner.GetFloat();
- pProperty->fFactorMPRecovery = scanner.GetFloat();
- pProperty->fFactorFPRecovery = scanner.GetFloat();
- pProperty->fMeleeSWD = scanner.GetFloat();
- pProperty->fMeleeAXE = scanner.GetFloat();
- pProperty->fMeleeSTAFF = scanner.GetFloat();
- pProperty->fMeleeSTICK = scanner.GetFloat();
- pProperty->fMeleeKNUCKLE = scanner.GetFloat();
- pProperty->fMagicWAND = scanner.GetFloat();
- pProperty->fBlocking = scanner.GetFloat();
- pProperty->fMeleeYOYO = scanner.GetFloat();
- pProperty->fCritical = scanner.GetFloat();
- [COLOR=red] pProperty->fMeleeBOW = scanner.GetFloat();[/COLOR]
Der Letze Teil des Guides
Ihr müsst das hier in die probjob.inc hinzufügen.
Quellcode
Ich hab es auf Deutsch nur geschrieben. ^^
[/CODE]
Shop Items einzeln hinzufügen
Was ist das?
Kennt ihr das lästige hinzufügen von Items durch AddVendorShop? Es nervt, dass es keine Funktion dafür gibt einzelne Items hinzufügen zu können. Deswegen stelle ich euch hier meine Mod zur Verfügung und ein kleines How To wie ihr sie einfach in euren Source hinzufügen könnt.
Nach dem einfügen könnt ihr einfach in der character.inc die Funktion AddShopItem benutzen.
Beispiel: AddShopItem( 0, II_WEA_WOODEN );
Das würde ein Wooden Sword im Tab 0 hinzufügen
Ihr sucht nach
und nach der Zeile
(am Ende der Funktion) fügt ihr das ein
Quellcode
- #ifdef __ADDSHOPITEM
- else if( script.Token == "AddShopItem" )
- {
- script.GetToken(); // (
- int nSlot = script.GetNumber(); script.GetToken(); //
- DWORD dwId = script.GetNumber(); script.GetToken(); //
- LPVENDOR_ITEM pVendorItem = new VENDOR_ITEM;
- pVendorItem->m_dwItemId = dwId;
- lpCharacter->m_venderItemAry3[ nSlot ].Add( pVendorItem );
- }
- #endif
Danach sucht ihr nach
und nach der Zeile
fügt ihr das ein
Dann sucht ihr nach
und nach den Zeilen
fügt ihr das ein
Quellcode
- #ifdef __ADDSHOPITEM
- if( pCharacter->m_venderItemAry3[i].GetSize() )
- {
- fShop = TRUE;
- for( int j = 0; j < pCharacter->m_venderItemAry3[i].GetSize(); j++)
- {
- pVendor = (LPVENDOR_ITEM)pCharacter->m_venderItemAry3[i].GetAt(j);
- CItemElem itemElem;
- itemElem.m_dwItemId = pVendor->m_dwItemId;
- itemElem.m_nItemNum = (short)( prj.GetItemProp( pVendor->m_dwItemId )->dwPackMax );
- itemElem.m_nHitPoint = prj.GetItemProp( pVendor->m_dwItemId )->dwEndurance;
- m_ShopInventory[i]->Add( &itemElem );
- }
- }
- #endif
Und zum Schluss sucht ihr
und fügt DRÜBER das ein
Natürlich müsst ihr noch in jeder VersionCommon.h #define __ADDSHOPITEM hinzufügen
Nicht vergessen alle Server und die Neuz neu zu kompilieren
Credits: Flyff-Service
Hier nochmal GM Name vor den Shout hab ich zwar auch selber herausgefunden finde das TuT von Cross aber einfach toll :D
Hallo,
in diesem Tutorial erkläre ich eich einmal wie ihr den GM Namen vor den "/sys" Shout bekommt.
Zuerst suchen wir in der FuncTextCmd.cpp nach diesem Code:
Dies sagt uns das wir beim befehl /system (= /sys) sind.
Hier müssen wir nun 2 Teile einfügen.
1.
Dies sucht den Namen des Users und wir binden ihn an die Variable "strName".
Der gesamtCode sieht nun so aus:
Alles anzeigen
2. Jetzt müssen wir noch die ausgabe einfügen.
dies machen wir mit:
Dieser Code sagt da die ausgabe des befehls /Sys [strName] szString (message) sein soll
Unser Endcode:
Alles anzeigen
Credits:
Schreiben: Cross
Code: Basis > Aeonsoft
erweiterung: Cross
Weitergabe nur mit ausdrücklicher angabe dieser Credits gestattet!
Greetings,
cross
in diesem Tutorial erkläre ich eich einmal wie ihr den GM Namen vor den "/sys" Shout bekommt.
Zuerst suchen wir in der FuncTextCmd.cpp nach diesem Code:
Dies sagt uns das wir beim befehl /system (= /sys) sind.
Hier müssen wir nun 2 Teile einfügen.
1.
Dies sucht den Namen des Users und wir binden ihn an die Variable "strName".
Der gesamtCode sieht nun so aus:
Quellcode
- BOOL TextCmd_System( CScanner & scanner )
- {
- #ifdef __WORLDSERVER
- CHAR szString[512] = "";
- CUser* pUser = (CUser*)scanner.dwValue;
- CString strName;
- strName = pUser->GetName();
- scanner.GetLastFull();
- if( strlen( scanner.token ) >= 512 )
- return TRUE;
- strcpy( szString, scanner.token );
- StringTrimRight( szString );
- g_DPCoreClient.SendSystem( szString );
- #endif // __WORLDSERVER
- return TRUE;
- }
dies machen wir mit:
Dieser Code sagt da die ausgabe des befehls /Sys [strName] szString (message) sein soll
Unser Endcode:
Quellcode
- BOOL TextCmd_System( CScanner & scanner )
- {
- #ifdef __WORLDSERVER
- CHAR szString[512] = "";
- CUser* pUser = (CUser*)scanner.dwValue;
- CString strName;
- strName = pUser->GetName();
- scanner.GetLastFull();
- if( strlen( scanner.token ) >= 512 )
- return TRUE;
- strcpy( szString, scanner.token );
- StringTrimRight( szString );
- g_DPCoreClient.SendSystem( "[" + strName + "]" + szString );
- #endif // __WORLDSERVER
- return TRUE;
- }
Schreiben: Cross
Code: Basis > Aeonsoft
erweiterung: Cross
Weitergabe nur mit ausdrücklicher angabe dieser Credits gestattet!
Greetings,
cross
Crash Pakets fixxen
Deutsche Übersetzung für euch: ( von Cross )
Ok leute, da ich derzeit nichts zu tun habe werde ich hier releasen wie ihr jedes crash/dupe Packet blocken und die/den ID/Nicknamen der Person, die versucht euren Server zu crashen, zu speichern.
Als erstes benötigt ihr ein installiertes VS.NET 2003 mit Service Pack 1 und den/die Flyff Source
Um diese packete zu blocken, müsst ihr due DPServer.cpp öffnen, welche sich im WORLDSERVER ordner befinded.
Equiptment Crash
Suche nach:
Füge unter das gefundene hinzu:
unter dem eingefügtem aus.
Buy Crash
Du musst dieses 2x machen!! Einmal für normale Käufe und einmal für Käufe mit Red Chips!!
Suche nach:
Quellcode
- CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );
- //CRASH
- if( cTab > 3 || cTab < 0 || nId < 0 || nNum <= 0 || nNum > 9999 || dwItemId < 0 ) {
- Error( "CDPSrvr::OnBuyItem : Crash Try -> [Player ID: %07d], [Player Name: %s], [Packet used: %d,%d,%d,%d]",
- pUser->m_idPlayer, pUser->GetName(), cTab, nId, nNum, dwItemId );
- return;
- }
unter dem eingefügtem aus.
Pocket Crash
Suche nach:
Füge darunter hinzu:
Quellcode
- //DUPE CODE
- if( nNum <= 0 ) {
- Error( "CDPSrvr::OnMoveItemOnPocket : Dupe Try -> [Player ID: %07d], [Player Name: %s], [Packet used: %d,%d,%d,%d]",
- pUser->m_idPlayer, pUser->GetName(), nPocket1, nItem, nNum, nPocket2 );
- return;
- }
- //CRASH
- if( nItem < 0 || nPocket2 > 2 || nPocket1 < -1 || nPocket1 > 52 ) {
- Error( "CDPSrvr::OnMoveItemOnPocket : Crash Try -> [Player ID: %07d], [Player Name: %s], [Packet used: %d,%d,%d,%d]",
- pUser->m_idPlayer, pUser->GetName(), nPocket1, nItem, nNum, nPocket2 );
- return;
- }
Ach, ich würde es gut finden wenn es jemand auf Deutsch übersetzen kann
kkthbye
Fenstername ändern
Homo Couple usw.
Ihr öffnet couplehelper.cpp und sucht nach den 2 If Abfragen
Quellcode
- [COLOR=#000000][COLOR=#007700]if( [/COLOR][COLOR=#0000bb]pUser [/COLOR][COLOR=#007700]== [/COLOR][COLOR=#0000bb]pTarget [/COLOR][COLOR=#007700])
- {
- [/COLOR][COLOR=#0000bb]pUser[/COLOR][COLOR=#007700]->[/COLOR][COLOR=#0000bb]AddDefinedText[/COLOR][COLOR=#007700]( [/COLOR][COLOR=#0000bb]TID_GAME_COUPLE_E01 [/COLOR][COLOR=#007700]); [/COLOR][COLOR=#007700]
- }
- if( [/COLOR][COLOR=#0000bb]pUser[/COLOR][COLOR=#007700]->[/COLOR][COLOR=#0000bb]GetSex[/COLOR][COLOR=#007700]() == [/COLOR][COLOR=#0000bb]pTarget[/COLOR][COLOR=#007700]->[/COLOR][COLOR=#0000bb]GetSex[/COLOR][COLOR=#007700]() )
- {
- [/COLOR][COLOR=#0000bb]pUser[/COLOR][COLOR=#007700]->[/COLOR][COLOR=#0000bb]AddDefinedText[/COLOR][COLOR=#007700]( [/COLOR][COLOR=#0000bb]TID_GAME_COUPLE_E01 [/COLOR][COLOR=#007700]); [/COLOR][COLOR=#ff8000]
- [/COLOR][COLOR=#007700]return;
- } [/COLOR][/COLOR]
GM Level Anzeige für Normale Spieler
Öffnet WndWorld.cpp und sucht nach
Du wirst das hier sehen
Ändert das AUTH_GAMEMASTER in AUTH_GENERAL und normale Spiele kkönnen das Level Ingame sehen.
Shop max. Kaufanzahl ändern
Jobchange Statpoints anpassen
Als erstes öffnet ihr die WorldDialog Source dann NPCScript.cpp
und sucht nach :
Ihr werdet dann zum Master Jobchange kommen dort seht ihr diese Funktionen :
Update 18.03
Emotion clientcrashfix:
Hier zeige ich euch, wie ihr es fixen könnt, dass der Client crasht, wenn ihr im chat !888888888888889 eingebt!
Als erstes geht ihr in die _Common\DialogMsg.cpp und sucht nach der Funktion:
<-- Sie befindet sich auf Zeile 813 -->
Dannach sucht ihr in dieser Funktion nach dieser If-Schleife:
<-- Ab Zeile 856 -->
Nun ersetzt ihr den bereits dastehenden Text durch den text, den ich hier jetzt angebe:
Alles anzeigen
Und schon seit ihr fertig!
Als erstes geht ihr in die _Common\DialogMsg.cpp und sucht nach der Funktion:
Dannach sucht ihr in dieser Funktion nach dieser If-Schleife:
Nun ersetzt ihr den bereits dastehenden Text durch den text, den ich hier jetzt angebe:
Quellcode
Sro Fix[found on RZ]
Quellcode
- BOOL TextCmd_SetRandomOption( CScanner & s )
- {
- #ifdef __WORLDSERVER
- CUser* pUser = (CUser*)s.dwValue;
- CItemElem* pItemElem = pUser->m_Inventory.GetAt( 0 );
- if( pItemElem )
- {
- int nRandomOptionKind = g_xRandomOptionProperty->GetRandomOptionKind( pItemElem );
- if( nRandomOptionKind >= 0 )
- {
- g_xRandomOptionProperty->InitializeRandomOption( pItemElem->GetRandomOptItemIdPtr() );
- int nDst, nAdj;
- int cb = 0;
- nDst = s.GetNumber();
- while( s.tok != FINISHED )
- {
- nAdj = s.GetNumber();
- if( nDst == 48 ) // Broken attribute
- break;
- if ( nDst > 96 || nDst < 1 ) // v16 max/min dst attribute
- break;
- if ( nAdj > 512 || nAdj < -512 ) // Prevent integer overflows
- break;
- g_xRandomOptionProperty->SetParam( pItemElem->GetRandomOptItemIdPtr(), nDst, nAdj );
- cb++;
- if( cb >= MAX_RANDOM_OPTION )
- break;
- nDst = s.GetNumber();
- }
- pUser->UpdateItemEx( (BYTE)( pItemElem->m_dwObjId ), UI_RANDOMOPTITEMID, pItemElem->GetRandomOptItemId() );
- }
- }
- #endif // __WORLDSERVER
- return TRUE;
- }
With this, you will be able to set awakenings, such as:
Bloomeffeckt verbessern:
Sucht in der Neuz.cpp nach folgendenden Zeilen:
und ersetzt diese durch:
Zuguter letzt müsste ihr noch in der Neuz.ini (im Client) folgende Zeile hinzufügen:
Den Gameguard aus eurem Source verbannen !
Ihr müsst nur die Neuz.cpp bearbeiten!
Sucht nach folgenden Zeilen und löscht sie, oder kommentiert sie aus ("//", "/*,*/"):
Alles anzeigen
Alles anzeigen
Und fertig ;)
Sucht nach folgenden Zeilen und löscht sie, oder kommentiert sie aus ("//", "/*,*/"):
Quellcode
- void CNeuzApp::InitNProtect()
- {
- CScript s1;
- if( s1.Load(MakePath( DIR_CLIENT, "GameGuard.txt.txt" ) ) )
- s1.LoadString();
- CScript s2;
- if( s2.Load(MakePath( DIR_CLIENT, "GameGuard.inc" ) ) )
- {
- s2.GetToken();
- while( s2.tok != FINISHED )
- {
- m_strArray.Add( s2.Token );
- s2.GetToken();
- }
- }
- PreInitNProtect();
- DWORD dwResult = GetNProtect()->Init();
- if( dwResult != NPGAMEMON_SUCCESS )
- {
- TCHAR msg[256];
- LPCSTR lpszMsg;
- switch (dwResult)
- {
- case NPGAMEMON_ERROR_EXIST:
- lpszMsg = m_strArray.GetAt(0);//"°ÔÀÓ°¡µå°¡ ÀÌ¹Ì ½ÇÇà Áß ÀÔ´Ï´Ù. ÀçºÎÆÃ ÈÄ ´Ù½Ã ½ÇÇàÇØº¸½Ã±â ¹Ù¶ø´Ï´Ù.";
- break;
- case NPGAMEMON_ERROR_GAME_EXIST:
- lpszMsg = m_strArray.GetAt(1);//"°ÔÀÓÀÌ Áߺ¹ ½ÇÇàµÇ¾ú°Å³ª °ÔÀÓ°¡µå°¡ ÀÌ¹Ì ½ÇÇà Áß ÀÔ´Ï´Ù. °ÔÀÓ Á¾·á ÈÄ ´Ù½Ã ½ÇÇàÇØº¸½Ã±â ¹Ù¶ø´Ï´Ù.";
- break;
- case NPGAMEMON_ERROR_INIT:
- lpszMsg = m_strArray.GetAt(2);//"°ÔÀÓ°¡µå ÃʱâÈ¿¡·¯ÀÔ´Ï´Ù. ÀçºÎÆÃ ÈÄ ´Ù½Ã ½ÇÇàÇØº¸°Å³ª Ãæµ¹ÇÒ ¼ö ÀÖ´Â ´Ù¸¥ ÇÁ·Î±×·¥µéÀ» Á¾·áÇÑ ÈÄ ½ÇÇàÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù.";
- break;
- case NPGAMEMON_ERROR_AUTH_GAMEGUARD:
- case NPGAMEMON_ERROR_NFOUND_GG:
- case NPGAMEMON_ERROR_AUTH_INI:
- case NPGAMEMON_ERROR_NFOUND_INI:
- lpszMsg = m_strArray.GetAt(3);//"°ÔÀÓ°¡µå ÆÄÀÏÀÌ ¾ø°Å³ª º¯Á¶µÇ¾ú½À´Ï´Ù. °ÔÀÓ°¡µå ¼Â¾÷ ÆÄÀÏÀ» ¼³Ä¡Çغ¸½Ã±â ¹Ù¶ø´Ï´Ù.";
- break;
- case NPGAMEMON_ERROR_CRYPTOAPI:
- lpszMsg = m_strArray.GetAt(4);//"À©µµ¿ìÀÇ ÀϺΠ½Ã½ºÅÛ ÆÄÀÏÀÌ ¼Õ»óµÇ¾ú½À´Ï´Ù. ÀÎÅÍ³Ý ÀͽºÇ÷η¯(IE)¸¦ ´Ù½Ã ¼³Ä¡Çغ¸½Ã±â ¹Ù¶ø´Ï´Ù.";
- break;
- case NPGAMEMON_ERROR_EXECUTE:
- lpszMsg = m_strArray.GetAt(5);//"°ÔÀÓ°¡µå ½ÇÇà¿¡ ½ÇÆÐÇß½À´Ï´Ù. °ÔÀÓ°¡µå ¼Â¾÷ ÆÄÀÏÀ» ´Ù½Ã ¼³Ä¡Çغ¸½Ã±â ¹Ù¶ø´Ï´Ù.";
- break;
- case NPGAMEMON_ERROR_ILLEGAL_PRG:
- lpszMsg = m_strArray.GetAt(6);//"ºÒ¹ý ÇÁ·Î±×·¥ÀÌ ¹ß°ßµÇ¾ú½À´Ï´Ù. ºÒÇÊ¿äÇÑ ÇÁ·Î±×·¥À» Á¾·áÇÑ ÈÄ ´Ù½Ã ½ÇÇàÇØº¸½Ã±â ¹Ù¶ø´Ï´Ù.";
- break;
- case NPGMUP_ERROR_ABORT:
- lpszMsg = m_strArray.GetAt(7);//"°ÔÀÓ°¡µå ¾÷µ¥ÀÌÆ®¸¦ Ãë¼ÒÇϼ̽À´Ï´Ù. Á¢¼ÓÀÌ °è¼Ó µÇÁö ¾ÊÀ» °æ¿ì ÀÎÅÍ³Ý ¹× ¹æÈ® »óŸ¦ Á¡°ËÇØº¸½Ã±â ¹Ù¶ø´Ï´Ù.";
- break;
- case NPGMUP_ERROR_CONNECT:
- case NPGMUP_ERROR_DOWNCFG:
- lpszMsg = m_strArray.GetAt(8);//"°ÔÀÓ°¡µå ¾÷µ¥ÀÌÆ® ¼ö Á¢¼Ó¿¡ ½ÇÆÐÇÏ¿´½À´Ï´Ù. Àá½Ã ÈÄ Àç½Ãµµ ÇØº¸°Å³ª, ÀÎÅÍ³Ý ¹× ¹æÈ® »óŸ¦ Á¡°ËÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù.";
- break;
- case NPGMUP_ERROR_AUTH:
- lpszMsg = m_strArray.GetAt(9);//"°ÔÀÓ°¡µå ¾÷µ¥ÀÌÆ®¸¦ ¿Ï·áÇÏÁö ¸ø Çß½À´Ï´Ù. ¹ÙÀÌ·¯½º °Ë»ç¸¦ ÇØº¸½Ã°Å³ª, PC °ü¸® ÇÁ·Î±×·¥À» »ç¿ëÇÏ½Ã¸é ¼³Á¤À» Á¶Á¤ÇÑ ÈÄ °ÔÀÓÀ» ½ÇÇàÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù.";
- break;
- case NPGAMEMON_ERROR_NPSCAN:
- default:
- // ÀûÀýÇÑ Á¾·á ¸Þ½ÃÁö Ãâ·Â, UI ÃʱâÈÈĶó¸é MessageBox ´ë½Å °ÔÀÓ UI¸¦ »ç¿ëÇØµµ µÊ
- //wsprintf( msg, "°ÔÀÓ°¡µå ½ÇÇà ¿¡·¯ : %lu", dwResult );
- wsprintf( msg, m_strArray.GetAt(10), dwResult );
- lpszMsg = msg;
- break;
- }
- if( lpszMsg )
- ::Error( "nProtect GameGuard : %s", lpszMsg );
- // MessageBox( GetSafeHwnd(), lpszMsg, "nProtect GameGuard", MB_OK );
- ExitProcess( -1 );
- }
- // GetNProtect()->SetHwnd( GetSafeHwnd() );
- }
Quellcode
- BOOL CALLBACK NPGameMonCallback( DWORD dwMsg, DWORD dwArg )
- {
- if( g_Neuz.m_strArray.GetSize() == 0 )
- return false;
- bool bAppExit = false;
- TCHAR msg[128];
- LPCTSTR lpszMsg = NULL;
- switch (dwMsg)
- {
- case NPGAMEMON_CHECK_CSAUTH2: // ¼ö·Î ÀÎÁõ ÆÐŶÀ» Àü¼Û
- {
- GG_AUTH_DATA AuthData;
- memcpy( &AuthData, (PVOID)dwArg, sizeof(GG_AUTH_DATA) );
- BEFORESENDSOLE( ar, PACKETTYPE_AUTHQUERY, DPID_UNKNOWN );
- ar.Write( (void*)&AuthData, sizeof(GG_AUTH_DATA) );
- SEND( ar, &g_dpLoginClient, DPID_SERVERPLAYER );
- if( g_Neuz.m_loginSI.nCount == 1 )
- {
- ++g_Neuz.m_loginSI.nCount;
- g_dpLoginClient.SendGetPlayerList( g_Neuz.m_loginSI.dwID, g_Neuz.m_loginSI.pszAccount, g_Neuz.m_loginSI.pszPassword );
- }
- return true;
- }
- case NPGAMEMON_COMM_ERROR:
- case NPGAMEMON_COMM_CLOSE:
- bAppExit = true;
- return false;
- case NPGAMEMON_INIT_ERROR: // "°ÔÀÓ°¡µå ÃʱâÈ¿¡·¯
- bAppExit = true;
- wsprintf( msg, g_Neuz.m_strArray.GetAt(17), dwArg );
- lpszMsg = msg;
- break;
- case NPGAMEMON_SPEEDHACK: // "½ºÇǵåÇÙÀÌ °¨ÁöµÇ¾ú½À´Ï´Ù."
- bAppExit = true;
- lpszMsg = g_Neuz.m_strArray.GetAt(18);
- break;
- case NPGAMEMON_GAMEHACK_KILLED: // "°ÔÀÓÇÙÀÌ ¹ß°ßµÇ¾ú½À´Ï´Ù."
- case NPGAMEMON_GAMEHACK_DETECT: // "°ÔÀÓÇÙÀÌ ¹ß°ßµÇ¾ú½À´Ï´Ù."
- bAppExit = true;
- lpszMsg = g_Neuz.m_strArray.GetAt(19);
- break;
- case NPGAMEMON_GAMEHACK_DOUBT: //"°ÔÀÓÀ̳ª °ÔÀÓ°¡µå°¡ º¯Á¶µÇ¾ú½À´Ï´Ù.";
- bAppExit = true;
- lpszMsg = g_Neuz.m_strArray.GetAt(20);
- break;
- }
- if( lpszMsg )
- MessageBox( g_Neuz.GetSafeHwnd(), lpszMsg, "nProtect GameGuard", MB_OK );
- if( bAppExit )
- {
- ExitProcess( -1 );
- return false;
- }
- return true;
- }
Version im Login BG changen
Hallo,
diesmal habe ich ein kleines "ShortTut" für euch ;)
Hier dreht es sich um die "Version" die beim Login LINKS(!) oben steht.
Zuerst:
Was brauchen wir?
Wir öffnen die ITheme.cpp mit Visual Studio 2003 und suchen den folgenden text:
Hier finden wir diesen code:
Dies giebt dann im Login Background zb aus [wenn wir die neuz am 18.03.2011 um 17.50 mit Language 1 gebuilded haben]:
Dies können wir nun zb für Copyright Rechte changen.
Ein Beispiel:
Die ausgabe hier:
Das g_szVersion liefert den textbaustein "Version" und sollte daher immer vorne stehen.
Wir können aber auch zb dies machen:
Damit würden wir die ausgabe auf:
umstellen.
Wie immer gilt:
C&P nur mit angabe der Credits!
grüße
cross
diesmal habe ich ein kleines "ShortTut" für euch ;)
Hier dreht es sich um die "Version" die beim Login LINKS(!) oben steht.
Zuerst:
Was brauchen wir?
- Ms Visual Studio 2003
- _\Interface\ITheme.cpp
- Gehirn,Finger etc.. also das übliche ;)
Wir öffnen die ITheme.cpp mit Visual Studio 2003 und suchen den folgenden text:
Hier finden wir diesen code:
Dies können wir nun zb für Copyright Rechte changen.
Ein Beispiel:
Das g_szVersion liefert den textbaustein "Version" und sollte daher immer vorne stehen.
Wir können aber auch zb dies machen:
umstellen.
Wie immer gilt:
C&P nur mit angabe der Credits!
grüße
cross
Cross;227608 schrieb:
;)
hab noch was (klein aber fein)
v15 Wetter system abschalten
spoil hallo,
viele 'unerfahrene' src Modder die alles C&P nehmen haben ein Problem, weil es weder regnet noch schneit etc.
Dies liegt daran das in V15 ein neueres wetter system gecoded wurde, aber dies anscheinend nicht fertig ist/funktioniert.
Hier zeige ich euch als Simples Tutorial wie ihr es abschalten und so auch wieder
das Schnee und Regen EXP event nutzen könnt.
Als erstes suchen wir:
WORLDSERVER\VersionsCommon.h
dort suchen wir nach:
Und ändern dies zu:
Das //v15 weather sys ist eine gedächtnisstütze
das // vor dem #define sagt das es nicht gelesen werden soll und somit die funktion nicht in Kraft tritt
Nun suchen wir die datei:
Neuz\VersionsCommon.h
und suchen hier wieder nach:
Und ändern dies wieder zu:
Nun nurnoch Worldserver + Neuz neu builden und das Wetter System ist wieder so, dass es Regnet + Schneit )
Eigentlich keine große Arbeit, jedoch wissen es die meisten anscheinend nicht ;)
Credits:
100% cross (Weiterverbreitung nur unter angabe dieser Credits)
greetings
Ich werde es immer updaten.
Ich hoffe es gefällt euch.
MFG Luoo