Aller au contenu
Top-Metin2.org - Vous êtes à la recherche d'un serveur Metin 2 ? ×
×
×
  • Créer...

Abbility Potions


Messages recommandés

  • Robot

Centre de Téléchargement

Hidden Content

    Give reaction to this post to see the hidden content.
( Interne )

 

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

 

  • Metin2 Dev 4
  • Love 10

french_banner.gif

Lien vers le commentaire
Partager sur d’autres sites

  • 1 an après...

Bonjour  jai suivi ton tuto qui m'a lair tres bien explique mais le soucis c'est que une fois effectuer j'ai ce message d'erreur qui ce met 

Le 17/03/2016 à 20:16, Lars_ban a dit :

Merci pour ces "plusisieurs" couleur l'auteur

 

d'accord avec mon VDD :hap:

 

à l’instant, bizzard59 a dit :

Bonjour  jai suivi ton tuto qui m'a lair tres bien explique mais le soucis c'est que une fois effectuer j'ai ce message d'erreur qui ce met 

LOG 

systeme.py(line:273) runmainscript

systeme.py(line192) execfile

systeme.py(line163) Run

prototype.py(line3) <module>

...

...

...

 Run -<type 'exeptions.AttributeError'>: 'module' object has no attribute ' ENABLE_NEW_TYPE_OF_POTION

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...
  • 4 mois après...


  • brilliantdiscord_widget
  • Flux d'Activité

    1. 37
    2. 21

      Metin2 en 2020 peut-on en parler?

    3. 0

      METIN2Project

    4. 3

      Ressources - UnPack - Metin2 Client - Officiel

    5. 0

      Barre des tâches d'argent étendue

    6. 16

      Redémarrage automatique des channels

    7. 16

      Multi Logo GM / SGM / GA

  • En ligne récemment

    • Aucun utilisateur enregistré regarde cette page.

Information importante

Conditions d’utilisation / Politique de confidentialité / Règles / Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.