Hejter
xor ebx, ebx
- Сообщения
- 1,759
- Реакции
- 393
Библиотека.
Описание: Если игрок пишет sm_s, то у игрока забирается все оружие, скин красится в черный цвет и он не может поднимать оружие, пока не будет доступен LR. Если игроку доступен LR, то команда sm_s блокируется.
P.S. плагин не проверял.
Ни когда, не пробовал писать скрипты для hosties. Попробуй эту версию.
PHP:
#pragma semicolon 1
#include <sdktools>
#include <sdkhooks>
#include <lastrequest>
new bool:b_s[MAXPLAYERS + 1]; // Использование оружия.
new bool:b_availableLR[MAXPLAYERS + 1]; // Если LR доступен.
// Список блокируемого оружия.
new const String:block_weapons_list[][] =
{
"ak47", "aug", "mp7", "mp9", "scar20", "deagle", "revolver",
"usp_silencer", "ump-45", "sawedoff", "nova", "negev",
"m249", "m4a1", "m4a1-silencer", "awp", "g3sg1", "ssg08",
"glock", "fiveseven", "cz75a", "elite", "decoy", "flashbang",
"galilar", "galil", "hkp2000", "incgrenade", "molotov", "hegrenade",
"c4", "smokegrenade", "sg556", "taser", "tec9", "p90", "tmp", "ump45",
"knife"
};
#define Weapon_Count sizeof(block_weapons_list)
public OnPluginStart()
{
RegConsoleCmd("sm_s", Cmd_S);
HookEvent("player_spawn", Player_Spawn);
}
public Action:Cmd_S(client, args)
{
if (client != 0)
{
if (IsClientInGame(client) && IsPlayerAlive(client) && GetClientTeam(client) == 2)
{
if (b_availableLR[client] == false)
{
b_s[client] = true;
RemoveAllPlayersWeapons(client);
SetEntityRenderColor(client, 0, 0, 0, 255);
PrintToChatAll("%N сдался!");
}
}
}
return Plugin_Handled;
}
// Запрещает использовать и поднимать запрещенное оружие.
public Action:WeaponEquip(client, weapon)
{
if(GetClientTeam(client) == 2 && b_s[client] == true) // Если игрок в команде Т и b_s[client] == true, то запрещаем поднимать оружие.
{
decl String:blockWeapon[32];
GetEntityClassname(weapon, blockWeapon, sizeof(blockWeapon));
for(new i = 0; i < Weapon_Count; ++i)
{
if(strcmp(blockWeapon[7], block_weapons_list[i]) == 0)
{
return Plugin_Handled;
}
}
}
return Plugin_Continue;
}
public Player_Spawn(Handle:event, const String:name[], bool:dontBroadcast){
new client = GetClientOfUserId(GetEventInt(event, "userid"));
if(IsClientInGame(client) && !IsFakeClient(client) && IsPlayerAlive(client) && GetClientTeam(client) == 2)
{
b_s[client] = false;
b_availableLR[client] = false;
}
}
public OnClientPostAdminCheck(client)
{
SDKHook(client, SDKHook_WeaponEquip, WeaponEquip);
}
public OnClientDisconnect(client){
b_s[client] = false;
b_availableLR[client] = false;
SDKUnhook(client, SDKHook_WeaponEquip, WeaponEquip);
}
/* Stocks */
stock RemoveAllPlayersWeapons(client)
{
new weaponindex;
for (new weaponslot = 0; weaponslot < 5; weaponslot++)
{
weaponindex = GetPlayerWeaponSlot(client, weaponslot);
if (weaponindex != -1)
{
Util_RemovePlayerItem(client, weaponindex);
}
}
WepLib_GrenadeStripAll(client);
}
stock Util_RemovePlayerItem(client, weaponindex)
{
RemovePlayerItem(client, weaponindex);
RemoveEdict(weaponindex);
}
stock WepLib_GrenadeStripAll(client)
{
new grenade = GetPlayerWeaponSlot(client, 3);
while (grenade != -1)
{
Util_RemovePlayerItem(client, grenade);
grenade = GetPlayerWeaponSlot(client, 3);
}
}
public OnAvailableLR(Announced)
{
for(new i = 1; i <= MaxClients; i++)
{
b_s[i] = false; // Разрешаем игроку поднимать оружие.
b_availableLR[i] = true; // Если игроку доступен LR, то запрещаем команду sm_s.
}
}
Последнее редактирование: