Naujas round ir t.t.
- zirualas
- Gana aktyvus vartotojas
- Posts: 216
- Joined: 2010 Oct 16 21:33
- Skype: zirual
- Location: Vilnius
- Contact:
Naujas round ir t.t.
Taigi noreciau pklausti kaip padaryti, kad kai prasideda round'as po 10 sec viena zaideja permestu i T?
Re: Naujas round ir t.t.
Vieną atsitiktinį permes.
Code: Select all
#include <amxmodx>#include <cstrike> #define TASKID 98413 new g_maxplayers public plugin_init(){ register_event("HLTV", "Event_StartRound", "a", "1=0", "2=0") register_logevent("logevent_round_end", 2, "1=Round_End") register_message(get_user_msgid("TextMsg"), "message_TextMsg") g_maxplayers = get_maxplayers()} public Event_StartRound(){ if(!task_exists(TASKID)) set_task(10.0, "task", TASKID) } public logevent_round_end() remove_task(TASKID) public message_TextMsg(msg_id, msg_dest, id){ new buffer[32] get_msg_arg_string(2, buffer, 31) if(equal(buffer, "#Game_Commencing") || equal(buffer, "#Round_Draw") || containi(buffer, "#Game_will_restart") != -1) remove_task(TASKID)} public task(){ new Players[32], x, id for(id = 1; id <= g_maxplayers; id++) { if(!is_user_connected(id)) continue if(cs_get_user_team(id) == CS_TEAM_CT) Players[x++] = id } id = Players[random_num(0, x - 1)] if(is_user_connected(id)) cs_set_user_team(id, CS_TEAM_T)}
Last edited by beast on 2011 Jan 20 15:49, edited 1 time in total.
- zirualas
- Gana aktyvus vartotojas
- Posts: 216
- Joined: 2010 Oct 16 21:33
- Skype: zirual
- Location: Vilnius
- Contact:
Re: Naujas round ir t.t.
Aciu, bet noreciau, kad paaskintum sia vieta
Code: Select all
# public message_TextMsg(msg_id, msg_dest, id)# {# new buffer[32]# # get_msg_arg_string(2, buffer, 31)# # if(equal(buffer, "#Game_Commencing")# || equal(buffer, "#Round_Draw")# || containi(buffer, "#Game_will_restart") != -1)# {# if(task_exists(TASKID))# remove_task(TASKID)# }# }
Re: Naujas round ir t.t.
Pašalina task, kai įvyksta game commencing, round draw, round restart, tam, kad kitam raunde nebūtų perkelti du ar daugiau žaidejų į teroristų komandą (nes yra tikimybė, kad mano išvardinti atvejai gali įvykti dar nepraėjus 10 sek. nuo raundo pradžios).
Re: Naujas round ir t.t.
Yra nereikalingu tikrinimu...
Kaip gali ant StartRound buti tas taskas jei tu ji pasalini su round end arba su
Kur irgi ispirmu otpimaliau tikrint ar yra taskas nei kurt varus ir tikrint 3 stringus is kuriu Round Draw manau niekaip nenutiks per 10 sec...
O sita:
Ilgai galvojau kodel cia nenaudojai get_players, bet taip ir nesupratau... Tuo labiau kam 2 kartus tikrint ar useris connected ar manai per ta laika kol sita skaiciuos kas nors spes iseit...
P.S. Megstu kritikuot, nors kartais bunu neteisus
Code: Select all
public Event_StartRound(){ if(!task_exists(TASKID)) set_task(10.0, "task", TASKID) } public logevent_round_end(){ if(task_exists(TASKID)) remove_task(TASKID)}
Code: Select all
public message_TextMsg(msg_id, msg_dest, id){ new buffer[32] get_msg_arg_string(2, buffer, 31) if(equal(buffer, "#Game_Commencing") || equal(buffer, "#Round_Draw") || containi(buffer, "#Game_will_restart") != -1) { if(task_exists(TASKID)) remove_task(TASKID) }}
O sita:
Code: Select all
public task(){ new Players[32], x, id for(id = 1; id <= g_maxplayers; id++) { if(!is_user_connected(id)) continue if(cs_get_user_team(id) == CS_TEAM_CT) Players[x++] = id } id = Players[random_num(0, x - 1)] if(is_user_connected(id)) cs_set_user_team(id, CS_TEAM_T)}
P.S. Megstu kritikuot, nors kartais bunu neteisus

Last edited by newb on 2011 Jan 19 22:36, edited 1 time in total.
- aaarnas
- Vyr. diskusijų administratorius
- Posts: 3891
- Joined: 2010 Aug 31 13:21
- Skype: fiarno
- Contact:
Re: Naujas round ir t.t.
Be to, prieš remove_task nebūtina tikrinti ar task egzistuoja. Jei task nėra, tai remove_task paprasčiausiai gražins 0. Klaidos dėl to neįvyks.
Palikau CS pasaulį ;/ . Nebepasiekiamas.
- zirualas
- Gana aktyvus vartotojas
- Posts: 216
- Joined: 2010 Oct 16 21:33
- Skype: zirual
- Location: Vilnius
- Contact:
Re: Naujas round ir t.t.
O jei pavizdziui noriu padaryti kad i T permestu 3 - 4 zaidejus atsitiktinai, tai tureciau deti su random?
- aaarnas
- Vyr. diskusijų administratorius
- Posts: 3891
- Joined: 2010 Aug 31 13:21
- Skype: fiarno
- Contact:
Re: Naujas round ir t.t.
Code: Select all
public task(){ new Players[32], x, x2[33], c, id for(id = 1; id <= g_maxplayers; id++) { if(!is_user_connected(id)) continue if(cs_get_user_team(id) == CS_TEAM_CT) Players[x++] = id } while(c < 4) { id = Players[random_num(0, x - 1)] if(!x2[id]) { cs_set_user_team(id, CS_TEAM_T) x2[id] = true c++ } }}
Palikau CS pasaulį ;/ . Nebepasiekiamas.
Re: Naujas round ir t.t.
Newb, čia tik fail-safe patikrinimai. Toks jau mano programavimo stilius, geriau patikrinu, nei paskui gaunu errorą. Kiekvienas gali pasiredaguoti pagal savo stilių bei supratimo lygį. Beje dėl to get_players, tai jei gerai pamenu, su "e" flagu ten pasitaiko problemų kažkokiu tai atveju, dėl to nenaudojau.

Šito nežinojau.aaarnas wrote:Be to, prieš remove_task nebūtina tikrinti ar task egzistuoja. Jei task nėra, tai remove_task paprasčiausiai gražins 0. Klaidos dėl to neįvyks.

- zirualas
- Gana aktyvus vartotojas
- Posts: 216
- Joined: 2010 Oct 16 21:33
- Skype: zirual
- Location: Vilnius
- Contact:
Re: Naujas round ir t.t.
Pasileidziu serveri, ir nieko nevyksta...
Codas:
Codas:
Code: Select all
#define TASKID 98413 new g_maxplayers public plugin_init(){ register_plugin(PLUGIN, VERSION, AUTHOR) register_event("HLTV", "Event_StartRound", "a", "1=0", "2=0") register_logevent("logevent_round_end", 2, "1=Round_End") register_message(get_user_msgid("TextMsg"), "message_TextMsg") g_maxplayers = get_maxplayers()} public Event_StartRound(id){ if(!task_exists(TASKID)) client_print(id, print_chat, "BandauuuUuuuuuu!") set_task(10.0, "Choosing", TASKID) if(cs_get_user_team(id) == CS_TEAM_T) { cs_set_user_team(id, CS_TEAM_CT) }} public logevent_round_end(id) remove_task(TASKID) public message_TextMsg(msg_id, msg_dest, id){ new buffer[32] get_msg_arg_string(2, buffer, 31) if(equal(buffer, "#Game_Commencing") || equal(buffer, "#Round_Draw") || containi(buffer, "#Game_will_restart") != -1) remove_task(TASKID)} public Choosing(id){ new Players[32], x, x2[33], c, id client_print(id, print_chat, "BandauuuUuuuuuu!") for(id = 1; id <= g_maxplayers; id++) { if(!is_user_connected(id)) continue if(cs_get_user_team(id) == CS_TEAM_CT) Players[x++] = id } while(c < 4) { id = Players[random_num(0, x - 1)] if(!x2[id]) { cs_set_user_team(id, CS_TEAM_T) x2[id] = true c++ } }}
Who is online
Users browsing this forum: No registered users and 11 guests