[Release]Extended Petfilter

09/15/2011 20:46 Yakuzai.#1
Hallo, heute hatte ich mal langeweile, also dachte ich mir ich mach mal einen neuen Petfilter, hier ein Screen vom Endergebnis:
[Only registered and activated users can see links. Click Here To Register...]

Was wir brauchen:
-VS2003
-Source + Hier releasten Petfilter
-Resdata : [Only registered and activated users can see links. Click Here To Register...]
-Ein wenig Zeit

Als erstes gehen wir in die AiPet.cpp und suchen nach
Code:
if(!pOwner->bQuestItem && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_GEM && pItemProp->dwItemKind3 == IK3_GEM)
							b1 = TRUE;
						else if(!pOwner->bWeapons && pItemProp->dwItemKind1 == IK1_WEAPON)
							b1 = TRUE;
						else if(!pOwner->bArmor && pItemProp->dwItemKind1 == IK1_ARMOR)
							b1 = TRUE;
						else if(!pOwner->bCards && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_MATERIAL && pItemProp->dwItemKind3 != IK3_ULTIMATE && pItemProp->dwItemKind3 != IK3_ENCHANT && pItemProp->dwItemKind3 != IK3_PIERDICE)
							b1 = TRUE;
						else if(!pOwner->bFood && pItemProp->dwItemKind1 == IK1_GENERAL && (pItemProp->dwItemKind2 == IK2_FOOD || pItemProp->dwItemKind2 == IK2_REFRESHER || pItemProp->dwItemKind2 == IK2_POTION))
							b1 = TRUE;
						else if(!pOwner->bEggs && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_GENERAL && pItemProp->dwItemKind3 == IK3_EGG)
							b1 = TRUE;
						else if(!pOwner->bStones && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_MATERIAL && (pItemProp->dwItemKind3 == IK3_PIERDICE || pItemProp->dwItemKind3 == IK3_ENCHANT || pItemProp->dwItemKind3 == IK3_ULTIMATE || pItemProp->dwItemKind3 == IK3_SUPSTONE))
							b1 = TRUE;
						else if(!pOwner->bAccessory && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_JEWELRY)
							b1 = TRUE;
						else if( pItemProp->dwItemKind1 == IK1_GOLD && pItemProp->dwItemKind2 == IK2_GOLD && pItemProp->dwItemKind3 == IK3_GOLD )
							b1 = TRUE;
Das ersetzt ihr hiermit :
Code:
						if(!pOwner->bQuestItem && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_GEM && pItemProp->dwItemKind3 == IK3_GEM)
							b1 = TRUE;
						else if(!pOwner->bWeapons && pItemProp->dwItemKind1 == IK1_WEAPON)
							b1 = TRUE;
						else if(!pOwner->bArmor && pItemProp->dwItemKind1 == IK1_ARMOR)
							b1 = TRUE;
						else if(!pOwner->bFood && pItemProp->dwItemKind1 == IK1_GENERAL && (pItemProp->dwItemKind2 == IK2_FOOD || pItemProp->dwItemKind2 == IK2_REFRESHER || pItemProp->dwItemKind2 == IK2_POTION))
							b1 = TRUE;
						else if(!pOwner->bEggs && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_GENERAL && pItemProp->dwItemKind3 == IK3_EGG)
							b1 = TRUE;
						else if(!pOwner->bAccessory && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_JEWELRY)
							b1 = TRUE;
						else if( pItemProp->dwItemKind1 == IK1_GOLD && pItemProp->dwItemKind2 == IK2_GOLD && pItemProp->dwItemKind3 == IK3_GOLD )
							b1 = TRUE;
						else if( !pOwner->bBeads && pItemProp->dwItemKind3 == IK3_VIS )
							b1 = TRUE;
						else if( !pOwner->bCard7 && pItemProp->dwItemKind2 == IK2_CARD7 )
							b1 = TRUE;
						else if( !pOwner->bCard4 && pItemProp->dwItemKind2 == IK2_CARD4 )
							b1 = TRUE;
						else if( !pOwner->bCardA && pItemProp->dwItemKind2 == IK2_CARDA )
							b1 = TRUE;
						else if( !pOwner->bCardB && pItemProp->dwItemKind2 == IK2_CARDB )
							b1 = TRUE;
						else if( !pOwner->bOri && pItemProp->dwItemKind2 == IK2_ORI )
							b1 = TRUE;
						else if( !pOwner->bMoon && pItemProp->dwItemKind2 == IK2_MOON )
							b1 = TRUE;
Mover.h, Ihr sucht nach
Code:
BOOL    bQuestItem, bWeapons, bArmor, bCards, bFood, bEggs, bStones, bAccessory;
und ersetzt es durch
Code:
BOOL    bQuestItem, bWeapons, bArmor, bFood, bEggs, bAccessory, bBeads, bCard7, bCard4, bCardA, bCardB, bOri, bMoon;
DPClient.h, sucht nach
Code:
BOOL bInitializedPetCollection, bQuestItem , bWeapons , bArmor , bCards , bFood, bEggs, bStones , bAccessory;
und ersetzt es durch
Code:
BOOL bInitializedPetCollection, bQuestItem, bWeapons, bArmor, bFood, bEggs, bAccessory, bBeads, bCard7, bCard4, bCardA, bCardB, bOri, bMoon;
DPClient.cpp, ändert
Code:
bQuestItem = bWeapons =  bArmor = bCards = bFood = bEggs = bStones = bAccessory = TRUE;
zu
Code:
bQuestItem = bWeapons =  bArmor = bFood = bEggs = bAccessory = bBeads = bCard7 = bCard4 = bCardA = bCardB = bOri = bMoon = TRUE;
Jetzt die WndPetSys.cpp: ersetzt
Code:
		CWndButton* chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_1 );
		chk->SetCheck(g_DPlay.bQuestItem);
	
		chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_2 );
		chk->SetCheck(g_DPlay.bWeapons);

		chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_3 );
		chk->SetCheck(g_DPlay.bArmor);

		chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_4 );
		chk->SetCheck(g_DPlay.bCards);

		chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_5 );
		chk->SetCheck(g_DPlay.bFood);

		chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_6 );
		chk->SetCheck(g_DPlay.bEggs);

		chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_7 );
		chk->SetCheck(g_DPlay.bStones);

		chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_8 );
		chk->SetCheck(g_DPlay.bAccessory);
durch
Code:
		CWndButton* chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_1 );
		chk->SetCheck(g_DPlay.bQuestItem);
	
		chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_2 );
		chk->SetCheck(g_DPlay.bWeapons);

		chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_3 );
		chk->SetCheck(g_DPlay.bArmor);

		chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_4 );
		chk->SetCheck(g_DPlay.bCard7);

		chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_5 );
		chk->SetCheck(g_DPlay.bFood);

		chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_6 );
		chk->SetCheck(g_DPlay.bEggs);

		chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_7 );
		chk->SetCheck(g_DPlay.bOri);

		chk = (CWndButton*) GetDlgItem( WIDC_BUFFCKECK_8 );
		chk->SetCheck(g_DPlay.bAccessory);

		chk = (CWndButton*) GetDlgItem( WIDC_BUFFCHECK_9 );
		chk->SetCheck(g_DPlay.bBeads);

		chk = (CWndButton*) GetDlgItem( WIDC_BUFFCHECK_10);
		chk->SetCheck(g_DPlay.bCard4);

		chk = (CWndButton*) GetDlgItem( WIDC_BUFFCHECK_11);
		chk->SetCheck(g_DPlay.bCardA);

		chk = (CWndButton*) GetDlgItem( WIDC_BUFFCHECK_12);
		chk->SetCheck(g_DPlay.bCardB);

		chk = (CWndButton*) GetDlgItem( WIDC_BUFFCHECK_13);
		chk->SetCheck(g_DPlay.bOri);
Jetzt ersetzt ihr
Code:
	 case WIDC_BUFFCKECK_1: 
		 { 
			 g_DPlay.bQuestItem = !g_DPlay.bQuestItem; 
			 g_DPlay.SendBuffPetCollectUpdate();
			 break; 
		}
	 case WIDC_BUFFCKECK_2: 
		 { 
			 g_DPlay.bWeapons = !g_DPlay.bWeapons; 
			 g_DPlay.SendBuffPetCollectUpdate();  
			 break; 
		 }
	case WIDC_BUFFCKECK_3: 
		{ 
			g_DPlay.bArmor = !g_DPlay.bArmor;
			g_DPlay.SendBuffPetCollectUpdate();  
			break; 
		}
	case WIDC_BUFFCKECK_4: 
		{ 
			g_DPlay.bCards = !g_DPlay.bCards; 
			g_DPlay.SendBuffPetCollectUpdate();  
			break; }
	case WIDC_BUFFCKECK_5:
		{ 
			g_DPlay.bFood = !g_DPlay.bFood; 
			g_DPlay.SendBuffPetCollectUpdate();  
			break; 
		}
    case WIDC_BUFFCKECK_6: 
		{ 
			g_DPlay.bEggs = !g_DPlay.bEggs; 
			g_DPlay.SendBuffPetCollectUpdate();  
			break; 
		}
    case WIDC_BUFFCKECK_7: 
		{ 
			g_DPlay.bStones = !g_DPlay.bStones; 
			g_DPlay.SendBuffPetCollectUpdate();  
			break; 
		}
    case WIDC_BUFFCKECK_8: 
		{ 
			g_DPlay.bAccessory = !g_DPlay.bAccessory; 
			g_DPlay.SendBuffPetCollectUpdate();  
			break; 
		}
durch
Code:
	 case WIDC_BUFFCKECK_1: 
		 { 
			 g_DPlay.bQuestItem = !g_DPlay.bQuestItem; 
			 g_DPlay.SendBuffPetCollectUpdate();
			 break; 
		}
	 case WIDC_BUFFCKECK_2: 
		 { 
			 g_DPlay.bWeapons = !g_DPlay.bWeapons; 
			 g_DPlay.SendBuffPetCollectUpdate();  
			 break; 
		 }
	case WIDC_BUFFCKECK_3: 
		{ 
			g_DPlay.bArmor = !g_DPlay.bArmor;
			g_DPlay.SendBuffPetCollectUpdate();  
			break; 
		}
	case WIDC_BUFFCKECK_4: 
		{ 
			g_DPlay.bCard7 = !g_DPlay.bCard7; 
			g_DPlay.SendBuffPetCollectUpdate();  
			break; }
	case WIDC_BUFFCKECK_5:
		{ 
			g_DPlay.bFood = !g_DPlay.bFood; 
			g_DPlay.SendBuffPetCollectUpdate();  
			break; 
		}
    case WIDC_BUFFCKECK_6: 
		{ 
			g_DPlay.bEggs = !g_DPlay.bEggs; 
			g_DPlay.SendBuffPetCollectUpdate();  
			break; 
		}
    case WIDC_BUFFCKECK_7: 
		{ 
			g_DPlay.bOri = !g_DPlay.bOri; 
			g_DPlay.SendBuffPetCollectUpdate();  
			break; 
		}
    case WIDC_BUFFCKECK_8: 
		{ 
			g_DPlay.bAccessory = !g_DPlay.bAccessory; 
			g_DPlay.SendBuffPetCollectUpdate();  
			break; 
		}
	case WIDC_BUFFCHECK_9: 
		{ 
			g_DPlay.bBeads = !g_DPlay.bBeads; 
			g_DPlay.SendBuffPetCollectUpdate();  
			break; 
		}
	case WIDC_BUFFCHECK_10: 
		{ 
			g_DPlay.bCard4 = !g_DPlay.bCard4; 
			g_DPlay.SendBuffPetCollectUpdate();  
			break; 
		}
	case WIDC_BUFFCHECK_11: 
		{ 
			g_DPlay.bCardA = !g_DPlay.bCardA; 
			g_DPlay.SendBuffPetCollectUpdate();  
			break; 
		}
	case WIDC_BUFFCHECK_12: 
		{ 
			g_DPlay.bCardB = !g_DPlay.bCardB; 
			g_DPlay.SendBuffPetCollectUpdate();  
			break; 
		}
	case WIDC_BUFFCHECK_13: 
		{ 
			g_DPlay.bMoon = !g_DPlay.bMoon; 
			g_DPlay.SendBuffPetCollectUpdate();  
			break; 
		}
DPClient.cpp, sucht nach
Code:
ar << (BYTE) bQuestItem << (BYTE) bWeapons << (BYTE) bArmor << (BYTE) bCards << (BYTE) bFood << (BYTE) bEggs << (BYTE) bStones << (BYTE) bAccessory;
und ersetzt es durch
Code:
ar << (BYTE) bQuestItem << (BYTE) bWeapons << (BYTE) bArmor << (BYTE) bCard7 << (BYTE) bFood << (BYTE) bEggs << (BYTE) bOri << (BYTE) bAccessory << (BYTE) bBeads << (BYTE) bCard4 << (BYTE) bCardA << (BYTE) bCardB << (BYTE) bMoon;
DPSrvr.cpp, sucht nach
Code:
BYTE cQuestItem , cWeapons , cArmor , cCards , cFood , cEggs , cStones , cAccessory;
ersetzt es durch
Code:
BYTE cQuestItem , cWeapons , cArmor , cCard7 , cFood , cEggs , cOri , cAccessory, cBeads, cCard4, cCardA, cCardB, cMoon;
Ersetzt
Code:
ar >> cQuestItem >> cWeapons >> cArmor >> cCards >> cFood >> cEggs >> cStones >> cAccessory;
mit
Code:
ar >> cQuestItem >> cWeapons >> cArmor >> cCard7 >> cFood >> cEggs >> cOri >> cAccessory >> cBeads >> cCard4 >> cCardA >> cCardB >> cMoon;
sucht nach
Code:
            if(cQuestItem > 0) { pUser->bQuestItem = TRUE; } else { pUser->bQuestItem = FALSE; }
            if(cWeapons > 0) { pUser->bWeapons = TRUE; } else { pUser->bWeapons = FALSE; }
            if(cArmor > 0) { pUser->bArmor = TRUE; } else { pUser->bArmor = FALSE; }
            if(cCards > 0) { pUser->bCards = TRUE; } else { pUser->bCards = FALSE; }
            if(cFood > 0) { pUser->bFood = TRUE; } else { pUser->bFood = FALSE; }
            if(cEggs > 0) { pUser->bEggs = TRUE; } else { pUser->bEggs = FALSE; }
            if(cStones > 0) { pUser->bStones = TRUE; } else { pUser->bStones = FALSE; }
            if(cAccessory > 0) { pUser->bAccessory = TRUE; } else { pUser->bAccessory = FALSE; }
und ersetzt es durch
Code:
            if(cQuestItem > 0) { pUser->bQuestItem = TRUE; } else { pUser->bQuestItem = FALSE; }
            if(cWeapons > 0) { pUser->bWeapons = TRUE; } else { pUser->bWeapons = FALSE; }
            if(cArmor > 0) { pUser->bArmor = TRUE; } else { pUser->bArmor = FALSE; }
            if(cCard7 > 0) { pUser->bCard7 = TRUE; } else { pUser->bCard7 = FALSE; }
            if(cFood > 0) { pUser->bFood = TRUE; } else { pUser->bFood = FALSE; }
            if(cEggs > 0) { pUser->bEggs = TRUE; } else { pUser->bEggs = FALSE; }
            if(cOri > 0) { pUser->bOri = TRUE; } else { pUser->bOri = FALSE; }
            if(cAccessory > 0) { pUser->bAccessory = TRUE; } else { pUser->bAccessory = FALSE; }
			if(cBeads > 0){ pUser->bBeads = TRUE; } else { pUser->bBeads = FALSE; }
			if(cCard4 > 0){ pUser->bCard4 = TRUE; } else { pUser->bCard4 = FALSE; }
			if(cCardA > 0){ pUser->bCardA = TRUE; } else { pUser->bCardA = FALSE; }
			if(cCardB > 0){ pUser->bCardB = TRUE; } else { pUser->bCardB = FALSE; }
			if(cMoon > 0){ pUser->bMoon = TRUE; } else { pUser->bMoon = FALSE; }
So, da ich das alles mit ItemKind2 gemacht habe geht ihr jetzt in die defineItemKind.h im Resource Ordner. Dort addet ihr nach
Code:
#define	IK2_GUILDHOUES_COMEBACK	41 //±æµåÇϿ콺 ±Íȯ ÁÖ¹®¼*
einfach
Code:
#define IK2_CARD4 201
#define IK2_CARD7 202
#define IK2_CARDB 203
#define IK2_CARDA 204
#define IK2_ORI 205
#define IK2_MOON 206
Jetzt noch die ResData.h in den Resource Ordner eurer Source und Rebuild(Neuz+Worldserver).

Jetzt müsst ihr den Typ in der propItem.txt anpassen:
Bei jeder 7% Card IK2_CARD7
4% Card IK2_CARD4
A Card IK2_CARDA
B Card IK2_CARDB
Bei Moonstone IK2_MOON und bei Oricalkum IK2_ORI.

jetzt fügt ihr noch die ResData.txt/.inc/.h in eure Serverfiles ein, Mergen und .res Dateien in den Client.

Fertig.

Ich hoffe ihr könnt das gebrauchen, falls ihr Fragen/Vorschläge habt sagt doch bitte bescheid.

So Far, Yakuzai.
09/15/2011 20:47 Shifunu#2
Der sieht ja mal Bombe aus :D Find ihn echt gut :D
09/15/2011 20:52 Sedrika#3
Finde den nicht so dolle, hättest bei der Auswahl gleich ein neues PF Fenster machen können und es statt auf BuffPets zu belassen, auf auf alle setzen.
09/15/2011 20:57 -*N1ce.#4
Gebe sedrika Recht Neues fenster wäre besser :D
09/15/2011 21:17 Yakuzai.#5
Quote:
Originally Posted by Sedrika View Post
Finde den nicht so dolle, hättest bei der Auswahl gleich ein neues PF Fenster machen können und es statt auf BuffPets zu belassen, auf auf alle setzen.
Danke, werde das Morgen noch machen, für alle Pets gillt er aber schon, nur das Fenster ist halt bei den Buffpets ^^
09/15/2011 21:40 FragGoogle#6
Dann binich mal gespannt ;p so find ichs noch nich den burner :o
09/15/2011 22:01 420twisted1#7
does this save the filter options?
09/16/2011 00:19 ™Dryad#8
Muss man den Fillter mit Daisy bearbeiten?
Hab nämlich das problem das bei mir alles übereinander is ..:(..
Sieht grauenhaft aus..^^

pls Help xD

lg
09/16/2011 06:49 MysticAngelz#9
Jap musst es mit Daisy bearbeiten
09/16/2011 09:05 Yakuzai.#10
Die Resdatas sind doch dabei, die musst du nur in deine Files packen und dann die .Res Dateien erstellen.
09/16/2011 17:57 Daniiii#11
#spam deleted
09/17/2011 20:01 Le´Professore#12
Kan mir wer sagen warum ich folgende Errors bekomme?
oder besser gesagt was ich falsch gemacht hab?


Hier ma meine WndPetSys.cpp

Hoffe ihr helft mir..

MFG Le´Professore
09/17/2011 20:12 Ancientsword#13
Quote:
Originally Posted by Le´Professore View Post
Kan mir wer sagen warum ich folgende Errors bekomme?
oder besser gesagt was ich falsch gemacht hab?


Hier ma meine WndPetSys.cpp

Hoffe ihr helft mir..

MFG Le´Professore
Errors lesen hilft somanchmal , hm ? Überall steht das er die Bezeichnung nicht findet , dass heißt es ist nicht definiert. Den Rest kannste dir wohl selber denken.
09/18/2011 15:06 trashee09#14
hey very big thanks very perfect !!

[Only registered and activated users can see links. Click Here To Register...]

((=