Определённое количество HP у всех игроков сервера [РЕШЕНО]

Ju4qa

Участник
Сообщения
280
Реакции
63
Как сделать чтобы у всех игроков на сервере было к примеру 50 хп и не больше

Вот готовый код:

C-подобный:
#include <sourcemod>
#include <cstrike>
#include <sdkhooks>

public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event event, const char[] sName, bool bDontBroadcast)
{
    static int client, m_iHealth, m_iMaxHealth;
    if((client = GetClientOfUserId(event.GetInt("userid"))) && GetClientTeam(client) > 1)
    {
        if(m_iHealth < 1) m_iHealth = FindSendPropInfo("CCSPlayer", "m_iHealth");
        SetEntData(client, m_iHealth, 15);

        if(m_iMaxHealth < 1) m_iMaxHealth = FindSendPropInfo("CCSPlayer", "m_iMaxHealth");
        SetEntData(client, m_iMaxHealth, 15);
    }
}

Спасибо:
Someone
September
Grey83
 
Последнее редактирование:

Someone

Участник
Сообщения
1,933
Реакции
1,653
Как сделать чтобы у всех игроков на сервере было к примеру 50 хп и не больше
C++:
public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event hEvent, const char[] sName, bool bDontBroadcast)
{
    SetEntData(GetClientOfUserId(hEvent.GetInt("userid")), "m_iMaxHealth", 50);
}
 

Ju4qa

Участник
Сообщения
280
Реакции
63
C++:
public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event hEvent, const char[] sName, bool bDontBroadcast)
{
    SetEntData(GetClientOfUserId(hEvent.GetInt("userid")), "m_iMaxHealth", 50);
}
а объясни глупому человеку как из этого сделать плагин
Сообщения автоматически склеены:

C++:
public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event hEvent, const char[] sName, bool bDontBroadcast)
{
    SetEntData(GetClientOfUserId(hEvent.GetInt("userid")), "m_iMaxHealth", 50);
}
/groups/sourcemod/upload_tmp/textuADnxj.sp(8) : error 035: argument type mismatch (argument 2)

1 Error.
 
Последнее редактирование:

September

Участник
Сообщения
5,238
Реакции
2,742
  • Команда форума
  • #4
а объясни глупому человеку как из этого сделать плагин
Сообщения автоматически склеены:


/groups/sourcemod/upload_tmp/textuADnxj.sp(8) : error 035: argument type mismatch (argument 2)

1 Error.

C-подобный:
#include <sourcemod>
#include <cstrike>
#include <sdkhooks>

public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public Action Event_PlayerSpawn(Event event,const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(GetEventInt(event, "userid"));
    SetEntityHealth(client, 50);
}

можешь так попробовать. по крайней мере скомпилилось, должно устанавливать всем 50 хп, но если есть вип и .тд, то может давать больше
 

Ju4qa

Участник
Сообщения
280
Реакции
63
C-подобный:
#include <sourcemod>
#include <cstrike>
#include <sdkhooks>

public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public Action Event_PlayerSpawn(Event event,const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(GetEventInt(event, "userid"));
    SetEntityHealth(client, 50);
}

можешь так попробовать. по крайней мере скомпилилось, должно устанавливать всем 50 хп, но если есть вип и .тд, то может давать больше
hp.smx: Unable to load plugin (no debug string table) пишет в консоль сервера
Сообщения автоматически склеены:

hp.smx: Unable to load plugin (no debug string table) пишет в консоль сервера
перекомпилировал на другой версии см. всё работает. Спасибо огромное!
 

September

Участник
Сообщения
5,238
Реакции
2,742
  • Команда форума
  • #6
hp.smx: Unable to load plugin (no debug string table) пишет в консоль сервера
Сообщения автоматически склеены:


перекомпилировал на другой версии см. всё работает. Спасибо огромное!

плагины скомпиленные на см 1.10 могут не работать на см 1.9
на будущее.
 

Someone

Участник
Сообщения
1,933
Реакции
1,653
та уже и сам прочёл это в другой теме. спасибо!
На, это лучше будет. Будет ставить максимальное HP.

C++:
public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event hEvent, const char[] sName, bool bDontBroadcast)
{
    int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
    if(!IsClientSourceTV(iClient))
    {
        static int iProp;
        if(iProp == -1)
        {
            iProp = FindSendPropInfo("CCSPlayer", "m_iMaxHealth");
        }

        SetEntData(iClient, iProp, 50);
    }
}
 

Ju4qa

Участник
Сообщения
280
Реакции
63
На, это лучше будет. Будет ставить максимальное HP.

C++:
public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event hEvent, const char[] sName, bool bDontBroadcast)
{
    int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
    if(!IsClientSourceTV(iClient))
    {
        static int iProp;
        if(iProp == -1)
        {
            iProp = FindSendPropInfo("CCSPlayer", "m_iMaxHealth");
        }

        SetEntData(iClient, iProp, 50);
    }
}
плагин скомпилился, на сервере без ошибок, но не работает
 

Someone

Участник
Сообщения
1,933
Реакции
1,653
Тогда так:
C++:
public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event hEvent, const char[] sName, bool bDontBroadcast)
{
    int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
    if(!IsClientSourceTV(iClient))
    {
        static int iHealth, iMaxHealth;
        if(!iHealth)
        {
            iMaxHealth = FindSendPropInfo("CCSPlayer", "m_iMaxHealth");
            iHealth = FindSendPropInfo("CCSPlayer", "m_iHealth");
        }

        SetEntData(iClient, iMaxHealth, 50);
        SetEntData(iClient, iHealth, 50);
    }
}
 
Последнее редактирование:

Ju4qa

Участник
Сообщения
280
Реакции
63
Тогда так:
C++:
public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event hEvent, const char[] sName, bool bDontBroadcast)
{
    int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
    if(!IsClientSourceTV(iClient))
    {
        static int iHealth, iMaxHealth;
        if(iHealth == -1)
        {
            iMaxHealth = FindSendPropInfo("CCSPlayer", "m_iMaxHealth");
            iHealth = FindSendPropInfo("CCSPlayer", "m_iHealth");
        }

        SetEntData(iClient, iMaxHealth, 50);
        SetEntData(iClient, iHealth, 50);
    }
}
[/QUOTEувы, но нет
Сообщения автоматически склеены:

Тогда так:
C++:
public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event hEvent, const char[] sName, bool bDontBroadcast)
{
    int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
    if(!IsClientSourceTV(iClient))
    {
        static int iHealth, iMaxHealth;
        if(iHealth == -1)
        {
            iMaxHealth = FindSendPropInfo("CCSPlayer", "m_iMaxHealth");
            iHealth = FindSendPropInfo("CCSPlayer", "m_iHealth");
        }

        SetEntData(iClient, iMaxHealth, 50);
        SetEntData(iClient, iHealth, 50);
    }
}
вот это в логах


L 08/03/2019 - 19:47:04: [SM] Blaming: 123123.smx
L 08/03/2019 - 19:47:04: [SM] Call stack trace:
L 08/03/2019 - 19:47:04: [SM] [0] SetEntData
L 08/03/2019 - 19:47:04: [SM] [1] Line 22, /groups/sourcemod/upload_tmp/textnettN3.sp::Event_PlayerSpawn
 

Someone

Участник
Сообщения
1,933
Реакции
1,653
Сообщения автоматически склеены:


вот это в логах


L 08/03/2019 - 19:47:04: [SM] Blaming: 123123.smx
L 08/03/2019 - 19:47:04: [SM] Call stack trace:
L 08/03/2019 - 19:47:04: [SM] [0] SetEntData
L 08/03/2019 - 19:47:04: [SM] [1] Line 22, /groups/sourcemod/upload_tmp/textnettN3.sp::Event_PlayerSpawn
Ну может ты полную ошибку кинешь ?
 

Ju4qa

Участник
Сообщения
280
Реакции
63
Ну может ты полную ошибку кинешь ?
L 08/03/2019 - 19:46:58: [SM] Blaming: 123123.smx
L 08/03/2019 - 19:46:58: [SM] Call stack trace:
L 08/03/2019 - 19:46:58: [SM] [0] SetEntData
L 08/03/2019 - 19:46:58: [SM] [1] Line 22, /groups/sourcemod/upload_tmp/textnettN3.sp::Event_PlayerSpawn
L 08/03/2019 - 19:47:03: [SM] Exception reported: Offset 0 is invalid
L 08/03/2019 - 19:47:03: [SM] Blaming: 123123.smx
L 08/03/2019 - 19:47:03: [SM] Call stack trace:
L 08/03/2019 - 19:47:03: [SM] [0] SetEntData
L 08/03/2019 - 19:47:03: [SM] [1] Line 22, /groups/sourcemod/upload_tmp/textnettN3.sp::Event_PlayerSpawn
L 08/03/2019 - 19:47:04: [SM] Exception reported: Offset 0 is invalid
L 08/03/2019 - 19:47:04: [SM] Blaming: 123123.smx
L 08/03/2019 - 19:47:04: [SM] Call stack trace:
L 08/03/2019 - 19:47:04: [SM] [0] SetEntData
L 08/03/2019 - 19:47:04: [SM] [1] Line 22, /groups/sourcemod/upload_tmp/textnettN3.sp::Event_PlayerSpawn
L 08/03/2019 - 19:53:14: SourceMod error session started
L 08/03/2019 - 19:53:14: Info (map "de_inferno") (file "errors_20190803.log")
L 08/03/2019 - 19:53:14: [SM] Exception reported: Offset 0 is invalid
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
Вот так попробуй:
C++:
public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event event, const char[] sName, bool bDontBroadcast)
{
    static int client, m_iHealth, m_iMaxHealth;
    if((client = GetClientOfUserId(event.GetInt("userid"))) && GetClientTeam(client) > 1)
    {
        if(m_iHealth < 1) m_iHealth = FindSendPropInfo("CCSPlayer", "m_iHealth");
        SetEntData(client, m_iHealth, 50);

        if(m_iMaxHealth < 1) m_iMaxHealth = FindSendPropInfo("CCSPlayer", "m_iMaxHealth");
        SetEntData(client, m_iMaxHealth, 50);
    }
}
 

Someone

Участник
Сообщения
1,933
Реакции
1,653
L 08/03/2019 - 19:46:58: [SM] Blaming: 123123.smx
L 08/03/2019 - 19:46:58: [SM] Call stack trace:
L 08/03/2019 - 19:46:58: [SM] [0] SetEntData
L 08/03/2019 - 19:46:58: [SM] [1] Line 22, /groups/sourcemod/upload_tmp/textnettN3.sp::Event_PlayerSpawn
L 08/03/2019 - 19:47:03: [SM] Exception reported: Offset 0 is invalid
L 08/03/2019 - 19:47:03: [SM] Blaming: 123123.smx
L 08/03/2019 - 19:47:03: [SM] Call stack trace:
L 08/03/2019 - 19:47:03: [SM] [0] SetEntData
L 08/03/2019 - 19:47:03: [SM] [1] Line 22, /groups/sourcemod/upload_tmp/textnettN3.sp::Event_PlayerSpawn
L 08/03/2019 - 19:47:04: [SM] Exception reported: Offset 0 is invalid
L 08/03/2019 - 19:47:04: [SM] Blaming: 123123.smx
L 08/03/2019 - 19:47:04: [SM] Call stack trace:
L 08/03/2019 - 19:47:04: [SM] [0] SetEntData
L 08/03/2019 - 19:47:04: [SM] [1] Line 22, /groups/sourcemod/upload_tmp/textnettN3.sp::Event_PlayerSpawn
L 08/03/2019 - 19:53:14: SourceMod error session started
L 08/03/2019 - 19:53:14: Info (map "de_inferno") (file "errors_20190803.log")
L 08/03/2019 - 19:53:14: [SM] Exception reported: Offset 0 is invalid
Поправил код выше.
 

Ju4qa

Участник
Сообщения
280
Реакции
63
Вот так попробуй:
C++:
public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event event, const char[] sName, bool bDontBroadcast)
{
    static int client, m_iHealth, m_iMaxHealth;
    if((client = GetClientOfUserId(event.GetInt("userid"))) && GetClientTeam(client) > 1)
    {
        if(m_iHealth < 1) m_iHealth = FindSendPropInfo("CCSPlayer", "m_iHealth");
        SetEntData(client, m_iHealth, 50);

        if(m_iMaxHealth < 1) m_iMaxHealth = FindSendPropInfo("CCSPlayer", "m_iMaxHealth");
        SetEntData(client, m_iMaxHealth, 50);
    }
}
Всё работает. Спасибо!
 
Сверху Снизу