не лучше ли вместо CreateTimer использовать RequestFrame? Он заменит сразу и не даст игроку выкинуть оружие до того, как оружие заменится
Не злись, прошу, просто учти это.Мистер енот столько минусов нашёл, о нет, что же делать.
Кнеш запретить выкинуть + деньги учесть лучше.
RequestFrame никогда не использовал + впервые о нём слышу.
Если енот хочет помочь ему и эти недочеты настолько ужасны, пусть подправит или сделает сам.
Эта функция буквально на следующем кадре выполняет ту или иную функцию. Полезно, нужен не таймер на 0.1сек, и не сразу, а ждун на 1 кадр. В том числе с гранатами, например узнать их владельца... Но при создании владельца нету(RequestFrame никогда не использовал + впервые о нём слышу.
Первый плагин работал практически идеально, а вот 2-рой покупает обе эмки и снимает 6200$ при кокупке через бинд, если черед меню, то всё окНе злись, прошу, просто учти это.
И кстати их всего 3
Не тестировал, ибо лень, даже точную цену М4 не посмотрел, а так-же функцию покупки, поэтому плаг лишь запрещает закуп м4 и выдает м4-с, при этом забирая деньги
--- Добавлено позже ---
Эта функция буквально на следующем кадре выполняет ту или иную функцию. Полезно, нужен не таймер на 0.1сек, и не сразу, а ждун на 1 кадр. В том числе с гранатами, например узнать их владельца... Но при создании владельца нету(
тоже самоеСтранно, что с биндами такое... На всякий случай сделал что-то типо "защиты".
я хзтоже самое
#include <cstrike>
#include <sdktools_functions>
#define M4A1_PRICE 3100
public Action:CS_OnBuyCommand(client, const String:item[])
{
new ovechka, zaychik;
decl String:krolik[32];
if (!IsPlayerAlive(client) || strcmp(item, "m4a1", false) != 0)
{
return Plugin_Continue;
}
else if ((zaychik = GetPlayerWeaponSlot(client, 0)) > 0 && GetEntityClassname(zaychik, krolik, 32) && strcmp(krolik[7], "m4a1_silencer", false) == 0
|| (ovechka = GetEntProp(client, Prop_Send, "m_iAccount")) < M4A1_PRICE)
{
return Plugin_Handled;
}
else if (zaychik > 0)
{
CS_DropWeapon(client, zaychik, true);
}
SetEntProp(client, Prop_Send, "m_iAccount", ovechka - M4A1_PRICE);
GivePlayerItem(client, "weapon_m4a1_silencer");
return Plugin_Handled;
}
Через меню покупки всё ок, а вот через бинд снимается по нормальному 3100, но покупается так же 2-е эмки, m4a4 выбрасывается а м4а1-с остаётся в руках@spazm
C-подобный:#include <cstrike> #include <sdktools_functions> #define M4A1_PRICE 3100 public Action:CS_OnBuyCommand(client, const String:item[]) { new ovechka, zaychik; decl String:krolik[32]; if (!IsPlayerAlive(client) || strcmp(item, "m4a1", false) != 0) { return Plugin_Continue; } else if ((zaychik = GetPlayerWeaponSlot(client, 0)) > 0 && GetEntityClassname(zaychik, krolik, 32) && strcmp(krolik[7], "m4a1_silencer", false) == 0 || (ovechka = GetEntProp(client, Prop_Send, "m_iAccount")) < M4A1_PRICE) { return Plugin_Handled; } else if (zaychik > 0) { CS_DropWeapon(client, zaychik, true); } SetEntProp(client, Prop_Send, "m_iAccount", ovechka - M4A1_PRICE); GivePlayerItem(client, "weapon_m4a1_silencer"); return Plugin_Handled; }
Что через бинд, что через меню, m4a1 вообще не должна покупаться, не знаю, что у тебя за хреньЧерез меню покупки всё ок, а вот через бинд снимается по нормальному 3100, но покупается так же 2-е эмки, m4a4 выбрасывается а м4а1-с остаётся в руках
#include <cstrike>
#include <sdktools_functions>
#include <sdktools_entinput>
#define M4A1_PRICE 3100
public Action:CS_OnBuyCommand(client, const String:item[])
{
new ovechka, zaychik;
new String:krolik[32];
if (!IsPlayerAlive(client) || strcmp(item, "m4a1", false) != 0)
{
return Plugin_Continue;
}
else if ((zaychik = GetPlayerWeaponSlot(client, 0)) > 0 && GetEntityClassname(zaychik, krolik, 32) && strcmp(krolik[7], "m4a1_silencer", false) == 0
|| (ovechka = GetEntProp(client, Prop_Send, "m_iAccount")) < M4A1_PRICE)
{
return Plugin_Handled;
}
else if (zaychik > 0)
{
if (strcmp(krolik[7], "m4a1", false) == 0)
{
RemovePlayerItem(client, zaychik);
AcceptEntityInput(zaychik, "Kill");
}
else
{
CS_DropWeapon(client, zaychik, false);
}
}
SetEntProp(client, Prop_Send, "m_iAccount", ovechka - M4A1_PRICE);
GivePlayerItem(client, "weapon_m4a1_silencer");
return Plugin_Handled;
}
Сейчас покупается только m4a1-s, но через бинд снимается 6200, через меню всё ок. Бинд стоит такой bind "kp_pgdn" "buy ak47; buy m4a1"Что через бинд, что через меню, m4a1 вообще не должна покупаться, не знаю, что у тебя за хрень
C-подобный:#include <cstrike> #include <sdktools_functions> #include <sdktools_entinput> #define M4A1_PRICE 3100 public Action:CS_OnBuyCommand(client, const String:item[]) { new ovechka, zaychik; new String:krolik[32]; if (!IsPlayerAlive(client) || strcmp(item, "m4a1", false) != 0) { return Plugin_Continue; } else if ((zaychik = GetPlayerWeaponSlot(client, 0)) > 0 && GetEntityClassname(zaychik, krolik, 32) && strcmp(krolik[7], "m4a1_silencer", false) == 0 || (ovechka = GetEntProp(client, Prop_Send, "m_iAccount")) < M4A1_PRICE) { return Plugin_Handled; } else if (zaychik > 0) { if (strcmp(krolik[7], "m4a1", false) == 0) { RemovePlayerItem(client, zaychik); AcceptEntityInput(zaychik, "Kill"); } else { CS_DropWeapon(client, zaychik, false); } } SetEntProp(client, Prop_Send, "m_iAccount", ovechka - M4A1_PRICE); GivePlayerItem(client, "weapon_m4a1_silencer"); return Plugin_Handled; }
У него в любом случае m4a1 покупает, хоть убейся, возможно еще какой-то плагин есть на покупкуПопробуй
Всё тоже самое:( Но в этом покупается обе эмки и "эсочка" выкидываетсяПопробуй
#pragma semicolon 1
#include <PTaH>
public void OnPluginStart()
{
PTaH(PTaH_GiveNamedItemPre, Hook, GiveNamedItemPre);
}
public Action GiveNamedItemPre(int iClient, char sClassname[64], CEconItemView &Item)
{
if(StrEqual(sClassname, "weapon_m4a1"))
{
sClassname = "weapon_m4a1_silencer";
Item = view_as<CEconItemView>(0); //без этого все равно будет weapon_m4a1 при покупке через меню
return Plugin_Changed;
}
return Plugin_Continue;
}
PHP:#pragma semicolon 1 #include <PTaH> public void OnPluginStart() { PTaH(PTaH_GiveNamedItemPre, Hook, GiveNamedItemPre); } public Action GiveNamedItemPre(int iClient, char sClassname[64], CEconItemView &Item) { if(StrEqual(sClassname, "weapon_m4a1")) { sClassname = "weapon_m4a1_silencer"; Item = view_as<CEconItemView>(0); //без этого все равно будет weapon_m4a1 при покупке через меню return Plugin_Changed; } return Plugin_Continue; }
В этот раз покупает 2 штуки m4a1-s через бинд и одну через магазинPHP:#pragma semicolon 1 #include <PTaH> public void OnPluginStart() { PTaH(PTaH_GiveNamedItemPre, Hook, GiveNamedItemPre); } public Action GiveNamedItemPre(int iClient, char sClassname[64], CEconItemView &Item) { if(StrEqual(sClassname, "weapon_m4a1")) { sClassname = "weapon_m4a1_silencer"; Item = view_as<CEconItemView>(0); //без этого все равно будет weapon_m4a1 при покупке через меню return Plugin_Changed; } return Plugin_Continue; }