Администратор ryancoolround Опубликовано 30 апреля, 2021 Администратор Опубликовано 30 апреля, 2021 Этот плагин позволяет игрокам носить маски, защищающие их от Covid-19. Внимание, плагин работает только в Team Fortress 2. Пропишите команду !covid что бы использовать маску. Ниже код, на случай того, если я буду удалять файлы в своем профиле: #include <sourcemod> #include <tf2_stocks> #include <clientprefs> #include <morecolors> #pragma semicolon 1 #pragma newdecls required #define PLUGIN_VERSION "1.0" #define MASK_INDEX 31163 Handle g_hWearableEquip; Handle g_hCookie; int g_Mask[MAXPLAYERS+1] = {false,...}; public Plugin myinfo = { name = "[TF2] Covid-19", author = "Tair", description = "Gives TF2 players mask against Covid-19", version = PLUGIN_VERSION, url = "https://forums.alliedmods.net" } public void OnPluginStart() { RegConsoleCmd("sm_covid", Command_Mask); HookEvent("post_inventory_application", OnResupply); g_hCookie = RegClientCookie("covid_mask", "", CookieAccess_Private); GameData hTF2 = new GameData("sm-tf2.games"); // sourcemod's tf2 gamdata if (!hTF2) SetFailState("This plugin is designed for a TF2 dedicated server only."); StartPrepSDKCall(SDKCall_Player); PrepSDKCall_SetVirtual(hTF2.GetOffset("RemoveWearable") - 1); // EquipWearable offset is always behind RemoveWearable, subtract its value by 1 PrepSDKCall_AddParameter(SDKType_CBaseEntity, SDKPass_Pointer); g_hWearableEquip = EndPrepSDKCall(); if (!g_hWearableEquip) SetFailState("Failed to create call: CBasePlayer::EquipWearable"); delete hTF2; } public Action OnResupply(Handle event, char[] name, bool dontBroadcast) { int client = GetClientOfUserId(GetEventInt(event, "userid")); if(g_Mask[client]) CreateMask(client); } public Action Command_Mask(int client, int args) { if (!g_Mask[client]) { g_Mask[client] = true; SetClientCookie(client, g_hCookie, "true"); CPrintToChat(client,"{gold}★ Covid-19 {white}| Mask is now on! Touch resupply to receive!"); } else { g_Mask[client] = false; SetClientCookie(client, g_hCookie, "false"); CPrintToChat(client,"{gold}★ Covid-19 {white}| Mask is now off. Touch resupply to remove it!"); } return Plugin_Handled; } public void OnClientDisconnect(int client) { g_Mask[client] = false; } public void OnClientCookiesCached(int client) { char value[9]; GetClientCookie(client, g_hCookie, value, sizeof(value)); if (StrEqual(value, "true")) g_Mask[client] = true; } bool CreateMask(int client) { int hat = CreateEntityByName("tf_wearable"); if (!IsValidEntity(hat)) { return false; } char entclass[64]; GetEntityNetClass(hat, entclass, sizeof(entclass)); SetEntProp(hat, Prop_Send, "m_iItemDefinitionIndex", MASK_INDEX); SetEntProp(hat, Prop_Send, "m_bInitialized", 1); SetEntData(hat, FindSendPropInfo(entclass, "m_iEntityQuality"), 10); SetEntProp(hat, Prop_Send, "m_iEntityLevel", 1); DispatchSpawn(hat); SDKCall(g_hWearableEquip, client, hat); return true; } Covid.smx Covid.sp «Успех – это приятно, но он не должен быть единственной причиной, по которой вы – музыкант». - Честер Беннингтон
Администратор ryancoolround Опубликовано 11 июля, 2022 Автор Администратор Опубликовано 11 июля, 2022 Может пожалуйста кто то проверить эту версию плагина? У меня просто нет тестового сервера по Team Fortress 2. Плагин обновлен, скомпилирован на версии Sourcemod 1.11, и я так же добавил на 57 строку кода часть: return Plugin_Handled; Что бы избавится от предупреждения: warning 242: function should return an explicit value Полностью код теперь выглядит следующим образом: #include <sourcemod> #include <tf2_stocks> #include <clientprefs> #include <morecolors> #pragma semicolon 1 #pragma newdecls required #define PLUGIN_VERSION "1.2" #define MASK_INDEX 31163 Handle g_hWearableEquip; Handle g_hCookie; int g_Mask[MAXPLAYERS + 1] = { false, ... }; public Plugin myinfo = { name = "[TF2] Covid-19", author = "Tair", description = "Gives TF2 players mask against Covid-19", version = PLUGIN_VERSION, url = "https://forums.alliedmods.net" } public void OnPluginStart() { RegConsoleCmd("sm_covid", Command_Mask); HookEvent("post_inventory_application", OnResupply); g_hCookie = RegClientCookie("covid_mask", "", CookieAccess_Private); GameData hTF2 = new GameData("sm-tf2.games"); // sourcemod's tf2 gamdata if (!hTF2) SetFailState("This plugin is designed for a TF2 dedicated server only."); StartPrepSDKCall(SDKCall_Player); PrepSDKCall_SetVirtual(hTF2.GetOffset("RemoveWearable") - 1); // EquipWearable offset is always behind RemoveWearable, subtract its value by 1 PrepSDKCall_AddParameter(SDKType_CBaseEntity, SDKPass_Pointer); g_hWearableEquip = EndPrepSDKCall(); if (!g_hWearableEquip) SetFailState("Failed to create call: CBasePlayer::EquipWearable"); delete hTF2; } public Action OnResupply(Handle event, char[] name, bool dontBroadcast) { int client = GetClientOfUserId(GetEventInt(event, "userid")); if (g_Mask[client]) CreateMask(client); return Plugin_Handled; } public Action Command_Mask(int client, int args) { if (!g_Mask[client]) { g_Mask[client] = true; SetClientCookie(client, g_hCookie, "true"); CPrintToChat(client, "{gold}★ Covid-19 {white}| Mask is now on! Touch resupply to receive!"); } else { g_Mask[client] = false; SetClientCookie(client, g_hCookie, "false"); CPrintToChat(client, "{gold}★ Covid-19 {white}| Mask is now off. Touch resupply to remove it!"); } return Plugin_Handled; } public void OnClientDisconnect(int client) { g_Mask[client] = false; } public void OnClientCookiesCached(int client) { char value[9]; GetClientCookie(client, g_hCookie, value, sizeof(value)); if (StrEqual(value, "true")) g_Mask[client] = true; } bool CreateMask(int client) { int hat = CreateEntityByName("tf_wearable"); if (!IsValidEntity(hat)) { return false; } char entclass[64]; GetEntityNetClass(hat, entclass, sizeof(entclass)); SetEntProp(hat, Prop_Send, "m_iItemDefinitionIndex", MASK_INDEX); SetEntProp(hat, Prop_Send, "m_bInitialized", 1); SetEntData(hat, FindSendPropInfo(entclass, "m_iEntityQuality"), 10); SetEntProp(hat, Prop_Send, "m_iEntityLevel", 1); DispatchSpawn(hat); SDKCall(g_hWearableEquip, client, hat); return true; } Covid.sp Covid.smx Для собственной компиляции вам понадобится следующее подключение: «Успех – это приятно, но он не должен быть единственной причиной, по которой вы – музыкант». - Честер Беннингтон
Администратор Решение ryancoolround Опубликовано 26 марта, 2024 Автор Администратор Решение Опубликовано 26 марта, 2024 Просмотр файла Covid-19 Mask Этот плагин позволяет игрокам носить маски, защищающие их от Covid-19. Внимание, плагин работает только в Team Fortress 2. Пропишите команду !covid что бы использовать маску. Добавил Ryancoolround Добавлено 26.03.2024 Категория Sourcemod «Успех – это приятно, но он не должен быть единственной причиной, по которой вы – музыкант». - Честер Беннингтон
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти