Çözüldü Item_Proto - SQL to TXT Convert Problemi

Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

Defacer35

Üye
Üye
Mesaj
94
Çözümler
7
Beğeni
55
Puan
684
Ticaret Puanı
0
Merhabalar, biliyorsunuz ki No-TXT db kullananlar için yaptıkları işlemleri pack tarafına da aktarabilmek için converter gereçleri var ( python script ) bende bu araçlardan birini kullanıyorum öncelikle belirtmeliyim ki mob_proto çevirici sorunsuz çalışıyor hiçbir hata ve sıkıntı yok çıkarttığı dosyalarda sorunsuz fakat 4 gündür uğraşmama rağmen item_proto kısmını bir türlü ayarlayamadım sanırım ayar kısmında bir hata yapıyorum, yardımcı olursanız çok memnun olurum.


PROBLEM ;

TypeError: cannot concatenate 'str' and 'long' objects

Convert script ;

Python:
def item_proto():
    item_type = {
        0: "ITEM_NONE",
        1: "ITEM_WEAPON",
        2: "ITEM_ARMOR",
        3: "ITEM_USE",
        4: "ITEM_AUTOUSE",
        5: "ITEM_MATERIAL",
        6: "ITEM_SPECIAL",
        7: "ITEM_TOOL",
        8: "ITEM_LOTTERY",
        9: "ITEM_ELK",
        10: "ITEM_METIN",
        11: "ITEM_CONTAINER",
        12: "ITEM_FISH",
        13: "ITEM_ROD",
        14: "ITEM_RESOURCE",
        15: "ITEM_CAMPFIRE",
        16: "ITEM_UNIQUE",
        17: "ITEM_SKILLBOOK",
        18: "ITEM_QUEST",
        19: "ITEM_POLYMORPH",
        20: "ITEM_TREASURE_BOX",
        21: "ITEM_TREASURE_KEY",
        22: "ITEM_SKILLFORGET",
        23: "ITEM_GIFTBOX",
        24: "ITEM_PICK",
        25: "ITEM_HAIR",
        26: "ITEM_TOTEM",
        27: "ITEM_BLEND",
        28: "ITEM_COSTUME",
        29: "ITEM_DS",
        30: "ITEM_SPECIAL_DS",
        31: "ITEM_EXTRACT",
        32: "ITEM_SECONDARY_COIN",
        33: "ITEM_RING",
        34: "ITEM_BELT"
    }

    item_subtype = {
        1: {
            0: "WEAPON_SWORD",
            1: "WEAPON_DAGGER",
            2: "WEAPON_BOW",
            3: "WEAPON_TWO_HANDED",
            4: "WEAPON_BELL",
            5: "WEAPON_FAN",
            6: "WEAPON_ARROW",
            7: "WEAPON_MOUNT_SPEAR",
            8: "WEAPON_NUM_TYPES",
        },
        2: {
            0: "ARMOR_BODY",
            1: "ARMOR_HEAD",
            2: "ARMOR_SHIELD",
            3: "ARMOR_WRIST",
            4: "ARMOR_FOOTS",
            5: "ARMOR_NECK",
            6: "ARMOR_EAR",
            7: "ARMOR_NUM_TYPES",
        },
        3 : {
            0: "USE_POTION",
            1: "USE_TALISMAN",
            2: "USE_TUNING",
            3: "USE_MOVE",
            4: "USE_TREASURE_BOX",
            5: "USE_MONEYBAG",
            6: "USE_BAIT",
            7: "USE_ABILITY_UP",
            8: "USE_AFFECT",
            9: "USE_CREATE_STONE",
            10: "USE_SPECIAL",
            11: "USE_POTION_NODELAY",
            12: "USE_CLEAR",
            13: "USE_INVISIBILITY",
            14: "USE_DETACHMENT",
            15: "USE_BUCKET",
            16: "USE_POTION_CONTINUE",
            17: "USE_CLEAN_SOCKET",
            18: "USE_CHANGE_ATTRIBUTE",
            19: "USE_ADD_ATTRIBUTE",
            20: "USE_ADD_ACCESSORY_SOCKET",
            21: "USE_PUT_INTO_ACCESSORY_SOCKET",
            22: "USE_ADD_ATTRIBUTE2",
            23: "USE_RECIPE",
            24: "USE_CHANGE_ATTRIBUTE2",
            25: "USE_BIND",
            26: "USE_UNBIND",
            27: "USE_TIME_CHARGE_PER",
            28: "USE_TIME_CHARGE_FIX",
            29: "USE_PUT_INTO_BELT_SOCKET",
            30: "USE_PUT_INTO_RING_SOCKET",
        },
        4: {
            0: "AUTOUSE_POTION",
            1: "AUTOUSE_ABILITY_UP",
            2: "AUTOUSE_BOMB",
            3: "AUTOUSE_GOLD",
            4: "AUTOUSE_MONEYBAG",
            5: "AUTOUSE_TREASURE_BOX",
        },
        5: {
            0: "MATERIAL_LEATHER",
            1: "MATERIAL_BLOOD",
            2: "MATERIAL_ROOT",
            3: "MATERIAL_NEEDLE",
            4: "MATERIAL_JEWEL",
            5: "MATERIAL_DS_REFINE_NORMAL",
            6: "MATERIAL_DS_REFINE_BLESSED",
            7: "MATERIAL_DS_REFINE_HOLLY",
        },
        6: {
            0: "SPECIAL_MAP",
            1: "SPECIAL_KEY",
            2: "SPECIAL_DOC",
            3: "SPECIAL_SPIRIT",
        },
        7: {
            0 : "TOOL_FISHING_ROD",
        },
        8: {
            0: "LOTTERY_TICKET",
            1: "LOTTERY_INSTANT",
        },
        10: {
            0: "METIN_NORMAL",
            1: "METIN_GOLD",
        },
        12: {
            0: "FISH_ALIVE",
            1: "FISH_DEAD",
        },
        14: {
            0: "RESOURCE_FISHBONE",
            1: "RESOURCE_WATERSTONEPIECE",
            2: "RESOURCE_WATERSTONE",
            3: "RESOURCE_BLOOD_PEARL",
            4: "RESOURCE_BLUE_PEARL",
            5: "RESOURCE_WHITE_PEARL",
            6: "RESOURCE_BUCKET",
            7: "RESOURCE_CRYSTAL",
            8: "RESOURCE_GEM",
            9: "RESOURCE_STONE",
            10: "RESOURCE_METIN",
            11: "RESOURCE_ORE",
        },
        16: {
            0: "UNIQUE_NONE",
            1: "UNIQUE_BOOK",
            2: "UNIQUE_SPECIAL_RIDE",
            3: "UNIQUE_3",
            4: "UNIQUE_4",
            5: "UNIQUE_5",
            6: "UNIQUE_6",
            7: "UNIQUE_7",
            8: "UNIQUE_8",
            9: "UNIQUE_9",
            10: "USE_SPECIAL",
        },
        28: {
            0: "COSTUME_BODY",
            1: "COSTUME_HAIR",
        },
        29: {
            0: "DS_SLOT1",
            1: "DS_SLOT2",
            2: "DS_SLOT3",
            3: "DS_SLOT4",
            4: "DS_SLOT5",
            5: "DS_SLOT6",
        },
        31: {
            0: "EXTRACT_DRAGON_SOUL",
            1: "EXTRACT_DRAGON_HEART",
        },
    }

    wearflag = {
        1: "WEAR_BODY",
        2: "WEAR_HEAD",
        4: "WEAR_FOOTS",
        8: "WEAR_WRIST",
        16: "WEAR_WEAPON",
        32: "WEAR_NECK",
        64: "WEAR_EAR",
        128: "WEAR_SHIELD",
        256: "WEAR_UNIQUE",
        512: "WEAR_ARROW",
        1024: "WEAR_HAIR",
        2048: "WEAR_ABILITY",
    }

    limittype = {
        1: "LEVEL",
        2: "STR",
        3: "DEX",
        4: "INT",
        5: "CON",
        6: "REAL_TIME",
        7: "REAL_TIME_FIRST_USE",
        8: "TIMER_BASED_ON_WEAR",
    }

    bonus = {
        1: "APPLY_MAX_HP",
        2: "APPLY_MAX_SP",
        3: "APPLY_CON",
        4: "APPLY_INT",
        5: "APPLY_STR",
        6: "APPLY_DEX",
        7: "APPLY_ATT_SPEED",
        8: "APPLY_MOV_SPEED",
        9: "APPLY_CAST_SPEED",
        10: "APPLY_HP_REGEN",
        11: "APPLY_SP_REGEN",
        12: "APPLY_POISON_PCT",
        13: "APPLY_STUN_PCT",
        14: "APPLY_SLOW_PCT",
        15: "APPLY_CRITICAL_PCT",
        16: "APPLY_PENETRATE_PCT",
        17: "APPLY_ATTBONUS_HUMAN",
        18: "APPLY_ATTBONUS_ANIMAL",
        19: "APPLY_ATTBONUS_ORC",
        20: "APPLY_ATTBONUS_MILGYO",
        21: "APPLY_ATTBONUS_UNDEAD",
        22: "APPLY_ATTBONUS_DEVIL",
        23: "APPLY_STEAL_HP",
        24: "APPLY_STEAL_SP",
        25: "APPLY_MANA_BURN_PCT",
        26: "APPLY_DAMAGE_SP_RECOVER",
        27: "APPLY_BLOCK",
        28: "APPLY_DODGE",
        29: "APPLY_RESIST_SWORD",
        30: "APPLY_RESIST_TWOHAND",
        31: "APPLY_RESIST_DAGGER",
        32: "APPLY_RESIST_BELL",
        33: "APPLY_RESIST_FAN",
        34: "APPLY_RESIST_BOW",
        35: "APPLY_RESIST_FIRE",
        36: "APPLY_RESIST_ELEC",
        37: "APPLY_RESIST_MAGIC",
        38: "APPLY_RESIST_WIND",
        39: "APPLY_REFLECT_MELEE",
        40: "APPLY_REFLECT_CURSE",
        41: "APPLY_POISON_REDUCE",
        42: "APPLY_KILL_SP_RECOVER",
        43: "APPLY_EXP_DOUBLE_BONUS",
        44: "APPLY_GOLD_DOUBLE_BONUS",
        45: "APPLY_ITEM_DROP_BONUS",
        46: "APPLY_POTION_BONUS",
        47: "APPLY_KILL_HP_RECOVER",
        48: "APPLY_IMMUNE_STUN",
        49: "APPLY_IMMUNE_SLOW",
        50: "APPLY_IMMUNE_FALL",
        51: "APPLY_SKILL",
        52: "APPLY_BOW_DISTANCE",
        53: "APPLY_ATT_GRADE_BONUS",
        54: "APPLY_DEF_GRADE_BONUS",
        55: "APPLY_MAGIC_ATT_GRADE",
        56: "APPLY_MAGIC_DEF_GRADE",
        57: "APPLY_CURSE_PCT",
        58: "APPLY_MAX_STAMINA",
        59: "APPLY_ATTBONUS_WARRIOR",
        60: "APPLY_ATTBONUS_ASSASSIN",
        61: "APPLY_ATTBONUS_SURA",
        62: "APPLY_ATTBONUS_SHAMAN",
        63: "APPLY_ATTBONUS_MONSTER",
        64: "APPLY_MALL_ATTBONUS",
        65: "APPLY_MALL_DEFBONUS",
        66: "APPLY_MALL_EXPBONUS",
        67: "APPLY_MALL_ITEMBONUS",
        68: "APPLY_MALL_GOLDBONUS",
        69: "APPLY_MAX_HP_PCT",
        70: "APPLY_MAX_SP_PCT",
        71: "APPLY_SKILL_DAMAGE_BONUS",
        72: "APPLY_NORMAL_HIT_DAMAGE_BONUS",
        73: "APPLY_SKILL_DEFEND_BONUS",
        74: "APPLY_NORMAL_HIT_DEFEND_BONUS",
        75: "APPLY_PC_BANG_EXP_BONUS",
        76: "APPLY_PC_BANG_DROP_BONUS",
        77: "APPLY_EXTRACT_HP_PCT",
        78: "APPLY_RESIST_WARRIOR",
        79: "APPLY_RESIST_ASSASSIN",
        80: "APPLY_RESIST_SURA",
        81: "APPLY_RESIST_SHAMAN",
        82: "APPLY_ENERGY",
        83: "APPLY_DEF_GRADE",
        84: "APPLY_COSTUME_ATTR_BONUS",
        85: "APPLY_MAGIC_ATTBONUS_PER",
        86: "APPLY_MELEE_MAGIC_ATTBONUS_PER",
        87: "APPLY_RESIST_ICE",
        88: "APPLY_RESIST_EARTH",
        89: "APPLY_RESIST_DARK",
        90: "APPLY_ANTI_CRITICAL_PCT",
        91: "APPLY_ANTI_PENETRATE_PCT",
    }

    addon_type = {
        180,
        181,
        182,
        183,
        184,
        185,
        186,
        187,
        188,
        189,
        190,
        191,
        192,
        193,
        194,
        195,
        196,
        197,
        198,
        199,
        290,
        291,
        292,
        293,
        294,
        295,
        296,
        297,
        298,
        299,
        1130,
        1131,
        1132,
        1133,
        1134,
        1135,
        1136,
        1137,
        1138,
        1139,
        1170,
        1171,
        1172,
        1173,
        1174,
        1175,
        1176,
        1177,
        1178,
        1179,
        2150,
        2151,
        2152,
        2153,
        2154,
        2155,
        2156,
        2157,
        2158,
        2159,
        2170,
        2171,
        2172,
        2173,
        2174,
        2175,
        2176,
        2177,
        2178,
        2179,
        3160,
        3161,
        3162,
        3163,
        3164,
        3165,
        3166,
        3167,
        3168,
        3169,
        3210,
        3211,
        3212,
        3213,
        3214,
        3215,
        3216,
        3217,
        3218,
        3219,
        5110,
        5111,
        5112,
        5113,
        5114,
        5115,
        5116,
        5117,
        5118,
        5119,
        5120,
        5121,
        5122,
        5123,
        5124,
        5125,
        5126,
        5127,
        5128,
        5129,
        7160,
        7161,
        7162,
        7163,
        7164,
        7165,
        7166,
        7167,
        7168,
        7169,
        65159,
        350,
        351,
        352,
        353,
        354,
        355,
        356,
        357,
        358,
        359,
        360,
        361,
        362,
        363,
        364,
        365,
        366,
        367,
        368,
        369,
        1300,
        1301,
        1302,
        1303,
        1304,
        1305,
        1306,
        1307,
        1308,
        1309,
        2340,
        2341,
        2342,
        2343,
        2344,
        2345,
        2346,
        2347,
        2348,
        2349,
        3330,
        3331,
        3332,
        3333,
        3334,
        3335,
        3336,
        3337,
        3338,
        3339,
        5290,
        5291,
        5292,
        5293,
        5294,
        5295,
        5296,
        5297,
        5298,
        5299,
    }

    errors = ""

    def get_item_type(type, vnum):
        global errors
        errors = ""
        if type in item_type:
            return item_type[type]
        else:
            errors += "Strange type in item %s\r\n" % vnum
            return item_type[0]

    def get_item_subtype(type, subtype, vnum):
        global errors
        errors = ""
        if type in item_subtype:
            if subtype in item_subtype[type]:
                return item_subtype[type][subtype]
        else:
            errors += "Strange subtype in item %s\r\n" % vnum
            return "NONE"

    def get_antiflag(antiflag, vnum):
        global errors
        str = ""
        if antiflag >= 131072:
            antiflag -= 131072
            if len(str) <= 0:
                str = "ANTI_SAFEBOX"
            else:
                str = "ANTI_SAFEBOX | " + str
        if antiflag >= 65536:
            antiflag -= 65536
            if len(str) <= 0:
                str = "ANTI_MYSHOP"
            else:
                str = "ANTI_MYSHOP | " + str
        if antiflag >= 32768:
            antiflag -= 32768
            if len(str) <= 0:
                str = "ANTI_STACK"
            else:
                str = "ANTI_STACK | " + str
        if antiflag >= 16384:
            antiflag -= 16384
            if len(str) <= 0:
                str = "ANTI_PKDROP"
            else:
                str = "ANTI_PKDROP | " + str
        if antiflag >= 8192:
            antiflag -= 8192
            if len(str) <= 0:
                str = "ANTI_GIVE"
            else:
                str = "ANTI_GIVE | " + str
        if antiflag >= 4096:
            antiflag -= 4096
            if len(str) <= 0:
                str = "ANTI_SAVE"
            else:
                str = "ANTI_SAVE | " + str
        if antiflag >= 2048:
            antiflag -= 2048
            if len(str) <= 0:
                str = "ANTI_EMPIRE_C"
            else:
                str = "ANTI_EMPIRE_C | " + str
        if antiflag >= 1024:
            antiflag -= 1024
            if len(str) <= 0:
                str = "ANTI_EMPIRE_B"
            else:
                str = "ANTI_EMPIRE_B | " + str
        if antiflag >= 512:
            antiflag -= 512
            if len(str) <= 0:
                str = "ANTI_EMPIRE_A"
            else:
                str = "ANTI_EMPIRE_A | " + str
        if antiflag >= 256:
            antiflag -= 256
            if len(str) <= 0:
                str = "ANTI_SELL"
            else:
                str = "ANTI_SELL | " + str
        if antiflag >= 64:
            antiflag -= 64
            if len(str) <= 0:
                str = "ANTI_GET"
            else:
                str = "ANTI_GET | " + str
        if antiflag >= 32:
            antiflag -= 32
            if len(str) <= 0:
                str = "ANTI_MUDANG"
            else:
                str = "ANTI_MUDANG | " + str
        if antiflag >= 16:
            antiflag -= 16
            if len(str) <= 0:
                str = "ANTI_SURA"
            else:
                str = "ANTI_SURA | " + str
        if antiflag >= 8:
            antiflag -= 8
            if len(str) <= 0:
                str = "ANTI_ASSASSIN"
            else:
                str = "ANTI_ASSASSIN | " + str
        if antiflag >= 4:
            antiflag -= 4
            if len(str) <= 0:
                str = "ANTI_MUSA"
            else:
                str = "ANTI_MUSA | " + str
        if antiflag >= 2:
            antiflag -= 2
            if len(str) <= 0:
                str = "ANTI_MALE"
            else:
                str = "ANTI_MALE | " + str
        if antiflag >= 1:
            antiflag -= 1
            if len(str) <= 0:
                str = "ANTI_FEMALE"
            else:
                str = "ANTI_FEMALE | " + str
        if antiflag == 0 and len(str) > 0:
            return "\"" + str + "\""
        else:
            errors += "Strange antiflag in item %s\r\n" % vnum
            return "\"NONE\""
       
    def get_flag(flag, vnum):
        global errors
        str = ""
        if flag >= 32768:
            flag -= 32768
            if len(str) <= 0:
                str = "ITEM_APPLICABLE"
            else:
                str = "ITEM_APPLICABLE | " + str
        if flag >= 16384:
            flag -= 16384
            if len(str) <= 0:
                str = "REFINEABLE"
            else:
                str = "REFINEABLE | " + str
        if flag >= 8192:
            flag -= 8192
            if len(str) <= 0:
                str = "LOG"
            else:
                str = "LOG | " + str
        if flag >= 4096:
            flag -= 4096
            if len(str) <= 0:
                str = "ITEM_QUEST"
            else:
                str = "ITEM_QUEST | " + str
        if flag >= 2048:
            flag -= 2048
            if len(str) <= 0:
                str = "QUEST_GIVE"
            else:
                str = "QUEST_GIVE | " + str
        if flag >= 1024:
            flag -= 1024
            if len(str) <= 0:
                str = "QUEST_USE_MULTIPLE"
            else:
                str = "QUEST_USE_MULTIPLE | " + str
        if flag >= 512:
            flag -= 512
            if len(str) <= 0:
                str = "QUEST_USE"
            else:
                str = "QUEST_USE | " + str
        if flag >= 256:
            flag -= 256
            if len(str) <= 0:
                str = "CONFIRM_WHEN_USE"
            else:
                str = "CONFIRM_WHEN_USE | " + str
        if flag >= 128:
            flag -= 128
            if len(str) <= 0:
                str = "ITEM_IRREMOVABLE"
            else:
                str = "ITEM_IRREMOVABLE | " + str
        if flag >= 64:
            flag -= 64
            if len(str) <= 0:
                str = "ITEM_MAKECOUNT"
            else:
                str = "ITEM_MAKECOUNT | " + str
        if flag >= 32:
            flag -= 32
            if len(str) <= 0:
                str = "ITEM_UNIQUE"
            else:
                str = "ITEM_UNIQUE | " + str
        if flag >= 16:
            flag -= 16
            if len(str) <= 0:
                str = "ITEM_SLOW_QUERY"
            else:
                str = "ITEM_SLOW_QUERY | " + str
        if flag >= 8:
            flag -= 8
            if len(str) <= 0:
                str = "COUNT_PER_1GOLD"
            else:
                str = "COUNT_PER_1GOLD | " + str
        if flag >= 4:
            flag -= 4
            if len(str) <= 0:
                str = "ITEM_STACKABLE"
            else:
                str = "ITEM_STACKABLE | " + str
        if flag >= 2:
            flag -= 2
            if len(str) <= 0:
                str = "ITEM_SAVE"
            else:
                str = "ITEM_SAVE | " + str
        if flag >= 1:
            flag -= 1
            if len(str) <= 0:
                str = "ITEM_TUNABLE"
            else:
                str = "ITEM_TUNABLE | " + str
        if flag == 0 and len(str) > 0:
            return "\"" + str + "\""
        else:
            errors += "Strange flag in item %s\r\n" % vnum
            return "\"NONE\""

    def get_wearflag(wear, vnum):
        global errors
        if wear in wearflag:
            return "\"" + wearflag[wear] + "\""
        else:
            errors += "Strange wearflag in item %s\r\n" % vnum
            return "\"NONE\""
           
    def get_immuneflag(immune):
            return "\"NONE\""
           
    def get_limittype(limit):
        if limit in limittype:
            return "\"" + limittype[limit] + "\""
        else:
            return "\"LIMIT_NONE\""
           
    def get_apply(apply):
        if apply in bonus:
            return "\"" + bonus[apply] + "\""
        else:
            return "\"APPLY_NONE\""

    def socket(sockett):
        if sockett == 127:
            return 0
        else:
            return sockett


    print "item_proto icin databaseye baglaniliyor."
    data = "player"
    db = MySQLdb.connect(host_mysql,user_mysql,passwd_mysql,data)
    cur = db.cursor()
    print "baglanti basarili."
    cur.execute("select * from item_proto")
    rows = cur.fetchall()
    out_file_itemproto = open("item_proto.txt", "w")
    out_file_itemnames = open("item_names.txt", "w")
    print "item_proto donusturuluyor."
    for row in rows:
        item_proto_line = "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s" % (row[0], "\"" + row[1] + "\"", "\""  + get_item_type(row[3], row[0]) + "\"" , "\""  + get_item_subtype(row[3], row[4], row[0]) + "\"", row[6] , get_antiflag(row[7], row[0]), get_flag(row[8], row[0]), get_wearflag(row[9], row[0]), get_immuneflag(row[10]), row[11], row[12], row[13], row[14], row[16], get_limittype(row[17]), row[18], get_limittype(row[19]), row[20], get_apply(row[21]), row[22], get_apply(row[23]), row[24], get_apply(row[25]), row[26], row[27], row[28], row[29], row[30], row[31], row[32], row[39], row[40], row[41])
        item_names_line = "%s\t%s" % (row[0], row[2])
        out_file_itemproto.write(item_proto_line + "\r\n")
        out_file_itemnames.write(item_names_line + "\r\n")
    out_file_itemproto.close()
    print "item_proto donusturuldu."
    """if len(errors) != 0:
        print "Errors during conversion:"
        print errors"""

print item_proto()


ProtoReader.cpp Dosyam ;

C++:
#include "stdafx.h"

#include <math.h>
#include "ProtoReader.h"

#include "CsvReader.h"

#include <sstream>

using namespace std;

inline string trim_left(const string& str)
{
    string::size_type n = str.find_first_not_of(" \t\v\n\r");
    return n == string::npos ? str : str.substr(n, str.length());
}

inline string trim_right(const string& str)
{
    string::size_type n = str.find_last_not_of(" \t\v\n\r");
    return n == string::npos ? str : str.substr(0, n + 1);
}

string trim(const string& str){return trim_left(trim_right(str));}

static string* StringSplit(string strOrigin, string strTok)
{
    int     cutAt;                            //ÀÚ¸£´ÂÀ§Ä¡
    int     index     = 0;                    //¹®ÀÚ¿À妽º
    string* strResult = new string[30];          //°á°úreturn ÇÒº¯¼ö

    //strTokÀ»Ã£À»¶§±îÁö¹İº¹
    while (unsigned(cutAt = strOrigin.find_first_of(strTok)) != strOrigin.npos) //Game-DB SRC Warning Fix 22
    {
       if (cutAt > 0)  //ÀÚ¸£´ÂÀ§Ä¡°¡0º¸´ÙÅ©¸é(¼º°ø½Ã)
       {
            strResult[index++] = strOrigin.substr(0, cutAt);  //°á°ú¹è¿¿¡Ãß°¡
       }
       strOrigin = strOrigin.substr(cutAt+1);  //¿øº»ÀºÀÚ¸¥ºÎºĞÁ¦¿ÜÇѳª¸ÓÁö
    }

    if(strOrigin.length() > 0)  //¿øº»À̾ÆÁ÷³²¾ÒÀ¸¸é
    {
        strResult[index++] = strOrigin.substr(0, cutAt);  //³ª¸ÓÁö¸¦°á°ú¹è¿¿¡Ãß°¡
    }

    for( int i=0;i<index;i++)
    {
        strResult[i] = trim(strResult[i]);
    }

    return strResult;  //°á°úreturn
}



int get_Item_Type_Value(string inputString)
{
    string arType[] = {"ITEM_NONE", "ITEM_WEAPON",
        "ITEM_ARMOR", "ITEM_USE",
        "ITEM_AUTOUSE", "ITEM_MATERIAL",
        "ITEM_SPECIAL", "ITEM_TOOL",
        "ITEM_LOTTERY", "ITEM_ELK",                    //10°³

        "ITEM_METIN", "ITEM_CONTAINER",
        "ITEM_FISH", "ITEM_ROD",
        "ITEM_RESOURCE", "ITEM_CAMPFIRE",
        "ITEM_UNIQUE", "ITEM_SKILLBOOK",
        "ITEM_QUEST", "ITEM_POLYMORPH",                //20°³

        "ITEM_TREASURE_BOX", "ITEM_TREASURE_KEY",
        "ITEM_SKILLFORGET", "ITEM_GIFTBOX",
        "ITEM_PICK", "ITEM_HAIR",
        "ITEM_TOTEM", "ITEM_BLEND",
        "ITEM_COSTUME", "ITEM_DS",                    //30°³
   
        "ITEM_SPECIAL_DS",    "ITEM_EXTRACT",
        "ITEM_SECONDARY_COIN",                        //33°³

        "ITEM_RING",
        "ITEM_BELT",                                //35°³ (EItemTypes °ªÀ¸·Î Ä¡¸é 34)
    };

   
    int retInt = -1;
    //cout << "Type : " << typeStr << " -> ";
    for (unsigned int j=0;j<sizeof(arType)/sizeof(arType[0]);j++) { //Game-DB SRC Warning Fix 23
        string tempString = arType[j];
        if    (inputString.find(tempString)!=string::npos && tempString.find(inputString)!=string::npos) {
            //cout << j << " ";
            retInt =  j;
            break;
        }
    }
    //cout << endl;

    return retInt;

}

int get_Item_SubType_Value(unsigned int type_value, string inputString) //Game-DB SRC Warning Fix 44
{
    static string arSub1[] = { "WEAPON_SWORD", "WEAPON_DAGGER", "WEAPON_BOW", "WEAPON_TWO_HANDED",
                "WEAPON_BELL", "WEAPON_FAN", "WEAPON_ARROW", "WEAPON_MOUNT_SPEAR"};
    static string arSub2[] = { "ARMOR_BODY", "ARMOR_HEAD", "ARMOR_SHIELD", "ARMOR_WRIST", "ARMOR_FOOTS",
                "ARMOR_NECK", "ARMOR_EAR", "ARMOR_NUM_TYPES"};
    static string arSub3[] = { "USE_POTION", "USE_TALISMAN", "USE_TUNING", "USE_MOVE", "USE_TREASURE_BOX", "USE_MONEYBAG", "USE_BAIT",
                "USE_ABILITY_UP", "USE_AFFECT", "USE_CREATE_STONE", "USE_SPECIAL", "USE_POTION_NODELAY", "USE_CLEAR",
                "USE_INVISIBILITY", "USE_DETACHMENT", "USE_BUCKET", "USE_POTION_CONTINUE", "USE_CLEAN_SOCKET",
                "USE_CHANGE_ATTRIBUTE", "USE_ADD_ATTRIBUTE", "USE_ADD_ACCESSORY_SOCKET", "USE_PUT_INTO_ACCESSORY_SOCKET",
                "USE_ADD_ATTRIBUTE2", "USE_RECIPE", "USE_CHANGE_ATTRIBUTE2", "USE_BIND", "USE_UNBIND", "USE_TIME_CHARGE_PER", "USE_TIME_CHARGE_FIX", "USE_PUT_INTO_BELT_SOCKET", "USE_PUT_INTO_RING_SOCKET"};
    static string arSub4[] = { "AUTOUSE_POTION", "AUTOUSE_ABILITY_UP", "AUTOUSE_BOMB", "AUTOUSE_GOLD", "AUTOUSE_MONEYBAG", "AUTOUSE_TREASURE_BOX"};
    static string arSub5[] = { "MATERIAL_LEATHER", "MATERIAL_BLOOD", "MATERIAL_ROOT", "MATERIAL_NEEDLE", "MATERIAL_JEWEL",
        "MATERIAL_DS_REFINE_NORMAL", "MATERIAL_DS_REFINE_BLESSED", "MATERIAL_DS_REFINE_HOLLY"};
    static string arSub6[] = { "SPECIAL_MAP", "SPECIAL_KEY", "SPECIAL_DOC", "SPECIAL_SPIRIT"};
    static string arSub7[] = { "TOOL_FISHING_ROD" };
    static string arSub8[] = { "LOTTERY_TICKET", "LOTTERY_INSTANT" };
    static string arSub10[] = { "METIN_NORMAL", "METIN_GOLD" };
    static string arSub12[] = { "FISH_ALIVE", "FISH_DEAD"};
    static string arSub14[] = { "RESOURCE_FISHBONE", "RESOURCE_WATERSTONEPIECE", "RESOURCE_WATERSTONE", "RESOURCE_BLOOD_PEARL",
                        "RESOURCE_BLUE_PEARL", "RESOURCE_WHITE_PEARL", "RESOURCE_BUCKET", "RESOURCE_CRYSTAL", "RESOURCE_GEM",
                        "RESOURCE_STONE", "RESOURCE_METIN", "RESOURCE_ORE" };
    static string arSub16[] = { "UNIQUE_NONE", "UNIQUE_BOOK", "UNIQUE_SPECIAL_RIDE", "UNIQUE_3", "UNIQUE_4", "UNIQUE_5",
                    "UNIQUE_6", "UNIQUE_7", "UNIQUE_8", "UNIQUE_9", "USE_SPECIAL"};
    static string arSub28[] = { "COSTUME_BODY", "COSTUME_HAIR" };
    static string arSub29[] = { "DS_SLOT1", "DS_SLOT2", "DS_SLOT3", "DS_SLOT4", "DS_SLOT5", "DS_SLOT6" };
    static string arSub31[] = { "EXTRACT_DRAGON_SOUL", "EXTRACT_DRAGON_HEART" };
   
    static string* arSubType[] = {0,    //0
        arSub1,        //1
        arSub2,    //2
        arSub3,    //3
        arSub4,    //4
        arSub5,    //5
        arSub6,    //6
        arSub7,    //7
        arSub8,    //8
        0,            //9
        arSub10,    //10
        0,            //11
        arSub12,    //12
        0,            //13
        arSub14,    //14
        0,            //15
        arSub16,    //16
        0,            //17
        0,            //18
        0,            //19
        0,            //20
        0,            //21
        0,            //22
        0,            //23
        0,            //24
        0,            //25
        0,            //26
        0,            //27
        arSub28,    //28
        arSub29,        //29
        arSub29,    //30
        arSub31,    //31
        0,            //32
        0,            //33 ¹İÁö
        0,            //34 º§Æ®
    };
    static int arNumberOfSubtype[_countof(arSubType)] = {
        0,
        sizeof(arSub1)/sizeof(arSub1[0]),
        sizeof(arSub2)/sizeof(arSub2[0]),
        sizeof(arSub3)/sizeof(arSub3[0]),
        sizeof(arSub4)/sizeof(arSub4[0]),
        sizeof(arSub5)/sizeof(arSub5[0]),
        sizeof(arSub6)/sizeof(arSub6[0]),
        sizeof(arSub7)/sizeof(arSub7[0]),
        sizeof(arSub8)/sizeof(arSub8[0]),
        0,
        sizeof(arSub10)/sizeof(arSub10[0]),
        0,
        sizeof(arSub12)/sizeof(arSub12[0]),
        0,
        sizeof(arSub14)/sizeof(arSub14[0]),
        0,
        sizeof(arSub16)/sizeof(arSub16[0]),
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        sizeof(arSub28)/sizeof(arSub28[0]),
        sizeof(arSub29)/sizeof(arSub29[0]),
        sizeof(arSub29)/sizeof(arSub29[0]),
        sizeof(arSub31)/sizeof(arSub31[0]),
        0, // 32
        0, // 33 ¹İÁö
        0, // 34 º§Æ®
    };
   

    assert(_countof(arSubType) > type_value && "Subtype rule: Out of range!!");

    // assert ¾È ¸ÔÈ÷´Â µí..
    if (_countof(arSubType) <= type_value)
    {
        sys_err("SubType : Out of range!! (type_value: %d, count of registered subtype: %d", type_value, _countof(arSubType));
        return -1;
    }

    //¾ÆÀÌÅÛ Å¸ÀÔÀÇ ¼ºêŸÀÔ ¾î·¹ÀÌ°¡ Á¸ÀçÇÏ´ÂÁö ¾Ë¾Æº¸°í, ¾øÀ¸¸é 0 ¸®ÅÏ
    if (arSubType[type_value]==0) {
        return 0;
    }
    //

    int retInt = -1;
    //cout << "SubType : " << subTypeStr << " -> ";
    for (int j=0;j<arNumberOfSubtype[type_value];j++) {
        string tempString = arSubType[type_value][j];
        string tempInputString = trim(inputString);
        if    (tempInputString.compare(tempString)==0)
        {
            //cout << j << " ";
            retInt =  j;
            break;
        }
    }
    //cout << endl;

    return retInt;
}





int get_Item_AntiFlag_Value(string inputString)
{

    string arAntiFlag[] = {"ANTI_FEMALE", "ANTI_MALE", "ANTI_MUSA", "ANTI_ASSASSIN", "ANTI_SURA", "ANTI_MUDANG",
                            "ANTI_GET", "ANTI_DROP", "ANTI_SELL", "ANTI_EMPIRE_A", "ANTI_EMPIRE_B", "ANTI_EMPIRE_C",
                            "ANTI_SAVE", "ANTI_GIVE", "ANTI_PKDROP", "ANTI_STACK", "ANTI_MYSHOP", "ANTI_SAFEBOX"};


    int retValue = 0;
    string* arInputString = StringSplit(inputString, "|");                //ÇÁ·ÎÅä Á¤º¸ ³»¿ëÀ» ´Ü¾îº°·Î ÂÉ°µ ¹è¿.
    for(unsigned int i =0;i<sizeof(arAntiFlag)/sizeof(arAntiFlag[0]);i++) { //Game-DB SRC Warning Fix 24
        string tempString = arAntiFlag[i];
        for (int j=0; j<30 ; j++)        //ÃÖ´ë 30°³ ´Ü¾î±îÁö. (ÇϵåÄÚµù)
        {
            string tempString2 = arInputString[j];
            if (tempString2.compare(tempString)==0) {                //ÀÏÄ¡ÇÏ´ÂÁö È®ÀÎ.
                retValue = retValue + pow((float)2,(float)i);
            }
           
            if(tempString2.compare("") == 0)
                break;
        }
    }
    delete []arInputString;
    //cout << "AntiFlag : " << antiFlagStr << " -> " << retValue << endl;

    return retValue;
}

int get_Item_Flag_Value(string inputString)
{

    string arFlag[] = {"ITEM_TUNABLE", "ITEM_SAVE", "ITEM_STACKABLE", "COUNT_PER_1GOLD", "ITEM_SLOW_QUERY", "ITEM_UNIQUE",
            "ITEM_MAKECOUNT", "ITEM_IRREMOVABLE", "CONFIRM_WHEN_USE", "QUEST_USE", "QUEST_USE_MULTIPLE",
            "QUEST_GIVE", "ITEM_QUEST", "LOG", "STACKABLE", "SLOW_QUERY", "REFINEABLE", "IRREMOVABLE", "ITEM_APPLICABLE"};


    int retValue = 0;
    string* arInputString = StringSplit(inputString, "|");                //ÇÁ·ÎÅä Á¤º¸ ³»¿ëÀ» ´Ü¾îº°·Î ÂÉ°µ ¹è¿.
    for(unsigned int i =0;i<sizeof(arFlag)/sizeof(arFlag[0]);i++) { //Game-DB SRC Warning Fix 25
        string tempString = arFlag[i];
        for (int j=0; j<30 ; j++)        //ÃÖ´ë 30°³ ´Ü¾î±îÁö. (ÇϵåÄÚµù)
        {
            string tempString2 = arInputString[j];
            if (tempString2.compare(tempString)==0) {                //ÀÏÄ¡ÇÏ´ÂÁö È®ÀÎ.
                retValue = retValue + pow((float)2,(float)i);
            }
           
            if(tempString2.compare("") == 0)
                break;
        }
    }
    delete []arInputString;
    //cout << "Flag : " << flagStr << " -> " << retValue << endl;

    return retValue;
}

int get_Item_WearFlag_Value(string inputString)
{

    string arWearrFlag[] = {"WEAR_BODY", "WEAR_HEAD", "WEAR_FOOTS", "WEAR_WRIST", "WEAR_WEAPON", "WEAR_NECK", "WEAR_EAR", "WEAR_SHIELD", "WEAR_UNIQUE",
                    "WEAR_ARROW", "WEAR_HAIR", "WEAR_ABILITY"};


    int retValue = 0;
    string* arInputString = StringSplit(inputString, "|");                //ÇÁ·ÎÅä Á¤º¸ ³»¿ëÀ» ´Ü¾îº°·Î ÂÉ°µ ¹è¿.
    for(unsigned int i =0;i<sizeof(arWearrFlag)/sizeof(arWearrFlag[0]);i++) { //Game-DB SRC Warning Fix 26
        string tempString = arWearrFlag[i];
        for (int j=0; j<30 ; j++)        //ÃÖ´ë 30°³ ´Ü¾î±îÁö. (ÇϵåÄÚµù)
        {
            string tempString2 = arInputString[j];
            if (tempString2.compare(tempString)==0) {                //ÀÏÄ¡ÇÏ´ÂÁö È®ÀÎ.
                retValue = retValue + pow((float)2,(float)i);
            }
           
            if(tempString2.compare("") == 0)
                break;
        }
    }
    delete []arInputString;
    //cout << "WearFlag : " << wearFlagStr << " -> " << retValue << endl;

    return retValue;
}

int get_Item_Immune_Value(string inputString)
{

    string arImmune[] = {"PARA","CURSE","STUN","SLEEP","SLOW","POISON","TERROR"};

    int retValue = 0;
    string* arInputString = StringSplit(inputString, "|");                //ÇÁ·ÎÅä Á¤º¸ ³»¿ëÀ» ´Ü¾îº°·Î ÂÉ°µ ¹è¿.
    for(unsigned int i =0;i<sizeof(arImmune)/sizeof(arImmune[0]);i++) { //Game-DB SRC Warning Fix 27
        string tempString = arImmune[i];
        for (int j=0; j<30 ; j++)        //ÃÖ´ë 30°³ ´Ü¾î±îÁö. (ÇϵåÄÚµù)
        {
            string tempString2 = arInputString[j];
            if (tempString2.compare(tempString)==0) {                //ÀÏÄ¡ÇÏ´ÂÁö È®ÀÎ.
                retValue = retValue + pow((float)2,(float)i);
            }
           
            if(tempString2.compare("") == 0)
                break;
        }
    }
    delete []arInputString;
    //cout << "Immune : " << immuneStr << " -> " << retValue << endl;

    return retValue;
}




int get_Item_LimitType_Value(string inputString)
{
    string arLimitType[] = {"LIMIT_NONE", "LEVEL", "STR", "DEX", "INT", "CON", "REAL_TIME", "REAL_TIME_FIRST_USE", "TIMER_BASED_ON_WEAR"};
   
    int retInt = -1;
    //cout << "LimitType : " << limitTypeStr << " -> ";
    for (unsigned int j=0;j<sizeof(arLimitType)/sizeof(arLimitType[0]);j++) { //Game-DB SRC Warning Fix 28
        string tempString = arLimitType[j];
        string tempInputString = trim(inputString);
        if    (tempInputString.compare(tempString)==0)
        {
            //cout << j << " ";
            retInt =  j;
            break;
        }
    }
    //cout << endl;

    return retInt;
}


int get_Item_ApplyType_Value(string inputString)
{
    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_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",
    };

    int retInt = -1;
    //cout << "ApplyType : " << applyTypeStr << " -> ";
    for (unsigned int j=0;j<sizeof(arApplyType)/sizeof(arApplyType[0]);j++) { //Game-DB SRC Warning Fix 29
        string tempString = arApplyType[j];
        string tempInputString = trim(inputString);
        if    (tempInputString.compare(tempString)==0)
        {
            //cout << j << " ";
            retInt =  j;
            break;
        }
    }
    //cout << endl;

    return retInt;

}


//¸ó½ºÅÍ ÇÁ·ÎÅäµµ Àд´Ù.


int get_Mob_Rank_Value(string inputString)
{
    string arRank[] = {"PAWN", "S_PAWN", "KNIGHT", "S_KNIGHT", "BOSS", "KING"};

    int retInt = -1;
    //cout << "Rank : " << rankStr << " -> ";
    for (unsigned int j=0;j<sizeof(arRank)/sizeof(arRank[0]);j++) { //Game-DB SRC Warning Fix 30
        string tempString = arRank[j];
        string tempInputString = trim(inputString);
        if    (tempInputString.compare(tempString)==0)
        {
            //cout << j << " ";
            retInt =  j;
            break;
        }
    }
    //cout << endl;

    return retInt;
}


int get_Mob_Type_Value(string inputString)
{
    string arType[] = { "MONSTER", "NPC", "STONE", "WARP", "DOOR", "BUILDING", "PC", "POLYMORPH_PC", "HORSE", "GOTO"};

    int retInt = -1;
    //cout << "Type : " << typeStr << " -> ";
    for (unsigned int j=0;j<sizeof(arType)/sizeof(arType[0]);j++) { //Game-DB SRC Warning Fix 31
        string tempString = arType[j];
        string tempInputString = trim(inputString);
        if    (tempInputString.compare(tempString)==0)
        {
            //cout << j << " ";
            retInt =  j;
            break;
        }
    }
    //cout << endl;

    return retInt;
}

int get_Mob_BattleType_Value(string inputString)
{
    string arBattleType[] = { "MELEE", "RANGE", "MAGIC", "SPECIAL", "POWER", "TANKER", "SUPER_POWER", "SUPER_TANKER"};

    int retInt = -1;
    //cout << "Battle Type : " << battleTypeStr << " -> ";
    for (unsigned int j=0;j<sizeof(arBattleType)/sizeof(arBattleType[0]);j++) { //Game-DB SRC Warning Fix 32
        string tempString = arBattleType[j];
        string tempInputString = trim(inputString);
        if    (tempInputString.compare(tempString)==0)
        {
            //cout << j << " ";
            retInt =  j;
            break;
        }
    }
    //cout << endl;

    return retInt;
}

int get_Mob_Size_Value(string inputString)
{
    string arSize[] = { "SAMLL", "MEDIUM", "BIG"};

    int retInt = 0;
    //cout << "Size : " << sizeStr << " -> ";
    for (unsigned int j=0;j<sizeof(arSize)/sizeof(arSize[0]);j++) { //Game-DB SRC Warning Fix 33
        string tempString = arSize[j];
        string tempInputString = trim(inputString);
        if    (tempInputString.compare(tempString)==0)
        {
            //cout << j << " ";
            retInt =  j + 1;
            break;
        }
    }
    //cout << endl;

    return retInt;
}

int get_Mob_AIFlag_Value(string inputString)
{
    string arAIFlag[] = {"AGGR","NOMOVE","COWARD","NOATTSHINSU","NOATTCHUNJO","NOATTJINNO","ATTMOB","BERSERK","STONESKIN","GODSPEED","DEATHBLOW","REVIVE"};


    int retValue = 0;
    string* arInputString = StringSplit(inputString, ",");                //ÇÁ·ÎÅä Á¤º¸ ³»¿ëÀ» ´Ü¾îº°·Î ÂÉ°µ ¹è¿.
    for(unsigned int i =0;i<sizeof(arAIFlag)/sizeof(arAIFlag[0]);i++) { //Game-DB SRC Warning Fix 34
        string tempString = arAIFlag[i];
        for (int j=0; j<30 ; j++)        //ÃÖ´ë 30°³ ´Ü¾î±îÁö. (ÇϵåÄÚµù)
        {
            string tempString2 = arInputString[j];
            if (tempString2.compare(tempString)==0) {                //ÀÏÄ¡ÇÏ´ÂÁö È®ÀÎ.
                retValue = retValue + pow((float)2,(float)i);
            }
           
            if(tempString2.compare("") == 0)
                break;
        }
    }
    delete []arInputString;
    //cout << "AIFlag : " << aiFlagStr << " -> " << retValue << endl;

    return retValue;
}
int get_Mob_RaceFlag_Value(string inputString)
{
    string arRaceFlag[] = {"ANIMAL","UNDEAD","DEVIL","HUMAN","ORC","MILGYO","INSECT","FIRE","ICE","DESERT","TREE",
        "ATT_ELEC","ATT_FIRE","ATT_ICE","ATT_WIND","ATT_EARTH","ATT_DARK"};

    int retValue = 0;
    string* arInputString = StringSplit(inputString, ",");                //ÇÁ·ÎÅä Á¤º¸ ³»¿ëÀ» ´Ü¾îº°·Î ÂÉ°µ ¹è¿.
    for(unsigned int i =0;i<sizeof(arRaceFlag)/sizeof(arRaceFlag[0]);i++) { //Game-DB SRC Warning Fix 35
        string tempString = arRaceFlag[i];
        for (int j=0; j<30 ; j++)        //ÃÖ´ë 30°³ ´Ü¾î±îÁö. (ÇϵåÄÚµù)
        {
            string tempString2 = arInputString[j];
            if (tempString2.compare(tempString)==0) {                //ÀÏÄ¡ÇÏ´ÂÁö È®ÀÎ.
                retValue = retValue + pow((float)2,(float)i);
            }
           
            if(tempString2.compare("") == 0)
                break;
        }
    }
    delete []arInputString;
    //cout << "Race Flag : " << raceFlagStr << " -> " << retValue << endl;

    return retValue;
}
int get_Mob_ImmuneFlag_Value(string inputString)
{
    string arImmuneFlag[] = {"STUN","SLOW","FALL","CURSE","POISON","TERROR", "REFLECT"};

    int retValue = 0;
    string* arInputString = StringSplit(inputString, ",");                //ÇÁ·ÎÅä Á¤º¸ ³»¿ëÀ» ´Ü¾îº°·Î ÂÉ°µ ¹è¿.
    for(unsigned int i =0;i<sizeof(arImmuneFlag)/sizeof(arImmuneFlag[0]);i++) { //Game-DB SRC Warning Fix 36
        string tempString = arImmuneFlag[i];
        for (int j=0; j<30 ; j++)        //ÃÖ´ë 30°³ ´Ü¾î±îÁö. (ÇϵåÄÚµù)
        {
            string tempString2 = arInputString[j];
            if (tempString2.compare(tempString)==0) {                //ÀÏÄ¡ÇÏ´ÂÁö È®ÀÎ.
                retValue = retValue + pow((float)2,(float)i);
            }
           
            if(tempString2.compare("") == 0)
                break;
        }
    }
    delete []arInputString;
    //cout << "Immune Flag : " << immuneFlagStr << " -> " << retValue << endl;


    return retValue;
}


#ifndef __DUMP_PROTO__

//¸÷ Å×À̺íÀ» ¼ÂÆÃÇØÁØ´Ù.
bool Set_Proto_Mob_Table(TMobTable *mobTable, cCsvTable &csvTable,std::map<int,const char*> &nameMap)
{
    int col = 0;
    str_to_number(mobTable->dwVnum, csvTable.AsStringByIndex(col++));
    strlcpy(mobTable->szName, csvTable.AsStringByIndex(col++), sizeof(mobTable->szName));

    //3. Áö¿ªº° À̸§ ³Ö¾îÁÖ±â.
    map<int,const char*>::iterator it;
    it = nameMap.find(mobTable->dwVnum);
    if (it != nameMap.end()) {
        const char * localeName = it->second;
        strlcpy(mobTable->szLocaleName, localeName, sizeof (mobTable->szLocaleName));
    } else {
        strlcpy(mobTable->szLocaleName, mobTable->szName, sizeof (mobTable->szLocaleName));
    }

    //RANK
    int rankValue = get_Mob_Rank_Value(csvTable.AsStringByIndex(col++));
    mobTable->bRank = rankValue;
    //TYPE
    int typeValue = get_Mob_Type_Value(csvTable.AsStringByIndex(col++));
    mobTable->bType = typeValue;
    //BATTLE_TYPE
    int battleTypeValue = get_Mob_BattleType_Value(csvTable.AsStringByIndex(col++));
    mobTable->bBattleType = battleTypeValue;

    str_to_number(mobTable->bLevel, csvTable.AsStringByIndex(col++));
    //SIZE
    int sizeValue = get_Mob_Size_Value(csvTable.AsStringByIndex(col++));
    mobTable->bSize = sizeValue;
    //AI_FLAG
    int aiFlagValue = get_Mob_AIFlag_Value(csvTable.AsStringByIndex(col++));
    mobTable->dwAIFlag = aiFlagValue;
    //mount_capacity;
    col++;
    //RACE_FLAG
    int raceFlagValue = get_Mob_RaceFlag_Value(csvTable.AsStringByIndex(col++));
    mobTable->dwRaceFlag = raceFlagValue;
    //IMMUNE_FLAG
    int immuneFlagValue = get_Mob_ImmuneFlag_Value(csvTable.AsStringByIndex(col++));
    mobTable->dwImmuneFlag = immuneFlagValue;

    str_to_number(mobTable->bEmpire, csvTable.AsStringByIndex(col++));  //col = 11

    strlcpy(mobTable->szFolder, csvTable.AsStringByIndex(col++), sizeof(mobTable->szFolder));

    str_to_number(mobTable->bOnClickType, csvTable.AsStringByIndex(col++));   

    str_to_number(mobTable->bStr, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->bDex, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->bCon, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->bInt, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->dwDamageRange[0], csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->dwDamageRange[1], csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->dwMaxHP, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->bRegenCycle, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->bRegenPercent,    csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->dwGoldMin, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->dwGoldMax, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->dwExp,    csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->wDef, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->sAttackSpeed, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->sMovingSpeed, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->bAggresiveHPPct, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->wAggressiveSight, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->wAttackRange, csvTable.AsStringByIndex(col++));

    str_to_number(mobTable->dwDropItemVnum, csvTable.AsStringByIndex(col++));    //32
    str_to_number(mobTable->dwResurrectionVnum, csvTable.AsStringByIndex(col++));
    for (int i = 0; i < MOB_ENCHANTS_MAX_NUM; ++i)
        str_to_number(mobTable->cEnchants[i], csvTable.AsStringByIndex(col++));

    for (int i = 0; i < MOB_RESISTS_MAX_NUM; ++i)
        str_to_number(mobTable->cResists[i], csvTable.AsStringByIndex(col++));

    str_to_number(mobTable->fDamMultiply, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->dwSummonVnum, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->dwDrainSP, csvTable.AsStringByIndex(col++));

    //Mob_Color
    ++col;

    str_to_number(mobTable->dwPolymorphItemVnum, csvTable.AsStringByIndex(col++));

    str_to_number(mobTable->Skills[0].bLevel, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->Skills[0].dwVnum, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->Skills[1].bLevel, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->Skills[1].dwVnum, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->Skills[2].bLevel, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->Skills[2].dwVnum, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->Skills[3].bLevel, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->Skills[3].dwVnum, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->Skills[4].bLevel, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->Skills[4].dwVnum, csvTable.AsStringByIndex(col++));

    str_to_number(mobTable->bBerserkPoint, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->bStoneSkinPoint, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->bGodSpeedPoint, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->bDeathBlowPoint, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->bRevivePoint, csvTable.AsStringByIndex(col++));

    sys_log(0, "MOB #%-5d %-24s level: %-3u rank: %u empire: %d", mobTable->dwVnum, mobTable->szLocaleName, mobTable->bLevel, mobTable->bRank, mobTable->bEmpire);

    return true;
}

bool Set_Proto_Item_Table(TItemTable *itemTable, cCsvTable &csvTable,std::map<int,const char*> &nameMap)
{
    int col = 0;

    int dataArray[33];
    for (unsigned int i=0; i<sizeof(dataArray)/sizeof(dataArray[0]);i++) { //Game-DB SRC Warning Fix 37
        int validCheck = 0;
        if (i==2) {
            dataArray[i] = get_Item_Type_Value(csvTable.AsStringByIndex(col));
            validCheck = dataArray[i];
        } else if (i==3) {
            dataArray[i] = get_Item_SubType_Value(dataArray[i-1], csvTable.AsStringByIndex(col));
            validCheck = dataArray[i];
        } else if (i==5) {
            dataArray[i] = get_Item_AntiFlag_Value(csvTable.AsStringByIndex(col));
            validCheck = dataArray[i];
        } else if (i==6) {
            dataArray[i] = get_Item_Flag_Value(csvTable.AsStringByIndex(col));
            validCheck = dataArray[i];
        } else if (i==7) {
            dataArray[i] = get_Item_WearFlag_Value(csvTable.AsStringByIndex(col));
            validCheck = dataArray[i];
        } else if (i==8) {
            dataArray[i] = get_Item_Immune_Value(csvTable.AsStringByIndex(col));
            validCheck = dataArray[i];
        } else if (i==14) {
            dataArray[i] = get_Item_LimitType_Value(csvTable.AsStringByIndex(col));
            validCheck = dataArray[i];
        } else if (i==16) {
            dataArray[i] = get_Item_LimitType_Value(csvTable.AsStringByIndex(col));
            validCheck = dataArray[i];
        } else if (i==18) {
            dataArray[i] = get_Item_ApplyType_Value(csvTable.AsStringByIndex(col));
            validCheck = dataArray[i];
        } else if (i==20) {
            dataArray[i] = get_Item_ApplyType_Value(csvTable.AsStringByIndex(col));
            validCheck = dataArray[i];
        } else if (i==22) {
            dataArray[i] = get_Item_ApplyType_Value(csvTable.AsStringByIndex(col));
            validCheck = dataArray[i];
        } else {
            str_to_number(dataArray[i], csvTable.AsStringByIndex(col));
        }

        if (validCheck == -1)
        {
            std::ostringstream dataStream;

            for (unsigned int j = 0; j < i; ++j) //Game-DB SRC Warning Fix 38
                dataStream << dataArray[j] << ",";

            //fprintf(stderr, "ItemProto Reading Failed : Invalid value.\n");
            sys_err("ItemProto Reading Failed : Invalid value. (index: %d, col: %d, value: %s)", i, col, csvTable.AsStringByIndex(col));
            sys_err("\t%d ~ %d Values: %s", 0, i, dataStream.str().c_str());

            exit(0);
        }
       
        col = col + 1;
    }

    // vnum ¹× vnum range Àбâ.
    {
        std::string s(csvTable.AsStringByIndex(0));
        unsigned int pos = s.find("~"); //Game-DB SRC Warning Fix 39
        // vnum Çʵ忡 '~'°¡ ¾ø´Ù¸é Æнº
        if (std::string::npos == pos)
        {
            itemTable->dwVnum = dataArray[0];
            itemTable->dwVnumRange = 0;
        }
        else
        {
            std::string s_start_vnum (s.substr(0, pos));
            std::string s_end_vnum (s.substr(pos +1 ));

            int start_vnum = atoi(s_start_vnum.c_str());
            int end_vnum = atoi(s_end_vnum.c_str());
            if (0 == start_vnum || (0 != end_vnum && end_vnum < start_vnum))
            {
                sys_err ("INVALID VNUM %s", s.c_str());
                return false;
            }
            itemTable->dwVnum = start_vnum;
            itemTable->dwVnumRange = end_vnum - start_vnum;
        }
    }

    strlcpy(itemTable->szName, csvTable.AsStringByIndex(1), sizeof(itemTable->szName));
    //Áö¿ªº° À̸§ ³Ö¾îÁÖ±â.
    map<int,const char*>::iterator it;
    it = nameMap.find(itemTable->dwVnum);
    if (it != nameMap.end()) {
        const char * localeName = it->second;
        strlcpy(itemTable->szLocaleName, localeName, sizeof (itemTable->szLocaleName));
    } else {
        strlcpy(itemTable->szLocaleName, itemTable->szName, sizeof (itemTable->szLocaleName));
    }
    itemTable->bType = dataArray[2];
    itemTable->bSubType = dataArray[3];
    itemTable->bSize = dataArray[4];
    itemTable->dwAntiFlags = dataArray[5];
    itemTable->dwFlags = dataArray[6];
    itemTable->dwWearFlags = dataArray[7];
    itemTable->dwImmuneFlag = dataArray[8];
    itemTable->dwGold = dataArray[9];
    itemTable->dwShopBuyPrice = dataArray[10];
    itemTable->dwRefinedVnum = dataArray[11];
    itemTable->wRefineSet = dataArray[12];
    itemTable->bAlterToMagicItemPct = dataArray[13];
    itemTable->cLimitRealTimeFirstUseIndex = -1;
    itemTable->cLimitTimerBasedOnWearIndex = -1;

    int i;

    for (i = 0; i < ITEM_LIMIT_MAX_NUM; ++i)
    {
        itemTable->aLimits[i].bType = dataArray[14+i*2];
        itemTable->aLimits[i].lValue = dataArray[15+i*2];

        if (LIMIT_REAL_TIME_START_FIRST_USE == itemTable->aLimits[i].bType)
            itemTable->cLimitRealTimeFirstUseIndex = (char)i;

        if (LIMIT_TIMER_BASED_ON_WEAR == itemTable->aLimits[i].bType)
            itemTable->cLimitTimerBasedOnWearIndex = (char)i;

    }

    for (i = 0; i < ITEM_APPLY_MAX_NUM; ++i)
    {
        itemTable->aApplies[i].bType = dataArray[18+i*2];
        itemTable->aApplies[i].lValue = dataArray[19+i*2];
    }

    for (i = 0; i < ITEM_VALUES_MAX_NUM; ++i)
        itemTable->alValues[i] = dataArray[24+i];

    //column for 'Specular'
    itemTable->bGainSocketPct = dataArray[31];
    itemTable->sAddonType = dataArray[32];

    //test
    str_to_number(itemTable->bWeight, "0");
           
    return true;
}

#endif

DB item_proto dosyamın formatını incelemek isterseniz ;

Kod:
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for item_proto
-- ----------------------------
DROP TABLE IF EXISTS `item_proto`;
CREATE TABLE `item_proto`  (
  `vnum` int(11) UNSIGNED NOT NULL DEFAULT 0,
  `vnum_range` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'No TXT DB',
  `name` varbinary(38) NOT NULL DEFAULT 'Noname                  ',
  `locale_name` varbinary(38) NOT NULL DEFAULT 'Noname                  ',
  `type` tinyint(2) NOT NULL DEFAULT 0,
  `subtype` tinyint(2) NOT NULL DEFAULT 0,
  `weight` tinyint(3) NULL DEFAULT 0,
  `size` tinyint(3) NULL DEFAULT 0,
  `antiflag` int(11) NULL DEFAULT 0,
  `flag` int(11) NULL DEFAULT 0,
  `wearflag` int(11) NULL DEFAULT 0,
  `immuneflag` set('PARA','CURSE','STUN','SLEEP','SLOW','POISON','TERROR') CHARACTER SET big5 COLLATE big5_chinese_ci NOT NULL DEFAULT '',
  `gold` int(11) NULL DEFAULT 0,
  `shop_buy_price` int(10) UNSIGNED NOT NULL DEFAULT 0,
  `refined_vnum` int(10) UNSIGNED NOT NULL DEFAULT 0,
  `refine_set` smallint(11) UNSIGNED NOT NULL DEFAULT 0,
  `refine_set2` smallint(5) UNSIGNED NOT NULL DEFAULT 0,
  `magic_pct` tinyint(4) NOT NULL DEFAULT 0,
  `limittype0` tinyint(4) NULL DEFAULT 0,
  `limitvalue0` int(11) NULL DEFAULT 0,
  `limittype1` tinyint(4) NULL DEFAULT 0,
  `limitvalue1` int(11) NULL DEFAULT 0,
  `applytype0` tinyint(4) NULL DEFAULT 0,
  `applyvalue0` int(11) NULL DEFAULT 0,
  `applytype1` tinyint(4) NULL DEFAULT 0,
  `applyvalue1` int(11) NULL DEFAULT 0,
  `applytype2` tinyint(4) NULL DEFAULT 0,
  `applyvalue2` int(11) NULL DEFAULT 0,
  `value0` int(11) NULL DEFAULT 0,
  `value1` int(11) NULL DEFAULT 0,
  `value2` int(11) NULL DEFAULT 0,
  `value3` int(11) NULL DEFAULT 0,
  `value4` int(11) NULL DEFAULT 0,
  `value5` int(11) NULL DEFAULT 0,
  `socket0` int(10) NULL DEFAULT -1,
  `socket1` int(10) NULL DEFAULT -1,
  `socket2` int(10) NULL DEFAULT -1,
  `socket3` int(10) NULL DEFAULT -1,
  `socket4` int(10) NULL DEFAULT -1,
  `socket5` int(10) NULL DEFAULT -1,
  `specular` tinyint(4) NOT NULL DEFAULT 0,
  `socket_pct` tinyint(4) NOT NULL DEFAULT 0,
  `addon_type` smallint(6) NOT NULL DEFAULT 0,
  PRIMARY KEY (`vnum`) USING BTREE
) ENGINE = MyISAM CHARACTER SET = big5 COLLATE = big5_chinese_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of item_proto
-- ----------------------------
INSERT INTO `item_proto` VALUES (1, 0, 0xB5B7B2D9B7AFB9CC, 0x59616E67, 9, 0, 0, 1, 0, 0, 0, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0);
INSERT INTO `item_proto` VALUES (2, 0, 0xC7D1B1B9B9ABBDD6B9F6C1AF, 0x54FC726BE7652053FC72FC6D, 0, 0, 0, 1, 0, 0, 0, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0);
INSERT INTO `item_proto` VALUES (10, 0, 0xB5B52B30, 0x4BFD6CFDE72B30, 1, 0, 0, 2, 32, 1, 16, '', 0, 0, 11, 1, 0, 15, 1, 0, 0, 0, 7, 22, 0, 0, 0, 0, 0, 15, 19, 13, 15, 0, -1, -1, -1, -1, -1, -1, 0, 1, 0);
INSERT INTO `item_proto` VALUES (11, 0, 0xB5B52B31, 0x4BFD6CFDE72B31, 1, 0, 0, 2, 32, 1, 16, '', 100, 100, 12, 2, 0, 15, 1, 0, 0, 0, 7, 22, 0, 0, 0, 0, 0, 15, 19, 13, 15, 7, -1, -1, -1, -1, -1, -1, 0, 1, 0);
INSERT INTO `item_proto` VALUES (12, 0, 0xB5B52B32, 0x4BFD6CFDE72B32, 1, 0, 0, 2, 32, 1, 16, '', 100, 100, 13, 3, 0, 15, 1, 0, 0, 0, 7, 22, 0, 0, 0, 0, 0, 15, 19, 13, 15, 14, -1, -1, -1, -1, -1, -1, 0, 1, 0);
INSERT INTO `item_proto` VALUES (13, 0, 0xB5B52B33, 0x4BFD6CFDE72B33, 1, 0, 0, 2, 32, 1, 16, '', 100, 150, 14, 4, 0, 15, 1, 0, 0, 0, 7, 22, 0, 0, 0, 0, 0, 15, 19, 13, 15, 21, -1, -1, -1, -1, -1, -1, 0, 1, 0);
INSERT INTO `item_proto` VALUES (14, 0, 0xB5B52B34, 0x4BFD6CFDE72B34, 1, 0, 0, 2, 32, 1, 16, '', 100, 150, 15, 5, 0, 15, 1, 0, 0, 0, 7, 22, 0, 0, 0, 0, 0, 15, 19, 13, 15, 28, -1, -1, -1, -1, -1, -1, 0, 1, 0);
INSERT INTO `item_proto` VALUES (15, 0, 0xB5B52B35, 0x4BFD6CFDE72B35, 1, 0, 0, 2, 32, 1, 16, '', 100, 200, 16, 6, 0, 15, 1, 0, 0, 0, 7, 22, 0, 0, 0, 0, 0, 15, 19, 13, 15, 35, -1, -1, -1, -1, -1, -1, 0, 1, 0);
INSERT INTO `item_proto` VALUES (16, 0, 0xB5B52B36, 0x4BFD6CFDE72B36, 1, 0, 0, 2, 32, 1, 16, '', 100, 250, 17, 7, 0, 15, 1, 0, 0, 0, 7, 22, 0, 0, 0, 0, 0, 15, 19, 13, 15, 42, -1, -1, -1, -1, -1, -1, 0, 1, 0);
INSERT INTO `item_proto` VALUES (17, 0, 0xB5B52B37, 0x4BFD6CFDE72B37, 1, 0, 0, 2, 32, 1, 16, '', 100, 350, 18, 8, 0, 15, 1, 0, 0, 0, 7, 22, 0, 0, 0, 0, 0, 15, 19, 13, 15, 49, -1, -1, -1, -1, -1, -1, 0, 1, 0);
INSERT INTO `item_proto` VALUES (18, 0, 0xB5B52B38, 0x4BFD6CFDE72B38, 1, 0, 0, 2, 32, 1, 16, '', 100, 500, 19, 9, 0, 15, 1, 0, 0, 0, 7, 22, 0, 0, 0, 0, 0, 15, 19, 13, 15, 56, -1, -1, -1, -1, -1, -1, 0, 1, 0);
INSERT INTO `item_proto` VALUES (19, 0, 0xB5B52B39, 0x4BFD6CFDE72B39, 1, 0, 0, 2, 32, 1, 16, '', 100, 750, 0, 0, 0, 15, 1, 0, 0, 0, 7, 22, 0, 0, 0, 0, 0, 15, 19, 13, 15, 63, -1, -1, -1, -1, -1, -1, 0, 1, 0);
INSERT INTO `item_proto` VALUES (20, 0, 0xC0E5B0CB2B30, 0x557A756E204BFD6CFDE72B30, 1, 0, 0, 2, 32, 1, 16, '', 400, 400, 21, 1, 0, 15, 1, 5, 0, 0, 7, 27, 0, 0, 0, 0, 0, 13, 15, 15, 19, 0, -1, -1, -1, -1, -1, -1, 0, 1, 0);
INSERT INTO `item_proto` VALUES (21, 0, 0xC0E5B0CB2B31, 0x557A756E204BFD6CFDE72B31, 1, 0, 0, 2, 32, 1, 16, '', 400, 500, 22, 2, 0, 15, 1, 5, 0, 0, 7, 27, 0, 0, 0, 0, 0, 13, 15, 15, 19, 7, -1, -1, -1, -1, -1, -1, 0, 1, 0);
INSERT INTO `item_proto` VALUES (22, 0, 0xC0E5B0CB2B32, 0x557A756E204BFD6CFDE72B32, 1, 0, 0, 2, 32, 1, 16, '', 400, 500, 23, 3, 0, 15, 1, 5, 0, 0, 7, 27, 0, 0, 0, 0, 0, 13, 15, 15, 19, 14, -1, -1, -1, -1, -1, -1, 0, 1, 0);
INSERT INTO `item_proto` VALUES (23, 0, 0xC0E5B0CB2B33, 0x557A756E204BFD6CFDE72B33, 1, 0, 0, 2, 32, 1, 16, '', 400, 500, 24, 4, 0, 15, 1, 5, 0, 0, 7, 27, 0, 0, 0, 0, 0, 13, 15, 15, 19, 21, -1, -1, -1, -1, -1, -1, 0, 1, 0);
INSERT INTO `item_proto` VALUES (24, 0, 0xC0E5B0CB2B34, 0x557A756E204BFD6CFDE72B34, 1, 0, 0, 2, 32, 1, 16, '', 400, 500, 25, 5, 0, 15, 1, 5, 0, 0, 7, 27, 0, 0, 0, 0, 0, 13, 15, 15, 19, 28, -1, -1, -1, -1, -1, -1, 0, 1, 0);
INSERT INTO `item_proto` VALUES (25, 0, 0xC0E5B0CB2B35, 0x557A756E204BFD6CFDE72B35, 1, 0, 0, 2, 32, 1, 16, '', 400, 1000, 26, 6, 0, 15, 1, 5, 0, 0, 7, 27, 0, 0, 0, 0, 0, 13, 15, 15, 19, 35, -1, -1, -1, -1, -1, -1, 0, 1, 0);
INSERT INTO `item_proto` VALUES (26, 0, 0xC0E5B0CB2B36, 0x557A756E204BFD6CFDE72B36, 1, 0, 0, 2, 32, 1, 16, '', 400, 1000, 27, 7, 0, 15, 1, 5, 0, 0, 7, 27, 0, 0, 0, 0, 0, 13, 15, 15, 19, 42, -1, -1, -1, -1, -1, -1, 0, 1, 0);
INSERT INTO `item_proto` VALUES (27, 0, 0xC0E5B0CB2B37, 0x557A756E204BFD6CFDE72B37, 1, 0, 0, 2, 32, 1, 16, '', 400, 1500, 28, 8, 0, 15, 1, 5, 0, 0, 7, 27, 0, 0, 0, 0, 0, 13, 15, 15, 19, 49, -1, -1, -1, -1, -1, -1, 0, 1, 0);
INSERT INTO `item_proto` VALUES (28, 0, 0xC0E5B0CB2B38, 0x557A756E204BFD6CFDE72B38, 1, 0, 0, 2, 32, 1, 16, '', 400, 2000, 29, 9, 0, 15, 1, 5, 0, 0, 7, 27, 0, 0, 0, 0, 0, 13, 15, 15, 19, 56, -1, -1, -1, -1, -1, -1, 0, 1, 0);
INSERT INTO `item_proto` VALUES (29, 0, 0xC0E5B0CB2B39, 0x557A756E204BFD6CFDE72B39, 1, 0, 0, 2, 32, 1, 16, '', 400, 3000, 0, 0, 0, 15, 1, 5, 0, 0, 7, 27, 0, 0, 0, 0, 0, 13, 15, 15, 19, 63, -1, -1, -1, -1, -1, -1, 0, 1, 0);

 
Çözüm
Tamamdır. Çalıştırabildim. Birkaç yere daha str ekleyince düzeldi. O kısımları şu şekilde düzenleyiniz;
Python:
    for row in rows:
        item_proto_line = "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s" % (str(row[0]), "\"" + str(row[1]) + "\"", "\""  + get_item_type(row[3], row[0]) + "\"" , "\""  + get_item_subtype(row[3], row[4], row[0]) + "\"", str(row[6]) , get_antiflag(row[7], row[0]), get_flag(row[8], row[0]), get_wearflag(row[9], row[0]), get_immuneflag(row[10]), str(row[11]), str(row[12]), str(row[13]), str(row[14]), str(row[16]), get_limittype(row[17]), str(row[18]), get_limittype(row[19]), str(row[20]), get_apply(row[21]), str(row[22])...
TypeError: cannot concatenate 'str' and 'long' objects
Bu hatayı hangi satırda veriyor. Bu hatayı verdiği satırlarda sayısal değeri yazı olarak yazılmaya çalıştığı için veriyor. str() fonksiyonu içine alırsanız düzelir.
 
Bu hatayı hangi satırda veriyor. Bu hatayı verdiği satırlarda sayısal değeri yazı olarak yazılmaya çalıştığı için veriyor. str() fonksiyonu içine alırsanız düzelir.

Python:
item_proto_line = "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s" % (row[0], "\"" + row[1] + "\"", "\""  + get_item_type(row[3], row[0]) + "\"" , "\""  + get_item_subtype(row[3], row[4], row[0]) + "\"", row[6] , get_antiflag(row[7], row[0]), get_flag(row[8], row[0]), get_wearflag(row[9], row[0]), get_immuneflag(row[10]), row[11], row[12], row[13], row[14], row[16], get_limittype(row[17]), row[18], get_limittype(row[19]), row[20], get_apply(row[21]), row[22], get_apply(row[23]), row[24], get_apply(row[25]), row[26], row[27], row[28], row[29], row[30], row[31], row[32], row[39], row[40], row[41])

Hatayı bu satırda veriyor tam olarak nasıl düzenlemem gerekir ?
 
row[28] filan yazıyor. Burada integer değer yazdırmaya çalışanları şu şekilde değiştirebilirisiniz.
str(row[28])
 
row[28] filan yazıyor. Burada integer değer yazdırmaya çalışanları şu şekilde değiştirebilirisiniz.
str(row[28])
Yanıt için teşekkürler fakat hangilerini integer olarak yazdırmaya çalıştığını tespit edemiyorum, test etmem için bir öneriniz var mı ? Error verirken sadece item_proto line gösteriyor herhangi bir bölümü göstermiyor.
 
Tek tek gelen değerleri kontrol etmelisiniz yada %s olan yerleri %d olarak değiştirebilirsiniz.
 
Bence tüm değişkenleri str() 'den geçirin. Büyük ihtimal olacaktır. :)

İstediğiniz kadar soru sorabilirsiniz. Hepimiz öğrenme sürecinden geçtik ve sorunlar yaşadık.

Metin2 PvP Soru-Cevap & Destek & Yardım Bölüm Kuralları madde 2/4 bu sebeple eklemiştik.

Dediğinizi denedim maalesef aynı :/

Adsız.png


Buda satır ;

Python:
        item_proto_line = "%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d" % (row[0], "\"" + row[1] + "\"", "\""  + get_item_type(row[3], row[0]) + "\"" , "\""  + get_item_subtype(row[3], row[4], row[0]) + "\"", row[6] , get_antiflag(row[7], row[0]), get_flag(row[8], row[0]), get_wearflag(row[9], row[0]), get_immuneflag(row[10]), str(row[11]), str(row[12]), str(row[13]), str(row[14]), str(row[16]), get_limittype(row[17]), str(row[18]), get_limittype(row[19]), str(row[20]), get_apply(row[21]), str(row[22]), get_apply(row[23]), str(row[24]), get_apply(row[25]), str(row[26]), str(row[27]), str(row[28]), str(row[29]), str(row[30]), str(row[31]), str(row[32]), str(row[39]), str(row[40]), str(row[41]))
        item_names_line = "%d\t%d" % (row[0], row[2])
 
Hayır öyle değil. Hepsi yine %s kalsın. Değişkenleri str() içine ekleyin.

%d => integer değeri yazdırmak için kullanılıyor.
%s => yazı değeri yazdırmak için kullanılıyor.
 
Hayır öyle değil. Hepsi yine %s kalsın. Değişkenleri str() içine ekleyin.

%d => integer değeri yazdırmak için kullanılıyor.
%s => yazı değeri yazdırmak için kullanılıyor.

Cevap ve bilgi için teşekkürler fakat maalesef tekrar aynı hata, kod bloğunu bir de siz inceler misiniz acaba ben mi hata yapıyorum.

Python:
        item_proto_line = "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s" % (row[0], "\"" + row[1] + "\"", "\""  + get_item_type(row[3], row[0]) + "\"" , "\""  + get_item_subtype(row[3], row[4], row[0]) + "\"", row[6] , get_antiflag(row[7], row[0]), get_flag(row[8], row[0]), get_wearflag(row[9], row[0]), get_immuneflag(row[10]), str(row[11]), str(row[12]), str(row[13]), str(row[14]), str(row[16]), get_limittype(row[17]), str(row[18]), get_limittype(row[19]), str(row[20]), get_apply(row[21]), str(row[22]), get_apply(row[23]), str(row[24]), get_apply(row[25]), str(row[26]), str(row[27]), str(row[28]), str(row[29]), str(row[30]), str(row[31]), str(row[32]), str(row[39]), str(row[40]), str(row[41]))
        item_names_line = "%s\t%s" % (row[0], row[2])
 
Bana dosyaları gönderebilir misiniz? Birde kendim deniyim
 
Tamamdır. Çalıştırabildim. Birkaç yere daha str ekleyince düzeldi. O kısımları şu şekilde düzenleyiniz;
Python:
    for row in rows:
        item_proto_line = "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s" % (str(row[0]), "\"" + str(row[1]) + "\"", "\""  + get_item_type(row[3], row[0]) + "\"" , "\""  + get_item_subtype(row[3], row[4], row[0]) + "\"", str(row[6]) , get_antiflag(row[7], row[0]), get_flag(row[8], row[0]), get_wearflag(row[9], row[0]), get_immuneflag(row[10]), str(row[11]), str(row[12]), str(row[13]), str(row[14]), str(row[16]), get_limittype(row[17]), str(row[18]), get_limittype(row[19]), str(row[20]), get_apply(row[21]), str(row[22]), get_apply(row[23]), str(row[24]), get_apply(row[25]), str(row[26]), str(row[27]), str(row[28]), str(row[29]), str(row[30]), str(row[31]), str(row[32]), str(row[39]), str(row[40]), str(row[41]))
        item_names_line = "%s\t%s" % (str(row[0]), str(row[2]))
 
Çözüm
Allah razı olsun, kaç gündür cebelleşiyorum Python öğrenmenin zamanı gelmiş C++'da bir yere kadar.Çok teşekkürler konu çözüldü.
 
Bence bu kadar uğraşa gerek yok. :) Dump_proto'yu düzenleyerek aynı işlevi yaptırabilirsiniz. C++ öğrenmesi daha zor bi dil. C++ bilen pythonu çok rahat öğrenir. İyi çalışmalar dilerim.
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst