Yeni element bonuslarının aktifleştirilmesi

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 46

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
BURDAN ÖNCELİKLE SÖYLÜYORUM ALINTIDIR SADECE BILGI OLSUN DIYE PAYLASMAK ISTEDIM PAYLAŞILDIYSA KAPATILABİLİR TRANSLATE EDİP PAYLAŞMAK İSTEDİM
O9Eu1CUDTauik5kDQ-mzZQ.png

JyjQEjSBTDeKcfzlxEjrsw.png


Server Kısmı:
service.h'ı aç ve aşşağıdaki bloğu ekle
Kod:
#define ELEMENT_NEW_BONUSES
length.h'de arat:
Kod:
MAX_APPLY_NUM, };
ÜSTÜNE Ekle:
Kod:
#ifdef ELEMENT_NEW_BONUSES     APPLY_ATTBONUS_ELEC,     APPLY_ATTBONUS_FIRE,     APPLY_ATTBONUS_ICE,     APPLY_ATTBONUS_WIND,     APPLY_ATTBONUS_EARTH,     APPLY_ATTBONUS_DARK, #endif

Aynı dosyadaki enumERaceFlags ile değiştir :
Kod:
enum ERaceFlags { RACE_FLAG_ANIMAL = (1 << 0), RACE_FLAG_UNDEAD = (1 << 1), RACE_FLAG_DEVIL = (1 << 2), RACE_FLAG_HUMAN = (1 << 3), RACE_FLAG_ORC = (1 << 4), RACE_FLAG_MILGYO = (1 << 5), RACE_FLAG_INSECT = (1 << 6), RACE_FLAG_FIRE = (1 << 7), RACE_FLAG_ICE = (1 << 8), RACE_FLAG_DESERT = (1 << 9), RACE_FLAG_TREE = (1 << 10), RACE_FLAG_ELEC = (1 << 11), RACE_FLAG_WIND = (1 << 12), RACE_FLAG_EARTH = (1 << 13), RACE_FLAG_DARK = (1 << 14), RACE_FLAG_ATT_ELEC = (1 << 15), RACE_FLAG_ATT_FIRE = (1 << 16), RACE_FLAG_ATT_ICE = (1 << 17), RACE_FLAG_ATT_WIND = (1 << 18), RACE_FLAG_ATT_EARTH = (1 << 19), RACE_FLAG_ATT_DARK = (1 << 20), };
battle.cpp'de arat:
Kod:
else if (pkVictim->IsRaceFlag(RACE_FLAG_ICE))             iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_ICE)) / 100;
Üstüne Ekle:
Kod:
#ifdef ELEMENT_NEW_BONUSES         else if (pkVictim->IsRaceFlag(RACE_FLAG_ELEC))             iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_ELEC)) / 100;         else if (pkVictim->IsRaceFlag(RACE_FLAG_WIND))             iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_WIND)) / 100;         else if (pkVictim->IsRaceFlag(RACE_FLAG_EARTH))             iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_EARTH)) / 100;         else if (pkVictim->IsRaceFlag(RACE_FLAG_DARK))             iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_DARK)) / 100; #endif
char.cpp'de arat
Kod:
case POINT_NORMAL_HIT_DEFEND_BONUS:
Üstüne Ekle:
Kod:
#ifdef ELEMENT_NEW_BONUSES         case POINT_ATTBONUS_ELEC:         case POINT_ATTBONUS_FIRE:         case POINT_ATTBONUS_ICE:         case POINT_ATTBONUS_WIND:         case POINT_ATTBONUS_EARTH:         case POINT_ATTBONUS_DARK: #endif
char.cpp'de arat:
Kod:
PointChange(aApplyInfo[bApplyType].bPointType, iVal);
Üstüne Ekle:
Kod:
#ifdef ELEMENT_NEW_BONUSES         case APPLY_ATTBONUS_ELEC:         case APPLY_ATTBONUS_FIRE:         case APPLY_ATTBONUS_ICE:         case APPLY_ATTBONUS_WIND:         case APPLY_ATTBONUS_EARTH:         case APPLY_ATTBONUS_DARK: #endif
char.h'da arat:
Kod:
}; enum EPKModes
Üstüne Ekle:
Kod:
#ifdef ELEMENT_NEW_BONUSES     POINT_ATTBONUS_ELEC,     POINT_ATTBONUS_WIND,     POINT_ATTBONUS_EARTH,     POINT_ATTBONUS_DARK, #endif
constants.cpp'de arat:
Kod:
}; const int aiItemMagicAttributePercentHigh[ITEM_ATTRIBUTE_MAX_LEVEL] = {30, 40, 20, 8, 2};
Üstüne Ekle:
Kod:
#ifdef ELEMENT_NEW_BONUSES     { POINT_ATTBONUS_ELEC,},     { POINT_ATTBONUS_FIRE, },     { POINT_ATTBONUS_ICE, },     { POINT_ATTBONUS_WIND, },     { POINT_ATTBONUS_EARTH, },     { POINT_ATTBONUS_DARK, }, #endif
Şimdi db sourcenin içine girelim.
ProtoReader.cpp'de Arat:
Kod:
string arApplyType[*] = { "APPLY_NONE", "APPLY_MAX_HP", "APPLY_MAX_SP", "APPLY_CON", "APPLY_INT", "APPLY_STR", "APPLY_DEX", "APPLY_ATT_SPEED", "APPLY_MOV_SPEED", "APPLY_CAST_SPEED", "APPLY_HP_REGEN", "APPLY_SP_REGEN", "APPLY_POISON_PCT", "APPLY_STUN_PCT", "APPLY_SLOW_PCT", "APPLY_CRITICAL_PCT", "APPLY_PENETRATE_PCT", "APPLY_ATTBONUS_HUMAN", "APPLY_ATTBONUS_ANIMAL", "APPLY_ATTBONUS_ORC", "APPLY_ATTBONUS_MILGYO", "APPLY_ATTBONUS_UNDEAD", "APPLY_ATTBONUS_DEVIL", "APPLY_STEAL_HP", "APPLY_STEAL_SP", "APPLY_MANA_BURN_PCT", "APPLY_DAMAGE_SP_RECOVER", "APPLY_BLOCK", "APPLY_DODGE", "APPLY_RESIST_SWORD", "APPLY_RESIST_TWOHAND", "APPLY_RESIST_DAGGER", "APPLY_RESIST_BELL", "APPLY_RESIST_FAN", "APPLY_RESIST_BOW","APPLY_RESIST_FIRE", "APPLY_RESIST_ELEC", "APPLY_RESIST_MAGIC", "APPLY_RESIST_WIND", "APPLY_REFLECT_MELEE", "APPLY_REFLECT_CURSE", "APPLY_POISON_REDUCE", "APPLY_KILL_SP_RECOVER", "APPLY_EXP_DOUBLE_BONUS", "APPLY_GOLD_DOUBLE_BONUS", "APPLY_ITEM_DROP_BONUS", "APPLY_POTION_BONUS", "APPLY_KILL_HP_RECOVER", "APPLY_IMMUNE_STUN", "APPLY_IMMUNE_SLOW", "APPLY_IMMUNE_FALL", "APPLY_SKILL", "APPLY_BOW_DISTANCE", "APPLY_ATT_GRADE_BONUS", "APPLY_DEF_GRADE_BONUS", "APPLY_MAGIC_ATT_GRADE", "APPLY_MAGIC_DEF_GRADE", "APPLY_CURSE_PCT", "APPLY_MAX_STAMINA", "APPLY_ATTBONUS_WARRIOR", "APPLY_ATTBONUS_ASSASSIN", "APPLY_ATTBONUS_SURA", "APPLY_ATTBONUS_SHAMAN", "APPLY_ATTBONUS_MONSTER", "APPLY_MALL_ATTBONUS", "APPLY_MALL_DEFBONUS", "APPLY_MALL_EXPBONUS", "APPLY_MALL_ITEMBONUS", "APPLY_MALL_GOLDBONUS", "APPLY_MAX_HP_PCT", "APPLY_MAX_SP_PCT", "APPLY_SKILL_DAMAGE_BONUS","APPLY_NORMAL_HIT_DAMAGE_BONUS", "APPLY_SKILL_DEFEND_BONUS", "APPLY_NORMAL_HIT_DEFEND_BONUS", "APPLY_PC_BANG_EXP_BONUS", "APPLY_PC_BANG_DROP_BONUS", "APPLY_EXTRACT_HP_PCT", "APPLY_RESIST_WARRIOR", "APPLY_RESIST_ASSASSIN", "APPLY_RESIST_SURA", "APPLY_RESIST_SHAMAN", "APPLY_ENERGY", "APPLY_DEF_GRADE", "APPLY_COSTUME_ATTR_BONUS", "APPLY_MAGIC_ATTBONUS_PER", "APPLY_MELEE_MAGIC_ATTBONUS_PER", "APPLY_RESIST_ICE", "APPLY_RESIST_EARTH", "APPLY_RESIST_DARK", "APPLY_ANTI_CRITICAL_PCT", "APPLY_ANTI_PENETRATE_PCT", "APPLY_ATTBONUS_WOLF", "APPLY_RESIST_WOLF", "APPLY_RESIST_CLAW", "APPLY_ANTI_RESIST_MAGIC", "APPLY_ATTBONUS_ELECT", "APPLY_ATTBONUS_FIRE", "APPLY_ATTBONUS_ICE", "APPLY_ATTBONUS_WIND", "APPLY_ATTBONUS_EARTH", "APPLY_ATTBONUS_DARK" };
Bununla Değiştir:
Kod:
#ifdef ELEMENT_NEW_BONUSES     string arApplyType[*] = { "APPLY_NONE", "APPLY_MAX_HP", "APPLY_MAX_SP", "APPLY_CON", "APPLY_INT", "APPLY_STR", "APPLY_DEX", "APPLY_ATT_SPEED", "APPLY_MOV_SPEED", "APPLY_CAST_SPEED", "APPLY_HP_REGEN", "APPLY_SP_REGEN", "APPLY_POISON_PCT", "APPLY_STUN_PCT", "APPLY_SLOW_PCT", "APPLY_CRITICAL_PCT", "APPLY_PENETRATE_PCT", "APPLY_ATTBONUS_HUMAN", "APPLY_ATTBONUS_ANIMAL", "APPLY_ATTBONUS_ORC", "APPLY_ATTBONUS_MILGYO", "APPLY_ATTBONUS_UNDEAD", "APPLY_ATTBONUS_DEVIL", "APPLY_STEAL_HP", "APPLY_STEAL_SP", "APPLY_MANA_BURN_PCT", "APPLY_DAMAGE_SP_RECOVER", "APPLY_BLOCK", "APPLY_DODGE", "APPLY_RESIST_SWORD", "APPLY_RESIST_TWOHAND", "APPLY_RESIST_DAGGER", "APPLY_RESIST_BELL", "APPLY_RESIST_FAN", "APPLY_RESIST_BOW","APPLY_RESIST_FIRE", "APPLY_RESIST_ELEC", "APPLY_RESIST_MAGIC", "APPLY_RESIST_WIND", "APPLY_REFLECT_MELEE", "APPLY_REFLECT_CURSE", "APPLY_POISON_REDUCE", "APPLY_KILL_SP_RECOVER", "APPLY_EXP_DOUBLE_BONUS", "APPLY_GOLD_DOUBLE_BONUS", "APPLY_ITEM_DROP_BONUS", "APPLY_POTION_BONUS", "APPLY_KILL_HP_RECOVER", "APPLY_IMMUNE_STUN", "APPLY_IMMUNE_SLOW", "APPLY_IMMUNE_FALL", "APPLY_SKILL", "APPLY_BOW_DISTANCE", "APPLY_ATT_GRADE_BONUS", "APPLY_DEF_GRADE_BONUS", "APPLY_MAGIC_ATT_GRADE", "APPLY_MAGIC_DEF_GRADE", "APPLY_CURSE_PCT", "APPLY_MAX_STAMINA", "APPLY_ATTBONUS_WARRIOR", "APPLY_ATTBONUS_ASSASSIN", "APPLY_ATTBONUS_SURA", "APPLY_ATTBONUS_SHAMAN", "APPLY_ATTBONUS_MONSTER", "APPLY_MALL_ATTBONUS", "APPLY_MALL_DEFBONUS", "APPLY_MALL_EXPBONUS", "APPLY_MALL_ITEMBONUS", "APPLY_MALL_GOLDBONUS", "APPLY_MAX_HP_PCT", "APPLY_MAX_SP_PCT", "APPLY_SKILL_DAMAGE_BONUS","APPLY_NORMAL_HIT_DAMAGE_BONUS", "APPLY_SKILL_DEFEND_BONUS", "APPLY_NORMAL_HIT_DEFEND_BONUS", "APPLY_PC_BANG_EXP_BONUS", "APPLY_PC_BANG_DROP_BONUS", "APPLY_EXTRACT_HP_PCT", "APPLY_RESIST_WARRIOR", "APPLY_RESIST_ASSASSIN", "APPLY_RESIST_SURA", "APPLY_RESIST_SHAMAN", "APPLY_ENERGY", "APPLY_DEF_GRADE", "APPLY_COSTUME_ATTR_BONUS", "APPLY_MAGIC_ATTBONUS_PER", "APPLY_MELEE_MAGIC_ATTBONUS_PER", "APPLY_RESIST_ICE", "APPLY_RESIST_EARTH", "APPLY_RESIST_DARK", "APPLY_ANTI_CRITICAL_PCT", "APPLY_ANTI_PENETRATE_PCT", "APPLY_ATTBONUS_WOLF", "APPLY_RESIST_WOLF", "APPLY_RESIST_CLAW", "APPLY_ANTI_RESIST_MAGIC", "APPLY_ATTBONUS_ELECT", "APPLY_ATTBONUS_FIRE", "APPLY_ATTBONUS_ICE", "APPLY_ATTBONUS_WIND", "APPLY_ATTBONUS_EARTH", "APPLY_ATTBONUS_DARK" }; #else     string arApplyType[*] = { "APPLY_NONE", "APPLY_MAX_HP", "APPLY_MAX_SP", "APPLY_CON", "APPLY_INT", "APPLY_STR", "APPLY_DEX", "APPLY_ATT_SPEED", "APPLY_MOV_SPEED", "APPLY_CAST_SPEED", "APPLY_HP_REGEN", "APPLY_SP_REGEN", "APPLY_POISON_PCT", "APPLY_STUN_PCT", "APPLY_SLOW_PCT", "APPLY_CRITICAL_PCT", "APPLY_PENETRATE_PCT", "APPLY_ATTBONUS_HUMAN", "APPLY_ATTBONUS_ANIMAL", "APPLY_ATTBONUS_ORC", "APPLY_ATTBONUS_MILGYO", "APPLY_ATTBONUS_UNDEAD", "APPLY_ATTBONUS_DEVIL", "APPLY_STEAL_HP", "APPLY_STEAL_SP", "APPLY_MANA_BURN_PCT", "APPLY_DAMAGE_SP_RECOVER", "APPLY_BLOCK", "APPLY_DODGE", "APPLY_RESIST_SWORD", "APPLY_RESIST_TWOHAND", "APPLY_RESIST_DAGGER", "APPLY_RESIST_BELL", "APPLY_RESIST_FAN", "APPLY_RESIST_BOW", "APPLY_RESIST_FIRE", "APPLY_RESIST_ELEC", "APPLY_RESIST_MAGIC", "APPLY_RESIST_WIND", "APPLY_REFLECT_MELEE", "APPLY_REFLECT_CURSE", "APPLY_POISON_REDUCE", "APPLY_KILL_SP_RECOVER", "APPLY_EXP_DOUBLE_BONUS", "APPLY_GOLD_DOUBLE_BONUS", "APPLY_ITEM_DROP_BONUS", "APPLY_POTION_BONUS", "APPLY_KILL_HP_RECOVER", "APPLY_IMMUNE_STUN", "APPLY_IMMUNE_SLOW", "APPLY_IMMUNE_FALL", "APPLY_SKILL", "APPLY_BOW_DISTANCE", "APPLY_ATT_GRADE_BONUS", "APPLY_DEF_GRADE_BONUS", "APPLY_MAGIC_ATT_GRADE", "APPLY_MAGIC_DEF_GRADE", "APPLY_CURSE_PCT", "APPLY_MAX_STAMINA", "APPLY_ATTBONUS_WARRIOR", "APPLY_ATTBONUS_ASSASSIN", "APPLY_ATTBONUS_SURA", "APPLY_ATTBONUS_SHAMAN", "APPLY_ATTBONUS_MONSTER", "APPLY_MALL_ATTBONUS", "APPLY_MALL_DEFBONUS", "APPLY_MALL_EXPBONUS", "APPLY_MALL_ITEMBONUS", "APPLY_MALL_GOLDBONUS", "APPLY_MAX_HP_PCT", "APPLY_MAX_SP_PCT", "APPLY_SKILL_DAMAGE_BONUS", "APPLY_NORMAL_HIT_DAMAGE_BONUS", "APPLY_SKILL_DEFEND_BONUS", "APPLY_NORMAL_HIT_DEFEND_BONUS", "APPLY_PC_BANG_EXP_BONUS", "APPLY_PC_BANG_DROP_BONUS", "APPLY_EXTRACT_HP_PCT", "APPLY_RESIST_WARRIOR", "APPLY_RESIST_ASSASSIN", "APPLY_RESIST_SURA", "APPLY_RESIST_SHAMAN", "APPLY_ENERGY", "APPLY_DEF_GRADE", "APPLY_COSTUME_ATTR_BONUS", "APPLY_MAGIC_ATTBONUS_PER", "APPLY_MELEE_MAGIC_ATTBONUS_PER", "APPLY_RESIST_ICE", "APPLY_RESIST_EARTH", "APPLY_RESIST_DARK", "APPLY_ANTI_CRITICAL_PCT", "APPLY_ANTI_PENETRATE_PCT", "APPLY_ATTBONUS_WOLF", "APPLY_RESIST_WOLF", "APPLY_RESIST_CLAW", "APPLY_ANTI_RESIST_MAGIC", }; #endif
Derleyin ve.
Client SRC'deki işlemlere geçelim:
locale_inc.h'i açıp altına ekleyelim:
Kod:
#define ELEMENT_NEW_BONUSES
PythonItemModule.cpp'de arat:
Kod:
#ifdef ENABLE_NEW_EQUIPMENT_SYSTEM
Üstüne Ekle:
Kod:
#ifdef ELEMENT_NEW_BONUSES     PyModule_AddIntConstant(poModule, "APPLY_ATTBONUS_ELEC", CItemData::APPLY_ATTBONUS_ELEC);     PyModule_AddIntConstant(poModule, "APPLY_ATTBONUS_FIRE", CItemData::APPLY_ATTBONUS_FIRE);     PyModule_AddIntConstant(poModule, "APPLY_ATTBONUS_ICE", CItemData::APPLY_ATTBONUS_ICE);     PyModule_AddIntConstant(poModule, "APPLY_ATTBONUS_WIND", CItemData::APPLY_ATTBONUS_WIND);     PyModule_AddIntConstant(poModule, "APPLY_ATTBONUS_EARTH", CItemData::APPLY_ATTBONUS_EARTH);     PyModule_AddIntConstant(poModule, "APPLY_ATTBONUS_DARK", CItemData::APPLY_ATTBONUS_DARK); #endif
Packet.h'de Arat:
Kod:
POINT_MIN_WEP = 200,
Üstüne Ekle:
Kod:
#ifdef ELEMENT_NEW_BONUSES         POINT_ATTBONUS_ELEC,         POINT_ATTBONUS_WIND,         POINT_ATTBONUS_EARTH,         POINT_ATTBONUS_DARK, #endif
itemData.h'da Arat:
Kod:
MAX_APPLY_NUM,         };         enum EImmuneFlags
Üstüne Ekle:
Kod:
#ifdef ELEMENT_NEW_BONUSES             APPLY_ATTBONUS_ELEC,             APPLY_ATTBONUS_FIRE,             APPLY_ATTBONUS_ICE,             APPLY_ATTBONUS_WIND,             APPLY_ATTBONUS_EARTH,             APPLY_ATTBONUS_DARK, #endif
Root dosyalarına geçelim.
uiToolTip.py'yi açın
ve Aratın:
Kod:
}         ATTRIBUTE_NEED_WIDTH = {
Üstüne Ekle:
Kod:
item.APPLY_ATTBONUS_ELEC : localeInfo.TOOLTIP_APPLY_ATTBONUS_ELEC,         item.APPLY_ATTBONUS_FIRE : localeInfo.TOOLTIP_APPLY_ATTBONUS_FIRE,         item.APPLY_ATTBONUS_ICE : localeInfo.TOOLTIP_APPLY_ATTBONUS_ICE,         item.APPLY_ATTBONUS_WIND : localeInfo.TOOLTIP_APPLY_ATTBONUS_WIND,         item.APPLY_ATTBONUS_EARTH : localeInfo.TOOLTIP_APPLY_ATTBONUS_EARTH,         item.APPLY_ATTBONUS_DARK : localeInfo.TOOLTIP_APPLY_ATTBONUS_DARK,
Dump Protoya gidelim ve ItemCSVReader.cpp'de Aratın:
Kod:
#include "ItemCSVReader.h"
Sonrasına Ekleyin:
Kod:
#define ELEMENT_NEW_BONUSES
Arat:
Kod:
string arApplyType[*] = {"APPLY_NONE", "APPLY_MAX_HP", "APPLY_MAX_SP", "APPLY_CON", "APPLY_INT", "APPLY_STR", "APPLY_DEX", "APPLY_ATT_SPEED", "APPLY_MOV_SPEED", "APPLY_CAST_SPEED", "APPLY_HP_REGEN", "APPLY_SP_REGEN", "APPLY_POISON_PCT", "APPLY_STUN_PCT", "APPLY_SLOW_PCT", "APPLY_CRITICAL_PCT", "APPLY_PENETRATE_PCT", "APPLY_ATTBONUS_HUMAN", "APPLY_ATTBONUS_ANIMAL", "APPLY_ATTBONUS_ORC", "APPLY_ATTBONUS_MILGYO", "APPLY_ATTBONUS_UNDEAD", "APPLY_ATTBONUS_DEVIL", "APPLY_STEAL_HP", "APPLY_STEAL_SP", "APPLY_MANA_BURN_PCT", "APPLY_DAMAGE_SP_RECOVER", "APPLY_BLOCK", "APPLY_DODGE", "APPLY_RESIST_SWORD", "APPLY_RESIST_TWOHAND", "APPLY_RESIST_DAGGER", "APPLY_RESIST_BELL", "APPLY_RESIST_FAN", "APPLY_RESIST_BOW","APPLY_RESIST_FIRE", "APPLY_RESIST_ELEC", "APPLY_RESIST_MAGIC", "APPLY_RESIST_WIND", "APPLY_REFLECT_MELEE", "APPLY_REFLECT_CURSE", "APPLY_POISON_REDUCE", "APPLY_KILL_SP_RECOVER", "APPLY_EXP_DOUBLE_BONUS", "APPLY_GOLD_DOUBLE_BONUS", "APPLY_ITEM_DROP_BONUS", "APPLY_POTION_BONUS", "APPLY_KILL_HP_RECOVER", "APPLY_IMMUNE_STUN", "APPLY_IMMUNE_SLOW", "APPLY_IMMUNE_FALL", "APPLY_SKILL", "APPLY_BOW_DISTANCE", "APPLY_ATT_GRADE_BONUS", "APPLY_DEF_GRADE_BONUS", "APPLY_MAGIC_ATT_GRADE", "APPLY_MAGIC_DEF_GRADE", "APPLY_CURSE_PCT", "APPLY_MAX_STAMINA", "APPLY_ATTBONUS_WARRIOR", "APPLY_ATTBONUS_ASSASSIN", "APPLY_ATTBONUS_SURA", "APPLY_ATTBONUS_SHAMAN", "APPLY_ATTBONUS_MONSTER", "APPLY_MALL_ATTBONUS", "APPLY_MALL_DEFBONUS", "APPLY_MALL_EXPBONUS", "APPLY_MALL_ITEMBONUS", "APPLY_MALL_GOLDBONUS", "APPLY_MAX_HP_PCT", "APPLY_MAX_SP_PCT", "APPLY_SKILL_DAMAGE_BONUS","APPLY_NORMAL_HIT_DAMAGE_BONUS", "APPLY_SKILL_DEFEND_BONUS", "APPLY_NORMAL_HIT_DEFEND_BONUS", "APPLY_PC_BANG_EXP_BONUS", "APPLY_PC_BANG_DROP_BONUS", "APPLY_EXTRACT_HP_PCT", "APPLY_RESIST_WARRIOR", "APPLY_RESIST_ASSASSIN", "APPLY_RESIST_SURA", "APPLY_RESIST_SHAMAN", "APPLY_ENERGY",    "APPLY_DEF_GRADE", "APPLY_COSTUME_ATTR_BONUS", "APPLY_MAGIC_ATTBONUS_PER", "APPLY_MELEE_MAGIC_ATTBONUS_PER", "APPLY_RESIST_ICE", "APPLY_RESIST_EARTH", "APPLY_RESIST_DARK", "APPLY_ANTI_CRITICAL_PCT", "APPLY_ANTI_PENETRATE_PCT", "APPLY_ATTBONUS_WOLF", "APPLY_RESIST_WOLF", "APPLY_RESIST_CLAW","APPLY_ANTI_RESIST_MAGIC","APPLY_ATTBONUS_ELECT","APPLY_ATTBONUS_FIRE","APPLY_ATTBONUS_ICE","APPLY_ATTBONUS_WIND","APPLY_ATTBONUS_EARTH","APPLY_ATTBONUS_DARK"};
Bununla Değiştir:
Kod:
#ifdef ELEMENT_NEW_BONUSES     string arApplyType[*] = {"APPLY_NONE", "APPLY_MAX_HP", "APPLY_MAX_SP", "APPLY_CON", "APPLY_INT", "APPLY_STR", "APPLY_DEX", "APPLY_ATT_SPEED", "APPLY_MOV_SPEED", "APPLY_CAST_SPEED", "APPLY_HP_REGEN", "APPLY_SP_REGEN", "APPLY_POISON_PCT", "APPLY_STUN_PCT", "APPLY_SLOW_PCT", "APPLY_CRITICAL_PCT", "APPLY_PENETRATE_PCT", "APPLY_ATTBONUS_HUMAN", "APPLY_ATTBONUS_ANIMAL", "APPLY_ATTBONUS_ORC", "APPLY_ATTBONUS_MILGYO", "APPLY_ATTBONUS_UNDEAD", "APPLY_ATTBONUS_DEVIL", "APPLY_STEAL_HP", "APPLY_STEAL_SP", "APPLY_MANA_BURN_PCT", "APPLY_DAMAGE_SP_RECOVER", "APPLY_BLOCK", "APPLY_DODGE", "APPLY_RESIST_SWORD", "APPLY_RESIST_TWOHAND", "APPLY_RESIST_DAGGER", "APPLY_RESIST_BELL", "APPLY_RESIST_FAN", "APPLY_RESIST_BOW","APPLY_RESIST_FIRE", "APPLY_RESIST_ELEC", "APPLY_RESIST_MAGIC", "APPLY_RESIST_WIND", "APPLY_REFLECT_MELEE", "APPLY_REFLECT_CURSE", "APPLY_POISON_REDUCE", "APPLY_KILL_SP_RECOVER", "APPLY_EXP_DOUBLE_BONUS", "APPLY_GOLD_DOUBLE_BONUS", "APPLY_ITEM_DROP_BONUS", "APPLY_POTION_BONUS", "APPLY_KILL_HP_RECOVER", "APPLY_IMMUNE_STUN", "APPLY_IMMUNE_SLOW", "APPLY_IMMUNE_FALL", "APPLY_SKILL", "APPLY_BOW_DISTANCE", "APPLY_ATT_GRADE_BONUS", "APPLY_DEF_GRADE_BONUS", "APPLY_MAGIC_ATT_GRADE", "APPLY_MAGIC_DEF_GRADE", "APPLY_CURSE_PCT", "APPLY_MAX_STAMINA", "APPLY_ATTBONUS_WARRIOR", "APPLY_ATTBONUS_ASSASSIN", "APPLY_ATTBONUS_SURA", "APPLY_ATTBONUS_SHAMAN", "APPLY_ATTBONUS_MONSTER", "APPLY_MALL_ATTBONUS", "APPLY_MALL_DEFBONUS", "APPLY_MALL_EXPBONUS", "APPLY_MALL_ITEMBONUS", "APPLY_MALL_GOLDBONUS", "APPLY_MAX_HP_PCT", "APPLY_MAX_SP_PCT", "APPLY_SKILL_DAMAGE_BONUS","APPLY_NORMAL_HIT_DAMAGE_BONUS", "APPLY_SKILL_DEFEND_BONUS", "APPLY_NORMAL_HIT_DEFEND_BONUS", "APPLY_PC_BANG_EXP_BONUS", "APPLY_PC_BANG_DROP_BONUS", "APPLY_EXTRACT_HP_PCT", "APPLY_RESIST_WARRIOR", "APPLY_RESIST_ASSASSIN", "APPLY_RESIST_SURA", "APPLY_RESIST_SHAMAN", "APPLY_ENERGY",    "APPLY_DEF_GRADE", "APPLY_COSTUME_ATTR_BONUS", "APPLY_MAGIC_ATTBONUS_PER", "APPLY_MELEE_MAGIC_ATTBONUS_PER", "APPLY_RESIST_ICE", "APPLY_RESIST_EARTH", "APPLY_RESIST_DARK", "APPLY_ANTI_CRITICAL_PCT", "APPLY_ANTI_PENETRATE_PCT", "APPLY_ATTBONUS_WOLF", "APPLY_RESIST_WOLF", "APPLY_RESIST_CLAW","APPLY_ANTI_RESIST_MAGIC","APPLY_ATTBONUS_ELECT","APPLY_ATTBONUS_FIRE","APPLY_ATTBONUS_ICE","APPLY_ATTBONUS_WIND","APPLY_ATTBONUS_EARTH","APPLY_ATTBONUS_DARK"}; #else     string arApplyType[*] = { "APPLY_NONE", "APPLY_MAX_HP", "APPLY_MAX_SP", "APPLY_CON", "APPLY_INT", "APPLY_STR", "APPLY_DEX", "APPLY_ATT_SPEED", "APPLY_MOV_SPEED", "APPLY_CAST_SPEED", "APPLY_HP_REGEN", "APPLY_SP_REGEN", "APPLY_POISON_PCT", "APPLY_STUN_PCT", "APPLY_SLOW_PCT", "APPLY_CRITICAL_PCT", "APPLY_PENETRATE_PCT", "APPLY_ATTBONUS_HUMAN", "APPLY_ATTBONUS_ANIMAL", "APPLY_ATTBONUS_ORC", "APPLY_ATTBONUS_MILGYO", "APPLY_ATTBONUS_UNDEAD", "APPLY_ATTBONUS_DEVIL", "APPLY_STEAL_HP", "APPLY_STEAL_SP", "APPLY_MANA_BURN_PCT", "APPLY_DAMAGE_SP_RECOVER", "APPLY_BLOCK", "APPLY_DODGE", "APPLY_RESIST_SWORD", "APPLY_RESIST_TWOHAND", "APPLY_RESIST_DAGGER", "APPLY_RESIST_BELL", "APPLY_RESIST_FAN", "APPLY_RESIST_BOW", "APPLY_RESIST_FIRE", "APPLY_RESIST_ELEC", "APPLY_RESIST_MAGIC", "APPLY_RESIST_WIND", "APPLY_REFLECT_MELEE", "APPLY_REFLECT_CURSE", "APPLY_POISON_REDUCE", "APPLY_KILL_SP_RECOVER", "APPLY_EXP_DOUBLE_BONUS", "APPLY_GOLD_DOUBLE_BONUS", "APPLY_ITEM_DROP_BONUS", "APPLY_POTION_BONUS", "APPLY_KILL_HP_RECOVER", "APPLY_IMMUNE_STUN", "APPLY_IMMUNE_SLOW", "APPLY_IMMUNE_FALL", "APPLY_SKILL", "APPLY_BOW_DISTANCE", "APPLY_ATT_GRADE_BONUS", "APPLY_DEF_GRADE_BONUS", "APPLY_MAGIC_ATT_GRADE", "APPLY_MAGIC_DEF_GRADE", "APPLY_CURSE_PCT", "APPLY_MAX_STAMINA", "APPLY_ATTBONUS_WARRIOR", "APPLY_ATTBONUS_ASSASSIN", "APPLY_ATTBONUS_SURA", "APPLY_ATTBONUS_SHAMAN", "APPLY_ATTBONUS_MONSTER", "APPLY_MALL_ATTBONUS", "APPLY_MALL_DEFBONUS", "APPLY_MALL_EXPBONUS", "APPLY_MALL_ITEMBONUS", "APPLY_MALL_GOLDBONUS", "APPLY_MAX_HP_PCT", "APPLY_MAX_SP_PCT", "APPLY_SKILL_DAMAGE_BONUS", "APPLY_NORMAL_HIT_DAMAGE_BONUS", "APPLY_SKILL_DEFEND_BONUS", "APPLY_NORMAL_HIT_DEFEND_BONUS", "APPLY_PC_BANG_EXP_BONUS", "APPLY_PC_BANG_DROP_BONUS", "APPLY_EXTRACT_HP_PCT", "APPLY_RESIST_WARRIOR", "APPLY_RESIST_ASSASSIN", "APPLY_RESIST_SURA", "APPLY_RESIST_SHAMAN", "APPLY_ENERGY", "APPLY_DEF_GRADE", "APPLY_COSTUME_ATTR_BONUS", "APPLY_MAGIC_ATTBONUS_PER", "APPLY_MELEE_MAGIC_ATTBONUS_PER", "APPLY_RESIST_ICE", "APPLY_RESIST_EARTH", "APPLY_RESIST_DARK", "APPLY_ANTI_CRITICAL_PCT", "APPLY_ANTI_PENETRATE_PCT", "APPLY_ATTBONUS_WOLF", "APPLY_RESIST_WOLF", "APPLY_RESIST_CLAW", "APPLY_ANTI_RESIST_MAGIC", }; #endif
Local dosyasının içine girin, locale_game.txt'de sona ekleyin:
Kod:
TOOLTIP_APPLY_ATTBONUS_ELEC    Strong against Lightning +%d%%    SA TOOLTIP_APPLY_ATTBONUS_FIRE    Strong against Fire +%d%%    SA TOOLTIP_APPLY_ATTBONUS_ICE    Strong against Ice +%d%%    SA TOOLTIP_APPLY_ATTBONUS_WIND    Strong against Wind +%d%%    SA TOOLTIP_APPLY_ATTBONUS_EARTH    Strong against Earth +%d%%    SA TOOLTIP_APPLY_ATTBONUS_DARK    Strong against Dark +%d%%    SA

Derleyin ve bu kadar.

İtem protoyu da şunlar için kullanın.
APPLY_ATTBONUS_ELEC,
APPLY_ATTBONUS_FIRE,
APPLY_ATTBONUS_ICE,
APPLY_ATTBONUS_WIND,
APPLY_ATTBONUS_EARTH,
APPLY_ATTBONUS_DARK

UMARIM İŞE YARAMIŞTIR TEŞEKKÜRLER
  • <li data-xf-list-type="ul">

Yeni Element Bonuslarının Aktifleştirilmesi

Metin2 özel sunucularında geliştirme yaparken, oyuncu deneyimini artırmak ve oyun içi stratejik derinliği genişletmek adına yeni sistemler entegre etmek oldukça önemlidir. Bu bağlamda, element bonusları gibi mekanikler, karakterlerin savaş dengelerini doğrudan etkileyebilir. Bu makalede, Metin2 özel sunucularda yeni element bonuslarının nasıl aktif edileceği konusunu detaylı olarak ele alacağız.

Element Sistemi Nedir?
Metin2'de element sistemi, karakterlerin silah ve zırhlar aracılığıyla sahip oldukları elemental değerlerle, düşmanlara karşı farklı bonuslar kazanmalarını sağlar. Geleneksel element tipleri arasında ateş, su, toprak ve rüzgar bulunur. Ancak bazı özel sunucular, bu sistemi genişleterek daha fazla element türü ve bonus kombinasyonu sunabilir.

Yeni Element Bonuslarının Aktifleştirilmesi İçin Gerekli Adımlar
1. Server Side Değişiklikler:
Sunucu tarafında yeni element sistemini aktif etmek için öncelikle game core dosyalarında değişiklik yapılması gerekir. Bu genellikle C++ tabanlı server src dosyalarında yapılır. Özellikle char.cpp, item.cpp ve battle.cpp gibi ana dosyalarda yeni element tanımlamaları ve bonus hesaplamaları yapılmaktadır.

2. Client Tarafında Desteğin Sağlanması:
Yeni element bonusları aktif edildiğinde, istemci tarafında da bu bilgilerin doğru şekilde görüntülenmesi gerekir. Bu işlem için client src üzerinde çalışmak gerekebilir. UI Script (uiscript), Python GUI (py gui) ve py root dosyalarında gerekli düzenlemeler yapılmalıdır.

3. Database Ayarlamaları:
Yeni element değerleri db (database) kısmında da tanımlanmalıdır. Item_properties veya char tables gibi tablolarda yeni element alanları oluşturulup, değerlerin doğru şekilde eşleştirilmesi sağlanmalıdır.

4. Auth ve Game Sunucu Eşgüdümü:
Auth ve game sunucusu arasında veri aktarımı sırasında yeni element değerlerinin eksiksiz aktarılması için gerekli protokol güncellemeleri yapılmalıdır. Bu, sunucu çökmesini veya veri kaybını önler.

Olası Sorunlar ve Çözümleri
Yeni element sistemlerini entegre ederken bazı durumlarda compile hataları, item drop problemleri veya client-side donmalar yaşanabilir. Bu sorunların çözümünde martysama gibi topluluk projelerinden destek almak faydalı olabilir. Ayrıca, source edit sırasında yapılan değişikliklerin yedeklenmesi, geri dönüşüm için kritik öneme sahiptir.

Sonuç
Metin2 özel sunucularında yeni element bonuslarını aktif etmek, hem oyuncuların ilgisini çekecek hem de oyun içi dengeyi etkileyebilecek önemli bir gelişmedir. Bu işlem, C++ bilgisi, Python script becerileri ve veritabanı yönetimi gerektirir. Doğru uygulandığında, sunucunuzun rekabet avantajı artar ve daha özgün bir oyun deneyimi sunulabilir.


Activating New Element Bonuses

When developing Metin2 private servers, integrating new systems such as element bonuses is crucial for enhancing player experience and increasing strategic depth within the game. This article will provide a detailed explanation on how to activate new element bonuses on Metin2 private servers.

What Is the Element System?
In Metin2, the element system allows characters to gain various bonuses against enemies through elemental values provided by their weapons and armor. Traditional elements include fire, water, earth, and wind. However, some private servers expand this system to include more element types and bonus combinations.

Steps to Activate New Element Bonuses
1. Server-Side Modifications:
To activate new elements on the server side, modifications must first be made to the game core files. This is usually done within the C++ based server src files. Files like char.cpp, item.cpp, and battle.cpp require updates to include new element definitions and bonus calculations.

2. Client-Side Support:
Once new element bonuses are activated, the client must correctly display these values. This requires working with client src files. Necessary adjustments must be made in UI Script (uiscript), Python GUI (py gui), and py root files.

3. Database Configurations:
New element values need to be defined in the db (database). Tables such as item_properties or char_tables should include new element fields and ensure proper value mapping.

4. Coordination Between Auth and Game Servers:
To ensure new element values are transferred correctly between auth and game servers, necessary protocol updates must be applied. This prevents server crashes or data loss during transfers.

Potential Issues and Solutions
While integrating new element systems, issues such as compile errors, item drop problems, or client-side freezes may occur. Community projects like martysama can offer support in resolving these issues. Additionally, backing up changes made during source edit processes is critical for recovery purposes.

Conclusion
Activating new element bonuses on Metin2 private servers is a significant update that can both attract players and influence in-game balance. This process requires knowledge of C++, Python scripting, and database management. When implemented correctly, it increases your server's competitive advantage and delivers a more unique gameplay experience.
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Geri
Üst Alt