На некоторых картах 100HP

  • Автор темы Denisy6ka
  • Дата начала
D

Denisy6ka

У меня сервер - 35hp, я поставил разные карты и на некоторых не 35hp как надо, а 100hp, кто-нибудь знает плагин что бы всегда было 35hp?
 

suremiur

♂ overlay master ♂
Сообщения
537
Реакции
585
Добрый день, если у вас все карты 35hp, то могу предложить свой вот такой простенький скрипт.
PHP:
public void OnPluginStart()
{
  HookEvent("player_spawn", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event hEvent, const char[] sName, bool bDontBroadcast)
{
   int   iUserId = hEvent.GetInt("userid");
   CreateTimer(1.0, hSpawnTimer, iUserId, TIMER_FLAG_NO_MAPCHANGE);
}

public Action hSpawnTimer(Handle hTimer, int iUserId)
{
   int   iClient = GetClientOfUserId(iUserId);
   if (iClient && GetClientHealth(iClient) != 35)
   {
       SetEntityHealth(iClient, 35);
   }
}
В начале раунда проходит 1 секунда и всем у кого не 35 хп - ставится 35 хп. Задержка нужна для подстраховки.

Приятного пользования!
 

Вложения

  • spawn35hp.smx
    4.8 КБ · Просмотры: 8

Islam Cherkess

Там мля о мля
Сообщения
1,504
Реакции
895
(iClient && GetClientHealth(iClient) != 35)

SetEntityHealth(iClient, 35);
Я наверно скажу что-то немыслимое,но тут походу задаётся сколько будет хп у людей,можно число изменить на 1 хп
И да,не нужно сверху прописывать инклуды sourcemod и sdkhooks?
 

suremiur

♂ overlay master ♂
Сообщения
537
Реакции
585
@Dmitry Ahipov
PHP:
(iClient && GetClientHealth(iClient) != 35)
Здесь происходит проверка. iClient - проверка на существование игрока. GetClientHealth(iClient) != 35 - проверяем кол-во хп у игрока, если оно не равно (!=) 35, то происходит само действие.
PHP:
SetEntityHealth(iClient, 35);
Установка игроку 35 хп!

Прописывать стандартные инклуды нет нужны, у некоторых эта привычка осталась со старых версий sm! :)
 

over_trax

Участник
Сообщения
1,451
Реакции
488
Добрый день, если у вас все карты 35hp, то могу предложить свой вот такой простенький скрипт.
PHP:
public void OnPluginStart()
{
  HookEvent("player_spawn", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event hEvent, const char[] sName, bool bDontBroadcast)
{
   int   iUserId = hEvent.GetInt("userid");
   CreateTimer(1.0, hSpawnTimer, iUserId, TIMER_FLAG_NO_MAPCHANGE);
}

public Action hSpawnTimer(Handle hTimer, int iUserId)
{
   int   iClient = GetClientOfUserId(iUserId);
   if (iClient && GetClientHealth(iClient) != 35)
   {
       SetEntityHealth(iClient, 35);
   }
}
В начале раунда проходит 1 секунда и всем у кого не 35 хп - ставится 35 хп. Задержка нужна для подстраховки.

Приятного пользования!
ещё бы установку хп отдельным командам добавить)
 

suremiur

♂ overlay master ♂
Сообщения
537
Реакции
585
@over_trax
Если я правильно вас понял, то так. :)
PHP:
public void OnPluginStart()
{
  HookEvent("player_spawn", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event hEvent, const char[] sName, bool bDontBroadcast)
{
    int    iUserId = hEvent.GetInt("userid");
    CreateTimer(1.0, hSpawnTimer, iUserId, TIMER_FLAG_NO_MAPCHANGE);
}

public Action hSpawnTimer(Handle hTimer, int iUserId)
{
    int    iClient = GetClientOfUserId(iUserId);
    if (iClient && GetClientHealth(iClient) != 35) //Если у игрока не 35 хп, то сделать то, что ниже. Если не нужно делать проверку на 35 хп, а чтобы  обязательно в любом случае ставилось хп - просто нужно оставить только if(iClient)
    {
        if(GetClientTeam(iClient) == 2) //Террористы
        {
            SetEntityHealth(iClient, 35); //Сколько HP выдавать Террористам
        }
        else if(GetClientTeam(iClient) == 3) //КТ
        {
            SetEntityHealth(iClient, 35); //Сколько HP выдавать КТ
        }
    }
}
 

baasssa

Участник
Сообщения
48
Реакции
1
@over_trax
Если я правильно вас понял, то так. :)
PHP:
public void OnPluginStart()
{
  HookEvent("player_spawn", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event hEvent, const char[] sName, bool bDontBroadcast)
{
    int    iUserId = hEvent.GetInt("userid");
    CreateTimer(1.0, hSpawnTimer, iUserId, TIMER_FLAG_NO_MAPCHANGE);
}

public Action hSpawnTimer(Handle hTimer, int iUserId)
{
    int    iClient = GetClientOfUserId(iUserId);
    if (iClient && GetClientHealth(iClient) != 35) //Если у игрока не 35 хп, то сделать то, что ниже. Если не нужно делать проверку на 35 хп, а чтобы  обязательно в любом случае ставилось хп - просто нужно оставить только if(iClient)
    {На см 1.4.2 пойдет?
        if(GetClientTeam(iClient) == 2) //Террористы
        {
            SetEntityHealth(iClient, 35); //Сколько HP выдавать Террористам
        }
        else if(GetClientTeam(iClient) == 3) //КТ
        {
            SetEntityHealth(iClient, 35); //Сколько HP выдавать КТ
        }
    }
}
На см 1.4.2 пойдет?
 

Felton

Участник
Сообщения
799
Реакции
59
Перепишите пожалуйста кому не трудно под старый синтаксис код #2 .SourceMod [1.6.4]
 
Последнее редактирование:

Nekro

Терра инкогнита
Сообщения
4,023
Реакции
2,260
@Felton, void убери и int на new замени.
Сообщения автоматически склеены:

@Felton,
C-подобный:
public OnPluginStart()
{
  HookEvent("player_spawn", Event_PlayerSpawn);
}

public Event_PlayerSpawn(Event hEvent, const string sName[], bool:bDontBroadcast)
{
    new iUserId = hEvent.GetInt("userid");
    CreateTimer(1.0, hSpawnTimer, iUserId, TIMER_FLAG_NO_MAPCHANGE);
}

public Action:hSpawnTimer(Handle hTimer, int iUserId)
{
    new iClient = GetClientOfUserId(iUserId);
    if (iClient && GetClientHealth(iClient) != 35) //Если у игрока не 35 хп, то сделать то, что ниже. Если не нужно делать проверку на 35 хп, а чтобы  обязательно в любом случае ставилось хп - просто нужно оставить только if(iClient)
    {
        if(GetClientTeam(iClient) == 2) //Террористы
        {
            SetEntityHealth(iClient, 35); //Сколько HP выдавать Террористам
        }
        else if(GetClientTeam(iClient) == 3) //КТ
        {
            SetEntityHealth(iClient, 35); //Сколько HP выдавать КТ
        }
    }
}
 

Felton

Участник
Сообщения
799
Реакции
59
Nekro
Я не знаю как это сделать.Можеш скинуть готовый SP
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,517
Реакции
4,979
Я не знаю как это сделать.
Сообщения автоматически склеены:

Nekro, в старом синтаксисе ещё нет методмапов и типа Event
Сообщения автоматически склеены:

Вот в виде sp и файл скомпиленный с помощью SM1.6.3
 

Вложения

  • 35hp.sp
    444 байт · Просмотры: 12
  • 35hp.smx
    3.8 КБ · Просмотры: 2
Последнее редактирование:

Felton

Участник
Сообщения
799
Реакции
59
Grey83
Скомпелировал ошибок нет.Проверил на домашнем - полет нормальный.Спасибо!
 
Сверху Снизу