Непонятки с плагином
www22
Дата: Среда, 15.05.2019, 10:24:59 | Сообщение # 1
Сообщений: 84
Репутация: -1 [ +/- ]
Что понять не могу , что не так в коде, и почему может вызываться крэш сервера ? Может что не учел по неопытности или еще что. Все плагины работают. Крэш в первом коде вызывается после 3-5 карт И при онлайне больше 16 игроков (половины сервера). Да плагины ставились на 2-х серверах первый код . Крэш везде , со вторым кодом пока крэш на одном сервере, на втором вроде полет нормальный.Но еще не вечер :))Код
#include <sdkhooks> #pragma semicolon 1 #pragma newdecls required bool g_bBlock; // true blocking public void OnPluginStart() { HookEvent("dod_round_start", Event_RoundStart, EventHookMode_PostNoCopy); HookEvent("dod_round_win", Event_RoundEnd, EventHookMode_PostNoCopy); } public void OnClientPutInServer(int iClient) { SDKHook(iClient, SDKHook_WeaponCanUse, WeaponCanUse); // you unhooked } public void Event_RoundStart(Event hEvent, const char[] name, bool bDontBroadcast) { g_bBlock = false; } public void Event_RoundEnd(Event hEvent, const char[] name, bool bDontBroadcast) { g_bBlock = true; } public Action WeaponCanUse(int iClient, int iWeapon) { return g_bBlock ? Plugin_Handled : Plugin_Continue; }
Код взят с хлмода , отсюда https://hlmod.ru/threads/item_pickup-ili-sdkhook_weaponcanuse.34283/ , изменил эвенты и концовку в "Action WeaponCanUse" И вот еще один код , такая же проблема :Код
#pragma semicolon 1 #define DEBUG #define PLUGIN_AUTHOR "-" #define PLUGIN_VERSION "1.01" #include <sourcemod> #include <sdktools> #include <sdkhooks> #include <sdktools_entinput> new bool:g_bRoundEnded; public Plugin:myinfo = { name = "Block UP any Weapons", author = PLUGIN_AUTHOR, description = "Blocking Upping alls weapons on ground", version = PLUGIN_VERSION, url = "" }; public OnPluginStart() { HookEvent("dod_round_win", OnRoundWin); HookEvent("dod_round_start", OnRoundStart); } public Action:OnRoundWin(Handle:event, const String:name[], bool:dontBroadcast) { g_bRoundEnded = true; for(int i = 1; i <= MaxClients; i++) if(IsClientInGame(i) && !IsFakeClient(i) && IsPlayerAlive(i)) { SDKHook(i, SDKHook_WeaponEquip, Hook_WeaponDropped); } } public Action:OnRoundStart(Handle:event, const String:name[], bool:dontBroadcast) { g_bRoundEnded = false; for(int i = 1; i <= MaxClients; i++) if(IsClientInGame(i) && !IsFakeClient(i) && IsPlayerAlive(i)) { SDKUnhook(i, SDKHook_WeaponEquip, Hook_WeaponDropped); } } public Action Hook_WeaponDropped(int i,int weapon) { return g_bRoundEnded ? Plugin_Handled : Plugin_Continue; }
Все плагины делают практически одно и тоже - не дают взять/подобрать оружие с земли после выигрыша - конца раунда. Игра DOD:s
Сообщение отредактировал www22 - Среда, 15.05.2019, 10:34:05
Wanted_69
Дата: Четверг, 16.05.2019, 04:13:37 | Сообщение # 2
Сообщений: 11
Репутация: 0 [ +/- ]
Лог ошибок дай, если они есть, и вот для примера.
Сообщение отредактировал Wanted_69 - Четверг, 16.05.2019, 04:16:00
www22
Дата: Четверг, 16.05.2019, 10:28:21 | Сообщение # 3
Сообщений: 84
Репутация: -1 [ +/- ]
Wanted_69, да в том и дело что полная тишина .. никаких нет лог файлов, ни "закодированных" .
Wanted_69
Дата: Пятница, 17.05.2019, 00:42:55 | Сообщение # 4
Сообщений: 11
Репутация: 0 [ +/- ]
Цитата www22 (
)
www22
Код
#include <sdkhooks> #pragma semicolon 1 #pragma newdecls required bool g_bBlock; // true блокирует public void OnPluginStart() { HookEvent("round_start", Event_RoundStart, EventHookMode_PostNoCopy); HookEvent("round_end", Event_RoundEnd, EventHookMode_PostNoCopy); } public void OnClientPutInServer(int iClient) { SDKHook(iClient, SDKHook_WeaponCanUse, WeaponCanUse); // Разхукает сам } public void Event_RoundStart(Event hEvent, const char[] name, bool bDontBroadcast) { g_bBlock = false; } public void Event_RoundEnd(Event hEvent, const char[] name, bool bDontBroadcast) { g_bBlock = true; } public Action WeaponCanUse(int iClient, int iWeapon) { switch(g_bBlock) { case 0: return Plugin_Continue; case 1: return Plugin_Handled; } }
Либо
Код
#include <sdkhooks> #pragma semicolon 1 #pragma newdecls required bool g_bBlock; // true блокирует public void OnPluginStart() { HookEvent("round_start", Event_RoundStart, EventHookMode_PostNoCopy); HookEvent("round_end", Event_RoundEnd, EventHookMode_PostNoCopy); } public void OnClientPutInServer(int iClient) { SDKHook(iClient, SDKHook_WeaponCanUse, WeaponCanUse); // Разхукает сам } public void Event_RoundStart(Event hEvent, const char[] name, bool bDontBroadcast) { g_bBlock = false; } public void Event_RoundEnd(Event hEvent, const char[] name, bool bDontBroadcast) { g_bBlock = true; } public Action WeaponCanUse(int iClient, int iWeapon) { return g_bBlock ? Plugin_Handled : Plugin_Continue; } }
Сообщение отредактировал Wanted_69 - Пятница, 17.05.2019, 00:53:31