Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Возрождение рендомного игрока

Статус пользователя ssx
сообщение 27.1.2016, 1:02
Сообщение #1


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Помогите нормально написать функцию которая:
Когда все игроки мертвые и остались только боты, что бы через 2.5 сек возрождался случайный игрок.

Набыдлокодил вот такое:
Код:
public goto_respawn(player)
{
player -= 1910
if ( cs_get_user_team(player) == CS_TEAM_CT || cs_get_user_team(player) == CS_TEAM_T )
{
ExecuteHamB(Ham_CS_RoundRespawn,player)
new name[32]
get_user_name(player,name,31)
client_print_color(0, DontChange, "^1[В разработке функция] Игрок ^4%s ^1возродился что бы помочь своей команде!", name)
}
}

public client_death(killer, victim, wpnindex)
{
if( !task_exists(TASK_ID) )
{
new Players[32], Alive_Sum
get_players(Players,Alive_Sum,"ach")
if( Alive_Sum == 0 )
{
new Players[32]
new Count, i, player
get_players(Players, Count, "bch")
new rand = random_num(1, Count)
for (i=0; i<Count; i++)
{
player = Players[i]
if( rand == player )
{
if ( cs_get_user_team(player) == CS_TEAM_CT || cs_get_user_team(player) == CS_TEAM_T )
{
set_task(2.5, "goto_respawn", player + 1910)
TASK_ID = player + 1910
return PLUGIN_HANDLED
}
}
}
}
}
}


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Mistrick
сообщение 27.1.2016, 1:23
Сообщение #2


Стаж: 13 лет

Сообщений: 543
Благодарностей: 426
Полезность: 1034

Код:
public goto_respawn(player)
{
player -= 1910
if ( cs_get_user_team(player) == CS_TEAM_CT || cs_get_user_team(player) == CS_TEAM_T )
{
ExecuteHamB(Ham_CS_RoundRespawn,player)
new name[32]
get_user_name(player,name,31)
client_print_color(0, DontChange, "^1[В разработке функция] Игрок ^4%s ^1возродился что бы помочь своей команде!", name)
}
}

public client_death(killer, victim, wpnindex)
{
if( task_exists(TASK_ID) )
{
return PLUGIN_CONTINUE;
}
new players[32], pnum;
get_players(players, pnum, "ach")
if( pnum == 0 )
{
get_players(players, pnum, "bch");
if(pnum > 0)
{
new rand, CsTeams:team, player;
do{
rand = random(pnum);
player = players[rand];
team = cs_get_user_team(player);
} while( team == CS_TEAM_SPECTATOR || team == CS_TEAM_UNASSIGNED );

set_task(2.5, "goto_respawn", player + 1910);
TASK_ID = player + 1910
}
}
}


Отредактировал: Mistrick, - 27.1.2016, 1:23
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Safety1st
сообщение 27.1.2016, 9:52
Сообщение #3
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Mistrick, бесконечный цикл, если на сервере нет игроков в командах..
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 3 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 27.1.2016, 14:04
Сообщение #4


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Вроде работает норм .. но что-то за ночь пару раз виснул серв .. щас прописал дебаг плагину .. буду смотреть что да как .


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Mistrick
сообщение 27.1.2016, 14:34
Сообщение #5


Стаж: 13 лет

Сообщений: 543
Благодарностей: 426
Полезность: 1034

Эх, когда будет функция отсеивания игроков более чем по одной команде...
Код:
public goto_respawn(player)
{
player -= 1910
if ( cs_get_user_team(player) == CS_TEAM_CT || cs_get_user_team(player) == CS_TEAM_T )
{
ExecuteHamB(Ham_CS_RoundRespawn,player)
new name[32]; get_user_name(player,name,31)
client_print_color(0, DontChange, "^1[В разработке функция] Игрок ^4%s ^1возродился что бы помочь своей команде!", name)
}
}

public client_death(killer, victim, wpnindex)
{
if( task_exists(TASK_ID) )
{
return PLUGIN_CONTINUE;
}
new players[32], pnum;
get_players(players, pnum, "ach")
if( pnum == 0 )
{
get_players(players, pnum, "bch");
if(pnum > 0)
{
new rand, CsTeams:team, player, nonteam;
for(new i; i < pnum; i++)
{
player = players[i];
team = cs_get_user_team(player);
if(team == CS_TEAM_SPECTATOR || team == CS_TEAM_UNASSIGNED) nonteam++;
}

if(nonteam == pnum)
{
return PLUGIN_CONTINUE;
}

do{
rand = random(pnum);
player = players[rand];
team = cs_get_user_team(player);
} while( team == CS_TEAM_SPECTATOR || team == CS_TEAM_UNASSIGNED );

set_task(2.5, "goto_respawn", player + 1910);
TASK_ID = player + 1910
}
}
return PLUGIN_CONTINUE;
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: