[CSS:OB]Плагин респавна игрока после смерти

sckasck

Участник
Сообщения
97
Реакции
15
Мне нужен плагин респавна игроков после смерти с возможностью включения и отключения плагина командой.
 

Ganter1234

Участник
Сообщения
1,149
Реакции
668
Не пробовал, но должно работать
 

Вложения

  • respawner.sp
    893 байт · Просмотры: 22
  • respawner.smx
    3.2 КБ · Просмотры: 20

Grey83

не пишу плагины с весны 2022
Сообщения
8,828
Реакции
5,267
@Ganter1234, раз уж начал на новом синтаксисе писать, то пиши на нём полностью
И ещё: а если GetClientOfUserId() вернёт 0? Где проверка?

Вот что-то типа этого:
C-подобный:
#pragma semicolon 1

#include <cstrike>

public Plugin myinfo =
{
    name    = "Respawner",
    author    = "Ganter1234",
    version    = "1.0"
}

bool Respawn[MAXPLAYERS+1];

public void OnPluginStart()
{
    RegConsoleCmd("sm_respawnon", Cmd_On);
    RegConsoleCmd("sm_respawnoff", Cmd_Off);

    HookEvent("player_death", Event_Death);
}

public void OnClientDisconnect(int client)
{
    Respawn[client] = true;
}

public void Event_Death(Event event, const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(event.GetInt("userid"));
    if(client && GetClientTeam(client) > CS_TEAM_SPECTATOR && Respawn[client]) CS_RespawnPlayer(client);
}

public Action Cmd_On(int client, int args)
{
    Respawn[client] = true;
}

public Action Cmd_Off(int client, int args)
{
    Respawn[client] = false;
}
Сообщения автоматически склеены:

с возможностью включения и отключения плагина командой.
имеется в виду, что админ может отключить возрождение всем или то, как сделал Ganter1234?
 
Последнее редактирование:

Ganter1234

Участник
Сообщения
1,149
Реакции
668
@Ganter1234, раз уж начал на новом синтаксисе писать, то пиши на нём полностью
И ещё: а если GetClientOfUserId() вернёт 0? Где проверка?

Вот что-то типа этого:
C-подобный:
#pragma semicolon 1

#include <cstrike>

public Plugin myinfo =
{
    name    = "Respawner",
    author    = "Ganter1234",
    version    = "1.0"
}

bool Respawn[MAXPLAYERS+1];

public void OnPluginStart()
{
    RegConsoleCmd("sm_respawnon", Cmd_On);
    RegConsoleCmd("sm_respawnoff", Cmd_Off);

    HookEvent("player_death", Event_Death);
}

public void OnClientDisconnect(int client)
{
    Respawn[client] = true;
}

public void Event_Death(Event event, const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(event.GetInt("userid"));
    if(client && GetClientTeam(client) > CS_TEAM_SPECTATOR && Respawn[client]) CS_RespawnPlayer(client);
}

public Action Cmd_On(int client, int args)
{
    Respawn[client] = true;
}

public Action Cmd_Off(int client, int args)
{
    Respawn[client] = false;
}
Сообщения автоматически склеены:


имеется в виду, что админ может отключить возрождение всем или то, как сделал Ganter1234?
Я прост все еще не умею на новом писать, поэтому такая каша, поправил.

UPD: Проверил на сервере, когда респавнишся все равно остаешься мертвым, добавил таймер
 

Вложения

  • respawner.smx
    3.4 КБ · Просмотры: 8
  • respawner.sp
    1.2 КБ · Просмотры: 9
Последнее редактирование:

sckasck

Участник
Сообщения
97
Реакции
15
Я прост все еще не умею на новом писать, поэтому такая каша, поправил.

UPD: Проверил на сервере, когда респавнишся все равно остаешься мертвым, добавил таймер
Плагин работает, но не ресает + ошибка:
C-подобный:
L 06/15/2021 - 15:32:51: [SM] Exception reported: Client index 0 is invalid
L 06/15/2021 - 15:32:51: [SM] Blaming: respawner.smx
 

Ganter1234

Участник
Сообщения
1,149
Реакции
668
Так, все работает. Но мне нужно чтобы всех ресало, а кваром можно было выключить плагин. Как на ДМ автореспавн.
Боже, так сказал бы что тебе нужно кваром а не командой (Пробуй)
 

Вложения

  • respawner.sp
    920 байт · Просмотры: 12
  • respawner.smx
    3.2 КБ · Просмотры: 10

Ganter1234

Участник
Сообщения
1,149
Реакции
668
@Ganter1234, ошибка будет, если игрок успеет выйти за 1 сек после смерти
Если это будет пусть добавит проверку в таймер, я уже устал
Сообщения автоматически склеены:

Если уменьшить интервал, ошибки не будет?
Да, до 0.1 можешь делать
 

sckasck

Участник
Сообщения
97
Реакции
15
В таймер нужно передавать не Clientid а Userid, и потом уже его проверять Userid > 0
Я уменьшил интервал. Чисто теоритически игрок не успеет выйти. Даже если успеет, то это не значительная ошибка. Как по мне🤔
 
Сверху Снизу