Hikayeler

Reklam vermek için turkmmo@gmail.com
Kaynak ikonu

Silah Evrim Puanı Sistemi - Piyasadakinden Farklı 1

indirmek için izniniz yok
  • Konuyu başlatan Suky
  • Başlangıç tarihi
  • Cevaplar 385
  • Görüntüleme 77K

Suky

SOYSUZLAR SOĞUTTULAR BIRAKTIM.
TM Üye
Katılım
21 Ocak 2017
Konular
91
Mesajlar
399
Reaksiyon Skoru
251
Altın Konu
0
Başarım Puanı
75
TM Yaşı
7 Yıl 10 Ay 22 Gün
Online Süresi
0
MmoLira
7
DevLira
0

RisaMt2 Orta Emek Kalıcı Sunucu - Bireysel Farm Alanları - WON EP TL Ödüllü Etkinlikler HEMEN TIKLA!

Selam arkadaşlar silah evrim puanı sistemini paylaşıyorum kendi kodlamamdır.
Aslında paylaşmayacaktım fakat warez olma tehlikesinden dolayı sistemin yapımcısının paylaşması daha uygun olur diye düşündüm.

nHg8xYNBRHCSc0vSOAIxtg.png





oyundan çıkıp girdiğinde evrim efekti gözükmüyor ise bu işlemleri uygulayın.





Kill alınca'da evrim puanı versin diyenler

char_battle.cpp
Kod:
    else if (pkKiller && pkKiller->IsPC() && IsPC())
    {
        LPITEM weapon = pkKiller->GetWear(WEAR_WEAPON);
        if (weapon && IS_SET(weapon->GetFlag(), ITEM_FLAG_RARE_ABILITY))
        {
            int raritypoint = 1;
            if (weapon->GetAttributeValue(6) < ITEM_RARITY_MAX)
                weapon->SetForceAttribute(6, 0, weapon->GetAttributeValue(6)+raritypoint);
        }
    }

bu kodu eklesinler.

Kod:
int raritypoint = 1;

kaç evrim puanı vereceği burada.​


Not : Karakter kesince evrim puanı vermesini ayarlayan arkadaşların bilgisine aynı karakteri kesince sürekli olarak puan artıyor bir engel atmanız gerekmektedir.

 
Moderatör tarafında düzenlendi:

En Çok Reaksiyon Alan Mesajlar

Konu yararlı, teşekkürler.

Yorumlarda sorunsuz ekleyip göstermeyen arkadaşlar, flag eklemediğiniz için görüntülenmiyor. Eğer flagsız kullanmak istiyorsanız, uitooltip'de bulunan bu kısmı,

Kod:
            if item.IsFlag(item.ITEM_FLAG_RARE_ABILITY):
                rarityLevel = 0
                try:
                    rarityLevel = attrSlot[6][1]
                except TypeError:
                    pass

                self.__AppendLimitWithRareInformation(rarityLevel)
            else:
                self.__AppendLimitInformation()

Bununla değiştirin.

Kod:
            try:
                rarityLevel = attrSlot[6][1]
            except TypeError:
                pass

            self.__AppendLimitWithRareInformation(rarityLevel)

Aynı şekilde cmd_gm'de ve diğer dosyalarda ITEM_FLAG_RARE_ABILITY kontrolünü kaldırırsanız flag eklemenize gerek kalmadan tüm silahlarda evrim sistemi çalışacaktır. Evrimi kazandırdığınız noktada yani char_battle'da belirli silahlara sadece evrim puanı gelmesini sağlayabilirsiniz.
Teşekkürler

Ok Çantası Sistemi ve Costume weapon kullananlar için bir çok yerde çakışıyor çakışan yerleri dediğim gibi yaparsanız sorun olmuyacaktır

İnstanceBase.cpp de

Kod:
// Arat :
// bool CInstanceBase::Create(const SCreateData& c_rkCreateData)
// İçerisinde : SetWeapon(c_rkCreateData.m_dwWeapon
// Değiştir :
SetWeapon(c_rkCreateData.m_dwWeapon, c_rkCreateData.m_lWeaponRarity);

Böyle bulamazlar

Bunu Aratın

Kod:
SetWeapon(c_rkCreateData.m_dwWeapon, c_rkCreateData.m_dwArrowType);

Böyle Değiştirin

Kod:
SetWeapon(c_rkCreateData.m_dwWeapon, c_rkCreateData.m_dwArrowType, c_rkCreateData.m_lWeaponRarity);

Arat
Kod:
UINT CInstanceBase::__GetRefinedEffect(CItemData* pItem, long lWeaponRarity)

Bu Kod Bloğunuda şöyle değiştirin

You must be registered for see element.
Kod:
UINT CInstanceBase::__GetRefinedEffect(CItemData* pItem, long lWeaponRarity)
{
DWORD socket = pItem->GetSocketCount();
if (socket == 4)
socket = 3;
DWORD refine = max(pItem->GetRefine() + socket,CItemData::ITEM_SOCKET_MAX_NUM) - CItemData::ITEM_SOCKET_MAX_NUM;
switch (pItem->GetType())
{
case CItemData::ITEM_TYPE_WEAPON:
__ClearWeaponRefineEffect();
if (refine < 7) //ÇöÀç Á¦·Ãµµ 7 ÀÌ»ó¸¸ ÀÌÆåÆ®°¡ ÀÖ½À´Ï´Ù.
return 0;
switch(pItem->GetSubType())
{
case CItemData::WEAPON_DAGGER:
if (lWeaponRarity >= 3250)
{
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_SMALLSWORD_RARITY3;
m_swordRefineEffectLeft = EFFECT_REFINED+EFFECT_SMALLSWORD_RARITY3_LEFT;
}
else if (lWeaponRarity >= 2500)
{
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_SMALLSWORD_RARITY2;
m_swordRefineEffectLeft = EFFECT_REFINED+EFFECT_SMALLSWORD_RARITY2_LEFT;
}
else if (lWeaponRarity >= 300)
{
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_SMALLSWORD_RARITY1;
m_swordRefineEffectLeft = EFFECT_REFINED+EFFECT_SMALLSWORD_RARITY1_LEFT;
}
else if (lWeaponRarity >= 100)
{
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_SMALLSWORD_RARITY0;
m_swordRefineEffectLeft = EFFECT_REFINED+EFFECT_SMALLSWORD_RARITY0_LEFT;
}
else
{
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_SMALLSWORD_REFINED7+refine-7;
m_swordRefineEffectLeft = EFFECT_REFINED+EFFECT_SMALLSWORD_REFINED7_LEFT+refine-7;
}
break;
case CItemData::WEAPON_FAN:
if (lWeaponRarity >= 3250)
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_FANBELL_RARITY3;
else if (lWeaponRarity >= 2500)
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_FANBELL_RARITY2;
else if (lWeaponRarity >= 300)
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_FANBELL_RARITY1;
else if (lWeaponRarity >= 100)
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_FANBELL_RARITY0;
else
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_FANBELL_REFINED7+refine-7;
break;
case CItemData::WEAPON_ARROW:
#ifdef ENABLE_NEW_ARROW_SYSTEM
case CItemData::WEAPON_UNLIMITED_ARROW:
#endif
case CItemData::WEAPON_BELL:
if (lWeaponRarity >= 3250)
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_SMALLSWORD_RARITY3;
else if (lWeaponRarity >= 2500)
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_SMALLSWORD_RARITY2;
else if (lWeaponRarity >= 300)
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_SMALLSWORD_RARITY1;
else if (lWeaponRarity >= 100)
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_SMALLSWORD_RARITY0;
else
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_SMALLSWORD_REFINED7+refine-7;
break;
#ifdef ENABLE_NEW_ARROW_SYSTEM
if (m_awPart[CRaceData::PART_ARROW_TYPE] == CItemData::WEAPON_UNLIMITED_ARROW)
SetMotionMode(CRaceMotionData::MODE_BOW_SPECIAL);
else
SetMotionMode(CRaceMotionData::MODE_BOW);
#else
SetMotionMode(CRaceMotionData::MODE_BOW);
#endif
break;
if (lWeaponRarity >= 3250)
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_BOW_RARITY3;
else if (lWeaponRarity >= 2500)
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_BOW_RARITY2;
else if (lWeaponRarity >= 300)
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_BOW_RARITY1;
else if (lWeaponRarity >= 100)
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_BOW_RARITY0;
else
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_BOW_REFINED7+refine-7;
break;
default:
if (lWeaponRarity >= 3250)
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_SWORD_RARITY3;
else if (lWeaponRarity >= 2500)
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_SWORD_RARITY2;
else if (lWeaponRarity >= 300)
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_SWORD_RARITY1;
else if (lWeaponRarity >= 100)
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_SWORD_RARITY0;
else
m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_SWORD_REFINED7+refine-7;
}
if (m_swordRefineEffectRight)
m_swordRefineEffectRight = __AttachEffect(m_swordRefineEffectRight);
if (m_swordRefineEffectLeft)
m_swordRefineEffectLeft = __AttachEffect(m_swordRefineEffectLeft);
break;
case CItemData::ITEM_TYPE_ARMOR:
__ClearArmorRefineEffect();
// °©¿Ê Æ¯È ÀÌÆåÆ®
if (pItem->GetSubType() == CItemData::ARMOR_BODY)
{
DWORD vnum = pItem->GetIndex();
if (12010 <= vnum && vnum <= 12049)
{
__AttachEffect(EFFECT_REFINED+EFFECT_BODYARMOR_SPECIAL);
__AttachEffect(EFFECT_REFINED+EFFECT_BODYARMOR_SPECIAL2);
}
}
if (refine < 7) //ÇöÀç Á¦·Ãµµ 7 ÀÌ»ó¸¸ ÀÌÆåÆ®°¡ ÀÖ½À´Ï´Ù.
return 0;
if (pItem->GetSubType() == CItemData::ARMOR_BODY)
{
m_armorRefineEffect = EFFECT_REFINED+EFFECT_BODYARMOR_REFINED7+refine-7;
__AttachEffect(m_armorRefineEffect);
}
break;
}
return 0;
}

Arat
Kod:
bool CInstanceBase::SetWeapon(DWORD eWeapon

Kod Bloğunun içinde

Arat
Kod:
__GetRefinedEffect(pItemData);

Değiştir

Kod:
__GetRefinedEffect(pItemData, lWeaponRarity);

Arat

Kod:
bool CInstanceBase::SetWeapon(DWORD eWeapon

Ekle yanına

Kod:
, long lWeaponRarity

Arat

Kod:
void CInstanceBase::ChangeWeapon(DWORD eWeapon

Ekle yanına

Kod:
, long lWeaponRarity

Arat

Kod:
if (eWeapon == m_GraphicThingInstance.GetPartItemID(CRaceData::PART_WEAPON))
return;

Altında bu kodu

Kod:
if (SetWeapon(eWeapon, eArrow))
RefreshState(CRaceMotionData::NAME_WAIT, true);

Böyle Değiştir

Kod:
if (SetWeapon(eWeapon, lWeaponRarity, eArrow))
RefreshState(CRaceMotionData::NAME_WAIT, true);

İnstancebase.h'de

Arat
Kod:
bool SetWeapon(DWORD eWeapon, DWORD eArrow = 0);

Böyle değiştir

Kod:
bool SetWeapon(DWORD eWeapon, long lWeaponRarity, DWORD eArrow = 0);

Arat
Kod:
void ChangeWeapon(DWORD eWeapon, DWORD eArrow = 0);

Değiştir

Kod:
void ChangeWeapon(DWORD eWeapon, long lWeaponRarity, DWORD eArrow = 0);

Networkactormanager.cpp

Kod:
pkInstFind->ChangeWeapon(c_rkNetUpdateActorData.m_dwWeapon, c_rkNetUpdateActorData.m_dwArrowType);

Böyle değiştir

Kod:
pkInstFind->ChangeWeapon(c_rkNetUpdateActorData.m_dwWeapon, c_rkNetUpdateActorData.m_lWeaponRarity, c_rkNetUpdateActorData.m_dwArrowType);

İşlemler 2 kere olabilir 2 kere uygulayın.
@AntikPala ; @Suky

Kanıt

Not: ProtoReader deki kodları değiştirmeden eklerseniz sorun oluyor yani anlatımdaki flaglar ile değiştirin item_proto ise
ITEM_TUNABLE bulun bunun ile değiştirin ITEM_TUNABLE | ITEM_RARE_ABILITY evrim istediğiniz iteme

evrim puanını arttırmak için ise silah giyili iken /weapon_rarity [Oran] yazınız

You must be registered for see element.
Paylaşım İçin Teşekkürler Güzel Dostum
 
Ömer ellerine sağlık herkes bunu arıyordu teşekkürler.
 
Teşşekürler,incelediğim kadarıyla paket üzerinden aktarılıyor.
 
Selam arkadaşlar silah evrim puanı sistemini paylaşıyorum kendi kodlamamdır.
Aslında paylaşmayacaktım fakat warez olma tehlikesinden dolayı sistemin yapımcısının paylaşması daha uygun olur diye düşündüm.

Teşekkürler. Silaha + basınca evrim puanı sıfırlanıyormu ?
 

Şu an konuyu görüntüleyenler (Toplam : 1, Üye: 0, Misafir: 1)

Geri
Üst