Hadouken / Dragon Ball / Шар Дракона
|
|
Сообщений: 317
|
Опубликовано: 19.11.2020, 22:43:19
Нужна помощь опытных модеров. У меня есть небольшая мотивация в создании мода на Шар Дракона из WA для W4M. Нужно оружие которое выпускает прямолетящий снаряд, который исчезает при соприкосновении или через короткое время. Отталкивание будет больше по горизонтали чем по вертикали (в принципе примерно как у апперкота, только меньше отброс по вертикали) Оружие можно активировать находясь в прыжке (если возможно сделать и такое) В анимациях особо не нуждаюсь, можно просто идл позу червя и чтоб из него вылетал снаряд, без разницы вообще. Я не уверен какое я хочу заменить оружие и я вспомнил, что раньше войтек делал оружия не увеличивая/уменьшая кол-ва иконок оружий. То есть он выбирал оружия в какой-то последовательности, в итоге после чего выбиралось новое оружие. Хотелось бы сделать так, но не знаю как)
|
|
|
|
Сообщений: 3813
|
Опубликовано: 20.11.2020, 10:33:56
Опишу в общих чертах, без конкретики. Думаю все найдешь. По сути то, что ты описываешь делается на базе обычной гранаты. Так что сперва тебе надо разобраться как это работает. 1. Прямолетящий снаряд - в твиках есть настройка, отключающая влияние гравитации (кстати влияние ветра вероятно также захочешь отрубить);
2. Исчезание делается через детонацию снаряда, там есть вариант детонация по времени, детонация по столкновению с землей / объектами / червем. Соответственно убираешь визуальные и звуковые эффекты взрыва, урон земле и снаряд просто "исчезнет";
3. Отталкивание по горизонтали сделать довольно сложно... там есть настройка импульса в пространстве, но на сколько помню, относительно центра снаряда а не в мировом пространстве. По умолчанию червь полетит строго в том направлении, в каком снаряд его толкает, для фаербола это скорее будет смотреться даже правильнее;
4. Вот с активацией в прыжке - сложнее, если ты про использование только в прыжке. Там есть строка, включающая возможность использования в воздухе, но отключить использование на земле нельзя;
5. Одна из самых сложных задач - чтоб это визуально смотрелось, как фаербол - тебе надо создавать партикл эффект (лезь в PartTwk) и подключать его в WeapTwk, как трейл у модельки, а саму модельку делать нулевого размера (то есть невидимой). Настройка таких партикл эффектов сложна даже в полноценных 3д редакторах, а в твиках двойне;
6. Ну и твой вопрос про последовательность - это можно сделать только через lua скрипты. Вообще хороший тон менять оружие через скрипт, а не через твики напрямую, т.к. ты не меняешь исходные ресурсы, а делаешь надстройку скриптом, который можно включить в любой момент, хоть на лету. В твиках придется отредактировать только партикл эффекты, но там можно добавить свой, не меняя оригинальный + в WeapTwk прописать контейнер с названием оружия. Посмотри, как редактируется оружка в луа скриптах того же ренью. А дальше ты дополняешь скрипт своими условиями, при которой функция замены оружия включается. Единственный вопрос, как потом выключить твое оружие и вернуть обратно. Не думаю, что посреди боя можно заглянуть в исходные твики и заново их загрузить, скорее всего тебе перед заменой каждую характеристику исходного твика придется "запоминать".
Короче рекомендую начать с попытки добавить в луа свою функцию, которое меняет некоторые характеристики оружия по ее вызову, а потом начать дорабатывать, приводя к нужным тебе эффектам. По мере исполнения будут появляться вопросы - спрашивай, подскажу.
Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005) Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007) Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
mod.worms.pro - мод Worms Renewation для Worms4
|
|
|
|
Сообщений: 317
|
Опубликовано: 22.11.2020, 20:26:44
Я пошарился немного в луа, но не смог разобраться как им пользоваться и как активировать эти самые скрипты. Решил изменить газовую гранату на шар дракона. Пока что получилось сделать только вылетающий снаряд который при косании с червяком наносит <=30 урона. Нужно каким-то образом сделать фиксированный урон, но я не допёр как, видимо из-за того что это взрыв как у гранаты. Также снаряд летит в зависимости от ускорения червяка (при прыжке например, он будет лететь в сторону в какую ускорен червяк в момент броска). Не могу понять как изменить модельку оружия или вообще её убрать, при удалении из строк gascanister игра вылетает при выборе/броске оружия. Ещё мне интересно как можно сделать новый партикл, чтобы был синий огонь, куда его добавлять и где изменять, с внешним видом я ещё повожусь, чтобы выглядело лучше.
|
|
|
|
Сообщений: 3813
|
Опубликовано: 22.11.2020, 22:21:32
Давай по порядку. Ты грену делал через луа или через обычный твик?
Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005) Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007) Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
mod.worms.pro - мод Worms Renewation для Worms4
|
|
|
|
Сообщений: 317
|
Опубликовано: 22.11.2020, 22:32:20
firsacho, weaptwk / parttwk
|
|
|
|
Сообщений: 3813
|
Опубликовано: 23.11.2020, 06:52:38
Помочь тебе это на луа реализовать? Или хочешь на твиках делать дальше?
Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005) Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007) Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
mod.worms.pro - мод Worms Renewation для Worms4
|
|
|
|
Сообщений: 317
|
Опубликовано: 23.11.2020, 18:14:01
firsacho, блин ну было бы круто луа сделать, но я просто 0 в этом, а твики интуитивно понятны
|
|
|
|
Сообщений: 3813
|
Опубликовано: 23.11.2020, 22:52:48
Я могу помочь с луа, чтоб ты начал в этом разбираться. А так там просто берутся те же строки из твиков и прописываются в луа их настройка. Это не сложно.
Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005) Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007) Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
mod.worms.pro - мод Worms Renewation для Worms4
|
|
|
|
Сообщений: 317
|
Опубликовано: 24.11.2020, 03:52:32
Ну давай попробуем тогда. В принципе, как я понял из твиков, не очень сложно сделать основу для оружия. То что я записал на видео уже выглядит "неплохо", то есть с этим даже играть можно)
Я кстати ещё не понял на счёт того что ты написал то что можно сделать оружие другим, но нельзя вернуть его обратно. Можно же всё тоже самое сделать наоборот, нет?
|
|
|
|
Сообщений: 3813
|
Опубликовано: 24.11.2020, 09:38:39
Цитата Emishka_Roper ( ) Я кстати ещё не понял на счёт того что ты написал то что можно сделать оружие другим, но нельзя вернуть его обратно. Можно же всё тоже самое сделать наоборот, нет? ну в смысле нет готовой функции сделать как было. Но можно, к примеру, в своей замене оружия запоминать исходное значение каждого изменяемого параметра, а потом дописать функцию сброса, которая эти значения восстановит. Это если надо менять оружия "на лету". А так при загрузке уровня все сбрасывается.
Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005) Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007) Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
mod.worms.pro - мод Worms Renewation для Worms4
|
|
|
|
Сообщений: 3813
|
Опубликовано: 24.11.2020, 09:39:47
Смотри, первый момент - подключение скрипта. Это в файле Scripts.xml в папке Tweak. У каждой карты указано, какие скрипты к ней подключены Код <Level_ScriptName>stdvs,wormpot</Level_ScriptName>
Это значит, что вначале при загрузке карты загружается скрипт stdvs (стандартный скрипт командного десматча) и затем прогружает скрипт вормпота. На самом деле там еще грузится stdlib.lua - библиотека вспомогательных функций десматча (зашито в движок игры и скорее всего привязано к "level type" в Scripts.xml) и lib_help.lua (как то так называется - вспомогательная библиотека функций, где самый различный функционал игры).
Мы будем писать свою функцию, которая заменяет контейнер оружия. Функцию можно добавить в любой скрипт и вызвать из любого места (вроде как), например тот же lib_help дополнить и она там мешаться не будет стандартным скриптам, т.к. они ее не вызывают. Но мы ее вынесем в отдельный скрипт, что то типа твоей собственной библиотеки. Обзовем ее "emishkalib.lua": Код <Level_ScriptName>stdvs,wormpot,emishkalib</Level_ScriptName>
Создадим соответствующий пустой файл в папке Scripts. После этого карта с подключенным новым скриптом будет без проблем грузиться. Конечно придется прописывать скрипт к каждой карте, в которой он должен работать, при добавлении в lib_help или stdlib этого не потребовалось бы, за то получается большая гибкость.
Отмечу важный момент - в какой последовательности скрипты указаны к карте, в такой они и грузятся. Это позволяет при надобности выполнить один фокус - поставив свой скрипт после стандартного скрипта и копипастнув в него стандартную функцию, при загрузке функция из твоего скрипта "перекроет" стандартную, т.к. у нее то же имя. Таким образом можно "хакать" стандартные скрипты, не меняя сами исходные файлы игры.
В emishkalib.lua добавим свою функцию, назовем ее DragonBallLoad: Код function DragonBallLoad() local lock, weap = EditContainer("kWeaponGasCanister") -- скрипт оружия Dragon Ball by Emishka weap.Scale = 5 weap.IsAffectedByGravity = "false" CloseContainer(lock) end
Тут мы открыли контейнер "kWeaponGasCanister" (его можно найти в твиках оружия) и поменяли параметр размера модельки + отключили влияние гравитации. Эти параметры тоже из твика и называются там так же. Затем контейнер надо закрыть.
При запуске карты ничего не изменится, т.к. мы добавили новую функцию, но она нигде не используется. Ее надо включить. Сделаем вначале это довольно грубым способом - из исходного скрипта. Откроем stdvs.lua и вначале скрипта в стандартной функции Initialise(), которая запускается движком при старте уровня и отвечает за подготовку игрового режима к запуску, добавим вызов своей функции: Код -- standard VS game function Initialise() StartedSuddenDeath = false SetupScheme() DragonBallLoad()
Грузим уровень, если нигде не накосячили - все должно работать, а газовая граната должна изменить свои характеристики.
Более изящно выполнить подключение можно, скопировав функцию Initialise в свой скрипт и игра будет запускать ее не из stdvs, а уже из emishkalib, можно дополнять и изменять ее, как душе угодно без вреда для других карт.
Ну и функционал по изменению контейнера оружия может выполняться не только при инициализации, а в любой части игрового процесса, хоть посреди хода, функция Initalise в данном случае скорее пример и можно вклинить свою функцию в другом месте, может даже более подходящем.
Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005) Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007) Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
mod.worms.pro - мод Worms Renewation для Worms4
|
|
|
|
Сообщений: 317
|
Опубликовано: 24.11.2020, 19:47:27
Сделал всё как ты сказал, но дополнил функции оружия. Работает как и в твике. Проблема в том что теперь при запуске других карт (не привязанных скриптом emishkalib) происходит такой баг, что игра просто не начинается. Ещё пробовал сделать через вормпот это оружие, но там почему-то функции теряются, поэтому сделал как ты написал. Из проблем ещё остаётся то что в руке лежит граната, угол меняется в зависимости от акселерации червяка и то что урон <=30, но не =30.
Добавлено (24.11.2020, 21:28:35) --------------------------------------------- Код function DragonBallLoad() local lock, weap = EditContainer("kWeaponGasCanister") -- скрипт оружия Dragon Ball by Emishka weap.IsAimedWeapon = "false" weap.IsAffectedByGravity = "false" weap.IsPoweredWeapon = "false" weap.Scale = "0" weap.Radius = "1" weap.BasePower = "0.2" weap.MaxPower = "0.2" weap.MinAimAngle = "0" weap.MaxAimAngle = "0" weap.DetonatesOnLandImpact = "true" weap.DetonatesOnExpiry = "false" weap.DetonatesOnObjectImpact = "true" weap.DetonatesOnWormImpact = "true" weap.ImpulseMagnitude = "0.28" weap.WormDamageMagnitude = "30" weap.WormDamageRadius = "40" weap.ImpulseRadius = "60" weap.ImpulseOffset = "-30" weap.ArielFx = "WXP_FirePunchHoldFire" weap.DetonationFx = "WXP_Explosion_BananaBomblets" weap.ArmSfxLoop = "FirePunch" weap.LoopSfx = "FirePunch" weap.LifeTime = "2000" weap.HoldParticleFX = "WXP_FirePunchHold" weap.CanBeFiredWhenWormMoving = "true" weap.WXAnimDraw = "DrawFirepunch" weap.WXAnimAim = "HoldFirepunch" weap.WXAnimHolding = "HoldFirepunch" weap.WXAnimTaunt = "TauntFirepunch" CloseContainer(lock) end
|
|
|
|
Сообщений: 3813
|
Опубликовано: 25.11.2020, 07:15:10
С ошибкой скриптов на других уровнях - ты скорее всего по моему примеру вначале забил запуск функции в stdvs.lua, а потом скопировал функцию Initialise() в свой скрипт, а из stdvs не убрал. Если прописывать в stdvs вызов функции, разумеется необходимо свой скрипт к этой карте подключать. Ну либо саму твою функцию в stdvs переносить, иначе игра не сможет ее найти.
Цитата Emishka_Roper ( ) Из проблем ещё остаётся то что в руке лежит граната, угол меняется в зависимости от акселерации червяка и то что урон <=30, но не =30. по цифрам ты вроде все правильно сделал, чтоб и моделька не отображалась и угол фиксирован был. Попробуй кавычки убрать у цифр. Кавычки - для текстовых и булевых значений.
Чтобы убрать разброс урона можешь сделать WormDamageRadius меньше. Но размер коллизии оружия тогда уменьшится. Либо ты потом можешь этот урон прописать в PartTwk, когда будешь сам эффект фаирбола создавать. Из партиклов урон наносится фиксированно.
Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005) Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007) Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
mod.worms.pro - мод Worms Renewation для Worms4
|
|
|
|
Сообщений: 317
|
Опубликовано: 25.11.2020, 12:26:57
firsacho, Я пока в колледже, попробую сделать всё когда домой приду. Нашёл как делать урон от партиклов на форуме, попробую. Моделька не отображается во время полёта, а когда она в руке - отображается, в этом трабл.
Можешь рассказать как добавлять новый спрайт и вообще возможно ли это? Там например есть Sprite5, можно ли сделать новый спрайт в принципе и куда его добавлять чтобы игра понимала что он из себя представляет? Я пытался просто так добавить новый спрайт в parttwk, но у меня не выходило, игра просто вылетала, видимо где-то прописаны спрайты и какой файл к какому принадлежит, но вот интересно где. Хочу сделать сине-фиолетовый огонь, как в WA, но не хочу менять текстурку огня в целом.
|
|
|
|
Сообщений: 3813
|
Опубликовано: 25.11.2020, 15:57:42
Цитата Emishka_Roper ( ) Моделька не отображается во время полёта, а когда она в руке - отображается, в этом трабл. weap.WeaponGraphicsResourceID = "" попробуй
Цитата Emishka_Roper ( ) как добавлять новый спрайт и вообще возможно ли это Если речь добавления именно новой картинки, чтобы использовать в будущем в партикл эффектах в качестве спрайта - не знаю, не стояло такой задачи. В целом текущего набора спрайтов достаточно, чтобы сделать почти что угодно. Вероятно можно заменить какую то другую ненужную картинку в игре (например иконку карты памяти playstation), а потом ее указать в качестве спрайта, но не пробовал.
Можно добавить новый партикл эффект, изменив его параметры под себя, в т.ч. цветокоррекцию картинки спрайта. Вообще огонь в worms 4 сделан из спрайтов белых облаков, на сколько помню. Непосредственно спрайтов пламени и взрывов там нет.
Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005) Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007) Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
mod.worms.pro - мод Worms Renewation для Worms4
|
|
|
|