trus7

cmd.cpp

Nov 19th, 2020
447
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 31.45 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include "utils.h"
  3. #include "config.h"
  4. #include "char.h"
  5. #include "locale_service.h"
  6. #include "log.h"
  7. #include "desc.h"
  8.  
  9. ACMD(do_user_horse_ride);
  10. ACMD(do_user_horse_back);
  11. ACMD(do_user_horse_feed);
  12. #ifdef ENABLE_CHANGE_CHANNEL
  13. ACMD(do_change_channel);
  14. #endif
  15. ACMD(do_pcbang_update);
  16. ACMD(do_pcbang_check);
  17. #ifdef NEW_PET_SYSTEM
  18. ACMD(do_CubePetAdd);
  19. ACMD(do_FeedCubePet);
  20. ACMD(do_PetSkill);
  21. ACMD(do_PetEvo);
  22. ACMD(do_PetExtraBns);
  23. #endif
  24. // ADD_COMMAND_SLOW_STUN
  25. ACMD(do_slow);
  26. ACMD(do_stun);
  27. #ifdef __BATTLE_PASS__
  28. ACMD(final_reward_battlepass);
  29. ACMD(open_battlepass);
  30. #endif
  31. #ifdef ENABLE_SORT_INVENTORY
  32. ACMD(do_sort_items);
  33. ACMD(do_sort_special_storage);
  34. #endif
  35. // END_OF_ADD_COMMAND_SLOW_STUN
  36. ACMD(do_daily_reward_get_reward);
  37. ACMD(do_daily_reward_reload);
  38.  
  39. ACMD(do_warp);
  40. ACMD(do_channel_switch);
  41. ACMD(do_goto);
  42. ACMD(do_item);
  43. ACMD(do_mob);
  44. ACMD(do_mob_ld);
  45. ACMD(do_mob_aggresive);
  46. ACMD(do_mob_coward);
  47. ACMD(do_mob_map);
  48. ACMD(do_purge);
  49. ACMD(do_weaken);
  50. ACMD(do_item_purge);
  51. ACMD(do_state);
  52. ACMD(do_notice);
  53. ACMD(do_map_notice);
  54. ACMD(do_big_notice);
  55. #ifdef ENABLE_FULL_NOTICE
  56. ACMD(do_notice_test);
  57. ACMD(do_big_notice_test);
  58. ACMD(do_map_big_notice);
  59. #endif
  60. ACMD(do_who);
  61. #ifdef ENABLE_OFFLINE_SHOP_HIDE
  62. ACMD(do_show_hide_shops);
  63. #endif
  64. ACMD(do_user);
  65. ACMD(do_disconnect);
  66. ACMD(do_kill);
  67. ACMD(do_emotion_allow);
  68. ACMD(do_emotion);
  69. ACMD(do_transfer);
  70. ACMD(do_set);
  71. ACMD(do_cmd);
  72. ACMD(do_reset);
  73. ACMD(do_greset);
  74. ACMD(do_mount);
  75. ACMD(do_fishing);
  76. ACMD(do_refine_rod);
  77. #ifdef __ENABLE_BATTLE_FIELD__
  78. ACMD(do_battle_set_event);
  79. ACMD(do_battle_force_close);
  80. #endif
  81. // REFINE_PICK
  82. ACMD(do_max_pick);
  83. ACMD(do_refine_pick);
  84. #ifdef __BIOLOG_SYSTEM__
  85. ACMD(do_biolog);
  86. #endif
  87. // END_OF_REFINE_PICK
  88.  
  89. ACMD(do_fishing_simul);
  90. ACMD(do_console);
  91. ACMD(do_restart);
  92. ACMD(do_advance);
  93. ACMD(do_stat);
  94. ACMD(do_respawn);
  95. ACMD(do_skillup);
  96. ACMD(do_guildskillup);
  97. ACMD(do_pvp);
  98. ACMD(do_point_reset);
  99. ACMD(do_safebox_size);
  100. ACMD(do_safebox_close);
  101. ACMD(do_safebox_password);
  102. ACMD(do_safebox_change_password);
  103. ACMD(do_mall_password);
  104. ACMD(do_mall_close);
  105. ACMD(do_ungroup);
  106. ACMD(do_makeguild);
  107. ACMD(do_deleteguild);
  108. ACMD(do_shutdown);
  109. ACMD(do_group);
  110. ACMD(do_group_random);
  111. ACMD(do_invisibility);
  112. ACMD(do_event_flag);
  113. ACMD(do_get_event_flag);
  114. ACMD(do_private);
  115. ACMD(do_qf);
  116. ACMD(do_clear_quest);
  117. ACMD(do_book);
  118. ACMD(do_reload);
  119. ACMD(do_war);
  120. ACMD(do_nowar);
  121. ACMD(do_setskill);
  122. ACMD(do_setskillother);
  123. ACMD(do_level);
  124. ACMD(do_polymorph);
  125. ACMD(do_polymorph_item);
  126. ACMD(do_support_system);
  127. ACMD(do_support_system_d);
  128. /*
  129. ACMD(do_b1);
  130. ACMD(do_b2);
  131. ACMD(do_b3);
  132. ACMD(do_b4);
  133. ACMD(do_b5);
  134. ACMD(do_b6);
  135. ACMD(do_b7);
  136. */
  137. ACMD(do_close_shop);
  138. ACMD(do_open_shop);
  139. ACMD(do_set_walk_mode);
  140. ACMD(do_set_run_mode);
  141. ACMD(do_set_skill_group);
  142. ACMD(do_set_skill_point);
  143. ACMD(do_cooltime);
  144. ACMD(do_detaillog);
  145. ACMD(do_monsterlog);
  146.  
  147. ACMD(do_gwlist);
  148. ACMD(do_stop_guild_war);
  149. ACMD(do_cancel_guild_war);
  150. ACMD(do_guild_state);
  151.  
  152. ACMD(do_pkmode);
  153. ACMD(do_mobile);
  154. ACMD(do_mobile_auth);
  155. ACMD(do_messenger_auth);
  156.  
  157. ACMD(do_getqf);
  158. ACMD(do_setqf);
  159. ACMD(do_delqf);
  160. ACMD(do_set_state);
  161.  
  162. ACMD(do_forgetme);
  163. ACMD(do_aggregate);
  164. ACMD(do_attract_ranger);
  165. ACMD(do_pull_monster);
  166. ACMD(do_setblockmode);
  167. ACMD(do_priv_empire);
  168. ACMD(do_priv_guild);
  169. ACMD(do_mount_test);
  170. ACMD(do_unmount);
  171. ACMD(do_observer);
  172. ACMD(do_observer_exit);
  173. ACMD(do_socket_item);
  174. ACMD(do_xmas);
  175. ACMD(do_stat_minus);
  176. ACMD(do_stat_reset);
  177. ACMD(do_view_equip);
  178. ACMD(do_block_chat);
  179. ACMD(do_vote_block_chat);
  180.  
  181. // BLOCK_CHAT
  182. ACMD(do_block_chat_list);
  183. // END_OF_BLOCK_CHAT
  184.  
  185. ACMD(do_party_request);
  186. ACMD(do_party_request_deny);
  187. ACMD(do_party_request_accept);
  188. ACMD(do_build);
  189. ACMD(do_clear_land);
  190.  
  191. ACMD(do_horse_state);
  192. ACMD(do_horse_level);
  193. ACMD(do_horse_ride);
  194. ACMD(do_horse_summon);
  195. ACMD(do_horse_unsummon);
  196. ACMD(do_horse_set_stat);
  197.  
  198. ACMD(do_save_attribute_to_image);
  199. ACMD(do_affect_remove);
  200.  
  201. ACMD(do_change_attr);
  202. ACMD(do_add_attr);
  203. ACMD(do_add_socket);
  204.  
  205. ACMD(do_inputall)
  206. {
  207. ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¸í·É¾î¸¦ ¸ðµÎ ÀÔ·ÂÇϼ¼¿ä."));
  208. }
  209.  
  210. ACMD(do_show_arena_list);
  211. ACMD(do_end_all_duel);
  212. ACMD(do_end_duel);
  213. ACMD(do_duel);
  214.  
  215. ACMD(do_stat_plus_amount);
  216.  
  217. ACMD(do_break_marriage);
  218.  
  219. ACMD(do_oxevent_show_quiz);
  220. ACMD(do_oxevent_log);
  221. ACMD(do_oxevent_get_attender);
  222.  
  223. ACMD(do_effect);
  224. ACMD(do_threeway_war_info );
  225. ACMD(do_threeway_war_myinfo );
  226. //
  227. //±ºÁÖ Àü¿ë±â´É
  228. ACMD(do_monarch_warpto);
  229. ACMD(do_monarch_transfer);
  230. ACMD(do_monarch_info);
  231. ACMD(do_elect);
  232. ACMD(do_monarch_tax);
  233. ACMD(do_monarch_mob);
  234. ACMD(do_monarch_notice);
  235.  
  236. //±ºÁÖ °ü¸® ±â´É
  237. ACMD(do_rmcandidacy);
  238. ACMD(do_setmonarch);
  239. ACMD(do_rmmonarch);
  240.  
  241. ACMD(do_hair);
  242. //gift notify quest command
  243. ACMD(do_gift);
  244. // Å¥ºê°ü·Ã
  245. ACMD(do_inventory);
  246. ACMD(do_cube);
  247. ACMD(do_cards);
  248. // °ø¼ºÀü
  249. ACMD(do_siege);
  250. ACMD(do_temp);
  251. ACMD(do_frog);
  252.  
  253. ACMD(do_check_monarch_money);
  254.  
  255. ACMD(do_reset_subskill );
  256. ACMD(do_flush);
  257.  
  258. ACMD(do_eclipse);
  259. ACMD(do_weeklyevent);
  260.  
  261. ACMD(do_event_helper);
  262.  
  263. ACMD(do_in_game_mall);
  264.  
  265. ACMD(do_get_mob_count);
  266.  
  267. ACMD(do_dice);
  268. ACMD(do_special_item);
  269.  
  270. ACMD(do_click_mall);
  271.  
  272. ACMD(do_ride);
  273. ACMD(do_get_item_id_list);
  274. ACMD(do_set_socket);
  275. #ifdef __AUCTION__
  276. // temp_auction ÀÓ½Ã
  277. ACMD(do_get_auction_list);
  278. ACMD (do_get_my_auction_list);
  279. ACMD (do_get_my_purchase_list);
  280. ACMD(do_get_item_id_list);
  281. ACMD(do_enroll_auction);
  282. ACMD (do_auction_bid);
  283. ACMD (do_auction_impur);
  284. ACMD (do_enroll_wish);
  285. ACMD (do_enroll_sale);
  286.  
  287. ACMD (do_get_auctioned_item);
  288. ACMD (do_buy_sold_item);
  289. ACMD (do_cancel_auction);
  290. ACMD (do_cancel_wish);
  291. ACMD (do_cancel_sale);
  292.  
  293. ACMD (do_rebid);
  294. ACMD (do_bid_cancel);
  295. #endif
  296.  
  297. #ifdef MULTI_LANGUAGE_SYSTEM
  298. ACMD(do_lang_en);
  299. ACMD(do_lang_es);
  300. ACMD(do_lang_pt);
  301. ACMD(do_lang_ro);
  302. #endif
  303.  
  304. #ifdef GIFT_SYSTEM
  305. ACMD(do_gift_refresh);
  306. ACMD(do_gift_get);
  307. #endif
  308. #ifdef OFFLINE_SHOP
  309. ACMD(do_shop_refresh);
  310. ACMD(do_shop_yang);
  311. ACMD(do_set_name_shop);
  312. ACMD(do_shop_refresh_items);
  313. ACMD(do_shop_update);
  314. ACMD(do_shop_delete);
  315. ACMD(do_shop_update_item);
  316. #endif
  317. // ÄÚ½ºÃõ »óź¸±â ¹× ¹þ±â
  318. ACMD(do_costume);
  319. ACMD(do_set_stat);
  320.  
  321. // ¹«Àû
  322. ACMD (do_can_dead);
  323.  
  324. ACMD (do_full_set);
  325. // Á÷±º°ú ·¹º§¿¡ µû¸¥ ÃÖ°í ¾ÆÀÌÅÛ
  326. ACMD (do_item_full_set);
  327. // Á÷±º¿¡ µû¸¥ ÃÖ°í ¿É¼ÇÀÇ ¼Ó¼º ¼ÂÆÃ
  328. ACMD (do_attr_full_set);
  329. // ¸ðµç ½ºÅ³ ¸¶½ºÅÍ
  330. ACMD (do_all_skill_master);
  331. // ¾ÆÀÌÅÛ Âø¿ë. iconÀÌ ¾ø¾î Ŭ¶ó¿¡¼­ È®ÀÎ ÇÒ ¼ö ¾ø´Â ¾ÆÀÌÅÛ Âø¿ëÀ» À§ÇØ ¸¸µê.
  332. ACMD (do_use_item);
  333. ACMD (do_dragon_soul);
  334. ACMD (do_ds_list);
  335. ACMD (do_clear_affect);
  336. #ifdef __ATTENDANCE_EVENT__
  337. ACMD(do_attendance);
  338. ACMD(do_easter_event);
  339. #endif
  340. #ifdef ENABLE_NEWSTUFF
  341. ACMD(do_change_rare_attr);
  342. ACMD(do_add_rare_attr);
  343.  
  344. ACMD(do_click_safebox);
  345. ACMD(do_force_logout);
  346. #ifdef SHOP_SEARCH
  347. ACMD(do_search_shop);
  348. #endif
  349. ACMD(do_poison);
  350. #endif
  351. #ifdef ENABLE_WOLFMAN_CHARACTER
  352. ACMD(do_bleeding);
  353. #endif
  354. ACMD(do_search_cofres);
  355.  
  356. struct command_info cmd_info[] =
  357. {
  358. { "!RESERVED!", NULL, 0, POS_DEAD, GM_IMPLEMENTOR }, /* ¹Ýµå½Ã ÀÌ °ÍÀÌ Ã³À½À̾î¾ß ÇÑ´Ù. */
  359. #ifdef ENABLE_CHANGE_CHANNEL
  360. { "change_channel", do_change_channel, 0, POS_DEAD, GM_PLAYER },
  361. #endif
  362. #ifdef GIFT_SYSTEM
  363. { "gift_refresh", do_gift_refresh, 0, POS_DEAD, GM_PLAYER },
  364. { "gift_get", do_gift_get, 0, POS_DEAD, GM_PLAYER },
  365. #endif
  366. #ifdef OFFLINE_SHOP
  367. #ifdef SHOP_SEARCH
  368. { "search_shop", do_search_shop, 0, POS_DEAD, GM_PLAYER },
  369. #endif
  370.  
  371. { "update_shop_item", do_shop_update_item, 0, POS_DEAD, GM_PLAYER },
  372. { "refresh_shop_items", do_shop_refresh_items, 0, POS_DEAD, GM_PLAYER },
  373. { "refresh_shop", do_shop_refresh, 0, POS_DEAD, GM_PLAYER },
  374. { "shop_yang", do_shop_yang, 0, POS_DEAD, GM_PLAYER },
  375. { "shop_name", do_set_name_shop, 0, POS_DEAD, GM_PLAYER },
  376. { "delete_shop", do_shop_delete, 0, POS_DEAD, GM_LOW_WIZARD },
  377. { "update_shop", do_shop_update, 0, POS_DEAD, GM_IMPLEMENTOR },
  378. #endif
  379. { "who", do_who, 0, POS_DEAD, GM_LOW_WIZARD },
  380. { "w", do_who, 0, POS_DEAD, GM_LOW_WIZARD },
  381. #ifdef ENABLE_OFFLINE_SHOP_HIDE
  382. { "show_hide_shops", do_show_hide_shops, 0, POS_DEAD, GM_PLAYER },
  383. #endif
  384. { "jmk", do_force_logout, 0, POS_DEAD, GM_PLAYER },
  385.  
  386. { "war", do_war, 0, POS_DEAD, GM_PLAYER },
  387. { "warp", do_warp, 0, POS_DEAD, GM_LOW_WIZARD },
  388. { "user", do_user, 0, POS_DEAD, GM_GOD },
  389. { "u", do_user, 0, POS_DEAD, GM_GOD },
  390. { "notice", do_notice, 0, POS_DEAD, GM_LOW_WIZARD },
  391. #ifdef ENABLE_SORT_INVENTORY
  392. { "click_sort_items", do_sort_items, 0, POS_DEAD, GM_PLAYER },
  393. { "click_sort_special_storage", do_sort_special_storage, 0, POS_DEAD, GM_PLAYER },
  394. #endif
  395.  
  396. { "n", do_notice, 0, POS_DEAD, GM_LOW_WIZARD },
  397. { "notice_map", do_map_notice, 0, POS_DEAD, GM_GOD },
  398. { "n_m", do_map_notice, 0, POS_DEAD, GM_GOD },
  399. { "big_notice", do_big_notice, 0, POS_DEAD, GM_GOD },
  400. { "b", do_big_notice, 0, POS_DEAD, GM_GOD },
  401. { "bi", do_big_notice, 0, POS_DEAD, GM_GOD },
  402. #ifdef __ATTENDANCE_EVENT__
  403. { "attendance", do_attendance, 0, POS_DEAD, GM_IMPLEMENTOR },
  404. { "easter_event", do_easter_event, 0, POS_DEAD, GM_IMPLEMENTOR },
  405. #endif
  406. #ifdef ENABLE_FULL_NOTICE
  407. { "big_notice_map", do_map_big_notice, 0, POS_DEAD, GM_GOD },
  408. { "notice_test", do_notice_test, 0, POS_DEAD, GM_GOD },
  409. { "big_notice_test",do_big_notice_test, 0, POS_DEAD, GM_GOD },
  410. #endif
  411. { "nowar", do_nowar, 0, POS_DEAD, GM_PLAYER },
  412. { "purge", do_purge, 0, POS_DEAD, GM_WIZARD },
  413. { "pu", do_purge, 0, POS_DEAD, GM_WIZARD },
  414. { "p", do_purge, 0, POS_DEAD, GM_WIZARD },
  415. { "weaken", do_weaken, 0, POS_DEAD, GM_IMPLEMENTOR },
  416. { "we", do_weaken, 0, POS_DEAD, GM_IMPLEMENTOR },
  417. { "dc", do_disconnect, 0, POS_DEAD, GM_LOW_WIZARD },
  418. { "transfer", do_transfer, 0, POS_DEAD, GM_GOD },
  419. { "t", do_transfer, 0, POS_DEAD, GM_GOD },
  420. { "goto", do_goto, 0, POS_DEAD, GM_GOD },
  421. { "go", do_goto, 0, POS_DEAD, GM_LOW_WIZARD },
  422. { "level", do_level, 0, POS_DEAD, GM_IMPLEMENTOR },
  423. { "l", do_level, 0, POS_DEAD, GM_IMPLEMENTOR },
  424. { "eventflag", do_event_flag, 0, POS_DEAD, GM_IMPLEMENTOR },
  425. { "e", do_event_flag, 0, POS_DEAD, GM_IMPLEMENTOR },
  426. { "geteventflag", do_get_event_flag, 0, POS_DEAD, GM_IMPLEMENTOR },
  427.  
  428. { "item", do_item, 0, POS_DEAD, GM_IMPLEMENTOR },
  429. { "i", do_item, 0, POS_DEAD, GM_IMPLEMENTOR },
  430.  
  431. { "mob", do_mob, 0, POS_DEAD, GM_IMPLEMENTOR },
  432. { "m", do_mob, 0, POS_DEAD, GM_IMPLEMENTOR },
  433. { "mob_ld", do_mob_ld, 0, POS_DEAD, GM_IMPLEMENTOR }, /* ¸÷ÀÇ À§Ä¡¿Í ¹æÇâÀ» ¼³Á¤ÇØ ¼Òȯ /mob_ld vnum x y dir */
  434. { "ma", do_mob_aggresive, 0, POS_DEAD, GM_IMPLEMENTOR },
  435. { "mc", do_mob_coward, 0, POS_DEAD, GM_IMPLEMENTOR },
  436. { "mm", do_mob_map, 0, POS_DEAD, GM_IMPLEMENTOR },
  437. { "kill", do_kill, 0, POS_DEAD, GM_IMPLEMENTOR },
  438. { "ipurge", do_item_purge, 0, POS_DEAD, GM_HIGH_WIZARD },
  439. { "ip", do_item_purge, 0, POS_DEAD, GM_HIGH_WIZARD },
  440. { "group", do_group, 0, POS_DEAD, GM_HIGH_WIZARD },
  441. { "g", do_group, 0, POS_DEAD, GM_HIGH_WIZARD },
  442. { "grrandom", do_group_random, 0, POS_DEAD, GM_HIGH_WIZARD },
  443.  
  444. { "set", do_set, 0, POS_DEAD, GM_IMPLEMENTOR },
  445. { "reset", do_reset, 0, POS_DEAD, GM_HIGH_WIZARD },
  446. { "greset", do_greset, 0, POS_DEAD, GM_HIGH_WIZARD },
  447. { "advance", do_advance, 0, POS_DEAD, GM_IMPLEMENTOR },
  448. { "a", do_advance, 0, POS_DEAD, GM_IMPLEMENTOR },
  449. { "book", do_book, 0, POS_DEAD, GM_IMPLEMENTOR },
  450.  
  451. { "console", do_console, 0, POS_DEAD, GM_IMPLEMENTOR },
  452.  
  453. { "shutdow", do_inputall, 0, POS_DEAD, GM_IMPLEMENTOR },
  454. { "shutdown", do_shutdown, 0, POS_DEAD, GM_IMPLEMENTOR },
  455.  
  456. { "stat", do_stat, 0, POS_DEAD, GM_PLAYER },
  457. { "stat-", do_stat_minus, 0, POS_DEAD, GM_PLAYER },
  458. { "stat_reset", do_stat_reset, 0, POS_DEAD, GM_LOW_WIZARD },
  459. { "state", do_state, 0, POS_DEAD, GM_LOW_WIZARD },
  460.  
  461. // ADD_COMMAND_SLOW_STUN
  462. { "stun", do_stun, 0, POS_DEAD, GM_GOD },
  463. #ifdef __BATTLE_PASS__
  464. { "open_battlepass", open_battlepass, 0, POS_DEAD, GM_PLAYER },
  465. { "final_reward_battlepass", final_reward_battlepass, 0, POS_DEAD, GM_PLAYER },
  466. #endif
  467. { "slow", do_slow, 0, POS_DEAD, GM_GOD },
  468. // END_OF_ADD_COMMAND_SLOW_STUN
  469.  
  470. { "respawn", do_respawn, 0, POS_DEAD, GM_WIZARD },
  471.  
  472. { "makeguild", do_makeguild, 0, POS_DEAD, GM_HIGH_WIZARD },
  473. { "deleteguild", do_deleteguild, 0, POS_DEAD, GM_HIGH_WIZARD },
  474.  
  475. { "mount", do_mount, 0, POS_MOUNTING, GM_PLAYER },
  476. { "restart_here", do_restart, SCMD_RESTART_HERE, POS_DEAD, GM_PLAYER },
  477. { "restart_town", do_restart, SCMD_RESTART_TOWN, POS_DEAD, GM_PLAYER },
  478. { "phase_selec", do_inputall, 0, POS_DEAD, GM_PLAYER },
  479. { "phase_select", do_cmd, SCMD_PHASE_SELECT, POS_DEAD, GM_PLAYER },
  480. { "qui", do_inputall, 0, POS_DEAD, GM_PLAYER },
  481. { "quit", do_cmd, SCMD_QUIT, POS_DEAD, GM_PLAYER },
  482. { "logou", do_inputall, 0, POS_DEAD, GM_PLAYER },
  483. { "logout", do_cmd, SCMD_LOGOUT, POS_DEAD, GM_PLAYER },
  484. #ifdef __ENABLE_BATTLE_FIELD__
  485. { "restart_battle", do_restart, SCMD_RESTART_BATTLE, POS_DEAD, GM_PLAYER },
  486. { "battle_force_close", do_battle_force_close, 0, POS_DEAD, GM_IMPLEMENTOR },
  487. { "battle_set_event", do_battle_set_event, 0, POS_DEAD, GM_IMPLEMENTOR },
  488. #endif
  489. { "skillup", do_skillup, 0, POS_DEAD, GM_PLAYER },
  490. { "gskillup", do_guildskillup, 0, POS_DEAD, GM_PLAYER },
  491. { "pvp", do_pvp, 0, POS_DEAD, GM_PLAYER },
  492. { "safebox", do_safebox_size, 0, POS_DEAD, GM_HIGH_WIZARD },
  493. { "safebox_close", do_safebox_close, 0, POS_DEAD, GM_PLAYER },
  494. { "safebox_passwor",do_inputall, 0, POS_DEAD, GM_PLAYER },
  495. { "safebox_password",do_safebox_password, 0, POS_DEAD, GM_PLAYER },
  496. { "safebox_change_passwor", do_inputall, 0, POS_DEAD, GM_PLAYER },
  497. { "safebox_change_password", do_safebox_change_password, 0, POS_DEAD, GM_PLAYER },
  498. { "mall_passwor", do_inputall, 0, POS_DEAD, GM_PLAYER },
  499. { "mall_password", do_mall_password, 0, POS_DEAD, GM_PLAYER },
  500. { "mall_close", do_mall_close, 0, POS_DEAD, GM_PLAYER },
  501. { "channel", do_channel_switch, 0, POS_DEAD, GM_PLAYER },
  502.  
  503. // Group Command
  504. { "ungroup", do_ungroup, 0, POS_DEAD, GM_PLAYER },
  505.  
  506. // REFINE_ROD_HACK_BUG_FIX
  507. { "refine_rod", do_refine_rod, 0, POS_DEAD, GM_IMPLEMENTOR },
  508. // END_OF_REFINE_ROD_HACK_BUG_FIX
  509.  
  510. // REFINE_PICK
  511. { "refine_pick", do_refine_pick, 0, POS_DEAD, GM_IMPLEMENTOR },
  512. { "max_pick", do_max_pick, 0, POS_DEAD, GM_IMPLEMENTOR },
  513. // END_OF_REFINE_PICK
  514.  
  515. #ifdef __BIOLOG_SYSTEM__
  516. { "biolog", do_biolog, 0, POS_DEAD, GM_PLAYER },
  517. #endif
  518.  
  519. { "fish_simul", do_fishing_simul, 0, POS_DEAD, GM_IMPLEMENTOR },
  520. { "invisible", do_invisibility, 0, POS_DEAD, GM_GOD },
  521. { "inv", do_invisibility, 0, POS_DEAD, GM_GOD },
  522. { "qf", do_qf, 0, POS_DEAD, GM_IMPLEMENTOR },
  523. { "clear_quest", do_clear_quest, 0, POS_DEAD, GM_HIGH_WIZARD },
  524.  
  525. { "close_shop", do_close_shop, 0, POS_DEAD, GM_PLAYER },
  526. { "open_shop", do_open_shop, 0, POS_DEAD, GM_PLAYER },
  527.  
  528. { "set_walk_mode", do_set_walk_mode, 0, POS_DEAD, GM_PLAYER },
  529. { "set_run_mode", do_set_run_mode, 0, POS_DEAD, GM_PLAYER },
  530. { "setjob",do_set_skill_group, 0, POS_DEAD, GM_IMPLEMENTOR },
  531. { "setskill", do_setskill, 0, POS_DEAD, GM_IMPLEMENTOR },
  532. { "setskillother", do_setskillother, 0, POS_DEAD, GM_HIGH_WIZARD },
  533. { "setskillpoint", do_set_skill_point, 0, POS_DEAD, GM_IMPLEMENTOR },
  534. { "reload", do_reload, 0, POS_DEAD, GM_IMPLEMENTOR },
  535. { "cooltime", do_cooltime, 0, POS_DEAD, GM_HIGH_WIZARD },
  536.  
  537. { "gwlist", do_gwlist, 0, POS_DEAD, GM_LOW_WIZARD },
  538. { "gwstop", do_stop_guild_war, 0, POS_DEAD, GM_LOW_WIZARD },
  539. { "gwcancel", do_cancel_guild_war, 0, POS_DEAD, GM_LOW_WIZARD },
  540. { "gstate", do_guild_state, 0, POS_DEAD, GM_LOW_WIZARD },
  541.  
  542. { "pkmode", do_pkmode, 0, POS_DEAD, GM_PLAYER },
  543. { "messenger_auth", do_messenger_auth, 0, POS_DEAD, GM_PLAYER },
  544.  
  545. { "getqf", do_getqf, 0, POS_DEAD, GM_LOW_WIZARD },
  546. { "setqf", do_setqf, 0, POS_DEAD, GM_LOW_WIZARD },
  547. { "delqf", do_delqf, 0, POS_DEAD, GM_LOW_WIZARD },
  548. { "set_state", do_set_state, 0, POS_DEAD, GM_LOW_WIZARD },
  549.  
  550. { "detaillog", do_detaillog, 0, POS_DEAD, GM_IMPLEMENTOR },
  551. { "monsterlog", do_monsterlog, 0, POS_DEAD, GM_IMPLEMENTOR },
  552.  
  553. { "forgetme", do_forgetme, 0, POS_DEAD, GM_LOW_WIZARD },
  554. { "aggregate", do_aggregate, 0, POS_DEAD, GM_IMPLEMENTOR },
  555. { "attract_ranger", do_attract_ranger, 0, POS_DEAD, GM_IMPLEMENTOR },
  556. { "pull_monster", do_pull_monster, 0, POS_DEAD, GM_IMPLEMENTOR },
  557. { "setblockmode", do_setblockmode, 0, POS_DEAD, GM_PLAYER },
  558. { "polymorph", do_polymorph, 0, POS_DEAD, GM_LOW_WIZARD },
  559. { "poly", do_polymorph, 0, POS_DEAD, GM_LOW_WIZARD },
  560. { "polyitem", do_polymorph_item, 0, POS_DEAD, GM_IMPLEMENTOR },
  561. { "polyi", do_polymorph_item, 0, POS_DEAD, GM_IMPLEMENTOR },
  562. { "priv_empire", do_priv_empire, 0, POS_DEAD, GM_IMPLEMENTOR },
  563. { "priv_e", do_priv_empire, 0, POS_DEAD, GM_IMPLEMENTOR },
  564. { "priv_guild", do_priv_guild, 0, POS_DEAD, GM_IMPLEMENTOR },
  565. { "priv_g", do_priv_guild, 0, POS_DEAD, GM_IMPLEMENTOR },
  566. { "mount_test", do_mount_test, 0, POS_DEAD, GM_IMPLEMENTOR },
  567. { "unmount", do_unmount, 0, POS_DEAD, GM_PLAYER },
  568. { "private", do_private, 0, POS_DEAD, GM_IMPLEMENTOR },
  569. { "party_request", do_party_request, 0, POS_DEAD, GM_PLAYER },
  570. { "party_request_accept", do_party_request_accept,0, POS_DEAD, GM_PLAYER },
  571. { "party_request_deny", do_party_request_deny,0, POS_DEAD, GM_PLAYER },
  572. { "observer", do_observer, 0, POS_DEAD, GM_IMPLEMENTOR },
  573. { "observer_exit", do_observer_exit, 0, POS_DEAD, GM_PLAYER },
  574. { "socketitem", do_socket_item, 0, POS_DEAD, GM_IMPLEMENTOR },
  575. { "saveati", do_save_attribute_to_image, 0, POS_DEAD, GM_IMPLEMENTOR },
  576. { "xmas_boom", do_xmas, SCMD_XMAS_BOOM, POS_DEAD, GM_HIGH_WIZARD },
  577. { "xmas_snow", do_xmas, SCMD_XMAS_SNOW, POS_DEAD, GM_HIGH_WIZARD },
  578. { "xmas_santa", do_xmas, SCMD_XMAS_SANTA, POS_DEAD, GM_HIGH_WIZARD },
  579. { "view_equip", do_view_equip, 0, POS_DEAD, GM_PLAYER },
  580. { "jy", do_block_chat, 0, POS_DEAD, GM_LOW_WIZARD },
  581.  
  582. // BLOCK_CHAT
  583. { "vote_block_chat", do_vote_block_chat, 0, POS_DEAD, GM_LOW_WIZARD },
  584. { "block_chat", do_block_chat, 0, POS_DEAD, GM_LOW_WIZARD },
  585. { "block_chat_list",do_block_chat_list, 0, POS_DEAD, GM_LOW_WIZARD },
  586. // END_OF_BLOCK_CHAT
  587.  
  588. { "build", do_build, 0, POS_DEAD, GM_PLAYER },
  589. { "clear_land", do_clear_land, 0, POS_DEAD, GM_HIGH_WIZARD },
  590.  
  591. { "affect_remove", do_affect_remove, 0, POS_DEAD, GM_LOW_WIZARD },
  592.  
  593. { "horse_state", do_horse_state, 0, POS_DEAD, GM_HIGH_WIZARD },
  594. { "horse_level", do_horse_level, 0, POS_DEAD, GM_HIGH_WIZARD },
  595. { "horse_ride", do_horse_ride, 0, POS_DEAD, GM_HIGH_WIZARD },
  596. { "horse_summon", do_horse_summon, 0, POS_DEAD, GM_HIGH_WIZARD },
  597. { "horse_unsummon", do_horse_unsummon, 0, POS_DEAD, GM_HIGH_WIZARD },
  598. { "horse_set_stat", do_horse_set_stat, 0, POS_DEAD, GM_HIGH_WIZARD },
  599.  
  600. { "pcbang_update", do_pcbang_update, 0, POS_DEAD, GM_IMPLEMENTOR },
  601. { "pcbang_check", do_pcbang_check, 0, POS_DEAD, GM_IMPLEMENTOR },
  602.  
  603. { "emotion_allow", do_emotion_allow, 0, POS_FIGHTING, GM_PLAYER },
  604. { "kiss", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  605. { "slap", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  606. { "french_kiss", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  607. { "clap", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  608. { "cheer1", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  609. { "cheer2", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  610.  
  611. // DANCE
  612. { "dance1", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  613. { "dance2", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  614. { "dance3", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  615. { "dance4", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  616. { "dance5", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  617. { "dance6", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  618. // END_OF_DANCE
  619.  
  620. { "congratulation", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  621. { "forgive", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  622. { "angry", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  623. { "attractive", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  624. { "sad", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  625. { "shy", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  626. { "cheerup", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  627. { "banter", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  628. { "joy", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  629.  
  630.  
  631. { "change_attr", do_change_attr, 0, POS_DEAD, GM_IMPLEMENTOR },
  632. { "add_attr", do_add_attr, 0, POS_DEAD, GM_IMPLEMENTOR },
  633. { "add_socket", do_add_socket, 0, POS_DEAD, GM_IMPLEMENTOR },
  634.  
  635. { "user_horse_ride", do_user_horse_ride, 0, POS_FISHING, GM_PLAYER },
  636. { "user_horse_back", do_user_horse_back, 0, POS_FISHING, GM_PLAYER },
  637. { "user_horse_feed", do_user_horse_feed, 0, POS_FISHING, GM_PLAYER },
  638.  
  639. { "show_arena_list", do_show_arena_list, 0, POS_DEAD, GM_IMPLEMENTOR },
  640. { "end_all_duel", do_end_all_duel, 0, POS_DEAD, GM_LOW_WIZARD },
  641. { "end_duel", do_end_duel, 0, POS_DEAD, GM_LOW_WIZARD },
  642. { "duel", do_duel, 0, POS_DEAD, GM_LOW_WIZARD },
  643.  
  644. { "con+", do_stat_plus_amount, POINT_HT, POS_DEAD, GM_IMPLEMENTOR },
  645. { "int+", do_stat_plus_amount, POINT_IQ, POS_DEAD, GM_IMPLEMENTOR },
  646. { "str+", do_stat_plus_amount, POINT_ST, POS_DEAD, GM_IMPLEMENTOR },
  647. { "dex+", do_stat_plus_amount, POINT_DX, POS_DEAD, GM_IMPLEMENTOR },
  648.  
  649. { "break_marriage", do_break_marriage, 0, POS_DEAD, GM_LOW_WIZARD },
  650.  
  651. { "show_quiz", do_oxevent_show_quiz, 0, POS_DEAD, GM_LOW_WIZARD },
  652. { "log_oxevent", do_oxevent_log, 0, POS_DEAD, GM_LOW_WIZARD },
  653. { "get_oxevent_att", do_oxevent_get_attender,0, POS_DEAD, GM_LOW_WIZARD },
  654.  
  655. { "effect", do_effect, 0, POS_DEAD, GM_IMPLEMENTOR },
  656.  
  657. { "threeway_info", do_threeway_war_info, 0, POS_DEAD, GM_LOW_WIZARD},
  658. { "threeway_myinfo", do_threeway_war_myinfo, 0, POS_DEAD, GM_LOW_WIZARD},
  659. { "mto", do_monarch_warpto, 0, POS_DEAD, GM_PLAYER},
  660. { "mtr", do_monarch_transfer, 0, POS_DEAD, GM_PLAYER},
  661. { "minfo", do_monarch_info, 0, POS_DEAD, GM_PLAYER},
  662. { "mtax", do_monarch_tax, 0, POS_DEAD, GM_PLAYER},
  663. { "mmob", do_monarch_mob, 0, POS_DEAD, GM_GOD},
  664. { "elect", do_elect, 0, POS_DEAD, GM_HIGH_WIZARD},
  665. { "rmcandidacy", do_rmcandidacy, 0, POS_DEAD, GM_LOW_WIZARD},
  666. { "setmonarch", do_setmonarch, 0, POS_DEAD, GM_LOW_WIZARD},
  667. { "rmmonarch", do_rmmonarch, 0, POS_DEAD, GM_LOW_WIZARD},
  668. { "hair", do_hair, 0, POS_DEAD, GM_PLAYER },
  669. { "inventory", do_inventory, 0, POS_DEAD, GM_IMPLEMENTOR },
  670. { "cube", do_cube, 0, POS_DEAD, GM_PLAYER },
  671. { "cards", do_cards, 0, POS_DEAD, GM_PLAYER },
  672. { "siege", do_siege, 0, POS_DEAD, GM_LOW_WIZARD },
  673. { "temp", do_temp, 0, POS_DEAD, GM_IMPLEMENTOR },
  674. { "frog", do_frog, 0, POS_DEAD, GM_HIGH_WIZARD },
  675. { "check_mmoney", do_check_monarch_money, 0, POS_DEAD, GM_IMPLEMENTOR },
  676. { "reset_subskill", do_reset_subskill, 0, POS_DEAD, GM_HIGH_WIZARD },
  677. { "flush", do_flush, 0, POS_DEAD, GM_IMPLEMENTOR },
  678. { "gift", do_gift, 0, POS_DEAD, GM_PLAYER }, //gift
  679.  
  680. { "mnotice", do_monarch_notice, 0, POS_DEAD, GM_PLAYER },
  681.  
  682. { "eclipse", do_eclipse, 0, POS_DEAD, GM_HIGH_WIZARD },
  683.  
  684. { "weeklyevent", do_weeklyevent, 0, POS_DEAD, GM_IMPLEMENTOR },
  685.  
  686. { "eventhelper", do_event_helper, 0, POS_DEAD, GM_HIGH_WIZARD },
  687.  
  688. { "in_game_mall", do_in_game_mall, 0, POS_DEAD, GM_PLAYER },
  689.  
  690. { "get_mob_count", do_get_mob_count, 0, POS_DEAD, GM_LOW_WIZARD },
  691.  
  692. { "dice", do_dice, 0, POS_DEAD, GM_PLAYER },
  693. { "special_item", do_special_item, 0, POS_DEAD, GM_IMPLEMENTOR },
  694.  
  695. { "click_mall", do_click_mall, 0, POS_DEAD, GM_PLAYER },
  696.  
  697. { "ride", do_ride, 0, POS_DEAD, GM_PLAYER },
  698.  
  699. { "item_id_list", do_get_item_id_list, 0, POS_DEAD, GM_LOW_WIZARD },
  700. { "set_socket", do_set_socket, 0, POS_DEAD, GM_IMPLEMENTOR },
  701. #ifdef __AUCTION__
  702. // auction ÀÓ½Ã
  703. { "auction_list", do_get_auction_list, 0, POS_DEAD, GM_PLAYER },
  704. { "my_auction_list", do_get_my_auction_list, 0, POS_DEAD, GM_PLAYER },
  705. { "my_purchase_list", do_get_my_purchase_list, 0, POS_DEAD, GM_PLAYER },
  706.  
  707.  
  708. { "enroll_auction", do_enroll_auction, 0, POS_DEAD, GM_PLAYER },
  709. { "bid", do_auction_bid, 0, POS_DEAD, GM_PLAYER },
  710. { "impur", do_auction_impur, 0, POS_DEAD, GM_PLAYER },
  711. { "enroll_wish", do_enroll_wish, 0, POS_DEAD, GM_PLAYER },
  712. { "enroll_sale", do_enroll_sale, 0, POS_DEAD, GM_PLAYER },
  713. { "get_auctioned_item", do_get_auctioned_item, 0, POS_DEAD, GM_PLAYER },
  714. { "buy_sold_item", do_buy_sold_item, 0, POS_DEAD, GM_PLAYER },
  715. { "cancel_auction", do_cancel_auction, 0, POS_DEAD, GM_PLAYER },
  716. { "cancel_wish", do_cancel_wish, 0, POS_DEAD, GM_PLAYER },
  717. { "cancel_sale", do_cancel_sale, 0, POS_DEAD, GM_PLAYER },
  718. { "rebid", do_rebid, 0, POS_DEAD, GM_PLAYER },
  719. { "bid_cancel", do_bid_cancel, 0, POS_DEAD, GM_PLAYER },
  720.  
  721. #endif
  722. { "costume", do_costume, 0, POS_DEAD, GM_PLAYER },
  723. { "daily_reward_reload", do_daily_reward_reload, 0, POS_DEAD, GM_PLAYER },
  724. { "daily_reward_get_reward", do_daily_reward_get_reward, 0, POS_DEAD, GM_PLAYER },
  725. { "tcon", do_set_stat, POINT_HT, POS_DEAD, GM_IMPLEMENTOR },
  726. { "tint", do_set_stat, POINT_IQ, POS_DEAD, GM_IMPLEMENTOR },
  727. { "tstr", do_set_stat, POINT_ST, POS_DEAD, GM_IMPLEMENTOR },
  728. { "tdex", do_set_stat, POINT_DX, POS_DEAD, GM_IMPLEMENTOR },
  729.  
  730. { "cannot_dead", do_can_dead, 1, POS_DEAD, GM_IMPLEMENTOR},
  731. { "cann", do_can_dead, 0, POS_DEAD, GM_IMPLEMENTOR},
  732. { "can", do_can_dead, 0, POS_DEAD, GM_IMPLEMENTOR},
  733.  
  734. { "full_set", do_full_set, 0, POS_DEAD, GM_IMPLEMENTOR},
  735. { "full", do_full_set, 0, POS_DEAD, GM_IMPLEMENTOR},
  736. { "item_full_set", do_item_full_set, 0, POS_DEAD, GM_IMPLEMENTOR},
  737. { "attr_full_set", do_attr_full_set, 0, POS_DEAD, GM_IMPLEMENTOR},
  738. { "all_skill_master", do_all_skill_master, 0, POS_DEAD, GM_IMPLEMENTOR},
  739. { "use_item", do_use_item, 0, POS_DEAD, GM_IMPLEMENTOR},
  740.  
  741. { "dragon_soul", do_dragon_soul, 0, POS_DEAD, GM_PLAYER },
  742. { "ds_list", do_ds_list, 0, POS_DEAD, GM_PLAYER },
  743. { "do_clear_affect", do_clear_affect, 0, POS_DEAD, GM_IMPLEMENTOR},
  744. #ifdef ENABLE_NEWSTUFF
  745. //item
  746. { "add_rare_attr", do_add_rare_attr, 0, POS_DEAD, GM_IMPLEMENTOR },
  747. { "change_rare_attr", do_change_rare_attr, 0, POS_DEAD, GM_IMPLEMENTOR },
  748. //player
  749. { "click_safebox", do_click_safebox, 0, POS_DEAD, GM_PLAYER },
  750. { "force_logout", do_force_logout, 0, POS_DEAD, GM_PLAYER },
  751. { "poison", do_poison, 0, POS_DEAD, GM_IMPLEMENTOR },
  752. #endif
  753. #ifdef ENABLE_WOLFMAN_CHARACTER
  754. { "bleeding", do_bleeding, 0, POS_DEAD, GM_IMPLEMENTOR },
  755. #endif
  756. #ifdef NEW_PET_SYSTEM
  757. { "cubepetadd", do_CubePetAdd, 0, POS_DEAD, GM_PLAYER },
  758. { "feedcubepet", do_FeedCubePet, 0, POS_DEAD, GM_PLAYER },
  759. { "petskills", do_PetSkill, 0, POS_DEAD, GM_PLAYER },
  760. { "petvoincrease", do_PetEvo, 0, POS_DEAD, GM_PLAYER },
  761. { "petextrabns", do_PetExtraBns, 0, POS_DEAD, GM_PLAYER },
  762. #endif
  763.  
  764. #ifdef MULTI_LANGUAGE_SYSTEM
  765. { "lang_en", do_lang_en, 0, POS_DEAD, GM_PLAYER },
  766. { "lang_es", do_lang_es, 0, POS_DEAD, GM_PLAYER },
  767. { "lang_pt", do_lang_pt, 0, POS_DEAD, GM_PLAYER },
  768. { "lang_ro", do_lang_ro, 0, POS_DEAD, GM_PLAYER },
  769. #endif
  770.  
  771. { "search_cofres", do_search_cofres, 0, POS_DEAD, GM_PLAYER },
  772. { "support_system", do_support_system, 0, POS_DEAD, GM_PLAYER },
  773. { "support_system_d", do_support_system_d, 0, POS_DEAD, GM_PLAYER },
  774. { "\n", NULL, 0, POS_DEAD, GM_IMPLEMENTOR } /* ¹Ýµå½Ã ÀÌ °ÍÀÌ ¸¶Áö¸·À̾î¾ß ÇÑ´Ù. */
  775. };
  776.  
  777. void interpreter_set_privilege(const char *cmd, int lvl)
  778. {
  779. int i;
  780.  
  781. for (i = 0; *cmd_info[i].command != '\n'; ++i)
  782. {
  783. if (!str_cmp(cmd, cmd_info[i].command))
  784. {
  785. cmd_info[i].gm_level = lvl;
  786. sys_log(0, "Setting command privilege: %s -> %d", cmd, lvl);
  787. break;
  788. }
  789. }
  790. }
  791.  
  792. void double_dollar(const char *src, size_t src_len, char *dest, size_t dest_len)
  793. {
  794. const char * tmp = src;
  795. size_t cur_len = 0;
  796.  
  797. // \0 ³ÖÀ» ÀÚ¸® È®º¸
  798. dest_len -= 1;
  799.  
  800. while (src_len-- && *tmp)
  801. {
  802. if (*tmp == '$')
  803. {
  804. if (cur_len + 1 >= dest_len)
  805. break;
  806.  
  807. *(dest++) = '$';
  808. *(dest++) = *(tmp++);
  809. cur_len += 2;
  810. }
  811. else
  812. {
  813. if (cur_len >= dest_len)
  814. break;
  815.  
  816. *(dest++) = *(tmp++);
  817. cur_len += 1;
  818. }
  819. }
  820.  
  821. *dest = '\0';
  822. }
  823. #define ENABLE_BLOCK_CMD_SHORTCUT
  824. void interpret_command(LPCHARACTER ch, const char * argument, size_t len)
  825. {
  826. #ifdef ENABLE_ANTI_CMD_FLOOD
  827. if (ch && !ch->IsGM())
  828. {
  829. if (thecore_pulse() > ch->GetCmdAntiFloodPulse() + PASSES_PER_SEC(1))
  830. {
  831. ch->SetCmdAntiFloodCount(0);
  832. ch->SetCmdAntiFloodPulse(thecore_pulse());
  833. }
  834. if (ch->IncreaseCmdAntiFloodCount()>=10)
  835. {
  836. ch->GetDesc()->DelayedDisconnect(0);
  837. return;
  838. }
  839. }
  840. #endif
  841. if (NULL == ch)
  842. {
  843. sys_err ("NULL CHRACTER");
  844. return ;
  845. }
  846.  
  847. char cmd[128 + 1]; // buffer overflow ¹®Á¦°¡ »ý±âÁö ¾Êµµ·Ï ÀϺη¯ ±æÀ̸¦ ª°Ô ÀâÀ½
  848. char new_line[256 + 1];
  849. const char * line;
  850. int icmd;
  851.  
  852. if (len == 0 || !*argument)
  853. return;
  854.  
  855. double_dollar(argument, len, new_line, sizeof(new_line));
  856.  
  857. size_t cmdlen;
  858. line = first_cmd(new_line, cmd, sizeof(cmd), &cmdlen);
  859.  
  860. for (icmd = 1; *cmd_info[icmd].command != '\n'; ++icmd)
  861. {
  862. if (cmd_info[icmd].command_pointer == do_cmd)
  863. {
  864. if (!strcmp(cmd_info[icmd].command, cmd)) // do_cmd´Â ¸ðµç ¸í·É¾î¸¦ ÃÄ¾ß ÇÒ ¼ö ÀÖ´Ù.
  865. break;
  866. }
  867. #ifdef ENABLE_BLOCK_CMD_SHORTCUT
  868. else if (!strcmp(cmd_info[icmd].command, cmd))
  869. #else
  870. else if (!strncmp(cmd_info[icmd].command, cmd, cmdlen))
  871. #endif
  872. break;
  873. }
  874.  
  875. if (ch->GetPosition() < cmd_info[icmd].minimum_position)
  876. {
  877. switch (ch->GetPosition())
  878. {
  879. case POS_MOUNTING:
  880. ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ź »óÅ¿¡¼­´Â ÇÒ ¼ö ¾ø½À´Ï´Ù."));
  881. break;
  882.  
  883. case POS_DEAD:
  884. ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¾²·¯Áø »óÅ¿¡¼­´Â ÇÒ ¼ö ¾ø½À´Ï´Ù."));
  885. break;
  886.  
  887. case POS_SLEEPING:
  888. ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("²Þ¼Ó¿¡¼­ ¾î¶»°Ô¿ä?"));
  889. break;
  890.  
  891. case POS_RESTING:
  892. case POS_SITTING:
  893. ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¸ÕÀú ÀÏ¾î ³ª¼¼¿ä."));
  894. break;
  895. /*
  896. case POS_FIGHTING:
  897. ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¸ñ¼ûÀ» °É°í ÀüÅõ Áß ÀÔ´Ï´Ù. ÁýÁß Çϼ¼¿ä."));
  898. break;
  899. */
  900. default:
  901. sys_err("unknown position %d", ch->GetPosition());
  902. break;
  903. }
  904.  
  905. return;
  906. }
  907.  
  908. if (*cmd_info[icmd].command == '\n')
  909. {
  910. ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("±×·± ¸í·É¾î´Â ¾ø½À´Ï´Ù"));
  911. return;
  912. }
  913.  
  914. if (cmd_info[icmd].gm_level && cmd_info[icmd].gm_level > ch->GetGMLevel() || cmd_info[icmd].gm_level == GM_DISABLE)
  915. {
  916. ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("±×·± ¸í·É¾î´Â ¾ø½À´Ï´Ù"));
  917. return;
  918. }
  919.  
  920. if (strncmp("phase", cmd_info[icmd].command, 5) != 0) // È÷µç ¸í·É¾î ó¸®
  921. sys_log(0, "COMMAND: %s: %s", ch->GetName(), cmd_info[icmd].command);
  922.  
  923. ((*cmd_info[icmd].command_pointer) (ch, line, icmd, cmd_info[icmd].subcmd));
  924.  
  925. if (ch->GetGMLevel() >= GM_LOW_WIZARD)
  926. {
  927. if (cmd_info[icmd].gm_level >= GM_LOW_WIZARD)
  928. {
  929. char buf[1024];
  930. snprintf( buf, sizeof(buf), "%s", argument );
  931.  
  932. LogManager::instance().GMCommandLog(ch->GetPlayerID(), ch->GetName(), ch->GetDesc()->GetHostName(), g_bChannel, buf);
  933. }
  934. }
  935. }
  936.  
  937.  
Advertisement
Add Comment
Please, Sign In to add comment