Не получается запустить мод с DOOM 1; гозза жалуется на то, что пропущены ротации спрайта... гхм... Чейнганнера. С DOOM II мод работает прекрасно. Сталкивался кто-нибудь с подобной проблемой?
DOOMGABR Я конечно может и не шарю, но если мод просит спрайты, то почему бы их ему просто не предложить на блюдечке? Если используются спрайты оригинального чейнганера, то вот, можно вместе с ними попробовать запустить. (Хотя зачем они в первом думе?)
Marisa Тяжело без контекста, попробую телепатически.
не вызывается или не отрабатывает
А ты пробовал добавить в него отладочный PrintBold в начале? Может, он всё-таки отрабатывает, а после него AmmoCapacity ещё раз как-то меняется?
Попробуй добавить после "PickUp:" строчку TNT1 A 0. Вроде там было какое-то ограничение, связанное с этим.
Ещё теоретически проблема может быть в длительности 35 (все стейты CustomInventory внутри инвентаря отрабатывают сразу, в течение одного тика).
Это, правда, догадки в стиле "давненько я не брал в руки шашек..."; если бы я видел всю ситуацию, может, сказал бы что-нибудь посодержательнее.
DOOMGABR Какая цель запуска? Если это личный мод и ты его тестишь, то придётся выкинуть оттуда спрайты с именами, совпадающими с названиями спрайтов чейнганнера (туда добавлено что-то вроде Minor Sprite Fixing Project, я угадал?)
Если нужно просто запустить старый мод, то можно воспользоваться советом Marisa.
N00b2015 Да, тест я делал, не печатает, ничего не делает вообще... Проштудировал все вики на эту тему, даже узнал про ограничение с этим одним тиком и "уникальностью" в этом плане стейтов Use и PickUp, и сдавшись, просто стал спавнить по условию пистол старта под игроком этот треклятый FakeAmmoBelt, игрок его подбирает, всё отрабатывает как обычно и теперь в любых вадах и мультиплеере, и я в общем, доволен происходящим. Но спасибо, премного благодарен за такой широкий ответ по вопросу!
MyNameIs Каким арсеналом это требуется сделать?
Проблемы в твоём случае могут быть связаны с тем, что после подбора меняются указатели, и нужно пользоваться invoker, чтобы получить доступ к данным предмета из стейта оружия.
Если это уже учитывается, то не могу предложить ничего лучшего, чем переписать функцию из строчек 397–421 отсюда.
YURA_111 Судя по посту, проблема была в том, что не получалось узнать само это количество.
Может, я вообще не о том написал... Трудно без подробностей.
YURA_111 Потому что ты не понял сути. Ему нужно из подобранной пушки передать что-то в игрока. И я так понимаю нужно это количество узнать из скрипта в момент подбора. А не просто чтобы его дали.
п.с. проще было скопипастить сюда, а то ссылка на 1000строчный файл очень пугает.
class MyCustomWeaponPickup : Weapon
{
override bool HandlePickup(Inventory item)
{
if (!Super.HandlePickup(item)) return false;
// тут пишешь код, дабы обработать поднятие "item" игроком "self" (или "invoker", не помню точно как это в зскрипте работает)
// важно: на этот момент итем УЖЕ ПОДНЯТ внутри Super.HandlePickup, отменить поднятие в этом месте НЕЛЬЗЯ — придётся переделать, если нужно
return true;
}
}
По сути в зскрипте таким образом можно сделать CustomInventory, но скрещенное с Weapon/Ammo/...
Впрочем, если у автора есть религиозное предубеждение перед зскриптом, то можно использовать в этом месте CustomInventory. В теории. Которое будет одновременно давать пушку и вызывать какой-то скрипт (ацс, например)
N00b2015 пытался и через декорейт, и через ацс+декорейт.
Скрытый текст:
TNT1 A 0 A_SetInventory ("HTAmmo", args[2])
не подает признаков жизни, равно как и
TNT1 A 0 ACS_namedExecute("qwerty",0,args[0],args[1],args[2])
+
script "qwerty" (int zx, int zy, int zz)
{print(d:zx, s:", ",d:zy, s:", ",d:zz);}
с SetActivator на игрока не пашет тоже.
. выдают тупо ноль.
и вепон не пашет, и кастоминвентори не отвечает.
ZZYZX
похоже, без зэскрипта его вообще невозможно сделать.
теперь буду мыслить, как же устроен этот страшный зскрипт
Подскажите ACS экшены: позволяющий сделать скролл напольной текстуры, и позволяющий двигать игрока в соответствии с направлением скролла. Здум вики обшарил, не нашёл.
Народ, столкнулся с проблемой. Не получается создать ФейкИнвэнтори, предназначенный для использования свитча, при наличии его у игрока. При отключении основного питания, игроку вручается фейк инвэнтори под названием LightEssence, наличие которого проверяет скрипт со свитчом, опускающим платформу. Заменив свой каличный fakeinv стандартной синей ключкартой я заставил скрипт работать корректно. Стоит мне опять поставить заместо него свой "LightEssence" фейк инвэнтори актор — не работает. Что я делаю не так?
Код актора:
Скрытый текст:
Actor LightEssence : CustomInventory // map01: даётся при включении света на резервном складе
{
States
{
Spawn:
TNT1 A -1
stop
}
}
Проблема в создании мода. При подборе Берсерка не переключается на кулак. Как поправить?
Код:
Скрытый текст:
ACTOR BlackKit : Berserk replaces Berserk
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("PowerStrength")
TNT1 A 0 HealThing(100, 0)
TNT1 A 0 A_SelectWeapon("Fist")
Stop
}
}
Добавлено спустя 23 минуты 18 секунд:
Ещё вопрос: каким образом заставить кулак бить с другим звуком определённый актор? Вот, к пример, мне необходимо чтобы по бочке игрок бил с другим звуком, не как по монстрам.
Ещё вопрос: каким образом заставить кулак бить с другим звуком определённый актор? Вот, к пример, мне необходимо чтобы по бочке игрок бил с другим звуком, не как по монстрам.
Есть такой спецпойнтер AAPTR_PLAYER_GETTARGET, через него узнаём, что именно игрок в данный момент бьёт. Ну а дальше уже варианты. Или через A_CheckFlag, A_CheckSpecies или ещё какой-нибудь джамп по общему признаку. Или через CheckActorClass.
Ещё вопрос: каким образом заставить кулак бить с другим звуком определённый актор? Вот, к пример, мне необходимо чтобы по бочке игрок бил с другим звуком, не как по монстрам.
Использовать свой "PUFF" актор в котором указать звук. При ударе по не кровоточащему актору (типа бочки) - будет другой звук...