Народ, есть вопрос по ACS скриптам. Каким образом можно записать в переменную кол-во единиц у инвентории? Т.е. в АЦС скрипте у меня есть переменная Medikit и мне нужно записать в неё значение инвентории Medikit. В функциях по этому поводу ни чё не нашёл вроде.
Оно ж вроде для проверок, не?(Мне в действии надо)
Разобрался, но другой вопрос, я присваиваю переменной значение и потом пытаюсь выдать игроку инвенторию со значением переменной, но игра это почему то игнорит.
Вот скрипт:
script 288 ENTER
{
Medikit = CheckInventory("MedikitSWAmmo");
GiveInventory("MedikitSW", Medikit);
}
HellDoomer 666
В здуме акторы работают акумулятивно. Т.е. можно попробовать основать актор LittlePlayer на акторе AlexPlayer. В акторе мелкого игрока менять только высоту и нужные параметры(всё остальное будет браться у другого актора). Т.е. информацию о оружии будет достаточно указать только в AlexPlayer. Да и так будет меньше глюков.
Кстате не приседает скорее всего потому слишком низко.
Ай, ну такой глюк - не беда. А вот главное исправить с оружием... Вот перезалил исправленый вад. А дальше как ? - игрок уменьшается => достать оружие можно,но дальше при увеличении - оно пропадает.,а если у игрока 2 оружия - то переключиться на них невозможно.
For the morph style, it is important to be aware that when given health by a normal means, a maximum of 30 health is imposed and no stamina applied on top; furthermore, various other effects such as limited (or no) weapon switching and the inability to pick up items are hardcoded into the game or affected in other ways that to a DECORATE coder seem totally unpredictable. The reason for this new functionality being added was to bring the effects of morphing under DECORATE control and make it predictable. To this end, new flags will be added from time to time.
Для стиля морфинга, важно знать, что при введении здоровья обычных средств, максимум 30 tедениц здоровья накладывается сверх максимума (и не более максимума стамины), Кроме этого, в игре (Zdoom) такие аспекты, как возможность переключать оружие и возможность подбирать те или иные предметы морфированным классом жестко заложена в исполняемый файл и это никак нельзя изменить. Это мотивировано тем, что иначе поведение морфированных классов могло оказаться неопределённым. Возможно, потом появятся флаги, позволяющие это изменить.
И напоследок. НЕ ИСПОЛЬЗУЙТЕ ДОЛБАННЫЙ KEYCONF. Забудьте о его существовании. Оружие определяется в Playerpawn производных классах. И кнопки новые тоже не создавайте, задолбало в каждом ваде их назначать-переназначать, дико бесит. Добавьте максимум одну кнопку подо всё, что-то типа меню, не более, а то половина вадов страдают тем, что добавляют по 5 кнопок для разной байды типа экспы, лога, задач и прочей мути.
По поводу моего скрипта ни чё нельзя сделать, не?
Смысл скрипта - при входе игрока на уровень(будь то новая игра или переход на следующий), брать значение из патрон(MedikitSWAmmo) и присваивать это значение обычной инвентории (MedikitSW). Но возникает весьма стрёмная вещь - игра всё игнорирует и ни чё не присваивает. Однако если в GiveInventory записать обычное число, то срабатывает. Никто не знает как исправить эту муть?
LEX SAFONOV :
script 288 ENTER
{
Medikit = CheckInventory("MedikitSWAmmo");
GiveInventory("MedikitSW", Medikit);
}
LEX SAFONOV
Полная муть — это твой вопрос. Если ты очень хочешь получить ответ на него, то почему ты не хочешь потратить лишнюю минуту на то, чтобы его ПРАВИЛЬНО задать? Сложно написать так?
Зная значение Medikit половина вопросов отсеится. Кроме того, ты узнаешь, вызывается ли твой скрипт вообще для данного игрока. и где объявлена эта переменная? Почему не написать просто :
В общем, в правильно заданном вопросе содержится 90% правильного ответа, и к правильным вопросам не нужны эти долбанные стены текста, что я пишу специально для тебя, мог бы и уважать чужое время.
Выводить значение через print я уже пробовал как раз. Проблема вреале стрёмная. Значение MedikitSWAmmo как было 100, так и осталось(это максимальное значение), а вот MedikitSW не меняется вообще при переходе на другой уровень.
И это я тоже пробовал, не работает. Игра опять же всё тупо игнорирует.
Задумка:
Сделать что то типа замены флага INVENTORY.PERSISTENTPOWER. В скултаге его тупо нет, а мод у меня как раз нацелен на использование всего и вся. Если у инвентории нет этого флага, то игра при переходе сбрасывает всё на единицу, что очень нервирует.
Вопрос писал выше.
Я пробовал делать ещё методом отнимания, т.е. выдавал инвентории MedikitSW сразу 100 единиц и потом отнимал сколько нужно(через TakeInventory). Этот способ работал только наполовину и то бажно. А именно баги - если у патрон 100 единиц и аптечка не заюзана(тоже 100), то игра один хрен всё сбрасывает на единицу и даже не смотрит на то, что я писал для этого случая условие(в условии естесно выдаётся прямиком 100 единиц).
Второй баг - если патечка хоть раз использована, но в ней значение не нуль и меньше 100(патроны при этом тоже отнимаются синхронно), то вроде бы срабатывает, но потом нельзя подобрать другую аптечку до тех пор, пока не заюзаешь хоть раз старую(которую скрипт накинул) и это даже не смотря на то, что у неё максимум вместимость 100, а в данный момент там допустим 73.
LEX SAFONOV, Извини, но ты тупишь. В момент выполнения скрипта 288 у плеера УЖЕ НЕТ MedikitSWAmmo, оно уже отнялось ,поэтому в Medikit будет занесено или 0, или 1. Значение надо заносить в эту переменную до выхода с предыдущего уровня. И переменную необходимо объявить как глобальную, и не просто переменную, а массив из MAXPLAYERS элементов (не знаю, чему это равно в skulltag. В соседней теме написали, что 64).
В момент выполнения скрипта 288 у плеера УЖЕ НЕТ MedikitSWAmmo, оно уже отнялось ,поэтому в Medikit будет занесено или 0, или 1.
Бред же, патроны при переходе на следующий уровень не сбрасываются, потому что они именно патроны, а не инвентории.
MedikitSWAmmo - патроны
MedikitSW - обыяная кастомная инвентория.
Патроны я сделал для того, чтобы игра "хоть что то запоминала" при переходе на другой уровень. От тех самых патрон я и отталкиваюсь, потому что игра их не сносит до единицы. В коде самой аптечки(кастомной инвентории) всё как полагается(в смысле значения отнимаются сразу и у инвентории и у патрон, дабы было у обоих одинаковое значение)
Nil :
И переменную необходимо объявить как глобальную, и не просто переменную, а массив из MAXPLAYERS элементов (не знаю, чему это равно в skulltag. В соседней теме написали, что 64).
Интересно зачем, объявлять переменные как глобальные я пробовал уже, тоже не помогает.
А вообще вот это:
GiveInventory("MedikitSW", CheckInventory("MedikitSWAmmo"));
LEX SAFONOV, Ещё раз, вся эта грёбаная писанина здесь только от того, что ты не умеешь правильно задавать вопросы. Ты выложил недостаточно кода, недостаточно данных и мы должны гадать, почему у тебя ничего не работает. Откуда мне знать, что у тебя там в декорейте? Почему из тебя надо сведенья буквально выдавливать? Кроме того, ты сам себе противоречишь, потому что п предыдущем посте ты рассказывал о том, что всё не работает из-за непереноса инвентори. Так что разбирайся сам, раз такой умный.
Ты выложил недостаточно кода, недостаточно данных и мы должны гадать, почему у тебя ничего не работает.
Да пжалста ёмаё, так бы сразу и сказал, что ещё нужно. Вот ты начинаешь тут со своим выпендрёжем очередным на тему, кто умничает, а кто нет и кто лучше тут знает.
Декорейт
MedikitSW(кастомная инвентория)
Скрытый текст:
ACTOR MedikitSW : CustomInventory
{
Game Doom
Inventory.PickupMessage "Medikit"
Inventory.Amount 100
Inventory.MaxAmount 100
Inventory.Icon "MEDKB0"
Inventory.PickupSound "DSITEMUP"
+INVENTORY.INVBAR
-INVENTORY.AUTOACTIVATE
-INVENTORY.INTERHUBSTRIP
States
{
Spawn:
MEDK A -1
stop
Pickup:
TNT1 A 0 A_GiveInventory("MedikitSWAmmo",100)
stop
Use:
TNT1 A 1
TNT1 A 0 A_jumpifinventory("health",100,"Spawn")
TNT1 A 0 A_JumpIfInventory("MedikitSW",1,"Use2")
Fail
Use2:
TNT1 A 1
TNT1 A 0 A_JumpIfHealthLower(100, "Use3")
Fail
Use3:
TNT1 A 1
TNT1 A 0 A_PlaySound("AHH", 3)
TNT1 A 0 A_GiveInventory("health",1)
TNT1 A 0 A_TakeInventory("MedikitSW",1)
TNT1 A 0 A_TakeInventory("MedikitSWAmmo",1)
TNT1 A 0 A_jumpifinventory("health",100,"Spawn")
Goto Use
}
}
MedikitSWAmmo(патроны для запоминания)
Скрытый текст:
ACTOR MedikitSWAmmo : Ammo
{
Inventory.MaxAmount 100
}
Ещё раз, патроны нужны для того, чтобы игра запомнила сколько единиц у аптечки осталось.
АЦС скрипты, которые я пробовал использовать:
1
Скрытый текст:
script 288 ENTER
{
GiveInventory("MedikitSW", CheckInventory("MedikitSWAmmo"));
if (CheckInventory("MedikitSWAmmo") == 100)
{
GiveInventory("MedikitSW", 100);
}
2 по принципу отнималки.
Скрытый текст:
script 288 ENTER
{
int Medikit1 = CheckInventory("MedikitSWAmmo");
if (Medikit1 > 0 && Medikit1 < 100)
{
int Medikit2 = 100 - Medikit1;
GiveInventory ("MedikitSW", 100);
TakeInventory("MedikitSW", Medikit2);
}
else
if (CheckInventory("MedikitSWAmmo") == 100)
{
GiveInventory("MedikitSW", 101);
}
}
3
Скрытый текст:
script 288 ENTER
{
Medikit = CheckInventory("MedikitSWAmmo");
GiveInventory("MedikitSW", Medikit);
}
Везде пробовал использовать глобальные переменные. Везде проверял ИМЕННО ПАТРОНЫ принтом, с патронами всё нормально и читаются как надо.
Щас проверил - баги остаются одни и те же везде, буть то с 1 и 3 скриптом или 2.
А именно баги - Если я на уровне поднимаю аптечку и не использую ни разу, но при этом перетаскиваю её на следующий уровень(т.е. у неё на максимуме 100, как и у патронов), то к кастомной инвентории ни чё не присваивается(т.е. игра обычную инвенторию сбрасывает на 1, когда как у патронов в то же время так и остаётся 100).
Второй баг - если я на уровне поднял аптечку, заюзал её, но при этом там осталось допустим 70 единиц(и в кастомной инвентории и в патронах), то при переходе на следующий уровень там так и остаётся 70 единиц, но поднять другую такую же аптечку я уже не могу, правда это до тех пор пока я не использую старую, которую в игре выдал скрипт.
Вопрос - как исправить подобные баги.
Nil :
Откуда мне знать, что у тебя там в декорейте? Почему из тебя надо сведенья буквально выдавливать?
Для чегож тогда эта тема то нужна в таком случае? Да это было трудно написать в коментах, что нужно больше информации, очень трудно.
HellDoomer 666, Возможно, если отобрать у уменьшенного персонажа оружие. Подумай сам, как выглядят уменьшенные пульки? А из маленького рокет ланчера будут вылезать здоровенные рокеты? Всё правильно игра делает
Я пробовал создать уменьшитель без оружия - тогда всё нормально идёт. С виду если игрок переключится скажем на шотган - по ходу у него будет маленький шотган, а стреляет походу как большой.
Чтоли совсем не прописывать маленькому игроку оружие?
Blender. Кто-то умеет с ним работать? Мне нужна помощь.
Мне надо пришпандерить на спину монстра шипы.
Как это сделать?
Я не хочу изменять геометрию спины. Но при этом шипы должны двигаться вместе с руками-ногами, то есть они не должны деформироваться, но должны двигаться вслед за костями. Это вообще реально?
Взаимоисключающие параграфы конечно, но на самом деле нужно просто добавить эти шипы в ту же вертексгруппу, в которой находятся вертексы спины ( это для случая, когда в skin модификаторе указаны вертексгруппы ). Если там вертексгруппы не используются, а используются envelope, то вообще по идее всё должно произойти само.