Иконка ресурса

MaEStro71

Участник
Сообщения
163
Реакции
21
По сути плагин должен блочить такие команды как: kill, explode, suicide. Блочит для всех команд, даже для зомби.

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

/*---[Запрещенные команды]---*/
char Forbidden_Commands[][] =
{
    "kill", "explode", "suicide"
};

public Plugin myinfo =
{
    author = "Hejter",
    name = "Forbidden commands",
    version = "0.01",
    url = "hlmod.ru",
};

public void OnPluginStart()
{
    for (int i = 0; i < sizeof(Forbidden_Commands); i++){
        AddCommandListener(ForbiddenCommands, Forbidden_Commands[i]);
    }
}

public Action ForbiddenCommands(int client, const char[] command, int args)
{
    return Plugin_Handled;
}
--- Добавлено позже ---
1 = spectators (as for most of games)
2 = terrorists
3 = CT
----
Странно, зомби Т, команда 2
Дай ка ссылку на свой зомби
Короче. Смог я Kill прописать во время игры, но второй раз не вышло.
При автоназначении смог умереть, и возродиться еще раз, второй раз перейти не получится. Но если прописать !antidote и заразиться, то можно опять же через автоназначение умереть.
Было бы круто конечно, если бы после самоубийства все деньги не возвращались игроку . А только в следующем раунде.
 

Вложения

  • 02.06.2016(8.53.41).jpg
    02.06.2016(8.53.41).jpg
    75.6 КБ · Просмотры: 16
Последнее редактирование:

Hejter

xor ebx, ebx
Сообщения
1,759
Реакции
393
@MaEStro71, если это логи моего скрипта, то компилируй на SM 1.7.x и выше ибо тут используется новый синтаксис. На твоем сервере стоит SM 1.7.x или ниже версия?

Обновил пост добавил версию для css v34.
 
Последнее редактирование:

MaEStro71

Участник
Сообщения
163
Реакции
21

MaEStro71

Участник
Сообщения
163
Реакции
21
@MaEStro71, ну я добавил для v34, должно скомпилироваться без проблем!
Этот норм.
Вся глупость конкретно в моём случае, описана в 25-м посте :ac: . Проще говоря не совместим этот плагин с антидотом
Спасибо за труды!
Но антидот пришлось убрать, ибо школота достала пользоваться данным багом.

P.S: Допиши команду, чтобы в чате выводилось сообщение о запрете использования kill.
Убрать бы автоназначение, цены бы не было плагину. А переход за команду Т или КТ, после заражения не возможен.
 

Hejter

xor ebx, ebx
Сообщения
1,759
Реакции
393
Убрать бы автоназначение
Что за автоназначение?

Замени блок в коде на этот:
C-подобный:
public Action:ForbiddenCommands(client, const String:command[], args)
{
    PrintToConsole(client, "Данная команда запрещена!");
    PrintToChat(client, "Данная команда запрещена!");
    return Plugin_Handled;
}

Скинь сюда этот антидот, посмотрю что можно сделать.
 
Последнее редактирование:

MaEStro71

Участник
Сообщения
163
Реакции
21
Что за автоназначение?

Замени блок в коде на этот:
C-подобный:
public Action ForbiddenCommands(int client, const char[] command, int args)
{
    PrintToConsole(client, "Данная команда запрещена!");
    PrintToChat(client, "Данная команда запрещена!");
    return Plugin_Handled;
}
Попадался один сервер, где в меню не было автоназначения и наблюдения.
--- Добавлено позже ---
Что за автоназначение?

Замени блок в коде на этот:
C-подобный:
public Action:ForbiddenCommands(client, const String:command[], args)
{
    PrintToConsole(client, "Данная команда запрещена!");
    PrintToChat(client, "Данная команда запрещена!");
    return Plugin_Handled;
}

Скинь сюда этот антидот, посмотрю что можно сделать.
/*
* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
*
* ZR Antidote by Furibaito
*
* zr_antidote.sp - Source file
*
* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
*/

// Includes
#include <sourcemod>
#include <sdktools>
#include <zombiereloaded>
#pragma semicolon 1

// Version and description
#define VERSION "1.0"
#define DESC "Zombies could buy an antidote to turn themselves to human. Made by Furibaito."

new UserMsg:g_FadeUserMsgId;

public Plugin:myinfo =
{
name = "[ZR] Antidote",
author = "Furibaito",
description = DESC,
version = VERSION,
url = "www.sourcemod.net"
};

#define FFADE_IN 0x0001
#define FFADE_OUT 0x0002
#define FFADE_PURGE 0x0010

new Handle:hEnable;
new Handle:hPrice;
new Handle:hCommand;
new Handle:hWeaponSet;
// new Handle:hMotherZombieAllow;
new Handle:hSoundPath;
new Handle:hFadeLengthX;
new Handle:hFadeColor;

new Enable;
new Price;
new String:Command[32];
new String:WeaponSet[128];
// new MotherZombieAllow;
new String:SoundPath[64];
new FadeLengthX;
new String:FadeColor[16];

public OnPluginStart()
{
AddCommandListener(PlayerSay, "say");
AddCommandListener(PlayerSay, "say_team");

CreateConVar("zr_antidote_version", VERSION, DESC, FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_UNLOGGED|FCVAR_DONTRECORD|FCVAR_REPLICATED|FCVAR_NOTIFY);
hEnable = CreateConVar("zr_antidote_enable", "1", "Enable or disable antidote plugin on Zombie:Reloaded");
hPrice = CreateConVar("zr_antidote_price", "10000", "What is the price of an Antidote.");
hCommand = CreateConVar("zr_antidote_command", "!antidote", "Command in chat to buy an antidote");
hWeaponSet = CreateConVar("zr_antidote_weapons", "weapon_mp5navy;weapon_usp;weapon_hegrenade", "What weapons will be given to those players just used an antidote? Separates with semi-colons( ; ) and dont put any empty spaces.");
// hMotherZombieAllow = CreateConVar("zr_antidote_allow_mzombie", "0", "Allow or disallow mother zombies to buy an antidote.");
hSoundPath = CreateConVar("zr_antidote_sound", "items/battery_pickup.wav", "Path to the sound played when a zombie using an Antidote. 0 = Disable sound. The default is from HL2.");
hFadeLengthX = CreateConVar("zr_antidote_fade_length", "300", "The length (in milliseconds) of the fade when a zombie using an Antidote. Set 0 to disable fade.");
hFadeColor = CreateConVar("zr_antidote_fade_color", "255 255 255 255", "The color R G B A value of the fade, set \"0 0 0 0\" to disable fade.");

Enable = GetConVarInt(hEnable);
Price = GetConVarInt(hPrice);
GetConVarString(hCommand, Command, sizeof(Command));
GetConVarString(hWeaponSet, WeaponSet, sizeof(WeaponSet));
// MotherZombieAllow = GetConVarInt(hMotherZombieAllow);
GetConVarString(hSoundPath, SoundPath, sizeof(SoundPath));
FadeLengthX = RoundToNearest((GetConVarInt(hFadeLengthX)) / 2.0);
GetConVarString(hFadeColor, FadeColor, sizeof(FadeColor));

HookConVarChange(hEnable, OnConVarChange);
HookConVarChange(hPrice, OnConVarChange);
HookConVarChange(hCommand, OnConVarChange);
// HookConVarChange(hMotherZombieAllow, OnConVarChange);
HookConVarChange(hSoundPath, OnConVarChange);
HookConVarChange(hFadeLengthX, OnConVarChange);
HookConVarChange(hFadeColor, OnConVarChange);

g_FadeUserMsgId = GetUserMessageId("Fade");
}

public OnConVarChange(Handle:cvar, const String:oldVal[], const String:newVal[])
{
if (cvar == hEnable)
{
Enable = StringToInt(newVal);
}

else if (cvar == hPrice)
{
Price = StringToInt(newVal);
}

else if (cvar == hCommand)
{
// The auto-update of string cvar doesn't work whis way. Anyone knows why?
SetConVarString(cvar, newVal);
}

// else if (cvar == hMotherZombieAllow)
// {
// MotherZombieAllow = StringToInt(newVal);
// }

else if (cvar == hSoundPath)
{
SetConVarString(cvar, newVal);
}

else if (cvar == hFadeLengthX)
{
FadeLengthX = RoundToNearest((StringToInt(newVal) / 2.0));
}

else if (cvar == hFadeColor)
{
SetConVarString(cvar, newVal);
}
}

public OnMapStart()
{
new String:SoundPathDL[64];
Format(SoundPathDL, sizeof(SoundPathDL), "sound/%s", SoundPath);
AddFileToDownloadsTable(SoundPathDL);
PrecacheSound(SoundPath);
}

public Action:PlayerSay(client, const String:command[], argc)
{
new String:Text[10];
GetCmdArg(1, Text, sizeof(Text));

if (StrEqual(Text, Command, false))
{
if (!Enable)
{
PrintToChat(client, "\x04[ZR] \x03Antidotes \x01is disabled.");
}

if (ZR_IsClientZombie(client))
{
new Cash = GetEntProp(client, Prop_Send, "m_iAccount");
if (Cash >= Price)
{
// Get zombie count
new ZombieCount;
for (new x = 1; x <= MaxClients; x++)
{
if (IsClientInGame(x))
{
if (GetClientTeam(x) == 2)
ZombieCount++;
}
}

// If the number of zombie is more than 1 (Prevents round ending)
if (ZombieCount > 1)
{
// Turn the zombie to human
ZR_HumanClient(client, false, false);
PrintToChat(client, "\x04[ZR] \x01You have bought an \x03Antidote\x01 for \x03$%i\x01.", Price);

// Fade the client
new String:ColorArray[4][4];
ExplodeString(FadeColor, " ", ColorArray, 4, 4);

new R = StringToInt(ColorArray[0]);
new G = StringToInt(ColorArray[1]);
new B = StringToInt(ColorArray[2]);
new A = StringToInt(ColorArray[3]);

Fade(client, FadeLengthX, FadeLengthX, FFADE_PURGE|FFADE_IN, R, G, B, A);
EmitSoundToAll(SoundPath, client, SNDCHAN_AUTO, 90);

// Substract the cash
Cash -= Price;
SetEntProp(client, Prop_Send, "m_iAccount", Cash);

// Give them weapons
new String:WeaponArray[10][32];
ExplodeString(WeaponSet, ";", WeaponArray, 10, 32, false);
for (new i = 0; i < 10; i++)
{
if (WeaponArray[0] != 0)
{
GivePlayerItem(client, WeaponArray);
}
}
}
else
{
PrintToChat(client, "\x04[ZR] \x01You are the only zombie in the game. Unable to buy an antidote.");
}
}
else
{
PrintToChat(client, "\x04[ZR] \x01You doesn't have enough cash to buy an \x03Antidote\x01! The price is \x03$%i\x01!", Price);
}
}
else
{
PrintToChat(client, "\x04[ZR] \x01 Only zombies can buy an \x03Antidote\x01!");
}
}
}

Fade(client, hold, length, type, r, g, b, a)
{
new clients[2];
clients[0] = client;

new Handle:message = StartMessageEx(g_FadeUserMsgId, clients, 1);
if (message !=INVALID_HANDLE)
{
if (GetFeatureStatus(FeatureType_Native, "GetUserMessageType") == FeatureStatus_Available && GetUserMessageType() == UM_Protobuf)
{
new Color[4];
Color[0] = r;
Color[1] = g;
Color[2] = b;
Color[3] = a;
PbSetInt(message, "duration", length);
PbSetInt(message, "hold_time", hold);
PbSetInt(message, "flags", type);
PbSetColor(message, "clr", Color);
}

else
{
BfWriteShort(message, length);
BfWriteShort(message, hold);
BfWriteShort(message, type);
BfWriteByte(message, r);
BfWriteByte(message, g);
BfWriteByte(message, b);
BfWriteByte(message, a);
EndMessage();
}
}
}

Кстати опять не компилится. У меня SM 1.6.3 :ab:
 

Вложения

  • hl2 2016-06-02 18-17-02-67.png
    hl2 2016-06-02 18-17-02-67.png
    270.2 КБ · Просмотры: 21
Последнее редактирование:

Hejter

xor ebx, ebx
Сообщения
1,759
Реакции
393
@MaEStro71, Автовыбор и наблюдение убрать не проблема. Обновил пост перекачай плагин http://hlmod.ru/attachments/forbidden_commands_v34-sp.16071/
Добавил: В чат пишет что команда заблокирована и в консоль; Заблокировал автовыбор команды и наблюдения.
 

MaEStro71

Участник
Сообщения
163
Реакции
21
@MaEStro71, Автовыбор и наблюдение убрать не проблема. Обновил пост перекачай плагин http://hlmod.ru/attachments/forbidden_commands_v34-sp.16071/
Добавил: В чат пишет что команда заблокирована и в консоль; Заблокировал автовыбор команды и наблюдения.
Весь сервер висит в спектрах, даже если выбрать команду :biggrin:
 

Hejter

xor ebx, ebx
Сообщения
1,759
Реакции
393
@MaEStro71, в скрипте вырежи пока что "jointeam", это позволит заходить за обе команды, но автовыбор останется.

Обновил: http://hlmod.ru/attachments/forbidden_commands_v34-sp.16088/. Не могу тестировать в v34, так что все через тебя. Заблокировал автовыбор должным образом, сейчас не должно блокировать "Вход за команду", но опять же не тестировал, не могу быть на 100% уверенным.
 
Последнее редактирование:

MaEStro71

Участник
Сообщения
163
Реакции
21
@MaEStro71, в скрипте вырежи пока что "jointeam", это позволит заходить за обе команды, но автовыбор останется.

Обновил: http://hlmod.ru/attachments/forbidden_commands_v34-sp.16088/. Не могу тестировать в v34, так что все через тебя. Заблокировал автовыбор должным образом, сейчас не должно блокировать "Вход за команду", но опять же не тестировал, не могу быть на 100% уверенным.
Была ошибка при компиляции.
Да и решил я проблему с антидотом. Установив цену за него $16 000, при этом каждый раунд игрокам выдается $10000 + этот плагин :dance2::dance3::dance4:
С меня плюсики за труды
 
Последнее редактирование:

Hejter

xor ebx, ebx
Сообщения
1,759
Реакции
393
@MaEStro71, все работает? Я про тот плагин который я написал. В антидоте я сразу заметил, чот там нет проблем с убийством, а искать решение мне стало лень.
Попробовал скомпилить плагин на SM 1.7.x/SM 1.6.x без единой ошибки. Использую компилятор Spedit.
 

MaEStro71

Участник
Сообщения
163
Реакции
21
@MaEStro71, все работает? Я про тот плагин который я написал. В антидоте я сразу заметил, чот там нет проблем с убийством, а искать решение мне стало лень.
Попробовал скомпилить плагин на SM 1.7.x/SM 1.6.x без единой ошибки. Использую компилятор Spedit.
Работает как надо! Kill блочит, автоназначение тоже. :clapp:
 

panikajo

Участник
Сообщения
866
Реакции
231
Еще можно так сделать ->>
C-подобный:
#include <sourcemod>
#include <sdktools>
#include <cstrike>
#include <sdkhooks>

#pragma semicolon 1

ConVar sv_autokick = null;
ConVar mp_disable_autokick = null;

public Plugin myinfo =
{
    name = "Disable suicide ban",
    author = "Diogoonair",
    description = "Disable suicide ban.",
    version = "1.0",
};

public void OnPluginStart()
{   
    HookEvent("round_start", OnRoundStart);
}

public Action OnRoundStart(Event event, const char[] name, bool dontBroadcast)
{
    SetConVarInt(FindConVar("mp_disable_autokick"), 1);
    SetConVarInt(FindConVar("sv_autokick"), 0);
}
 

Просто Samura

Участник
Сообщения
103
Реакции
9
Исходник где?:angry2:
#include <sourcemod>

#define BLOCKKILL_VERSION "1.1"
new Handle:blockkill_enabled;

public Plugin:myinfo =
{
name = "Block KillVector",
author = "",
description = "Block's the cvar KILL Vector",
version = "1.1.1",
url = ""
};

public OnPluginStart()
{
CreateConVar( "blockkill_varsion", BLOCKKILL_VERSION, "KillBlock Version", FCVAR_NOTIFY );
blockkill_enabled = CreateConVar("blockkill_enabled", "1", "Enable or disable KillBlock; 0 - disabled, 1 - enabled");
RegConsoleCmd("killvector", BlockKill);
}

public Action:BlockKill(client, args)
{
if (GetConVarInt(blockkill_enabled) == 1)
{
PrintToChat(client, "\x04[BlockKillVector]\x01 The \x05kill\x01 cvar is blocked!");
return Plugin_Handled;
}
return Plugin_Continue;
}
 
Последнее редактирование:

hirowatch

Живет ХЛмод`ом
Сообщения
2,722
Реакции
1,634
  • Автор ресурса
  • #40
@Jim, спойлер используй или в .sp кидай
 
Сверху Снизу