Jump to content

Defacer35

Inactive Member
  • Posts

    126
  • Joined

  • Last visited

  • Feedback

    0%

Everything posted by Defacer35

  1. SQL TO TXT PROBLEM Hello everyone, i have some trouble witch proto sql to txt converter.Mob_proto convert succesfuly and has no problem but item_proto one not working i'm look almost all topics in all forums and try too much things but after 4 days i give up.Pls give me some help. PROBLEM ; TypeError: cannot concatenate 'str' and 'long' objects Convert script ; 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() My ProtoReader.cpp #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 If you want to look this is my item_proto dump sql format from Navicat 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);
  2. Thanks for the share, after five long years i think this is still good way.
  3. Awesome fix ! Thanks a lot.
  4. Hello, i have kind a old files and i have all attr bonuses in my source & db but the problem is resist_elec not effective for Heaven's Lair mobs. How do i activated for this resist bonus on this spesific mobs ? Thanks for the help.
  5. Its happen recently after i update gcc10 and mariadb10.3 this problem showed up.
  6. I did to much thing in this source so i cant do this, i not have any error or warnings in compiling, everything clean, im not added any system or fixes.I use gcc10-devel for compiling and MariaDB 10.3 for db.Just 1 thing piss me off and this is the item disappearing thing.This only syserr i got now ; SYSERR: Apr 29 21:29:42.794272 :: CreateItem: ITEM_ID_DUP: 50000003 Tahta Küpe+0 owner 0x4e5e8000 SYSERR: Apr 29 21:29:42.794313 :: ItemLoad: cannot create item by vnum 17000 (name Dev id 50000003) SYSERR: Apr 29 21:29:42.794334 :: CreateItem: ITEM_ID_DUP: 50000002 Kırmızı İksir(K) owner 0x4e5e8000 SYSERR: Apr 29 21:29:42.794353 :: ItemLoad: cannot create item by vnum 27001 (name Dev id 50000002) SYSERR: Apr 29 21:29:42.794373 :: CreateItem: ITEM_ID_DUP: 50000001 Paket owner 0x4e5e8000 SYSERR: Apr 29 21:29:42.794401 :: ItemLoad: cannot create item by vnum 50200 (name Dev id 50000001) SYSERR: Apr 29 21:29:42.794420 :: CreateItem: ITEM_ID_DUP: 10000002 Kaplan Plaka Zırh+0 owner 0x4e5e8000 SYSERR: Apr 29 21:29:42.794450 :: ItemLoad: cannot create item by vnum 11220 (name Dev id 10000002) SYSERR: Apr 29 21:29:42.794469 :: CreateItem: ITEM_ID_DUP: 10000001 Sahte Kılıç+0 owner 0x4e5e8000 SYSERR: Apr 29 21:29:42.794493 :: ItemLoad: cannot create item by vnum 80 (name Dev id 10000001)
  7. This mainline_released, what do i do now or what should i do ?
  8. Mainline_Released - Clean Files - MariaDB 10.3.22 - Not have any system When i teleport in game all items i have is gone but if i exit and enter again items comeback i have not any system or something like this. SYSERR ; AUTH ; SYSERR: Apr 29 13:04:40.823474 :: ChildLoop: AsyncSQL::ChildLoop : mysql_query error: Incorrect integer value: 'auth' for column `log`.`bootlog`.`hostname` at row 1: query: INSERT INTO bootlog (time, hostname, channel) VALUES(NOW(), 'auth', 1) CHANNEL1 ; SYSERR: Apr 29 13:07:01.642349 :: ChildLoop: AsyncSQL: query failed: Incorrect integer value: 'Y' for column `log`.`loginlog2`.`is_gm` at row 1 (query: INSERT INTO loginlog2(type, is_gm, login_time, channel, account_id, pid, ip, client_version) VALUES('INVALID', 'Y', NOW(), 1, 1, 57706, inet_aton('24.13xx.xxx.x.x'), '') errno: 1366) SYSERR: Apr 29 13:07:39.196983 :: DestroyCharacter: [CHARACTER_MANAGER::DestroyCharacter] <Factor> 14008 not found SYSERR: Apr 29 13:08:47.434955 :: ChildLoop: AsyncSQL: query failed: Data too long for column 'command' at row 1 (query: INSERT DELAYED INTO command_log (userid, server, ip, port, username, command, date ) VALUES(57706, 999, '24.1xx.xxx.xx', 1, 'Dev', 'set Dev align 200000', NOW()) errno: 1406) SYSERR: Apr 29 13:09:01.35043 :: ChildLoop: AsyncSQL: query failed: Data too long for column 'command' at row 1 (query: INSERT DELAYED INTO command_log (userid, server, ip, port, username, command, date ) VALUES(57706, 999, '24.1xx.xxx.xx', 1, 'Dev', 'set Dev gold 1500000', NOW()) errno: 1406) SYSERR: Apr 29 13:09:51.439459 :: CreateItem: ITEM_ID_DUP: 10000002 Kaplan Plaka Zırh+0 owner 0x4e5af000 SYSERR: Apr 29 13:09:51.439490 :: ItemLoad: cannot create item by vnum 11220 (name Dev id 10000002) SYSERR: Apr 29 13:09:51.439510 :: CreateItem: ITEM_ID_DUP: 10000001 Sahte Kılıç+0 owner 0x4e5af000 SYSERR: Apr 29 13:09:51.439546 :: ItemLoad: cannot create item by vnum 80 (name Dev id 10000001) SYSERR: Apr 29 13:10:23.759194 :: Click: CQuestManager::Click(pid=57706, target_npc_name=Hong-Hae) - NOT EXIST NPC RACE VNUM[20094] Thanks for the help.
  9. I'm done with one but item lost thing still happens, when i teleported every item i got lost after reboot all items come back.
  10. I work on mainline_released with gcc10 feature, not have any system or any fix neither.
  11. Hello i have a trouble with some strange syserr ; When i teleport in game my items gone every time. SYSERR: Apr 27 17:05:40.227260 :: CreateItem: ITEM_ID_DUP: 10000002 At Resmi owner 0x4e5a0000 SYSERR: Apr 27 17:05:40.227289 :: ItemLoad: cannot create item by vnum 50051 (name Defacer id 10000002) SYSERR: Apr 27 17:05:40.227313 :: CreateItem: ITEM_ID_DUP: 10000004 Cesaret Pelerini owner 0x4e5a0000 SYSERR: Apr 27 17:05:40.227331 :: ItemLoad: cannot create item by vnum 70038 (name Defacer id 10000004)
  12. After i do this, every time my char is teleport all my items gone here is the syslog and syserr ; SYSERR ; SYSERR: Apr 25 11:38:38.888578 :: ChildLoop: AsyncSQL: query failed: Incorrect string value: '\xA1' for column `player`.`mob_proto`.`name` at row 1 (query: replace into mob_proto (vnum, name, locale_name, type, rank, battle_type, level, size, ai_flag, setRaceFlag, setImmuneFlag, on_click, empire, drop_item, resurrection_vnum, folder, st, dx, ht, iq, damage_min, damage_max, max_hp, regen_cycle, regen_percent, exp, gold_min, gold_max, def, attack_speed, move_speed, aggressive_hp_pct, aggressive_sight, attack_range, polymorph_item, enchant_curse, enchant_slow, enchant_poison, enchant_stun, enchant_critical, enchant_penetrate, resist_sword, resist_twohand, resist_dagger, resist_bell, resist_fan, resist_bow, resist_fire, resist_elect, resist_magic, resist_wind, resist_poison, dam_multiply, summon, drain_sp, skill_vnum0, skill_level0, skill_vnum1, skill_level1, skill_vnum2, skill_level2, skill_vnum3, skill_level3, skill_vnum4, skill_level4, sp_berserk, sp_stoneskin, sp_godspeed, sp_deathblow, sp_revive) values (2 SYSERR: Apr 25 11:38:38.919259 :: ChildLoop: AsyncSQL: query failed: Incorrect string value: '\xA1' for column `player`.`mob_proto`.`name` at row 1 (query: replace into mob_proto (vnum, name, locale_name, type, rank, battle_type, level, size, ai_flag, setRaceFlag, setImmuneFlag, on_click, empire, drop_item, resurrection_vnum, folder, st, dx, ht, iq, damage_min, damage_max, max_hp, regen_cycle, regen_percent, exp, gold_min, gold_max, def, attack_speed, move_speed, aggressive_hp_pct, aggressive_sight, attack_range, polymorph_item, enchant_curse, enchant_slow, enchant_poison, enchant_stun, enchant_critical, enchant_penetrate, resist_sword, resist_twohand, resist_dagger, resist_bell, resist_fan, resist_bow, resist_fire, resist_elect, resist_magic, resist_wind, resist_poison, dam_multiply, summon, drain_sp, skill_vnum0, skill_level0, skill_vnum1, skill_level1, skill_vnum2, skill_level2, skill_vnum3, skill_level3, skill_vnum4, skill_level4, sp_berserk, sp_stoneskin, sp_godspeed, sp_deathblow, sp_revive) values (3 SYSERR: Apr 25 11:38:39.145231 :: ChildLoop: AsyncSQL: query failed: Incorrect string value: '\xA1' for column `player`.`mob_proto`.`name` at row 1 (query: replace into mob_proto (vnum, name, locale_name, type, rank, battle_type, level, size, ai_flag, setRaceFlag, setImmuneFlag, on_click, empire, drop_item, resurrection_vnum, folder, st, dx, ht, iq, damage_min, damage_max, max_hp, regen_cycle, regen_percent, exp, gold_min, gold_max, def, attack_speed, move_speed, aggressive_hp_pct, aggressive_sight, attack_range, polymorph_item, enchant_curse, enchant_slow, enchant_poison, enchant_stun, enchant_critical, enchant_penetrate, resist_sword, resist_twohand, resist_dagger, resist_bell, resist_fan, resist_bow, resist_fire, resist_elect, resist_magic, resist_wind, resist_poison, dam_multiply, summon, drain_sp, skill_vnum0, skill_level0, skill_vnum1, skill_level1, skill_vnum2, skill_level2, skill_vnum3, skill_level3, skill_vnum4, skill_level4, sp_berserk, sp_stoneskin, sp_godspeed, sp_deathblow, sp_revive) values (2 SYSERR: Apr 25 11:38:39.276368 :: ChildLoop: AsyncSQL: query failed: Incorrect string value: '\xA1' for column `player`.`mob_proto`.`name` at row 1 (query: replace into mob_proto (vnum, name, locale_name, type, rank, battle_type, level, size, ai_flag, setRaceFlag, setImmuneFlag, on_click, empire, drop_item, resurrection_vnum, folder, st, dx, ht, iq, damage_min, damage_max, max_hp, regen_cycle, regen_percent, exp, gold_min, gold_max, def, attack_speed, move_speed, aggressive_hp_pct, aggressive_sight, attack_range, polymorph_item, enchant_curse, enchant_slow, enchant_poison, enchant_stun, enchant_critical, enchant_penetrate, resist_sword, resist_twohand, resist_dagger, resist_bell, resist_fan, resist_bow, resist_fire, resist_elect, resist_magic, resist_wind, resist_poison, dam_multiply, summon, drain_sp, skill_vnum0, skill_level0, skill_vnum1, skill_level1, skill_vnum2, skill_level2, skill_vnum3, skill_level3, skill_vnum4, skill_level4, sp_berserk, sp_stoneskin, sp_godspeed, sp_deathblow, sp_revive) values (3 SYSERR: Apr 25 11:38:42.150977 :: socket_bind: bind: Address already in use SYSERR: Apr 25 11:38:42.153020 :: Load: DirectQuery failed(SELECT login FROM block_exception) SYSERR: Apr 25 11:38:42.155990 :: pid_deinit: SYSLOG ; Apr 25 11:45:27.244954 :: failed Apr 25 11:45:27.245934 :: AsyncSQL: closing mysql connection. Apr 25 11:45:27.246081 :: AsyncSQL: closing mysql connection. Apr 25 11:45:27.246206 :: AsyncSQL: closing mysql connection. Apr 25 11:45:27.246321 :: AsyncSQL: closing mysql connection. Apr 25 11:45:27.246376 :: AsyncSQL: closing mysql connection. Apr 25 11:45:27.246479 :: AsyncSQL: closing mysql connection. Apr 25 11:45:27.246594 :: AsyncSQL: closing mysql connection. Apr 25 11:45:27.246650 :: AsyncSQL: closing mysql connection. Apr 25 11:45:27.246755 :: AsyncSQL: closing mysql connection. Apr 25 11:45:27.246866 :: AsyncSQL: closing mysql connection. Apr 25 11:45:27.246922 :: AsyncSQL: closing mysql connection. Apr 25 11:45:27.247030 :: AsyncSQL: closing mysql connection. SYSERR: Apr 25 11:45:27.247205 :: pid_deinit: End of pid CHANNEL 1 SYSERR ; SYSERR: Apr 25 11:43:24.900765 :: ItemLoad: cannot create item by vnum 40002 (name 111 id 10000010) SYSERR: Apr 25 11:43:24.900784 :: CreateItem: ITEM_ID_DUP: 10000013 Cesaret Pelerini owner 0x4e622000 SYSERR: Apr 25 11:43:24.900802 :: ItemLoad: cannot create item by vnum 70038 (name 111 id 10000013) SYSERR: Apr 25 11:43:24.900826 :: CreateItem: ITEM_ID_DUP: 10000017 Mavi İksir(B) owner 0x4e622000
  13. I have some syserr i dont understand which charset should to use. SYSERR: Apr 24 14:07:01.523830 :: ChildLoop: AsyncSQL: query failed: Incorrect string value: '\xA1\xEDcl\xA8L...' for column `player`.`mob_proto`.`name` at row 1 (query: replace into mob_proto (vnum, name, locale_name, type, rank, battle_type, level, size, ai_flag, setRaceFlag, setImmuneFlag, on_click, empire, drop_item, resurrection_vnum, folder, st, dx, ht, iq, damage_min, damage_max, max_hp, regen_cycle, regen_percent, exp, gold_min, gold_max, def, attack_speed, move_speed, aggressive_hp_pct, aggressive_sight, attack_range, polymorph_item, enchant_curse, enchant_slow, enchant_poison, enchant_stun, enchant_critical, enchant_penetrate, resist_sword, resist_twohand, resist_dagger, resist_bell, resist_fan, resist_bow, resist_fire, resist_elect, resist_magic, resist_wind, resist_poison, dam_multiply, summon, drain_sp, skill_vnum0, skill_level0, skill_vnum1, skill_level1, skill_vnum2, skill_level2, skill_vnum3, skill_level3, skill_vnum4, skill_level4, sp_berserk, sp_stoneskin, sp_godspeed, sp_deathblow, sp_rev SYSERR: Apr 24 14:07:01.524167 :: ChildLoop: AsyncSQL: query failed: Incorrect string value: '\xA1\xEDcl\xA8L...' for column `player`.`mob_proto`.`name` at row 1 (query: replace into mob_proto (vnum, name, locale_name, type, rank, battle_type, level, size, ai_flag, setRaceFlag, setImmuneFlag, on_click, empire, drop_item, resurrection_vnum, folder, st, dx, ht, iq, damage_min, damage_max, max_hp, regen_cycle, regen_percent, exp, gold_min, gold_max, def, attack_speed, move_speed, aggressive_hp_pct, aggressive_sight, attack_range, polymorph_item, enchant_curse, enchant_slow, enchant_poison, enchant_stun, enchant_critical, enchant_penetrate, resist_sword, resist_twohand, resist_dagger, resist_bell, resist_fan, resist_bow, resist_fire, resist_elect, resist_magic, resist_wind, resist_poison, dam_multiply, summon, drain_sp, skill_vnum0, skill_level0, skill_vnum1, skill_level1, skill_vnum2, skill_level2, skill_vnum3, skill_level3, skill_vnum4, skill_level4, sp_berserk, sp_stoneskin, sp_godspeed, sp_deathblow, sp_rev SYSERR: Apr 24 14:07:01.524424 :: ChildLoop: AsyncSQL: query failed: Incorrect string value: '\xA1\xEDcl\xA8L...' for column `player`.`mob_proto`.`name` at row 1 (query: replace into mob_proto (vnum, name, locale_name, type, rank, battle_type, level, size, ai_flag, setRaceFlag, setImmuneFlag, on_click, empire, drop_item, resurrection_vnum, folder, st, dx, ht, iq, damage_min, damage_max, max_hp, regen_cycle, regen_percent, exp, gold_min, gold_max, def, attack_speed, move_speed, aggressive_hp_pct, aggressive_sight, attack_range, polymorph_item, enchant_curse, enchant_slow, enchant_poison, enchant_stun, enchant_critical, enchant_penetrate, resist_sword, resist_twohand, resist_dagger, resist_bell, resist_fan, resist_bow, resist_fire, resist_elect, resist_magic, resist_wind, resist_poison, dam_multiply, summon, drain_sp, skill_vnum0, skill_level0, skill_vnum1, skill_level1, skill_vnum2, skill_level2, skill_vnum3, skill_level3, skill_vnum4, skill_level4, sp_berserk, sp_stoneskin, sp_godspeed, sp_deathblow, sp_rev Thanks.
  14. @Tatsumaru I have a little issue, while attacking Lucifer if he poisoning he's hp bar getting low but hp is almost full like this ; Also when the poisoning gone HP bar back to normal state. How to fix this ?
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.