搜索
查看: 6847|回复: 6

谁能帮助改源码 啊 人物模型随意选择

[复制链接]
发表于 2013-1-19 22:42:51 | 显示全部楼层 |阅读模式 来自 中国–山东
本帖最后由 css 于 2013-1-19 22:49 编辑
  1. /* AMX Mod X
  2. *        Custom Team Select Menu
  3. *        Code By baby
  4. *        Credits:
  5. *        VEN(Borrowed some code from his Auto Join on Connect :D)
  6. *
  7. */

  8. #include <amxmodx>

  9. #define PLUGIN_NAME "custom team select menu"
  10. #define PLUGIN_VERSION "0.10"
  11. #define PLUGIN_AUTHOR "baby"

  12. #define IMMUNITY_ACCESS_LEVEL ADMIN_IMMUNITY


  13. #define TEAM_SELECT_VGUI_MENU_ID 2


  14. new bool:g_unassigned[33]
  15. new bool:g_changed[33]
  16. new g_msgid[33]
  17. new p_allow_spectators
  18. new p_teambalance
  19. new p_limitteams

  20. new bool:g_allow_t
  21. new bool:g_allow_ct
  22. new bool:g_allow_spec
  23. new g_num_t, g_num_ct



  24. #define Keysmenu_1 (1<<0)|(1<<1)|(1<<4)|(1<<5)|(1<<9) // Keys: 12560
  25. #define Keysmenu_2 (1<<0)|(1<<1)|(1<<4)|(1<<5)|(1<<9) // Keys: 1250


  26. public plugin_init() {
  27.         register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
  28.        
  29.         register_message(get_user_msgid("ShowMenu"), "message_show_menu")
  30.         register_message(get_user_msgid("VGUIMenu"), "message_vgui_menu")
  31.        
  32.         register_menucmd(register_menuid("mainmenu"), Keysmenu_1, "_menu_chooseteam")
  33.        
  34.         register_logevent("hook_roundstart",2,"1=Round_Start")
  35.        
  36.         p_allow_spectators = get_cvar_pointer("allow_spectators")
  37.         p_teambalance = get_cvar_pointer( "mp_autoteambalance" )
  38.         p_limitteams = get_cvar_pointer( "mp_limitteams" )
  39.         register_clcmd("chooseteam", "hook_chooseteam")
  40.        
  41. }

  42. public hook_roundstart()
  43. {
  44.         for (new i = 1; i < 33; i++)
  45.         {
  46.                 g_changed[i] = false
  47.         }
  48. }

  49. public client_connect(id)
  50. {
  51.         g_changed[id] = false
  52.         g_unassigned[id] = true
  53.        
  54. }

  55. public client_disconnect(id)
  56. {
  57.         g_changed[id] = false
  58.         g_unassigned[id] = true
  59.        
  60. }
  61. public hook_chooseteam(id)
  62. {
  63.         menu_chooseteam(id)
  64.         return PLUGIN_HANDLED
  65. }


  66. stock team_join(id, team[] = "5")
  67. {
  68.         new menu_msgid = g_msgid[id]
  69.         new msg_block = get_msg_block(menu_msgid)
  70.         set_msg_block(menu_msgid, BLOCK_SET)
  71.         engclient_cmd(id, "jointeam", team)
  72.         set_msg_block(menu_msgid, msg_block)
  73. }

  74. public menu_choosemodel_t(id)
  75. {
  76.         new menu = menu_create("\y夏威夷\r@\yT人物模型菜单^n^n\r>>默认T人物模型::", "_menu_choosemodel_t")
  77.        
  78.         menu_additem(menu, "\w凤凰战士", "1", 0);
  79.         menu_additem(menu, "\w杀手精英", "2", 0);
  80.         menu_additem(menu, "\w复仇勇者", "3", 0);
  81.         menu_additem(menu, "\w圣战英雄", "4", 0);
  82.        
  83.         menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER);
  84.         menu_display(id, menu, 0);
  85. }
  86. public _menu_choosemodel_t(id, menu, item)
  87. {
  88.         new data[6], iName[64];
  89.         new access, callback;
  90.         menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
  91.        
  92.         new menu_msgid = g_msgid[id]
  93.         new msg_block = get_msg_block(menu_msgid)
  94.         set_msg_block(menu_msgid, BLOCK_SET)
  95.         engclient_cmd(id, "joinclass", data)
  96.         set_msg_block(menu_msgid, msg_block)
  97.        
  98.         g_changed[id] = true
  99.         g_unassigned[id] = false
  100.         menu_destroy(menu);
  101.        
  102.        
  103.         return PLUGIN_HANDLED;
  104. }

  105. public menu_choosemodel_ct(id)
  106. {
  107.         new menu = menu_create("\y夏威夷\r@\yCT人物模型菜单^n^n\r>>默认CT人物模型::", "_menu_choosemodel_ct")
  108.        
  109.         menu_additem(menu, "\w美军陆站队", "1", 0);
  110.         menu_additem(menu, "\w德国GSG-9", "2", 0);
  111.         menu_additem(menu, "\w英国SAS", "3", 0);
  112.         menu_additem(menu, "\w法国GIGN", "4", 0);
  113.        
  114.         menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER);
  115.         menu_display(id, menu, 0);
  116. }
  117. public _menu_choosemodel_ct(id, menu, item)
  118. {
  119.        
  120.         new data[6], iName[64];
  121.         new access, callback;
  122.         menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
  123.        
  124.         new menu_msgid = g_msgid[id]
  125.         new msg_block = get_msg_block(menu_msgid)
  126.         set_msg_block(menu_msgid, BLOCK_SET)
  127.         engclient_cmd(id, "joinclass", data)
  128.         set_msg_block(menu_msgid, msg_block)
  129.        
  130.         g_changed[id] = true
  131.         g_unassigned[id] = false
  132.         menu_destroy(menu);
  133.        
  134.         return PLUGIN_HANDLED;
  135. }


  136. public menu_chooseteam(id)
  137. {
  138.         if (is_user_connected(id) && !is_user_bot(id) && !is_user_hltv(id))
  139.         {
  140.                
  141.                 check_teams(id)
  142.                
  143.                 new text[512], len
  144.                
  145.                 len = format(text, 511,"\y夏威夷\r@\y多功能菜单^n^n")
  146.                
  147.                 if (g_changed[id])
  148.                 {
  149.                         len += format(text[len], 511 - len, "\w>>只能更换一次队伍::^n")
  150.                         len += format(text[len], 511 - len, "\d1. 恐怖分子^n")
  151.                         len += format(text[len], 511 - len, "\d2. 反恐精英^n")
  152.                         len += format(text[len], 511 - len,  "\d5. 自动选择^n")
  153.                         len += format(text[len], 511 - len, "\d6. 观看一族^n^n")
  154.                 }
  155.                 else
  156.                 {
  157.                         len += format(text[len], 511 - len, "\r>>选择你要加入的队伍::^n")
  158.                         len += format(text[len], 511 - len, "\r1. \w恐怖分子^n")
  159.                         len += format(text[len], 511 - len, "\r2. \w反恐精英^n")
  160.                         len += format(text[len], 511 - len, "\r5. \w自动选择^n")
  161.                 }

  162.                
  163.                 if ((g_allow_spec && !g_changed[id]))
  164.                 {
  165.                         len += format(text[len], 511 - len, "\r6. \w观看一族^n^n")
  166.                         len += format(text[len], 511 - len, "^n\r0. 取消^n")
  167.                         show_menu(id, Keysmenu_1, text, -1, "mainmenu")
  168.                 }
  169.                 else
  170.                 {
  171.                         len += format(text[len], 511 - len, "^n\r0. 取消^n")
  172.                         show_menu(id, Keysmenu_2, text, -1, "mainmenu")
  173.                 }
  174.                
  175.         }
  176. }

  177. public _menu_chooseteam(id, key)
  178. {
  179.         check_teams(id)
  180.         switch(key)
  181.         {
  182.                 case 0:
  183.                 {
  184.                         if (g_allow_t && !g_changed[id])
  185.                         {
  186.                                 team_join(id, "1")
  187.                                
  188.                                 menu_choosemodel_t(id)
  189.                         }
  190.                         //set_force_team_join_task(id, g_msgid[id])
  191.                        
  192.                 }
  193.                 case 1:
  194.                 {
  195.                         if (g_allow_ct && !g_changed[id])
  196.                         {
  197.                                 team_join(id, "2")
  198.                                
  199.                                 menu_choosemodel_ct(id)
  200.                         }
  201.                         //Send them to the submenu
  202.                        
  203.                 }
  204.                 case 4:
  205.                 {
  206.                         if (!g_changed[id])
  207.                         {
  208.                                 if (g_allow_t && g_allow_ct)
  209.                                 {
  210.                                         if (get_systime() % 2)
  211.                                         {
  212.                                                 team_join(id, "1")
  213.                                                 menu_choosemodel_t(id)
  214.                                         }
  215.                                         else
  216.                                         {
  217.                                                 team_join(id, "2")
  218.                                                 menu_choosemodel_ct(id)
  219.                                         }

  220.                                 }
  221.                                 else if (g_allow_t)
  222.                                 {
  223.                                         team_join(id, "1")
  224.                                         menu_choosemodel_t(id)
  225.                                         //Send them to the submenu
  226.                                 }
  227.                                 else if (g_allow_ct)
  228.                                 {
  229.                                         team_join(id, "2")
  230.                                         menu_choosemodel_ct(id)
  231.                                 }
  232.                         }
  233.                 }
  234.                 case 5:
  235.                 {
  236.                         if (!g_changed[id])
  237.                         {
  238.                                 force_team_join(id, g_msgid[id], "6", _)
  239.                         }
  240.                         //Send them to the submenu
  241.                        
  242.                 }
  243.                 case 9:
  244.                 {
  245.                         return PLUGIN_HANDLED;
  246.                 }
  247.         }
  248.        
  249.         return PLUGIN_HANDLED;
  250. }







  251. public message_show_menu(msgid, dest, id) {
  252.        
  253.        
  254.         static team_select[] = "#Team_Select"
  255.         static menu_text_code[sizeof team_select]
  256.         get_msg_arg_string(4, menu_text_code, sizeof menu_text_code - 1)
  257.        
  258.         //
  259.         //server_print("Graphic menu");
  260.        
  261.         if (!equal(menu_text_code, team_select))
  262.                 return PLUGIN_CONTINUE
  263.        
  264.        
  265.         g_msgid[id] = msgid
  266.         menu_chooseteam(id)
  267.        
  268.        
  269.         return PLUGIN_HANDLED
  270. }

  271. public message_vgui_menu(msgid, dest, id) {
  272.         if (get_msg_arg_int(1) != TEAM_SELECT_VGUI_MENU_ID)
  273.                 return PLUGIN_CONTINUE
  274.         //
  275.         //server_print("VGUI menu");
  276.        
  277.         g_msgid[id] = msgid
  278.         menu_chooseteam(id)
  279.        
  280.        
  281.         return PLUGIN_HANDLED
  282. }



  283. public check_teams(id)
  284. {
  285.         g_allow_t= true
  286.         g_allow_ct = true
  287.        
  288.        
  289.         new playerst[32], playersct[32]
  290.         get_players(playerst, g_num_t, "eh", "TERRORIST")
  291.         get_players(playersct, g_num_ct, "eh", "CT")
  292.        
  293.         if (get_pcvar_num(p_allow_spectators) && (g_num_t + g_num_ct > 1 || g_unassigned[id]))
  294.         {
  295.                 g_allow_spec = true
  296.         }
  297.         else
  298.         {
  299.                 g_allow_spec = false
  300.         }
  301.        
  302.        
  303.         if (get_user_team(id) == 2)//ct
  304.         {
  305.                 g_num_ct--
  306.         }
  307.         else if (get_user_team(id) == 1)//t
  308.         {
  309.                 g_num_t--
  310.         }
  311.        
  312.         if (get_pcvar_num(p_teambalance))
  313.         {
  314.                 new limit = get_pcvar_num(p_limitteams)
  315.                 if (g_num_t - g_num_ct >= limit)
  316.                 {
  317.                         g_allow_t = false
  318.                 }
  319.                 else if (g_num_ct - g_num_t >= limit)
  320.                 {
  321.                         g_allow_ct = false
  322.                 }
  323.         }
  324. }








  325. stock force_team_join(id, menu_msgid, team[] = "5",  class[] = "0") {
  326.         static jointeam[] = "jointeam"
  327.         if (class[0] == '0') {
  328.                 engclient_cmd(id, jointeam, team)
  329.                 g_changed[id] = true
  330.                 g_unassigned[id] = false
  331.                 return
  332.         }
  333.        
  334.         static msg_block, joinclass[] = "joinclass"
  335.         msg_block = get_msg_block(menu_msgid)
  336.         set_msg_block(menu_msgid, BLOCK_SET)
  337.         engclient_cmd(id, jointeam, team)
  338.         engclient_cmd(id, joinclass, class)
  339.         set_msg_block(menu_msgid, msg_block)
  340.        
  341.         g_changed[id] = true
  342.         g_unassigned[id] = false
  343. }
复制代码
改成那种 可以让玩家自由选择自定义人物模型的
效果图如下








本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注个册吧

×
 楼主| 发表于 2013-1-20 12:57:31 | 显示全部楼层 来自 中国–山东
不要沉 啊 ,大师们 出手 啊
回复

使用道具 举报

发表于 2013-2-3 22:12:16 | 显示全部楼层 来自 中国–山东
好东西 收下了
回复

使用道具 举报

发表于 2013-2-5 18:11:07 | 显示全部楼层 来自 中国–香港
附件: 您所在的用户组无法下载或查看附件
想幫你也幫不到了:$
回复

使用道具 举报

发表于 2013-6-5 10:38:11 | 显示全部楼层 来自 中国–江苏–连云港
有心想帮你看看,可惜看不到图片
回复

使用道具 举报

发表于 2013-11-12 22:34:22 | 显示全部楼层 来自 中国–辽宁–鞍山
这个插件好象需要B权限吧,我好象有这个插件。
回复

使用道具 举报

发表于 2015-3-30 14:03:28 | 显示全部楼层 来自 中国–广东–中山
张胜的{:4_121:}
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

快速回复 返回顶部 返回列表