Для начала нужно создать скрипт для карты: 1. Качаем исходники скриптов и компилятор 2. Берем оттуда исходник скрипта любой карты (лучше мультиплеерной, Multi*.lua) 3. Прописываем путь к нашей карте в параметрах функции LoadLevel. Но помните: имя файла карты должно быть только из зарегистрированных игрой, иначе будет ошибка (подробнее)! На имена папок и скриптов это ограничение не распространяется. 4. Если в скрипте есть еще код кроме вызова LoadLevel внутри InitialiseLevel, удаляем его при отсутствии необходимости. 5. Сохраняем исходник с новым именем, компилим и кидаем lub в папку data/scripts
После создания скрипта нужно изменить файл local.xom, который находится по следующему пути:
Код
Worms Forts Under Siege\data\frontend\Local.xom
1. В XomView 2.9+ выбираем WF режим и открываем файл. 2. Открываем раздел ContainerResources 3. Выбираем любой пункт из FE.Level.*, где название соответствует нужному вам типу (н-р FE.Level.Multi.* для мультиплеерных карт) 4. ПКМ, Export .xom, сохраняем файл 5. ПКМ, Insert Cntr, выбираем тот файл 6. Выбираем появившуюся копию
7. Вписываем имя скрипта (ScriptName) 8. Меняем картинку (Image), название (LevelName) и порядковый номер (LevelNumber) 9. Сохраняем результаты (Save Xom).
Карта для WF состоит из трех основных частей: 1. 3DМодель в формате XOM. (визуализация) 2. XFortsExportedData - контейнер в котором сохранены: - Epochs (Эпоха) - тема музыки и заданий
Код
0-Medieval 1-Oriental 2-Egypt 3-Greek
- Sky (Небо) - одно из 20 небосводов
Код
0-Medieval(Day) 1-Medieval(Evening) 2-Medieval(Night) 3-Greek(Evening) 4-Greek(Day) 5-Greek(Night) 6-Oriental(Day) 7-Oriental(Evening) 8-Oriental(Night) 9-Egypt(Day) 10-Egypt(Evening) 11-Egypt(Night) 12-Coliseum of Doom Sky (day) 13-Unused Red Sky,Water Sky (evening) 14-Mordred And Morgana (Hell) 15-A Quest (Day) 16-Pahraoh enough! Sky (day) 17-The Kingdom is Born (Night) 18-Tower of Power Sky (evening) 19-Chess Mate Sky (evening)
- wfRef (управляющие спауны) - точки для позициирования червей, ящиков и эффектов. - buildHere (Позиция зданий) - состоит из некоторых параметров:
- pSphere (сферический объект взаимодействия) - pCube (кубический объект взаимодействия) - wfEffect (сами эффекты)
3. Коллизионная модель - модель поверхности в игре, т.е. все по чем червяки могут ползать и врезаться, не падая. 4. Анимация, запускаемая скриптами.
Вот краткий обзор того, что из себя представляет карта.
А теперь о некоторых нюансах: 1. Чтобы создать пирамиду (начальное здание), нужно присвоить объекту 14 тип (Stronghold) и номер одной из 4-х команд. На карте к примеру 4 таких пирамиды с типами команд: 0,1,2,3. 2. Фанарем можно соединять здания, но тут есть некоторые особенности: - если второй в цепочке фанарь находится на неровной или не существующей поверхности, то работают лишь крайние 1-й и 3-й. - если фанаря два, но один стоит выше ограниченной высоты, то с верхнего можно будет включить нижний, но нельзя с нижнего верхний - если цепочка стоит на ровной местности, все фанари образуют одну цепь и работают лишь крайние. 3. Нейтральные здания. Если создать здание и выбрать номер команды - 4, то здание не будет никому принадлежать, и каждый сможет им воспользоваться.
P.S. В общем все, если чего узнаем нового, отпишусь.
Как изменить карту уровня: 1. Открываешь старый уровень в XomView удаляешь ненужные xom ветви, а в нужных заменяешь модель XShape через Import 3DS. 2. Потом делаешь 3DS коллизионную модель (поверхностную) в любом 3D редакторе, и так же импортируешь в XCollisionGeometry через Import 3DS. 3. Ну и расставляешь здания, через WF Build режим. (важно чтобы было 4 пирамиды с разными индексами). 4. Сохраняешь карту в папку MP c теми же именами.
Размер коллизионной модели должен быть в 1% от реальной, т.е. в сто раз меньше, уменьшенный относительно центра координат
Удалять ветви стоит с осторожностью, т.к. XomView еще не совершенен, при удалении делает ошибки, оставляя некоторые байты, приходится вручную фиксить XGroup.
ЦитатаAlexBond
Чтобы делать свою карту, заменяй работающую по частям, я так чтобы найти ошибку в моей карте, 57 раз тестировал добавляя каждый кусочек в карту и запуская игру... Так что это не простая задача, и только упорство тебе помогут.
Q: Как импортировать изображение в игру? A: С помощью XomView - надо найти в структуре xom-файла пункт XImage, затем нажать Import Image и выбрать импортируемое изображение (Export Image - экспортировать изображение из xom'а).
Q: В каком формате надо брать изображение? A: TGA
Q: В каком xom-файле хранятся элементы интерфейса меню и HUD'а? A: Меню - data\bundles\bundle03, 04, 173, 174; HUD - bundle05 + 06, 07, 09, 10 (специфические элементы эпох)
Q: Как импортировать изображение с альфа-каналом (прозрачностью)? A: Пересохранить файл ("Сохранить как") через Corel PaintShop Pro (X7 portable) или Photo-Paint (X6 portable) как 32-битный несжатый TGA.
То черви получат шляпы, каждый со своим индексом, а последний червь получит имя WormName.
Вот сам скрипт.
Код
function splithat(name) local result = {"name","0","0","0","0"} local delimiter = "," local from = 1 local ind = 1 local delim_from, delim_to = string.find( name, delimiter, from ) if delim_from ~= nil then while delim_from do result[ind] = string.sub( name, from , delim_from-1 ) from = delim_to + 1 ind = ind + 1 delim_from, delim_to = string.find( name, delimiter, from ) end result[ind] = string.sub( name, from ) end return result end
function SetHat(PlayerIndex,hatindex,index) WFHats = { "Hat.Medieval1","Hat.Medieval2","Hat.Medieval3","Hat.Medieval4", "Hat.Egyptian1","Hat.Egyptian2","Hat.Egyptian3","Hat.Egyptian4", "Hat.Roman1","Hat.Roman2","Hat.Roman3","Hat.Roman4", "Hat.Oriental1","Hat.Oriental2","Hat.Oriental3","Hat.Oriental4", "Hat.Witch","Hat.Wizard","Hat.Guinevere","Hat.Helen" } local Worm = GetWormData(PlayerIndex,index) Worm.HatOverride = WFHats[tonumber(hatindex)+1] end
function SetDifficulty()
local Worm local hats local indexplayer = 0 local player = GetPlayerData(indexplayer) while player.PlayerIndex ~= -1 do Worm = GetWormData(player.PlayerIndex,3) if string.find(Worm.Name,",") ~= nil then hats = splithat(Worm.Name) Worm.Name = hats[1] SetHat(player.PlayerIndex,hats[2],0) SetHat(player.PlayerIndex,hats[3],1) SetHat(player.PlayerIndex,hats[4],2) SetHat(player.PlayerIndex,hats[5],3) end indexplayer = indexplayer+1 player = GetPlayerData(indexplayer) end end
LoadLevel вызывается в начале скрипта, она дает игре путь к файлу с картой. Опытным путем установлено, что имя файла должно быть только из зарегистрированных игрой, иначе будет ошибка!!!
Пример вызова функции
Код
function InitialiseLevel() LoadLevel("landscapes/MP/DM03.xom",true) end
ivan210303mitenkov, данный форум о WF, а графика туда импортируется через XomView. Из-за особенностей формата xom 32-битные картинки (с альфа-каналом/прозрачностью) импортируются только будучи пересохраненными через софт от Corel.
Рассказываем об интересных находках из вашего игрового опыта.
Перенесено с wormsforts.ucoz.ru:
ЦитатаTekilla
Заметил интересную вещь. Однажды в своей безумной манере форэвэр-элоун-мультиплеера набрал фортификациями целых 9 звёзд, тогда как у "противника" было всего 3 - и меня внезапно объявили победителем через несколько ходов, тогда как Чуда построено не было.
ЦитатаAlexBond
Так и есть, 9 звезд дают автоматическую победу, еще в игре есть ограничение на количество зданий. Максимально на карте может быть 60-64 здания, если будет больше игра рушется.
Еще один глюк с лазером, если им сразу прицелиться не двигаясь, то он бьет через стены, таким образом можно достать любого противника, но стоит сдвинуться и он будет опять врезаться в стену...
ЦитатаBinkac
Осторожно, много Кэпа.
Обожаю Носорога... И с червей, и с построек он может выбить 600+ HP (если не ошиаюсь, то одно прикосновение сшибает с червя 120 HP, но практически его не толкает), что очень пригождается на последней миссии и вообще тогда, когда срочно нужно разломать какую-либо крепость, не говоря уже о мелких башнях.
"Правило Крыши": Если у здания будет разрушена крыша, то с него нельзя будет стрелять, даже если само здание ещё живое и шевелится. Очень помогает если надо, например, срочно обезвредить вражескую Цитадель - можно просто уронить прямо на середину крыши Бегемота. Butthurt случается даже у ИИ.
ИИ (по крайней мере "самые умные", то есть с мозгом 5-го уровня) редко заботятся о своих червях, хоть и догадываются снимать их с крыш. Пока у ИИ не останется либо один червяк, либо два полудохлых, он даже не попытаеся вернуть к жизни своих бойцов (с помощью Лазарета).
Даже если сбросить одного червяка ИИ куда-нибудь подальше (например на "нижний слой" на карте "Синий дракон, туда даже потоп не достаёт"), он все равно сможет посторить какую-нибудь плюшку для тиммейтов, или даже починить близлежащее здание, а если позволяет моск, то и добить из базуки вашу полуживую башню на ключевой точке... Или даже воскресить остальных бойцов, что хорошим никогда не заканчивается.
Если поставить не одну лабараторию, а несколько (3 например), то во сколько увеличится урон от моего оружия? В 4 раза или 8? Будет ли результат от ящика "Удвоенный урон" при вышеописанных условиях?
Суммируется ли результат от всех ящиков "Удвоенный урон", взятых за один ход?
Что потенциально сильнее из арсенала Цитадели: Требюше (катапульта с лосем), Ракетная установка (такой большой "музыкальный" инструмент) или Стая обезьян?
У меня одного вылетает игра при попытке поставить более двух Военных заводов на карту в разных командах?
Работает ли нейтральный Военный завод?
Можно ли уничтожить Оплот с одного выстрела базуки, если почти вся карта заставлена Лабораториями?
Есть ли логика у Троянского ослика? Или он взрывается совсем случайно?
Можно ли уничтожить Троянского ослика? Есть ли смысл забиаться ему на голову?
Есть ли какой-либо способ заставить прекратить противника постоянно использовать Анаибоз?
Реально ли прекратить работу Военного завода/Лаборатории/Лазарета, если уничтожить их на 99%? Или тут снова действует "правило Крыши"?
Цитата4erver
Заметил странный баг - при выборе стационарного оружия бочки поблизости не рендерятся
Сюда выкладываем свои интересные находки в файлах игры, к примеру остатки чего-то нереализованного/удалённого.
Перенесено с wormsforts.ucoz.ru:
ЦитатаTekilla
Я на знаю, делал ли кто-нибудь такое до меня, но всегда жутко бесила путаница в иконках зданий. Вы, я думаю, замечали (особенно те, кто рассматривал графические файлы), что у Чуда в игре иконка Оплота (или как там ещё переводят: "твердыня", "крепость"?), а у Оплота - какая-то неведомая амфора. Я взял и поменял - поставил иконки на верные места. Дело пяти минут, но если это интересно и кому-то переставлять вручную лень, могу поделиться файлами. Чуть позже скриншоты пришлю.
Интересно, что есть парочка неиспользованных иконок, среди них есть и средневековый паб, видимо единственное "Team17 Lost&Found" в игре, которое АлексБонд всё же представил в виде крепости. Что из себя должно было представлять всё остальное - загадка.
P.S. прошу прощения, если всё, что я сказал - ни для кого не новость и давно уже всё везде сделали.
Цитата4erver
Tekilla, другие - не знаю, но я даже не обращал внимания.. заскринь, интересно всё ж.
ЦитатаAlexBond
Вообще как я понял team17 планировала делать ферму, мастерскую осадных орудий, гильдию массонов и рынок.
Я так понимаю чтобы прокачивать каждый вид орудий в отдельности, например ферма - животное оружие(носорог, бегемот и т.п.) Но вот Гильдия массонов... понятия не имею для чего =)
Вот список всех строений (жирным, то что есть в игре): "Tower" "Keep" "Castle" "Citadel" "Wall" "Hospital" "Refinery" "ScienceLab" "Wonder" "Farm" "SiegeWorkshop" "Storehouse" "MasonsGuild" "Market" "Stronghold"
Гильдия масонов - это каменщики... Возможно с этим зданием можно было возрождать порушенные здания...
ЦитатаTekilla
Масоны - "вольные каменщики", а masonry - каменная кладка. А, возможно, оно влияло бы на Божественное Оружие, хотя маловероятно - всё же в таком случае больше подошли бы соборы\храмы\святилища. А иконка у MasonsGuild, к слову, с масонской символикой!
Фото (средневековье, как пример), можете сравнить с стандартными:
Tutorial how get Map from Game to WF: 1. Get 3DScreeens from your game level (for get all geometry of map) 2. Rotate and join all screen to One Map 3. Delete same patrs and not used details 4. Attach all objects to one Mesh. 5. Resize map to Size WF (Export object from WF map) 6. Make copy for collision geometry 7. Resize collision geometry to size of WF. 8. Join same points and make low Geometry for collision. 9. Set defauld texture and export Collision map to 3DS. 10. Main map. Dettach objects to MatID (unique textures) 11. Convert all texture to TGA. 12. Remap textures to TGA. 13. Save Object with unique texture to 3ds. 14. Import to XShape 3ds Object. 15. Make group from XShapes 16. Replace Geometry WF map to your Group 17. Import XCollisionGeometry from 3ds.
Переношу из темы "Идеи для карт" (by AlexBond) с wormsforts.ucoz.ru:
ЦитатаAlexBond ()
Несколько идей для карт:
3D PinBall
Mahjong
Food Table
Poker/Casino Table
Предлагаем свои идеи для карт!!!
Цитатаagent007 ()
можно город сделать(я уже предлагал) на дорогах можно строить башни.(если идея норм, могу рассказать больше)
ЦитатаTekilla ()
Есть материал для забавной карты Петропавловской крепости на Заячем острове в Санкт-Петербурге. Из игры Street Racer Europe. Стены крепости, петропавловский собор, сам остров, могу деревьев добавить. Модели средненькие, текстуры мягко говоря так себе, но для карты WF, я думаю, пойдёт. Места для строительства достаточно. Сухой материал выглядит так, но модернизировать до человеческого (червячного?) состояния можно всегда:
Также можно "собрать" стрелку Васильевского острова.
Цитата4erver ()
Можно делать карты с нестандартным геймплеем, например как [Buf]Cross и другие карты режима буйвола в Worms 4 New Edition. Вместо быка, ес-но, юзать местное оружие, н-р канарейку. У самого была идея перенести всё это в WF, но лень...
Переношу из темы "Map Ideas for WF" (by Woitek) с wormsforts.ucoz.ru:
ЦитатаWoitek ()
I don't want make new models for this =). Know game with moment that can use as map? Thinking about Gears of War PC and some PvP maps.
ЦитатаВормус ()
Очень хотелось бы увидеть карту какого-нибудь заброшенного замка, или ещё что-то такое.
Или например - "достроить" храм на карте Вопрос Веры
ЦитатаWoitek ()
I crate today one new map. Not give name for this map but is created from worms3D weapons. Testing now spawns. Maybe tommorow be avaible for gameplay
ЦитатаВормус ()
And where new map? Or she is not ready?
ЦитатаWoitek ()
It's beta. Ice cube not have alpha like in video. Links not perfect mean. Very easy win a battle. Also want add animation for mine for dude. And oddments like name and image
Now trying rip gears of war maps... Game is on unreal engine but UEviewer can export only simple parts... Need 3D ripper it but have some problems.. On Win 7 64 3d ripper not work =(. And have problem run game on virtual machine win xp... Need test
ЦитатаВормус ()
А можно карту какого-нибудь замка в Средневековом или Египетском стиле?
ЦитатаWoitek ()
It's very simple. You can make map from any object you want. Example you can put half medieval style of map and half egyptian. Only limit in WF maps is: Max 64 builds spawned on map and type of epoch. You can't have example medieval builds in egypt epoch.
Переношу из темы "Идеи для модов" (by 4erver) с wormsforts.ucoz.ru:
ЦитатаTekilla ()
Прежде чем я выскажу одну идею, у которой хромает вопрос реализуемости в принципе, у меня будет такой вопрос: какие перспективы насчёт создания собственного, оригинального оружия? И вообще введения "нового контента" (без замены) в игру (карты, как видно, получилось)?
Цитата4erver ()
Оружие изменять можно (модели, твики и анимации поддаются редактированию), из нового контента - пока только карты вроде...
ЦитатаAlexBond ()
Во первых свободных иконок для оружия нет, это раз. Во вторых создать новое оружие в фортс... это АРХИСЛОЖНО в третьих. Лучше уже подумать о таких идеях как прокачка оружия.