Автор | Сообщение |
zer0 = Sergeant Major =
 | 655 |
Doom Rate: 2.13 Posts quality: +56 |
Отправлено: 26.04.08 15:29:25 | | | dukenator не пойдет. Мне потом надо будет проводить проверку на наличие этого итема, а если это PowerupGiver, проверка не сработает - A_JumpIfInventory работает только с Inventory. Да и вообще, что касается PowerupGiver'а - логически этот итем уничтожается сразу после взятия (или после использования, если у него -AUTOACTIVATE), т.к., пока есть эффект пауэр-апа, самого итема PowerupGiver уже нет. В любом случае, он мне тут не подходит. | |
|
2 |
1 |
2 |
 |
|
| |
Falcor - Master Sergeant -
 | 404 |
Doom Rate: 2.54
|
Отправлено: 26.04.08 15:32:51 | | | Да-да-да... Я тут же нашел ее, как написал пост...  И тут же стер пост 
ЗЫ В новой темке можно увидеть, зачем он мне был нужен  | |
|
| |
zer0 = Sergeant Major =
 | 655 |
Doom Rate: 2.13 Posts quality: +56 |
Отправлено: 27.04.08 00:07:58 | | | Ладно, я справился со своей проблемой - плюнул и внедрил ACS. А вот то, что в (Г)ЗДуме нет простого способа отнять точное число хелсов - это, по-моему, просто безобразие. Ну да ладно... | |
|
2 |
1 |
2 |
 |
|
| |
zer0 = Sergeant Major =
 | 655 |
Doom Rate: 2.13 Posts quality: +56 |
Отправлено: 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 =
 | 1513 |
 Doom Rate: 2.31 Posts quality: +64 |
Отправлено: 05.05.08 14:07:26 | | | Zcommon.acs добавить Вместо "икс" и "игрек" нули поставить надо "ThingCount" на "ThingCountName" всё скомпилировать и добавить название скомпиленного лампа в текстовый ламп "LIBRARY" должно работать  | |
|
1 |
2 |
1 |
 |
|
| |
entryway -= DoomGod =-
 | 1795 |
Doom Rate: 2.74 Posts quality: +1 |
Отправлено: 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 =
 | 1473 |
 Doom Rate: 2.5 Posts quality: +182 |
Отправлено: 05.05.08 18:13:38 | | | entryway: | Только не "+BOSS", а "+BOSSDEATH" - именно так прописано в декорейте стандартного манкубуса. "+BOSS" это я нагуглил и отписал не проверив. |
Нету у него там ни того, ни другого. Флажок BOSS означает статус монстра (что выражается во всяких мелких плюшках), команда A_BossDeath действительно имеет место быть, но это только необходимое условие, работать все равно не будет.
entryway: | Я просто как и Klon проверить такое не умею. Сложно это слишком для меня. |
От программиста такое слышать просто смешно - структурно декорейт прост как четыре копейки. Некоторая практика нужна, я бы даже сказал привычка , чтоб ориентироваться в том что и куда можно воткнуть с целью достижения нужного эффекта. Детский конструктор в довольно крупный кубик, только роль кубиков выполняет довольно ограниченный набор черных ящиков. | |
|
3 |
1 |
 |
|
| |
entryway -= DoomGod =-
 | 1795 |
Doom Rate: 2.74 Posts quality: +1 |
Отправлено: 05.05.08 18:18:08 | | | Guest: | Нету у него там ни того, ни другого. Флажок BOSS означает статус монстра (что выражается во всяких мелких плюшках) |
Может ты не до конца разобрался? Оно (+BOSSDEATH) там есть, я ведь не с воздуха взял . У кибера, арахнатрона, барона и манкубуса - все как положено. Оно есть не только там, но и в вики. Не могу найти причин по которым эта техника не должна работать. | |
|
3 |
1 |
1 |
 |
|
| |
Guest = 2nd Lieutenant =
 | 1473 |
 Doom Rate: 2.5 Posts quality: +182 |
Отправлено: 05.05.08 18:27:32 | | | entryway: | Оно там есть, я ведь не придумал. |
Ссылку. В здумвики в декорейт-тексте этого флага у манкубуса нет.
entryway: | И думаю, что я готов с тобой поспорить, что оно работает. |
Я, кажется, знаю в чем дело - ты не учел всех нюансов вопроса, сформулированного в теме. И в этой ошибке намек на решение  | |
|
3 |
1 |
 |
|
| |
entryway -= DoomGod =-
 | 1795 |
Doom Rate: 2.74 Posts quality: +1 |
Отправлено: 05.05.08 18:31:25 | | | Guest: | Ссылку. В здумвики в декорейт-тексте этого флага у манкубуса нет. |
Я смотрел в gzdoom.pk3, так как вики часто лжет по этому поводу. Достаточно вспомнить недавний пример с тиками. Хотя если ты говоришь что пробовал и не работает... Вполне вероятно, что проверка идет именно по полному имени монстров, а они у зеры свои. | |
|
3 |
1 |
1 |
 |
|
| |
Guest = 2nd Lieutenant =
 | 1473 |
 Doom Rate: 2.5 Posts quality: +182 |
Отправлено: 05.05.08 18:47:55 | | | entryway: | Я смотрел в gzdoom.pk3, так как вики часто лжет по этому поводу. |
Предложение смотреть непосредственно гоззо интересное. Там действительно есть этот флаг, который в ВИКИ даже не упоминается, но похоже, что это какой-то рудимент, ибо я этот флаг закомментировал прямо в gzdoom.pk3, и ничего не изменилось - все по-прежнему работало. Чтоб убедиться, что порт действительно использует эти текстовики (вдруг они там для красоты лежат), вписал манкубусам, что с вероятностью 1/2 после своих трех атак они еще выпускают ракету. И они действительно стали это делать, из-за чего быстро друг с другом перессорились  | |
|
3 |
1 |
 |
|
| |
entryway -= DoomGod =-
 | 1795 |
Doom Rate: 2.74 Posts quality: +1 |
Отправлено: 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 =
 | 1473 |
 Doom Rate: 2.5 Posts quality: +182 |
Отправлено: 05.05.08 19:06:08 | | | Ы! В разделе "разное" не досмотрел Даже забавно, что на эти грабли так ни разу и не наступил, хотя реально мог.
entryway: | Глянул одним глазом в сорец, с большой вероятностью предполагаю, что проверка идет действительно по имени, а, насколько я понимаю, создать два разных актера с одним и тем же именем (манкубуса) не получится. |
Нихрена, проверка идет как-то хитрее, ибо монстров, реплейсящих манкубусов будет проверять точно так же, как т самих манкубусов, даже если последних не указывать parent классом. Достаточно прописать саму команду A_BossDeath | |
|
3 |
1 |
 |
|
| |
entryway -= DoomGod =-
 | 1795 |
Doom Rate: 2.74 Posts quality: +1 |
Отправлено: 05.05.08 19:15:43 | | | Guest: | проверка идет как-то хитрее, ибо монстров, реплейсящих манкубусов будет проверять точно так же, как т самих манкубусов, даже если последних не указывать parent классом |
Имя я имел ввиду "Fatso" из первой строчки декорейта "ACTOR Fatso 67" Может это Тип называется, не знаю. Наследование, как я предполагаю, просто избавляет от прописывания тех же флагов. В любом случае в топку метод раз не работает. | |
|
3 |
1 |
1 |
 |
|
| |
Guest = 2nd Lieutenant =
 | 1473 |
 Doom Rate: 2.5 Posts quality: +182 |
Отправлено: 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... |
Можно, наверное, пытаться имитировать A_BossDeath и с помощью АЦС, только скрипт крутить не регулярно, а пускать из death-стейта. Но мне влом это проверять. | |
|
3 |
1 |
 |
|
| |
zer0 = Sergeant Major =
 | 655 |
Doom Rate: 2.13 Posts quality: +56 |
Отправлено: 06.05.08 20:28:11 | | | Пфф. Может решить вопрос как-нибудь через переменные? Количество манкубусов (точнее тех, кто их заменяет) будет всегда одно и то же... в смерть каждого из них вписать активацию скрипта, меняющего переменную. Потом в другом скрипте вначале проверку на номер карты, потом, если уже получено нужное число - выполняется нужное действие... Длинновато, правдо, получится, но, кажется, должно работать... | |
|
2 |
1 |
2 |
 |
|
| |
StasBFG[iddqd] -= DoomGod =-
 Doom Rate: 2.89 Posts quality: +29 |
|
1 |
1 |
2 |
 |
|
| |
nprotect - 2nd Lieutenant -
 | 1343 |
 Doom Rate: 2.45
|
Отправлено: 07.05.08 08:24:57 | | | zer0 вот это может работать. но как ты впишешь активацию скрипта, если объекты спавнятся? только через DECORATE, а это очень нудно и неоптимизировано. но по идее да, работать должно  | |
|
1 |
2 |
1 |
 |
|
| |
zer0 = Sergeant Major =
 | 655 |
Doom Rate: 2.13 Posts quality: +56 |
Отправлено: 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 -
 | 1343 |
 Doom Rate: 2.45
|
Отправлено: 07.05.08 16:35:09 | | | zer0 КАК правило в смерть монстра скрипт вписывается так - в ДБ открываются свойства и ставится экшн 80 с параметрами. я потому и сказал, что со спавнящимися объектами мона только через декорейт | |
|
1 |
2 |
1 |
 |
|
| |