doom2d.org

Главная база плоских морпехов
It is currently 26 Sep 2022, 05:28

All times are UTC + 3 hours




Post new topic Reply to topic  [ 8 posts ] 
Author Message
PostPosted: 10 May 2013, 12:18 
Offline
Приколист

Joined: 18 Oct 2009, 12:00
Posts: 1249
Location: Подмосковье
Last Man Standing
v3

Описание
Плагин для 130.
Плагин добавляет в игру мутатор Last Man Standing - игроки не респавнятся после смерти, последний выживший объявляется победителем.
Мутатор врубается рандомно при загрузке deathmatch-карт, или если включен mp_automode и загружена карта с префиксом lms_.

Параметры конфигурации в config.gml

lms_roundlimit - через сколько раундов сменять карту;
lms_freq 0-10 - как часто применять мутатор (0 - никогда, 10 - всегда)
lms_bonus - сколько фрагов прибавлять за победу


Changelog:

20.04.14, v03
- пофиксил вылеты.
5.04.14, v02
- адаптировал под b130.
10.05.13, v02
- пофиксил мелкий баг.



Attachments:
lms3.zip [3.12 KiB]
Downloaded 222 times

_________________
aka PrimuS
Top
 Profile  
 
PostPosted: 10 May 2013, 13:26 
Offline
Приколист
User avatar

Joined: 17 Oct 2009, 19:57
Posts: 3814
Location: Киров
Ещё хотелось бы командный ЛМС. Получится что-то типа CS, но без миссий и покупки оружия. Даже можно не как отдельный плагин, а добавление к этому. Типа, когда карта ЦТФ или ТДМ выбрана, то устраивать Командный ЛМС. Раунд заканчивается, когда одна команда уничтожена.
Также и спектр мод можно доработать, чтоб только из своей команды показывались.
И лимит у раундов сделать бы, чтоб не затягивались, если 2 бота останутся в разных концах карты. Если время выходит, то никто не получает очков.

ADDED:
А ведь реально! Доработать этот мод, и может получиться CS в 2D с видом сбоку.
Надо сделать: командный лмс, расширения с tlms_mapname распознавать для этого режима, действие триггера "завершить раунд" сделать завершением раунда, а не матча (сменой карты), тип активации "начало игры" заменить на "начало раунда", после каждого раунда менять команды местами (т.е. синих игроков делать красными, а красных - синими), вошедших на сервер делать мёртвыми до конца раунда.
Если проводить аналогию с CS, то красная команда - это террористы, а синяя - спецназ. Красные должны выполнить миссию (всё зависит от карты), а синие помешать. Выиграть можно и просто уничтожив одну команду. За выигрыш раунда команда получает очко (очки команда получает как в режиме ЦТФ, а не суммированием фрагов игроков как в ТДМ). Причём активация триггера "завершить раунд" приносит очко красной команде (террористам).

ADDED2:
Ах да! Если время раунда закончилось то очко получает синяя команда, т.к. красная не выполнила миссию.
Ну и параметр в at_start.gml хотелось бы, который определяет зачислять красным очко за "завершить раунд" и синим за конец раунда или не зачислять.

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

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


Top
 Profile  
 
PostPosted: 03 Apr 2014, 17:30 
Offline
Приколист
User avatar

Joined: 31 Oct 2009, 15:55
Posts: 2095
Примус, я прошу тебя, нет, я настаиваю, этот плагин того стоит! Я постоянно зарубался с ним со своими друзьями! Было куда веселее, чем обычный и (увы) иногда нудный дезматч. Запили его пожалуйста под 130 билд! Пожалуйста. ;)

_________________
12.08.22


Top
 Profile  
 
PostPosted: 05 Apr 2014, 23:21 
Offline
Приколист

Joined: 18 Oct 2009, 12:00
Posts: 1249
Location: Подмосковье
Сделал.

_________________
aka PrimuS


Top
 Profile  
 
PostPosted: 06 Apr 2014, 05:50 
Offline
Приколист
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 5984
Location: Владивосток
Слушай, а ты можешь RamboMatch в качестве плагина написать?

UPD: сервер вылетел при попытке включить плагин через plugin_load.
Code:
ERROR in
action number 1
of Alarm Event for alarm 0
for object o_plugin:

Error in code at line 1:
   if !lms_enabled {exit;} if instance_number(o_pl) < 2  {    with o_pl {if dead {plr_respawn(); plr_send_text(cl_id, '', 1, 2, c_white, 412, 724, 2); alarm[1] = -1;}}    lms_mode = 1;     exit; }  if lms_mode == 1 {    global.mp_respawn = 10;    lms_olddead = lms_dead;     lms_dead = 0;    lms_notdead = noone;     with o_pl    {       if dead {other.lms_dead += 1; alarm[1] = 6666;} else {other.lms_notdead = id; alarm[1] = -1;}    }     if lms_dead > lms_olddead {with o_pl plr_send_text(cl_id, string(instance_number(o_pl) - other.lms_dead) + " players left!", 3, 2, c_red, 412, 316, 4);}     if lms_dead == instance_number(o_pl) - 1    {       with lms_notdead       {          net_say(':: LMS: ' + cl_name + ' has won the round!');          frag += other.lms_bonus;          with o_pl {plr_send_text(cl_id, other.cl_name + " has won the round!#A new one starts in 5 sec.", 5, 2, c_white, 412, 316, 4);}          other.lms_mode = 2;          other.lms_timer = 0;       }    }    if lms_dead == instance_number(o_pl)    {       net_say(':: LMS: Draw!');       with o_pl {plr_send_text(cl_id, "You're all dead!#New round in 5 sec.", 5, 2, c_white, 412, 316, 4);}       lms_mode = 2;       lms_timer = 0;    } } if lms_mode == 2 {    lms_timer += 1;    if lms_timer > 5    {       lms_rounds += 1;       if lms_rounds > lms_roundlimit       {          with o_pl           {             plr_send_text(cl_id, 'This was the last round.#Mapchange in 5 seconds.', 5, 2, c_white, 412, 316, 4);          }          o_host.alarm[0] = 300;          lms_mode = 0;          exit;       }       with o_pl {plr_respawn(); plr_send_text(cl_id, '', 1, 2, c_white, 412, 724, 2); alarm[1] = -1;}       with o_itm_spwn {alarm[0] = 1;}       net_say(':: LMS: Starting a new round. ' + string(lms_roundlimit - lms_rounds) + ' rounds left.');       lms_mode = 1;       lms_timer = 0;    } }
      ^
at position 5: Unknown variable lms_enabled

И я не понял слегка по поводу вот этого:
Quote:
lms_freq 0-10 - как часто применять мутатор (0 - никогда, 10 - всегда)
Code:
if !irandom(10 - lms_freq)

Даже если lms_freq будет равна 0, то irandom(10) всё равно может выбить 0, при котором условие будет верно и мутатор применится. У тебя же написано, что в таком случае он не будет применяться никогда.

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


Top
 Profile  
 
PostPosted: 20 Apr 2014, 12:22 
Offline
Приколист

Joined: 18 Oct 2009, 12:00
Posts: 1249
Location: Подмосковье
Пофиксил.

_________________
aka PrimuS


Top
 Profile  
 
PostPosted: 20 Apr 2014, 12:26 
Offline
Приколист
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 5984
Location: Владивосток
Всё равно вылетает при загрузке через plugin_load.

Code:
ERROR in
action number 1
of Alarm Event for alarm 0
for object o_plugin:

Error in code at line 1:
   if !lms_enabled {exit;} if instance_number(o_pl) < 2  {    with o_pl {if dead {plr_respawn(); plr_send_text(cl_id, '', 1, 2, c_white, 412, 724, 2); alarm[1] = -1;}}    lms_mode = 1;     exit; }  if lms_mode == 1 {    global.mp_respawn = 10;    lms_olddead = lms_dead;     lms_dead = 0;    lms_notdead = noone;     with o_pl    {       if dead {other.lms_dead += 1; alarm[1] = 6666;} else {other.lms_notdead = id; alarm[1] = -1;}    }     if lms_dead > lms_olddead {with o_pl plr_send_text(cl_id, string(instance_number(o_pl) - other.lms_dead) + " players left!", 3, 2, c_red, 412, 316, 4);}     if lms_dead == instance_number(o_pl) - 1    {       with lms_notdead       {          net_say(':: LMS: ' + cl_name + ' has won the round!');          frag += other.lms_bonus;          with o_pl {plr_send_text(cl_id, other.cl_name + " has won the round!#A new one starts in 5 sec.", 5, 2, c_white, 412, 316, 4);}          other.lms_mode = 2;          other.lms_timer = 0;       }    }    if lms_dead == instance_number(o_pl)    {       net_say(':: LMS: Draw!');       with o_pl {plr_send_text(cl_id, "You're all dead!#New round in 5 sec.", 5, 2, c_white, 412, 316, 4);}       lms_mode = 2;       lms_timer = 0;    } } if lms_mode == 2 {    lms_timer += 1;    if lms_timer > 5    {       lms_rounds += 1;       if lms_rounds > lms_roundlimit       {          with o_pl           {             plr_send_text(cl_id, 'This was the last round.#Mapchange in 5 seconds.', 5, 2, c_white, 412, 316, 4);          }          o_host.alarm[0] = 300;          lms_mode = 0;          exit;       }       with o_pl {plr_respawn(); plr_send_text(cl_id, '', 1, 2, c_white, 412, 724, 2); alarm[1] = -1;}       with o_itm_spwn {alarm[0] = 1;}       net_say(':: LMS: Starting a new round. ' + string(lms_roundlimit - lms_rounds) + ' rounds left.');       lms_mode = 1;       lms_timer = 0;    } }
      ^
at position 5: Unknown variable lms_enabled

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


Top
 Profile  
 
PostPosted: 20 Apr 2014, 12:41 
Offline
Приколист

Joined: 18 Oct 2009, 12:00
Posts: 1249
Location: Подмосковье
Перезалил.

_________________
aka PrimuS


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 8 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:  
doom2d.org, since 2007