doom2d.org

Главная база плоских морпехов
It is currently 28 Jan 2023, 18:41

All times are UTC + 3 hours




Post new topic Reply to topic  [ 11 posts ] 
Author Message
 Post subject: [0.6-128] SMod v2
PostPosted: 09 May 2013, 18:04 
Offline
Приколист

Joined: 18 Oct 2009, 12:00
Posts: 1249
Location: Подмосковье
D2DMP Script Mod
v2

Описание
SMod - мод для сервера D2DMP, позволяющий подключать к серверу несложные скриптовые плагины на GML.
Сервер будет грузить все плагины, которые лежат в папке scripts\, если они работоспособны.

Новые CVAR и команды

sm_enabled 0/1 - выключить/включить мод.
sm_maxplugs 0-32 - максимальное кол-во одновременно подключаемых плагинов.
sm_blacklist STRING - список названий папок с плагинами, которые не будут подключаться при следующем включении сервера. Имеет вид
"DEFAULT;PLUGIN_NAME1;PLUGIN_NAME2;...;PLUGIN_NAMEN;" (без кавычек)
"DEFAULT;" и точку с запятой в самом конце не удалять.


Как сделать плагин

Чтобы написать плагин, требуется смыслить в GML и сорцах D2DMP.

0. В папке scripts создать подпапку с любым названием, желательно на латинице, уникальное и без спецсимволов.

1. В созданной папке создаем файл INFO.txt со следующим содержанием:

ИМЯ_ПЛАГИНА
ТИКРЕЙТ_ПЛАГИНА (сек/sv_fps_max, если 0 - at_step не будет выполняться)

например:

Assbagels
60

2. В созданной папке по желанию создаем любые из следующих файлов (хотя бы один из них):

at_start.gml - будет выполняться один раз при подключении плагина (т.е. при запуске сервера) - сюда лучше класть настройки и прочую хуйню;
at_mapstart.gml - будет выполняться каждый раз после загрузки новой карты;
at_step.gml - будет выполняться каждые ТИКРЕЙТ_ПЛАГИНА тиков (лучше как можно реже);
at_mapend.gml - будет выполняться каждый раз перед загрузкой новой карты;
at_end.gml - будет выполняться один раз перед выключением сервера.

3. В созданных файлах пишем код на стандартном GML. Функции game_end(), file_delete(), game_restart() работать не будут.

4. Done.


Changelog:

10.05.13, v0.2
- убрал из дефолтной поставки плагины;
- пофиксил мелкий баг.

09.05.13, v0.1
- релиз


Attachment:
SMODv2.zip [1.75 MiB]
Downloaded 254 times

_________________
aka PrimuS


Top
 Profile  
 
 Post subject: Re: [06-128] SMod v1
PostPosted: 09 May 2013, 20:48 
Offline
Приколист

Joined: 18 Oct 2009, 12:00
Posts: 1249
Location: Подмосковье
Хотя проку от этого никакого, с тем же успехом можно моднуть исходник.

_________________
aka PrimuS


Top
 Profile  
 
 Post subject: Re: [06-128] SMod v1
PostPosted: 09 May 2013, 21:43 
Offline
Приколист
User avatar

Joined: 17 Oct 2009, 19:57
Posts: 3838
Location: Киров
Ну смысл, наверное, всё-таки есть. Избавляет от создания кучи server.exe.
Last Man Standing понравился. Единственное, что там предметы умерших остаются, и снаряды, пущенные в прошлом раунде, могут долететь уже в следующем.

_________________
Давай, картечью демонов
Размажем по стене.
Давай, берсерком выпустим
Весь ливер сатане!

Сделайте нормальный огнемёт! :evil:


Top
 Profile  
 
 Post subject: Re: [06-128] SMod v1
PostPosted: 09 May 2013, 22:16 
Offline
Приколист
User avatar

Joined: 17 Oct 2009, 19:54
Posts: 867
Location: Ульяновск
В Last Man Standing если остаётся 0 фрагов (например, последние двое умерли вместе), то новый раунд не начинается.

_________________
Точность превыше всего.


Top
 Profile  
 
 Post subject: Re: [06-128] SMod v1
PostPosted: 09 May 2013, 23:44 
Offline
Приколист

Joined: 18 Oct 2009, 12:00
Posts: 1249
Location: Подмосковье
Да, я знаю. Потом надо починить.

_________________
aka PrimuS


Top
 Profile  
 
 Post subject: Re: [06-128] SMod v2
PostPosted: 10 May 2013, 13:36 
Offline
Приколист
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 6005
Location: Владивосток
Прим, я же говорил тебе исправить:
Code:
str = string_replace(str, 'file_delete', 'con_add');
str = string_replace(str, 'game_end()', 'exit');
str = string_replace(str, 'game_restart()', 'exit');

string_replace() надо заменить на string_replace_all(), иначе будет заменяться только первый найденный образец.
А ещё неплохо бы создать пустой скрипт (т.е. с единственной командой "exit" внутри него, чтобы GM его выполнял) и заменять на его название названия запрещённых функций БЕЗ СКОБОК. Потому что сейчас запрет очень легко обойти, просто добавив между названием функции и открывающей скобкой пробел.
Должно быть примерно так:
Code:
str = string_replace_all(str, 'file_delete', 'void');
str = string_replace_all(str, 'game_end', 'void');
str = string_replace_all(str, 'game_restart', 'void');
Code:
#define void
exit;


_________________
Чёрный Думер, Чёрный Думер
С монстрами сражается.
Чёрный Думер, Чёрный Думер
Рокетланчер плавится.


Top
 Profile  
 
 Post subject: Re: [06-128] SMod v2
PostPosted: 10 May 2013, 13:39 
Offline
Приколист

Joined: 18 Oct 2009, 12:00
Posts: 1249
Location: Подмосковье
1. Ты мне не говорил.
2. С тем же успехом можно сделать что-нибудь вроде
Code:
str1 = 'game';
str2 = 'end()';
execute_string(str1 + '_' + str2);
,
так что мне похуй на такие вещи.

_________________
aka PrimuS


Top
 Profile  
 
 Post subject: Re: [06-128] SMod v2
PostPosted: 11 May 2013, 15:05 
Offline
Приколист
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 6005
Location: Владивосток
Prostovitalik wrote:
Ты мне не говорил.
Говорил, в джаббере. Видимо, не дошло просто.
А execute_string() и иже с ним можно (и нужно) тоже заменять на void(). Другое дело, что таких функций, которые надо заменять, там дочерта.

_________________
Чёрный Думер, Чёрный Думер
С монстрами сражается.
Чёрный Думер, Чёрный Думер
Рокетланчер плавится.


Top
 Profile  
 
 Post subject: Re: [06-128] SMod v2
PostPosted: 11 May 2013, 20:25 
Offline
Приколист
User avatar

Joined: 17 Oct 2009, 19:54
Posts: 867
Location: Ульяновск
При sm_enabled 0 сервер вылетает, как только присоединяется игрок.

_________________
Точность превыше всего.


Top
 Profile  
 
 Post subject: Re: [06-128] SMod v2
PostPosted: 19 May 2013, 21:31 
Offline
Приколист

Joined: 18 Oct 2009, 12:00
Posts: 1249
Location: Подмосковье
//todo: починить и сделать on_console

_________________
aka PrimuS


Top
 Profile  
 
 Post subject: Re: [06-128] SMod v2
PostPosted: 20 Mar 2014, 16:15 
Offline
Приколист
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 6005
Location: Владивосток
Новая версия мода интегрирована в сборку 130.

_________________
Чёрный Думер, Чёрный Думер
С монстрами сражается.
Чёрный Думер, Чёрный Думер
Рокетланчер плавится.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 11 posts ] 

All times are UTC + 3 hours


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
doom2d.org, since 2007