[Source Release]Scroll of Raise Pet

04/22/2012 13:12 Jopsi332#1
Hier mal die Info zur Scroll

So fangen wir mal an

als erstes die Items

defineitem.h
Code:
#define II_SYS_LION 23565
#define II_SYS_RABBIT 23566
#define II_SYS_TIGER 23567
#define II_SYS_FOX 23568
#define II_SYS_DRAGON 23569
#define II_SYS_HIPPOGRIPH 23570
evtl müsst ihr die ID's anpassen das sie nicht doppelt bei euch vorkommen

2.

propitem.txt
Code:
//raise Pet Scrolls
15	II_SYS_LION	IDS_PROPITEM_TXT_013278	1	1	IK1_SYSTEM	IK2_SYSTEM	IK3_SCROLL	=	=	1	=	0	=	=	=	=	=	=	=	0	=	=	1	=	=	1	1	=	=	=	=	_NONE	0	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	XI_SYS_EXPAN01	=	=	=	=	=	=	WUI_NOW	=	=	=	=	=	=	=	=	=	0	0	0	0	0	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	"""Itm_SysSysScrBxLuck.dds"""	0	""""""	IDS_PROPITEM_TXT_013279		
15	II_SYS_RABBIT	IDS_PROPITEM_TXT_013280	1	1	IK1_SYSTEM	IK2_SYSTEM	IK3_SCROLL	=	=	1	=	0	=	=	=	=	=	=	=	0	=	=	1	=	=	1	1	=	=	=	=	_NONE	0	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	XI_SYS_EXPAN01	=	=	=	=	=	=	WUI_NOW	=	=	=	=	=	=	=	=	=	0	0	0	0	0	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	"""Itm_SysSysScrBxLuck.dds"""	0	""""""	IDS_PROPITEM_TXT_013281	
15	II_SYS_FOX	IDS_PROPITEM_TXT_013282	1	1	IK1_SYSTEM	IK2_SYSTEM	IK3_SCROLL	=	=	1	=	0	=	=	=	=	=	=	=	0	=	=	1	=	=	1	1	=	=	=	=	_NONE	0	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	XI_SYS_EXPAN01	=	=	=	=	=	=	WUI_NOW	=	=	=	=	=	=	=	=	=	0	0	0	0	0	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	"""Itm_SysSysScrBxLuck.dds"""	0	""""""	IDS_PROPITEM_TXT_013283	
15	II_SYS_TIGER	IDS_PROPITEM_TXT_013288	1	1	IK1_SYSTEM	IK2_SYSTEM	IK3_SCROLL	=	=	1	=	0	=	=	=	=	=	=	=	0	=	=	1	=	=	1	1	=	=	=	=	_NONE	0	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	XI_SYS_EXPAN01	=	=	=	=	=	=	WUI_NOW	=	=	=	=	=	=	=	=	=	0	0	0	0	0	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	"""Itm_SysSysScrBxLuck.dds"""	0	""""""	IDS_PROPITEM_TXT_013289	
15	II_SYS_DRAGON	IDS_PROPITEM_TXT_013284	1	1	IK1_SYSTEM	IK2_SYSTEM	IK3_SCROLL	=	=	1	=	0	=	=	=	=	=	=	=	0	=	=	1	=	=	1	1	=	=	=	=	_NONE	0	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	XI_SYS_EXPAN01	=	=	=	=	=	=	WUI_NOW	=	=	=	=	=	=	=	=	=	0	0	0	0	0	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	"""Itm_SysSysScrBxLuck.dds"""	0	""""""	IDS_PROPITEM_TXT_013285	
15	II_SYS_HIPPOGRIPH	IDS_PROPITEM_TXT_013286	1	1	IK1_SYSTEM	IK2_SYSTEM	IK3_SCROLL	=	=	1	=	0	=	=	=	=	=	=	=	0	=	=	1	=	=	1	1	=	=	=	=	_NONE	0	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	XI_SYS_EXPAN01	=	=	=	=	=	=	WUI_NOW	=	=	=	=	=	=	=	=	=	0	0	0	0	0	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	"""Itm_SysSysScrBxLuck.dds"""	0	""""""	IDS_PROPITEM_TXT_013286
propitem.txt.txt
Code:
IDS_PROPITEM_TXT_013278 Scroll of Raise Pet(Lion)
IDS_PROPITEM_TXT_013279 you get an Perfect Lion
IDS_PROPITEM_TXT_013280 Scroll of Raise Pet(Rabbit)
IDS_PROPITEM_TXT_013281 you get an Perfect Rabbit
IDS_PROPITEM_TXT_013282 Scroll of Raise Pet(Fox)
IDS_PROPITEM_TXT_013283 you get an Perfect Fox
IDS_PROPITEM_TXT_013284 Scroll of Raise Pet(Dragon)
IDS_PROPITEM_TXT_013285 you get an Perfect Dragon
IDS_PROPITEM_TXT_013286 Scroll of Raise Pet(Hippogriph)
IDS_PROPITEM_TXT_013287 you get an Perfect Hippogriph
IDS_PROPITEM_TXT_013288 Scroll of Raise Pet(Tiger)
IDS_PROPITEM_TXT_013289 you get an Perfect Tiger

so

nun die source sachen

MoverSkill.Cpp

unter
Code:
BOOL CMover::DoUseItem( DWORD dwData, DWORD dwFocusId, int nPart  )
{
#ifdef __WORLDSERVER
	if( IsDie() )
		return FALSE;
#ifdef __S_SERVER_UNIFY
	if( ((CUser*)this)->m_bAllAction == FALSE )
		return FALSE;
#endif // __S_SERVER_UNIFY

	WORD dwType = LOWORD( dwData );
	WORD dwId   = HIWORD( dwData );

	CItemBase* pItemBase = GetItemId( dwId ); 
	if( IsUsableItem( pItemBase ) == FALSE )
		return FALSE;

	CItemElem* pItemElem = (CItemElem*)pItemBase;
	ItemProp* pItemProp  = pItemBase->GetProp();
					

	if( pItemProp->dwItemKind3 == IK3_LINK )
	{
		pItemProp	= prj.GetItemProp( pItemProp->dwActiveSkill );
		if( pItemProp == NULL )
			return FALSE;
	}

	DWORD dwItemKind1    = pItemProp->dwItemKind1;
	DWORD dwItemKind2    = pItemProp->dwItemKind2;
	DWORD dwItemKind3    = pItemProp->dwItemKind3;
fügt ihr das ein

Code:
#ifdef __RAISE_PET
#ifdef __WORLDSERVER
	BOOL bPet;
	BYTE nKind;
	CUser *pUser = ((CUser*)this);//Momentan User der die scroll auslöst
		CPet* pPet	= pUser->GetPet();//Pet hohlen
	if( pPet && pUser->GetPet()->GetLevel() != PL_EGG )//IST ES HÖHER ALS EGG?
	{
		return FALSE;
	}
	if( pItemProp->dwID == II_SYS_LION )//LÖWE
	{
		nKind = 1;
		bPet = FALSE;
	}
	else if( pItemProp->dwID == II_SYS_RABBIT )//HASE
	{
		nKind = 2;
		bPet = FALSE;
	}
		else if( pItemProp->dwID == II_SYS_TIGER )//TIGER
	{
		nKind = 0;
		bPet = TRUE;
	}
		else if( pItemProp->dwID == II_SYS_HORSE )//PFERD
	{
		nKind = 6;
		bPet = TRUE;
	}
		else if( pItemProp->dwID == II_SYS_DRAGON )//DRACHE
	{
		nKind = 4;
		bPet = TRUE;
	}
			else if( pItemProp->dwID == II_SYS_HIPPOGRIPH )//HIPPOGREIF
	{
		nKind = 5;
		bPet = TRUE;
	}
			else if( pItemProp->dwID == II_SYS_FOX )//FUCHS
	{
		nKind = 3;
		bPet = TRUE;
	}
	if( bPet == TRUE)//SCROLL OF RAISE PET ?
	{
	if( IsValidObj( pUser ) == FALSE )//FEHLER ABGFRAGE
		return TRUE;

	if( pPet == NULL )	//FEHLER ABFRAGE
		return TRUE;

	// kind
	if( nKind >= PK_MAX ) //FEHLER ABFRAGE
		return TRUE;

	// exp
	BYTE nExpRate	= 99; //EXP RATE

	BYTE nLevel		= 5;// S KLASSE

	if( nLevel > PL_S ) //FEHLER CODE ABFRAGE
		return TRUE;

	
	BYTE nLife; //LIFE
		nLife	= 99;//LEBEN AUF 99 SETZEN

	CItemElem* pItemElem2	= pUser->GetPetItem();
	pPet->SetKind( nKind );//ART DES PETS
	pPet->SetLevel( nLevel );//LEVEL SETZEN
	if( nLevel == PL_EGG )
		pPet->SetKind( 0 );	// initialize
	pItemElem2->m_dwItemId	= pPet->GetItemId();
	pPet->SetEnergy( pPet->GetMaxEnergy() );//MAXIMALE ENERGY
	DWORD dwExp		= pPet->GetMaxExp() * nExpRate / 100;
	pPet->SetExp( dwExp );

	for( int i = 0; i < 6; i++ )//LEVEL SETZEN
		pPet->SetAvailLevel( i, 9 );


	pPet->SetLife( nLife );//DIE LEBEN SETZEN

	if( pUser->HasPet() )
		pUser->RemovePet();//EGG REINHOHLEN

	g_dpDBClient.CalluspPetLog( pUser->m_idPlayer, pItemElem2->GetSerialNumber(), 0, PETLOGTYPE_LEVELUP, pPet );

	pUser->AddPet( pPet, PF_PET_GET_AVAIL );	// PET EINFÜGEN
	g_UserMng.AddPetLevelup( pUser, MAKELONG( (WORD)pPet->GetIndex(), (WORD)pPet->GetLevel() ) );	// öâ
	pUser->UpdateItem( (BYTE)pItemElem->m_dwObjId, UI_NUM, 0 );//SCROLL LÖSCHEN
	return TRUE;
	}
#endif//__WORLDSERVER
#endif//__RAISE_PET
jetz noch in VersionCommon.h
Code:
#define __RAISE_PET
04/22/2012 13:43 Bloodyrain™#2
Nice release :D
04/22/2012 14:26 Crystal-Craft#3
super realease funkt
04/22/2012 14:37 .Tear#4
Wärs nich sinnvoller n Hatching Promoter zu erweitern mit nem Fenster in dem Abgefragt wird welches Pet man will anstatt für jedes Pet ne eigene Rolle zu machen? o.O
04/22/2012 14:44 Crystal-Craft#5
achja und das Pet kann man bei mri nicht mehr reinholen(nur per "Pet abbrechen") und nach einem relogg hat es kein icon mehr ^^
04/22/2012 17:57 Wtdx3#6
Wollt dich nur daraufhinweisen dass du II_SYS_HORSE vergessen hast zu definieren. (Probitem.txt ,DefineItem.h)
Man merkt es spätestens beim compilen :p
04/22/2012 18:15 I<3-electro&house#7
kleiner fix:
Quote:
Originally Posted by Jopsi332 View Post
Code:
pItemElem->m_dwItemId	= pPet->GetItemId();
zu
Code:
pItemElem[COLOR="Red"]2[/COLOR]->m_dwItemId	= pPet->GetItemId();
dann speichert es auch richtig ;)
und dass hier sollte mit in die if( bPet == TRUE) abfrage
Code:
	if( pPet && pUser->GetPet()->GetLevel() != PL_EGG )//IST ES HÖHER ALS EGG?
	{
		return FALSE;
	}
sonst kann es zu komplikationen mit den anderen sachen in der funktion kommen
04/22/2012 18:23 Sekkusu[DW]#8
PHP Code:
if( pPet && pUser->GetPet()->GetLevel() != PL_EGG )//IST ES HÖHER ALS EGG?
{
return 
FALSE;
}


if( 
IsValidObjpUser ) == FALSE )//FEHLER ABGFRAGE
return TRUE;



if( 
pPet == NULL //FEHLER ABFRAGE
return TRUE
Mal returnst du TRUE mal FALSE, konntest dich nicht entscheiden, wa? XD

Mal davon abgesehn, dein Kommentar bei der Abfrage ob das Level höher ist als das eines Ei's.

PHP Code:
if( pPet && pUser->GetPet()->GetLevel() != PL_EGG )//IST ES HÖHER ALS EGG? 
Du überprüffst NUR ob es NICHT Egg ist, nicht obs höher ist .. also könnte theoretisch der Wert auch unter PL_EGG sein, wenn mans macht dann richtig.

Ein weiter release, der mir zeigt das deine Quellcode's fürn Arsch sind, und das niemand was bei dir kaufen sollte, da deine programmier - Erfahrung immernoch genau so wenig wie vorher ist.

Mal davon abgesehn wäre ein switch bei soviele else if besser angebracht.
04/22/2012 18:33 Jopsi332#9
hab ich auch schon gemerkt das switch besser wäre aber ob der kommentra jetz höher oder ungleich ist ist egal theoretisch da die abfrage richtig ist.
04/22/2012 18:45 Flyff_Service#10
Wenn du es besser weißt, wieso benutzt du dann kein Switch? Der Kommentar zeigt auch wie viel Ahnung du von deinem eigenem Code hast.
04/22/2012 18:57 Jay Niize#11
Ist ne starke Idee, leider zu schwer umgesetzt. Anstatt so viele Rollen zu machen, sollte man einfach ein Fenster haben in dem man alles auswählen kann. Ist zwar ne große Arbeit, ist aber sehr benutzerfreundlich und zudem Unique. (:

~Greetings
04/22/2012 19:12 Jopsi332#12
Quote:
Originally Posted by Flyff_Service View Post
Wenn du es besser weißt, wieso benutzt du dann kein Switch? Der Kommentar zeigt auch wie viel Ahnung du von deinem eigenem Code hast.
weils mir erst aufgefallen ist beim reinstellen hier.
04/22/2012 19:41 Unleashed!#13
Quote:
Originally Posted by Jopsi332 View Post
weils mir erst aufgefallen ist beim reinstellen hier.
Dann änder es doch kurz? Oder kannst du das selber nicht? :S
Warum für jedes Pet ne eigene Scroll, ist doch unnötig o.O
04/22/2012 19:53 I<3-electro&house#14
Code:
E:deleted
habe es mal nen bisschen verändert und erweitert, ist zwar immernoch ohne fenster aber naja hf
04/22/2012 20:14 Jopsi332#15
Quote:
Originally Posted by Unleashed! View Post
Dann änder es doch kurz? Oder kannst du das selber nicht? :S
Warum für jedes Pet ne eigene Scroll, ist doch unnötig o.O
faulheit triffts eher.