Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2021
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 19.09 KB | None | 0 0
  1. #include <math.h>
  2. #include "ItemCSVReader.h"
  3.  
  4.  
  5.  
  6. using namespace std;
  7.  
  8. inline string trim_left(const string& str)
  9. {
  10.     string::size_type n = str.find_first_not_of(" \t\v\n\r");
  11.     return n == string::npos ? str : str.substr(n, str.length());
  12. }
  13.  
  14. inline string trim_right(const string& str)
  15. {
  16.     string::size_type n = str.find_last_not_of(" \t\v\n\r");
  17.     return n == string::npos ? str : str.substr(0, n + 1);
  18. }
  19.  
  20. string trim(const string& str){return trim_left(trim_right(str));}
  21.  
  22. static string* StringSplit(string strOrigin, string strTok)
  23. {
  24.     int     cutAt;                            //ŔÚ¸Ł´ÂŔ§Äˇ
  25.     int     index     = 0;                    //ą®ŔÚż­Ŕε¦˝ş
  26.     string* strResult = new string[30];       //°á°úreturn ÇŇşŻĽö
  27.  
  28.     //strTokŔ»ĂŁŔ»¶§±îÁöąÝşą
  29.     while ((cutAt = strOrigin.find_first_of(strTok)) != strOrigin.npos)
  30.     {
  31.        if (cutAt > 0)  //ŔÚ¸Ł´ÂŔ§Äˇ°ˇ0ş¸´ŮĹ©¸é(Ľş°ř˝Ă)
  32.        {
  33.             strResult[index++] = strOrigin.substr(0, cutAt);  //°á°úąčż­żˇĂß°ˇ
  34.        }
  35.        strOrigin = strOrigin.substr(cutAt+1);  //żřş»ŔşŔÚ¸ĄşÎşĐÁ¦żÜÇŃłŞ¸ÓÁö
  36.     }
  37.  
  38.     if(strOrigin.length() > 0)  //żřş»ŔĚľĆÁ÷ł˛ľŇŔ¸¸é
  39.     {
  40.         strResult[index++] = strOrigin.substr(0, cutAt);  //łŞ¸ÓÁö¸¦°á°úąčż­żˇĂß°ˇ
  41.     }
  42.  
  43.     for( int i=0;i<index;i++)
  44.     {
  45.         strResult[i] = trim(strResult[i]);
  46.     }
  47.  
  48.     return strResult;  //°á°úreturn
  49. }
  50.  
  51.  
  52.  
  53. int get_Item_Type_Value(string inputString)
  54. {
  55.     string arType[] = {"ITEM_NONE", "ITEM_WEAPON",
  56.         "ITEM_ARMOR", "ITEM_USE",
  57.         "ITEM_AUTOUSE", "ITEM_MATERIAL",
  58.         "ITEM_SPECIAL", "ITEM_TOOL",
  59.         "ITEM_LOTTERY", "ITEM_ELK",                 //10°ł
  60.  
  61.         "ITEM_METIN", "ITEM_CONTAINER",
  62.         "ITEM_FISH", "ITEM_ROD",
  63.         "ITEM_RESOURCE", "ITEM_CAMPFIRE",
  64.         "ITEM_UNIQUE", "ITEM_SKILLBOOK",
  65.         "ITEM_QUEST", "ITEM_POLYMORPH",             //20°ł
  66.  
  67.         "ITEM_TREASURE_BOX", "ITEM_TREASURE_KEY",
  68.         "ITEM_SKILLFORGET", "ITEM_GIFTBOX",
  69.         "ITEM_PICK", "ITEM_HAIR",
  70.         "ITEM_TOTEM", "ITEM_BLEND",
  71.         "ITEM_COSTUME", "ITEM_DS",                  //30°ł
  72.    
  73.         "ITEM_SPECIAL_DS""ITEM_EXTRACT",         //32°ł
  74.        
  75.         "ITEM_SECONDARY_COIN",                      //33°ł
  76.        
  77.         "ITEM_RING", "ITEM_BELT"                    //35°ł (EItemTypes °ŞŔ¸·Î ġ¸é 34)
  78.     };
  79.  
  80.    
  81.     int retInt = -1;
  82.     //cout << "Type : " << typeStr << " -> ";
  83.     for (int j=0;j<sizeof(arType)/sizeof(arType[0]);j++) {
  84.         string tempString = arType[j];
  85.         if  (inputString.find(tempString)!=string::npos && tempString.find(inputString)!=string::npos) {
  86.             //cout << j << " ";
  87.             retInt =  j;
  88.             break;
  89.         }
  90.     }
  91.     //cout << endl;
  92.  
  93.     return retInt;
  94.  
  95. }
  96.  
  97. int get_Item_SubType_Value(int type_value, string inputString)
  98. {
  99.     string arSub1[] = { "WEAPON_SWORD", "WEAPON_DAGGER", "WEAPON_BOW", "WEAPON_TWO_HANDED",
  100.                 "WEAPON_BELL", "WEAPON_FAN", "WEAPON_ARROW", "WEAPON_MOUNT_SPEAR"};
  101.     string arSub2[] = { "ARMOR_BODY", "ARMOR_HEAD", "ARMOR_SHIELD", "ARMOR_WRIST", "ARMOR_FOOTS",
  102.                 "ARMOR_NECK", "ARMOR_EAR", "ARMOR_NUM_TYPES"};
  103.     string arSub3[] = { "USE_POTION", "USE_TALISMAN", "USE_TUNING", "USE_MOVE", "USE_TREASURE_BOX", "USE_MONEYBAG", "USE_BAIT",
  104.                 "USE_ABILITY_UP", "USE_AFFECT", "USE_CREATE_STONE", "USE_SPECIAL", "USE_POTION_NODELAY", "USE_CLEAR",
  105.                 "USE_INVISIBILITY", "USE_DETACHMENT", "USE_BUCKET", "USE_POTION_CONTINUE", "USE_CLEAN_SOCKET",
  106.                 "USE_CHANGE_ATTRIBUTE", "USE_ADD_ATTRIBUTE", "USE_ADD_ACCESSORY_SOCKET", "USE_PUT_INTO_ACCESSORY_SOCKET",
  107.                 "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"};
  108.     string arSub4[] = { "AUTOUSE_POTION", "AUTOUSE_ABILITY_UP", "AUTOUSE_BOMB", "AUTOUSE_GOLD", "AUTOUSE_MONEYBAG", "AUTOUSE_TREASURE_BOX"};
  109.     string arSub5[] = { "MATERIAL_LEATHER", "MATERIAL_BLOOD", "MATERIAL_ROOT", "MATERIAL_NEEDLE", "MATERIAL_JEWEL",
  110.         "MATERIAL_DS_REFINE_NORMAL", "MATERIAL_DS_REFINE_BLESSED", "MATERIAL_DS_REFINE_HOLLY"};
  111.     string arSub6[] = { "SPECIAL_MAP", "SPECIAL_KEY", "SPECIAL_DOC", "SPECIAL_SPIRIT"};
  112.     string arSub7[] = { "TOOL_FISHING_ROD" };
  113.     string arSub8[] = { "LOTTERY_TICKET", "LOTTERY_INSTANT" };
  114.     string arSub10[] = { "METIN_NORMAL", "METIN_GOLD" };
  115.     string arSub12[] = { "FISH_ALIVE", "FISH_DEAD"};
  116.     string arSub14[] = { "RESOURCE_FISHBONE", "RESOURCE_WATERSTONEPIECE", "RESOURCE_WATERSTONE", "RESOURCE_BLOOD_PEARL",
  117.                         "RESOURCE_BLUE_PEARL", "RESOURCE_WHITE_PEARL", "RESOURCE_BUCKET", "RESOURCE_CRYSTAL", "RESOURCE_GEM",
  118.                         "RESOURCE_STONE", "RESOURCE_METIN", "RESOURCE_ORE" };
  119.     string arSub16[] = { "UNIQUE_NONE", "UNIQUE_BOOK", "UNIQUE_SPECIAL_RIDE", "UNIQUE_3", "UNIQUE_4", "UNIQUE_5",
  120.                     "UNIQUE_6", "UNIQUE_7", "UNIQUE_8", "UNIQUE_9", "USE_SPECIAL"};
  121.     string arSub28[] = { "COSTUME_BODY", "COSTUME_HAIR" };
  122.     string arSub29[] = { "DS_SLOT1", "DS_SLOT2", "DS_SLOT3", "DS_SLOT4", "DS_SLOT5", "DS_SLOT6" };
  123.     string arSub31[] = { "EXTRACT_DRAGON_SOUL", "EXTRACT_DRAGON_HEART" };
  124.  
  125.    
  126.     string* arSubType[] = {0,   //0
  127.         arSub1,     //1
  128.         arSub2, //2
  129.         arSub3, //3
  130.         arSub4, //4
  131.         arSub5, //5
  132.         arSub6, //6
  133.         arSub7, //7
  134.         arSub8, //8
  135.         0,          //9
  136.         arSub10,    //10
  137.         0,          //11
  138.         arSub12,    //12
  139.         0,          //13
  140.         arSub14,    //14
  141.         0,          //15
  142.         arSub16,    //16
  143.         0,          //17
  144.         0,          //18
  145.         0,          //19
  146.         0,          //20
  147.         0,          //21
  148.         0,          //22
  149.         0,          //23
  150.         0,          //24
  151.         0,          //25
  152.         0,          //26
  153.         0,          //27
  154.         arSub28,    //28
  155.         arSub29,        //29
  156.         arSub29,    //30
  157.         arSub31,    //31
  158.         };
  159.     int arNumberOfSubtype[32];
  160.     arNumberOfSubtype[0] = 0;
  161.     arNumberOfSubtype[1] = sizeof(arSub1)/sizeof(arSub1[0]);
  162.     arNumberOfSubtype[2] = sizeof(arSub2)/sizeof(arSub2[0]);
  163.     arNumberOfSubtype[3] = sizeof(arSub3)/sizeof(arSub3[0]);
  164.     arNumberOfSubtype[4] = sizeof(arSub4)/sizeof(arSub4[0]);
  165.     arNumberOfSubtype[5] = sizeof(arSub5)/sizeof(arSub5[0]);
  166.     arNumberOfSubtype[6] = sizeof(arSub6)/sizeof(arSub6[0]);
  167.     arNumberOfSubtype[7] = sizeof(arSub7)/sizeof(arSub7[0]);
  168.     arNumberOfSubtype[8] = sizeof(arSub8)/sizeof(arSub8[0]);
  169.     arNumberOfSubtype[9] = 0;
  170.     arNumberOfSubtype[10] = sizeof(arSub10)/sizeof(arSub10[0]);
  171.     arNumberOfSubtype[11] = 0;
  172.     arNumberOfSubtype[12] = sizeof(arSub12)/sizeof(arSub12[0]);
  173.     arNumberOfSubtype[13] = 0;
  174.     arNumberOfSubtype[14] = sizeof(arSub14)/sizeof(arSub14[0]);
  175.     arNumberOfSubtype[15] = 0;
  176.     arNumberOfSubtype[16] = sizeof(arSub16)/sizeof(arSub16[0]);
  177.     arNumberOfSubtype[17] = 0;
  178.     arNumberOfSubtype[18] = 0;
  179.     arNumberOfSubtype[19] = 0;
  180.     arNumberOfSubtype[20] = 0;
  181.     arNumberOfSubtype[21] = 0;
  182.     arNumberOfSubtype[22] = 0;
  183.     arNumberOfSubtype[23] = 0;
  184.     arNumberOfSubtype[24] = 0;
  185.     arNumberOfSubtype[25] = 0;
  186.     arNumberOfSubtype[26] = 0;
  187.     arNumberOfSubtype[27] = 0;
  188.     arNumberOfSubtype[28] = sizeof(arSub28)/sizeof(arSub28[0]);
  189.     arNumberOfSubtype[29] = sizeof(arSub29)/sizeof(arSub29[0]);
  190.     arNumberOfSubtype[30] = sizeof(arSub29)/sizeof(arSub29[0]);
  191.     arNumberOfSubtype[31] = sizeof(arSub31)/sizeof(arSub31[0]);
  192.    
  193.  
  194.     //ľĆŔĚĹŰ Ĺ¸ŔÔŔÇ Ľ­şęŸŔÔ ľî·ąŔĚ°ˇ Á¸ŔçÇĎ´ÂÁö ľËľĆş¸°í, ľřŔ¸¸é 0 ¸®ĹĎ
  195.     if (arSubType[type_value]==0) {
  196.         return 0;
  197.     }
  198.     //
  199.  
  200.     int retInt = -1;
  201.     //cout << "SubType : " << subTypeStr << " -> ";
  202.     for (int j=0;j<arNumberOfSubtype[type_value];j++) {
  203.         string tempString = arSubType[type_value][j];
  204.         string tempInputString = trim(inputString);
  205.         if  (tempInputString.compare(tempString)==0)
  206.         {
  207.             //cout << j << " ";
  208.             retInt =  j;
  209.             break;
  210.         }
  211.     }
  212.     //cout << endl;
  213.  
  214.     return retInt;
  215. }
  216.  
  217.  
  218.  
  219.  
  220.  
  221. int get_Item_AntiFlag_Value(string inputString)
  222. {
  223.  
  224.     string arAntiFlag[] = {"ANTI_FEMALE", "ANTI_MALE", "ANTI_MUSA", "ANTI_ASSASSIN", "ANTI_SURA", "ANTI_MUDANG",
  225.                             "ANTI_GET", "ANTI_DROP", "ANTI_SELL", "ANTI_EMPIRE_A", "ANTI_EMPIRE_B", "ANTI_EMPIRE_C",
  226.                             "ANTI_SAVE", "ANTI_GIVE", "ANTI_PKDROP", "ANTI_STACK", "ANTI_MYSHOP", "ANTI_SAFEBOX"};
  227.  
  228.  
  229.     int retValue = 0;
  230.     string* arInputString = StringSplit(inputString, "|");              //ÇÁ·ÎĹä Á¤ş¸ ł»żëŔ» ´Üľîş°·Î ÂÉ°µ ąčż­.
  231.     for(int i =0;i<sizeof(arAntiFlag)/sizeof(arAntiFlag[0]);i++) {
  232.         string tempString = arAntiFlag[i];
  233.         for (int j=0; j<30 ; j++)       //ĂÖ´ë 30°ł ´Üľî±îÁö. (ÇϵĺÄÚµů)
  234.         {
  235.             string tempString2 = arInputString[j];
  236.             if (tempString2.compare(tempString)==0) {               //ŔĎġÇĎ´ÂÁö Č®ŔÎ.
  237.                 retValue = retValue + pow((float)2,(float)i);
  238.             }
  239.            
  240.             if(tempString2.compare("") == 0)
  241.                 break;
  242.         }
  243.     }
  244.     delete []arInputString;
  245.     //cout << "AntiFlag : " << antiFlagStr << " -> " << retValue << endl;
  246.  
  247.     return retValue;
  248. }
  249.  
  250. int get_Item_Flag_Value(string inputString)
  251. {
  252.  
  253.     string arFlag[] = {"ITEM_TUNABLE", "ITEM_SAVE", "ITEM_STACKABLE", "COUNT_PER_1GOLD", "ITEM_SLOW_QUERY", "ITEM_UNIQUE",
  254.             "ITEM_MAKECOUNT", "ITEM_IRREMOVABLE", "CONFIRM_WHEN_USE", "QUEST_USE", "QUEST_USE_MULTIPLE",
  255.             "QUEST_GIVE", "ITEM_QUEST", "LOG", "STACKABLE", "SLOW_QUERY", "REFINEABLE", "IRREMOVABLE", "ITEM_APPLICABLE"};
  256.  
  257.  
  258.     int retValue = 0;
  259.     string* arInputString = StringSplit(inputString, "|");              //ÇÁ·ÎĹä Á¤ş¸ ł»żëŔ» ´Üľîş°·Î ÂÉ°µ ąčż­.
  260.     for(int i =0;i<sizeof(arFlag)/sizeof(arFlag[0]);i++) {
  261.         string tempString = arFlag[i];
  262.         for (int j=0; j<30 ; j++)       //ĂÖ´ë 30°ł ´Üľî±îÁö. (ÇϵĺÄÚµů)
  263.         {
  264.             string tempString2 = arInputString[j];
  265.             if (tempString2.compare(tempString)==0) {               //ŔĎġÇĎ´ÂÁö Č®ŔÎ.
  266.                 retValue = retValue + pow((float)2,(float)i);
  267.             }
  268.            
  269.             if(tempString2.compare("") == 0)
  270.                 break;
  271.         }
  272.     }
  273.     delete []arInputString;
  274.     //cout << "Flag : " << flagStr << " -> " << retValue << endl;
  275.  
  276.     return retValue;
  277. }
  278.  
  279. int get_Item_WearFlag_Value(string inputString)
  280. {
  281.  
  282.     string arWearrFlag[] = {"WEAR_BODY", "WEAR_HEAD", "WEAR_FOOTS", "WEAR_WRIST", "WEAR_WEAPON", "WEAR_NECK", "WEAR_EAR", "WEAR_SHIELD", "WEAR_UNIQUE",
  283.                     "WEAR_ARROW", "WEAR_HAIR", "WEAR_ABILITY"};
  284.  
  285.  
  286.     int retValue = 0;
  287.     string* arInputString = StringSplit(inputString, "|");              //ÇÁ·ÎĹä Á¤ş¸ ł»żëŔ» ´Üľîş°·Î ÂÉ°µ ąčż­.
  288.     for(int i =0;i<sizeof(arWearrFlag)/sizeof(arWearrFlag[0]);i++) {
  289.         string tempString = arWearrFlag[i];
  290.         for (int j=0; j<30 ; j++)       //ĂÖ´ë 30°ł ´Üľî±îÁö. (ÇϵĺÄÚµů)
  291.         {
  292.             string tempString2 = arInputString[j];
  293.             if (tempString2.compare(tempString)==0) {               //ŔĎġÇĎ´ÂÁö Č®ŔÎ.
  294.                 retValue = retValue + pow((float)2,(float)i);
  295.             }
  296.            
  297.             if(tempString2.compare("") == 0)
  298.                 break;
  299.         }
  300.     }
  301.     delete []arInputString;
  302.     //cout << "WearFlag : " << wearFlagStr << " -> " << retValue << endl;
  303.  
  304.     return retValue;
  305. }
  306.  
  307. int get_Item_Immune_Value(string inputString)
  308. {
  309.  
  310.     string arImmune[] = {"PARA","CURSE","STUN","SLEEP","SLOW","POISON","TERROR"};
  311.  
  312.     int retValue = 0;
  313.     string* arInputString = StringSplit(inputString, "|");              //ÇÁ·ÎĹä Á¤ş¸ ł»żëŔ» ´Üľîş°·Î ÂÉ°µ ąčż­.
  314.     for(int i =0;i<sizeof(arImmune)/sizeof(arImmune[0]);i++) {
  315.         string tempString = arImmune[i];
  316.         for (int j=0; j<30 ; j++)       //ĂÖ´ë 30°ł ´Üľî±îÁö. (ÇϵĺÄÚµů)
  317.         {
  318.             string tempString2 = arInputString[j];
  319.             if (tempString2.compare(tempString)==0) {               //ŔĎġÇĎ´ÂÁö Č®ŔÎ.
  320.                 retValue = retValue + pow((float)2,(float)i);
  321.             }
  322.            
  323.             if(tempString2.compare("") == 0)
  324.                 break;
  325.         }
  326.     }
  327.     delete []arInputString;
  328.     //cout << "Immune : " << immuneStr << " -> " << retValue << endl;
  329.  
  330.     return retValue;
  331. }
  332.  
  333.  
  334.  
  335.  
  336. int get_Item_LimitType_Value(string inputString)
  337. {
  338.     string arLimitType[] = {"LIMIT_NONE", "LEVEL", "STR", "DEX", "INT", "CON", "PC_BANG", "REAL_TIME", "REAL_TIME_FIRST_USE", "TIMER_BASED_ON_WEAR"};
  339.    
  340.     int retInt = -1;
  341.     //cout << "LimitType : " << limitTypeStr << " -> ";
  342.     for (int j=0;j<sizeof(arLimitType)/sizeof(arLimitType[0]);j++) {
  343.         string tempString = arLimitType[j];
  344.         string tempInputString = trim(inputString);
  345.         if  (tempInputString.compare(tempString)==0)
  346.         {
  347.             //cout << j << " ";
  348.             retInt =  j;
  349.             break;
  350.         }
  351.     }
  352.     //cout << endl;
  353.  
  354.     return retInt;
  355. }
  356.  
  357.  
  358. int get_Item_ApplyType_Value(string inputString)
  359. {
  360.     string arApplyType[] = {"APPLY_NONE", "APPLY_MAX_HP", "APPLY_MAX_SP", "APPLY_CON", "APPLY_INT", "APPLY_STR", "APPLY_DEX", "APPLY_ATT_SPEED",
  361.             "APPLY_MOV_SPEED", "APPLY_CAST_SPEED", "APPLY_HP_REGEN", "APPLY_SP_REGEN", "APPLY_POISON_PCT", "APPLY_STUN_PCT",
  362.             "APPLY_SLOW_PCT", "APPLY_CRITICAL_PCT", "APPLY_PENETRATE_PCT", "APPLY_ATTBONUS_HUMAN", "APPLY_ATTBONUS_ANIMAL",
  363.             "APPLY_ATTBONUS_ORC", "APPLY_ATTBONUS_MILGYO", "APPLY_ATTBONUS_UNDEAD", "APPLY_ATTBONUS_DEVIL", "APPLY_STEAL_HP",
  364.             "APPLY_STEAL_SP", "APPLY_MANA_BURN_PCT", "APPLY_DAMAGE_SP_RECOVER", "APPLY_BLOCK", "APPLY_DODGE", "APPLY_RESIST_SWORD",
  365.             "APPLY_RESIST_TWOHAND", "APPLY_RESIST_DAGGER", "APPLY_RESIST_BELL", "APPLY_RESIST_FAN", "APPLY_RESIST_BOW", "APPLY_RESIST_FIRE",
  366.             "APPLY_RESIST_ELEC", "APPLY_RESIST_MAGIC", "APPLY_RESIST_WIND", "APPLY_REFLECT_MELEE", "APPLY_REFLECT_CURSE", "APPLY_POISON_REDUCE",
  367.             "APPLY_KILL_SP_RECOVER", "APPLY_EXP_DOUBLE_BONUS", "APPLY_GOLD_DOUBLE_BONUS", "APPLY_ITEM_DROP_BONUS", "APPLY_POTION_BONUS",
  368.             "APPLY_KILL_HP_RECOVER", "APPLY_IMMUNE_STUN", "APPLY_IMMUNE_SLOW", "APPLY_IMMUNE_FALL", "APPLY_SKILL", "APPLY_BOW_DISTANCE",
  369.             "APPLY_ATT_GRADE_BONUS", "APPLY_DEF_GRADE_BONUS", "APPLY_MAGIC_ATT_GRADE", "APPLY_MAGIC_DEF_GRADE", "APPLY_CURSE_PCT",
  370.             "APPLY_MAX_STAMINA", "APPLY_ATTBONUS_WARRIOR", "APPLY_ATTBONUS_ASSASSIN", "APPLY_ATTBONUS_SURA", "APPLY_ATTBONUS_SHAMAN",
  371.             "APPLY_ATTBONUS_MONSTER", "APPLY_MALL_ATTBONUS", "APPLY_MALL_DEFBONUS", "APPLY_MALL_EXPBONUS", "APPLY_MALL_ITEMBONUS",
  372.             "APPLY_MALL_GOLDBONUS", "APPLY_MAX_HP_PCT", "APPLY_MAX_SP_PCT", "APPLY_SKILL_DAMAGE_BONUS", "APPLY_NORMAL_HIT_DAMAGE_BONUS",
  373.             "APPLY_SKILL_DEFEND_BONUS", "APPLY_NORMAL_HIT_DEFEND_BONUS", "APPLY_PC_BANG_EXP_BONUS", "APPLY_PC_BANG_DROP_BONUS",
  374.             "APPLY_EXTRACT_HP_PCT", "APPLY_RESIST_WARRIOR", "APPLY_RESIST_ASSASSIN", "APPLY_RESIST_SURA", "APPLY_RESIST_SHAMAN",
  375.             "APPLY_ENERGY", "APPLY_DEF_GRADE", "APPLY_COSTUME_ATTR_BONUS", "APPLY_MAGIC_ATTBONUS_PER", "APPLY_MELEE_MAGIC_ATTBONUS_PER",
  376.             "APPLY_RESIST_ICE", "APPLY_RESIST_EARTH", "APPLY_RESIST_DARK", "APPLY_ANTI_CRITICAL_PCT", "APPLY_ANTI_PENETRATE_PCT",
  377.     };
  378.  
  379.     int retInt = -1;
  380.     //cout << "ApplyType : " << applyTypeStr << " -> ";
  381.     for (int j=0;j<sizeof(arApplyType)/sizeof(arApplyType[0]);j++) {
  382.         string tempString = arApplyType[j];
  383.         string tempInputString = trim(inputString);
  384.         if  (tempInputString.compare(tempString)==0)
  385.         {
  386.             //cout << j << " ";
  387.             retInt =  j;
  388.             break;
  389.         }
  390.     }
  391.     //cout << endl;
  392.  
  393.     return retInt;
  394.  
  395. }
  396.  
  397.  
  398. //¸ó˝şĹÍ ÇÁ·ÎĹäµµ Ŕд´Ů.
  399.  
  400.  
  401. int get_Mob_Rank_Value(string inputString)
  402. {
  403.     string arRank[] = {"PAWN", "S_PAWN", "KNIGHT", "S_KNIGHT", "BOSS", "KING"};
  404.  
  405.     int retInt = -1;
  406.     //cout << "Rank : " << rankStr << " -> ";
  407.     for (int j=0;j<sizeof(arRank)/sizeof(arRank[0]);j++) {
  408.         string tempString = arRank[j];
  409.         string tempInputString = trim(inputString);
  410.         if  (tempInputString.compare(tempString)==0)
  411.         {
  412.             //cout << j << " ";
  413.             retInt =  j;
  414.             break;
  415.         }
  416.     }
  417.     //cout << endl;
  418.  
  419.     return retInt;
  420. }
  421.  
  422.  
  423. int get_Mob_Type_Value(string inputString)
  424. {
  425.     string arType[] = { "MONSTER", "NPC", "STONE", "WARP", "DOOR", "BUILDING", "PC", "POLYMORPH_PC", "HORSE", "GOTO"};
  426.  
  427.     int retInt = -1;
  428.     //cout << "Type : " << typeStr << " -> ";
  429.     for (int j=0;j<sizeof(arType)/sizeof(arType[0]);j++) {
  430.         string tempString = arType[j];
  431.         string tempInputString = trim(inputString);
  432.         if  (tempInputString.compare(tempString)==0)
  433.         {
  434.             //cout << j << " ";
  435.             retInt =  j;
  436.             break;
  437.         }
  438.     }
  439.     //cout << endl;
  440.  
  441.     return retInt;
  442. }
  443.  
  444. int get_Mob_BattleType_Value(string inputString)
  445. {
  446.     string arBattleType[] = { "MELEE", "RANGE", "MAGIC", "SPECIAL", "POWER", "TANKER", "SUPER_POWER", "SUPER_TANKER"};
  447.  
  448.     int retInt = -1;
  449.     //cout << "Battle Type : " << battleTypeStr << " -> ";
  450.     for (int j=0;j<sizeof(arBattleType)/sizeof(arBattleType[0]);j++) {
  451.         string tempString = arBattleType[j];
  452.         string tempInputString = trim(inputString);
  453.         if  (tempInputString.compare(tempString)==0)
  454.         {
  455.             //cout << j << " ";
  456.             retInt =  j;
  457.             break;
  458.         }
  459.     }
  460.     //cout << endl;
  461.  
  462.     return retInt;
  463. }
  464.  
  465. int get_Mob_Size_Value(string inputString)
  466. {
  467.     string arSize[] = { "SAMLL", "MEDIUM", "BIG"};
  468.  
  469.     int retInt = 0;
  470.     //cout << "Size : " << sizeStr << " -> ";
  471.     for (int j=0;j<sizeof(arSize)/sizeof(arSize[0]);j++) {
  472.         string tempString = arSize[j];
  473.         string tempInputString = trim(inputString);
  474.         if  (tempInputString.compare(tempString)==0)
  475.         {
  476.             //cout << j << " ";
  477.             retInt =  j + 1;
  478.             break;
  479.         }
  480.     }
  481.     //cout << endl;
  482.  
  483.     return retInt;
  484. }
  485.  
  486. int get_Mob_AIFlag_Value(string inputString)
  487. {
  488.     string arAIFlag[] = {"AGGR","NOMOVE","COWARD","NOATTSHINSU","NOATTCHUNJO","NOATTJINNO","ATTMOB","BERSERK","STONESKIN","GODSPEED","DEATHBLOW","REVIVE"};
  489.  
  490.  
  491.     int retValue = 0;
  492.     string* arInputString = StringSplit(inputString, ",");              //ÇÁ·ÎĹä Á¤ş¸ ł»żëŔ» ´Üľîş°·Î ÂÉ°µ ąčż­.
  493.     for(int i =0;i<sizeof(arAIFlag)/sizeof(arAIFlag[0]);i++) {
  494.         string tempString = arAIFlag[i];
  495.         for (int j=0; j<30 ; j++)       //ĂÖ´ë 30°ł ´Üľî±îÁö. (ÇϵĺÄÚµů)
  496.         {
  497.             string tempString2 = arInputString[j];
  498.             if (tempString2.compare(tempString)==0) {               //ŔĎġÇĎ´ÂÁö Č®ŔÎ.
  499.                 retValue = retValue + pow((float)2,(float)i);
  500.             }
  501.            
  502.             if(tempString2.compare("") == 0)
  503.                 break;
  504.         }
  505.     }
  506.     delete []arInputString;
  507.     //cout << "AIFlag : " << aiFlagStr << " -> " << retValue << endl;
  508.  
  509.     return retValue;
  510. }
  511. int get_Mob_RaceFlag_Value(string inputString)
  512. {
  513.     string arRaceFlag[] = {"ANIMAL","UNDEAD","DEVIL","HUMAN","ORC","MILGYO","INSECT","FIRE","ICE","DESERT","TREE",
  514.         "ATT_ELEC","ATT_FIRE","ATT_ICE","ATT_WIND","ATT_EARTH","ATT_DARK"};
  515.  
  516.     int retValue = 0;
  517.     string* arInputString = StringSplit(inputString, "|");              //ÇÁ·ÎĹä Á¤ş¸ ł»żëŔ» ´Üľîş°·Î ÂÉ°µ ąčż­.
  518.     for(int i =0;i<sizeof(arRaceFlag)/sizeof(arRaceFlag[0]);i++) {
  519.         string tempString = arRaceFlag[i];
  520.         for (int j=0; j<30 ; j++)       //ĂÖ´ë 30°ł ´Üľî±îÁö. (ÇϵĺÄÚµů)
  521.         {
  522.             string tempString2 = arInputString[j];
  523.             if (tempString2.compare(tempString)==0) {               //ŔĎġÇĎ´ÂÁö Č®ŔÎ.
  524.                 retValue = retValue + pow((float)2,(float)i);
  525.             }
  526.            
  527.             if(tempString2.compare("") == 0)
  528.                 break;
  529.         }
  530.     }
  531.     delete []arInputString;
  532.     //cout << "Race Flag : " << raceFlagStr << " -> " << retValue << endl;
  533.  
  534.     return retValue;
  535. }
  536. int get_Mob_ImmuneFlag_Value(string inputString)
  537. {
  538.     string arImmuneFlag[] = {"STUN","SLOW","FALL","CURSE","POISON","TERROR"};
  539.  
  540.     int retValue = 0;
  541.     string* arInputString = StringSplit(inputString, ",");              //ÇÁ·ÎĹä Á¤ş¸ ł»żëŔ» ´Üľîş°·Î ÂÉ°µ ąčż­.
  542.     for(int i =0;i<sizeof(arImmuneFlag)/sizeof(arImmuneFlag[0]);i++) {
  543.         string tempString = arImmuneFlag[i];
  544.         for (int j=0; j<30 ; j++)       //ĂÖ´ë 30°ł ´Üľî±îÁö. (ÇϵĺÄÚµů)
  545.         {
  546.             string tempString2 = arInputString[j];
  547.             if (tempString2.compare(tempString)==0) {               //ŔĎġÇĎ´ÂÁö Č®ŔÎ.
  548.                 retValue = retValue + pow((float)2,(float)i);
  549.             }
  550.            
  551.             if(tempString2.compare("") == 0)
  552.                 break;
  553.         }
  554.     }
  555.     delete []arInputString;
  556.     //cout << "Immune Flag : " << immuneFlagStr << " -> " << retValue << endl;
  557.  
  558.  
  559.     return retValue;
  560. }
  561.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement