Recommended Posts

Posted (edited)

 

Niveau requis Débutant

Temps estimé : Entre 5 et 10 minutes

 

074414giphy.gif

Pré-requis:

- Source server & client

 

- Partie 1 / Source:

 

Server:

Révélation

 

 

1 - Nous allons ouvrir service.h et ajoutée

#define ENABLE_NEW_TYPE_OF_POTION // Ability potions.

2 - Nous allons ouvrir char_item.cpp et rechercher

						case ITEM_AUTO_HP_RECOVERY_S:
						case ITEM_AUTO_HP_RECOVERY_M:
						case ITEM_AUTO_HP_RECOVERY_L:

2.1 - Nous allons ajoutée ceci au dessus de ce code

#ifdef ENABLE_NEW_TYPE_OF_POTION
						case NEW_MOVE_SPEED_POTION:
						case NEW_ATTACK_SPEED_POTION:
						{
							EAffectTypes type = AFFECT_NONE;

							if (item->GetVnum() == NEW_MOVE_SPEED_POTION)
								type = AFFECT_MOV_SPEED;

							if (item->GetVnum() == NEW_ATTACK_SPEED_POTION)
								type = AFFECT_ATT_SPEED;

							if (AFFECT_NONE == type)
								break;

							CAffect * pAffect = FindAffect(type);

							if (NULL == pAffect)
							{
								EPointTypes bonus = POINT_NONE;
								EAffectBits flag = AFF_NONE;

								if (item->GetVnum() == NEW_MOVE_SPEED_POTION)
								{
									bonus = POINT_MOV_SPEED;
									flag = AFF_MOV_SPEED_POTION;
								}

								if (item->GetVnum() == NEW_ATTACK_SPEED_POTION)
								{
									bonus = POINT_ATT_SPEED;
									flag = AFF_ATT_SPEED_POTION;
								}

								AddAffect(type, bonus, item->GetValue(2), flag, INFINITE_AFFECT_DURATION, 0, true);

								item->Lock(true);
								item->SetSocket(0, true);
							}
							else
							{
								RemoveAffect(pAffect);
								item->Lock(false);
								item->SetSocket(0, false);
							}
						}
						break;
#endif

3 - Nous allons ouvrir unique_item.h et rechercher

ITEM_AUTO_SP_RECOVERY_X	=	72730,

3.1 - Ensuite nous ajoutons ceci en dessous:

#ifdef ENABLE_NEW_TYPE_OF_POTION
	NEW_MOVE_SPEED_POTION = 27122,
	NEW_ATTACK_SPEED_POTION = 27123,
#endif

4. Nous avons maintenant terminer côte server source, nous pouvons maintenant compiler le tout.

 

 

Client:

Révélation

 

1. Nous allons ouvrir Locale_inc.h et ajoutée

#define ENABLE_NEW_TYPE_OF_POTION // Ability potions.

2. Nous allons ouvrir PythonApplicationModule.cpp et rechercher

#ifdef ENABLE_COSTUME_SYSTEM
	PyModule_AddIntConstant(poModule, "ENABLE_COSTUME_SYSTEM",	1);
#else
	PyModule_AddIntConstant(poModule, "ENABLE_COSTUME_SYSTEM",	0);
#endif

2.1 Maintenant ajoutons ceci au dessus:

#ifdef ENABLE_NEW_TYPE_OF_POTION
	PyModule_AddIntConstant(poModule, "ENABLE_NEW_TYPE_OF_POTION", 1);
#else
	PyModule_AddIntConstant(poModule, "ENABLE_NEW_TYPE_OF_POTION", 0);
#endif

3. Nous avons maintenant terminer côte client source, nous pouvons maintenant compiler le tout.

 

 

- Partie 2 / Clientside / Root & Local:

Révélation

 

1. Nous allons ouvrir constinfo.py et ajoutée à la fin du fichier

if app.ENABLE_NEW_TYPE_OF_POTION:
	def IS_NEW_SPEED_POTION(itemVnum):
		return IS_NEW_MOVE_SPEED_POTION(itemVnum) or IS_NEW_ATT_SPEED_POTION(itemVnum)

	def IS_NEW_MOVE_SPEED_POTION(itemVnum):
		if itemVnum == 27122:
			return 1

		return 0

	def IS_NEW_ATT_SPEED_POTION(itemVnum):
		if itemVnum == 27123:
			return 1

		return 0

 

2. Nous allons ouvrir uiinventory.py et rechercher

			if constInfo.IS_AUTO_POTION(itemVnum):
				metinSocket = [player.GetItemMetinSocket(slotNumber, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)]	
				
				if slotNumber >= player.INVENTORY_PAGE_SIZE * self.inventoryPageIndex:
					slotNumber -= player.INVENTORY_PAGE_SIZE * self.inventoryPageIndex
					
				isActivated = 0 != metinSocket[0]
				
				if isActivated:
					self.wndItem.ActivateSlot(slotNumber)
					potionType = 0;
					if constInfo.IS_AUTO_POTION_HP(itemVnum):
						potionType = player.AUTO_POTION_TYPE_HP
					elif constInfo.IS_AUTO_POTION_SP(itemVnum):
						potionType = player.AUTO_POTION_TYPE_SP						
					
					usedAmount = int(metinSocket[1])
					totalAmount = int(metinSocket[2])					
					player.SetAutoPotionInfo(potionType, isActivated, (totalAmount - usedAmount), totalAmount, self.__InventoryLocalSlotPosToGlobalSlotPos(i))
				else:
					self.wndItem.DeactivateSlot(slotNumber)

2.1 Nous allons ajoutée en dessous cette fonction

			if app.ENABLE_NEW_TYPE_OF_POTION:
				if constInfo.IS_NEW_SPEED_POTION(itemVnum):
					metinSocket = [player.GetItemMetinSocket(slotNumber, j) for j in xrange(3)] ## player.METIN_SOCKET_MAX_NUM -> 3

					if slotNumber >= player.INVENTORY_PAGE_SIZE * self.inventoryPageIndex:
						slotNumber -= player.INVENTORY_PAGE_SIZE * self.inventoryPageIndex

					isActivated = 0 != metinSocket[0]

					if isActivated:
						self.wndItem.ActivateSlot(slotNumber)
					else:
						self.wndItem.DeactivateSlot(slotNumber)

3. Nous allons ouvrir uitooltip.py et rechercher

if item.USE_SPECIAL == itemSubType:

3.1 Nous allons ajoutée en dessous ceci:

				if app.ENABLE_NEW_TYPE_OF_POTION and constInfo.IS_NEW_SPEED_POTION(itemVnum):
					self.AppendSpace(5)
					self.AppendTextLine(localeInfo.ITEM_PERMANENT, self.POSITIVE_COLOR)

- Dossier Local:

1. Nous allons ouvrir locale_game.txt et ajoutée ceci:

ITEM_PERMANENT	(Permanent)

2. Nous allons ouvrir item_list.txt et ajoutée ceci:

27122	ETC	icon/item/27105.tga
27123	ETC	icon/item/27102.tga

3. Nous allons ouvrir item_desc.txt et ajoutée ceci:

27122	Potion violette (Permanent)	Augmente votre vitesse de déplacement de +10 pendant 10 minutes. Ne peut être vendue.
27123	Potion verte (Permanent)	Augmente votre vitesse d'attaque de +10 durant 10 minutes. Ne peut être vendue.

- Itemname & Itemproto:

27122	Potion violette (permanent)
27123	Potion verte (permanent)
27122	º¸¶ó»ö¹°¾à (´ë)	ITEM_USE	USE_SPECIAL	1	NONE	ANTI_DROP | ANTI_SELL | ANTI_STACK | ANTI_MYSHOP	ITEM_STACKABLE | LOG	NONE	1000	3000	0	0	0	LIMIT_NONE	0	LIMIT_NONE	0	APPLY_NONE	0	APPLY_NONE	0	APPLY_NONE	0	8	600	40	0	0	0	0	0	0
27123	³ì»ö¹°¾à (´ë)	ITEM_USE	USE_SPECIAL	1	NONE	ANTI_DROP | ANTI_SELL | ANTI_STACK | ANTI_MYSHOP	ITEM_STACKABLE | LOG	NONE	3000	3000	0	0	0	LIMIT_NONE	0	LIMIT_NONE	0	APPLY_NONE	0	APPLY_NONE	0	APPLY_NONE	0	7	600	30	0	0	0	0	0	0

Sinon il vous suffit de reproduire les lignes des potions violette & verte et de changer le tag: USE_ABILITY_UP par USE_SPECIAL

N'oubliez pas de dump & repack vos fichier et de transfèrer votre game & db.

 

 

Un soucis avec ce partage? Je vous invite à poster votre problèmes dans la section: Aide / Questions / Support

Source: turkmmo

 

Edited by Scorpion
  • Like 6

Share this post


Link to post
Share on other sites