Написание плагинов

Harsh USSR ☭

Участник
Сообщения
104
Реакции
2
C-подобный:
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
#include <smlib>
#pragma semicolon 1

new bool:Walling[MAXPLAYERS+1];
new Handle:cv_walltex;

public Plugin:myinfo =
{
    name = "[ANY] Wallhack For Specs",
    author = "Arthurdead",
    description = "Wallhack For Specs",
    version = "0.3",
    url = "http://steamcommunity.com/id/Arthurdead"
}

public OnPluginStart()
{
    RegConsoleCmd("sm_wallhack", Command_Wallhack);
    cv_walltex = CreateConVar("sm_wallhack_tex", "ggwp/wh/redlight.vmt", "Wallhack Texture", 0|FCVAR_NOTIFY);
    HookEvent("player_spawn", Event_Spawn);
  
}

public Action:Command_Wallhack(client, args)
{
    if(CheckCommandAccess(client, "sm_wallhack_access", ADMFLAG_GENERIC))
    {
        if(GetClientTeam(client) == 1 || !IsPlayerAlive(client))
        {
            if(Walling[client] == false)
            {
                Walling[client] = true;
                PrintToChat(client, "Wallhack Enabled");
            }
            else if(Walling[client] == true)
            {
                Walling[client] = false;
                PrintToChat(client, "Wallhack Disabled");
            }
        }
        else ReplyToCommand(client, "[SM] You Must Be An Spectator To Use This Command");
    }
    return Plugin_Handled;
}

public Action:Event_Spawn(Handle:event, const String:name[], bool:dontBroadcast)
{
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    SDKHook(client, SDKHook_PreThink, PreThinkHook);
}

public PreThinkHook(client)
{
    if(IsValidClient(client))
    {
        if(Walling[client] == true)
        {
            if(GetClientTeam(client) == 1)
            {
                decl Float:clientEyes[3];
                GetClientEyePosition(client, clientEyes);
                Client_GetClosest(clientEyes, client);
            }
        }
    }
}

bool:IsValidClient( client )
{
    if(!(1 <= client <= MaxClients ) || !IsClientInGame(client))
        return false;
    return true;
}

stock Client_GetClosest(Float:vecOrigin_center[3], const client)
{
    decl Float:vecOrigin_edict[3];
    new Float:distance = -1.0;
    new closestEdict = -1;
    new String:Tex[PLATFORM_MAX_PATH];
    GetConVarString(cv_walltex, Tex, PLATFORM_MAX_PATH);
    new mdl = PrecacheModel(Tex);
    new target = Client_GetObserverTarget(client);
    for (new i = 1; i < MaxClients; ++i)
    {
        if(!IsClientInGame(i) || !IsPlayerAlive(i) || (i == client))
            continue;
        GetEntPropVector(i, Prop_Data, "m_vecOrigin", vecOrigin_edict);
        GetClientEyePosition(i, vecOrigin_edict);
        if(GetClientTeam(i) != GetClientTeam(target))
        {
            TE_SetupGlowSprite(vecOrigin_edict, mdl, 0.1, 1.0, 255);
            TE_SendToClient(client);
            if(IsPointVisible(vecOrigin_center, vecOrigin_edict))
            {
                new Float:edict_distance = GetVectorDistance(vecOrigin_center, vecOrigin_edict);
                if((edict_distance < distance) || (distance == -1.0))
                {
                    distance = edict_distance;
                    closestEdict = i;
                }
            }
        }
    }
    return closestEdict;
}

stock bool:IsPointVisible(const Float:start[3], const Float:end[3])
{
    TR_TraceRayFilter(start, end, MASK_PLAYERSOLID, RayType_EndPoint, TraceEntityFilterStuff);
    return TR_GetFraction() >= 0.9;
}

public bool:TraceEntityFilterStuff(entity, mask)
{
    return entity > MaxClients;
}
Пишет что включен но ничего не отображает
 
Последнее редактирование:

xstage

🏹
Сообщения
726
Реакции
754
Пишет что включен но ничего не отображает
C-подобный:
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
#include <smlib>
#pragma semicolon 1

new bool:Walling[MAXPLAYERS+1];
new Handle:cv_walltex;

public Plugin:myinfo =
{
    name = "[ANY] Wallhack For Specs",
    author = "Arthurdead",
    description = "Wallhack For Specs",
    version = "0.3",
    url = "http://steamcommunity.com/id/Arthurdead"
}

public OnPluginStart()
{
    RegConsoleCmd("sm_wallhack", Command_Wallhack);
    cv_walltex = CreateConVar("sm_wallhack_tex", "ggwp/wh/redlight.vmt", "Wallhack Texture", 0|FCVAR_NOTIFY);
    HookEvent("player_spawn", Event_Spawn);
    
}

public Action:Command_Wallhack(client, args)
{
    if(CheckCommandAccess(client, "sm_wallhack_access", ADMFLAG_GENERIC))
    {
        if(GetClientTeam(client) == 1 || !IsPlayerAlive(client))
        {
            if(Walling[client] == false)
            {
                Walling[client] = true;
                PrintToChat(client, "Wallhack Enabled");
            }
            else if(Walling[client] == true)
            {
                Walling[client] = false;
                PrintToChat(client, "Wallhack Disabled");
            }
        }
        else ReplyToCommand(client, "[SM] You Must Be An Spectator To Use This Command");
    }
    return Plugin_Handled;
}

public Action:Event_Spawn(Handle:event, const String:name[], bool:dontBroadcast)
{
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    SDKHook(client, SDKHook_PreThink, PreThinkHook);
}

public PreThinkHook(client)
{
    if(IsValidClient(client))
    {
        if(Walling[client] == true)
        {
            if(GetClientTeam(client) == 1 || !IsPlayerAlive(client))
            {
                decl Float:clientEyes[3];
                GetClientEyePosition(client, clientEyes);
                Client_GetClosest(clientEyes, client);
            }
        }
    }
}

bool:IsValidClient( client )
{
    if(!(1 <= client <= MaxClients ) || !IsClientInGame(client))
        return false;
    return true;
}

stock Client_GetClosest(Float:vecOrigin_center[3], const client)
{
    decl Float:vecOrigin_edict[3];
    new Float:distance = -1.0;
    new closestEdict = -1;
    new String:Tex[PLATFORM_MAX_PATH];
    GetConVarString(cv_walltex, Tex, PLATFORM_MAX_PATH);
    new mdl = PrecacheModel(Tex);
    new target = Client_GetObserverTarget(client);
    for (new i = 1; i < MaxClients; ++i)
    {
        if(!IsClientInGame(i) || !IsPlayerAlive(i) || (i == client))
            continue;
        GetEntPropVector(i, Prop_Data, "m_vecOrigin", vecOrigin_edict);
        GetClientEyePosition(i, vecOrigin_edict);
        if(GetClientTeam(i) != GetClientTeam(target))
        {
            TE_SetupGlowSprite(vecOrigin_edict, mdl, 0.1, 1.0, 255);
            TE_SendToClient(client);
            if(IsPointVisible(vecOrigin_center, vecOrigin_edict))
            {
                new Float:edict_distance = GetVectorDistance(vecOrigin_center, vecOrigin_edict);
                if((edict_distance < distance) || (distance == -1.0))
                {
                    distance = edict_distance;
                    closestEdict = i;
                }
            }
        }
    }
    return closestEdict;
}

stock bool:IsPointVisible(const Float:start[3], const Float:end[3])
{
    TR_TraceRayFilter(start, end, MASK_PLAYERSOLID, RayType_EndPoint, TraceEntityFilterStuff);
    return TR_GetFraction() >= 0.9;
}

public bool:TraceEntityFilterStuff(entity, mask)
{
    return entity > MaxClients;
}
 

Harsh USSR ☭

Участник
Сообщения
104
Реакции
2
C-подобный:
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
#include <smlib>
#pragma semicolon 1

new bool:Walling[MAXPLAYERS+1];
new Handle:cv_walltex;

public Plugin:myinfo =
{
    name = "[ANY] Wallhack For Specs",
    author = "Arthurdead",
    description = "Wallhack For Specs",
    version = "0.3",
    url = "http://steamcommunity.com/id/Arthurdead"
}

public OnPluginStart()
{
    RegConsoleCmd("sm_wallhack", Command_Wallhack);
    cv_walltex = CreateConVar("sm_wallhack_tex", "ggwp/wh/redlight.vmt", "Wallhack Texture", 0|FCVAR_NOTIFY);
    HookEvent("player_spawn", Event_Spawn);

}

public Action:Command_Wallhack(client, args)
{
    if(CheckCommandAccess(client, "sm_wallhack_access", ADMFLAG_GENERIC))
    {
        if(GetClientTeam(client) == 1 || !IsPlayerAlive(client))
        {
            if(Walling[client] == false)
            {
                Walling[client] = true;
                PrintToChat(client, "Wallhack Enabled");
            }
            else if(Walling[client] == true)
            {
                Walling[client] = false;
                PrintToChat(client, "Wallhack Disabled");
            }
        }
        else ReplyToCommand(client, "[SM] You Must Be An Spectator To Use This Command");
    }
    return Plugin_Handled;
}

public Action:Event_Spawn(Handle:event, const String:name[], bool:dontBroadcast)
{
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    SDKHook(client, SDKHook_PreThink, PreThinkHook);
}

public PreThinkHook(client)
{
    if(IsValidClient(client))
    {
        if(Walling[client] == true)
        {
            if(GetClientTeam(client) == 1 || !IsPlayerAlive(client))
            {
                decl Float:clientEyes[3];
                GetClientEyePosition(client, clientEyes);
                Client_GetClosest(clientEyes, client);
            }
        }
    }
}

bool:IsValidClient( client )
{
    if(!(1 <= client <= MaxClients ) || !IsClientInGame(client))
        return false;
    return true;
}

stock Client_GetClosest(Float:vecOrigin_center[3], const client)
{
    decl Float:vecOrigin_edict[3];
    new Float:distance = -1.0;
    new closestEdict = -1;
    new String:Tex[PLATFORM_MAX_PATH];
    GetConVarString(cv_walltex, Tex, PLATFORM_MAX_PATH);
    new mdl = PrecacheModel(Tex);
    new target = Client_GetObserverTarget(client);
    for (new i = 1; i < MaxClients; ++i)
    {
        if(!IsClientInGame(i) || !IsPlayerAlive(i) || (i == client))
            continue;
        GetEntPropVector(i, Prop_Data, "m_vecOrigin", vecOrigin_edict);
        GetClientEyePosition(i, vecOrigin_edict);
        if(GetClientTeam(i) != GetClientTeam(target))
        {
            TE_SetupGlowSprite(vecOrigin_edict, mdl, 0.1, 1.0, 255);
            TE_SendToClient(client);
            if(IsPointVisible(vecOrigin_center, vecOrigin_edict))
            {
                new Float:edict_distance = GetVectorDistance(vecOrigin_center, vecOrigin_edict);
                if((edict_distance < distance) || (distance == -1.0))
                {
                    distance = edict_distance;
                    closestEdict = i;
                }
            }
        }
    }
    return closestEdict;
}

stock bool:IsPointVisible(const Float:start[3], const Float:end[3])
{
    TR_TraceRayFilter(start, end, MASK_PLAYERSOLID, RayType_EndPoint, TraceEntityFilterStuff);
    return TR_GetFraction() >= 0.9;
}

public bool:TraceEntityFilterStuff(entity, mask)
{
    return entity > MaxClients;
}

загрузил написал команду
sm_wallhack вышло что Wallhack_Enabled и рамок на игроках не появляется а в error логе вот так [4] Line 41, D:\Servers\scripting\scripting\WallHack.sp::Command_Wallhack
 

DeeperSpy

Гений, миллиардер, плейбой, филантроп, майнкрафтер
Сообщения
588
Реакции
362
Пишет что включен но ничего не отображает
с телефона писал, не заметил

загрузил написал команду
sm_wallhack вышло что Wallhack_Enabled и рамок на игроках не появляется а в error логе вот так [4] Line 41, D:\Servers\scripting\scripting\WallHack.sp::Command_Wallhack
скинь полную ошибку
 

Harsh USSR ☭

Участник
Сообщения
104
Реакции
2
с телефона писал, не заметил


скинь полную ошибку
L 06/27/2020 - 22:08:31: [SM] [4] Line 41, D:\Servers\scripting\scripting\WallHack.sp::Command_Wallhack
L 06/27/2020 - 22:08:31: [SM] [6] FakeClientCommand
L 06/27/2020 - 22:08:31: [SM] [7] Line 585, /home/builds/sourcemod/linux-1.10/build/plugins/adminmenu/dynamicmenu.sp::ParamCheck
L 06/27/2020 - 22:08:31: [SM] [8] Line 427, /home/builds/sourcemod/linux-1.10/build/plugins/adminmenu/dynamicmenu.sp::DynamicMenuItemHandler
L 06/27/2020 - 22:08:33: [SM] Exception reported: Native is not bound
 

DeeperSpy

Гений, миллиардер, плейбой, филантроп, майнкрафтер
Сообщения
588
Реакции
362
L 06/27/2020 - 22:08:31: [SM] [4] Line 41, D:\Servers\scripting\scripting\WallHack.sp::Command_Wallhack
L 06/27/2020 - 22:08:31: [SM] [6] FakeClientCommand
L 06/27/2020 - 22:08:31: [SM] [7] Line 585, /home/builds/sourcemod/linux-1.10/build/plugins/adminmenu/dynamicmenu.sp::ParamCheck
L 06/27/2020 - 22:08:31: [SM] [8] Line 427, /home/builds/sourcemod/linux-1.10/build/plugins/adminmenu/dynamicmenu.sp::DynamicMenuItemHandler
L 06/27/2020 - 22:08:33: [SM] Exception reported: Native is not bound
а куда делись первые три пункта?
 

Mensi1337

Участник
Сообщения
242
Реакции
16
Как выполнить действие плагином только при запуске сервера?

CS:S
 

Mensi1337

Участник
Сообщения
242
Реакции
16
Таким способом не работает, как лучше сделать по другому?
CSS:
public OnPluginStart()
{
    HookEvent("server_spawn", load_1);
}

public load_1(Handle:event, const String:name[], bool:dontBroadcast)
{
    ServerCommand("exec cmd.cfg");
    CreateTimer(5.0, load_2, _, TIMER_FLAG_NO_MAPCHANGE);
}

public Action:load_2(Handle:timer)
{
    ServerCommand("exec server.cfg");
    return Plugin_Stop;
}
 

justice

Участник
Сообщения
92
Реакции
21
Можно ли написать плагин по принципу FACEIT'a.


- То есть сделать в конце раунда, чтобы в чат прописывало весь наносимый урон за раунд?
 

Ампутаге

Участник
Сообщения
84
Реакции
8
Кто поможет данный "чудо" плагин заставить работать на SM:RPG?
Замена команд THC RPG на SM:RPG не помогает, SM:RPG выбивает ошибку "нужно выставить хотя бы 1 кредит".
 

Вложения

  • thc_rpg_bonus.sp
    5.5 КБ · Просмотры: 4

Mr.Black

Участник
Сообщения
145
Реакции
61
Доброго времени суток!
Подскажите, почему может не срабатывать событие Event_RoundEnd? В конце раунда значение g_iCurrentHP[iClient] не меняется :(

C-подобный:
#pragma semicolon 1
#pragma newdecls required

#include <sourcemod>
#include <sdktools>
#include <cstrike>
#include <sdkhooks>

public Plugin myinfo =
{
    name = "HealthShot",
    author = "JB",
    description = "Give Healthshot to player on spawn and change max HP value (u can heal more than 100hp)",
    version = "1.1.0",
    url = "hlmod.ru"
}

int g_iCurrentHP[MAXPLAYERS+1];
//int g_iMaxHP = 480;

public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn, EventHookMode_Post);
    HookEvent("player_death", Event_PlayerDeath, EventHookMode_Post);
    HookEvent("round_end", Event_RoundEnd, EventHookMode_Pre);
    //HookEvent("weapon_fire", Event_WeaponFire);
}

public void Event_PlayerSpawn(Event hEvent, char[] name, bool dontBroadcast)
{
    int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
    if(0 < iClient < MaxClients && IsClientInGame(iClient) && IsPlayerAlive(iClient) && GetClientTeam(iClient) > 1)
    {
        if(GetEntProp(iClient, Prop_Data, "m_iAmmo", _, 21) == 0)
        {
            GivePlayerItem(iClient, "weapon_healthshot");
        }

        if(g_iCurrentHP[iClient] == 0)
        {
            g_iCurrentHP[iClient] = 101;
            SetEntityHealth(iClient, g_iCurrentHP[iClient]);
        }
        else if(0 < g_iCurrentHP[iClient] < 100)
        {
            g_iCurrentHP[iClient] = 102;
            SetEntityHealth(iClient, g_iCurrentHP[iClient]);
        }
        else
        {
            SetEntityHealth(iClient, g_iCurrentHP[iClient]);
        }
    }
}

public void Event_PlayerDeath(Event hEvent, const char[] name, bool dontBroadcast)
{
    int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
    if(iClient)
    {
        g_iCurrentHP[iClient] = 103;
    }
}

//Раунд энд не работает
public void Event_RoundEnd(Event hEvent, char[] name, bool dontBroadcast)
{
    int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
    for (int i = 1; i <= MaxClients; ++i)
    {
    if(0 < iClient < MaxClients && IsClientInGame(iClient) && IsPlayerAlive(iClient) && GetClientTeam(iClient) > 1)
    {
            g_iCurrentHP[iClient] = 104;
            //GetClientHealth(iClient)
    }
    }
}
/*
public Action Event_WeaponFire(Handle event, char[] name, bool dontBroadcast)
{
    int iClient = GetClientOfUserId(GetEventInt(event, "userid"));
    if(iClient)
    {
        char Weapon[32];
        GetEventString(event, "weapon", Weapon, 32);
        if(StrEqual(Weapon, "weapon_healthshot", false) || StrEqual(Weapon, "healthshot", false))
        {
            g_iCurrentHP[iClient] = GetClientHealth(iClient) + 50;
            SetEntityHealth(iClient, g_iCurrentHP[iClient]);
        }
    }
}
*/
 
Последнее редактирование:

xstage

🏹
Сообщения
726
Реакции
754
Доброго времени суток!
Подскажите, почему может не срабатывать событие Event_RoundEnd? В конце раунда значение g_iCurrentHP[iClient] не меняется :(

C-подобный:
#pragma semicolon 1
#pragma newdecls required

#include <sourcemod>
#include <sdktools>
#include <cstrike>
#include <sdkhooks>

public Plugin myinfo =
{
    name = "HealthShot",
    author = "JB",
    description = "Give Healthshot to player on spawn and change max HP value (u can heal more than 100hp)",
    version = "1.1.0",
    url = "hlmod.ru"
}

int g_iCurrentHP[MAXPLAYERS+1];
//int g_iMaxHP = 480;

public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn, EventHookMode_Post);
    HookEvent("player_death", Event_PlayerDeath, EventHookMode_Post);
    HookEvent("round_end", Event_RoundEnd, EventHookMode_Pre);
    //HookEvent("weapon_fire", Event_WeaponFire);
}

public void Event_PlayerSpawn(Event hEvent, char[] name, bool dontBroadcast)
{
    int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
    if(0 < iClient < MaxClients && IsClientInGame(iClient) && IsPlayerAlive(iClient) && GetClientTeam(iClient) > 1)
    {
        if(GetEntProp(iClient, Prop_Data, "m_iAmmo", _, 21) == 0)
        {
            GivePlayerItem(iClient, "weapon_healthshot");
        }

        if(g_iCurrentHP[iClient] == 0)
        {
            g_iCurrentHP[iClient] = 101;
            SetEntityHealth(iClient, g_iCurrentHP[iClient]);
        }
        else if(0 < g_iCurrentHP[iClient] < 100)
        {
            g_iCurrentHP[iClient] = 102;
            SetEntityHealth(iClient, g_iCurrentHP[iClient]);
        }
        else
        {
            SetEntityHealth(iClient, g_iCurrentHP[iClient]);
        }
    }
}

public void Event_PlayerDeath(Event hEvent, const char[] name, bool dontBroadcast)
{
    int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
    if(iClient)
    {
        g_iCurrentHP[iClient] = 103;
    }
}

//Раунд энд не работает
public void Event_RoundEnd(Event hEvent, char[] name, bool dontBroadcast)
{
    int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
    for (int i = 1; i <= MaxClients; ++i)
    {
    if(0 < iClient < MaxClients && IsClientInGame(iClient) && IsPlayerAlive(iClient) && GetClientTeam(iClient) > 1)
    {
            g_iCurrentHP[iClient] = 104;
            //GetClientHealth(iClient)
    }
    }
}
/*
public Action Event_WeaponFire(Handle event, char[] name, bool dontBroadcast)
{
    int iClient = GetClientOfUserId(GetEventInt(event, "userid"));
    if(iClient)
    {
        char Weapon[32];
        GetEventString(event, "weapon", Weapon, 32);
        if(StrEqual(Weapon, "weapon_healthshot", false) || StrEqual(Weapon, "healthshot", false))
        {
            g_iCurrentHP[iClient] = GetClientHealth(iClient) + 50;
            SetEntityHealth(iClient, g_iCurrentHP[iClient]);
        }
    }
}
*/
Ну а где ты увидел в событии round_end Userid?
Сообщения автоматически склеены:

Доброго времени суток!
Подскажите, почему может не срабатывать событие Event_RoundEnd? В конце раунда значение g_iCurrentHP[iClient] не меняется :(

C-подобный:
#pragma semicolon 1
#pragma newdecls required

#include <sourcemod>
#include <sdktools>
#include <cstrike>
#include <sdkhooks>

public Plugin myinfo =
{
    name = "HealthShot",
    author = "JB",
    description = "Give Healthshot to player on spawn and change max HP value (u can heal more than 100hp)",
    version = "1.1.0",
    url = "hlmod.ru"
}

int g_iCurrentHP[MAXPLAYERS+1];
//int g_iMaxHP = 480;

public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn, EventHookMode_Post);
    HookEvent("player_death", Event_PlayerDeath, EventHookMode_Post);
    HookEvent("round_end", Event_RoundEnd, EventHookMode_Pre);
    //HookEvent("weapon_fire", Event_WeaponFire);
}

public void Event_PlayerSpawn(Event hEvent, char[] name, bool dontBroadcast)
{
    int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
    if(0 < iClient < MaxClients && IsClientInGame(iClient) && IsPlayerAlive(iClient) && GetClientTeam(iClient) > 1)
    {
        if(GetEntProp(iClient, Prop_Data, "m_iAmmo", _, 21) == 0)
        {
            GivePlayerItem(iClient, "weapon_healthshot");
        }

        if(g_iCurrentHP[iClient] == 0)
        {
            g_iCurrentHP[iClient] = 101;
            SetEntityHealth(iClient, g_iCurrentHP[iClient]);
        }
        else if(0 < g_iCurrentHP[iClient] < 100)
        {
            g_iCurrentHP[iClient] = 102;
            SetEntityHealth(iClient, g_iCurrentHP[iClient]);
        }
        else
        {
            SetEntityHealth(iClient, g_iCurrentHP[iClient]);
        }
    }
}

public void Event_PlayerDeath(Event hEvent, const char[] name, bool dontBroadcast)
{
    int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
    if(iClient)
    {
        g_iCurrentHP[iClient] = 103;
    }
}

//Раунд энд не работает
public void Event_RoundEnd(Event hEvent, char[] name, bool dontBroadcast)
{
    int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
    for (int i = 1; i <= MaxClients; ++i)
    {
    if(0 < iClient < MaxClients && IsClientInGame(iClient) && IsPlayerAlive(iClient) && GetClientTeam(iClient) > 1)
    {
            g_iCurrentHP[iClient] = 104;
            //GetClientHealth(iClient)
    }
    }
}
/*
public Action Event_WeaponFire(Handle event, char[] name, bool dontBroadcast)
{
    int iClient = GetClientOfUserId(GetEventInt(event, "userid"));
    if(iClient)
    {
        char Weapon[32];
        GetEventString(event, "weapon", Weapon, 32);
        if(StrEqual(Weapon, "weapon_healthshot", false) || StrEqual(Weapon, "healthshot", false))
        {
            g_iCurrentHP[iClient] = GetClientHealth(iClient) + 50;
            SetEntityHealth(iClient, g_iCurrentHP[iClient]);
        }
    }
}
*/
и вообще мешанина, если ты делаешь цикл по игрокам зачем ты приплетаешь userid которого евент round_end не возвращает
 

Вложения

  • Screenshot.png
    Screenshot.png
    8.1 КБ · Просмотры: 16

Mr.Black

Участник
Сообщения
145
Реакции
61
Ну а где ты увидел в событии round_end Userid?
Сообщения автоматически склеены:


и вообще мешанина, если ты делаешь цикл по игрокам зачем ты приплетаешь userid которого евент round_end не возвращает
Можеть подсказать как поправить что бы цикл сработал на живых игроков после конца раундов?
 

xstage

🏹
Сообщения
726
Реакции
754
Можеть подсказать как поправить что бы цикл сработал на живых игроков после конца раундов?

C-подобный:
public void Event_RoundEnd(Event hEvent, char[] name, bool dontBroadcast)
{
    for (int i = 1; i <= MaxClients; ++i)
    {
        if(IsClientInGame(i) && IsPlayerAlive(i))
        {
                g_iCurrentHP[i] = 104;
                //GetClientHealth(i)
        }
    }
}
 

KosmoStyLe

Участник
Сообщения
21
Реакции
1
Здравствуйте, дорогие форумчане.
Нужна ваша помощь. Кто сможет написать плагин, который будет выдавать каждый раунд команде террористов по 10000 HP? Прошу, не останьтесь равнодушными ^-^.
 

DENFER

Пишу плагины за два биг тести и картошку фри..
Сообщения
260
Реакции
289
Здравствуйте, дорогие форумчане.
Нужна ваша помощь. Кто сможет написать плагин, который будет выдавать каждый раунд команде террористов по 10000 HP? Прошу, не останьтесь равнодушными ^-^.
Там если что не так, пиши в лс))000)
 

Вложения

  • hpT.smx
    4.9 КБ · Просмотры: 4
  • hpT.sp
    593 байт · Просмотры: 6
Сверху Снизу