[Скрипты] Карты с движущимися/разрушаемыми объектами в WF - Форум
W4Tweaks
Меню сайта
Последние файлы
Последние темы


Вход



Мини-чат
 
500

Статистика
Онлайн:

Сегодня заходили: KaMiKaZe, 4erveR, agent007


Друзья сайта

Если вы хотите увидеть в этом спиcке свой сайт загляните сюда

Наш баннер:



· Регистрация · Вход
[ Новые сообщения · Участники · Подписки · Поиск · RSS ]
Страница 1 из 11
Форум » Worms Forts: Under Siege » Уроки и Вопросы по Моддингу Worms Forts » [Скрипты] Карты с движущимися/разрушаемыми объектами в WF (мой скрипт + идеи)
[Скрипты] Карты с движущимися/разрушаемыми объектами в WF
4erveR
Дата: ВС, 13.12.2015, 12:53:12 | Сообщение # 1
4erveR
Неадекват
Группа: Модераторы
Сообщений: 1422
Репутация: 75
Статус: Offline
Написал скрипт на движущиеся объекты!
Скачать
Исходник

С помощью летающей платформы в виде стрелки можно перемещаться между двумя большими островами. Для ее активации надо взять ящик в виде кружащихся звезд. Перемещаясь на платформе, необходимо постоянно ползти или прыгать - т.к. червь не "приклеивается" к ней. И пауза не останавливает движение! Подробнее на видео.

Также небольшие технические детали:
На карте объект graphs\scenery\holygrail.xom заменил на graphs\scenery\bouncyarrow.xom. У него изменил размер и поворот. Повернул не идеально (не параллельно воде), но вроде сойдет. Направление стрелки постоянно, т.к. я не нашел как в скрипте менять поворот.






твеак умер, а я еще нет
 
4erveR
Дата: ВС, 13.12.2015, 14:43:49 | Сообщение # 2
4erveR
Неадекват
Группа: Модераторы
Сообщений: 1422
Репутация: 75
Статус: Offline
немного открытой инфы про детейлы:

- список используемых на карте детейлов не поддается изменению (нельзя добавить/удалить элемент)
- можно изменить параметры элемента ("путь", имя для скриптов, позиция, ориентация, масштаб)
- список детейлов карты поддается импорту и экспорту
- "путь" указывает непонятно куда, выглядит по образцу graphs\scenery\*.xom (таких файлов в игре нет)
на скрине импортировал список детейлов из me3.xom (там их вроде больше всего) в t3.xom:


- модели детейлов хранятся в bundles, для каждой карты там свой файл. как бандл связывается с картой - не понял, но явно не через скрипт (мб через имя файла или какую-то инфу в файле карты).
- в бандле каждой модели присвоено имя по типу того, что в "пути", но "папки" с большой буквы и слэш прямой (Graphs/Scenery/*.xom)
- свои модели тоже не добавить, только заменить


вряд ли кто это сходу поймет, но мб пригодится

алсо детейлы можно приводить в движение через скрипты (скорость тоже можно задавать). интересно было бы потестить осязаемые (collidable) движимые объекты.


твеак умер, а я еще нет
 
4erveR
Дата: ВС, 13.12.2015, 15:21:13 | Сообщение # 3
4erveR
Неадекват
Группа: Модераторы
Сообщений: 1422
Репутация: 75
Статус: Offline
Цитата 4erveR ()
интересно было бы потестить осязаемые (collidable) движимые объекты.

таки потестил - червь не "приклеивается" к ним, а наоборот, объекты выскальзывают из-под червя. мб у кого-то есть идеи режима на основе этой особенности?

апд. придумал: можно сделать карту с несколькими островами (или заюзать существующую), где между ними будут летать объекты (н-р блоки), с помощью которых можно перемещаться на др. остров.

ну или миссия, где по параллельным траекториям циклически движутся объекты, чем дальше от начала - тем больше скорость, а червю надо ползая по ним дойти до конца. объяснил как мог.


твеак умер, а я еще нет
 
4erveR
Дата: ПН, 14.12.2015, 06:56:31 | Сообщение # 4
4erveR
Неадекват
Группа: Модераторы
Сообщений: 1422
Репутация: 75
Статус: Offline
пробовал заменять details на другие модели - не сработало:
3ds (причем экспортированные в самом xv) - не может прочитать
xom3d - разная структура и не импортирует
xom ветви - заменилось, но игра вылетела

также пытался прописать у описанного в xom карты детейла "путь" к модели блока - тоже вылетело
апд. брал также "пути" из бандла карты - часть работает, часть вылетает


твеак умер, а я еще нет
 
firsacho
Дата: ПН, 14.12.2015, 19:53:56 | Сообщение # 5
firsacho
ICQ = 453-163-541
Группа: Админы
Сообщений: 3636
Репутация: 71
Статус: Offline
Я в ВФ абсолютно не разбираюсь, так что увы советов дать не могу. Но молодцом!)




Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005)
Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)

www.w4mod.tk - моя модификация для worms4

www.fir-st.narod.ru - моя домашняя творческая страничка

www.botarena.by.ru - мой сайт об игре robot arena 2 (битвы роботов)
 
4erveR
Дата: ВС, 20.12.2015, 11:45:07 | Сообщение # 6
4erveR
Неадекват
Группа: Модераторы
Сообщений: 1422
Репутация: 75
Статус: Offline
Написал скрипт на движущиеся объекты! Подробнее в шапке, а здесь будет исходник:
Код
--***********************************************************
--                Moving objects test.
--***********************************************************

function InitialiseLevel()
    LoadLevel("landscapes/MP/ScriptPack/M4.xom",true)
    TriggerCrateCollected = {false, false} --подобран ли ящик-триггер
    PlatformPoints = {"buildHere0028", "buildHere0040"} --позиции платформы
end

function MakeTriggerCrate(N) --создание ящика-триггера
    crate = CreateCrate()
    crate.Contents = kWF_TRIGGER_CRATE
    crate.NumContents = 1
    crate.TeamDestructible = -1
    crate.WormCollectable = -1
    crate.TeamCollectable = -1
    crate.GroundSnap = false
    crate.FixedPosition = true
    crate.UXB = false
    crate.Destructible = false
    crate.Pushable = false
    crate.CollectableByPayload = false
    crate.Collectable = true
    crate.Model = "Crate.Critical"
    crate.SpinBaby = true
    crate.ScaleFactor = 0.5
    crate.CrateId = N --+1000
    SpawnCrate( crate.Index, PlatformPoints[N] )
end

function HideWormsNow()
    ObjData = GetDetailObjectData("holygrail") --настройка параметров объекта
    ObjData.IsVisible = true
    ObjData.IsCollidable = true
    ObjData.CanBeDamaged = false
    ObjData.CanBeDestroyed = false
    ObjData.DisappearsWhenDestroyed = true
    ObjData.TimerEventsAreRepeating = false
    ObjData.MovementSpeed = 1.5
    ObjData.TimeToReachMovementSpeed = 3.0
    ObjData.MaxHealth = 100.0
    ObjData.CurrentHealth = 100.0
    WarpDetailObjectToPoint("holygrail", PlatformPoints[1]) --мгновенное перемещение на стартовую позицию
    local CrateN = 1 --создание ящиков-триггеров
    while CrateN <= 2 do
  MakeTriggerCrate(CrateN)
    CrateN = CrateN + 1
    end
end

function CrateCollected(CrateIndex,WormIndex)
    crate = GetCrateData(CrateIndex)
    if crate.Contents == kWF_TRIGGER_CRATE then --проверка на ящик-триггер
  TriggerCrateCollected[crate.CrateId] = true
  WarpDetailObjectToPoint("holygrail", PlatformPoints[crate.CrateId]) --мгновенное перемещение на позицию рядом с ящиком
  if crate.CrateId == 1 then --плавное перемещение на другую позицию
   ObjData.TimeToReachMovementSpeed = 3.0
   MoveDetailObjectToPoint("holygrail", PlatformPoints[2])
  elseif crate.CrateId == 2 then
   ObjData.TimeToReachMovementSpeed = 5.0
   MoveDetailObjectToPoint("holygrail", PlatformPoints[1])
  end
    end
    collectgarbage()
end

function TurnEnded()
    local CrateN = 1 --восстановление взятых ящиков
    while CrateN <= 2 do
  if TriggerCrateCollected[CrateN] then
   MakeTriggerCrate(CrateN)
   TriggerCrateCollected[CrateN] = false
  end
    CrateN = CrateN + 1
    end
end


твеак умер, а я еще нет
 
firsacho
Дата: ВС, 20.12.2015, 12:44:07 | Сообщение # 7
firsacho
ICQ = 453-163-541
Группа: Админы
Сообщений: 3636
Репутация: 71
Статус: Offline
Интересно) а можно объект по вейпоинтам пускать)? и спаунить и уничтожать)? представь можно сделать не как платформу, тем более червю прыгать приходится, а как движимая преграда. Можно например создать поток быстро летящих пуль?




Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005)
Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)

www.w4mod.tk - моя модификация для worms4

www.fir-st.narod.ru - моя домашняя творческая страничка

www.botarena.by.ru - мой сайт об игре robot arena 2 (битвы роботов)
 
4erveR
Дата: ВС, 20.12.2015, 13:01:30 | Сообщение # 8
4erveR
Неадекват
Группа: Модераторы
Сообщений: 1422
Репутация: 75
Статус: Offline
Цитата firsacho ()
спаунить и уничтожать

не совсем так - можно скрывать (делать невидимым и неосязаемым), ну и обратное

Цитата firsacho ()
а можно объект по вейпоинтам пускать

в смысле по пути состоящему из точек? сложновато будет, вроде не видел функции, обрабатывающей событие конца движения. отследить состояние можно только(?) через переменную:
Код
moving = IsDetailObjectMoving("Sheep001")

из обработчиков в examples видел только такие:
Код
function DetailObjectCollisionWithWeapon(ObjectName)
function DetailObjectCollisionWithWorm(ObjectName, WormIndex)
function DetailObjectDamaged(ObjectName, AssailantTaskId, DamageAmount)

upd. придумал решение - как-то рассчитать время движения и использовать несколько SetDetailObjectTimerEvent - для каждого участка.

Цитата firsacho ()
создать поток быстро летящих пуль

в теории можно, как-то так:
Код
ObjData = GetDetailObjectData("bullet001")
ObjData.IsVisible = true
ObjData.IsCollidable = true
ObjData.TimerEventsAreRepeating = true
ObjData.MovementSpeed = 10.0 --число от балды
ObjData.TimeToReachMovementSpeed = 0.0
SetDetailObjectTimerEvent("bullet001", kEventMoveToPoint, 0, "wfRefPointSheepDip")

но если выполнить SetDetailObjectTimerEvent во время хода, игра вроде как вылетит. также как и спавн ящика. мб я накосячил во время теста этих функций, но маловероятно.


твеак умер, а я еще нет
 
firsacho
Дата: ВС, 20.12.2015, 23:24:31 | Сообщение # 9
firsacho
ICQ = 453-163-541
Группа: Админы
Сообщений: 3636
Репутация: 71
Статус: Offline
4erveR, вообще штука интересная и можно много штук классных сделал. Пусть для платформ движимых не очень подходит... но можно например двери разъезжающиеся делать, либо платформы быстро спаунить из воды подъемные... много что можно придумать)




Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005)
Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)

www.w4mod.tk - моя модификация для worms4

www.fir-st.narod.ru - моя домашняя творческая страничка

www.botarena.by.ru - мой сайт об игре robot arena 2 (битвы роботов)
 
Emishka_Roper
Дата: СР, 23.12.2015, 23:20:47 | Сообщение # 10
Emishka_Roper
Частый пользователь
Группа: Проверенные
Сообщений: 276
Репутация: 27
Статус: Offline
А на W4M такое уже было? Если нет, то легко ли будет сделать смотря на этот скрипт?

https://www.twitch.tv/imbassss
 
4erveR
Дата: СР, 23.12.2015, 23:22:32 | Сообщение # 11
4erveR
Неадекват
Группа: Модераторы
Сообщений: 1422
Репутация: 75
Статус: Offline
Emishka_Roper, там вроде как нет возможности перемещать детейлы

твеак умер, а я еще нет
 
Форум » Worms Forts: Under Siege » Уроки и Вопросы по Моддингу Worms Forts » [Скрипты] Карты с движущимися/разрушаемыми объектами в WF (мой скрипт + идеи)
Страница 1 из 11
Поиск:

Copyright W4Tweaks™ 2008-2016 Хостинг от uCoz