1. ## ERİC BLOODAXE ##
  2. Game-Db Source/Server/db/src/ClientManagerBoot.cpp
  3. gir ve arat;
  4. if (!MirrorMobTableIntoDB())
  5. {
  6. sys_err("MirrorMobTableIntoDB FAILED");
  7. return false;
  8. }
  9. if (!MirrorItemTableIntoDB())
  10. {
  11. sys_err("MirrorItemTableIntoDB FAILED");
  12. return false;
  13. }
  14. değiştir;
  15. /*if (!MirrorMobTableIntoDB())
  16. {
  17. sys_err("MirrorMobTableIntoDB FAILED");
  18. return false;
  19. }*/
  20. /*if (!MirrorItemTableIntoDB())
  21. {
  22. sys_err("MirrorItemTableIntoDB FAILED");
  23. return false;
  24. }*/
  25. tekrar arat;
  26. bool CClientManager::InitializeMobTable()
  27. fonksiyonu komple değiştir;
  28. bool CClientManager::InitializeMobTable()
  29. {
  30. char query[2048];
  31. fprintf(stderr,"Loading mob_proto from MySQL ");
  32. snprintf(query, sizeof(query),
  33. "SELECT vnum,name,%s,rank,type,battle_type,level,size,ai_flag,mount_capacity,setRaceFlag,setImmuneFlag,"
  34. "empire,folder,on_click,st,dx,ht,iq,damage_min,damage_max,max_hp,regen_cycle,regen_percent,gold_min,"
  35. "gold_max,exp,def,attack_speed,move_speed,aggressive_hp_pct,aggressive_sight,attack_range,drop_item,"
  36. "resurrection_vnum,enchant_curse,enchant_slow,enchant_poison,enchant_stun,enchant_critical,enchant_penetrate,"
  37. "resist_sword,resist_twohand,resist_dagger,resist_bell,resist_fan,resist_bow,resist_fire,resist_elect,"
  38. "resist_magic,resist_wind,resist_poison,dam_multiply,summon,drain_sp,mob_color,polymorph_item,skill_level0,"
  39. "skill_vnum0,skill_level1,skill_vnum1,sp_berserk,sp_stoneskin,sp_godspeed,sp_deathblow,sp_revive,skill_level2,"
  40. "skill_vnum2,skill_level3,skill_vnum3,skill_level4,skill_vnum4 FROM mob_proto%s"
  41. ,g_stLocaleNameColumn.c_str(),
  42. GetTablePostfix());
  43. std::unique_ptr<SQLMsg> pkMsg(CDBManager::instance().DirectQuery(query));
  44. SQLResult * pRes = pkMsg->Get();
  45. if (!pRes->uiNumRows)
  46. return false;
  47. if (!m_vec_mobTable.empty())
  48. {
  49. sys_log(0, "RELOAD: mob_proto");
  50. m_vec_mobTable.clear();
  51. }
  52. int size = pRes->uiNumRows;
  53. m_vec_mobTable.resize(size);
  54. memset(&m_vec_mobTable[0], 0, sizeof(TMobTable) * m_vec_mobTable.size());
  55. TMobTable * mob_table = &m_vec_mobTable[0];
  56. MYSQL_ROW data;
  57. //return true;
  58. set<int> vnumSet;
  59. while ((data = mysql_fetch_row(pRes->pSQLResult)))
  60. {
  61. /*
  62. "SELECT vnum,name,locale_name,rank,type,battle_type,level,size,ai_flag,mount_capacity,setRaceFlag,setImmuneFlag,"
  63. "empire,folder,on_click,st,dx,ht,iq,damage_min,damage_max,max_hp,regen_cycle,regen_percent,gold_min,"
  64. "gold_max,exp,def,attack_speed,move_speed,aggressive_hp_pct,aggressive_sight,attack_range,drop_item,"
  65. "resurrection_vnum,enchant_curse,enchant_slow,enchant_poison,enchant_stun,enchant_critical,enchant_penetrate,"
  66. "resist_sword,resist_twohand,resist_dagger,resist_bell,resist_fan,resist_bow,resist_fire,resist_elect,"
  67. "resist_magic,resist_wind,resist_poison,dam_multiply,summon,drain_sp,mob_color,polymorph_item,skill_level0,"
  68. "skill_vnum0,skill_level1,skill_vnum1,sp_berserk,sp_stoneskin,sp_godspeed,sp_deathblow,sp_revive,skill_level2,"
  69. "skill_vnum2,skill_level3,skill_vnum3,skill_level4,skill_vnum4 FROM mob_proto%s */
  70. int col = 0;
  71. str_to_number(mob_table->dwVnum, data[col++]);
  72. if(mob_table->dwVnum ==0) continue;
  73. strlcpy(mob_table->szName,data[col++] , sizeof(mob_table->szName));
  74. strlcpy(mob_table->szLocaleName, data[col++], sizeof(mob_table->szLocaleName));
  75. str_to_number(mob_table->bRank,data[col++]);
  76. str_to_number(mob_table->bType,data[col++]);
  77. str_to_number(mob_table->bBattleType,data[col++]);
  78. str_to_number(mob_table->bLevel,data[col++]);
  79. str_to_number(mob_table->bSize,data[col++]);
  80. //AI_FLAG
  81. mob_table->dwAIFlag = get_Mob_AIFlag_Value(data[col++]);
  82. //mount_capacity;
  83. col++;
  84. //RACE_FLAG
  85. mob_table->dwRaceFlag = get_Mob_RaceFlag_Value(data[col++]);
  86. //IMMUNE_FLAG
  87. mob_table->dwImmuneFlag = get_Mob_ImmuneFlag_Value(data[col++]);
  88. mob_table->bEmpire = atoi(data[col++]);
  89. strlcpy(mob_table->szFolder, data[col++], sizeof(mob_table->szFolder));
  90. mob_table->bOnClickType = atoi(data[col++]);
  91. mob_table->bStr = atoi(data[col++]);
  92. mob_table->bDex = atoi(data[col++]);
  93. mob_table->bCon = atoi(data[col++]);
  94. mob_table->bInt = atoi(data[col++]);
  95. mob_table->dwDamageRange[0] = atoi(data[col++]);
  96. mob_table->dwDamageRange[1] = atoi(data[col++]);
  97. mob_table->dwMaxHP = atoi(data[col++]);
  98. mob_table->bRegenCycle = atoi(data[col++]);
  99. mob_table->bRegenPercent = atoi(data[col++]);
  100. mob_table->dwGoldMin = atoi(data[col++]);
  101. mob_table->dwGoldMax = atoi(data[col++]);
  102. mob_table->dwExp = atoi(data[col++]);
  103. mob_table->wDef = atoi(data[col++]);
  104. mob_table->sAttackSpeed = atoi(data[col++]);
  105. mob_table->sMovingSpeed = atoi(data[col++]);
  106. mob_table->bAggresiveHPPct = atoi(data[col++]);
  107. mob_table->wAggressiveSight = atoi(data[col++]);
  108. mob_table->wAttackRange = atoi(data[col++]);
  109. str_to_number(mob_table->dwDropItemVnum, data[col++]); //32
  110. str_to_number(mob_table->dwResurrectionVnum, data[col++]);
  111. for (int i = 0; i < MOB_ENCHANTS_MAX_NUM; ++i)
  112. str_to_number(mob_table->cEnchants[i], data[col++]);
  113. for (int i = 0; i < MOB_RESISTS_MAX_NUM; ++i)
  114. str_to_number(mob_table->cResists[i], data[col++]);
  115. str_to_number(mob_table->fDamMultiply, data[col++]);
  116. str_to_number(mob_table->dwSummonVnum, data[col++]);
  117. str_to_number(mob_table->dwDrainSP, data[col++]);
  118. //Mob_Color
  119. ++col;
  120. str_to_number(mob_table->dwPolymorphItemVnum, data[col++]);
  121. str_to_number(mob_table->Skills[0].bLevel, data[col++]);
  122. str_to_number(mob_table->Skills[0].dwVnum, data[col++]);
  123. str_to_number(mob_table->Skills[1].bLevel, data[col++]);
  124. str_to_number(mob_table->Skills[1].dwVnum, data[col++]);
  125. str_to_number(mob_table->Skills[2].bLevel, data[col++]);
  126. str_to_number(mob_table->Skills[2].dwVnum, data[col++]);
  127. str_to_number(mob_table->Skills[3].bLevel, data[col++]);
  128. str_to_number(mob_table->Skills[3].dwVnum, data[col++]);
  129. str_to_number(mob_table->Skills[4].bLevel, data[col++]);
  130. str_to_number(mob_table->Skills[4].dwVnum, data[col++]);
  131. str_to_number(mob_table->bBerserkPoint, data[col++]);
  132. str_to_number(mob_table->bStoneSkinPoint, data[col++]);
  133. str_to_number(mob_table->bGodSpeedPoint, data[col++]);
  134. str_to_number(mob_table->bDeathBlowPoint, data[col++]);
  135. str_to_number(mob_table->bRevivePoint, data[col++]);
  136. //LÂz^ vnum Aß°^
  137. vnumSet.insert(mob_table->dwVnum);
  138. //fprintf(stderr, "MOB #%d %s %s level: %u rank: %u empire: %d\n", mob_table->dwVnum, mob_table->szName, mob_table->szLocaleName, mob_table->bLevel, mob_table->bRank, mob_table->bEmpire);
  139. sys_log(0, "MOB #%-5d %-24s %-24s level: %-3u rank: %u empire: %d", mob_table->dwVnum, mob_table->szName, mob_table->szLocaleName, mob_table->bLevel, mob_table->bRank, mob_table->bEmpire);
  140. ++mob_table;
  141. }
  142. fprintf(stderr," Complete! %d/%d Mobs loaded.\r\n",size,vnumSet.size());
  143. sort(m_vec_mobTable.begin(), m_vec_mobTable.end(), FCompareVnum());
  144. return true;
  145. }
  146. tekrar arat;
  147. bool CClientManager::InitializeItemTable()
  148. fonksiyonu komple değiştir ve derle;
  149. bool CClientManager::InitializeItemTable()
  150. {
  151. char query[2048];
  152. fprintf(stderr,"Loading item_proto from MySQL");
  153. snprintf(query, sizeof(query),
  154. "SELECT vnum,name,%s,type,subtype,weight,size,antiflag,flag,wearflag,immuneflag+0,gold,shop_buy_price,refined_vnum,"
  155. "refine_set,magic_pct,limittype0,limitvalue0,limittype1,limitvalue1,applytype0,applyvalue0,"
  156. "applytype1,applyvalue1,applytype2,applyvalue2,value0,value1,value2,value3,value4,value5,socket_pct,addon_type FROM item_proto%s ORDER BY vnum",
  157. g_stLocaleNameColumn.c_str(),
  158. GetTablePostfix());
  159. std::unique_ptr<SQLMsg> pkMsg(CDBManager::instance().DirectQuery(query));
  160. SQLResult * pRes = pkMsg->Get();
  161. if (!pRes->uiNumRows)
  162. return false;
  163. int addNumber = pRes->uiNumRows;
  164. if (!m_vec_itemTable.empty())
  165. {
  166. sys_log(0, "RELOAD: item_proto");
  167. m_vec_itemTable.clear();
  168. m_map_itemTableByVnum.clear();
  169. }
  170. m_vec_itemTable.resize(addNumber-1);
  171. memset(&m_vec_itemTable[0], 0, sizeof(TItemTable) * m_vec_itemTable.size());
  172. TItemTable * item_table = &m_vec_itemTable[0];
  173. MYSQL_ROW data;
  174. //return true;
  175. set<int> vnumSet;
  176. while ((data = mysql_fetch_row(pRes->pSQLResult)))
  177. {
  178. str_to_number(item_table->dwVnum, data[0]);
  179. strlcpy(item_table->szName,data[1] , sizeof(item_table->szName));
  180. strlcpy(item_table->szLocaleName, data[2], sizeof(item_table->szLocaleName));
  181. str_to_number(item_table->bType, data[3]);
  182. str_to_number(item_table->bSubType, data[4]);
  183. str_to_number(item_table->bWeight, data[5]);
  184. str_to_number(item_table->bSize, data[6]);
  185. str_to_number(item_table->dwAntiFlags, data[7]);
  186. str_to_number(item_table->dwFlags, data[8]);
  187. str_to_number(item_table->dwWearFlags, data[9]);
  188. str_to_number(item_table->dwImmuneFlag, data[10]);
  189. str_to_number(item_table->dwGold, data[11]);
  190. str_to_number(item_table->dwShopBuyPrice, data[12]);
  191. str_to_number(item_table->dwRefinedVnum, data[13]);
  192. str_to_number(item_table->wRefineSet, data[14]);
  193. str_to_number(item_table->bAlterToMagicItemPct, data[15]);
  194. item_table->cLimitRealTimeFirstUseIndex = -1;
  195. item_table->cLimitTimerBasedOnWearIndex = -1;
  196. str_to_number(item_table->aLimits[0].bType, data[16]);
  197. str_to_number(item_table->aLimits[0].lValue, data[17]);
  198. if (LIMIT_REAL_TIME_START_FIRST_USE == item_table->aLimits[0].bType)
  199. item_table->cLimitRealTimeFirstUseIndex = (char)0;
  200. if (LIMIT_TIMER_BASED_ON_WEAR == item_table->aLimits[0].bType)
  201. item_table->cLimitTimerBasedOnWearIndex = (char)0;
  202. str_to_number(item_table->aLimits[1].bType, data[18]);
  203. str_to_number(item_table->aLimits[1].lValue, data[19]);
  204. if (LIMIT_REAL_TIME_START_FIRST_USE == item_table->aLimits[1].bType)
  205. item_table->cLimitRealTimeFirstUseIndex = (char)1;
  206. if (LIMIT_TIMER_BASED_ON_WEAR == item_table->aLimits[1].bType)
  207. item_table->cLimitTimerBasedOnWearIndex = (char)1;
  208. str_to_number(item_table->aApplies[0].bType, data[20]);
  209. str_to_number(item_table->aApplies[0].lValue, data[21]);
  210. str_to_number(item_table->aApplies[1].bType, data[22]);
  211. str_to_number(item_table->aApplies[1].lValue, data[23]);
  212. str_to_number(item_table->aApplies[2].bType, data[24]);
  213. str_to_number(item_table->aApplies[2].lValue, data[25]);
  214. str_to_number(item_table->alValues[0], data[26]);
  215. str_to_number(item_table->alValues[1], data[27]);
  216. str_to_number(item_table->alValues[2], data[28]);
  217. str_to_number(item_table->alValues[3], data[29]);
  218. str_to_number(item_table->alValues[4], data[30]);
  219. str_to_number(item_table->alValues[5], data[31]);
  220. str_to_number(item_table->bGainSocketPct, data[32]);
  221. str_to_number(item_table->sAddonType, data[33]);
  222. vnumSet.insert(item_table->dwVnum);
  223. m_map_itemTableByVnum.insert(std::map<DWORD, TItemTable *>::value_type(item_table->dwVnum, item_table));
  224. sys_log(0, "ITEM: #%-5lu %-24s %-24s VAL: %d %ld %d %d %d %d WEAR %d ANTI %d IMMUNE %d REFINE %lu REFINE_SET %u MAGIC_PCT %u",
  225. item_table->dwVnum,
  226. item_table->szName,
  227. item_table->szLocaleName,
  228. item_table->alValues[0],
  229. item_table->alValues[1],
  230. item_table->alValues[2],
  231. item_table->alValues[3],
  232. item_table->alValues[4],
  233. item_table->alValues[5],
  234. item_table->dwWearFlags,
  235. item_table->dwAntiFlags,
  236. item_table->dwImmuneFlag,
  237. item_table->dwRefinedVnum,
  238. item_table->wRefineSet,
  239. item_table->bAlterToMagicItemPct);
  240. item_table++;
  241. }
  242. fprintf(stderr," Complete! %d Items loaded.\r\n",addNumber);
  243. return true;
  244. }
  245. ## ERİC BLOODAXE ##