KiKiEEKi
🏆 🥇
- Сообщения
- 653
- Реакции
- 513
Здравствуйте, не хочу создавать много тем со своими вопросами в начинание своего мода.
1. Как сделать так что бы переменная g_slot1 менялась с false на true только тому кто выбрал пункт в панели(меню) а не всем на сервере.
Скажите или укажите на решение моего вопроса пожалуйста.
p.s не ругайте за старый и новый синтаксис(я брал готовые решение из плагинов %90)
1. Как сделать так что бы переменная g_slot1 менялась с false на true только тому кто выбрал пункт в панели(меню) а не всем на сервере.
Скажите или укажите на решение моего вопроса пожалуйста.
p.s не ругайте за старый и новый синтаксис(я брал готовые решение из плагинов %90)
Код:
#define PLUGIN_VERSION "beta 1.0"
public Plugin:myinfo =
{
name = "Team Fortress 2 MOD",
author = "vk.com/kikieeki",
version = PLUGIN_VERSION
}
#include <cstrike>
#include <sdktools>
new Handle: g_TF2;
new
Handle:g_cvJumpBoost = INVALID_HANDLE,
Handle:g_cvJumpEnable = INVALID_HANDLE,
Handle:g_cvJumpMax = INVALID_HANDLE,
Float:g_flBoost = 250.0,
bool:g_bDoubleJump = true,
g_fLastButtons[MAXPLAYERS+1],
g_iJumps[MAXPLAYERS+1],
g_iJumpMax
bool g_slot1 = false;
public OnPluginStart()
{
HookEvent("player_spawn", player_spawn);
RegConsoleCmd("sm_tf", Command_OpenMenu_TF2);
g_TF2 = CreatePanel();
SetPanelTitle(g_TF2, "Team Fortress 2 MOD:")
SetPanelCurrentKey(g_TF2, 1)
DrawPanelItem(g_TF2, "Разведчик")
SetPanelCurrentKey(g_TF2, 2)
DrawPanelItem(g_TF2, "Солдат")
SetPanelCurrentKey(g_TF2, 3)
DrawPanelItem(g_TF2, "Поджигатель")
SetPanelCurrentKey(g_TF2, 4)
DrawPanelItem(g_TF2, "Подрывник")
SetPanelCurrentKey(g_TF2, 5)
DrawPanelItem(g_TF2, "Пулемётчик")
SetPanelCurrentKey(g_TF2, 6)
DrawPanelItem(g_TF2, "Инженер")
SetPanelCurrentKey(g_TF2, 7)
DrawPanelItem(g_TF2, "Медик")
SetPanelCurrentKey(g_TF2, 8)
DrawPanelItem(g_TF2, "Снайпер")
SetPanelCurrentKey(g_TF2, 9)
DrawPanelItem(g_TF2, "Шпион")
CreateConVar("sm_tf2_version", PLUGIN_VERSION, "Версия плагина", FCVAR_NOTIFY)
g_cvJumpEnable = CreateConVar("sm_doublejump_enabled", "1", "Вкл/Выкл двойной прыжок", FCVAR_NOTIFY)
g_cvJumpBoost = CreateConVar("sm_doublejump_boost", "250.0", "Высота повторных прыжков", FCVAR_NOTIFY)
g_cvJumpMax = CreateConVar("sm_doublejump_max", "1", "Кол-во прыжков", FCVAR_NOTIFY)
HookConVarChange(g_cvJumpBoost, convar_ChangeBoost)
HookConVarChange(g_cvJumpEnable, convar_ChangeEnable)
HookConVarChange(g_cvJumpMax, convar_ChangeMax)
g_bDoubleJump = GetConVarBool(g_cvJumpEnable)
g_flBoost = GetConVarFloat(g_cvJumpBoost)
g_iJumpMax = GetConVarInt(g_cvJumpMax)
}
public player_spawn(Event hEvent, const char[] sEvName, bool bDontBroadcast)
{
int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
FakeClientCommand(iClient, "sm_tf");
new wslot0 = GetPlayerWeaponSlot(iClient, 0);
new wslot1 = GetPlayerWeaponSlot(iClient, 1);
new wslot2 = GetPlayerWeaponSlot(iClient, 2);
RemovePlayerItem(iClient, wslot0);
RemovePlayerItem(iClient, wslot1);
RemovePlayerItem(iClient, wslot2);
}
public Action CS_OnBuyCommand(client, const String:item[])
{
if (strcmp(item, "g3sg1", false) == 0 || strcmp(item, "sg550", false) == 0 ||
strcmp(item, "awp", false) == 0 || strcmp(item, "scout", false) == 0 ||
strcmp(item, "ak47", false) == 0 || strcmp(item, "m4a1", false) == 0 ||
strcmp(item, "sg552", false) == 0 || strcmp(item, "aug", false) == 0 ||
strcmp(item, "galil", false) == 0 || strcmp(item, "famas", false) == 0 ||
strcmp(item, "mac10", false) == 0 || strcmp(item, "mp5navy", false) == 0 ||
strcmp(item, "tmp", false) == 0 || strcmp(item, "ump45", false) == 0 ||
strcmp(item, "p90", false) == 0 || strcmp(item, "m3", false) == 0 ||
strcmp(item, "xm1014", false) == 0 || strcmp(item, "m249", false) == 0 ||
strcmp(item, "glock", false) == 0 || strcmp(item, "usp", false) == 0 ||
strcmp(item, "p228", false) == 0 || strcmp(item, "deagle", false) == 0 ||
strcmp(item, "fiveseven", false) == 0 || strcmp(item, "elite", false) == 0 ||
strcmp(item, "hegrenade", false) == 0 || strcmp(item, "flashbang", false) == 0 ||
strcmp(item, "smokegrenade", false) == 0)
{
PrintToChat(client, "\x07008000[TF2]\x01: Покупка запрещена!");
return Plugin_Handled;
}
return Plugin_Continue;
}
public Action:Command_OpenMenu_TF2(client, argc)
{
SendPanelToClient(g_TF2, client, Handler_TF2, MENU_TIME_FOREVER);
return Plugin_Handled;
}
public Handler_TF2(Handle:panel, MenuAction:action, client, slot)
{
switch (action)
{
case MenuAction_Select:
{
if (slot == 1) //Разведчик
{
SetEntityHealth(client, 125);
SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 1.33);
GivePlayerItem(client, "weapon_xm1014");
GivePlayerItem(client, "weapon_p228");
g_slot1 = true
}
else if (slot == 2) //Солдат
{
SetEntityHealth(client, 200);
SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 0.8);
GivePlayerItem(client, "weapon_m3");
GivePlayerItem(client, "weapon_hegrenade");
g_slot1 = false
}
else if (slot == 3) //Поджигатель
{
SetEntityHealth(client, 175);
SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 1.0);
GivePlayerItem(client, "weapon_m3");
}
else if (slot == 4) //Подрывник
{
SetEntityHealth(client, 175);
SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 0.93);
GivePlayerItem(client, "weapon_hegrenade");
}
else if (slot == 5) //Пулемётчик
{
SetEntityHealth(client, 300);
SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 0.77);
GivePlayerItem(client, "weapon_m249");
GivePlayerItem(client, "weapon_deagle");
}
else if (slot == 6) //Инженер
{
SetEntityHealth(client, 125);
SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 1.0);
GivePlayerItem(client, "weapon_m3");
GivePlayerItem(client, "weapon_p228");
}
else if (slot == 7) //Медик
{
SetEntityHealth(client, 150);
SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 1.07);
GivePlayerItem(client, "weapon_p90");
GivePlayerItem(client, "weapon_p228");
}
else if (slot == 8) //Снайпер
{
SetEntityHealth(client, 125);
SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 1.0);
GivePlayerItem(client, "weapon_awp");
GivePlayerItem(client, "weapon_elite");
}
else if (slot == 9) //Шпион
{
SetEntityHealth(client, 125);
SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 1.07);
GivePlayerItem(client, "weapon_deagle");
}
}
}
}
public convar_ChangeBoost(Handle:convar, const String:oldVal[], const String:newVal[])
{
g_flBoost = StringToFloat(newVal)
}
public convar_ChangeEnable(Handle:convar, const String:oldVal[], const String:newVal[])
{
if (StringToInt(newVal) >= 1)
{
g_bDoubleJump = true
}
else
{
g_bDoubleJump = false
}
}
public convar_ChangeMax(Handle:convar, const String:oldVal[], const String:newVal[])
{
g_iJumpMax = StringToInt(newVal)
}
stock Landed(const any:client)
{
g_iJumps[client] = 0 // сброс количества прыжков
}
public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3], float angles[3], int &weapon, int &subtype, int &cmdnum, int &tickcount, int &seed, int mouse[2])
{
if(g_bDoubleJump)
{
new fCurFlags = GetEntityFlags(client);
if(fCurFlags & FL_ONGROUND)
{
Landed(client);
}
else if(!(g_fLastButtons[client] & IN_JUMP) && (buttons & IN_JUMP) && !(fCurFlags & FL_ONGROUND))
{
ReJump(client);
}
g_fLastButtons[client] = buttons;
}
}
stock ReJump(const any:client)
{
if (g_slot1 == true)
{
if (g_iJumps[client] < g_iJumpMax) // прыгнул хотя бы один раз, но не превысил максимальных повторных прыжков
{
g_iJumps[client]++ // прирост количества прыжков
decl Float:vVel[3]
GetEntPropVector(client, Prop_Data, "m_vecVelocity", vVel) // получить текущие скорости
vVel[2] = g_flBoost
TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, vVel) // увеличить плеер
}
}
}