[SAMMLUNG] Codeschnipsel

03/10/2013 11:07 Andrej-Delany#1
Hallo alle zusammen im laufe der zeit werden viele Fragen gestellt und als antwort werden nicht zu selten code Snippets
gepostet welche somit zwar irgendwo stehen aber meist nicht wieder gefunden werden auch denn die Funktion dieser Snippets meist recht praktisch ist hier werde ich einige dieser Snippets zusammentragen um das ewige suchen zu erleichtern.

Maximaler Speed

Neues NPC-Menü hat keinen Namen

Auto Convert Penja To Perin

Nervige WS Warnings (warning LNK4089: all references...)

Auto Skill Max Working:

How To Debug (z.B. Neuz)

Was Muss in den Client

QuickJobchage vebesserungen:

So macht damit was ihr wollt davon ist nichts von mir habe es nur zusammengetragen...
Ich schaue mal auf meinen anderen PC´s ob ich da noch die anderen Links habe...
Fals ihr noch was habt gerne posten nehme es dann auf.

PS: Das hier ist eigentlich für alles da was einen Release Thread nicht wert ist aber dennoch praktisch ist und public werden soll.
03/10/2013 11:11 Gollumdrika#2
ich finds toll, schätze deine arbeit
03/10/2013 11:12 ThoughtfulDev#3
Also die Ideefind ich gut , werde hier dann später eventuell auch ein paar Snippets posten.
03/10/2013 11:22 Andrej-Delany#4
#Bitte Thread umbennen in "[SAMMLUNG] Snippets"
soll nicht nur Code hier rein :)
03/10/2013 11:29 FlyCraft.TobiLap#5
Quote:
Originally Posted by Andrej-Delany View Post
#Bitte Thread umbennen in "[SAMMLUNG] Snippets"
soll nicht nur Code hier rein :)
Kannst die aus Meinem Thread noch dazumachen, shicke dir dann im laufe der woche noch mehr.

Ps:le noch n inhaltsverzeichnis an, währe ganz gut
03/10/2013 11:32 lanzelord996#6
Wenn du den Thread immer aktuell hälst ist es recht nützlich für faule User die keine Threads durchstöbern möchten :D
03/10/2013 11:46 Gollumdrika#7
fehlt noch how to debug world server
03/10/2013 12:20 Andrej-Delany#8
#UPDATE

QuickJobchage vebesserungen:

Quote:
MoverParam.cpp
ersetzt:
[CODE]
#ifdef __CLIENT
if( (GetLevel() == 120 || GetLevel() == 129) && GetExpPercent() == 9999 )
{
SAFE_DELETE( g_WndMng.m_pJobChangeEx );
g_WndMng.m_pJobChangeEx = new CWndJobChangeEx;
g_WndMng.m_pJobChangeEx->Initialize();
}
#endif

mit:
Code:
#ifdef __CLIENT
	if( (GetLevel() == MAX_GENERAL_LEVEL || GetLevel() == MAX_LEGEND_LEVEL) && GetExpPercent() == 9999 )
	{
		SAFE_DELETE( g_WndMng.m_pJobChangeEx );
		g_WndMng.m_pJobChangeEx = new CWndJobChangeEx;
		g_WndMng.m_pJobChangeEx->Initialize();
	}
#endif
Ist besser finde ich :)
Quote:
Auto Master Hero 3rd Jobchange (Der einfache Weg)
ersetzt eure
Code:
BOOL CWndJobChangeEx::Initialize( CWndBase* pWndParent, DWORD dwType )
mit dieser hier:
Code:
BOOL CWndJobChangeEx::Initialize( CWndBase* pWndParent, DWORD dwType )
{
	BYTE currentJob    = g_pPlayer->GetJob();
	short currentLevel = g_pPlayer->GetLevel();
	if( currentLevel == 15 || currentLevel == 60 || ( ( currentLevel == MAX_GENERAL_LEVEL || currentLevel == MAX_LEGEND_LEVEL ) && g_pPlayer->GetExpPercent() == 9999 ) )
	{
		if(  currentJob == 0 ){
			nJobMin = 1;
			nJobMax = 4;
			nNewLv = 15;
		}
		else if( currentJob < MAX_EXPERT ){
			nJobMin = (currentJob + 2) * 2;
			nJobMax = nJobMin + 1;
			nNewLv = 60;
		}
		else if( currentJob < MAX_PROFESSIONAL ){
			nCurJob = currentJob + 10;
			nJobMin = nCurJob;
			nJobMax = nCurJob;
			nNewLv = 60;
			
#ifdef	__AUTO_MASTER_HERO_3RD_JOBCHANGE
			g_DPlay.UpdateJob( nCurJob, nNewLv );
			return true;
#endif	//__AUTO_MASTER_HERO_3RD_JOBCHANGE
		}
		else if( currentJob < MAX_MASTER ){
			nCurJob = currentJob + 8;
			nJobMin = nCurJob;
			nJobMax = nCurJob;
			nNewLv  = MAX_GENERAL_LEVEL;
			
#ifdef	__AUTO_MASTER_HERO_3RD_JOBCHANGE
			g_DPlay.UpdateJob( nCurJob, nNewLv );
			return true;
#endif	//__AUTO_MASTER_HERO_3RD_JOBCHANGE
		}
		else if( currentJob < MAX_HERO ){
			nCurJob = currentJob + 8;
			nJobMin = nCurJob;
			nJobMax = nCurJob;
			nNewLv  = MAX_LEGEND_LEVEL;
			
#ifdef	__AUTO_MASTER_HERO_3RD_JOBCHANGE
			g_DPlay.UpdateJob( nCurJob, nNewLv );
			return true;
#endif	//__AUTO_MASTER_HERO_3RD_JOBCHANGE
		}
		nCurJob = nJobMin;
	}else{
		nCurJob = 0;
	}
	return CWndNeuz::InitDialog( g_Neuz.GetSafeHwnd(), APP_FASTJOBCHANGE, 0, CPoint( 0, 0 ), pWndParent );
}
und definiert in eurer Neuz __AUTO_MASTER_HERO_3RD_JOBCHANGE
Credits für beides Ich^^
Müste soweit gehen bis Hero ists getestet und Funktioniert.
03/10/2013 14:58 Crowley™#9
Gute Idee :) Kannst ja mal den Auto Max Skill fixen. Der bugt noch.

MfG. Crowley
03/10/2013 15:59 Crowley™#10
Quote:
Originally Posted by i33zGames View Post
Hat vlt jemand den stun-Bug Fix?
Habe schon gegooglet xD Nichts gefunden :)
03/10/2013 17:00 Andrej-Delany#11
#UPDATE

Auto Skill Max Working:
MoverParam.cpp -> BOOL CMover::AddChangeJob( int nJob )

sucht nach:
Code:
lpSkill->dwSkill = pSkillProp->dwID;
und fügt darunter das ein:
Code:
#ifdef	__AUTO_SKILL_MAX
			lpSkill->dwLevel = pSkillProp->dwExpertMax;
#endif	//__AUTO_SKILL_MAX
Das müsst ihr mindestens 3mal machen 4mal wenn ihr die 3rd jobs drin habt aber nur in der oben genannten Funktion
zu guter letzt definiert ihr noch in der VerisonCommon.h (vom WS und der Neuz) __AUTO_SKILL_MAX und fertig
03/10/2013 17:14 Andrej-Delany#12
Quote:
Originally Posted by i33zGames View Post
Schade, könnte mal jemand versuchen es selber zu Coden/Fixen?
Was ist den das für ein Bug habe bis jetzt noch nichts davon gehört...
03/10/2013 17:28 Shiaru#13
Der Stunbug tritt in PvP oder im GW auf wenn man Items mit Sprunghöhe an hat und zB in der Luft getötet wird, deshalb wurde zB die Velo scroll von DFlyff entfernt, was einige nicht wissen, es wurde auch nicht von offizieller Stelle bestätigt soweit ich weiß, aber es rührt da her. ( Quelle: Noah & Chibi )
Keine Ahnung ob der Bug von den Sprungitems an sich kommt oder der Sprunghöhenberechnung oder sonst was, wie auch immer kann jede Klasse den Bug zufällig auslösen, außer der BP da kann es manchmal wirklich vom Stun kommen, daher wird der Bug fälschlicherweise Stunbug genannt.

Beim Stunbug ist es so:

1. Man wird in der Luft im GW gekillt -> folgerichtig tot
2. Spieler respawnt aber kann sich nicht mehr buffen, man landet trotzdem in der Arena und kann nichts angreifen
3. Der Stunbug lässt sich manchmal durch stumpfes laufen gegen eine Wand lösen, aber auch nicht immer, so ist ein relogg nötig, denn selbst eine Scroll of Holy hilft da nicht
4. Man hat reloggt und evtl. alle oder die halben GW Leben verloren und ist somit eh schon fast raus

In der PvP Arena ist es ähnlich, man wird in der Luft gekillt, man respawnt, kann sich nicht buffen, kann nichts angreifen

ps: ich glaube bisher hatte den Bug nur Demon/MonsterFlyff gefixxt, villt. gibt Mootie bzw. Leathel da ja n' paar kleine Code-Tipps zu.
03/10/2013 17:44 Shiaru#14
Hab den Post aktualisiert.

Hier ein MP, HP, FP Bug fix:

( ausgetestet, funktioniert, sollte er 'schlecht' sein oder sonst was, dann postet doch einen besseren )


ps: suchfunktion von vs nutzen, sollte aber eigentlich klar sein
credits: exordium source ( in der SRC ist auch ein CE Fix, aber den könnt ihr euch auch selbst rausfischen, dürfte glaub ich von Pumaaa gemacht worden sein)
03/10/2013 18:49 xI3ubbLex3#15
//EDIT::: Wo muss ich noch einstellen, das die Vaggrant Skills auch MAX werden?

mfg. Kevin