Результаты поиска
|
|
Сообщений: 1240
|
Опубликовано: 09.02.2008, 22:17:13
Щас расскажу.... дебилу)))
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1240
|
Опубликовано: 09.02.2008, 23:09:22
Итак, приступим! я конечно и сам не ас, но всё что знаю покажу. Открываем W3DMapEditor By AlexBond. Видим такое окно Разворачиваем его в полную ширину для удобства и жмём File->New map И теперь видим вот это: Щёлкнем правой мышкой по корневому объекту(root) в списке объектов. Увидим менюшку. Выберим в ней Add Poxel - добавить поксель. Поксель-это как пиксель в 2д изображении. То есть это маленький кирпичик-самое простое, что может быть. Из покселей делаются все карты. Итак мы добавили поксель. В списке объектов(он очень похож на проводник в виндовс) в корневом объекте появился поксель. Теперь щёлкнем по вкладке Режим редактирования(Edit mode). На ней несколько кнопок. Нажмите на редактирование покселя. Теперь в свойствах доступны свойства покселей. Это имя(Poxel name), размер (Poxel size) и текстура покселя(Poxel texture). Нажмите на плюсик рядом с размером покселя. Появятся размеры и текущая текстура, а также текстура. Зажмите стрелочку и тяните вверх или вниз. Размеры покселя будут меняться. Также поступите с текстурой и выберите текстуру. Нажмите применить(Apply) Всё мы сделали поксель. Теперь выберите основную правку(General edit). Станут доступными редактирование позиции(Position), поворота(Rotate), размера(Size), текстурных координат(Texture coordinates) и типа поверхности (Surface Type). Первые три изменяются анологично. Тип поверхности имеет цвет(Color), а также сглаживание и т.п. После выбора цвета, типов сглаживания и невидимости жмите применить(Apply). Готово. Поксели можно вкладывать друг в друга, Объединять в группы создав поксель-папку(Dummy poxel) в списке объектов. Этот тип покселей-контейнер для других. Так можно объединить поксели в группу, которая описывает башню. Поксели можно копировать. Для этого просто перетащите его в списке объектов в другой поксель. Можно копровать один поксель хоть 100 раз! При этом размер файла не будет сильно расти! Также поксели можно искривлять. Выберите режим првки высотной карты(HMap). Потом выберите свойство высотная карта в покселе (Height Map). Нажмите Загрузить высотную карту(Import HMap). Там выберите файл с картинкой и нажмите применить.
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1240
|
Опубликовано: 10.02.2008, 11:08:02
В игре Worms 4 mayhem используются скрипты Lua. Для каждой карты в игре задаётся набор lua-скриптов, которые загружаются при создании игры на этой карте. Рассмотрим описание одной из карт в файле Scripts.xml: Code <WXFE_LevelDetails id='Multi.ChuteToVictory-0'> <Frontend_Name>FETXT.Jur.Chute.MissionName</Frontend_Name> <Frontend_Briefing>FETXT.Jur.Chute.Brief</Frontend_Briefing> <Frontend_Image>ChuteToVictory.tga</Frontend_Image> <Level_ScriptName>stdvs,wormpot</Level_ScriptName> <Level_FileName>ChuteToVictory</Level_FileName> <Objectives></Objectives> <Level_Number>42</Level_Number> <Level_Type>0</Level_Type> <Lock>Lock.Map.ChuteToVictory</Lock> <Theme_Type>5</Theme_Type> <Preview_Type>0</Preview_Type> <BonusTime>600</BonusTime> </WXFE_LevelDetails> В поле <Level_ScriptName> описаны скрипты. Это скрипт stdvs, отвечающий за загрузку стандартной игры и скрипт wormpot, отвечающий за применение настроек вормпота(у меня почему-то это зовётся "горшок червей"). Сами lua-файлы находятся в папке /scripts/. При изменении этих файлов вы можете испортить свою игру, поэтому перед запуском сохраните эту папку! Вот содержимое файла stdvs.lua Code -- standard VS game
function Initialise() StartedSuddenDeath = false SetupScheme()
lib_SetupMultiplayerWormsAndTeams() SendMessage("WormManager.Reinitialise")
lib_SetupMinesAndOildrums() -- do this after worms are set up to get correct worm collision
local scheme = QueryContainer("GM.SchemeData") if scheme.RoundTime == 0 then StartSuddenDeath() -- do this after worms are set up to readjust health local GameOver = GetData("FCS.GameOver") -- do no further processing if sudden death drew the game if GameOver ~= 0 then return end end if scheme.MineFactoryOn == true then SendMessage("GameLogic.CreateRandMineFactory") end if scheme.TelepadsOn == true then SendMessage("GameLogic.PlaceTelepads") end SetData("Camera.StartOfTurnCamera","Default") SetWormpotModes()
WaitingForStartFirstTurn = false StartFirstTurn() -- Activity = GetData("ObjectCount.Active") -- if Activity == 0 then -- WaitingForStartFirstTurn = false -- StartFirstTurn() -- else -- WaitingForStartFirstTurn = true -- end end
function SetSpecialWeapon(TeamIndex, WeaponName) SetData("SpecialWeapon.TeamIndex", WormIndex) SetData("SpecialWeapon.Weapon", WeaponName) SendMessage("GameLogic.SetSpecialWeapon")
-- TODO -- uses GameLogicService to call inventory.SetWeaponCount(0, -1) end
function DoOncePerTurnFunctions() -- skip all this if the end of the deathmatch SendMessage("WormManager.GetActiveAlliances") AllianceCount = GetData("AllianceCount") if AllianceCount >1 then CheckSuddenDeath() SendMessage("GameLogic.DropRandomCrate") SendMessage("GameLogic.StartMineFactory") DoWormpotOncePerTurnFunctions() end end
function SetupScheme()
local scheme = QueryContainer("GM.SchemeData") if scheme.FallDamage == 0 then -- -- Don't override the wormpot setting -- local Wormpot = QueryContainer("WormPot") -- if Wormpot.FallingHurtsMore == false then -- SetData("Worm.FallDamageRatio", 0) -- end
SendMessage("GameLogic.SetNoFallDamage") end SetData("HUD.Clock.DisplayRoundTime", scheme.DisplayTime) SetData("Crate.HealthInCrates", scheme.HealthInCrates) SetData("DefaultRetreatTime", scheme.LandTime) SetData("Land.Indestructable", GetData("FE.Land.Ind")) SetData("Wind.Cap", scheme.WindMaxStrength)
SetupInventoriesAndDelays() SetupTeleportIn() SetData("HotSeatTime", scheme.HotSeat) SetData("TurnTime", scheme.TurnTime) SetData("RoundTime", scheme.RoundTime)
end
function SetupInventoriesAndDelays() local scheme = QueryContainer("GM.SchemeData")
lib_SetupDefaultInventoryAndDelays() local index for index = 0,3 do lib_SetupTeamWeaponDelays(index, "Inventory.WeaponDelays.Default") end
-- If this is the first round then no matter what the stockpiling options are -- of if "Stockpiling Off" then give every Alliance a copy of the Scheme inventory local RoundsCompleted = GetData("GameOver.RoundNumber") if RoundsCompleted == 0 or scheme.Stockpiling == 0 then CopyContainer("Inventory.Alliance.Default", "Inventory.Alliance00") CopyContainer("Inventory.Alliance.Default", "Inventory.Alliance01") CopyContainer("Inventory.Alliance.Default", "Inventory.Alliance02") CopyContainer("Inventory.Alliance.Default", "Inventory.Alliance03") -- "Stockpiling" this option gives the alliance the total of the default and the stockpile elseif scheme.Stockpiling == 1 then for i = 0,3 do InventoryName = lib_GetAllianceInventoryName(i) StockpileName = lib_GetStockpileInventoryName(i) CopyContainer("Inventory.Alliance.Default", InventoryName) SetData("GameLogic.AddInventory.Arg0", InventoryName) SetData("GameLogic.AddInventory.Arg1", StockpileName) SendMessage("GameLogic.AddInventory") end -- "Stockpiling Anti" (Stock continues to decrement throught all turns) elseif scheme.Stockpiling == 2 then CopyContainer("Inventory.Stockpile00", "Inventory.Alliance00") CopyContainer("Inventory.Stockpile01", "Inventory.Alliance01") CopyContainer("Inventory.Stockpile02", "Inventory.Alliance02") CopyContainer("Inventory.Stockpile03", "Inventory.Alliance03") end
-- Special weapons -- if option is enabled then the Alliance inventories are supplemented with -- the combined special weapons of all the teams GM = QueryContainer("GM.GameInitData") if scheme.Special == 1 then -- only add in the specials when we add the full inventories if RoundsCompleted == 0 or scheme.Stockpiling == 0 or scheme.Stockpiling == 1 then if GM.NumberOfTeams>=1 then IncrementAlliedInventory(GM.T1_AlliedGroup, GM.T1_SWeapon) end if GM.NumberOfTeams>=2 then IncrementAlliedInventory(GM.T2_AlliedGroup, GM.T2_SWeapon) end if GM.NumberOfTeams>=3 then IncrementAlliedInventory(GM.T3_AlliedGroup, GM.T3_SWeapon) end if GM.NumberOfTeams>=4 then IncrementAlliedInventory(GM.T4_AlliedGroup, GM.T4_SWeapon) end end end end
function IncrementAlliedInventory(AlliedGroup, Weapon) local InventoryName = lib_GetAllianceInventoryName(AlliedGroup) SetData("GameLogic.AddInventory.Arg0", InventoryName) SetData("GameLogic.AddInventory.Arg1", Weapon) SendMessage("GameLogic.IncrementInventory") end
function Stockpile() -- record the remaining stock for future rounds CopyContainer("Inventory.Alliance00", "Inventory.Stockpile00") CopyContainer("Inventory.Alliance01", "Inventory.Stockpile01") CopyContainer("Inventory.Alliance02", "Inventory.Stockpile02") CopyContainer("Inventory.Alliance03", "Inventory.Stockpile03") end
function RoundOver() Stockpile() end
function TurnStarted() local scheme = QueryContainer("GM.SchemeData") if scheme.WormSelect == 1 then SendMessage("WormSelect.OptionSelected") end TeleportIn() end
function SetupTeleportIn() -- Must do this BEFORE call to ReinitialiseWorms local scheme = QueryContainer("GM.SchemeData") local WormIndex = 0 local DataId = lib_GetWormContainerName(WormIndex) while DataId ~= "" do lock, worm = EditContainer(DataId) if scheme.TeleportIn == 1 then worm.TeleportIn = true else worm.TeleportIn = false end CloseContainer(lock) WormIndex = WormIndex + 1 DataId = lib_GetWormContainerName(WormIndex) end end
function TeleportIn() local CurrentWorm = GetData("ActiveWormIndex") if CurrentWorm ~= -1 then local DataId = lib_GetWormContainerName(CurrentWorm) local worm = QueryContainer(DataId) if worm.TeleportIn == true then SendMessage("WormManager.TeleportIn") end end end
function Timer_GameTimedOut() -- game over dealth with in CheckSuddenDeath() end
function CheckSuddenDeath()
-- dont start or continue sudden death if a win is pending -- ie. if a team already won dont risk killing it due to sudden death SendMessage("WormManager.GetActiveAlliances") local AllianceCount = GetData("AllianceCount")
if AllianceCount>1 then local RoundTimeRemaining = GetData("RoundTimeRemaining") if RoundTimeRemaining == 0 and StartedSuddenDeath==false then StartSuddenDeath() end
-- Tell game water is about to rise, so as not to award kills SendMessage( "GameLogic.AboutToWaterRise" ) -- Raise the water level SetData("Water.Level", GetData("Water.Level") + GetData("Water.RiseSpeed.Current") ) end end
function StartSuddenDeath() -- called at start if No game timer
-- Set Sudden Death Options -- (0 = One health, 1 = Water rise, 2 = GameOver)
StartedSuddenDeath = true
local scheme = QueryContainer("GM.SchemeData") if scheme.SuddenDeath == 0 then SendMessage("Comment.SuddenDeath") lib_SetAllWormsEnergy(1) -- unecessary (we can switch it on and off by the later level rise button) elseif scheme.SuddenDeath == 1 then SendMessage("Comment.SuddenDeath") elseif scheme.SuddenDeath == 2 then RoundOver() SendMessage("GameLogic.Draw") end -- Set Water Rise Speed -- (0 = No Rise, 1 = Slow rise, 2 = Medium rise, 3 = fast rise) if scheme.WaterSpeed == 0 then SetData("Water.RiseSpeed.Current", 0) elseif scheme.WaterSpeed == 1 then SetData("Water.RiseSpeed.Current", GetData("Water.RiseSpeed.Slow") ) elseif scheme.WaterSpeed == 2 then SetData("Water.RiseSpeed.Current", GetData("Water.RiseSpeed.Medium") ) elseif scheme.WaterSpeed == 3 then SetData("Water.RiseSpeed.Current", GetData("Water.RiseSpeed.Fast") ) end
end
-- If there was some activity its finished now function GameLogic_NoActivity()
if WaitUntilNoActivity == true then SendMessage("Timer.StartPostActivity") WaitUntilNoActivity = false end if WaitingForStartFirstTurn == true then StartFirstTurn() WaitingForStartFirstTurn = false end end
function Worm_Died() -- if there is only one team left abort the turn now rather than wait on SendMessage("WormManager.GetActiveAlliances") AllianceCount = GetData("AllianceCount") if AllianceCount < 2 then SendMessage("Weapon.Delete") SendMessage("Utility.Delete") SendMessage("Timer.EndTurn") SendMessage("Weapon.DisableWeaponChange") EndTurn() end end Этот файл - по сути набор функций. Функция начинается со слова function, а заканчивается словом end. Сразу после слова function идёт имя функции а далее список параметров в скобках. Это заголовок функции. Далее вплоть до слова end идёт тело функции. Из тела функции могут вызываться другие функции, там могут встречаться условные операторы и циклы. Также стоит заметить, что могут вызываться функции из библиотеки(файл lib_help.lua). Символы -- это начало комментария, то есть всё что после него не будет выполняться. Сам я не знаю язык lua, но как программист представляю в общих чертах его смысл, поэтому и решил натолкнуть вас на мысль поизучать его и скрипты для карт. А изучить его вы сможете тут.
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1240
|
Опубликовано: 10.02.2008, 21:08:26
Не буду голословным в утверждении, что изменения луа скриптов дают широкие возможности. вот скриншотик Тут 200 бочек вместо стандартных 15. Как сделать? Откройте файл lib_help.lua, найдите в самом конце файла Code if scheme.Objects == 2 or scheme.Objects == 3 then for i = 1,15 do SendMessage("GameLogic.CreateRandomOildrum") end end число 15 замените на 100 и сохраните. всё!
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1240
|
Опубликовано: 11.02.2008, 16:30:02
Чтобы сделать турнир создайте тему в этом форуме и напишите туда правила, количество участников, дату и чё сами захотите
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1240
|
Опубликовано: 12.02.2008, 20:44:25
опа! а можешь залить в файлы?
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1240
|
Опубликовано: 12.02.2008, 21:00:52
Quote (Chih-Pyh) эх был бы код на языке html.... Это я не совсем понял))
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1240
|
Опубликовано: 12.02.2008, 21:10:38
хм... ну я б написал прогу для конвертации в хтмл))
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1240
|
Опубликовано: 12.02.2008, 21:16:33
ты про код самой игры или про ксом файлы?
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1240
|
Опубликовано: 14.02.2008, 08:31:01
Найдите в файле Tweak.xml следующий текст: Code <XFloatResourceDetails id='Land.OverrideScale'> <Value>20</Value> <Name>Land.OverrideScale</Name> <Flags>64</Flags> и замените число 20 числом 200, а потом включите игру и поставьте любую карту! При этом все предметы, здания и вообще все расстояния увеличатся в 10 раз!
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1240
|
Опубликовано: 15.02.2008, 08:39:41
Ну мне просто хочется своебразную статистику, скока у мну народа)))интересно просто.
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1240
|
Опубликовано: 15.02.2008, 12:22:17
мне кажется не оч(((
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1240
|
Опубликовано: 15.02.2008, 15:49:49
ну тогда пробуй ассемблер изучать, скачай OllyDebug и смотри как игра работает, и по необходимости изменяй её.... но это сложно!я пробовал так посмотреть как старый редактор карт работает.но устал!
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1240
|
Опубликовано: 15.02.2008, 15:51:31
То Данил: я твоё сообщение удалил. не надо мой сайт превращать в место для выяснения отношений. Если чё не нравится в других, ищи их кланы или аськи и там всё говори!
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1240
|
Опубликовано: 15.02.2008, 15:56:06
Для того чтобы сайт сделать лучше мне надо бы что-нибудь писать на сайте. Про что писать?Или что выкладывать?Смотрите опрос Ответьте пожалуйста все!
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1240
|
Опубликовано: 15.02.2008, 16:17:16
кроме этого ещё что, просто это долго, а щас у мну нет времени, я учусь.
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1240
|
Опубликовано: 15.02.2008, 16:28:40
да... наверно можно. тогда тебе надо будет в своей карте разместить штук 16 эммитеров на твоей платформе. для этого скорее всего придётся чуток помудиться. Открыть любую карту из миссий, открыть найти там эммитеры, скопировать их к себе, потому что создавать свои в редакторе по-моему нельзя. А потом надо будет написать своё размещение червяков на карте в соответсвующем скрипте. а ещё в списке карт надо указать свой скрипт-файл вместо stdvs. wormpot можно оставить.
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1240
|
Опубликовано: 15.02.2008, 17:07:06
Проги проги! - их искать надо. Сам я их не могу штамповать. А про карты-скоро будет пак с картами на 50 мб
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1240
|
Опубликовано: 15.02.2008, 21:31:26
ну как вариант.... чтоб знать общественное мнение.просто найти их оч трудно, но если надо постараюсь
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1240
|
Опубликовано: 16.02.2008, 08:42:52
Перемещённые сообщения.
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|