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

C++ - Recensement des Modifications des Sources Metin2


Messages recommandés

 

Niveau requis Intermédiaire

Temps estimé : Entre 5 et 10 minutes

 

 

Réécriture by Xayah

 

Voici un petit listing de modifications (simples) à faire dans vos sources si vous le souhaitez !

 

Pré-requis:

  • Sources 

 

I. Listing des modifications des sources

Révélation

 

A. Activer les bonus 6/7

Révélation

Rendez-vous dans les sources game et dans le fichier char_item.cpp

Recherchez le code suivant (il est présent deux fois) :

if (LC_IsEurope() || LC_IsSingapore() || LC_IsVietnam()) return false;

Commentez les deux codes comme ceci :

//if (LC_IsEurope() || LC_IsSingapore() || LC_IsVietnam()) return false;

 

Sauvegardez & compilez !

 

B. Chance de lier les pierres sur une arme ou une armure

Révélation

Rendez-vous dans les sources game et dans le fichier char_item.cpp

Recherchez le code suivant

if (number(1, 100) <= 30)

Modifiez le dernier nombre (30) qui représente le taux de réussite.

 

C. Activer la fonction pc_change_name

Révélation

Rendez-vous dans les sources game puis dans le fichier questlua_pc.cpp

Recherchez le code suivant :

if ( LC_IsEurope() ) { lua_pushnumber(L, 5); return 1; }

Commentez le comme ceci :

//if ( LC_IsEurope() )
//{ 
	//lua_pushnumber(L, 5); 
	//return 1;
//}

 

 

D. Activer la vente des objets 70035 & 70024 dans les marchands

Révélation

Rendez-vous dans les sources game puis dans le fichier shop.cpp

Recherchez le code suivant

if (!m_pkPC)
{
	if (quest::CQuestManager::instance().GetEventFlag("hivalue_item_sell") == 0)
	{
		//ĂŕşąŔÇ ±¸˝˝ && ¸¸łâÇŃö ŔĚşĄĆ® 
		if (item->GetVnum() == 70024 || item->GetVnum() == 70035)
		{
			return SHOP_SUBHEADER_GC_END;
		}
	}
}

Remplacez le par :

if (!m_pkPC)
{
	if (item->GetVnum() == 70024 || item->GetVnum() == 70035)
	{
		return SHOP_SUBHEADER_GC_END;
	}
}

 

 

Puis recherchez le code suivant :

//HIVALUE_ITEM_EVENT
if (quest::CQuestManager::instance().GetEventFlag("hivalue_item_sell") == 0)
{
//ĂŕşąŔÇ ±¸˝˝ && ¸¸łâÇŃö ŔĚşĄĆ® 
if (item.vnum == 70024 || item.vnum == 70035)
{ 
continue;
}
}
//END_HIVALUE_ITEM_EVENT

Remplacez le par :

//HIVALUE_ITEM_EVENT
if (item.vnum == 70024 || item.vnum == 70035)
{ 
continue;
}
//END_HIVALUE_ITEM_EVENT

 


E. Permettre d'acheter des objets à 0 yang

Révélation

Rendez-vous dans les sources game puis dans le fichier shop.cpp

Recherchez le code suivant :

if (r_item.price <= 0)

Remplacez le par :

if (r_item.price < 0)

 

 

F. Désactiver les 6/7 sur les Costumes

Révélation

Rendez-vous dans les sources game puis dans char_item.cpp

Recherchez ceci :

case 71051 :

A la ligne là :

if (item2->GetAttributeSetIndex() == -1)

Au dessus de cette ligne, ajoutez ceci :

if (item2->GetType() == ITEM_COSTUME) //6-7 javítás kosztümön 
{ 
  	return false;
}

 

 

G. Modifier le temps de Shutdown

Révélation

Rendez-vous dans les sources game puis dans le fichier cmd_general.cpp

Recherchez ceci :

Shutdown(10);

Modifiez le nombre par un autre !  (en secondes)

 

H. Loupe désactivée pour montrer un item dans le chat

Révélation

Rendez-vous dans les sources game puis dans le fichier input_main.cpp

Recherchez le code suivant :

int ProcessTextTag(LPCHARACTER ch, const char * c_pszText, size_t len)
{
	//2012.05.17 ±è¿ë¿í
	//0 : Á¤»óÀûÀ¸·Î »ç¿ë
	//1 : ±Ý°­°æ ºÎÁ·
	//2 : ±Ý°­°æÀÌ ÀÖÀ¸³ª, °³ÀλóÁ¡¿¡¼­ »ç¿ëÁß
	//3 : ±³È¯Áß
	//4 : ¿¡·¯
	int hyperlinks;
	bool colored;

Remplacez le par :

int ProcessTextTag(LPCHARACTER ch, const char * c_pszText, size_t len)
 {
	 return 0;
	int hyperlinks;
	bool colored;

 

 

I. Bloquer le jet de yangs au sol

Révélation

Rendez-vous dans les sources game puis dans char_item.cpp

Recherchez ce code :

bool CHARACTER::DropGold(int gold)

Remplacez le par :

bool CHARACTER::DropGold(int gold)
{
  return false;
}

 

 

J. Modifier le temps de changement des bonus

Révélation

Rendez-vous dans les sources game puis dans char_item.cpp

Recherchez ce code :

										if (pPC)
										{
											DWORD dwNowMin = get_global_time() / 60;

											DWORD dwLastChangeItemAttrMin = pPC->GetFlag(msc_szLastChangeItemAttrFlag);

											if (dwLastChangeItemAttrMin + dwChangeItemAttrCycle > dwNowMin)
											{
												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¼Ó¼ºÀ» ¹Ù²ÛÁö %dºÐ À̳»¿¡´Â ´Ù½Ã º¯°æÇÒ ¼ö ¾ø½À´Ï´Ù.(%d ºÐ ³²À½)"),
														dwChangeItemAttrCycle, dwChangeItemAttrCycle - (dwNowMin - dwLastChangeItemAttrMin));
												return false;
											}

											pPC->SetFlag(msc_szLastChangeItemAttrFlag, dwNowMin);
										}

Remplacez par :

										if (pPC)
										{
											DWORD dwNowMin = get_global_time() / 60;
											//Comment for 0 switch players start 
											//DWORD dwLastChangeItemAttrMin = pPC->GetFlag(msc_szLastChangeItemAttrFlag);
											//if (dwLastChangeItemAttrMin + dwChangeItemAttrCycle > dwNowMin)
											//{ 
													//ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ĽÓĽşŔ» ąŮ˛ŰÁö %dşĐ ŔĚł»żˇ´Â ´Ů˝Ă şŻ°ćÇŇ Ľö ľř˝Ŕ´Ď´Ů.(%d şĐ ł˛Ŕ˝)"),
														//dwChangeItemAttrCycle, dwChangeItemAttrCycle - (dwNowMin - dwLastChangeItemAttrMin));
												//return false;
											//} //Comment for 0 switch players end
											pPC->SetFlag(msc_szLastChangeItemAttrFlag, dwNowMin);
										}

 

 

K. Modifier le temps des objets au sol

Révélation

Rendez-vous dans les sources game puis dans char_item.cpp

Recherchez le code suivant :

ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¶łľîÁř ľĆŔĚĹŰŔş 3şĐ ČÄ »ç¶óÁý´Ď´Ů.")); pkItemToDrop->StartDestroyEvent();

Modifiez le comme ceci (par exemple pour 30 secondes) :

ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¶łľîÁř ľĆŔĚĹŰŔş 3şĐ ČÄ »ç¶óÁý´Ď´Ů.")); pkItemToDrop->StartDestroyEvent(30);

 

 

L. Faire des émotions sans masque

Révélation

Rendez-vous dans les sources game puis dans cmd_emotion.cpp

Recherchez le code suivant :

bool CHARACTER_CanEmotion(CHARACTER& rch)
{
	// °áÈ¥½Ä ¸Ê¿¡¼­´Â »ç¿ëÇÒ ¼ö ÀÖ´Ù.
	if (marriage::WeddingManager::instance().IsWeddingMap(rch.GetMapIndex()))
		return true;

	// ¿­Á¤ÀÇ °¡¸é Âø¿ë½Ã »ç¿ëÇÒ ¼ö ÀÖ´Ù.
	if (rch.IsEquipUniqueItem(UNIQUE_ITEM_EMOTION_MASK))
		return true;

	if (rch.IsEquipUniqueItem(UNIQUE_ITEM_EMOTION_MASK2))
		return true;

	return false;
}

Remplacez le par :

bool CHARACTER_CanEmotion(CHARACTER& rch)
{
		return true;
}

 

 

M. Fix war

Révélation

Rendez-vous dans les sources game puis dans cmd_general.cpp

Recherchez le code suivant :

	if (*arg2)
	{
		str_to_number(type, arg2);

		if (type >= GUILD_WAR_TYPE_MAX_NUM)
			type = GUILD_WAR_TYPE_FIELD;
	}

Remplacez le par :

	if (*arg2)
	{
		str_to_number(type, arg2);

		if (type >= GUILD_WAR_TYPE_MAX_NUM)
			type = GUILD_WAR_TYPE_FIELD; 
		if(type < 0) //war crash fix
          	return;
	}

 

 

N.Enlever les potions à chaque Up de votre personnage

Révélation

Rendez-vous dans les sources game puis dans char.cpp

Recherchez le code suivant :

				if (GetLevel() <= 10)
					AutoGiveItem(27001, 2);
				else if (GetLevel() <= 30)
					AutoGiveItem(27002, 2);
				else
				{
					AutoGiveItem(27002, 2);
//					AutoGiveItem(27003, 2);
				}

Il suffit de supprimer le tout !

 

O.Client version check fix

Révélation

Rendez-vous dans les sources game puis dans config.cpp

Recherchez le code suivant :

if (version > date)

Remplacez le par :

if (version != date)

 

 

P.Debug de l'anti stun

Révélation

Rendez-vous dans les sources game puis dans char_resist.cpp

Recherchez ce code :

int immune_pct = 90;

Remplacez le par :

int immune_pct = 100;

 

 

Q.Supprimer la perte d’expérience à la mort

Révélation

Rendez-vous dans les sources game puis dans char_battle.cpp

Recherchez le code suivant :

void CHARACTER::DeathPenalty(BYTE bTown)
{

Remplacez par :

void CHARACTER::DeathPenalty(BYTE bTown)
{
	return;

 

 

R.Modifier le taux de réussite d'un joyau

Révélation

Rendez-vous dans les sources game puis dans char_battle.cpp

Recherchez le code suivant :

if (GetLevel() < 50)

Modifiez le nombre qui représente le taux de réussite !

 

S.Debug de la cape de bravoure + Modifier distance de cape

Révélation

Rendez-vous dans les sources game puis dans char_battle.cpp

Recherchez le code suivant :

if (number(1, 100) <= 50);

Remplacez le par :

if (number(1, 100) <= 100);

 

Modifier la distance de cape :

Recherchez :

if (DISTANCE_APPROX(ch->GetX() - m_ch->GetX(), ch->GetY() - m_ch->GetY()) < 5000)

Modifiez la valeur 5000 par la distance que vous souhaitez !

 

T.Chatter au niveau 1

Révélation

Rendez-vous dans les sources game puis dans input_main.cpp

Cherchez le code suivant :

         const int SHOUT_LIMIT_LEVEL = g_iUseLocale ? 15 : 3;

        if (ch->GetLevel() < SHOUT_LIMIT_LEVEL)
        {
            ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("외치기는 레벨 %d 이상만 사용 가능 합니다."), SHOUT_LIMIT_LEVEL);
            return (iExtraLen);
        }

Supprimez le ou commentez le avec des //

 

U.Passage des skills en M à 17

Révélation

Rendez-vous dans les sources game puis dans char_skill.cpp

Recherchez ce code :

if (number(1, 21 - MIN(20, GetSkillLevel(pkSk->dwVnum))) == 1)

Supprimez le ou commentez le avec des //

 

V.Lire des manuels de compétences sans expèrience

Révélation

Rendez-vous dans les sources game puis dans char_skill.cpp

Recherchez le code suivant :

need_exp = 20000;

Remplacez le par :

need_exp = 0;

 

 

W.Rendre les manuels de compétences empilables

Révélation

Rendez-vous dans les sources game puis dans char_item.cpp

Recherchez le code suivant :

ITEM_MANAGER::instance().RemoveItem(item);

Modifiez le par :

item->SetCount(item->GetCount() - 1); 

 

Attention ! N'oubliez pas de rendre les manuels empilables dans l'item_proto (flag 4 ou ITEM_STACKABLE)

 

 

X.Supprimer le Temps d'attente sur les manuels

Révélation

Rendez-vous dans les sources game puis dans char_skill.cpp

Recherchez le code suivant :

return m_pSkillLevels ? m_pSkillLevels[dwVnum].tNextRead : 0;

Modifiez le par :

return 0;

 

 

Y.Activer l'Effet de Pénétration

Révélation

Rendez-vous dans les sources game puis dans char_battle.cpp

Recherchez le code suivant :

IsPenetrate = true;

Recherchez ensuite plus bas : 

dam += GetPoint(POINT_DEF_GRADE) * (100 + GetPoint(POINT_DEF_BONUS)) / 100;

Ajoutez en dessous :

EffectPacket(SE_PENETRATE); // effet de la penetration

 

 

Z.Accélérer la vitesse du texte des quêtes

Révélation

Rendez-vous dans les sources client puis dans PythonEventManager.cpp

Recherchez le code suivant

const long c_lNormal_Waiting_Time = 10;

Modifiez la valeur 10 par celle que vous souhaitez !

 

1.Potions Rouges & Bleus illimités

Révélation

Rendez-vous dans les sources game puis dans char_item.cpp

Recherchez le code suivant :

case 27006 :

Recherchez plus bas :

item->SetCount(item->GetCount()-1);

Commenter ou supprimer cette ligne !

 

2.Debug Aura de l'Epee : Reste activé sans arme

Révélation

Rendez-vous dans les sources game puis dans char_skill.cpp

Recherchez :

bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaster)

A l'intérieur de la fonction : ajoutez :

if ((dwVnum == SKILL_GEOMKYUNG || dwVnum == SKILL_GWIGEOM) && !GetWear(WEAR_WEAPON))
return false;

044652IiEbzKv.png

 

3. Réapparaitre avec 100% de vos points de vie

Révélation

Rendez-vous dans les sources game puis dans cmd_general.cpp

Recherchez :

ch->PointChange(POINT_HP, 50 - ch->GetHP());

Modifiez toutes les instances que vous y trouverez par :

ch->PointChange(POINT_HP, ch->GetMaxHP() - ch->GetHP());

 

 

4. Modifier le nombre de joueurs dans un groupe

Révélation

Rendez-vous dans les sources game puis dans party.h

Recherchez :

PARTY_MAX_MEMBER

Ca doit ressembler à ça :

enum{
  PARTY_ENOUGH_MINUTE_FOR_EXP_BONUS = 60,
  PARTY_HEAL_COOLTIME_LONG = 60,
  PARTY_HEAL_COOLTIME_SHORT = 30,
  PARTY_MAX_MEMBER = 8,
  PARTY_DEFAULT_RANGE = 5000,
};

Modifiez 8 par la valeur que vous souhaitez :

PARTY_MAX_MEMBER = 8,

 

 

5. Flèches illimités

Révélation

Rendez-vous dans les sources game puis dans char_battle.cpp

Recherchez :

iCount = iCount - MIN(iCount, dwArrowCount);

Commenter ou supprimer ce morceau de code !

 

6. Enlever l'italique de l'écriture GM dans les messages privés

Révélation

Rendez-vous dans les sources client puis dans PythonChat.cpp

Recherchez :

CGraphicText* pkDefaultFont = (iType == CPythonChat::WHISPER_TYPE_GM) ? static_cast(DefaultItalicFont_GetResource()) : static_cast(DefaultFont_GetResource());

Remplacez :

CGraphicText* pkDefaultFont = (iType == CPythonChat::WHISPER_TYPE_GM) ? static_cast(DefaultFont_GetResource()) : static_cast(DefaultFont_GetResource());

 

 

7. Modifier le nombre de Manuel pour up le skill en G

Révélation

Rendez-vous dans les sources du game puis dans char_skill.cpp

Recherchez :

int need_bookcount = GetSkillLevel(dwSkillVnum) - 20;

Exemple : M1 > M2 > M3... avec 1 livre : Modifiez comme ci :

int need_bookcount = 0;

Exemple : M1 > M2 > M3... avec 2 livres :

int need_bookcount = 1;

 

 

8. Debug et fix des crashs du core dans les donjons

Révélation

Rendez-vous dans les sources game puis dans char.cpp

Recherchez :

void CHARACTER::SetParty(LPPARTY pkParty)

Recherchez plus bas :

	//if (m_pkDungeon && IsPC())
//SetDungeon(NULL);

Remplacez :

    if (m_pkDungeon && IsPC() && !pkParty)
       SetDungeon(NULL);

 

 

9. Activer le Drop des Fragments de pierre dragon

Révélation

Rendez-vous dans les sources game puis dans item_manager.cpp

Recherchez :

   //if (pkChr->GetLevel() >= 30 && (GetDropPerKillPct(50, 100, iDeltaPercent, "ds_drop") >= number(1, iRandRange)))
   //{
   //    const static DWORD dragon_soul_gemstone = 30270;
   //    if ((item = CreateItem(dragon_soul_gemstone, 1, 0, true)))
   //        vec_item.push_back(item);
   //}

Remplacez :

   if (pkChr->GetLevel() >= 30 && (GetDropPerKillPct(50, 100, iDeltaPercent, "ds_drop") >= number(1, iRandRange)))
   {
       const static DWORD dragon_soul_gemstone = 30270;
       if ((item = CreateItem(dragon_soul_gemstone, 1, 0, true)))
           vec_item.push_back(item);
   }

Tapez : /e ds_drop 1

Activer dès le lv30 le drop des fragments !

 

10. Emotions pour Tous 

Révélation

Vous aurez simplement besoin du cmd_emotion.cpp ( Game )

Cela permettra d'utiliser les émotions quelques soit le sexe du personnage.

 

Cherchez :

		if (IS_SET(emotion_types[i].flag, OTHER_SEX_ONLY))
		{
			if (GET_SEX(ch)==GET_SEX(victim))
			{
				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("À̼º°£¿¡¸¸ ÇÒ ¼ö ÀÖ½À´Ï´Ù."));
				return;
			}
		}
Remplacez le par ceci :
#define __GAY_MODE__
#ifndef __GAY_MODE__
		if (IS_SET(emotion_types[i].flag, OTHER_SEX_ONLY))
		{
			if (GET_SEX(ch)==GET_SEX(victim))
			{
				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("À̼º°£¿¡¸¸ ÇÒ ¼ö ÀÖ½À´Ï´Ù."));
				return;
			}
		}
#endif

 

11. Fix des Pierres d'Esprits ( Si Empilable )

Révélation

Game/Char_item.cpp

 

Cherchez >

ITEM_MANAGER::instance().RemoveItem(item, "REMOVE (METIN)");

Changer avec >

item->SetCount(item->GetCount() - 1);

 

12. Fix des Manuels ( Si Empilable )

Révélation

Common/Service.h

 

Ajouter >

#define ENABLE_BOOKS_STACK_FIX

 

Game/Char_item.cpp

 

INFORMATIONS : vous y trouverait 5 fois ce code à changer 

 if (LearnSkillByBook(dwSkillVnum, iPct))

 

Commençons :

 

Cherchez >

case ITEM_SKILLBOOK:

 

Cherchez dans la fonction >

				if (true == LearnSkillByBook(dwVnum))
				{
					item->SetCount(item->GetCount() - 1);

 

Remplacer comme ceci >

				if (true == LearnSkillByBook(dwVnum))
				{
#ifdef ENABLE_BOOKS_STACK_FIX
					item->SetCount(item->GetCount() - 1);
#else
					ITEM_MANAGER::instance().RemoveItem(item);
#endif

 

 

Cherchez >

if (LearnSkillByBook(SKILL_LEADERSHIP))

 

Remplacer comme ceci >

				if (LearnSkillByBook(SKILL_LEADERSHIP))
				{
#ifdef ENABLE_BOOKS_STACK_FIX
					item->SetCount(item->GetCount() - 1);
#else
					ITEM_MANAGER::instance().RemoveItem(item);
#endif

 

Cherchez >

if (LearnSkillByBook(SKILL_COMBO, iPct))

 

Remplacer comme ceci >

				if (LearnSkillByBook(SKILL_COMBO, iPct))
				{
#ifdef ENABLE_BOOKS_STACK_FIX
						item->SetCount(item->GetCount() - 1);
#else
						ITEM_MANAGER::instance().RemoveItem(item);
#endif

 

Cherchez >

if (LearnSkillByBook(dwSkillVnum, iPct))

 

Remplacer comme ceci >

				if (LearnSkillByBook(dwSkillVnum, iPct))
				{
#ifdef ENABLE_BOOKS_STACK_FIX
						item->SetCount(item->GetCount() - 1);
#else
						ITEM_MANAGER::instance().RemoveItem(item);
#endif

 

Cherchez >

if (LearnSkillByBook(dwSkillVnum, iPct))

 

Remplacer comme ceci >

				if (LearnSkillByBook(dwSkillVnum, iPct))
				{
#ifdef ENABLE_BOOKS_STACK_FIX
						item->SetCount(item->GetCount() - 1);
#else
						ITEM_MANAGER::instance().RemoveItem(item);
#endif

 

Cherchez >

if (LearnSkillByBook(dwSkillVnum, iPct))

 

Remplacer comme ceci >

				if (LearnSkillByBook(dwSkillVnum, iPct))
				{
#ifdef ENABLE_BOOKS_STACK_FIX
						item->SetCount(item->GetCount() - 1);
#else
						ITEM_MANAGER::instance().RemoveItem(item);
#endif

 

Cherchez >

if (LearnSkillByBook(dwSkillVnum, iPct))

 

Remplacer comme ceci >

				if (LearnSkillByBook(dwSkillVnum, iPct))
				{
#ifdef ENABLE_BOOKS_STACK_FIX
						item->SetCount(item->GetCount() - 1);
#else
						ITEM_MANAGER::instance().RemoveItem(item);
#endif

 

Cherchez >

if (LearnSkillByBook(dwSkillVnum, iPct))

 

Remplacer comme ceci >

				if (LearnSkillByBook(dwSkillVnum, iPct))
				{
#ifdef ENABLE_BOOKS_STACK_FIX
						item->SetCount(item->GetCount() - 1);
#else
						ITEM_MANAGER::instance().RemoveItem(item);
#endif

 

Puis pour en finir cherchez >

case 70102:

 

Au dessus vous trouverez  >

ITEM_MANAGER::instance().RemoveItem(item);

 

Remplacer comme ceci >

#ifdef ENABLE_BOOKS_STACK_FIX
						item->SetCount(item->GetCount() - 1);
#else
						ITEM_MANAGER::instance().RemoveItem(item);
#endif

 

 

13. Modifié Vitesse ( Déplacement + Attaque )

Révélation

Vous aurez besoin de simplement du char.cpp ( Game )

 

Cherchez : 

SetPoint(POINT_MOV_SPEED,    100);
SetPoint(POINT_ATT_SPEED,    100);

Il se peut que vous avez autre chose que 100 donc je vous recommande de chercher SetPoint(POINT_ATT_SPEED)

Il vous suffit de modifier 100 par le montant que vous voudriez avoir.

14. Orbe de Bénédiction / Cuivre Magique / Taxe Inter-Empire

Révélation

1. Pour commencer il faut décompiler le game, voir ici: https://funky-emu.net/topic/16195-c-compiler-le-game-db-metin2-40250/ (Merci infiniment à Calypso).

2. Nous allons aller chercher le fichier shop.cpp à cet emplacement: /usr/src/mainline/Srcs/Server/game/src et l'ouvrir

3. Pour les rendre visibles en magasin, il vous faut chercher le code ci-dessous à l'aide de "CTRL+F" :

if (item->GetVnum() == 70024 || item->GetVnum() == 70035)
---
70024 est le code de l'orbe
70035 celui du cuivre
---
 Pour afficher l'orbe et non le cuivre vous faites comme ceci :
if (item->GetVnum() == 70035)
 
Et pour afficher le cuivre et non l'orbe vous faites comme ceci :
if (item->GetVnum() == 70024)
 
cherchez le code ci-dessous et faites de même :
if (item.vnum == 70024 || item.vnum == 70035)
Pour afficher les deux, vous retirez le petit bout de code ou commentez la ligne.
---
4. Le prix multiplié x3 dans un autre empire que le sien.

Toujours dans le fichier shop.cpp, cherchez le code ci-dessous à l'aide de "CTRL+F" :

pack2.items[i].price = item.price * 3;
 
*3 est le chiffre par lequel on multiplie le prix des item's dans un autre empire
Vous pouvez le multiplier par *1, *2, *3, *4, *5, etc...
Pour ne pas multiplier le prix d'un item il vous suffit de mettre *1
Vous devez faire la même ici :
if (it->second) // if other empire, price is triple
dwPrice *= 3;
---
5. Vous avez fini, il ne vous reste plus qu'a compiler le game.

 

 

 

 

Pour continuer:

Si vous avez un problème n'hésitez pas à le poster dans la section AQS !

 

  • Metin2 Dev 4
  • Confused 1
  • Love 11

L’ordinateur a de la mémoire mais aucun souvenir...

Lien vers le commentaire
Partager sur d’autres sites

  • 2 mois après...
  • 1 mois après...
  • Funkiest

Pour le numéro 4, c'est non fonctionnel, voici ce qu'il faut faire :

 

Chercher ça dans shop.cpp :

if (!m_pkPC)
{
	if (quest::CQuestManager::instance().GetEventFlag("hivalue_item_sell") == 0)
	{
		//ĂŕşąŔÇ ±¸˝˝ && ¸¸łâÇŃö ŔĚşĄĆ® 
		if (item->GetVnum() == 70024 || item->GetVnum() == 70035)
		{
			return SHOP_SUBHEADER_GC_END;
		}
	}
}

 

Et le remplacer par ça :

if (!m_pkPC)
{
	if (item->GetVnum() == 70024 || item->GetVnum() == 70035)
	{
		return SHOP_SUBHEADER_GC_END;
	}
}

 

Puis plus loin chercher :

//HIVALUE_ITEM_EVENT
if (quest::CQuestManager::instance().GetEventFlag("hivalue_item_sell") == 0)
{
//ĂŕşąŔÇ ±¸˝˝ && ¸¸łâÇŃö ŔĚşĄĆ® 
if (item.vnum == 70024 || item.vnum == 70035)
{ 
continue;
}
}
//END_HIVALUE_ITEM_EVENT

 

 

et remplacer par :

 

//HIVALUE_ITEM_EVENT
if (item.vnum == 70024 || item.vnum == 70035)
{ 
continue;
}
//END_HIVALUE_ITEM_EVENT

 

Cependant, le mieux c'est d'aller en jeu et de taper "/e hivalue_item_sell 1" et vous pourrez les avoir en shop :)

 

Edit : Tu l'as dit plus loin, tu t'es trompé en recopiant et tu as décalé, le n°5 n'est pas présent :/

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...
  • 2 mois après...
  • 1 an après...
  • 1 mois après...
  • 2 mois après...

Pour le numéro 4, c'est non fonctionnel, voici ce qu'il faut faire :

 

Chercher ça dans shop.cpp :

if (!m_pkPC)
{
	if (quest::CQuestManager::instance().GetEventFlag("hivalue_item_sell") == 0)
	{
		//ĂŕşąŔÇ ±¸˝˝ && ¸¸łâÇŃö ŔĚşĄĆ® 
		if (item->GetVnum() == 70024 || item->GetVnum() == 70035)
		{
			return SHOP_SUBHEADER_GC_END;
		}
	}
}

 

Et le remplacer par ça :

if (!m_pkPC)
{
	if (item->GetVnum() == 70024 || item->GetVnum() == 70035)
	{
		return SHOP_SUBHEADER_GC_END;
	}
}

 

Puis plus loin chercher :

//HIVALUE_ITEM_EVENT
if (quest::CQuestManager::instance().GetEventFlag("hivalue_item_sell") == 0)
{
//ĂŕşąŔÇ ±¸˝˝ && ¸¸łâÇŃö ŔĚşĄĆ® 
if (item.vnum == 70024 || item.vnum == 70035)
{ 
continue;
}
}
//END_HIVALUE_ITEM_EVENT

 

 

et remplacer par :

 

//HIVALUE_ITEM_EVENT
if (item.vnum == 70024 || item.vnum == 70035)
{ 
continue;
}
//END_HIVALUE_ITEM_EVENT

 

Cependant, le mieux c'est d'aller en jeu et de taper "/e hivalue_item_sell 1" et vous pourrez les avoir en shop :)

 

Edit : Tu l'as dit plus loin, tu t'es trompé en recopiant et tu as décalé, le n°5 n'est pas présent :/

 

 

Ou bien, tout simplement remplacé le " if (quest::CQuestManager::instance().GetEventFlag("hivalue_item_sell") == 0)"

par " if (quest::CQuestManager::instance().GetEventFlag("hivalue_item_sell") == 1)"

Lien vers le commentaire
Partager sur d’autres sites

  • Funkiest

Mais qu'est-ce que tu dis ? xDDD

 

Là ta modification fait juste en sorte que le flag par défaut pour ne pas vendre d'item comme les 5ème bonus en magasin devient un true à la place d'un false. C'est inutile en plus d'être idiot xD

T'as même pas besoin de toucher aux sources pour mettre en vente ces objets, t'as juste à faire /e hivalue_item_sell 1 en jeu et tu peux les vendre...

Lien vers le commentaire
Partager sur d’autres sites

  • 5 mois après...
  • Développeur

Sinon, pour permettre que les marchands (marchande, armes, armure, etc) puissent vendre des items à 0 yang il faut faire ça:

 

Dans shop.cpp chercher :

 

if (r_item.price <= 0)

 

 

Et remplacer par:

 

if (r_item.price < 0)

 

 

Faudrait mettre à jour le post ;)

Lien vers le commentaire
Partager sur d’autres sites

  • 1 an après...
  • 2 mois après...


  • brilliantdiscord_widget
  • Flux d'Activité

    1. 21

      Metin2 en 2020 peut-on en parler?

    2. 0

      METIN2Project

    3. 3

      Ressources - UnPack - Metin2 Client - Officiel

    4. 0

      Barre des tâches d'argent étendue

    5. 16

      Redémarrage automatique des channels

    6. 16

      Multi Logo GM / SGM / GA

    7. 0

      comment extraire les fichiers locale.epk locale.eix sur le serveur officiel ?

    8. 2

      Funky-emu.net -> fr.metin2.dev

  • 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.