Кстати говоря, Вы можете сделать заказ у разработчика которого вы сейчас читаете, по любым вопросам с администрированием серверов, а также сайтами. Я помогу в любой задаче, оплата почасовая. Можете обратиться в Telegram для быстрой обратной связи, либо на почту которая на странице "Обо мне".
Дата публикации: 09.07.2017
Дата обновления: 21.12.2017
Сегодня мы попробуем написать простейший Noblock плагин для игрового сервера на базе SourcePawn, соответственно вам нужны адреса:
https://sm.alliedmods.net/new-api/
Первая ссылка — это сам Sourcemod, через что работают плагины, устанавливается на сервере, более подробно можете загуглить и найти более подробную информацию о установке на сервер.
Вторая ссылка — все функции что есть в Sourcemod, библиотека всех функций или сказав иначе «словарь» для всех функций что вы можете использовать в своих разработках.
Из первой ссылке вам нужно скачать Sourcemod Stable версию (стабильную) нажав на иконку соответствующей вам операционной системы — http://www.sourcemod.net/downloads.php?branch=stable
Далее, распаковать это куда-то, чтобы в пути к файлам не было русских символов, вообще не рекомендую использовать название вашего ПК как «Вася» или «Петя», пишите все на латинице и проблем в работе с ОС станет намного меньше.
После того как распаковали все файлы, вам нужна папка «addons\sourcemod\scripting», можете попробовать скомпилировать обычный любой исходник в этой папке, перетащив его на файл compile.exe, к примеру basevotes.sp, просто зажимаете мышку с этим файлом, и тащите на compile.exe
После чего он начинает компилироваться и в случае успеха у вас получается на выходе:
//SourceMod Batch Compiler // by the SourceMod Dev Team //// basevotes.sp // // Code size: 21328 bytes // Data size: 5788 bytes // Stack/heap size: 16384 bytes // Total requirements: 43500 bytes // // Compilation Time: 0,22 sec // ---------------------------------------- Press enter to exit ...
Что указывает на то, что ваш файл с исходником basevotes.sp успешно скомпилирован.
Далее создаете файл обычный noblock.sp в блокноте, только при сохранении нажимаете «Сохранить как», и далее пишите в название noblock.sp и выбираете кодировку UTF-8, все это обязательно, так как вы можете создать файл noblock.sp.txt так как это неправильно, а также вы можете создать файл в кодировке ANSI, что не работает с кириллицей внутри исходника, и в итоге на сервере у вас будут квадраты вместо русских символов.
Также вы можете посмотреть мой плагин на noblock — https://forums.alliedmods.net/showthread.php?p=2337136 но он не идеально подойдёт для вашего сервера, так как он «отталкивает» игроков друг от друга. А всё виной в этой строке:
SetEntProp(client, Prop_Data, "m_CollisionGroup", 17);
И если данную строчку заменить на данную строку:
SetEntData(client, g_CollisionOffset, 2, 4, true);
то проблема с оттакливанием уйдёт и вы сможете нормально его использовать.
но давайте напишем обычный noblock сами.
public OnPluginStart() { HookEvent("player_spawn", Event_PlayerSpawn); // регистрация события - человек появился } public OnPluginEnd() { UnhookEvent("player_spawn", Event_PlayerSpawn); // отключение регистрации события при выключении плагина } // проверка на правильность игрока (очень важно) public bool:ClientValid(client) { if(0 < client <= MaxClients && IsClientConnected(client) && IsClientInGame(client) && !IsFakeClient(client)) { return true; } return false; } // Обрабочик события "человек появился" - регистрация выше public Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast) { new client = GetClientOfUserId(GetEventInt(event, "userid")); if(ClientValid(client) && GetClientTeam(client) > 1 && IsPlayerAlive(client)) { // проверки валидный игрок, живой, и не спек SetEntData(client, g_CollisionOffset, 2, 4, true); // включили noblock } }
Копируем всё это, вставляем в созданный файл noblock.sp и компилируем.
На выходе должен получиться файлик noblock.smx в папке «compiled».
Забираем его в папку plugins на нашем сервере, и радуемся своему noblock плагину.
Задать любой вопрос вы можете по этой ссылке.
Кстати говоря, Вы можете сделать заказ у разработчика которого вы сейчас читаете, по любым вопросам с администрированием серверов, а также сайтами. Я помогу в любой задаче, оплата почасовая. Можете обратиться в Telegram для быстрой обратной связи, либо на почту которая на странице "Обо мне".