İnfaz Taşı sistemi

Denizeri24

Gentleman
Geliştirici
Usta Üye
Mesaj
509
Çözümler
14
Beğeni
447
Puan
829
Ticaret Puanı
0
Sistem basittir, canı belirli bir yüzdenin altında ki mobları infaz eder. Sadece PvE etkilidir (yaratıklar ve metin taşları).




common\length.h içerisinde aratılır
C++:
enum EApplyTypes
ve en altta ki
C++:
MAX_APPLY_NUM
satırının hemen üstüne eklenir;
C++:
APPLY_EXECUTION,

DB/ProtoReader.cpp içerisinde aratılır
C++:
string arApplyType[]
ve en altında ki
C++:
"APPLY_ANTI_PENETRATE_PCT",
satırının hemen üstüne eklenir;
C++:
"APPLY_EXECUTION"

GAME/skill.cpp içinde ki
C++:
kPointOnTypes[]
kısmına eklenir;
C++:
{ "EXECUTION", POINT_EXECUTION },

GAME/char.cpp içinde aratılır
C++:
case POINT_RESIST_SHAMAN:
ve hemen altına eklenir;
C++:
case POINT_EXECUTION:
tekrar aratılır:
C++:
case APPLY_RESIST_SHAMAN:
ve tekrar hemen altına eklenir;
C++:
case APPLY_EXECUTION:

---------------------------- bu kısım metinlerden +0 olanının düşmesini istiyorsanız -----------------------------------
aynı dosya içerisinde aratılır:
C++:
CHARACTER::DetermineDropMetinStone
fonksiyon içerisinde ki
C++:
METIN_STONE_NUM
değeri 1 arttırılır (14 -> 15)
C++:
static DWORD c_adwMetin[METIN_STONE_NUM]
içerisine eklenir:
C++:
28044,
------------------------------------------------------------------------------------------------------------------------------

GAME/char.h içerisinde ki
C++:
enum EPointTypes
kısmında ki
C++:
POINT_RESIST_PENETRATE = 137,
altına eklenir;
C++:
POINT_EXECUTION = 138,

GAME/constants.cpp içinde ki
C++:
TApplyInfo aApplyInfo[MAX_APPLY_NUM]
kısmına eklenir;
C++:
{ POINT_EXECUTION, },

aynı dosya içinde ki
C++:
TValueName c_aApplyTypeNames[]
kısmına eklenir;
C++:
{ "APPLY_EXECUTION", APPLY_EXECUTION },

GAME/char_battle.cpp içerisinde aratılır:
C++:
m_dwKillerPID = pAttacker->GetPlayerID();
ve
C++:
if (GetHP() <= 0)
bloğu komple değiştirilir;

C++:
    if (0 >= GetHP() || (((pAttacker && pAttacker->IsPC()) && (IsMonster() || IsStone())) && (dam >= (GetHP() - ((GetMaxHP() * (static_cast<float>(pAttacker->GetPoint(POINT_EXECUTION) / 100.0f))) / 100)))))
    {
        Stun(true);

        if (pAttacker && !pAttacker->IsNPC())
        {
            m_dwKillerPID = pAttacker->GetPlayerID();
        }
        else
        {
            m_dwKillerPID = 0;
        }
    }



DUMP_PROTO/ItemCSVReader.cpp içerisinde aratılır
C++:
arApplyType[]
ve
C++:
arApplyType[]
kısmının en altına eklenir;
C++:
"APPLY_EXECUTION"


ROOT(pack içerisinde ki)/uitooltip.py içerisinde aratılır
Python:
AFFECT_DICT = {
ve en altına eklenir;
Python:
item.APPLY_EXECUTION : localeInfo.TOOLTIP_APPLY_EXECUTION,

tekrar aratılır
Python:
def __GetAffectString(self, affectType, affectValue):
ve fonksiyon komple değiştirilir;
Python:
    def __GetAffectString(self, affectType, affectValue):
        if 0 == affectType:
            return None

        if 0 == affectValue:
            return None

        try:
            if affectType == item.APPLY_EXECUTION:
                return self.AFFECT_DICT[affectType](float(affectValue) / 100.0)
            else:
                return self.AFFECT_DICT[affectType](affectValue)
        except TypeError:
            return "UNKNOWN_VALUE[%s] %s" % (affectType, affectValue)
        except KeyError:
            return "UNKNOWN_TYPE[%s] %s" % (affectType, affectValue)


CLIENT/PythonPlayerModule.cpp içerisinde aratılır:
C++:
PyModule_AddIntConstant(poModule, "MAX_NUM", POINT_MAX_NUM);
ve hemen üstüne eklenir;

PyModule_AddIntConstant(poModule, "EXECUTION", POINT_EXECUTION);

CLIENT/PythonItemModule.cpp içerisinde aratılır:
C++:
PyModule_AddIntConstant(poModule, "APPLY_COSTUME_ATTR_BONUS", CItemData::APPLY_COSTUME_ATTR_BONUS);
ve hemen altına eklenir;

C++:
PyModule_AddIntConstant(poModule, "APPLY_EXECUTION", CItemData::APPLY_EXECUTION);

tekrar aratılır:
C++:
case CItemData::EApplyTypes::APPLY_RESIST_WARRIOR:    return EPointTypes::POINT_RESIST_WARRIOR;
ve hemen üstüne eklenir;
C++:
case CItemData::EApplyTypes::APPLY_EXECUTION:    return EPointTypes::POINT_EXECUTION;

GameLib/itemdata.h içerisinde ki
C++:
enum EApplyTypes
kısmının en altına ki
C++:
MAX_APPLY_NUM,
hemen üstüne eklenir;
C++:
APPLY_EXECUTION,


item_names.txt içerisine eklenir:
Kod:
28044    İnfaz Taşı+0
28144    İnfaz Taşı+1
28244    İnfaz Taşı+2
28344    İnfaz Taşı+3
28444    İnfaz Taşı+4

item_proto.txt içerisine eklenir:
Kod:
28044    »ì¿µ¼®+0    ITEM_METIN    METIN_NORMAL    1    NONE    NONE    WEAR_WEAPON        2500    2500    0    0    0    LIMIT_NONE    0    LIMIT_NONE    0    APPLY_EXECUTION    250    APPLY_NONE    0    APPLY_NONE    0    0    0    0    0    0    31    0    0    0
28144    »ì¿µ¼®+1    ITEM_METIN    METIN_NORMAL    1    NONE    NONE    WEAR_WEAPON        5000    5000    0    0    0    LIMIT_NONE    0    LIMIT_NONE    0    APPLY_EXECUTION    500    APPLY_NONE    0    APPLY_NONE    0    0    0    0    0    0    31    0    0    0
28244    »ì¿µ¼®+2    ITEM_METIN    METIN_NORMAL    1    NONE    NONE    WEAR_WEAPON        10000    10000    0    0    0    LIMIT_NONE    0    LIMIT_NONE    0    APPLY_EXECUTION    750    APPLY_NONE    0    APPLY_NONE    0    0    0    0    0    0    31    0    0    0
28344    »ì¿µ¼®+2    ITEM_METIN    METIN_NORMAL    1    NONE    NONE    WEAR_WEAPON        10000    10000    0    0    0    LIMIT_NONE    0    LIMIT_NONE    0    APPLY_EXECUTION    1000    APPLY_NONE    0    APPLY_NONE    0    0    0    0    0    0    31    0    0    0
28444    »ì¿µ¼®+4    ITEM_METIN    METIN_NORMAL    1    NONE    NONE    WEAR_WEAPON        40000    40000    0    0    0    LIMIT_NONE    0    LIMIT_NONE    0    APPLY_EXECUTION    1500    APPLY_NONE    0    APPLY_NONE    0    0    0    0    0    0    31    0    0    0


pack/locale/locale_game.txt içerisine eklenir:
Kod:
TOOLTIP_APPLY_EXECUTION    İnfaz Gücü +%.1f%%    SA



NOTLAR


item_proto içerisine ekledikten sonra server içine atmayı ve ayrıca dump_proto ile çıktı alıp pack/locale içine atmayı unutmayın (dump_proto da derlenmeli)
taşların kodları: { 28044, 28144, 28244, 28344, 28444 }

bu taşlar için packta icon tanımlamayı unutmayın yoksa taşlar oyun içi gözükmez (item_list.txt).
 
Son düzenleme:
loldeki tahsildar gibi olmuş
 
Geri
Üst