Welcome to U.A.C.
login / register 
Status: Guest
Forum archive | iddqd.ru
Wolf 3D
RulesRules SearchSearch
18+
(G)ZDoom - ACS - DECORATE З-вопросыGoto page Previous  1, 2, 3 ... 25, 26, 27 ... 29, 30, 31  Next
   Forum Index - Флуд и устаревшие темы - (G)ZDoom - ACS - DECORATE З-вопросыPost a reply
AuthorMessage
zer0
= Sergeant Major =
Next rank: UAC Sergeant Major after 25 points
655

Doom Rate: 2.13

Posts quality: +57
Link to post #501 Posted: 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

Link to post #502 Posted: 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: +57
Link to post #503 Posted: 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: +57
Link to post #504 Posted: 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: +66
Link to post #505 Posted: 05.05.08 14:07:26
Zcommon.acs добавить
Вместо "икс" и "игрек" нули поставить надо
"ThingCount" на "ThingCountName"
всё скомпилировать и добавить название скомпиленного лампа в текстовый ламп "LIBRARY"
должно работать :)
1 2 1
entryway
-= DoomGod =-
1795

Doom Rate: 2.74

Posts quality: +1
Link to post #506 Posted: 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 155 points
1485

Doom Rate: 2.44

Posts quality: +187
Link to post #507 Posted: 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
Link to post #508 Posted: 05.05.08 18:18:08
Guest:
Нету у него там ни того, ни другого. Флажок BOSS означает статус монстра (что выражается во всяких мелких плюшках)

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

Doom Rate: 2.44

Posts quality: +187
Link to post #509 Posted: 05.05.08 18:27:32
entryway:
Оно там есть, я ведь не придумал.

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

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

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

Doom Rate: 2.74

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

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

Doom Rate: 2.44

Posts quality: +187
Link to post #511 Posted: 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
Link to post #512 Posted: 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 155 points
1485

Doom Rate: 2.44

Posts quality: +187
Link to post #513 Posted: 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
Link to post #514 Posted: 05.05.08 19:15:43
Guest:
проверка идет как-то хитрее, ибо монстров, реплейсящих манкубусов будет проверять точно так же, как т самих манкубусов, даже если последних не указывать parent классом

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

Doom Rate: 2.44

Posts quality: +187
Link to post #515 Posted: 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: +57
Link to post #516 Posted: 06.05.08 20:28:11
Пфф. Может решить вопрос как-нибудь через переменные? Количество манкубусов (точнее тех, кто их заменяет) будет всегда одно и то же... в смерть каждого из них вписать активацию скрипта, меняющего переменную. Потом в другом скрипте вначале проверку на номер карты, потом, если уже получено нужное число - выполняется нужное действие... Длинновато, правдо, получится, но, кажется, должно работать...
2 1 2
StasBFG[iddqd]
-= DoomGod =-
Forum adminSite admin
3155

Doom Rate: 2.89

Posts quality: +34
Link to post #517 Posted: 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

Link to post #518 Posted: 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: +57
Link to post #519 Posted: 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

Link to post #520 Posted: 07.05.08 16:35:09
zer0
КАК правило в смерть монстра скрипт вписывается так - в ДБ открываются свойства и ставится экшн 80 с параметрами. я потому и сказал, что со спавнящимися объектами мона только через декорейт
1 2 1
Page 26 of 31Go to topGoto page Previous  1, 2, 3 ... 25, 26, 27 ... 29, 30, 31  Next
   Forum Index - Флуд и устаревшие темы - (G)ZDoom - ACS - DECORATE З-вопросы