xstage
🏹
- Сообщения
- 726
- Реакции
- 754
не заметил, сорян тогдаДа ладно? А это что?)
C-подобный:if(CheckCommandAccess(client, "sm_wallhack_access", ADMFLAG_GENERIC))
не заметил, сорян тогдаДа ладно? А это что?)
C-подобный:if(CheckCommandAccess(client, "sm_wallhack_access", ADMFLAG_GENERIC))
Пишет что включен но ничего не отображает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; }
Пишет что включен но ничего не отображает
#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;
}
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
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] [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
все ребят нашел другой плагин вх все хорошо спасибо большое кто помогала куда делись первые три пункта?
ивент server_spawnКак выполнить действие плагином только при запуске сервера?
CS:S
Таким способом не работает, как лучше сделать по другому?ивент server_spawn
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;
}
#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 не возвращаетДоброго времени суток!
Подскажите, почему может не срабатывать событие 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?
Сообщения автоматически склеены:
и вообще мешанина, если ты делаешь цикл по игрокам зачем ты приплетаешь userid которого евент round_end не возвращает
Можеть подсказать как поправить что бы цикл сработал на живых игроков после конца раундов?
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)
}
}
}
Там если что не так, пиши в лс))000)Здравствуйте, дорогие форумчане.
Нужна ваша помощь. Кто сможет написать плагин, который будет выдавать каждый раунд команде террористов по 10000 HP? Прошу, не останьтесь равнодушными ^-^.