Guest User

cmd.cpp

a guest
Mar 26th, 2020
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 25.44 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.  
  13. ACMD(do_pcbang_update);
  14. ACMD(do_pcbang_check);
  15.  
  16. #ifdef NEW_PET_SYSTEM
  17. ACMD(do_CubePetAdd);
  18. ACMD(do_FeedCubePet);
  19. ACMD(do_PetSkill);
  20. ACMD(do_PetEvo);
  21. #endif
  22.  
  23. // ADD_COMMAND_SLOW_STUN
  24. ACMD(do_slow);
  25. ACMD(do_stun);
  26. // END_OF_ADD_COMMAND_SLOW_STUN
  27.  
  28. ACMD(do_warp);
  29. ACMD(do_goto);
  30. ACMD(do_item);
  31. ACMD(do_mob);
  32. ACMD(do_mob_ld);
  33. ACMD(do_mob_aggresive);
  34. ACMD(do_mob_coward);
  35. ACMD(do_mob_map);
  36. ACMD(do_purge);
  37. ACMD(do_weaken);
  38. ACMD(do_item_purge);
  39. ACMD(do_state);
  40. ACMD(do_notice);
  41. ACMD(do_map_notice);
  42. ACMD(do_big_notice);
  43. ACMD(do_who);
  44. ACMD(do_user);
  45. ACMD(do_disconnect);
  46. ACMD(do_kill);
  47. ACMD(do_emotion_allow);
  48. ACMD(do_emotion);
  49. ACMD(do_transfer);
  50. ACMD(do_set);
  51. ACMD(do_cmd);
  52. #ifdef ENABLE_CHANGE_CHANNEL
  53. ACMD(do_change_channel);
  54. #endif
  55. ACMD(do_reset);
  56. ACMD(do_greset);
  57. ACMD(do_mount);
  58. ACMD(do_fishing);
  59. ACMD(do_refine_rod);
  60.  
  61. // REFINE_PICK
  62. ACMD(do_max_pick);
  63. ACMD(do_refine_pick);
  64. // END_OF_REFINE_PICK
  65.  
  66. ACMD(do_fishing_simul);
  67. ACMD(do_console);
  68. ACMD(do_restart);
  69. ACMD(do_advance);
  70. ACMD(do_stat);
  71. ACMD(do_respawn);
  72. ACMD(do_skillup);
  73. ACMD(do_guildskillup);
  74. ACMD(do_pvp);
  75. ACMD(do_point_reset);
  76. ACMD(do_safebox_size);
  77. ACMD(do_safebox_close);
  78. ACMD(do_safebox_password);
  79. ACMD(do_safebox_change_password);
  80. ACMD(do_mall_password);
  81. ACMD(do_mall_close);
  82. ACMD(do_ungroup);
  83. ACMD(do_makeguild);
  84. ACMD(do_deleteguild);
  85. ACMD(do_shutdown);
  86. ACMD(do_group);
  87. ACMD(do_group_random);
  88. ACMD(do_invisibility);
  89. ACMD(do_event_flag);
  90. ACMD(do_get_event_flag);
  91. ACMD(do_private);
  92. ACMD(do_qf);
  93. ACMD(do_clear_quest);
  94. ACMD(do_book);
  95. ACMD(do_reload);
  96. ACMD(do_war);
  97. ACMD(do_nowar);
  98. ACMD(do_setskill);
  99. ACMD(do_setskillother);
  100. ACMD(do_level);
  101. ACMD(do_polymorph);
  102. ACMD(do_polymorph_item);
  103. /*
  104. ACMD(do_b1);
  105. ACMD(do_b2);
  106. ACMD(do_b3);
  107. ACMD(do_b4);
  108. ACMD(do_b5);
  109. ACMD(do_b6);
  110. ACMD(do_b7);
  111. */
  112. ACMD(do_close_shop);
  113. ACMD(do_set_walk_mode);
  114. ACMD(do_set_run_mode);
  115. ACMD(do_set_skill_group);
  116. ACMD(do_set_skill_point);
  117. ACMD(do_cooltime);
  118. ACMD(do_detaillog);
  119. ACMD(do_monsterlog);
  120.  
  121. ACMD(do_gwlist);
  122. ACMD(do_stop_guild_war);
  123. ACMD(do_cancel_guild_war);
  124. ACMD(do_guild_state);
  125.  
  126. ACMD(do_pkmode);
  127. ACMD(do_mobile);
  128. ACMD(do_mobile_auth);
  129. ACMD(do_messenger_auth);
  130.  
  131. ACMD(do_getqf);
  132. ACMD(do_setqf);
  133. ACMD(do_delqf);
  134. ACMD(do_set_state);
  135.  
  136. ACMD(do_forgetme);
  137. ACMD(do_aggregate);
  138. ACMD(do_attract_ranger);
  139. ACMD(do_pull_monster);
  140. ACMD(do_setblockmode);
  141. ACMD(do_priv_empire);
  142. ACMD(do_priv_guild);
  143. ACMD(do_mount_test);
  144. ACMD(do_unmount);
  145. ACMD(do_observer);
  146. ACMD(do_observer_exit);
  147. ACMD(do_socket_item);
  148. ACMD(do_xmas);
  149. ACMD(do_stat_minus);
  150. ACMD(do_stat_reset);
  151. ACMD(do_view_equip);
  152. ACMD(do_block_chat);
  153. ACMD(do_vote_block_chat);
  154.  
  155. // BLOCK_CHAT
  156. ACMD(do_block_chat_list);
  157. // END_OF_BLOCK_CHAT
  158.  
  159. ACMD(do_party_request);
  160. ACMD(do_party_request_deny);
  161. ACMD(do_party_request_accept);
  162. ACMD(do_build);
  163. ACMD(do_clear_land);
  164.  
  165. ACMD(do_horse_state);
  166. ACMD(do_horse_level);
  167. ACMD(do_horse_ride);
  168. ACMD(do_horse_summon);
  169. ACMD(do_horse_unsummon);
  170. ACMD(do_horse_set_stat);
  171.  
  172. ACMD(do_save_attribute_to_image);
  173. ACMD(do_affect_remove);
  174.  
  175. ACMD(do_change_attr);
  176. ACMD(do_add_attr);
  177. ACMD(do_add_socket);
  178.  
  179. ACMD(do_inputall)
  180. {
  181. ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("���ɾ ��� �Է��ϼ���."));
  182. }
  183.  
  184. ACMD(do_show_arena_list);
  185. ACMD(do_end_all_duel);
  186. ACMD(do_end_duel);
  187. ACMD(do_duel);
  188.  
  189. ACMD(do_stat_plus_amount);
  190.  
  191. ACMD(do_break_marriage);
  192.  
  193. ACMD(do_oxevent_show_quiz);
  194. ACMD(do_oxevent_log);
  195. ACMD(do_oxevent_get_attender);
  196.  
  197. ACMD(do_effect);
  198. ACMD(do_threeway_war_info );
  199. ACMD(do_threeway_war_myinfo );
  200. //
  201. //���� ������
  202. ACMD(do_monarch_warpto);
  203. ACMD(do_monarch_transfer);
  204. ACMD(do_monarch_info);
  205. ACMD(do_elect);
  206. ACMD(do_monarch_tax);
  207. ACMD(do_monarch_mob);
  208. ACMD(do_monarch_notice);
  209.  
  210. //���� ���� ���
  211. ACMD(do_rmcandidacy);
  212. ACMD(do_setmonarch);
  213. ACMD(do_rmmonarch);
  214.  
  215. ACMD(do_hair);
  216. //gift notify quest command
  217. ACMD(do_gift);
  218. // ť�����
  219. ACMD(do_inventory);
  220. ACMD(do_acce);
  221. ACMD(do_cube);
  222. // ������
  223. ACMD(do_siege);
  224. ACMD(do_temp);
  225. ACMD(do_frog);
  226.  
  227. ACMD(do_check_monarch_money);
  228.  
  229. ACMD(do_reset_subskill );
  230. ACMD(do_flush);
  231.  
  232. ACMD(do_eclipse);
  233. ACMD(do_weeklyevent);
  234.  
  235. ACMD(do_event_helper);
  236.  
  237. ACMD(do_in_game_mall);
  238.  
  239. ACMD(do_get_mob_count);
  240.  
  241. ACMD(do_dice);
  242. ACMD(do_special_item);
  243.  
  244. ACMD(do_click_mall);
  245.  
  246. ACMD(do_ride);
  247. ACMD(do_get_item_id_list);
  248. ACMD(do_set_socket);
  249. #ifdef __AUCTION__
  250. // temp_auction �ӽ�
  251. ACMD(do_get_auction_list);
  252. ACMD (do_get_my_auction_list);
  253. ACMD (do_get_my_purchase_list);
  254. ACMD(do_get_item_id_list);
  255. ACMD(do_enroll_auction);
  256. ACMD (do_auction_bid);
  257. ACMD (do_auction_impur);
  258. ACMD (do_enroll_wish);
  259. ACMD (do_enroll_sale);
  260.  
  261. ACMD (do_get_auctioned_item);
  262. ACMD (do_buy_sold_item);
  263. ACMD (do_cancel_auction);
  264. ACMD (do_cancel_wish);
  265. ACMD (do_cancel_sale);
  266.  
  267. ACMD (do_rebid);
  268. ACMD (do_bid_cancel);
  269. #endif
  270. // �ڽ��� ���º��� �� ����
  271. ACMD(do_costume);
  272. ACMD(do_set_stat);
  273.  
  274. // ����
  275. ACMD (do_can_dead);
  276.  
  277. ACMD (do_full_set);
  278. // ������ ������ ���� �ְ� ������
  279. ACMD (do_item_full_set);
  280. // ������ ���� �ְ� �ɼ��� �Ӽ� ����
  281. ACMD (do_attr_full_set);
  282. // ��� ��ų ������
  283. ACMD (do_all_skill_master);
  284. // ������ ����. icon�� ���� Ŭ�󿡼� Ȯ�� �� �� ���� ������ ������ ���� ����.
  285. ACMD (do_use_item);
  286. ACMD (do_dragon_soul);
  287. ACMD (do_ds_list);
  288. ACMD (do_clear_affect);
  289.  
  290. struct command_info cmd_info[] =
  291. {
  292. { "!RESERVED!", NULL, 0, POS_DEAD, GM_IMPLEMENTOR }, /* �ݵ�� �� ���� ó���̾�� �Ѵ�. */
  293. { "who", do_who, 0, POS_DEAD, GM_IMPLEMENTOR },
  294. { "war", do_war, 0, POS_DEAD, GM_PLAYER },
  295. { "warp", do_warp, 0, POS_DEAD, GM_LOW_WIZARD },
  296. { "user", do_user, 0, POS_DEAD, GM_HIGH_WIZARD },
  297. { "notice", do_notice, 0, POS_DEAD, GM_HIGH_WIZARD },
  298. { "notice_map", do_map_notice, 0, POS_DEAD, GM_LOW_WIZARD },
  299. { "big_notice", do_big_notice, 0, POS_DEAD, GM_HIGH_WIZARD },
  300. { "nowar", do_nowar, 0, POS_DEAD, GM_PLAYER },
  301. { "purge", do_purge, 0, POS_DEAD, GM_WIZARD },
  302. { "weaken", do_weaken, 0, POS_DEAD, GM_GOD },
  303. { "dc", do_disconnect, 0, POS_DEAD, GM_LOW_WIZARD },
  304. { "transfer", do_transfer, 0, POS_DEAD, GM_LOW_WIZARD },
  305. { "goto", do_goto, 0, POS_DEAD, GM_LOW_WIZARD },
  306. { "level", do_level, 0, POS_DEAD, GM_LOW_WIZARD },
  307. { "eventflag", do_event_flag, 0, POS_DEAD, GM_HIGH_WIZARD },
  308. { "geteventflag", do_get_event_flag, 0, POS_DEAD, GM_LOW_WIZARD },
  309.  
  310. { "item", do_item, 0, POS_DEAD, GM_GOD },
  311.  
  312. { "mob", do_mob, 0, POS_DEAD, GM_HIGH_WIZARD },
  313. { "mob_ld", do_mob_ld, 0, POS_DEAD, GM_HIGH_WIZARD }, /* ���� ��ġ�� ������ ������ ��ȯ /mob_ld vnum x y dir */
  314. { "ma", do_mob_aggresive, 0, POS_DEAD, GM_HIGH_WIZARD },
  315. { "mc", do_mob_coward, 0, POS_DEAD, GM_HIGH_WIZARD },
  316. { "mm", do_mob_map, 0, POS_DEAD, GM_HIGH_WIZARD },
  317. { "kill", do_kill, 0, POS_DEAD, GM_HIGH_WIZARD },
  318. { "ipurge", do_item_purge, 0, POS_DEAD, GM_HIGH_WIZARD },
  319. { "group", do_group, 0, POS_DEAD, GM_HIGH_WIZARD },
  320. { "grrandom", do_group_random, 0, POS_DEAD, GM_HIGH_WIZARD },
  321.  
  322. { "set", do_set, 0, POS_DEAD, GM_IMPLEMENTOR },
  323. { "reset", do_reset, 0, POS_DEAD, GM_HIGH_WIZARD },
  324. { "greset", do_greset, 0, POS_DEAD, GM_HIGH_WIZARD },
  325. { "advance", do_advance, 0, POS_DEAD, GM_GOD },
  326. { "book", do_book, 0, POS_DEAD, GM_IMPLEMENTOR },
  327.  
  328. { "console", do_console, 0, POS_DEAD, GM_LOW_WIZARD },
  329.  
  330. { "shutdow", do_inputall, 0, POS_DEAD, GM_HIGH_WIZARD },
  331. { "shutdown", do_shutdown, 0, POS_DEAD, GM_HIGH_WIZARD },
  332.  
  333. { "stat", do_stat, 0, POS_DEAD, GM_PLAYER },
  334. { "stat-", do_stat_minus, 0, POS_DEAD, GM_PLAYER },
  335. { "stat_reset", do_stat_reset, 0, POS_DEAD, GM_LOW_WIZARD },
  336. { "state", do_state, 0, POS_DEAD, GM_LOW_WIZARD },
  337.  
  338. // ADD_COMMAND_SLOW_STUN
  339. { "stun", do_stun, 0, POS_DEAD, GM_LOW_WIZARD },
  340. { "slow", do_slow, 0, POS_DEAD, GM_LOW_WIZARD },
  341. // END_OF_ADD_COMMAND_SLOW_STUN
  342.  
  343. { "respawn", do_respawn, 0, POS_DEAD, GM_WIZARD },
  344.  
  345. { "makeguild", do_makeguild, 0, POS_DEAD, GM_HIGH_WIZARD },
  346. { "deleteguild", do_deleteguild, 0, POS_DEAD, GM_HIGH_WIZARD },
  347.  
  348. { "mount", do_mount, 0, POS_MOUNTING, GM_PLAYER },
  349. { "restart_here", do_restart, SCMD_RESTART_HERE, POS_DEAD, GM_PLAYER },
  350. { "restart_town", do_restart, SCMD_RESTART_TOWN, POS_DEAD, GM_PLAYER },
  351. { "phase_selec", do_inputall, 0, POS_DEAD, GM_PLAYER },
  352. { "phase_select", do_cmd, SCMD_PHASE_SELECT, POS_DEAD, GM_PLAYER },
  353. { "qui", do_inputall, 0, POS_DEAD, GM_PLAYER },
  354. { "quit", do_cmd, SCMD_QUIT, POS_DEAD, GM_PLAYER },
  355. { "logou", do_inputall, 0, POS_DEAD, GM_PLAYER },
  356. { "logout", do_cmd, SCMD_LOGOUT, POS_DEAD, GM_PLAYER },
  357. #ifdef ENABLE_CHANGE_CHANNEL
  358. { "change_channel", do_change_channel, 0, POS_DEAD, GM_PLAYER },
  359. #endif
  360. { "skillup", do_skillup, 0, POS_DEAD, GM_PLAYER },
  361. { "gskillup", do_guildskillup, 0, POS_DEAD, GM_PLAYER },
  362. { "pvp", do_pvp, 0, POS_DEAD, GM_PLAYER },
  363. { "safebox", do_safebox_size, 0, POS_DEAD, GM_HIGH_WIZARD },
  364. { "safebox_close", do_safebox_close, 0, POS_DEAD, GM_PLAYER },
  365. { "safebox_passwor",do_inputall, 0, POS_DEAD, GM_PLAYER },
  366. { "safebox_password",do_safebox_password, 0, POS_DEAD, GM_PLAYER },
  367. { "safebox_change_passwor", do_inputall, 0, POS_DEAD, GM_PLAYER },
  368. { "safebox_change_password", do_safebox_change_password, 0, POS_DEAD, GM_PLAYER },
  369. { "mall_passwor", do_inputall, 0, POS_DEAD, GM_PLAYER },
  370. { "mall_password", do_mall_password, 0, POS_DEAD, GM_PLAYER },
  371. { "mall_close", do_mall_close, 0, POS_DEAD, GM_PLAYER },
  372.  
  373. // Group Command
  374. { "ungroup", do_ungroup, 0, POS_DEAD, GM_PLAYER },
  375.  
  376. // REFINE_ROD_HACK_BUG_FIX
  377. { "refine_rod", do_refine_rod, 0, POS_DEAD, GM_IMPLEMENTOR },
  378. // END_OF_REFINE_ROD_HACK_BUG_FIX
  379.  
  380. // REFINE_PICK
  381. { "refine_pick", do_refine_pick, 0, POS_DEAD, GM_IMPLEMENTOR },
  382. { "max_pick", do_max_pick, 0, POS_DEAD, GM_IMPLEMENTOR },
  383. // END_OF_REFINE_PICK
  384.  
  385. { "fish_simul", do_fishing_simul, 0, POS_DEAD, GM_IMPLEMENTOR },
  386. { "invisible", do_invisibility, 0, POS_DEAD, GM_LOW_WIZARD },
  387. { "qf", do_qf, 0, POS_DEAD, GM_IMPLEMENTOR },
  388. { "clear_quest", do_clear_quest, 0, POS_DEAD, GM_HIGH_WIZARD },
  389.  
  390. { "close_shop", do_close_shop, 0, POS_DEAD, GM_PLAYER },
  391.  
  392. { "set_walk_mode", do_set_walk_mode, 0, POS_DEAD, GM_PLAYER },
  393. { "set_run_mode", do_set_run_mode, 0, POS_DEAD, GM_PLAYER },
  394. { "setjob",do_set_skill_group, 0, POS_DEAD, GM_IMPLEMENTOR },
  395. { "setskill", do_setskill, 0, POS_DEAD, GM_LOW_WIZARD },
  396. { "setskillother", do_setskillother, 0, POS_DEAD, GM_HIGH_WIZARD },
  397. { "setskillpoint", do_set_skill_point, 0, POS_DEAD, GM_IMPLEMENTOR },
  398. { "reload", do_reload, 0, POS_DEAD, GM_IMPLEMENTOR },
  399. { "cooltime", do_cooltime, 0, POS_DEAD, GM_HIGH_WIZARD },
  400.  
  401. { "gwlist", do_gwlist, 0, POS_DEAD, GM_LOW_WIZARD },
  402. { "gwstop", do_stop_guild_war, 0, POS_DEAD, GM_LOW_WIZARD },
  403. { "gwcancel", do_cancel_guild_war, 0, POS_DEAD, GM_LOW_WIZARD },
  404. { "gstate", do_guild_state, 0, POS_DEAD, GM_LOW_WIZARD },
  405.  
  406. { "pkmode", do_pkmode, 0, POS_DEAD, GM_PLAYER },
  407. { "messenger_auth", do_messenger_auth, 0, POS_DEAD, GM_PLAYER },
  408.  
  409. { "getqf", do_getqf, 0, POS_DEAD, GM_LOW_WIZARD },
  410. { "setqf", do_setqf, 0, POS_DEAD, GM_LOW_WIZARD },
  411. { "delqf", do_delqf, 0, POS_DEAD, GM_LOW_WIZARD },
  412. { "set_state", do_set_state, 0, POS_DEAD, GM_LOW_WIZARD },
  413.  
  414. { "�α׸�������", do_detaillog, 0, POS_DEAD, GM_LOW_WIZARD },
  415. { "���ͺ�����", do_monsterlog, 0, POS_DEAD, GM_LOW_WIZARD },
  416.  
  417. { "detaillog", do_detaillog, 0, POS_DEAD, GM_LOW_WIZARD },
  418. { "monsterlog", do_monsterlog, 0, POS_DEAD, GM_LOW_WIZARD },
  419.  
  420. { "forgetme", do_forgetme, 0, POS_DEAD, GM_LOW_WIZARD },
  421. { "aggregate", do_aggregate, 0, POS_DEAD, GM_LOW_WIZARD },
  422. { "attract_ranger", do_attract_ranger, 0, POS_DEAD, GM_LOW_WIZARD },
  423. { "pull_monster", do_pull_monster, 0, POS_DEAD, GM_LOW_WIZARD },
  424. { "setblockmode", do_setblockmode, 0, POS_DEAD, GM_PLAYER },
  425. { "polymorph", do_polymorph, 0, POS_DEAD, GM_LOW_WIZARD },
  426. { "polyitem", do_polymorph_item, 0, POS_DEAD, GM_HIGH_WIZARD },
  427. { "priv_empire", do_priv_empire, 0, POS_DEAD, GM_HIGH_WIZARD },
  428. { "priv_guild", do_priv_guild, 0, POS_DEAD, GM_HIGH_WIZARD },
  429. { "mount_test", do_mount_test, 0, POS_DEAD, GM_IMPLEMENTOR },
  430. { "unmount", do_unmount, 0, POS_DEAD, GM_PLAYER },
  431. { "private", do_private, 0, POS_DEAD, GM_IMPLEMENTOR },
  432. { "party_request", do_party_request, 0, POS_DEAD, GM_PLAYER },
  433. { "party_request_accept", do_party_request_accept,0, POS_DEAD, GM_PLAYER },
  434. { "party_request_deny", do_party_request_deny,0, POS_DEAD, GM_PLAYER },
  435. { "observer", do_observer, 0, POS_DEAD, GM_IMPLEMENTOR },
  436. { "observer_exit", do_observer_exit, 0, POS_DEAD, GM_PLAYER },
  437. { "socketitem", do_socket_item, 0, POS_DEAD, GM_IMPLEMENTOR },
  438. { "saveati", do_save_attribute_to_image, 0, POS_DEAD, GM_IMPLEMENTOR },
  439. { "xmas_boom", do_xmas, SCMD_XMAS_BOOM, POS_DEAD, GM_HIGH_WIZARD },
  440. { "xmas_snow", do_xmas, SCMD_XMAS_SNOW, POS_DEAD, GM_HIGH_WIZARD },
  441. { "xmas_santa", do_xmas, SCMD_XMAS_SANTA, POS_DEAD, GM_HIGH_WIZARD },
  442. { "view_equip", do_view_equip, 0, POS_DEAD, GM_PLAYER },
  443. { "jy", do_block_chat, 0, POS_DEAD, GM_HIGH_WIZARD },
  444.  
  445. // BLOCK_CHAT
  446. { "vote_block_chat", do_vote_block_chat, 0, POS_DEAD, GM_PLAYER },
  447. { "block_chat", do_block_chat, 0, POS_DEAD, GM_PLAYER },
  448. { "block_chat_list",do_block_chat_list, 0, POS_DEAD, GM_PLAYER },
  449. // END_OF_BLOCK_CHAT
  450.  
  451. { "build", do_build, 0, POS_DEAD, GM_PLAYER },
  452. { "clear_land", do_clear_land, 0, POS_DEAD, GM_HIGH_WIZARD },
  453.  
  454. { "affect_remove", do_affect_remove, 0, POS_DEAD, GM_LOW_WIZARD },
  455.  
  456. { "horse_state", do_horse_state, 0, POS_DEAD, GM_HIGH_WIZARD },
  457. { "horse_level", do_horse_level, 0, POS_DEAD, GM_HIGH_WIZARD },
  458. { "horse_ride", do_horse_ride, 0, POS_DEAD, GM_HIGH_WIZARD },
  459. { "horse_summon", do_horse_summon, 0, POS_DEAD, GM_HIGH_WIZARD },
  460. { "horse_unsummon", do_horse_unsummon, 0, POS_DEAD, GM_HIGH_WIZARD },
  461. { "horse_set_stat", do_horse_set_stat, 0, POS_DEAD, GM_HIGH_WIZARD },
  462.  
  463. { "pcbang_update", do_pcbang_update, 0, POS_DEAD, GM_LOW_WIZARD },
  464. { "pcbang_check", do_pcbang_check, 0, POS_DEAD, GM_LOW_WIZARD },
  465.  
  466. { "emotion_allow", do_emotion_allow, 0, POS_FIGHTING, GM_PLAYER },
  467. { "kiss", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  468. { "slap", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  469. { "french_kiss", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  470. { "clap", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  471. { "cheer1", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  472. { "cheer2", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  473.  
  474. // DANCE
  475. { "dance1", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  476. { "dance2", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  477. { "dance3", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  478. { "dance4", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  479. { "dance5", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  480. { "dance6", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  481. // END_OF_DANCE
  482.  
  483. { "congratulation", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  484. { "forgive", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  485. { "angry", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  486. { "attractive", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  487. { "sad", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  488. { "shy", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  489. { "cheerup", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  490. { "banter", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  491. { "joy", do_emotion, 0, POS_FIGHTING, GM_PLAYER },
  492.  
  493.  
  494. { "change_attr", do_change_attr, 0, POS_DEAD, GM_IMPLEMENTOR },
  495. { "add_attr", do_add_attr, 0, POS_DEAD, GM_IMPLEMENTOR },
  496. { "add_socket", do_add_socket, 0, POS_DEAD, GM_IMPLEMENTOR },
  497.  
  498. { "user_horse_ride", do_user_horse_ride, 0, POS_FISHING, GM_PLAYER },
  499. { "user_horse_back", do_user_horse_back, 0, POS_FISHING, GM_PLAYER },
  500. { "user_horse_feed", do_user_horse_feed, 0, POS_FISHING, GM_PLAYER },
  501.  
  502. { "show_arena_list", do_show_arena_list, 0, POS_DEAD, GM_LOW_WIZARD },
  503. { "end_all_duel", do_end_all_duel, 0, POS_DEAD, GM_LOW_WIZARD },
  504. { "end_duel", do_end_duel, 0, POS_DEAD, GM_LOW_WIZARD },
  505. { "duel", do_duel, 0, POS_DEAD, GM_LOW_WIZARD },
  506.  
  507. { "con+", do_stat_plus_amount, POINT_HT, POS_DEAD, GM_LOW_WIZARD },
  508. { "int+", do_stat_plus_amount, POINT_IQ, POS_DEAD, GM_LOW_WIZARD },
  509. { "str+", do_stat_plus_amount, POINT_ST, POS_DEAD, GM_LOW_WIZARD },
  510. { "dex+", do_stat_plus_amount, POINT_DX, POS_DEAD, GM_LOW_WIZARD },
  511.  
  512. { "break_marriage", do_break_marriage, 0, POS_DEAD, GM_LOW_WIZARD },
  513.  
  514. { "show_quiz", do_oxevent_show_quiz, 0, POS_DEAD, GM_LOW_WIZARD },
  515. { "log_oxevent", do_oxevent_log, 0, POS_DEAD, GM_LOW_WIZARD },
  516. { "get_oxevent_att", do_oxevent_get_attender,0, POS_DEAD, GM_LOW_WIZARD },
  517.  
  518. { "effect", do_effect, 0, POS_DEAD, GM_LOW_WIZARD },
  519.  
  520. { "threeway_info", do_threeway_war_info, 0, POS_DEAD, GM_LOW_WIZARD},
  521. { "threeway_myinfo", do_threeway_war_myinfo, 0, POS_DEAD, GM_LOW_WIZARD},
  522. { "mto", do_monarch_warpto, 0, POS_DEAD, GM_PLAYER},
  523. { "mtr", do_monarch_transfer, 0, POS_DEAD, GM_PLAYER},
  524. { "minfo", do_monarch_info, 0, POS_DEAD, GM_PLAYER},
  525. { "mtax", do_monarch_tax, 0, POS_DEAD, GM_PLAYER},
  526. { "mmob", do_monarch_mob, 0, POS_DEAD, GM_PLAYER},
  527. { "elect", do_elect, 0, POS_DEAD, GM_HIGH_WIZARD},
  528. { "rmcandidacy", do_rmcandidacy, 0, POS_DEAD, GM_LOW_WIZARD},
  529. { "setmonarch", do_setmonarch, 0, POS_DEAD, GM_LOW_WIZARD},
  530. { "rmmonarch", do_rmmonarch, 0, POS_DEAD, GM_LOW_WIZARD},
  531. { "hair", do_hair, 0, POS_DEAD, GM_PLAYER },
  532. { "inventory", do_inventory, 0, POS_DEAD, GM_LOW_WIZARD },
  533. { "acce", do_acce, 0, POS_DEAD, GM_PLAYER },
  534. { "cube", do_cube, 0, POS_DEAD, GM_PLAYER },
  535. { "siege", do_siege, 0, POS_DEAD, GM_LOW_WIZARD },
  536. { "temp", do_temp, 0, POS_DEAD, GM_IMPLEMENTOR },
  537. { "frog", do_frog, 0, POS_DEAD, GM_HIGH_WIZARD },
  538. { "check_mmoney", do_check_monarch_money, 0, POS_DEAD, GM_IMPLEMENTOR },
  539. { "reset_subskill", do_reset_subskill, 0, POS_DEAD, GM_HIGH_WIZARD },
  540. { "flush", do_flush, 0, POS_DEAD, GM_IMPLEMENTOR },
  541. { "gift", do_gift, 0, POS_DEAD, GM_PLAYER }, //gift
  542.  
  543. { "mnotice", do_monarch_notice, 0, POS_DEAD, GM_PLAYER },
  544.  
  545. { "eclipse", do_eclipse, 0, POS_DEAD, GM_HIGH_WIZARD },
  546.  
  547. { "weeklyevent", do_weeklyevent, 0, POS_DEAD, GM_LOW_WIZARD },
  548.  
  549. { "eventhelper", do_event_helper, 0, POS_DEAD, GM_HIGH_WIZARD },
  550.  
  551. { "in_game_mall", do_in_game_mall, 0, POS_DEAD, GM_PLAYER },
  552.  
  553. { "get_mob_count", do_get_mob_count, 0, POS_DEAD, GM_LOW_WIZARD },
  554.  
  555. { "dice", do_dice, 0, POS_DEAD, GM_PLAYER },
  556. { "�ֻ���", do_dice, 0, POS_DEAD, GM_PLAYER },
  557. { "special_item", do_special_item, 0, POS_DEAD, GM_IMPLEMENTOR },
  558.  
  559. { "click_mall", do_click_mall, 0, POS_DEAD, GM_PLAYER },
  560.  
  561. { "ride", do_ride, 0, POS_DEAD, GM_PLAYER },
  562.  
  563. { "item_id_list", do_get_item_id_list, 0, POS_DEAD, GM_LOW_WIZARD },
  564. { "set_socket", do_set_socket, 0, POS_DEAD, GM_LOW_WIZARD },
  565. #ifdef __AUCTION__
  566. // auction �ӽ�
  567. { "auction_list", do_get_auction_list, 0, POS_DEAD, GM_PLAYER },
  568. { "my_auction_list", do_get_my_auction_list, 0, POS_DEAD, GM_PLAYER },
  569. { "my_purchase_list", do_get_my_purchase_list, 0, POS_DEAD, GM_PLAYER },
  570.  
  571.  
  572. { "enroll_auction", do_enroll_auction, 0, POS_DEAD, GM_PLAYER },
  573. { "bid", do_auction_bid, 0, POS_DEAD, GM_PLAYER },
  574. { "impur", do_auction_impur, 0, POS_DEAD, GM_PLAYER },
  575. { "enroll_wish", do_enroll_wish, 0, POS_DEAD, GM_PLAYER },
  576. { "enroll_sale", do_enroll_sale, 0, POS_DEAD, GM_PLAYER },
  577. { "get_auctioned_item", do_get_auctioned_item, 0, POS_DEAD, GM_PLAYER },
  578. { "buy_sold_item", do_buy_sold_item, 0, POS_DEAD, GM_PLAYER },
  579. { "cancel_auction", do_cancel_auction, 0, POS_DEAD, GM_PLAYER },
  580. { "cancel_wish", do_cancel_wish, 0, POS_DEAD, GM_PLAYER },
  581. { "cancel_sale", do_cancel_sale, 0, POS_DEAD, GM_PLAYER },
  582. { "rebid", do_rebid, 0, POS_DEAD, GM_PLAYER },
  583. { "bid_cancel", do_bid_cancel, 0, POS_DEAD, GM_PLAYER },
  584.  
  585. #endif
  586. { "costume", do_costume, 0, POS_DEAD, GM_PLAYER },
  587.  
  588. { "tcon", do_set_stat, POINT_HT, POS_DEAD, GM_LOW_WIZARD },
  589. { "tint", do_set_stat, POINT_IQ, POS_DEAD, GM_LOW_WIZARD },
  590. { "tstr", do_set_stat, POINT_ST, POS_DEAD, GM_LOW_WIZARD },
  591. { "tdex", do_set_stat, POINT_DX, POS_DEAD, GM_LOW_WIZARD },
  592.  
  593. { "cannot_dead", do_can_dead, 1, POS_DEAD, GM_LOW_WIZARD},
  594. { "can_dead", do_can_dead, 0, POS_DEAD, GM_LOW_WIZARD},
  595.  
  596. { "full_set", do_full_set, 0, POS_DEAD, GM_LOW_WIZARD},
  597. { "item_full_set", do_item_full_set, 0, POS_DEAD, GM_LOW_WIZARD},
  598. { "attr_full_set", do_attr_full_set, 0, POS_DEAD, GM_LOW_WIZARD},
  599. { "all_skill_master", do_all_skill_master, 0, POS_DEAD, GM_LOW_WIZARD},
  600. { "use_item", do_use_item, 0, POS_DEAD, GM_LOW_WIZARD},
  601.  
  602. { "dragon_soul", do_dragon_soul, 0, POS_DEAD, GM_PLAYER },
  603. { "ds_list", do_ds_list, 0, POS_DEAD, GM_PLAYER },
  604. { "do_clear_affect", do_clear_affect, 0, POS_DEAD, GM_LOW_WIZARD},
  605.  
  606. #ifdef NEW_PET_SYSTEM
  607. { "cubepetadd", do_CubePetAdd, 0, POS_DEAD, GM_PLAYER },
  608. { "feedcubepet", do_FeedCubePet, 0, POS_DEAD, GM_PLAYER },
  609. { "petskills", do_PetSkill, 0, POS_DEAD, GM_PLAYER },
  610. { "petvoincrease", do_PetEvo, 0, POS_DEAD, GM_PLAYER },
  611. #endif
  612.  
  613. { "\n", NULL, 0, POS_DEAD, GM_IMPLEMENTOR } /* �ݵ�� �� ���� �������̾�� �Ѵ�. */
  614. };
  615.  
  616. void interpreter_set_privilege(const char *cmd, int lvl)
  617. {
  618. int i;
  619.  
  620. for (i = 0; *cmd_info[i].command != '\n'; ++i)
  621. {
  622. if (!str_cmp(cmd, cmd_info[i].command))
  623. {
  624. cmd_info[i].gm_level = lvl;
  625. sys_log(0, "Setting command privilege: %s -> %d", cmd, lvl);
  626. break;
  627. }
  628. }
  629. }
  630.  
  631. void double_dollar(const char *src, size_t src_len, char *dest, size_t dest_len)
  632. {
  633. const char * tmp = src;
  634. size_t cur_len = 0;
  635.  
  636. // \0 ���� �ڸ� Ȯ��
  637. dest_len -= 1;
  638.  
  639. while (src_len-- && *tmp)
  640. {
  641. if (*tmp == '$')
  642. {
  643. if (cur_len + 1 >= dest_len)
  644. break;
  645.  
  646. *(dest++) = '$';
  647. *(dest++) = *(tmp++);
  648. cur_len += 2;
  649. }
  650. else
  651. {
  652. if (cur_len >= dest_len)
  653. break;
  654.  
  655. *(dest++) = *(tmp++);
  656. cur_len += 1;
  657. }
  658. }
  659.  
  660. *dest = '\0';
  661. }
  662.  
  663. void interpret_command(LPCHARACTER ch, const char * argument, size_t len)
  664. {
  665. if (NULL == ch)
  666. {
  667. sys_err ("NULL CHRACTER");
  668. return ;
  669. }
  670.  
  671. char cmd[128 + 1]; // buffer overflow ������ ������ �ʵ��� �Ϻη� ���̸� ª�� ����
  672. char new_line[256 + 1];
  673. const char * line;
  674. int icmd;
  675.  
  676. if (len == 0 || !*argument)
  677. return;
  678.  
  679. double_dollar(argument, len, new_line, sizeof(new_line));
  680.  
  681. size_t cmdlen;
  682. line = first_cmd(new_line, cmd, sizeof(cmd), &cmdlen);
  683.  
  684. for (icmd = 1; *cmd_info[icmd].command != '\n'; ++icmd)
  685. {
  686. if (cmd_info[icmd].command_pointer == do_cmd)
  687. {
  688. if (!strcmp(cmd_info[icmd].command, cmd)) // do_cmd�� ��� ���ɾ �ľ� �� �� �ִ�.
  689. break;
  690. }
  691. else if (!strncmp(cmd_info[icmd].command, cmd, cmdlen))
  692. break;
  693. }
  694.  
  695. if (ch->GetPosition() < cmd_info[icmd].minimum_position)
  696. {
  697. switch (ch->GetPosition())
  698. {
  699. case POS_MOUNTING:
  700. ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ź ���¿����� �� �� �����ϴ�."));
  701. break;
  702.  
  703. case POS_DEAD:
  704. ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("������ ���¿����� �� �� �����ϴ�."));
  705. break;
  706.  
  707. case POS_SLEEPING:
  708. ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("�޼ӿ��� ��Կ�?"));
  709. break;
  710.  
  711. case POS_RESTING:
  712. case POS_SITTING:
  713. ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("���� �Ͼ� ������."));
  714. break;
  715. /*
  716. case POS_FIGHTING:
  717. ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("����� �ɰ� ���� �� �Դϴ�. ���� �ϼ���."));
  718. break;
  719. */
  720. default:
  721. sys_err("unknown position %d", ch->GetPosition());
  722. break;
  723. }
  724.  
  725. return;
  726. }
  727.  
  728. if (*cmd_info[icmd].command == '\n')
  729. {
  730. ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("�׷� ���ɾ�� �����ϴ�"));
  731. return;
  732. }
  733.  
  734. if (cmd_info[icmd].gm_level && cmd_info[icmd].gm_level > ch->GetGMLevel())
  735. {
  736. ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("�׷� ���ɾ�� �����ϴ�"));
  737. return;
  738. }
  739.  
  740. if (strncmp("phase", cmd_info[icmd].command, 5) != 0) // ���� ���ɾ� ó��
  741. sys_log(0, "COMMAND: %s: %s", ch->GetName(), cmd_info[icmd].command);
  742.  
  743. ((*cmd_info[icmd].command_pointer) (ch, line, icmd, cmd_info[icmd].subcmd));
  744.  
  745. if (ch->GetGMLevel() >= GM_LOW_WIZARD)
  746. {
  747. if (cmd_info[icmd].gm_level >= GM_LOW_WIZARD)
  748. {
  749. if (LC_IsEurope() == true || /*LC_IsNewCIBN() == true || */LC_IsCanada() == true || LC_IsBrazil() == true || LC_IsSingapore() == true )
  750. {
  751. char buf[1024];
  752. snprintf( buf, sizeof(buf), "%s", argument );
  753.  
  754. LogManager::instance().GMCommandLog(ch->GetPlayerID(), ch->GetName(), ch->GetDesc()->GetHostName(), g_bChannel, buf);
  755. }
  756. }
  757. }
  758. }
Advertisement
Add Comment
Please, Sign In to add comment