İnfaz Taşı sistemi

  • Konuyu açan Konuyu açan Denizeri24
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 2
  • Gösterim Gösterim 1K

Denizeri24

Gentleman
Geliştirici
Usta Üye
Mesaj
596
Çözümler
18
Beğeni
618
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++:
Genişlet Daralt Kopyala
enum EApplyTypes
ve en altta ki
C++:
Genişlet Daralt Kopyala
MAX_APPLY_NUM
satırının hemen üstüne eklenir;
C++:
Genişlet Daralt Kopyala
APPLY_EXECUTION,

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

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

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

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

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

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

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

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

C++:
Genişlet Daralt Kopyala
    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++:
Genişlet Daralt Kopyala
arApplyType[]
ve
C++:
Genişlet Daralt Kopyala
arApplyType[]
kısmının en altına eklenir;
C++:
Genişlet Daralt Kopyala
"APPLY_EXECUTION"


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

tekrar aratılır
Python:
Genişlet Daralt Kopyala
def __GetAffectString(self, affectType, affectValue):
ve fonksiyon komple değiştirilir;
Python:
Genişlet Daralt Kopyala
    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++:
Genişlet Daralt Kopyala
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++:
Genişlet Daralt Kopyala
PyModule_AddIntConstant(poModule, "APPLY_COSTUME_ATTR_BONUS", CItemData::APPLY_COSTUME_ATTR_BONUS);
ve hemen altına eklenir;

C++:
Genişlet Daralt Kopyala
PyModule_AddIntConstant(poModule, "APPLY_EXECUTION", CItemData::APPLY_EXECUTION);

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

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


item_names.txt içerisine eklenir:
Kod:
Genişlet Daralt Kopyala
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:
Genişlet Daralt Kopyala
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:
Genişlet Daralt Kopyala
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ş
 
Uyarı: Bu konu açıldığından bu yana baya zaman geçmiş.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.
Geri
Üst