Перейти к содержанию

До Хэллоуина осталось....

 

Рекомендуемые сообщения

  • Администратор

Сейчас пытаюсь реализовать определенную идею. И слава богу, что есть человек, который хоть и не пишет плагин за меня, к большому сожалению... Но он хотя бы делится своими советами. Спасибо ему!

В общем, что я хочу:

Спустя 30 секунд, после загрузки карты c6m3_port (Порт), в чате появляется уведомление:

Цитата

[L4D2Noob Army]В данном районе недавно был замечен монстр! Будьте предельно аккуратны!

Игрок запускает музыкальный автомат, при треке из игры Portal (Почему именно эта песня, ну у нее самый минимальный шанс воспроизведения) появляется надпись в чате о том что эта песня была слишком громкой, и эта песня последнее, что слышали игроки в своей жизни.

Эта песня будит монстра. И в итоге появляется Толстяк, увеличенный в размере в 3 раза, и у которого 18 тысяч хп.

Само собой эту пасхалку можно будет запустить один раз за раунд.

На данный момент мне известно всего две переменных:

  • track6
  • Jukebox.still_alive

По ходу дела я буду отписываться в этой теме, но если кто то понимает в этом Sourcemod, я буду очень рад, если вы поделитесь своими советами.

Я не ищу ничего логичного, например денег. Меня нельзя купить, запугать, аргументировать или договориться со мной. Я просто хочу смотреть, как горит мир.

Ссылка на комментарий
Поделиться на другие сайты

  • Администратор

Пока что я пытаюсь запустить плагин только на определенной карте, и выводить сообщение.

В 25.04.2020 в 10:21, Ryancoolround сказал:

Спустя 30 секунд, после загрузки карты c6m3_port (Порт), в чате появляется уведомление:

Знакомый подкинул несколько кодов для этого. Этот код не компилируется.

public void OnMapStart()
{
char mapname[64];
GetCurrentMap(mapname, sizeof(mapname));
if (StrEqual(mapname, "c7m3_port"))
{
int i = 1;
while (i <= MaxClients)
{
if (IsClientInGame(i))
{
PrintToChat(i, "{LIGHTGREEN}[L4D2Noob Army]{GREEN}В данном районе недавно был замечен монстр! Будьте предельно аккуратны!");
}
i += 1;
}
}
return Plugin_Stop;
}

А следующие коды работают, но заветное сообщение в чат они так и не вывели, но на определенной карте плагин запускается.

public void OnMapStart()
{
char mapname[64];
GetCurrentMap(mapname, sizeof(mapname));
if (StrEqual(mapname, "c7m3_port"))
{
CreateTimer(15, HxTimerRS, _, TIMER_FLAG_NO_MAPCHANGE);
}
}

public Action HxTimerRS(Handle timer)
{
int i = 1;
while (i <= MaxClients)
{
if (IsClientInGame(i))
{
CreateTimer(1.2, HxTimerRS, _, TIMER_FLAG_NO_MAPCHANGE);
PrintToChat(i, "{LIGHTGREEN}[L4D2Noob Army]{GREEN}В данном районе недавно был замечен монстр! Будьте предельно аккуратны!");
}
i += 1;
}

return Plugin_Stop;
}
public void OnMapStart()
{
char mapname[64];
GetCurrentMap(mapname, sizeof(mapname));
if (StrEqual(mapname, "c7m3_port"))
{
CreateTimer(15, HxTimerRS, _, TIMER_FLAG_NO_MAPCHANGE);
}
}

public Action HxTimerRS(Handle timer)
{
PrintToChatAll("{LIGHTGREEN}[L4D2Noob Army]{GREEN}В данном районе недавно был замечен монстр! Будьте предельно аккуратны!");
return Plugin_Stop;
}

Мне сложно, ибо я самоучка, который только начинает учиться, но я запилю эту плагин.

Я не ищу ничего логичного, например денег. Меня нельзя купить, запугать, аргументировать или договориться со мной. Я просто хочу смотреть, как горит мир.

Ссылка на комментарий
Поделиться на другие сайты

#pragma semicolon 1
#include <sourcemod>
#pragma newdecls required

char sMap[64];
int ig_c6m3_port;
int ig_time;

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

public void OnMapStart()
{
	ig_time = GetTime() + 30;
	GetCurrentMap(sMap, sizeof(sMap));
	if (StrEqual(sMap, "c6m3_port"))
	{	
		ig_c6m3_port = 1;
	}
	else
	{
		ig_c6m3_port = 0;
	}
}

public void OnClientPostAdminCheck(int client)
{
	if (ig_c6m3_port)
	{
		if (GetTime() < ig_time)
		{
			if (!IsFakeClient(client))
			{
				CreateTimer(15.0, HxTimerRS, client, TIMER_FLAG_NO_MAPCHANGE);
			}
		}
	}
}

public void Event_RoundStart(Event event, const char[] name, bool dontBroadcast)
{
	if (ig_c6m3_port)
	{
		int i = 1;
		while (i <= MaxClients)
		{
			if (!IsFakeClient(i))
			{
				CreateTimer(2.0, HxTimerRS, i, TIMER_FLAG_NO_MAPCHANGE);
			}
			i += 1;
		}
	}
}

public Action HxTimerRS(Handle timer, any client)
{
	if (!IsFakeClient(client))
	{
		if (GetClientTeam(client) == 2)
		{
			if (IsPlayerAlive(client))
			{
				PrintToChat(client, "\x04[\x03L4D2Noob Army\x04] \x05В данном районе недавно был замечен монстр! Будьте предельно аккуратны!");
			}
		}
	}
	return Plugin_Stop;
}

1.Должно показывать только на карте c6m3_port

2. Сообщение будет показывать только команде живым (не думаю что инфекции нужно это видеть)
3. При загрузке карты запускается таймер 30 сек, если игрок зайдет в течении этого времени он увидит сообщение, если более 30 сек нет. (так как по сути игра может уже начаться другими игроками.
4. Так же сообщение будет показывать начале  каждого раунда (на данной карте)

Как это будет работать в режиме versus хз) так как не держу сервер данного режима

b_350_20_692108_381007_ffffff_000000.png

b_350_20_692108_381007_ffffff_000000.png

 

Ссылка на комментарий
Поделиться на другие сайты

  • Администратор
21 минуту назад, dr.lex сказал:

Как это будет работать в режиме versus хз) так как не держу сервер данного режима

20200502005817_1.jpg

Это работает.

Теперь надо сделать что бы если из Jukebox запускался track6, то спавнился Толстяк с 18к хп. Тут как раз и надо вроде начинать изучать hookevent

Я не ищу ничего логичного, например денег. Меня нельзя купить, запугать, аргументировать или договориться со мной. Я просто хочу смотреть, как горит мир.

Ссылка на комментарий
Поделиться на другие сайты

  • Администратор

На сервере, когда игрок нажимает на кнопку Jukebox, ничего не происходит. Консоль ничего не пишет, вообще ничего... Поэтому на Порте придется поискать какой нибудь другой триггер для пасхалки.

Я не ищу ничего логичного, например денег. Меня нельзя купить, запугать, аргументировать или договориться со мной. Я просто хочу смотреть, как горит мир.

Ссылка на комментарий
Поделиться на другие сайты

Посмотрите этот плагин Alliedmods, возможно он вам поможет. И еще сюда загляните myarena.ru

Ссылка на комментарий
Поделиться на другие сайты

  • Администратор
1 час назад, Ryancoolround сказал:

На сервере, когда игрок нажимает на кнопку Jukebox, ничего не происходит. Консоль ничего не пишет, вообще ничего... Поэтому на Порте придется поискать какой нибудь другой триггер для пасхалки.

Хотя с включенным sv_cheats 1 смог получить следующую переменную song_game_event

Я не ищу ничего логичного, например денег. Меня нельзя купить, запугать, аргументировать или договориться со мной. Я просто хочу смотреть, как горит мир.

Ссылка на комментарий
Поделиться на другие сайты

  • Администратор

Вопрос. Что по вашему более забавно? Живой Толстяк в каком то недоступном месте с 18к хп, или просто трудно заметная надпись "Monstr"?

Я не ищу ничего логичного, например денег. Меня нельзя купить, запугать, аргументировать или договориться со мной. Я просто хочу смотреть, как горит мир.

Ссылка на комментарий
Поделиться на другие сайты

  • Администратор
23 часа назад, Blutsauger сказал:

Посмотрите этот плагин Alliedmods

22 часа назад, Ryancoolround сказал:

Живой Толстяк в каком то недоступном месте с 18к хп

Ну благодаря ссылке, которую скинул @Blutsauger я смог получить позицию, где хотелось бы заспавнить Толстяка:

350.987182 -456.186798 184.031250     30.700063 90.861076 0.000000

Я не ищу ничего логичного, например денег. Меня нельзя купить, запугать, аргументировать или договориться со мной. Я просто хочу смотреть, как горит мир.

Ссылка на комментарий
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
  • Похожий контент

    • Автор Ry@N
      SPCode - продолжение работы над SPEdit но уже другим разработчиком. То есть это Форк.
      Почему вам надо использовать SPCode вместо SPEdit:
      Редактор работает теперь на .NET Framework 4.8 (раньше работал на 4.5). Исправлен ошибка при закрытии несохраненной вкладки (Очень меня раздражало). Исправлены проблемы с отступом. Обновлены шаблоны плагинов. Помимо указанных четырех пунктов в программе есть еще очень много различных исправлений, плюс редактор сам по себе новее, ну и в него включены новые переводы
      SPCode.Installer.exe
      Требования:
      Что бы попытаться раскомпилировать простейшие плагины этим редактором, вам на PC потребуется последняя версия Java. Добавил это в первый пост.
    • Автор Ry@N
      Новый формат изображений от Google с расширением .webp набирает популярность. Всё чаще его можно встретить на сайтах, так как он оптимизирует картинку под меньший размер без потери качества по сравнению с .jpg. В этом году его стали использовать даже у нас на IP-Gamers.NET.
      Но, при скачивании и открытии в Photoshop, такой файл выдаёт ошибку, которая говорит что Photoshop не может  прочитать этот формат.
      Что бы избежать этого, по пути:
      C:\Program Files\Adobe Photoshop 2020\Plug-ins\File Formats Вставьте файл, что я прикрепил в этом посте.
      Так же рекомендую сохранять ваши JPG теперь именно в WEBP.
      W.rar
       
    • Автор Ry@N
      Как я понял, администраторы делаю випам цветной чат. Если тот, у кого цветной чат использует специальный символ, например @, то цветное сообщение блокируется, и отправляется обычное. Плагин понравился тем, что у него простой и очень маленький код.
      /* [ Includes ] */ #include <sourcemod> /* [ Compiler Options ] */ #pragma newdecls required #pragma semicolon 1 /* [ Defines ] */ #define MAX_MESSAGE_LENGTH 512 /* [ Chars ] */ static const char g_sSymbols[][] = { "", "", "", "", "", "", "", "", "", "", "", " " }; // White | Green | Blue | Darkblue | Darkred | Gold | Grey | Lightgreen | Lightred | Lime | Purple | Yellow /* [ Plugin Author And Informations ] */ public Plugin myinfo = { name = "[CS:GO] Pawel - [ Block Color Chat ]", author = "Pawel", description = "Block color messages for CS:GO servers by Pawel.", version = "1.0.0", url = "https://steamcommunity.com/id/pawelsteam" }; /* [ Message Modify ] */ public Action OnChatMessage(int &iAuthor, Handle hRecipients, char[] sName, char[] sMessage) { for (int i = 0; i < sizeof(g_sSymbols); i++) { while (StrContains(sMessage, g_sSymbols[i]) != -1) { ReplaceString(sMessage, MAX_MESSAGE_LENGTH, g_sSymbols[i], ""); return Plugin_Changed; } } return Plugin_Continue; }  
      pBlockColorChat.sp pBlockColorChat.smx
    • Автор Ry@N
      Этот плагин позволяет игрокам носить маски, защищающие их от 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
    • Автор Ry@N
      Амбициозная модификация Portal Reloaded, которая добавляет в сиквел легендарного пазл-платформера массу новых головоломок и ещё один тип порталов, добралась до премьеры. Особенно приятно, что релиз состоялся прямо в Steam, что значительно облегчит процесс установки пользовательского дополнения.
      В модификации Portal Reloaded игроки возьмут на себя управление подопытным [4-5-0-9]. Как и главную героиню оригинальных игр, его будит искусственный интеллект и заставляет решать разнообразные созданные им головоломки. Для этого геймеры получат невиданный ранее инструмент — «зелёный» портал, который открывает двери в другую временную линию, отправляя персонажа на 20 лет в будущее. Выглядит это очень эффектно.
      Всего игрокам предстоит решить 25 совершенно новых пазлов, созданных специально для модификации. Автор отмечает, что его работа предназначается в первую очередь для матёрых ветеранов серии, которым хочется углублённого геймплея. О повышенной сложности игры можно догадаться уже по наличию нового типа порталов. Чтобы установить расширение Portal Reloaded, достаточно нажать соответствующую кнопку на странице проекта в Steam. Конечно, для этого нужно иметь на аккаунте купленную копию Portal 2.
  • Если ты облизываешь воздух; он намокает?

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу


×
×
  • Создать...