Рандомный раунд(
| |
Foxik
|
Дата: Суббота, 13.04.2019, 10:02:43 | Сообщение # 1 |
|
Сообщений: 15
Репутация: 0 [ +/- ]
|
|
Здравствуйте,возможен ли такой плагин,чтобы к примеру выбирался случайный раунд ну или через каждые 5 ,и случайный игрок.Например через каждые 5 нормальных раундов,выбирался один тт(рандомно) ,а все остальные за ст и все они против него одного,после того как кто то из команд выиграл,то начинались снова нормальные раунды?Help,сам только начинаю,не особо бум бум в этом,может у кого был уже такой?(((
|
|
| |
polo79655
|
Дата: Суббота, 13.04.2019, 11:22:44 | Сообщение # 2 |
|
Сообщений: 99
Репутация: -1 [ +/- ]
|
|
Код new round = 0; public OnMapStart() { round = 0; } public OnPluginStart() { HookEvent("round_end", event_round_end, EventHookMode_Pre); HookEvent("round_start", round_start); }
public Action:event_round_end(Handle:event, const String:name[], bool:dontBroadcast) { round++; }
public Action:round_start(Handle:event, const String:name[], bool:dontBroadcast) { if (round == 5 || round == 10) // указываешь раунды, которые тебе нужны { new massiv[MAXPLAYERS+1]; new j=0; for (new i=1;i<=MaxClients;i++) { if (IsClientInGame(i) && GetClientTeam(i) > 1 && IsPlayerAlive(i)) { massiv[j] = i; j++; } } твоя цель в этом раунде = massiv[GetRandomInt(0, j-1)]; // дальше переводи всех игроков кроме него за другую команду } }
|
|
| |
Foxik
|
Дата: Суббота, 13.04.2019, 11:38:38 | Сообщение # 3 |
|
Сообщений: 15
Репутация: 0 [ +/- ]
|
|
polo79655, это не совсем понял,объясни плз((( твоя цель в этом раунде = massiv[GetRandomInt(0, j-1)]; // дальше переводи всех игроков кроме него за другую команду И можно ли добавить тт 250 здоровья ? SetEntityHealth(client, 250);
Сообщение отредактировал Foxik - Суббота, 13.04.2019, 12:01:01 |
|
| |
polo79655
|
Дата: Суббота, 13.04.2019, 16:36:18 | Сообщение # 4 |
|
Сообщений: 99
Репутация: -1 [ +/- ]
|
|
Что именно объяснить? Ну да, можно, так и добавляйЦитата Foxik ( ) SetEntityHealth(client, 250);
|
|
| |
Foxik
|
Дата: Суббота, 13.04.2019, 18:06:02 | Сообщение # 5 |
|
Сообщений: 15
Репутация: 0 [ +/- ]
|
|
polo79655, а куда добавлять?я же говорю в этом совсем пока плох(((
|
|
| |
polo79655
|
Дата: Суббота, 13.04.2019, 19:14:25 | Сообщение # 6 |
|
Сообщений: 99
Репутация: -1 [ +/- ]
|
|
Цитата Foxik ( ) в этом совсем пока плох Здесь все просто. Ты делаешь проверку в начале раунда, является ли он пятый или десятым. Дальше я скинул, как выбрать случайного игрока. После чего переводишь всех кроме него за одну команду, или например его за террористов, а остальных игроков за кт.
Код new TvoyaTsel = massiv[GetRandomInt(0, j-1)]; if (GetClientTeam(TvoyaTsel) == 3) // если он за контров, то переводим его за террористов { CS_SwitchTeam(client, 2); CS_RespawnPlayer(client); } for (new i=1;i<=MaxClients;i++) { if (IsClientInGame(i) && GetClientTeam(i) == 2 && IsPlayerAlive(i) && i != TvoyaTsel) // переводим всех кто в игре, кто за теров, кто живой и кто не является твоей целью за кт { CS_SwitchTeam(i, 3); CS_RespawnPlayer(i); } }
|
|
| |
Foxik
|
Дата: Воскресенье, 14.04.2019, 10:22:32 | Сообщение # 7 |
|
Сообщений: 15
Репутация: 0 [ +/- ]
|
|
polo79655, Код new round = 0; public OnMapStart() { round = 0; } public OnPluginStart() { HookEvent("round_end", event_round_end, EventHookMode_Pre); HookEvent("round_start", round_start); }
public Action:event_round_end(Handle:event, const String:name[], bool:dontBroadcast) { round++; }
public Action:round_start(Handle:event, const String:name[], bool:dontBroadcast) { if (round == 5 || round == 10) // указываешь раунды, которые тебе нужны { new massiv[MAXPLAYERS+1]; new j=0; for (new i=1;i<=MaxClients;i++) { if (IsClientInGame(i) && GetClientTeam(i) > 1 && IsPlayerAlive(i)) { massiv[j] = i; j++; } } new TvoyaTsel = massiv[GetRandomInt(0, j-1)]; if (GetClientTeam(TvoyaTsel) == 3) // если он за контров, то переводим его за террористов { CS_SwitchTeam(client, 2); CS_RespawnPlayer(client); } for (new i=1;i<=MaxClients;i++) { if (IsClientInGame(i) && GetClientTeam(i) == 2 && IsPlayerAlive(i) && i != TvoyaTsel) // переводим всех кто в игре, кто за теров, кто живой и кто не является твоей целью за кт { CS_SwitchTeam(i, 3); CS_RespawnPlayer(i); } } } } получается так?А вот куда прописывать чтобы дать тт 250hp?
Сообщение отредактировал Foxik - Воскресенье, 14.04.2019, 16:47:44 |
|
| |
polo79655
|
Дата: Воскресенье, 14.04.2019, 10:38:01 | Сообщение # 8 |
|
Сообщений: 99
Репутация: -1 [ +/- ]
|
|
Сам подумай, когда тебе нужно дать ему 250 хп?
|
|
| |
Foxik
|
Дата: Воскресенье, 14.04.2019, 11:20:41 | Сообщение # 9 |
|
Сообщений: 15
Репутация: 0 [ +/- ]
|
|
polo79655, всё,доделал,И ещё вопросик вот у меня рандомным способом выбирается 5 раунд и 10 а как сделать так,чтобы с 6 по 9 и после 10 раундов был автобаланс, а то получается так,что на 5 раунд одного перекидывает и все против него,но все остальные раунды тт так и остается одним(
Сообщение отредактировал Foxik - Воскресенье, 14.04.2019, 12:30:37 |
|
| |
polo79655
|
Дата: Воскресенье, 14.04.2019, 14:22:55 | Сообщение # 10 |
|
Сообщений: 99
Репутация: -1 [ +/- ]
|
|
Можно в конце 5 или 10 раунда менять, или в начале 6 или 1
Код if (round == 6 || round == 11) // указываешь раунды, которые идут после твоих раундов { for (new i = 1;i <= MaxClients;i++) { if (IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) > 1 ) { if (GetTeamClientCount(3) > GetTeamClientCount(2)) // если количество игроков у контров больше чем у теров, то переводим i за т { ChangeClientTeam(i, 2); } else // если количество равно или меньше, то наоборот { ChangeClientTeam(i, 3); } } } } (сори за пробелы и скобки, там сам поправь их)
|
|
| |
Foxik
|
Дата: Воскресенье, 14.04.2019, 14:33:32 | Сообщение # 11 |
|
Сообщений: 15
Репутация: 0 [ +/- ]
|
|
polo79655,Код for(new s = 1; s <= MaxClients; s++) if(IsValidClient(s)) { SetEntityHealth(s, 250); CS_SwitchTeam(s, 2); CS_RespawnPlayer(s); так правильно будет?
и куда вот это втсавлять?))
Код if (round == 6 || round == 11) // указываешь раунды, которые идут после твоих раундов { for (new i = 1;i <= MaxClients;i++) { if (IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) > 1 ) { if (GetTeamClientCount(3) > GetTeamClientCount(2)) // если количество игроков у контров больше чем у теров, то переводим i за т { ChangeClientTeam(i, 2); } else // если количество равно или меньше, то наоборот { ChangeClientTeam(i, 3); } } } }
Сообщение отредактировал Foxik - Воскресенье, 14.04.2019, 16:47:09 |
|
| |
polo79655
|
Дата: Воскресенье, 14.04.2019, 16:26:29 | Сообщение # 12 |
|
Сообщений: 99
Репутация: -1 [ +/- ]
|
|
Цитата Foxik ( ) и куда вот это втсавлять Пытайся понимать, что ты делаешь, а не просто выпрашивать готовый код, где нужно все разжевать и положить в рот. А еще пользуйся цитатами и [cоde] код [/cоde], чтобы приятно и понятно можно было читать твой текст. В начале раунда делаешь проверку, если он является 6 или 11, то это значит, что 5 или 10 был особенным раундом, и теперь нужно сделать баланс по игрокам. Вставляешь это в Код public Action:round_start(Handle:event, const String:name[], bool:dontBroadcast) { } А тут я твой вопрос не понял, что правильно?
Цитата Foxik ( ) if(IsValidClient(s)) { SetEntityHealth(s, 250); CS_SwitchTeam(s, 2); CS_RespawnPlayer(s); так правильно будет?
|
|
| |
Foxik
|
Дата: Воскресенье, 14.04.2019, 16:39:54 | Сообщение # 13 |
|
Сообщений: 15
Репутация: 0 [ +/- ]
|
|
polo79655, да я пытаюсь понять (cорри)и вставил это сам, то есть сюда (правильно значит вставил,значит всё таки начинаю понимать)
Код public Action:round_start(Handle:event, const String:name[], bool:dontBroadcast) { }
но после этого у меня 6 и 11 раунды начинаются всё сначала,то есть сбрасывается весь счет игроков перекидывает всё норм,но вот всё начинается с 1 раунда и всё по нулям.а то и вовсе убивает оставляет в команде по одному
А тут я правильно дал скорость тт?
Код if(IsValidClient(s)) { SetEntityHealth(s, 250); CS_SwitchTeam(s, 2); CS_RespawnPlayer(s);
(cорри недавно на этом форуме(((
Сообщение отредактировал Foxik - Воскресенье, 14.04.2019, 17:35:10 |
|
| |
polo79655
|
Дата: Понедельник, 15.04.2019, 10:52:02 | Сообщение # 14 |
|
Сообщений: 99
Репутация: -1 [ +/- ]
|
|
Цитата Foxik ( ) А тут я правильно дал скорость тт?
Код if(IsValidClient(s)) { SetEntityHealth(s, 250); CS_SwitchTeam(s, 2); CS_RespawnPlayer(s);
Ты здесь не даешь никакую скорость, проверяешь валидность клиента, и если он нормальный, то ты выдаешь ему 250 хп, переводишь за команду террористов, а потом возрождаешь его, тем самым у него снова будет 100 хп, надо выдавать их после.
Цитата Foxik ( ) начинаются всё сначала,то есть сбрасывается весь счет игроков перекидывает всё норм,но вот всё начинается с 1 раунда и всё по нулям.а то и вовсе убивает оставляет в команде по одному Насчет этого я помочь не смогу, не понимаю, почему у тебя там кого-то убивает, но если раунды обнуляются, то тут поможет эта тема http://world-source.ru/forum/100-2330-1
|
|
| |
Brodyaga73
|
Дата: Понедельник, 15.04.2019, 12:40:27 | Сообщение # 15 |
|
Сообщений: 10
Репутация: 1 [ +/- ]
|
|
Цитата Foxik ( ) но после этого у меня 6 и 11 раунды начинаются всё сначала,то есть сбрасывается весь счет игроков перекидывает всё норм,но вот всё начинается с 1 раунда и всё по нулям.а то и вовсе убивает оставляет в команде по одному Попробуй это заменить
Код if (GetTeamClientCount(3) > GetTeamClientCount(2)) // если количество игроков у контров больше чем у теров, то переводим i за т { ChangeClientTeam(i, 2); } else // если количество равно или меньше, то наоборот { ChangeClientTeam(i, 3); } } } }
на это и добавить CS_RespawnPlayer вот так:
вот так крч пробуй
Код if (GetTeamClientCount(3) > GetTeamClientCount(2)) // если количество игроков у контров больше чем у теров, то переводим i за т { CS_SwitchTeam(i, 2); CS_RespawnPlayer(i); } else // если количество равно или меньше, то наоборот { CS_SwitchTeam(i, 3); CS_RespawnPlayer(i); } Функция ChangeClientTeam в ксс убивает (если память не подводит))
Сообщение отредактировал Brodyaga73 - Понедельник, 15.04.2019, 12:46:45 |
|
| |
|