Ребят, за определенную сумму, может кто-нибудь написать плагин на Zombie:Reloaded для CS:S, суть плагина следующая. Если humans (выживший) прописывает команду kill (часто люди прописывают чтобы их не съели зомби), этот человек в следующем раунде теряет сумму денег прописанную в определенном cvar. Например плагин имеет cvar: sm_kill_money 16000, тогда у игрока в следующем раунде вычитается эта сумма денег и в чате напишет ему: За использование команды kill в прошлом раунде, вы оштрафованы на 16000$ Таким образом, этот человек уже не сможет закупить оружие
Пробуй Спойлер PHP: #include <sourcemod>new Handle:g_hMoney = INVALID_HANDLE;new bool:Check[MAXPLAYERS + 1] = {false, ...};new CVAR_Money = 0;public OnPluginStart(){ g_hMoney = CreateConVar("sm_kill_money", "16000", "Укажите сумму денег, которая будет вычитаться"); AddCommandListener(ACL_Kill, "kill"); HookEvent("player_spawn", Event_OnPlayerSpawn);}public OnMapStart(){ CVAR_Money = GetConVarInt(g_hMoney);}public OnClientDisconnect(client){ if (Check[client]) { Check[client] = false; }}public Action:ACL_Kill(client, const String:name[], args){ if (IsPlayerAlive(client)) { Check[client] = true; }}public Event_OnPlayerSpawn(Handle:event, const String:name[], bool:silent){ new client = GetClientOfUserId(GetEventInt(event, "userid")); if (Check[client]) { new money = GetEntProp(client, Prop_Send, "m_iAccount", 4); SetEntProp(client, Prop_Send, "m_iAccount", money <= CVAR_Money ? 0 : (money - CVAR_Money)); Check[client] = false; PrintToChat(client, "За использование команды kill в прошлом раунде, вы оштрафованы на %d$", CVAR_Money); }}
на zr есть квар такой zr_account_cashfill_value "12000", который каждый раунд выдает сумму указанную денег. и соответственно твой вариант не работает Добавлено через 58 секунд в чат написало что я оштрафован, но не сняло денег, а может и сняло но потом снова восстановило Добавлено через 7 минут попробовал без мода Zombie:Reloaded, то все работает
★Сириус★ Попробуй так Спойлер PHP: #include <sourcemod>new Handle:g_hMoney = INVALID_HANDLE;new bool:Check[MAXPLAYERS + 1] = {false, ...};new CVAR_Money = 0;public OnPluginStart(){ g_hMoney = CreateConVar("sm_kill_money", "16000", "Укажите сумму денег, которая будет вычитаться"); AddCommandListener(ACL_Kill, "kill"); HookEvent("player_spawn", Event_OnPlayerSpawn);}public OnMapStart(){ CVAR_Money = GetConVarInt(g_hMoney);}public OnClientDisconnect(client){ if (Check[client]) { Check[client] = false; }}public Action:ACL_Kill(client, const String:name[], args){ if (IsPlayerAlive(client)) { Check[client] = true; }}public Event_OnPlayerSpawn(Handle:event, const String:name[], bool:silent){ new client = GetClientOfUserId(GetEventInt(event, "userid")); if (Check[client]) { CreateTimer(0.2, Timer, client); }}public Action:Timer(Handle:timer, any:client){ if (IsClientInGame(client)) { new money = GetEntProp(client, Prop_Send, "m_iAccount", 4); SetEntProp(client, Prop_Send, "m_iAccount", money <= CVAR_Money ? 0 : (money - CVAR_Money)); Check[client] = false; PrintToChat(client, "За использование команды kill в прошлом раунде, вы оштрафованы на %d$", CVAR_Money); }}
The End Is Near..., спасибо работает, только я не подумал, в моде есть автомагазин (автозакупка) и чел успевает закупиться до того как плагин вычтет деньги. Вобщем ладно, спасибо за работу, то что я заказывал то есть в твоей версии.
★Сириус★ Попробуй так. Проверь, работает ли автозакупка Спойлер PHP: #include <sourcemod>new Handle:g_hMoney = INVALID_HANDLE;new bool:Check[MAXPLAYERS + 1] = {false, ...};new CVAR_Money = 0;public OnPluginStart(){ g_hMoney = CreateConVar("sm_kill_money", "16000", "Укажите сумму денег, которая будет вычитаться"); AddCommandListener(ACL_Kill, "kill"); HookEvent("player_spawn", Event_OnPlayerSpawn);}public OnMapStart(){ CVAR_Money = GetConVarInt(g_hMoney);}public OnClientDisconnect(client){ if (Check[client]) { Check[client] = false; }}public Action:CS_OnBuyCommand(client, const String:weapon[]){ if (Check[client]) { return Plugin_Handled; } return Plugin_Continue;}public Action:ACL_Kill(client, const String:name[], args){ if (IsPlayerAlive(client)) { Check[client] = true; }}public Event_OnPlayerSpawn(Handle:event, const String:name[], bool:silent){ new client = GetClientOfUserId(GetEventInt(event, "userid")); if (Check[client]) { CreateTimer(0.2, Timer, client); }}public Action:Timer(Handle:timer, any:client){ if (IsClientInGame(client)) { new money = GetEntProp(client, Prop_Send, "m_iAccount", 4); SetEntProp(client, Prop_Send, "m_iAccount", money <= CVAR_Money ? 0 : (money - CVAR_Money)); Check[client] = false; PrintToChat(client, "За использование команды kill в прошлом раунде, вы оштрафованы на %d$", CVAR_Money); }}
The End Is Near..., все осталось также как и было Добавлено через 12 минут в общем поставил значение Код: CreateTimer([B][COLOR="Red"]0.1[/COLOR][/B], Timer, client); и все стало норм, плагин стал успевать забрать деньги до автозакупки Добавлено через 16 минут а можно ли еще в плагин добавить условие, чтобы он работал только у живых humans, у zombie плагин не работал.
Вот попробуй: Спойлер PHP: #include <sourcemod>#include <zombiereloaded>new Handle:g_hMoney = INVALID_HANDLE;new bool:Check[MAXPLAYERS + 1] = {false, ...};new CVAR_Money = 0;public OnPluginStart(){ g_hMoney = CreateConVar("sm_kill_money", "16000", "Укажите сумму денег, которая будет вычитаться"); AddCommandListener(ACL_Kill, "kill"); HookEvent("player_spawn", Event_OnPlayerSpawn);}public OnMapStart(){ CVAR_Money = GetConVarInt(g_hMoney);}public OnClientDisconnect(client){ if (Check[client]) { Check[client] = false; }}public Action:CS_OnBuyCommand(client, const String:weapon[]){ if (Check[client]) { return Plugin_Handled; } return Plugin_Continue;}public Action:ACL_Kill(client, const String:name[], args){ if (ZR_IsClientHuman(client) && IsPlayerAlive(client)) { Check[client] = true; }}public Event_OnPlayerSpawn(Handle:event, const String:name[], bool:silent){ new client = GetClientOfUserId(GetEventInt(event, "userid")); if (Check[client]) { CreateTimer(0.1, Timer, client); }}public Action:Timer(Handle:timer, any:client){ if (IsClientInGame(client)) { new money = GetEntProp(client, Prop_Send, "m_iAccount", 4); SetEntProp(client, Prop_Send, "m_iAccount", money <= CVAR_Money ? 0 : (money - CVAR_Money)); Check[client] = false; PrintToChat(client, "За использование команды kill в прошлом раунде, вы оштрафованы на %d$", CVAR_Money); }}
Попробуйте заблокировать команду autobuy. Ведь она как раз отвечает за автозакупку, и когда check[client] пытается её использовать, возвращайте Plugin_Handled.
нет, если бы я хотел сделать так, то не создавал данный запрос. Еще так для справки, может кто не знает. В контре есть еще одна консольная команда: explode - значение её точно такое же как kill
ну началось я без вас этого не знаю как будто. читайте первый пост Добавлено через 3 минуты В общем закрывайте тему, в целом мне помогли. За что всем выражаю огромную благодарность, а то начнется сейчас есть то, есть то, а еще есть то. и все это в стандартных функциях ....... Всем спасибо