Русское сообщество по скриптингу

последний раунд и голосование

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

последний раунд и голосование

Сообщение serega_xss » 23 дек 2012, 21:36

Доброго времени суток... Как сделать что бы был сначала последний раунд а потом после этого раунда было само голосование за карту... помогите.. за ранее спасибо..
[pawn]
  1. #include <amxmodx>

  2.  

  3. new const PLUGIN[] = "Super Mapchooser"

  4. new const VERSION[] = "2.0"

  5. new const AUTHOR[] = "Prayer"

  6.  

  7. #define FLOAT_TIMELIMIT         "mp_timelimit"

  8. #define STRING_NEXTMAP          "amx_nextmap"

  9. #define NUM_MAXROUNDS           "mp_maxrounds"

  10. #define NUM_WINLIMIT            "mp_winlimit"

  11.  

  12. #define NUM_SM_VOTEMAPS         "mapchooser_votemaps"

  13. #define NUM_SM_LANG             "mapchooser_lang"

  14. #define NUM_SM_TIME             "mapchooser_votetime"

  15.  

  16. #define NUM_SM_RED              "mapchooser_result_red"

  17. #define NUM_SM_GREEN            "mapchooser_result_green"

  18. #define NUM_SM_BLUE             "mapchooser_result_blue"

  19.  

  20. #define TASK_PLUGIN_ID          44747477 // +=:D

  21. #define TASK_SCREEN_ID          979699 // +=:D:=+

  22. #define TASK_RESULT_ID          12111 // :o

  23.  

  24. const HudLen = 512

  25.  

  26. new Array:g_mapName

  27. new g_mapNums

  28. new g_saveids[10]

  29.  

  30. new g_voteCount[10]

  31. new g_nextName[10]

  32. new g_lastMap[32]

  33. new g_currentMap[32]

  34. new g_mapVoteNum

  35.  

  36. new g_votemaps

  37. new g_maxspeed = 320

  38.  

  39. new bool:hasBlocked = false

  40. new bool:forceBlock = true

  41. new bool:voteStarted = true

  42. new bool:hasExtend = false

  43. new timeleft

  44.  

  45. new bool:hasBlind[33] = { false, ... }

  46. new g_msgScreenFade

  47.  

  48. new PlayersVoted = 0

  49. new PlayersNum = 0

  50.  

  51. new

  52.         g_result_red,

  53.         g_result_green,

  54.         g_result_blue

  55.  

  56. new MenuName[96]

  57.  

  58. enum ChatColor

  59. {

  60.         CHATCOLOR_NORMAL = 1,   // Normal

  61.         CHATCOLOR_GREEN,        // Green Color

  62.         CHATCOLOR_TEAM_COLOR,   // Red, grey, blue

  63.         CHATCOLOR_GREY,         // grey

  64.         CHATCOLOR_RED,          // Red

  65.         CHATCOLOR_BLUE,         // Blue

  66. }

  67.  

  68. new g_TeamName[][] =

  69. {

  70.         "",

  71.         "TERRORIST",

  72.         "CT",

  73.         "SPECTATOR"

  74. }

  75.  

  76. new g_msgSayText

  77. new g_msgTeamInfo

  78.  

  79. public plugin_init()

  80. {

  81.         register_plugin(PLUGIN, VERSION, AUTHOR)

  82.        

  83.         register_cvar("amx_extendmap_max",      "90.0")

  84.         register_cvar("amx_extendmap_step",     "15.0")

  85.        

  86.         register_cvar(NUM_SM_LANG,              "0")

  87.         register_cvar(NUM_SM_TIME,              "15")

  88.         register_cvar(NUM_SM_VOTEMAPS,          "5")

  89.        

  90.  

  91.         register_cvar(NUM_SM_RED,               "255") 

  92.         register_cvar(NUM_SM_GREEN,             "255")

  93.         register_cvar(NUM_SM_BLUE,              "255")

  94.        

  95.         register_event("ScreenFade",    "EVENT_ScreenFade",     "be")

  96.         register_event("TextMsg",       "EVENT_RestartRound",   "a",    "2&#Game_C","2&#Game_w")

  97.        

  98.         g_msgSayText = get_user_msgid("SayText")

  99.         g_msgTeamInfo = get_user_msgid("TeamInfo")

  100.         g_msgScreenFade = get_user_msgid("ScreenFade")

  101. }

  102.  

  103. public plugin_cfg()

  104. {

  105.         g_votemaps = get_cvar_num(NUM_SM_VOTEMAPS)

  106.        

  107.         if(g_votemaps > 8)

  108.                 set_cvar_num(NUM_SM_VOTEMAPS, 8)

  109.         else if(g_votemaps < 1)

  110.                 set_cvar_num(NUM_SM_VOTEMAPS, 1)

  111.        

  112.         g_votemaps = get_cvar_num(NUM_SM_VOTEMAPS)

  113.        

  114.         register_menucmd(register_menuid("superMapChooserMenu"), (-1^(-1<<(g_votemaps + 1))), "countVote")

  115.        

  116.         g_mapName = ArrayCreate(32)

  117.        

  118.         get_localinfo("lastMap", g_lastMap, sizeof g_lastMap -1)

  119.         set_localinfo("lastMap", "")

  120.        

  121.         new maps_ini_file[64]

  122.         get_localinfo("amxx_configsdir", maps_ini_file, sizeof maps_ini_file -1)

  123.        

  124.         format(maps_ini_file, sizeof maps_ini_file -1, "%s/maps.ini", maps_ini_file)

  125.        

  126.         if(!file_exists(maps_ini_file))

  127.                 get_cvar_string("mapcyclefile", maps_ini_file, sizeof maps_ini_file -1)

  128.        

  129.         if(loadSettings(maps_ini_file))

  130.                 cmdReloadTimer()

  131.        

  132.         g_maxspeed = get_cvar_num("sv_maxspeed")

  133.        

  134.         // bugfix: need for timeleft (cs time == amxx time): !(!(remaining == left)) || !(remaining != left) :o

  135.         server_cmd("sv_restart 1")

  136.        

  137.         get_mapname(g_currentMap, sizeof g_currentMap -1)

  138. }

  139.  

  140. public client_disconnect(id)

  141. {

  142.         remove_task(id+TASK_SCREEN_ID)

  143.         remove_task(id+TASK_RESULT_ID)

  144.        

  145.         hasBlind[id] = false

  146. }

  147.  

  148. public EVENT_RestartRound()

  149.         cmdReloadTimer()

  150.  

  151. public cmdReloadTimer()

  152. {

  153.         if(voteStarted)

  154.         {

  155.                 PlayersVoted = 0

  156.                 PlayersNum = 0

  157.                

  158.                 forceBlock = true

  159.                 hasBlocked = false

  160.                 voteStarted = false

  161.                

  162.                 new players[32], num, pid

  163.                 get_players(players, num)

  164.                 for(new i=0;i<num;i++)

  165.                 {

  166.                         pid = players[i]

  167.                        

  168.                         hasBlind[pid] = false

  169.                        

  170.                         remove_task(pid+TASK_SCREEN_ID)

  171.                         remove_task(pid+TASK_RESULT_ID)

  172.                        

  173.                         message_begin(MSG_ONE, g_msgScreenFade, _, pid)

  174.                         write_short(1<<0)

  175.                         write_short(1<<0)

  176.                         write_short(1<<0)

  177.                         write_byte(0)

  178.                         write_byte(0)

  179.                         write_byte(0)

  180.                         write_byte(0)

  181.                         message_end()

  182.                 }

  183.                

  184.                 if(!hasExtend)

  185.                 {

  186.                         switch(get_cvar_num(NUM_SM_LANG))

  187.                         {

  188.                                 case 0: colorChat(0, CHATCOLOR_RED, "Голосование прервано !")

  189.                                 case 1: colorChat(0, CHATCOLOR_RED, "Voting is interrupted!")

  190.                         }

  191.                 }

  192.                

  193.                 set_cvar_num("sv_maxspeed", g_maxspeed)

  194.                

  195.                 remove_task(TASK_PLUGIN_ID)

  196.                

  197.                 set_task(8.0, "taskListening", TASK_PLUGIN_ID, "", 0, "b")

  198.                 taskListening()

  199.         }

  200. }

  201.  

  202. public taskListening()

  203. {

  204.         timeleft = get_timeleft()

  205.        

  206.         if(!hasBlocked && (timeleft <= (get_cvar_num(NUM_SM_TIME) + 14)))

  207.         {

  208.                 change_task(TASK_PLUGIN_ID, 1.0)

  209.                

  210.                 hasBlocked = true

  211.         }

  212.         else if(timeleft <= (5 + get_cvar_num(NUM_SM_TIME)))//5 sekynd - skoka ostaetsia do smeni karti posle okon4ania golosovania

  213.         {

  214.                 remove_task(TASK_PLUGIN_ID)

  215.                

  216.                 forceBlock = false

  217.                 hasBlocked = false

  218.                 hasExtend = false

  219.                

  220.                 g_result_red = get_cvar_num(NUM_SM_RED)

  221.                 g_result_green = get_cvar_num(NUM_SM_GREEN)

  222.                 g_result_blue = get_cvar_num(NUM_SM_BLUE)

  223.                

  224.                 set_cvar_num("sv_maxspeed", 0)

  225.                

  226.                 switch(get_cvar_num(NUM_SM_LANG))

  227.                 {

  228.                         case 0: format(MenuName, sizeof MenuName -1, "Проголосуйте за следующую карту")

  229.                         case 1: format(MenuName, sizeof MenuName -1, "Vote for the next map")

  230.                 }

  231.                

  232.                 cmdVoteNextmap()

  233.         }

  234. }

  235.  

  236. public cmdVoteNextmap()

  237. {

  238.         new

  239.                 winlimit,

  240.                 maxrounds

  241.        

  242.         winlimit = get_cvar_num(NUM_WINLIMIT)

  243.         maxrounds = get_cvar_num(NUM_MAXROUNDS)

  244.        

  245.         new

  246.                 mkeys = ((1<<g_votemaps) + 1),

  247.                 menu[HudLen],

  248.                 a

  249.        

  250.         new pos = format(menu, HudLen -1, "     \r%s:^n^n", MenuName)

  251.         new dmax = (g_mapNums > g_votemaps) ? g_votemaps : g_mapNums

  252.        

  253.         new unki = 0

  254.        

  255.         for(g_mapVoteNum = 0; g_mapVoteNum < dmax; g_mapVoteNum++)

  256.         {

  257.                 a = random_num(0, g_mapNums -1)

  258.                

  259.                 while(isInMenu(a))

  260.                 {

  261.                         if(++a >= g_mapNums)

  262.                         {

  263.                                 a = 0

  264.                         }

  265.                 }

  266.                

  267.                 g_nextName[g_mapVoteNum] = a

  268.                

  269.                 pos += format(menu[pos], HudLen -1, "     \y%d.\w %a^n", g_mapVoteNum + 1, ArrayGetStringHandle(g_mapName, a))

  270.                

  271.                 g_saveids[unki] = a

  272.                 unki++

  273.                

  274.                 mkeys |= (1<<g_mapVoteNum)

  275.                

  276.                 g_voteCount[g_mapVoteNum] = 0

  277.         }

  278.        

  279.         g_voteCount[g_votemaps] = 0

  280.         g_voteCount[g_votemaps + 1] = 0

  281.        

  282.         new language = get_cvar_num(NUM_SM_LANG)

  283.        

  284.         if(((winlimit + maxrounds) == 0) && (get_cvar_float(FLOAT_TIMELIMIT) < get_cvar_float("amx_extendmap_max")))

  285.         {

  286.                 switch(language)

  287.                 {

  288.                         case 0: pos += format(menu[pos], HudLen -1, "     \y%d.\w %s \y[продлить]", g_votemaps + 1, g_currentMap)

  289.                         case 1: pos += format(menu[pos], HudLen -1, "     \y%d.\w %s \y[prolong]", g_votemaps + 1, g_currentMap)

  290.                 }

  291.                

  292.                 mkeys |= (1<<g_votemaps)

  293.         }

  294.        

  295.         set_task(get_cvar_float(NUM_SM_TIME), "checkVotes", TASK_PLUGIN_ID)

  296.        

  297.         new players[32], pid

  298.         get_players(players, PlayersNum)

  299.         for(new i=0;i<PlayersNum;i++)

  300.         {

  301.                 pid = players[i]

  302.                

  303.                 hasBlind[pid] = true

  304.                

  305.                 show_menu(pid, mkeys, menu, get_cvar_num(NUM_SM_TIME), "superMapChooserMenu")

  306.                

  307.                 switch(language)

  308.                 {

  309.                         case 0: colorChat(pid, CHATCOLOR_GREEN, "Голосование начато !")

  310.                         case 1: colorChat(pid, CHATCOLOR_GREEN, "Voting started")

  311.                 }

  312.                

  313.                 client_cmd(pid, "spk gman/gman_choose1")

  314.                

  315.                 message_begin(MSG_ONE, g_msgScreenFade, _, pid)

  316.                 write_short(1<<12)      // Duration

  317.                 write_short(1<<9)       // Hold time

  318.                 write_short(1<<0)       // Fade type

  319.                 write_byte(0)           // Red

  320.                 write_byte(0)           // Green

  321.                 write_byte(0)           // Blue

  322.                 write_byte(255)         // Alpha

  323.                 message_end()

  324.                

  325.                 set_task(1.0, "cmdFadeScreen", pid+TASK_SCREEN_ID, "", 0, "b")

  326.         }

  327.        

  328.         voteStarted = true

  329.        

  330.         log_amx("Super Vote: Voting for the nextmap started")

  331. }

  332.  

  333. public checkVotes()

  334. {

  335.         new bolt = 0

  336.        

  337.         for(new a = 0; a < g_mapVoteNum; a++)

  338.         {

  339.                 if(g_voteCount[bolt] < g_voteCount[a])

  340.                 {

  341.                         bolt = a

  342.                 }

  343.         }

  344.        

  345.         //clear removed channel #2 :/

  346.         set_hudmessage(_,_,_,_,_,_,_,_,_,_,2)

  347.         show_hudmessage(0, " ")

  348.        

  349.         new players[32], num, pid

  350.         get_players(players, num)

  351.        

  352.         if((g_voteCount[g_votemaps] > g_voteCount[bolt]) && (g_voteCount[g_votemaps] > g_voteCount[g_votemaps + 1]))

  353.         {      

  354.                 new Float:steptime = get_cvar_float("amx_extendmap_step")

  355.                

  356.                 set_cvar_float(FLOAT_TIMELIMIT, get_cvar_float(FLOAT_TIMELIMIT) + steptime)

  357.                

  358.                 set_hudmessage(255, 127, 0, -1.0, 0.25, 2, 0.1, 10.0, 0.05, 1.0, 1)

  359.                

  360.                 for(new i=0;i<num;i++)

  361.                 {

  362.                         pid = players[i]

  363.                        

  364.                         switch(get_cvar_num(NUM_SM_LANG))

  365.                         {

  366.                                 case 0:

  367.                                 {

  368.                                         colorChat(pid, CHATCOLOR_GREEN, "Голосование завершено.^x01 Эта карта продлена на %.0f мин", steptime)

  369.                                        

  370.                                         show_hudmessage(pid, "Эта карта продлена на %.0f мин", steptime)

  371.                                 }

  372.                                 case 1:

  373.                                 {

  374.                                         colorChat(pid, CHATCOLOR_GREEN, "Voting is finished. This map is prolonged on %.0f minutes", steptime)

  375.                                         show_hudmessage(pid, "This map is prolonged on %.0f minutes", steptime)

  376.                                 }

  377.                         }

  378.                 }

  379.                

  380.                 log_amx("Super Vote: Voting for the nextmap finished. Map %s will be extended to next %.0f minutes", g_currentMap, steptime)

  381.                

  382.                 hasExtend = true

  383.                

  384.                 cmdReloadTimer()

  385.                

  386.                 return

  387.         }

  388.        

  389.         new smap[32]

  390.        

  391.         if(g_voteCount[bolt] && (g_voteCount[g_votemaps + 1] <= g_voteCount[bolt]))

  392.         {

  393.                 ArrayGetString(g_mapName, g_nextName[bolt], smap, sizeof smap -1)

  394.                 set_cvar_string(STRING_NEXTMAP, smap)

  395.         }

  396.        

  397.         get_cvar_string(STRING_NEXTMAP, smap, sizeof smap -1)

  398.        

  399.         set_hudmessage(255, 127, 0, -1.0, 0.42, 2, 0.1, 10.0, 0.05, 1.0, 1)

  400.        

  401.         for(new i=0;i<num;i++)

  402.         {

  403.                 pid = players[i]

  404.                

  405.                 remove_task(pid+TASK_RESULT_ID)

  406.                

  407.                 switch(get_cvar_num(NUM_SM_LANG))

  408.                 {

  409.                         case 0:

  410.                         {

  411.                                 colorChat(pid, CHATCOLOR_GREEN, "Голосование завершено.^x01 Следующая карта:^x04 %s", smap)

  412.                                

  413.                                 show_hudmessage(pid, "Следующая карта %s", smap)

  414.                         }

  415.                         case 1:

  416.                         {

  417.                                 colorChat(pid, CHATCOLOR_GREEN, "Voting is finished.^x01 Nextmap:^x04 %s", smap)

  418.                                 show_hudmessage(pid, "Nextmap will be %s", smap)

  419.                         }

  420.                 }

  421.         }

  422.        

  423.         log_amx("Super Vote: Voting for the nextmap finished. The nextmap will be %s", smap)

  424. }

  425.  

  426. public countVote(id, key)

  427. {

  428.         if(!voteStarted && forceBlock)

  429.                 return PLUGIN_HANDLED

  430.        

  431.         if(get_cvar_float("amx_vote_answers"))

  432.         {

  433.                 new name[32]

  434.                 get_user_name(id, name, sizeof name -1)

  435.                

  436.                 if(key == g_votemaps)

  437.                 {

  438.                         switch(get_cvar_num(NUM_SM_LANG))

  439.                         {

  440.                                case 0: colorChat(0, CHATCOLOR_GREEN, "%s^x01 проголосовал за^x04 продление карты", name)

  441.                                 case 1: colorChat(0, CHATCOLOR_GREEN, "%s^x01 chose^x04 map extending", name)

  442.                         }

  443.                 }

  444.                 else if(key < g_votemaps)

  445.                 {

  446.                         new map[32]

  447.                         ArrayGetString(g_mapName, g_nextName[key], map, sizeof map -1)

  448.                        

  449.                         switch(get_cvar_num(NUM_SM_LANG))

  450.                         {

  451.                                 case 0: colorChat(0, CHATCOLOR_GREEN, "%s^x01 проголосовал за^x04 %s", name, map)

  452.                                 case 1: colorChat(0, CHATCOLOR_GREEN, "%s^x01 chose^x04 %s", name, map)

  453.                         }

  454.                 }

  455.                

  456.                 cmdShowResults(id+TASK_RESULT_ID)

  457.                 set_task(0.8, "cmdShowResults", id+TASK_RESULT_ID, "", 0, "b")

  458.         }

  459.        

  460.         client_cmd(id, "spk UI/buttonclickrelease")

  461.        

  462.         g_voteCount[key]++

  463.         PlayersVoted++

  464.        

  465.         return PLUGIN_HANDLED

  466. }

  467.  

  468. public cmdShowResults(pid)

  469. {

  470.         static id

  471.         id = pid-TASK_RESULT_ID

  472.        

  473.         if(is_user_connected(id))

  474.         {

  475.                 static i, len, language, message[HudLen]

  476.                

  477.                 language = get_cvar_num(NUM_SM_LANG)

  478.                

  479.                 switch(language)

  480.                 {

  481.                         case 0: len = format(message, sizeof message -1, "Результаты голосования^n^n")

  482.                         case 1: len = format(message, sizeof message -1, "Results of voting^n^n")

  483.                 }

  484.                

  485.                 for(i=0;i<g_votemaps;i++)

  486.                 {

  487.                         len += format(message[len], HudLen -1, "[%d] | %a^n", g_voteCount[i], ArrayGetStringHandle(g_mapName, g_saveids[i]))

  488.                 }

  489.                

  490.                 switch(language)

  491.                 {

  492.                         case 0:

  493.                         {

  494.                                 len += format(message[len], HudLen -1, "[%d] | %s [продливаемая]^n^n", g_voteCount[i], g_currentMap)

  495.                                 len += format(message[len], HudLen -1, "Всего проголосовало: %d из %d", PlayersVoted, PlayersNum)

  496.                         }

  497.                         case 1:

  498.                         {

  499.                                 len += format(message[len], HudLen -1, "[%d] | %s [prolonged]^n^n", g_voteCount[i], g_currentMap)

  500.                                 len += format(message[len], HudLen -1, "In total has voted: %d from %d", PlayersVoted, PlayersNum)

  501.                         }

  502.                 }

  503.                

  504.                 set_hudmessage(g_result_red, g_result_green, g_result_blue, 0.36, 0.3, 0, 1.0, 4.0, 0.1, 0.2, 2)

  505.                 show_hudmessage(id, "%s", message)

  506.         }

  507. }

  508.  

  509. public EVENT_ScreenFade(id)

  510. {

  511.         if(hasBlind[id])

  512.         {

  513.                 set_task(0.6, "cmdFadeScreen", id+TASK_SCREEN_ID)

  514.         }

  515. }

  516.  

  517. public cmdFadeScreen(pid)

  518. {

  519.         new id = pid-TASK_SCREEN_ID

  520.        

  521.         if(is_user_connected(id))

  522.         {

  523.                 message_begin(MSG_ONE, g_msgScreenFade, _, id)

  524.                 write_short(1<<0)       // Duration

  525.                 write_short(1<<0)       // Hold time

  526.                 write_short(1<<2)       // Fade type

  527.                 write_byte(0)           // Red

  528.                 write_byte(0)           // Green

  529.                 write_byte(0)           // Blue

  530.                 write_byte(255)         // Alpha

  531.                 message_end()

  532.         }

  533. }

  534.  

  535. public plugin_end()

  536. {

  537.         new current_map[32]

  538.        

  539.         set_cvar_num("sv_maxspeed", g_maxspeed)

  540.        

  541.         get_mapname(current_map, sizeof current_map -1)

  542.         set_localinfo("lastMap", current_map)

  543. }

  544.  

  545. stock bool:ValidMap(mapname[])

  546. {

  547.         if(is_map_valid(mapname))

  548.         {

  549.                 return true

  550.         }

  551.        

  552.         new len = strlen(mapname) -4

  553.        

  554.         if(len < 0)

  555.         {

  556.                 return false

  557.         }

  558.        

  559.         if(equali(mapname[len], ".bsp"))

  560.         {

  561.                 mapname[len] = '^0'

  562.                

  563.                 if(is_map_valid(mapname))

  564.                 {

  565.                         return true

  566.                 }

  567.         }

  568.        

  569.         return false

  570. }

  571.  

  572. loadSettings(filename[])

  573. {

  574.         if(!file_exists(filename))

  575.                 return 0

  576.  

  577.         new

  578.                 currentMap[32],

  579.                 szText[32],

  580.                 buff[256]

  581.        

  582.         get_mapname(currentMap, sizeof currentMap -1)

  583.  

  584.         new fp = fopen(filename, "r")

  585.        

  586.         while(!feof(fp))

  587.         {

  588.                 buff[0] = '^0'

  589.                

  590.                 fgets(fp, buff, sizeof buff -1)

  591.                

  592.                 parse(buff, szText, sizeof szText -1)

  593.                

  594.                 if((szText[0] != ';') && ValidMap(szText) && !equali(szText, g_lastMap) && !equali(szText, currentMap))

  595.                 {

  596.                         ArrayPushString(g_mapName, szText)

  597.                        

  598.                         g_mapNums++

  599.                 }

  600.         }

  601.        

  602.         fclose(fp)

  603.  

  604.         return g_mapNums

  605. }

  606.  

  607. bool:isInMenu(id)

  608. {

  609.         for(new a = 0; a < g_mapVoteNum; a++)

  610.         {

  611.                 if(id == g_nextName[a])

  612.                 {

  613.                         return true

  614.                 }

  615.         }

  616.        

  617.         return false

  618. }

  619.  

  620. colorChat(id, ChatColor:color, const msg[], {Float,Sql,Result,_}:...)

  621. {

  622.         new team, index, MSG_Type

  623.         new bool:teamChanged = false

  624.         static message[192]

  625.        

  626.         switch(color)

  627.         {

  628.                 case CHATCOLOR_NORMAL: // Normal

  629.                 {

  630.                         message[0] = 0x01;

  631.                 }

  632.                 case CHATCOLOR_GREEN: // Green

  633.                 {

  634.                         message[0] = 0x04;

  635.                 }

  636.                 default: // Grey, Red, Blue

  637.                 {

  638.                         message[0] = 0x03;

  639.                 }

  640.         }

  641.        

  642.         vformat(message[1], 190, msg, 4);

  643.        

  644.         if(id == 0)

  645.         {

  646.                 index = findAnyPlayer();

  647.                 MSG_Type = MSG_ALL;

  648.         }

  649.         else

  650.         {

  651.                 index = id;

  652.                 MSG_Type = MSG_ONE;

  653.         }

  654.         if(index != 0)

  655.         {

  656.                 team = get_user_team(index);   

  657.                 if(color == CHATCOLOR_RED && team != 1)

  658.                 {

  659.                         messageTeamInfo(index, MSG_Type, g_TeamName[1])

  660.                         teamChanged = true

  661.                 }

  662.                 else

  663.                 if(color == CHATCOLOR_BLUE && team != 2)

  664.                 {

  665.                         messageTeamInfo(index, MSG_Type, g_TeamName[2])

  666.                         teamChanged = true

  667.                 }

  668.                 else

  669.                 if(color == CHATCOLOR_GREY && team != 0)

  670.                 {

  671.                         messageTeamInfo(index, MSG_Type, g_TeamName[0])

  672.                         teamChanged = true

  673.                 }

  674.                 messageSayText(index, MSG_Type, message);

  675.                 if(teamChanged)

  676.                 {

  677.                         messageTeamInfo(index, MSG_Type, g_TeamName[team])

  678.                 }

  679.         }

  680. }

  681.  

  682. messageSayText(id, type, message[])

  683. {

  684.         message_begin(type, g_msgSayText, _, id)

  685.         write_byte(id)         

  686.         write_string(message)

  687.         message_end()

  688. }

  689.        

  690. messageTeamInfo(id, type, team[])

  691. {

  692.         message_begin(type, g_msgTeamInfo, _, id)

  693.         write_byte(id)

  694.         write_string(team)

  695.         message_end()

  696. }

  697.        

  698. findAnyPlayer()

  699. {

  700.         static players[32], inum, pid

  701.        

  702.         get_players(players, inum, "ch")

  703.        

  704.         for (new a = 0; a < inum; a++)

  705.         {

  706.                 pid = players[a]

  707.                 if(is_user_connected(pid))

  708.                         return pid

  709.         }

  710.        

  711.         return 0

  712. }
[/pawn]
Аватара пользователя
serega_xss
 
Сообщения: 84
Зарегистрирован: 18 сен 2012, 14:47
Благодарил (а): 19 раз.
Поблагодарили: 1 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19

cron