Guest User

ItemCSVReader.cpp

a guest
Dec 24th, 2016
166
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <math.h>
  2. #include "ItemCSVReader.h"
  3.  
  4. using namespace std;
  5.  
  6. inline string trim_left(const string& str)
  7. {
  8.     string::size_type n = str.find_first_not_of(" \t\v\n\r");
  9.     return n == string::npos ? str : str.substr(n, str.length());
  10. }
  11.  
  12. inline string trim_right(const string& str)
  13. {
  14.     string::size_type n = str.find_last_not_of(" \t\v\n\r");
  15.     return n == string::npos ? str : str.substr(0, n + 1);
  16. }
  17.  
  18. string trim(const string& str){ return trim_left(trim_right(str)); }
  19.  
  20. static string* StringSplit(string strOrigin, string strTok)
  21. {
  22.     int     cutAt;
  23.     int     index = 0;
  24.     string* strResult = new string[30];
  25.  
  26.     while ((cutAt = strOrigin.find_first_of(strTok)) != strOrigin.npos)
  27.     {
  28.         if (cutAt > 0)
  29.         {
  30.             strResult[index++] = strOrigin.substr(0, cutAt);
  31.         }
  32.         strOrigin = strOrigin.substr(cutAt + 1);
  33.     }
  34.  
  35.     if (strOrigin.length() > 0)
  36.     {
  37.         strResult[index++] = strOrigin.substr(0, cutAt);
  38.     }
  39.  
  40.     for (int i = 0; i<index; i++)
  41.     {
  42.         strResult[i] = trim(strResult[i]);
  43.     }
  44.  
  45.     return strResult;
  46. }
  47.  
  48. int get_Item_Type_Value(string inputString)
  49. {
  50.     string arType[] = {
  51.         "ITEM_NONE", "ITEM_WEAPON",
  52.         "ITEM_ARMOR", "ITEM_USE",
  53.         "ITEM_AUTOUSE", "ITEM_MATERIAL",
  54.         "ITEM_SPECIAL", "ITEM_TOOL",
  55.         "ITEM_LOTTERY", "ITEM_ELK",                 //10°³
  56.        
  57.         "ITEM_METIN", "ITEM_CONTAINER",
  58.         "ITEM_FISH", "ITEM_ROD",
  59.         "ITEM_RESOURCE", "ITEM_CAMPFIRE",
  60.         "ITEM_UNIQUE", "ITEM_SKILLBOOK",
  61.         "ITEM_QUEST", "ITEM_POLYMORPH",             //20°³
  62.  
  63.         "ITEM_TREASURE_BOX", "ITEM_TREASURE_KEY",
  64.         "ITEM_SKILLFORGET", "ITEM_GIFTBOX",
  65.         "ITEM_PICK", "ITEM_HAIR",
  66.         "ITEM_TOTEM", "ITEM_BLEND",
  67.         "ITEM_COSTUME", "ITEM_DS",                  //30°³
  68.  
  69.         "ITEM_SPECIAL_DS", "ITEM_EXTRACT",
  70.         "ITEM_SECONDARY_COIN",                      //33°³
  71.  
  72.         "ITEM_RING",
  73.         "ITEM_BELT",                                //35°³ (EItemTypes °ªÀ¸·Î Ä¡¸é 34)
  74.     };
  75.  
  76.     int retInt = -1;
  77.     for (int j = 0; j<sizeof(arType) / sizeof(arType[0]); j++) {
  78.         string tempString = arType[j];
  79.         if (inputString.find(tempString) != string::npos && tempString.find(inputString) != string::npos) {
  80.             retInt = j;
  81.             break;
  82.         }
  83.     }
  84.  
  85.     return retInt;
  86.  
  87. }
  88.  
  89. int get_Item_SubType_Value(int type_value, string inputString)
  90. {
  91.     static string arSub1[] = {
  92.         "WEAPON_SWORD",
  93.         "WEAPON_DAGGER",
  94.         "WEAPON_BOW",
  95.         "WEAPON_TWO_HANDED",
  96.         "WEAPON_BELL",
  97.         "WEAPON_FAN",
  98.         "WEAPON_ARROW",
  99.         "WEAPON_MOUNT_SPEAR",
  100.         "WEAPON_CLAW"
  101.     };
  102.     static string arSub2[] = {
  103.         "ARMOR_BODY",
  104.         "ARMOR_HEAD",
  105.         "ARMOR_SHIELD",
  106.         "ARMOR_WRIST",
  107.         "ARMOR_FOOTS",
  108.         "ARMOR_NECK",
  109.         "ARMOR_EAR",
  110.         "ARMOR_NUM_TYPES"
  111.     };
  112.     static string arSub3[] = {
  113.         "USE_POTION",
  114.         "USE_TALISMAN",
  115.         "USE_TUNING",
  116.         "USE_MOVE",
  117.         "USE_TREASURE_BOX",
  118.         "USE_MONEYBAG",
  119.         "USE_BAIT",
  120.         "USE_ABILITY_UP",
  121.         "USE_AFFECT",
  122.         "USE_CREATE_STONE",
  123.         "USE_SPECIAL",
  124.         "USE_POTION_NODELAY",
  125.         "USE_CLEAR",
  126.         "USE_INVISIBILITY",
  127.         "USE_DETACHMENT",
  128.         "USE_BUCKET",
  129.         "USE_POTION_CONTINUE",
  130.         "USE_CLEAN_SOCKET",
  131.         "USE_CHANGE_ATTRIBUTE",
  132.         "USE_ADD_ATTRIBUTE",
  133.         "USE_ADD_ACCESSORY_SOCKET",
  134.         "USE_PUT_INTO_ACCESSORY_SOCKET",
  135.         "USE_ADD_ATTRIBUTE2",
  136.         "USE_RECIPE",
  137.         "USE_CHANGE_ATTRIBUTE2",
  138.         "USE_BIND",
  139.         "USE_UNBIND",
  140.         "USE_TIME_CHARGE_PER",
  141.         "USE_TIME_CHARGE_FIX",
  142.         "USE_PUT_INTO_BELT_SOCKET",
  143.         "USE_PUT_INTO_RING_SOCKET",
  144.         "USE_ADD_COSTUME_ATTRIBUTE",
  145.         "USE_CHANGE_COSTUME_ATTRIBUTE"
  146.     };
  147.     static string arSub4[] = {
  148.         "AUTOUSE_POTION",
  149.         "AUTOUSE_ABILITY_UP",
  150.         "AUTOUSE_BOMB",
  151.         "AUTOUSE_GOLD",
  152.         "AUTOUSE_MONEYBAG",
  153.         "AUTOUSE_TREASURE_BOX"
  154.     };
  155.     static string arSub5[] = {
  156.         "MATERIAL_LEATHER",
  157.         "MATERIAL_BLOOD",
  158.         "MATERIAL_ROOT",
  159.         "MATERIAL_NEEDLE",
  160.         "MATERIAL_JEWEL",
  161.         "MATERIAL_DS_REFINE_NORMAL",
  162.         "MATERIAL_DS_REFINE_BLESSED",
  163.         "MATERIAL_DS_REFINE_HOLLY"
  164.     };
  165.     static string arSub6[] = {
  166.         "SPECIAL_MAP",
  167.         "SPECIAL_KEY",
  168.         "SPECIAL_DOC",
  169.         "SPECIAL_SPIRIT"
  170.     };
  171.     static string arSub7[] = {
  172.         "TOOL_FISHING_ROD"
  173.     };
  174.     static string arSub8[] = {
  175.         "LOTTERY_TICKET",
  176.         "LOTTERY_INSTANT"
  177.     };
  178.     static string arSub10[] = {
  179.         "METIN_NORMAL",
  180.         "METIN_GOLD"
  181.     };
  182.     static string arSub12[] = {
  183.         "FISH_ALIVE",
  184.         "FISH_DEAD"
  185.     };
  186.     static string arSub14[] = {
  187.         "RESOURCE_FISHBONE",
  188.         "RESOURCE_WATERSTONEPIECE",
  189.         "RESOURCE_WATERSTONE",
  190.         "RESOURCE_BLOOD_PEARL",
  191.         "RESOURCE_BLUE_PEARL",
  192.         "RESOURCE_WHITE_PEARL",
  193.         "RESOURCE_BUCKET",
  194.         "RESOURCE_CRYSTAL",
  195.         "RESOURCE_GEM",
  196.         "RESOURCE_STONE",
  197.         "RESOURCE_METIN",
  198.         "RESOURCE_ORE"
  199.     };
  200.     static string arSub16[] = {
  201.         "UNIQUE_NONE",
  202.         "UNIQUE_BOOK",
  203.         "UNIQUE_SPECIAL_RIDE",
  204.         "UNIQUE_3",
  205.         "UNIQUE_4",
  206.         "UNIQUE_5",
  207.         "UNIQUE_6",
  208.         "UNIQUE_7",
  209.         "UNIQUE_8",
  210.         "UNIQUE_9",
  211.         "USE_SPECIAL"
  212.     };
  213.     static string arSub28[] = {
  214.         "COSTUME_BODY",
  215.         "COSTUME_HAIR",
  216.         "COSTUME_MOUNT",
  217.         "COSTUME_ACCE",
  218.         "COSTUME_WEAPON_SWORD",
  219.         "COSTUME_WEAPON_DAGGER",
  220.         "COSTUME_WEAPON_BOW",
  221.         "COSTUME_WEAPON_TWO_HANDED",
  222.         "COSTUME_WEAPON_BELL",
  223.         "COSTUME_WEAPON_FAN",
  224.         "COSTUME_WEAPON_CLAW"
  225.     };
  226.     static string arSub29[] = {
  227.         "DS_SLOT1",
  228.         "DS_SLOT2",
  229.         "DS_SLOT3",
  230.         "DS_SLOT4",
  231.         "DS_SLOT5",
  232.         "DS_SLOT6"
  233.     };
  234.     static string arSub31[] = {
  235.         "EXTRACT_DRAGON_SOUL",
  236.         "EXTRACT_DRAGON_HEART"
  237.     };
  238.     static string* arSubType[] = {
  239.         0,          //0
  240.         arSub1,     //1
  241.         arSub2,     //2
  242.         arSub3,     //3
  243.         arSub4,     //4
  244.         arSub5,     //5
  245.         arSub6,     //6
  246.         arSub7,     //7
  247.         arSub8,     //8
  248.         0,          //9
  249.         arSub10,    //10
  250.         0,          //11
  251.         arSub12,    //12
  252.         0,          //13
  253.         arSub14,    //14
  254.         0,          //15
  255.         arSub16,    //16
  256.         0,          //17
  257.         0,          //18
  258.         0,          //19
  259.         0,          //20
  260.         0,          //21
  261.         0,          //22
  262.         0,          //23
  263.         0,          //24
  264.         0,          //25
  265.         0,          //26
  266.         0,          //27
  267.         arSub28,    //28
  268.         arSub29,    //29
  269.         arSub29,    //30
  270.         arSub31,    //31
  271.         0,          //32
  272.         0,          //33
  273.         0,          //34
  274.         0,          //35
  275.     };
  276.     static int arNumberOfSubtype[36] = {
  277.         0,
  278.         sizeof(arSub1) / sizeof(arSub1[0]),
  279.         sizeof(arSub2) / sizeof(arSub2[0]),
  280.         sizeof(arSub3) / sizeof(arSub3[0]),
  281.         sizeof(arSub4) / sizeof(arSub4[0]),
  282.         sizeof(arSub5) / sizeof(arSub5[0]),
  283.         sizeof(arSub6) / sizeof(arSub6[0]),
  284.         sizeof(arSub7) / sizeof(arSub7[0]),
  285.         sizeof(arSub8) / sizeof(arSub8[0]),
  286.         0,
  287.         sizeof(arSub10) / sizeof(arSub10[0]),
  288.         0,
  289.         sizeof(arSub12) / sizeof(arSub12[0]),
  290.         0,
  291.         sizeof(arSub14) / sizeof(arSub14[0]),
  292.         0,
  293.         sizeof(arSub16) / sizeof(arSub16[0]),
  294.         0,
  295.         0,
  296.         0,
  297.         0,
  298.         0,
  299.         0,
  300.         0,
  301.         0,
  302.         0,
  303.         0,
  304.         0,
  305.         sizeof(arSub28) / sizeof(arSub28[0]),
  306.         sizeof(arSub29) / sizeof(arSub29[0]),
  307.         sizeof(arSub29) / sizeof(arSub29[0]),
  308.         sizeof(arSub31) / sizeof(arSub31[0]),
  309.         0,
  310.         0,
  311.         0,
  312.         0,
  313.     };
  314.  
  315.     if (arSubType[type_value] == 0) {
  316.         return 0;
  317.     }
  318.  
  319.     int retInt = -1;
  320.     for (int j = 0; j<arNumberOfSubtype[type_value]; j++) {
  321.         string tempString = arSubType[type_value][j];
  322.         string tempInputString = trim(inputString);
  323.         if (tempInputString.compare(tempString) == 0)
  324.         {
  325.             retInt = j;
  326.             break;
  327.         }
  328.     }
  329.  
  330.     return retInt;
  331. }
  332.  
  333. int get_Item_AntiFlag_Value(string inputString)
  334. {
  335.     string arAntiFlag[] = {
  336.         "ANTI_FEMALE",
  337.         "ANTI_MALE",
  338.         "ANTI_MUSA",
  339.         "ANTI_ASSASSIN",
  340.         "ANTI_SURA",
  341.         "ANTI_MUDANG",
  342.         "ANTI_GET",
  343.         "ANTI_DROP",
  344.         "ANTI_SELL",
  345.         "ANTI_EMPIRE_A",
  346.         "ANTI_EMPIRE_B",
  347.         "ANTI_EMPIRE_C",
  348.         "ANTI_SAVE",
  349.         "ANTI_GIVE",
  350.         "ANTI_PKDROP",
  351.         "ANTI_STACK",
  352.         "ANTI_MYSHOP",
  353.         "ANTI_SAFEBOX",
  354.         "ANTI_WOLFMAN",
  355.         "ANTI_BIND"
  356.     };
  357.  
  358.     int retValue = 0;
  359.     string* arInputString = StringSplit(inputString, "|");
  360.     for (int i = 0; i<sizeof(arAntiFlag) / sizeof(arAntiFlag[0]); i++) {
  361.         string tempString = arAntiFlag[i];
  362.         for (int j = 0; j<30; j++)
  363.         {
  364.             string tempString2 = arInputString[j];
  365.             if (tempString2.compare(tempString) == 0) {
  366.                 retValue = retValue + pow((float)2, (float)i);
  367.             }
  368.  
  369.             if (tempString2.compare("") == 0)
  370.                 break;
  371.         }
  372.     }
  373.     delete[]arInputString;
  374.  
  375.     return retValue;
  376. }
  377.  
  378. int get_Item_Flag_Value(string inputString)
  379. {
  380.     string arFlag[] = {
  381.         "ITEM_TUNABLE",
  382.         "ITEM_SAVE",
  383.         "ITEM_STACKABLE",
  384.         "COUNT_PER_1GOLD",
  385.         "ITEM_SLOW_QUERY",
  386.         "ITEM_UNIQUE",
  387.         "ITEM_MAKECOUNT",
  388.         "ITEM_IRREMOVABLE",
  389.         "CONFIRM_WHEN_USE",
  390.         "QUEST_USE",
  391.         "QUEST_USE_MULTIPLE",
  392.         "QUEST_GIVE",
  393.         "ITEM_QUEST",
  394.         "LOG",
  395.         "STACKABLE",
  396.         "SLOW_QUERY",
  397.         "REFINEABLE",
  398.         "IRREMOVABLE",
  399.         "ITEM_APPLICABLE"
  400.     };
  401.  
  402.     int retValue = 0;
  403.     string* arInputString = StringSplit(inputString, "|");
  404.     for (int i = 0; i<sizeof(arFlag) / sizeof(arFlag[0]); i++) {
  405.         string tempString = arFlag[i];
  406.         for (int j = 0; j<30; j++)
  407.         {
  408.             string tempString2 = arInputString[j];
  409.             if (tempString2.compare(tempString) == 0) {
  410.                 retValue = retValue + pow((float)2, (float)i);
  411.             }
  412.  
  413.             if (tempString2.compare("") == 0)
  414.                 break;
  415.         }
  416.     }
  417.     delete[]arInputString;
  418.  
  419.     return retValue;
  420. }
  421.  
  422. int get_Item_WearFlag_Value(string inputString)
  423. {
  424.     string arWearrFlag[] = {
  425.         "WEAR_BODY",
  426.         "WEAR_HEAD",
  427.         "WEAR_FOOTS",
  428.         "WEAR_WRIST",
  429.         "WEAR_WEAPON",
  430.         "WEAR_NECK",
  431.         "WEAR_EAR",
  432.         "WEAR_SHIELD",
  433.         "WEAR_UNIQUE",
  434.         "WEAR_ARROW",
  435.         "WEAR_HAIR",
  436.         "WEAR_ABILITY",
  437.         "WEAR_COSTUME_BODY",
  438.         "WEAR_COSTUME_HAIR",
  439.         "WEAR_COSTUME_MOUNT",
  440.         "WEAR_COSTUME_ACCE",
  441.         "WEAR_COSTUME_WEAPON"
  442.     };
  443.     int retValue = 0;
  444.     string* arInputString = StringSplit(inputString, "|");
  445.     for (int i = 0; i<sizeof(arWearrFlag) / sizeof(arWearrFlag[0]); i++)
  446.     {
  447.         string tempString = arWearrFlag[i];
  448.         for (int j = 0; j<30; j++)
  449.         {
  450.             string tempString2 = arInputString[j];
  451.             if (tempString2.compare(tempString) == 0)
  452.             {
  453.                 retValue = retValue + pow((float)2, (float)i);
  454.             }
  455.  
  456.             if (tempString2.compare("") == 0)
  457.                 break;
  458.         }
  459.     }
  460.  
  461.     delete[]arInputString;
  462.     return retValue;
  463. }
  464.  
  465. int get_Item_Immune_Value(string inputString)
  466. {
  467.     string arImmune[] = {
  468.         "PARA",
  469.         "CURSE",
  470.         "STUN",
  471.         "SLEEP",
  472.         "SLOW",
  473.         "POISON",
  474.         "TERROR"
  475.     };
  476.  
  477.     int retValue = 0;
  478.     string* arInputString = StringSplit(inputString, "|");
  479.     for (int i = 0; i<sizeof(arImmune) / sizeof(arImmune[0]); i++) {
  480.         string tempString = arImmune[i];
  481.         for (int j = 0; j<30; j++)
  482.         {
  483.             string tempString2 = arInputString[j];
  484.             if (tempString2.compare(tempString) == 0) {
  485.                 retValue = retValue + pow((float)2, (float)i);
  486.             }
  487.  
  488.             if (tempString2.compare("") == 0)
  489.                 break;
  490.         }
  491.     }
  492.     delete[]arInputString;
  493.  
  494.     return retValue;
  495. }
  496.  
  497. int get_Item_LimitType_Value(string inputString)
  498. {
  499.     string arLimitType[] = {
  500.         "LIMIT_NONE",
  501.         "LEVEL",
  502.         "STR",
  503.         "DEX",
  504.         "INT",
  505.         "CON",
  506.         "PC_BANG",
  507.         "REAL_TIME",
  508.         "REAL_TIME_FIRST_USE",
  509.         "TIMER_BASED_ON_WEAR"
  510.     };
  511.  
  512.     int retInt = -1;
  513.     for (int j = 0; j<sizeof(arLimitType) / sizeof(arLimitType[0]); j++) {
  514.         string tempString = arLimitType[j];
  515.         string tempInputString = trim(inputString);
  516.         if (tempInputString.compare(tempString) == 0)
  517.         {
  518.             retInt = j;
  519.             break;
  520.         }
  521.     }
  522.  
  523.     return retInt;
  524. }
  525.  
  526. int get_Item_ApplyType_Value(string inputString)
  527. {
  528.     string arApplyType[] = {
  529.         "APPLY_NONE", "APPLY_MAX_HP", "APPLY_MAX_SP", "APPLY_CON", "APPLY_INT", "APPLY_STR", "APPLY_DEX", "APPLY_ATT_SPEED",
  530.         "APPLY_MOV_SPEED", "APPLY_CAST_SPEED", "APPLY_HP_REGEN", "APPLY_SP_REGEN", "APPLY_POISON_PCT", "APPLY_STUN_PCT",
  531.         "APPLY_SLOW_PCT", "APPLY_CRITICAL_PCT", "APPLY_PENETRATE_PCT", "APPLY_ATTBONUS_HUMAN", "APPLY_ATTBONUS_ANIMAL",
  532.         "APPLY_ATTBONUS_ORC", "APPLY_ATTBONUS_MILGYO", "APPLY_ATTBONUS_UNDEAD", "APPLY_ATTBONUS_DEVIL", "APPLY_STEAL_HP",
  533.         "APPLY_STEAL_SP", "APPLY_MANA_BURN_PCT", "APPLY_DAMAGE_SP_RECOVER", "APPLY_BLOCK", "APPLY_DODGE", "APPLY_RESIST_SWORD",
  534.         "APPLY_RESIST_TWOHAND", "APPLY_RESIST_DAGGER", "APPLY_RESIST_BELL", "APPLY_RESIST_FAN", "APPLY_RESIST_BOW", "APPLY_RESIST_FIRE",
  535.         "APPLY_RESIST_ELEC", "APPLY_RESIST_MAGIC", "APPLY_RESIST_WIND", "APPLY_REFLECT_MELEE", "APPLY_REFLECT_CURSE", "APPLY_POISON_REDUCE",
  536.         "APPLY_KILL_SP_RECOVER", "APPLY_EXP_DOUBLE_BONUS", "APPLY_GOLD_DOUBLE_BONUS", "APPLY_ITEM_DROP_BONUS", "APPLY_POTION_BONUS",
  537.         "APPLY_KILL_HP_RECOVER", "APPLY_IMMUNE_STUN", "APPLY_IMMUNE_SLOW", "APPLY_IMMUNE_FALL", "APPLY_SKILL", "APPLY_BOW_DISTANCE",
  538.         "APPLY_ATT_GRADE_BONUS", "APPLY_DEF_GRADE_BONUS", "APPLY_MAGIC_ATT_GRADE", "APPLY_MAGIC_DEF_GRADE", "APPLY_CURSE_PCT",
  539.         "APPLY_MAX_STAMINA", "APPLY_ATTBONUS_WARRIOR", "APPLY_ATTBONUS_ASSASSIN", "APPLY_ATTBONUS_SURA", "APPLY_ATTBONUS_SHAMAN",
  540.         "APPLY_ATTBONUS_MONSTER", "APPLY_MALL_ATTBONUS", "APPLY_MALL_DEFBONUS", "APPLY_MALL_EXPBONUS", "APPLY_MALL_ITEMBONUS",
  541.         "APPLY_MALL_GOLDBONUS", "APPLY_MAX_HP_PCT", "APPLY_MAX_SP_PCT", "APPLY_SKILL_DAMAGE_BONUS", "APPLY_NORMAL_HIT_DAMAGE_BONUS",
  542.         "APPLY_SKILL_DEFEND_BONUS", "APPLY_NORMAL_HIT_DEFEND_BONUS", "APPLY_PC_BANG_EXP_BONUS", "APPLY_PC_BANG_DROP_BONUS",
  543.         "APPLY_EXTRACT_HP_PCT", "APPLY_RESIST_WARRIOR", "APPLY_RESIST_ASSASSIN", "APPLY_RESIST_SURA", "APPLY_RESIST_SHAMAN",
  544.         "APPLY_ENERGY", "APPLY_DEF_GRADE", "APPLY_COSTUME_ATTR_BONUS", "APPLY_MAGIC_ATTBONUS_PER", "APPLY_MELEE_MAGIC_ATTBONUS_PER",
  545.         "APPLY_RESIST_ICE", "APPLY_RESIST_EARTH", "APPLY_RESIST_DARK", "APPLY_ANTI_CRITICAL_PCT", "APPLY_ANTI_PENETRATE_PCT",
  546.         "APPLY_BLEEDING_PCT", "APPLY_BLEEDING_REDUCE", "APPLY_ATTBONUS_WOLFMAN", "APPLY_RESIST_WOLFMAN", "APPLY_RESIST_CLAW"
  547.     };
  548.  
  549.     int retInt = -1;
  550.     for (int j = 0; j<sizeof(arApplyType) / sizeof(arApplyType[0]); j++) {
  551.         string tempString = arApplyType[j];
  552.         string tempInputString = trim(inputString);
  553.         if (tempInputString.compare(tempString) == 0)
  554.         {
  555.             retInt = j;
  556.             break;
  557.         }
  558.     }
  559.  
  560.     return retInt;
  561.  
  562. }
  563.  
  564. int get_Mob_Rank_Value(string inputString)
  565. {
  566.     string arRank[] = {
  567.         "PAWN",
  568.         "S_PAWN",
  569.         "KNIGHT",
  570.         "S_KNIGHT",
  571.         "BOSS",
  572.         "KING"
  573.     };
  574.  
  575.     int retInt = -1;
  576.     for (int j = 0; j<sizeof(arRank) / sizeof(arRank[0]); j++) {
  577.         string tempString = arRank[j];
  578.         string tempInputString = trim(inputString);
  579.         if (tempInputString.compare(tempString) == 0)
  580.         {
  581.             retInt = j;
  582.             break;
  583.         }
  584.     }
  585.  
  586.     return retInt;
  587. }
  588.  
  589. int get_Mob_Type_Value(string inputString)
  590. {
  591.     string arType[] = {
  592.         "MONSTER",
  593.         "NPC",
  594.         "STONE",
  595.         "WARP",
  596.         "DOOR",
  597.         "BUILDING",
  598.         "PC",
  599.         "POLYMORPH_PC",
  600.         "HORSE",
  601.         "GOTO"
  602.     };
  603.  
  604.     int retInt = -1;
  605.     for (int j = 0; j<sizeof(arType) / sizeof(arType[0]); j++) {
  606.         string tempString = arType[j];
  607.         string tempInputString = trim(inputString);
  608.         if (tempInputString.compare(tempString) == 0)
  609.         {
  610.             retInt = j;
  611.             break;
  612.         }
  613.     }
  614.  
  615.     return retInt;
  616. }
  617.  
  618. int get_Mob_BattleType_Value(string inputString)
  619. {
  620.     string arBattleType[] = {
  621.         "MELEE",
  622.         "RANGE",
  623.         "MAGIC",
  624.         "SPECIAL",
  625.         "POWER",
  626.         "TANKER",
  627.         "SUPER_POWER",
  628.         "SUPER_TANKER"
  629.     };
  630.  
  631.     int retInt = -1;
  632.     for (int j = 0; j<sizeof(arBattleType) / sizeof(arBattleType[0]); j++) {
  633.         string tempString = arBattleType[j];
  634.         string tempInputString = trim(inputString);
  635.         if (tempInputString.compare(tempString) == 0)
  636.         {
  637.             retInt = j;
  638.             break;
  639.         }
  640.     }
  641.  
  642.     return retInt;
  643. }
  644.  
  645. int get_Mob_Size_Value(string inputString)
  646. {
  647.     string arSize[] = {
  648.         "SAMLL",
  649.         "MEDIUM",
  650.         "BIG"
  651.     };
  652.  
  653.     int retInt = 0;
  654.     for (int j = 0; j<sizeof(arSize) / sizeof(arSize[0]); j++) {
  655.         string tempString = arSize[j];
  656.         string tempInputString = trim(inputString);
  657.         if (tempInputString.compare(tempString) == 0)
  658.         {
  659.             retInt = j + 1;
  660.             break;
  661.         }
  662.     }
  663.  
  664.     return retInt;
  665. }
  666.  
  667. int get_Mob_AIFlag_Value(string inputString)
  668. {
  669.     string arAIFlag[] = {
  670.         "AGGR",
  671.         "NOMOVE",
  672.         "COWARD",
  673.         "NOATTSHINSU",
  674.         "NOATTCHUNJO",
  675.         "NOATTJINNO",
  676.         "ATTMOB",
  677.         "BERSERK",
  678.         "STONESKIN",
  679.         "GODSPEED",
  680.         "DEATHBLOW",
  681.         "REVIVE"
  682.     };
  683.  
  684.     int retValue = 0;
  685.     string* arInputString = StringSplit(inputString, ",");
  686.     for (int i = 0; i<sizeof(arAIFlag) / sizeof(arAIFlag[0]); i++) {
  687.         string tempString = arAIFlag[i];
  688.         for (int j = 0; j<30; j++)
  689.         {
  690.             string tempString2 = arInputString[j];
  691.             if (tempString2.compare(tempString) == 0) {
  692.                 retValue = retValue + pow((float)2, (float)i);
  693.             }
  694.  
  695.             if (tempString2.compare("") == 0)
  696.                 break;
  697.         }
  698.     }
  699.     delete[]arInputString;
  700.  
  701.     return retValue;
  702. }
  703.  
  704. int get_Mob_RaceFlag_Value(string inputString)
  705. {
  706.     string arRaceFlag[] = {
  707.         "ANIMAL",
  708.         "UNDEAD",
  709.         "DEVIL",
  710.         "HUMAN",
  711.         "ORC",
  712.         "MILGYO",
  713.         "INSECT",
  714.         "FIRE",
  715.         "ICE",
  716.         "DESERT",
  717.         "TREE",
  718.         "ATT_ELEC",
  719.         "ATT_FIRE",
  720.         "ATT_ICE",
  721.         "ATT_WIND",
  722.         "ATT_EARTH",
  723.         "ATT_DARK"
  724.     };
  725.  
  726.     int retValue = 0;
  727.     string* arInputString = StringSplit(inputString, "|");
  728.     for (int i = 0; i<sizeof(arRaceFlag) / sizeof(arRaceFlag[0]); i++) {
  729.         string tempString = arRaceFlag[i];
  730.         for (int j = 0; j<30; j++)
  731.         {
  732.             string tempString2 = arInputString[j];
  733.             if (tempString2.compare(tempString) == 0) {
  734.                 retValue = retValue + pow((float)2, (float)i);
  735.             }
  736.  
  737.             if (tempString2.compare("") == 0)
  738.                 break;
  739.         }
  740.     }
  741.     delete[]arInputString;
  742.  
  743.     return retValue;
  744. }
  745.  
  746. int get_Mob_ImmuneFlag_Value(string inputString)
  747. {
  748.     string arImmuneFlag[] = {
  749.         "STUN",
  750.         "SLOW",
  751.         "FALL",
  752.         "CURSE",
  753.         "POISON",
  754.         "TERROR",
  755.         "REFLECT"
  756.     };
  757.  
  758.     int retValue = 0;
  759.     string* arInputString = StringSplit(inputString, ",");
  760.     for (int i = 0; i<sizeof(arImmuneFlag) / sizeof(arImmuneFlag[0]); i++) {
  761.         string tempString = arImmuneFlag[i];
  762.         for (int j = 0; j<30; j++)
  763.         {
  764.             string tempString2 = arInputString[j];
  765.             if (tempString2.compare(tempString) == 0) {
  766.                 retValue = retValue + pow((float)2, (float)i);
  767.             }
  768.  
  769.             if (tempString2.compare("") == 0)
  770.                 break;
  771.         }
  772.     }
  773.     delete[]arInputString;
  774.  
  775.     return retValue;
  776. }
RAW Paste Data