Metin2 6. ve 7. Efsunları Eklemek

Whistle

Ruhsuz :/
Kurucu
Geliştirici
Yardımsever Üye
Mesaj
11.941
Çözümler
567
Beğeni
13.659
Puan
5.915
Ticaret Puanı
2
Merhaba arkadaşlar,
Bu konumuzda 6. ve 7. efsunlarını kullanabilmek için yapılacaklardan bahsedeceğim.

Eğer 40k files kullanıyorsanız char_item.cpp dosyasında şu kodların olması gerekiyor.
C++:
Genişlet Daralt Kopyala
case 71051 : // 진재가
    {
        // 유럽, 싱가폴, 베트남 진재가 사용금지
        LPITEM item2;

        if (!IsValidItemPosition(DestCell) || !(item2 = GetInventoryItem(wDestCell)))
            return false;

        if (ITEM_COSTUME == item2->GetType()) // @fixme124
        {
            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("속성을 변경할 수 없는 아이템입니다."));
            return false;
        }

        if (item2->IsExchanging() || item2->IsEquipped()) // @fixme114
            return false;

        if (item2->GetAttributeSetIndex() == -1)
        {
            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("속성을 변경할 수 없는 아이템입니다."));
            return false;
        }

        if (item2->AddRareAttribute() == true)
        {
            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("성공적으로 속성이 추가 되었습니다"));

            int iAddedIdx = item2->GetRareAttrCount() + 4;
            char buf[21];
            snprintf(buf, sizeof(buf), "%u", item2->GetID());

            LogManager::instance().ItemLog(
                    GetPlayerID(),
                    item2->GetAttributeType(iAddedIdx),
                    item2->GetAttributeValue(iAddedIdx),
                    item->GetID(),
                    "ADD_RARE_ATTR",
                    buf,
                    GetDesc()->GetHostName(),
                    item->GetOriginalVnum());

            item->SetCount(item->GetCount() - 1);
        }
        else
        {
            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("더 이상 이 아이템으로 속성을 추가할 수 없습니다"));
        }
    }
    break;

case 71052 : // 진재경
    {
        // 유럽, 싱가폴, 베트남 진재가 사용금지
        LPITEM item2;

        if (!IsValidItemPosition(DestCell) || !(item2 = GetItem(DestCell)))
            return false;

        if (ITEM_COSTUME == item2->GetType()) // @fixme124
        {
            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("속성을 변경할 수 없는 아이템입니다."));
            return false;
        }

        if (item2->IsExchanging() || item2->IsEquipped()) // @fixme114
            return false;

        if (item2->GetAttributeSetIndex() == -1)
        {
            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("속성을 변경할 수 없는 아이템입니다."));
            return false;
        }

        if (item2->ChangeRareAttribute() == true)
        {
            char buf[21];
            snprintf(buf, sizeof(buf), "%u", item2->GetID());
            LogManager::instance().ItemLog(this, item, "CHANGE_RARE_ATTR", buf);

            item->SetCount(item->GetCount() - 1);
        }
        else
        {
            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("변경 시킬 속성이 없습니다"));
        }
    }
    break;

Bu kodlar varsa zaten hali hazırda sisteminizde 6. ve 7. efsunlar kullanıma hazır demektir.
71051 ve 71052 itemlerini almaya çalıştığınızda sistem size böyle bi item yok diyorsa kendiniz eklemeniz gerekiyor.


item_proto.txt dosyasına şunları ekleyin;
Kod:
Genişlet Daralt Kopyala
71051    眞·재가비서    ITEM_USE    USE_SPECIAL    1    ANTI_DROP | ANTI_SELL | ANTI_STACK | ANTI_MYSHOP    LOG    NONE    NONE    0    0    0    0    0    LIMIT_NONE    0    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    0    0    0    0    0    0    0    0    0
71052    眞·재경비서    ITEM_USE    USE_SPECIAL    1    ANTI_DROP | ANTI_SELL | ANTI_STACK | ANTI_MYSHOP    LOG    NONE    NONE    0    0    0    0    0    LIMIT_NONE    0    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    0    0    0    0    0    0    0    0    0

item_names.txt dosyasına ekleyin.
Kod:
Genişlet Daralt Kopyala
71051    6. ve 7. Arttırma Kağıdı
71052    6. ve 7. Efsun Nesnesi

Daha sonra item_proto.txt ve item_names.txt dosyasını dump_proto'dan geçirip locale_tr/ui içine atınız.
Server kısmında da itemlerin eklenmesi için txt dosyalarını server filesinize atın.

locale_tr/ui/itemlist.txt ekleyin;
Kod:
Genişlet Daralt Kopyala
71051    ETC    icon/item/71051.tga
71052    ETC    icon/item/71052.tga

locale_tr/ui/itemdesc.txt ekleyin;
Kod:
Genişlet Daralt Kopyala
71051    6. ve 7. Arttırma Kağıdı    Eşyalarınıza 6. ve 7. efsunları ekler.
71052    6. ve 7. Efsun Nesnesi    Eşyalarınızda bulunan 6. ve 7. efsunları değiştirir.

player.item_attr_rare tablosu yoksa şu sql komutlarını çalıştırınız.
SQL:
Genişlet Daralt Kopyala
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for item_attr_rare
-- ----------------------------
DROP TABLE IF EXISTS `item_attr_rare`;
CREATE TABLE `item_attr_rare`  (
  `apply` enum('MAX_HP','MAX_SP','CON','INT','STR','DEX','ATT_SPEED','MOV_SPEED','CAST_SPEED','HP_REGEN','SP_REGEN','POISON_PCT','STUN_PCT','SLOW_PCT','CRITICAL_PCT','PENETRATE_PCT','ATTBONUS_HUMAN','ATTBONUS_ANIMAL','ATTBONUS_ORC','ATTBONUS_MILGYO','ATTBONUS_UNDEAD','ATTBONUS_DEVIL','STEAL_HP','STEAL_SP','MANA_BURN_PCT','DAMAGE_SP_RECOVER','BLOCK','DODGE','RESIST_SWORD','RESIST_TWOHAND','RESIST_DAGGER','RESIST_BELL','RESIST_FAN','RESIST_BOW','RESIST_FIRE','RESIST_ELEC','RESIST_MAGIC','RESIST_WIND','REFLECT_MELEE','REFLECT_CURSE','POISON_REDUCE','KILL_SP_RECOVER','EXP_DOUBLE_BONUS','GOLD_DOUBLE_BONUS','ITEM_DROP_BONUS','POTION_BONUS','KILL_HP_RECOVER','IMMUNE_STUN','IMMUNE_SLOW','IMMUNE_FALL','SKILL','BOW_DISTANCE','ATT_GRADE_BONUS','DEF_GRADE_BONUS','MAGIC_ATT_GRADE_BONUS','MAGIC_DEF_GRADE_BONUS','CURSE_PCT','MAX_STAMINA','ATT_BONUS_TO_WARRIOR','ATT_BONUS_TO_ASSASSIN','ATT_BONUS_TO_SURA','ATT_BONUS_TO_SHAMAN','ATT_BONUS_TO_MONSTER','ATT_BONUS','MALL_DEFBONUS','MALL_EXPBONUS','MALL_ITEMBONUS','MALL_GOLDBONUS','MAX_HP_PCT','MAX_SP_PCT','SKILL_DAMAGE_BONUS','NORMAL_HIT_DAMAGE_BONUS','SKILL_DEFEND_BONUS','NORMAL_HIT_DEFEND_BONUS','PC_BANG_EXP_BONUS','PC_BANG_DROP_BONUS','EXTRACT_HP_PCT','RESIST_WARRIOR','RESIST_ASSASSIN','RESIST_SURA','RESIST_SHAMAN','ENERGY','DEF_GRADE','COSTUME_ATTR_BONUS','MAGIC_ATT_BONUS_PER','MELEE_MAGIC_ATT_BONUS_PER','RESIST_ICE','RESIST_EARTH','RESIST_DARK','RESIST_CRITICAL','RESIST_PENETRATE','BLEEDING_REDUCE','BLEEDING_PCT','ATT_BONUS_TO_WOLFMAN','RESIST_WOLFMAN','RESIST_CLAW') CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT 'MAX_HP',
  `prob` int(11) UNSIGNED NOT NULL DEFAULT 0,
  `lv1` int(11) UNSIGNED NOT NULL DEFAULT 0,
  `lv2` int(11) UNSIGNED NOT NULL DEFAULT 0,
  `lv3` int(11) UNSIGNED NOT NULL DEFAULT 0,
  `lv4` int(11) UNSIGNED NOT NULL DEFAULT 0,
  `lv5` int(11) UNSIGNED NOT NULL DEFAULT 0,
  `weapon` int(11) UNSIGNED NOT NULL DEFAULT 0,
  `body` int(11) UNSIGNED NOT NULL DEFAULT 0,
  `wrist` int(11) UNSIGNED NOT NULL DEFAULT 0,
  `foots` int(11) UNSIGNED NOT NULL DEFAULT 0,
  `neck` int(11) UNSIGNED NOT NULL DEFAULT 0,
  `head` int(11) UNSIGNED NOT NULL DEFAULT 0,
  `shield` int(11) UNSIGNED NOT NULL DEFAULT 0,
  `ear` int(11) UNSIGNED NOT NULL DEFAULT 0,
  `costume_body` int(11) UNSIGNED NOT NULL DEFAULT 0,
  `costume_hair` int(11) UNSIGNED NOT NULL DEFAULT 0,
  `costume_weapon` int(11) UNSIGNED NOT NULL DEFAULT 0
) ENGINE = MyISAM CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Fixed;

-- ----------------------------
-- Records of item_attr_rare
-- ----------------------------
INSERT INTO `item_attr_rare` VALUES ('MAX_HP', 1, 500, 500, 500, 500, 500, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('MAX_SP', 1, 50, 50, 50, 50, 50, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('CON', 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('INT', 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('STR', 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('DEX', 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('CRITICAL_PCT', 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('PENETRATE_PCT', 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('ATT_GRADE_BONUS', 1, 50, 50, 50, 50, 50, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('ATT_BONUS_TO_MONSTER', 1, 10, 10, 10, 10, 10, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('ATT_BONUS_TO_WARRIOR', 1, 10, 10, 10, 10, 10, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('ATT_BONUS_TO_ASSASSIN', 1, 10, 10, 10, 10, 10, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('ATT_BONUS_TO_SURA', 1, 10, 10, 10, 10, 10, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('ATT_BONUS_TO_SHAMAN', 1, 10, 10, 10, 10, 10, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('RESIST_WARRIOR', 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('RESIST_ASSASSIN', 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('RESIST_SURA', 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('RESIST_SHAMAN', 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('ATT_SPEED', 1, 2, 2, 2, 2, 2, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('MOV_SPEED', 1, 8, 8, 8, 8, 8, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('MAX_HP', 1, 500, 500, 500, 500, 500, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('MAX_SP', 1, 50, 50, 50, 50, 50, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('CON', 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('INT', 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('STR', 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('DEX', 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('CRITICAL_PCT', 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('PENETRATE_PCT', 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('ATT_GRADE_BONUS', 1, 50, 50, 50, 50, 50, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('ATT_BONUS_TO_MONSTER', 1, 10, 10, 10, 10, 10, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('ATT_BONUS_TO_WARRIOR', 1, 10, 10, 10, 10, 10, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('ATT_BONUS_TO_ASSASSIN', 1, 10, 10, 10, 10, 10, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('ATT_BONUS_TO_SURA', 1, 10, 10, 10, 10, 10, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('ATT_BONUS_TO_SHAMAN', 1, 10, 10, 10, 10, 10, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('RESIST_WARRIOR', 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('RESIST_ASSASSIN', 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('RESIST_SURA', 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('RESIST_SHAMAN', 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('ATT_SPEED', 1, 2, 2, 2, 2, 2, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);
INSERT INTO `item_attr_rare` VALUES ('MOV_SPEED', 1, 8, 8, 8, 8, 8, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0);

SET FOREIGN_KEY_CHECKS = 1;

Tüm bu işlemleri yaptıktan sonra artık 6. ve 7. efsunları kullanabileceksiniz.

Bu yazının tamamı MMO Tutkunları'na ait özgün içeriktir. Kaynağı gösterildiği sürece başka platformlarda paylaşılabilir.
 
selamın aleyküm

peki bunu 6. ve 7. efsunu sadece arttırma kadığı ile ekletmek istesek nası yaparız asıl bu lazım birazda birçok kişi bunu arıyor
 
kendim eklemek istiyorum 6-7 efsunları. att_rare bonuslarını item_proto.txt dosyasına yazarken nasıl çekebilirim acaba?
4-5 efsunlar için
USE_ADD_ATTRIBUTE
USE_CHANGE_ATTRIBUTE
komutları kullanılıyor. 6-7 efsunlar için kullanabileceğim komut varmı. proto.txt dosyasını komple inceledim bulamadım.
 
rare.webp

hazırladığım rare tablosunda 4 karaktere sadece 10 saldırı ve savunma bonusları eklemek istiyorum. fakat protoda örneği olmadıgı için kendim yazamadım.
 
İçeriği okuduysanız mevcut anlatımda hangi type değerine ait olduğu yazıyor. ITEM_USE tipinde. vnum'a göre 6. ve 7. olduğu belirleniyor.

item_attr tablosundan bir farkı yok aslında. :) Gelmesini istediğiniz efsunları ekleyebilirsiniz.
 
İçeriği okuduysanız mevcut anlatımda hangi type değerine ait olduğu yazıyor. ITEM_USE tipinde. vnum'a göre 6. ve 7. olduğu belirleniyor.

item_attr tablosundan bir farkı yok aslında. :) Gelmesini istediğiniz efsunları ekleyebilirsiniz.
deneyeceğim umarım çalışır. çalışmazsa sizi rahatsız etmeye devam edeceğim. iyi geceler :)
 
Hocam online oyun egitiminde paylaştıgınız alt yapı 6.7 efsunu destekliyormu ?
 
Selam , işlemleri aynı şekilde uyguladım. Lakin 6. 7 efsunlar çalışmıyor.
Simgeler geldi . Source kısmında olması gereken kod dediğiniz kısım yoktu , ekledim. Sonra gmake all yaptım 1 tane hata verdi
 
Selam , işlemleri aynı şekilde uyguladım. Lakin 6. 7 efsunlar çalışmıyor.
Simgeler geldi . Source kısmında olması gereken kod dediğiniz kısım yoktu , ekledim. Sonra gmake all yaptım 1 tane hata verdi
Aldığınız hatayla beraber yardım konusu açabilirsiniz.
 
Bu şekilde ekleyipte çalıştırabilen varmı ben bir türlü beceremedim. Normal efsun nesnesi bölümüne ve kutsama küresi bölümüne ekledim öyle çalıştı ama şimdide veritabanındakıyle alakasız efsunlar geliyor nedeni ne olabilir?
 
SYSERR: Oct 31 21:46:48 :: Set_Proto_Item_Table: ItemProto Reading Failed : Invalid value. (index: 24, col: 24, value: 0)
SYSERR: Oct 31 21:46:48 :: Set_Proto_Item_Table: 0 ~ 24 Values: 71051,0,3,10,1,98688,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,


yanlış ne yapmış olabilirim?
 
SYSERR: Oct 31 21:46:48 :: Set_Proto_Item_Table: ItemProto Reading Failed : Invalid value. (index: 24, col: 24, value: 0)
SYSERR: Oct 31 21:46:48 :: Set_Proto_Item_Table: 0 ~ 24 Values: 71051,0,3,10,1,98688,8192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,


yanlış ne yapmış olabilirim?

packteki itemproto.xml içersine bu şekilde ekleyip tekrar denermisin ? item vnumlarını kendininkine göre düzenle

<ItemDef Vnum="20917" Name="연재경비서" LocalizedName="6/7 Efsun art?ma" Type="3" SubType="18" Weight="0" Size="1" AntiFlags="33152" Flags="8192" WearFlags="0" ImmuneFlags="0" Gold="0" ShopBuyPrice="0" LimitType0="0" LimitValue0="0" LimitType1="0" LimitValue1="0" ApplyType0="0" ApplyValue0="0" ApplyType1="0" ApplyValue1="0" ApplyType2="0" ApplyValue2="0" Value0="0" Value1="0" Value2="0" Value3="0" Value4="0" Value5="0" Socket0="0" Socket1="0" Socket2="0" RefinedVnum="0" RefineSet="0" AlterToMagicItemPercent="0" Specular="0" GainSocketPercent="0" AddonType="0" />
<ItemDef Vnum="20918" Name="연재가비서" LocalizedName="6/7 Efsun De?tirme" Type="3" SubType="19" Weight="0" Size="1" AntiFlags="33152" Flags="8192" WearFlags="0" ImmuneFlags="0" Gold="0" ShopBuyPrice="0" LimitType0="0" LimitValue0="0" LimitType1="0" LimitValue1="0" ApplyType0="0" ApplyValue0="0" ApplyType1="0" ApplyValue1="0" ApplyType2="0" ApplyValue2="0" Value0="0" Value1="0" Value2="0" Value3="0" Value4="0" Value5="0" Socket0="0" Socket1="0" Socket2="0" RefinedVnum="0" RefineSet="0" AlterToMagicItemPercent="0" Specular="0" GainSocketPercent="0" AddonType="0" />
 
Geri
Üst