-=|УЧЕНИК|=-
вся жизнь,сплошной цирк.
- Сообщения
- 876
- Реакции
- 212
Можно без него?нафига?
нафига #2?
inSpeed[client] ^= true;
Ну и тут я так понял<можно по другому сделать
bool inSpeed[MAXPLAYERS+1];
int iLimitSpeed[MAXPLAYERS+1];
Можно без него?нафига?
нафига #2?
#pragma semicolon 1
#pragma newdecls required
#define BOOST_MULT 5.0 // множитель ускорения
#define BOOST_TIME 2.0 // время действия ускорения
bool bUsed[MAXPLAYERS+1];
public void OnPluginStart()
{
RegConsoleCmd("sm_boost", Cmd_Boost);
HookEvent("round_freeze_end", Event_Start, EventHookMode_PostNoCopy); // с этого момента игроки могут двигаться
}
public void OnClientDisconnect(int client)
{
bUsed[client] = false;
}
public void Event_Start(Event event, const char[] name, bool dontBroadcast)
{
for(int i = 1; i <= MaxClients; i++) bUsed[i] = false;
}
public Action Cmd_Boost(int client, int args)
{
if(!client || bUsed[client] || !IsClientInGame(client) || !IsPlayerAlive(client))
return Plugin_Handled;
bUsed[client] = true;
SetEntPropFloat(client, Prop_Send, "m_flLaggedMovementValue", BOOST_MULT);
CreateTimer(BOOST_TIME, Timer_End, GetClientUserId(client), TIMER_FLAG_NO_MAPCHANGE);
return Plugin_Handled;
}
public Action Timer_End(Handle hTimer, int client)
{
if((client = GetClientOfUserId(client)) && IsClientInGame(client) && IsPlayerAlive(client))
SetEntPropFloat(client, Prop_Send, "m_flLaggedMovementValue", 1.0);
return Plugin_Stop;
}
тут дело в том что значение зачем-то инвертируется, вместо того чтобы просто присвоить значение true или falseМожно без него?
inSpeed[client] ^= true;
выше код поправленный предоставилНу и тут я так понял<можно по другому сделать
bool inSpeed[MAXPLAYERS+1];
int iLimitSpeed[MAXPLAYERS+1];
#pragma semicolon 1
#include <smlib>
#include <sourcemod>
#include <sdkhooks>
#pragma newdecls required
#define d_interval 0.5 //Интервал между созданием декалей (меньше 0.5 лучше не ставить)
#define d_clear 5.0 // Через сколько секунд удалять декали (слишком много времени лучше не ставить).
#define d_max 11 // d_clear(5.0) / d_interval(0.5) = 10 + 1 "на всякий" = 11
int
i_speed[MAXPLAYERS+1],
i_ground[MAXPLAYERS+1],
count_ent[MAXPLAYERS+1],
del_ent[MAXPLAYERS+1],
step_ent[d_max];
Handle
h_CDStep[MAXPLAYERS+1],
h_ClearStep[MAXPLAYERS+1];
bool
StepsClient[MAXPLAYERS+1];
public void OnPluginStart(){
RegConsoleCmd("sm_test", cmd_test);
}
public void OnMapStart(){
CreateTimer(0.1, GlobalTimer, _, 1);
AddFileToDownloadsTable("materials/nlas/decals/arrow_step.vmt");
AddFileToDownloadsTable("materials/nlas/decals/arrow_step.vtf");
PrecacheDecal("nlas/decals/arrow_step.vmt", true);
}
public Action cmd_test(int client, int args){
if(!StepsClient[client]) StepsClient[client] = true;
else if(StepsClient[client]) StepsClient[client] = false;
PrintToChat(client, "%s", StepsClient[client]?"+":"-");
return Plugin_Handled;
}
public Action GlobalTimer(Handle timer){
for(int client = 1; client <= MaxClients; client++)
{
if(IsValidClient(client) && IsPlayerAlive(client))
{
float vec[3]; GetEntPropVector(client, Prop_Data, "m_vecVelocity", vec);
i_ground[client] = GetEntPropEnt(client, Prop_Send, "m_hGroundEntity");
i_speed[client] = RoundToNearest(SquareRoot(vec[0] * vec[0] + vec[1] * vec[1]));
PrintHintText(client, "%N\n%d\n%d\nCount: %d, Del: %d", client, i_speed[client], i_ground[client], count_ent[client], del_ent[client]);
if(h_CDStep[client] == null)
{
if(i_speed[client]>110 && i_ground[client]!=-1)
{
float pos[3]; GetClientAbsOrigin(client, pos);
float ang[3]; GetClientAbsAngles(client, ang);
count_ent[client]++;
if(count_ent[client] >= d_max) count_ent[client] = 0;
step_ent[count_ent[client]] = CreateEntityByName("info_projecteddecal");
if(step_ent[count_ent[client]]!=-1)
{
DispatchKeyValue(step_ent[count_ent[client]], "texture", "nlas/decals/arrow_step.vmt");
DispatchKeyValueVector(step_ent[count_ent[client]], "angles", ang);
DispatchKeyValue(step_ent[count_ent[client]], "Distance", "64");
DispatchSpawn(step_ent[count_ent[client]]);
TeleportEntity(step_ent[count_ent[client]], pos, NULL_VECTOR, NULL_VECTOR);
h_ClearStep[client] = CreateTimer(d_clear, ClearStep, client);
PrintToChatAll("_______________\nent: %d\n%.1f %.1f %.1f", step_ent[count_ent[client]], pos[0], pos[1], pos[2]);
}
SDKHook(ent, SDKHook_SetTransmit, Hook_SetTransmit);
}
h_CDStep[client] = CreateTimer(d_interval, CDStep, client);
}
}
}
}
public Action Hook_SetTransmit(int entity, int client){
return !StepsClient[client]? Plugin_Handled : Plugin_Continue;
}
public Action ClearStep(Handle timer, int client){
del_ent[client]++;
if(del_ent[client] >= d_max) del_ent[client] = 0;
AcceptEntityInput(step_ent[del_ent[client]], "kill");
}
public Action CDStep(Handle timer, int client){
h_CDStep[client] = null;
}
stock bool IsValidClient(int client){
if(0 >= client || client > MaxClients || !IsClientInGame(client) || !IsClientConnected(client))
return false;
return true;
}
Ну наверное надоВсем добрый день. Помогите пожалуйста, не пойму почему плагин не стопит бхоп после того как дошло до ограничения в переменной g_Cvar_iCountLimit
else if(iLimitCount[iClient] <= 0)
{
return Plugin_Stop;
}
Не помогло, распрыжка осталасьНу наверное надо
C-подобный:else if(iLimitCount[iClient] <= 0) { return Plugin_Stop; }
Не помогло, распрыжка осталась
if (iLimitCount[iClient] < g_Cvar_iCountLimit && iLimitCount[iClient] > 0 && IsPlayerAlive(iClient) && !(GetEntityFlags(iClient) & FL_ONGROUND) && !(GetEntityMoveType(iClient) & MOVETYPE_LADDER) && GetEntProp(iClient, Prop_Data, "m_nWaterLevel") <= 1)
{
buttons &= ~IN_JUMP;
}
else
{
return Plugin_Stop;
}
так тоже делал, не помогло. Так вообще нет бхопаC-подобный:if (iLimitCount[iClient] < g_Cvar_iCountLimit && iLimitCount[iClient] > 0 && IsPlayerAlive(iClient) && !(GetEntityFlags(iClient) & FL_ONGROUND) && !(GetEntityMoveType(iClient) & MOVETYPE_LADDER) && GetEntProp(iClient, Prop_Data, "m_nWaterLevel") <= 1) { buttons &= ~IN_JUMP; } else { return Plugin_Stop; }
а если Plugin_Handled делать?так тоже делал, не помогло. Так вообще нет бхопа
Тоже пробовал. Я даже брал код с плагина anti_bhop, где кол-во прыжков считается, тоже не тоа если Plugin_Handled делать?
Вот пробовал сделать сам, выдает ошибку client index 0 на 59 строчкеВсем доброго времени суток. Помогите подправить плагин. Нужно сделать так чтоб гранаты выдавались не при спавне VIP игрока, а в начале раунда.
Ожидаем)Всем доброго времени суток. Помогите подправить плагин. Нужно сделать так чтоб гранаты выдавались не при спавне VIP игрока, а в начале раунда.
Сообщения автоматически склеены:
Вот пробовал сделать сам, выдает ошибку client index 0 на 59 строчке
Так вы циклом в начале евента старта раунда по игрокам проходитесь, там нет события useridВсем доброго времени суток. Помогите подправить плагин. Нужно сделать так чтоб гранаты выдавались не при спавне VIP игрока, а в начале раунда.
Сообщения автоматически склеены:
Вот пробовал сделать сам, выдает ошибку client index 0 на 59 строчке
Плагин в целом надо бы переделать на "новый лад" так сказать, опять же какой смысл если есть give weapon новый, где хешки присутствуютОжидаем)
Может кто подскажет как и что.
А то при поднятие вип игрока,у него весь набор гранат появляется.
Что не есть хорошо)
Помогите пожалуйста сделать, много кто этот плагин использует, а там при поднятии гаранты выдаются и игарть проблемноТак вы циклом в начале евента старта раунда по игрокам проходитесь, там нет события userid
Сообщения автоматически склеены:
Плагин в целом надо бы переделать на "новый лад" так сказать, опять же какой смысл если есть give weapon новый, где хешки присутствуют
Если на выходных напишите в лс, то постараюсь помочь.Помогите пожалуйста сделать, много кто этот плагин использует, а там при поднятии гаранты выдаются и игарть проблемно
Хорошо, напишуЕсли на выходных напишите в лс, то постараюсь помочь.
Друзья, кому не сложно, прошу написать плагин. За определенный тег в нике, дается 110 хп, 110 брони, при каждом возрождении(сервер DM). Разумеется, если игрок уберет тег, то бонус пропадает. CSS 34, Соурсмод 1.6.3
#define TAG "hlmod.net"
public void OnPluginStart()
{
HookEvent("player_spawn", PlayerSpawn, EventHookMode_Post);
}
public void PlayerSpawn(Event hEvent, const char[] sEvent, bool bdb)
{
int client = GetClientOfUserId(hEvent.GetInt("userid"));
if(0 < client <= MaxClients && IsClientInGame(client) && !IsFakeClient(client) && GetClientTeam(client) > 1)
{
char name[MAX_NAME_LENGTH];
GetClientName(client, name, sizeof(name));
if(StrContains(name, TAG, true) != -1)
{
SetEntProp(client, Prop_Send, "m_iHealth", 110);
SetEntProp(client, Prop_Send, "m_iArmor", 110);
}
}
}
C++:#define TAG "hlmod.net" public void OnPluginStart() { HookEvent("player_spawn", PlayerSpawn, EventHookMode_Post); } public void PlayerSpawn(Event hEvent, const char[] sEvent, bool bdb) { int client = GetClientOfUserId(hEvent.GetInt("userid")); if(0 < client <= MaxClients && IsClientInGame(client) && !IsFakeClient(client)) { char name[MAX_NAME_LENGTH]; GetClientName(client, name, sizeof(name)); if(StrContains(name, TAG, true) != -1) { SetEntProp(client, Prop_Send, "m_iHealth", 110); SetEntProp(client, Prop_Send, "m_iArmor", 110); } } }