Welcome to U.A.C. [O.S.A.]
login / register 
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
18+
(G)ZDoom - ACS - DECORATE З-вопросы Пред.  1, 2, 3 ... 25, 26, 27 ... 29, 30, 31  След.
   Список разделов - Флуд и устаревшие темы - (G)ZDoom - ACS - DECORATE З-вопросыОтветить
АвторСообщение
zer0
= Sergeant Major =
Next rank: UAC Sergeant Major after 25 points
655

Doom Rate: 2.13

Posts quality: +56
Ссылка на пост №501 Отправлено: 26.04.08 15:29:25
dukenator
не пойдет. Мне потом надо будет проводить проверку на наличие этого итема, а если это PowerupGiver, проверка не сработает - A_JumpIfInventory работает только с Inventory. Да и вообще, что касается PowerupGiver'а - логически этот итем уничтожается сразу после взятия (или после использования, если у него -AUTOACTIVATE), т.к., пока есть эффект пауэр-апа, самого итема PowerupGiver уже нет. В любом случае, он мне тут не подходит.
2 1 2
Falcor
- Master Sergeant -
Next rank: = Master Sergeant = after 56 points
404

Doom Rate: 2.54

Ссылка на пост №502 Отправлено: 26.04.08 15:32:51
nprotect:
есть же функция GetActorAnglehttp://www.zdoom.org/wiki/GetActorAngle

//*******************************************//ADDED

Да-да-да... Я тут же нашел ее, как написал пост... :oops:
И тут же стер пост :)

ЗЫ В новой темке можно увидеть, зачем он мне был нужен =)
1
zer0
= Sergeant Major =
Next rank: UAC Sergeant Major after 25 points
655

Doom Rate: 2.13

Posts quality: +56
Ссылка на пост №503 Отправлено: 27.04.08 00:07:58
Ладно, я справился со своей проблемой - плюнул и внедрил ACS.
А вот то, что в (Г)ЗДуме нет простого способа отнять точное число хелсов - это, по-моему, просто безобразие. Ну да ладно...
2 1 2
zer0
= Sergeant Major =
Next rank: UAC Sergeant Major after 25 points
655

Doom Rate: 2.13

Posts quality: +56
Ссылка на пост №504 Отправлено: 05.05.08 12:19:44
Товарищи, я тут думаю. Значит есть у меня мод, где манкубусы все заменены на два вида манкубусов: все как обычно, актор-спаунер, который спаунит либо того, либо другого. Разумеется в d2m07 из-за этого не опускаются стены, за которыми арахнотроны, потому что такая замена нарушает map07special, который есть в Думе 2. Я думал, как это исправить.

Вначале хотел поправить MAPINFO и приписать к м07 specialaction, но эта функция может активировать спешал только если мертвы все монстры одного типа. А их у меня два типа.

Тогда я подумал ввести ACS, чтобы это все поправить. И вот я пытаюсь придумать, как этот скрипт должен выглядеть... Как выполнить в скрипте формулу "если все монстры 1-го типа и 2-го типа мертвы - тогда Floor_LowerToLowest(666,16)"?
2 1 2
Nil
= 2nd Lieutenant =
Next rank: - 1st Lieutenant - after 127 points
1513

Doom Rate: 2.31

Posts quality: +64
Ссылка на пост №505 Отправлено: 05.05.08 14:07:26
Zcommon.acs добавить
Вместо "икс" и "игрек" нули поставить надо
"ThingCount" на "ThingCountName"
всё скомпилировать и добавить название скомпиленного лампа в текстовый ламп "LIBRARY"
должно работать :)
1 2 1
entryway
-= DoomGod =-
1795

Doom Rate: 2.74

Posts quality: +1
Ссылка на пост №506 Отправлено: 05.05.08 14:52:16
Вообще-то система достаточно неполная в этих скриптах... Delay(35) ведь может и не сработать правильно. Например на найтмаре. Правильно и всегда сработает Delay(1), но такой скрипт будет тормозить дум причем зря. Достаточно глупо пересчитывать количество монстров каждый тик и делать всякие разные проверки если можно было бы просто написать MOBJ_DEATH скрипт (тем более что DEATH модификатор срабатывающий на смерть плеера уже есть) и делать всю необходимую работу там, а не где попало и постоянно.

По-идее чтобы не делать лишних проверок в режимах игры без респавна монстров скрипт можно переписать следующим образом:

#include "zcommon.acs"

int current_map_num = -1;
int idle_ticks = 35;

script 1 ENTER
{
  current_map_num = GetLevelInfo(LEVELINFO_LEVELNUM);
  idle_ticks = 35;
  if ((GameSkill() == SKILL_VERY_HARD) || ((GetCVar("dmflags") & 8192) > 0))
    idle_ticks = 1;
}

script 2 OPEN
{
  if (current_map_num == 7)
  {
    While(ThingCountName("что-то_1", 0) > 0 && ThingCountName("что-то_2", 0) > 0)
      Delay(idle_ticks);
   
    Floor_LowerToLowest(666, 16);
  }
}


Теперь при активном респавне монстров (найтмар либо "-respawn") проверка на "а не убиты ли все нужные" будет выполняться каждый тик, иначе - раз в секунду.
3 1 1
Guest
= 2nd Lieutenant =
Next rank: - 1st Lieutenant - after 167 points
1473

Doom Rate: 2.5

Posts quality: +182
Ссылка на пост №507 Отправлено: 05.05.08 18:13:38
entryway:
Только не "+BOSS", а "+BOSSDEATH" - именно так прописано в декорейте стандартного манкубуса. "+BOSS" это я нагуглил и отписал не проверив.

Нету у него там ни того, ни другого. Флажок BOSS означает статус монстра (что выражается во всяких мелких плюшках), команда A_BossDeath действительно имеет место быть, но это только необходимое условие, работать все равно не будет.

entryway:
Я просто как и Klon проверить такое не умею. Сложно это слишком для меня.

От программиста такое слышать просто смешно - структурно декорейт прост как четыре копейки. Некоторая практика нужна, я бы даже сказал привычка :ha: , чтоб ориентироваться в том что и куда можно воткнуть с целью достижения нужного эффекта. Детский конструктор в довольно крупный кубик, только роль кубиков выполняет довольно ограниченный набор черных ящиков.
3 1
entryway
-= DoomGod =-
1795

Doom Rate: 2.74

Posts quality: +1
Ссылка на пост №508 Отправлено: 05.05.08 18:18:08
Guest:
Нету у него там ни того, ни другого. Флажок BOSS означает статус монстра (что выражается во всяких мелких плюшках)

Может ты не до конца разобрался? Оно (+BOSSDEATH) там есть, я ведь не с воздуха взял :). У кибера, арахнатрона, барона и манкубуса - все как положено. Оно есть не только там, но и в вики. Не могу найти причин по которым эта техника не должна работать.
3 1 1
Guest
= 2nd Lieutenant =
Next rank: - 1st Lieutenant - after 167 points
1473

Doom Rate: 2.5

Posts quality: +182
Ссылка на пост №509 Отправлено: 05.05.08 18:27:32
entryway:
Оно там есть, я ведь не придумал.

Ссылку. В здумвики в декорейт-тексте этого флага у манкубуса нет.

entryway:
И думаю, что я готов с тобой поспорить, что оно работает.

Я, кажется, знаю в чем дело - ты не учел всех нюансов вопроса, сформулированного в теме. И в этой ошибке намек на решение :)
3 1
entryway
-= DoomGod =-
1795

Doom Rate: 2.74

Posts quality: +1
Ссылка на пост №510 Отправлено: 05.05.08 18:31:25
Guest:
Ссылку. В здумвики в декорейт-тексте этого флага у манкубуса нет.

Я смотрел в gzdoom.pk3, так как вики часто лжет по этому поводу. Достаточно вспомнить недавний пример с тиками. Хотя если ты говоришь что пробовал и не работает... Вполне вероятно, что проверка идет именно по полному имени монстров, а они у зеры свои.
3 1 1
Guest
= 2nd Lieutenant =
Next rank: - 1st Lieutenant - after 167 points
1473

Doom Rate: 2.5

Posts quality: +182
Ссылка на пост №511 Отправлено: 05.05.08 18:47:55
entryway:
Я смотрел в gzdoom.pk3, так как вики часто лжет по этому поводу.

Предложение смотреть непосредственно гоззо интересное. Там действительно есть этот флаг, который в ВИКИ даже не упоминается, но похоже, что это какой-то рудимент, ибо я этот флаг закомментировал прямо в gzdoom.pk3, и ничего не изменилось - все по-прежнему работало. Чтоб убедиться, что порт действительно использует эти текстовики (вдруг они там для красоты лежат), вписал манкубусам, что с вероятностью 1/2 после своих трех атак они еще выпускают ракету. И они действительно стали это делать, из-за чего быстро друг с другом перессорились :o
3 1
entryway
-= DoomGod =-
1795

Doom Rate: 2.74

Posts quality: +1
Ссылка на пост №512 Отправлено: 05.05.08 18:51:37
В вики http://zdoom.org/wiki/Actor_flags про BOSSDEATH написано следующее:

* BOSSDEATH
Makes A_FreezeDeathChunks and A_Burst call A_BossDeath.

То есть похоже на то, что действительно боздез не является тем, что я предположил. Глянул одним глазом в сорец, с большой вероятностью предполагаю, что проверка идет действительно по имени, а, насколько я понимаю, создать два разных актера с одним и тем же именем (манкубуса) не получится.
3 1 1
Guest
= 2nd Lieutenant =
Next rank: - 1st Lieutenant - after 167 points
1473

Doom Rate: 2.5

Posts quality: +182
Ссылка на пост №513 Отправлено: 05.05.08 19:06:08
entryway:
В вики http://zdoom.org/wiki/Actor_flags про BOSSDEATH написано следующее

Ы! В разделе "разное" не досмотрел :oops: Даже забавно, что на эти грабли так ни разу и не наступил, хотя реально мог.

entryway:
Глянул одним глазом в сорец, с большой вероятностью предполагаю, что проверка идет действительно по имени, а, насколько я понимаю, создать два разных актера с одним и тем же именем (манкубуса) не получится.

Нихрена, проверка идет как-то хитрее, ибо монстров, реплейсящих манкубусов будет проверять точно так же, как т самих манкубусов, даже если последних не указывать parent классом. Достаточно прописать саму команду A_BossDeath
3 1
entryway
-= DoomGod =-
1795

Doom Rate: 2.74

Posts quality: +1
Ссылка на пост №514 Отправлено: 05.05.08 19:15:43
Guest:
проверка идет как-то хитрее, ибо монстров, реплейсящих манкубусов будет проверять точно так же, как т самих манкубусов, даже если последних не указывать parent классом

Имя я имел ввиду "Fatso" из первой строчки декорейта "ACTOR Fatso 67" Может это Тип называется, не знаю. Наследование, как я предполагаю, просто избавляет от прописывания тех же флагов. В любом случае в топку метод раз не работает.
3 1 1
Guest
= 2nd Lieutenant =
Next rank: - 1st Lieutenant - after 167 points
1473

Doom Rate: 2.5

Posts quality: +182
Ссылка на пост №515 Отправлено: 05.05.08 20:42:41
entryway:
В любом случае в топку метод раз не работает.

Не пиши поспешного, а то народ запутаешь. Работает все, не работает когда рандомайзить через респавн начинают, в чем собственно байда и была. Я в ТА в свое время это инвентори-переключателями обошел. Кстати, хорошоизвестный метр WW состроил по этому поводу (хотя предмет проблемы был несколько иной) довольно кислую мину:

wildweasel:
Vaecrius:
About the deaf monsters: What you could do is like in True Action's imps. Instead of spawning each monster individually, merge all the DECORATE into one actor and use inventory flags to go between states. For the drops, you could spawn invisible actors that immediately die and drop the desired pickup. I think A_TakeInventory works on health, but if not the +nopain flag plus DamageThing would work just as well.

Muhh?! This is why I'm not a real programmer - this just looks too complicated to even bother with! Not to mention that after a couple weeks I probably wouldn't be able to read my own code if I were to implement this...
:x :x

Можно, наверное, пытаться имитировать A_BossDeath и с помощью АЦС, только скрипт крутить не регулярно, а пускать из death-стейта. Но мне влом это проверять.
3 1
zer0
= Sergeant Major =
Next rank: UAC Sergeant Major after 25 points
655

Doom Rate: 2.13

Posts quality: +56
Ссылка на пост №516 Отправлено: 06.05.08 20:28:11
Пфф. Может решить вопрос как-нибудь через переменные? Количество манкубусов (точнее тех, кто их заменяет) будет всегда одно и то же... в смерть каждого из них вписать активацию скрипта, меняющего переменную. Потом в другом скрипте вначале проверку на номер карты, потом, если уже получено нужное число - выполняется нужное действие... Длинновато, правдо, получится, но, кажется, должно работать...
2 1 2
StasBFG[iddqd]
-= DoomGod =-
Админ форумаАдмин сайта
3155

Doom Rate: 2.89

Posts quality: +29
Ссылка на пост №517 Отправлено: 07.05.08 01:33:47
Вот это должно работать без всяких скриптов:
http://zdoom.org/wiki/A_KillMaster
1 1 2
nprotect
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 97 points
1343

Doom Rate: 2.45

Ссылка на пост №518 Отправлено: 07.05.08 08:24:57
zer0
вот это может работать. но как ты впишешь активацию скрипта, если объекты спавнятся? только через DECORATE, а это очень нудно и неоптимизировано. но по идее да, работать должно :)
1 2 1
zer0
= Sergeant Major =
Next rank: UAC Sergeant Major after 25 points
655

Doom Rate: 2.13

Posts quality: +56
Ссылка на пост №519 Отправлено: 07.05.08 15:42:14
nprotect
я что-то не понял. А спаунятся они у меня по-твоему через что? Я МОД делаю, у меня декорейта там десятки страниц, в том числе и с активациями скриптов... И все вполне работает.

StasBFG[iddqd]
ну и зачем мне этот A_KillMaster, скажи на милость? Мне не нужно, чтобы объект-спаунер уничтожался. Платформа должна опускаться, когда умирают сами монстры (в результате соответствующих усилий игрока), а не объект-спаунер. Тем более, что этот объект и так умирает после того, как заспаунит кого надо. Правда, учитывая, что он не является монстром, платформа на это никак не реагирует.


В общем, пойду я потестю это дело...


ADDED:

Я написал скрипт. Обнаружил, что оно даже работает как надо. Забыл я только то, что 7 манкубусов там только на 4-й и 5-й сложности, а на других меньше (2 на 1-й и 2-й, 4 на 3-й). Я вроде бы разобрался, как добавить проверку на сложность, но, как я понял, надо, чтобы ее использовать, прописать int GameSkill();, или что-то в этом роде. Вот это и не получается. При компилировании говорит "redefined identifier" - я не понимаю, в чем дело. А если не прописывать - не работает, правда тут я уже не уверен, по той ли причине не работает или нет...
2 1 2
nprotect
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 97 points
1343

Doom Rate: 2.45

Ссылка на пост №520 Отправлено: 07.05.08 16:35:09
zer0
КАК правило в смерть монстра скрипт вписывается так - в ДБ открываются свойства и ставится экшн 80 с параметрами. я потому и сказал, что со спавнящимися объектами мона только через декорейт
1 2 1
Страница 26 из 31Перейти наверх Пред.  1, 2, 3 ... 25, 26, 27 ... 29, 30, 31  След.
   Список разделов - Флуд и устаревшие темы - (G)ZDoom - ACS - DECORATE З-вопросы