Lua + паки карт
|
|
Сообщений: 1240
|
Опубликовано: 03.12.2008, 23:56:58
Идея: Сделать lua-скрипты в паке карт для игры по онлайну Тема зародилась тут. Паки карт поддерживают замену lua-скриптов, а это очень мощный инструмент для создания модов и всего-всего! если измудриться можно даже онлайн-миссию сделать! Основная проблема: при отключении lua-скрипта stdvs.lua для мультиплеерной карты игра не начинается, камера начинает хаотично крутиться и ничего не происходит. Отсюда вывод: в любом паке карт для каждой карты должен быть stdvs.lua. Значит надо прицепить свой lua-скрипт, обрабатывающий некоторые события. Надо: составить общий список событий, вызываемых в lua скриптах(надо проглядеть все lua файлы и посмотреть все функции, которые не вызываются внутри этого же lua-скрипта) После этого надо попробовать создать свой lua-скрипт со своими функциями, и там прописать обработку эти событий. Затем в паке карт к нужной карте попытаться прицепить этот lua-скрипт, т.е. чтобы в свойствах карты в строке lua-скрипты было: Code stdvs,wormpot,myscript.lua и посмотреть эффект Некоторая информация по lua тут p.s. у меня нет червей, не могу этого сам проделать, так что помогайте! возможно мы перевернём мир Worms!
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 3813
|
Опубликовано: 04.12.2008, 00:42:35
эм... а ты тупо отключил стдвс и все? пробовал просто сменить тип какой-нить одиночной миссии на 0 и запустить ее в онлайне или хотя бы в оффлайн мультиплеере? в принципе это должно сработать.
Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005) Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007) Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
mod.worms.pro - мод Worms Renewation для Worms4
|
|
|
|
Сообщений: 1240
|
Опубликовано: 04.12.2008, 10:11:19
я говорю именно о паках карт+lua, проблема как раз в том, что все карты, добавляемые через пак карт я сделал мультиплеерными. от stdvs не избавиться( и кстати другие просто не будут доступны в онлайн-игре вроде бы... я сейчас составляю список функций-обработчиков в lua-скриптах, надо попробовать их поставить в своих скриптх. Кстати, я 1 файл нашёл.. там 2 раза функция объявлена вот, Deathmatch4.lua: Code Deathmatch4.lua:41: PlayIntroMovie() Deathmatch4.lua:48: EFMV_Terminated() Deathmatch4.lua:53: DoOncePerTurnFunctions() Deathmatch4.lua:5 8: TurnEnded() Deathmatch4.lua:62: DoOncePerTurnFunctions() Поэтому мне кажется можно поверх своего обработчика написать новый. firsacho, проверь плз.. например к стандартной карте, в которой есть обработчик TurnEnded() прикрепи файл myscript.lua(см. в прикреплённых файлах). он перекрывает функцию TurnEnded(). Важно понять, что будет работать: обе функции, или только в myscript.lua или наооборот.. кстати, насчёт AI бота... открой stdlib.lua: Code function RunAILogic() -- ovverride this function to now have AI. SendMessage("AI.PerformDefaultAITurn"); -- actually called to start the AI turn. SendMessage("AI.ExecuteActions"); end какие-нибудь мысли есть?) насчёт распределения ролей.. тут посложнее. Есть функция в lib_help.lua: Code function lib_GetRandom(min, max) SendMessage("RandomNumber.Get") local RawRand = GetData("RandomNumber.Uint") local MyRand = min + math.mod(RawRand, max+1-min) return MyRand end так вот, по-моему не зря тут вызывают GetData("RandomNumber.Uint"), а не math.random, которая есть в lua. по-моему lib_GetRandom(min, max) вернёт одинковое число для всех игроков, таким образом назначение ролей вполне реально) надо только определить игрока, у которого запущен скрипт... ещё, до меня кое-что допёрло!) файл stdlib.lua содержит многие стандартные обработчики событий, они перекрываются обработчиками из других файлов.. наверно
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1240
|
Опубликовано: 04.12.2008, 10:38:03
у меня есть некоторые догадки по назначению ролей... кусок кода из lib_help.lua Code function lib_SetupMultiplayerTeam(TeamName, NumWorms, Worm1Name, Worm2Name, Worm3Name, Worm4Name, Worm5Name, Worm6Name, Skill, Grave, Flag, Speech, IsLocal, AlliedGroup, Handicap, HatAttachment, GlassesAttachment, TashAttachment, GlovesAttachment,vWormSpawnIndex)
local lock, team local WormSpawnIndexA WormSpawnIndexA=vWormSpawnIndex lock, team = EditContainer(lib_GetTeamContainerName(TeamIndex)) team.Active = true team.Name = TeamName team.TeamColour = 0 team.Skill = Skill team.GraveIndex = Grave team.FlagGfxName = Flag team.AlliedGroup = AlliedGroup team.IsLocal = IsLocal team.ATT_Hat = HatAttachment team.ATT_Glasses = GlassesAttachment team.ATT_Tash = TashAttachment team.ATT_Gloves = GlovesAttachment if Skill>0 then team.IsAIControlled = true else team.IsAIControlled = false end меня интересует team.IsLocal = IsLocal давайте подумаем. если у 2-х игроков 1 и тот же скрипт, он выполняется в одинаковом порядке, значит если у одного игрока team.IsLocal будет = true, или 1, а у другого false или 0, значит эта переменная означает, что это команда 1-го игрока. надо попытаться это проверить....
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1240
|
Опубликовано: 05.12.2008, 19:37:33
короче.. раньше на lua толком внимания не обращал, щас понимаю, что это мега-мощная штука. глядите сами: вот пример кода: Code function lib_SetupCrate(DataId) local CrateContainerData = QueryContainer(DataId) SendMessage("GameLogic.ResetCrateParameters") SetData("Crate.Type", CrateContainerData.Type) SetData("Crate.Contents", CrateContainerData.Contents) SetData("Crate.NumContents", CrateContainerData.NumContents) SetData("Crate.Index", CrateContainerData.Index) SetData("Crate.LifetimeSec", CrateContainerData.LifetimeSec) SetData("Crate.GroundSnap", CrateContainerData.GroundSnap) SetData("Crate.Parachute", CrateContainerData.Parachute) SetData("Crate.Spawn", CrateContainerData.Spawn) SetData("Crate.FallSpeed", CrateContainerData.FallSpeed) SetData("Crate.Gravity", CrateContainerData.Gravity) SetData("Crate.TeamDestructible", CrateContainerData.TeamDestructible) SetData("Crate.TeamCollectable", CrateContainerData.TeamCollectable) SetData("Crate.UXB", CrateContainerData.UXB) SetData("Crate.Hitpoints", CrateContainerData.Hitpoints) SetData("Crate.Pushable", CrateContainerData.Pushable) SetData("Crate.RandomSpawnPos", CrateContainerData.RandomSpawnPos) SetData("Crate.CanDropFromChute", CrateContainerData.CanDropFromChute) SetData("Crate.WaitTillLanded", CrateContainerData.WaitTillLanded) SetData("Crate.TrackCam", CrateContainerData.TrackCam) SetData("Crate.Scale", CrateContainerData.Scale) SetData("Crate.AddToWormInventory", CrateContainerData.AddToWormInventory) SetData("Crate.CustomGraphic", CrateContainerData.CustomGraphic) end все эти переменные определяются в Local.xml Code <XIntResourceDetails id='Crate.AddToWormInventory'> <Value>0</Value> <Name>Crate.AddToWormInventory</Name> <Flags>64</Flags> </XIntResourceDetails> <XIntResourceDetails id='Crate.CanDropFromChute'> <Value>1</Value> <Name>Crate.CanDropFromChute</Name> <Flags>96</Flags> </XIntResourceDetails> <XIntResourceDetails id='Crate.DelayMillisec'> <Value>0</Value> <Name>Crate.DelayMillisec</Name> <Flags>98</Flags> </XIntResourceDetails> <XIntResourceDetails id='Crate.Gravity'> <Value>1</Value> <Name>Crate.Gravity</Name> <Flags>98</Flags> </XIntResourceDetails> <XIntResourceDetails id='Crate.GroundSnap'> <Value>0</Value> <Name>Crate.GroundSnap</Name> <Flags>98</Flags> </XIntResourceDetails> <XIntResourceDetails id='Crate.HealthInCrates'> <Value>25</Value> <Name>Crate.HealthInCrates</Name> <Flags>96</Flags> </XIntResourceDetails> <XIntResourceDetails id='Crate.Hitpoints'> <Value>25</Value> <Name>Crate.Hitpoints</Name> <Flags>98</Flags> </XIntResourceDetails> <XIntResourceDetails id='Crate.Index'> <Value>-1</Value> <Name>Crate.Index</Name> <Flags>98</Flags> </XIntResourceDetails> <XIntResourceDetails id='Crate.LifetimeTurns'> <Value>-1</Value> <Name>Crate.LifetimeTurns</Name> <Flags>98</Flags> </XIntResourceDetails> <XIntResourceDetails id='Crate.NumContents'> <Value>1</Value> <Name>Crate.NumContents</Name> <Flags>98</Flags> </XIntResourceDetails> <XIntResourceDetails id='Crate.Parachute'> <Value>1</Value> <Name>Crate.Parachute</Name> <Flags>98</Flags> </XIntResourceDetails> <XIntResourceDetails id='Crate.Pushable'> <Value>1</Value> <Name>Crate.Pushable</Name> <Flags>98</Flags> </XIntResourceDetails> <XIntResourceDetails id='Crate.RandomSpawnPos'> <Value>0</Value> <Name>Crate.RandomSpawnPos</Name> <Flags>98</Flags> </XIntResourceDetails> <XIntResourceDetails id='Crate.Showered'> <Value>0</Value> <Name>Crate.Showered</Name> <Flags>98</Flags> </XIntResourceDetails> <XIntResourceDetails id='Crate.TeamCollectable'> <Value>-1</Value> <Name>Crate.TeamCollectable</Name> <Flags>98</Flags> </XIntResourceDetails> <XIntResourceDetails id='Crate.TeamDestructible'> <Value>-1</Value> <Name>Crate.TeamDestructible</Name> <Flags>98</Flags> </XIntResourceDetails> <XIntResourceDetails id='Crate.TrackCam'> <Value>1</Value> <Name>Crate.TrackCam</Name> <Flags>96</Flags> </XIntResourceDetails> <XIntResourceDetails id='Crate.UXB'> <Value>0</Value> <Name>Crate.UXB</Name> <Flags>98</Flags> </XIntResourceDetails> <XIntResourceDetails id='Crate.WaitTillLanded'> <Value>1</Value> <Name>Crate.WaitTillLanded</Name> <Flags>96</Flags> </XIntResourceDetails> то есть вызывая SetData("Crate.Scale", CrateContainerData.Scale) или соответсвующий GetData мы записываем или извлекаем из xml-файла какие-то данные=) круто, да?) а вот ещё, нашёл код, который возможно содержит в себе какую-нито инфу о текущем игроке.. тока чё-то хз, как ей пользоваться) Code <XIntResourceDetails id='User.Changed'> <Value>0</Value> <Name>User.Changed</Name> <Flags>96</Flags> </XIntResourceDetails> <XIntResourceDetails id='User.NameCheck'> <Value>0</Value> <Name>User.NameCheck</Name> <Flags>96</Flags> </XIntResourceDetails> <XIntResourceDetails id='User.Room'> <Value>0</Value> <Name>User.Room</Name> <Flags>96</Flags> </XIntResourceDetails>
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 3813
|
Опубликовано: 08.12.2008, 14:17:07
научился бы ты писать на луа скрипты, и заодно бы нас научил... то что они мега мощные это давно известно... но мега запарные. Кста ты писал про динамическое изменение, да я вспомнил, были миссии с такой чтукой... там где пасхалка - машина на карте проподала при взрыве и карта где вокруг частокол, там в миссии ворота открылись...
Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005) Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007) Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
mod.worms.pro - мод Worms Renewation для Worms4
|
|
|
|
Сообщений: 519
|
Опубликовано: 08.12.2008, 17:14:24
//\\ || || Вот это круто)
|
|
|
|
Сообщений: 1042
|
Опубликовано: 08.12.2008, 22:00:03
У меня опыта побольше будет работы с Worms Lua скриптами. Я там почти все функции знаю, и какая когда вызывается, короче тут нужен программер, который это будет делать. К примеру, когда я делал перезарядное авиоудар для W3D. Я отлавливал функцию выбора оружия, сравнивал его и в зависемости от выбраного создавал новый аирстрайк. В итоге у меня получилась мега крутая штука. Выбераешь перед выстрелом Банану, у тебя Банановый Страйк, выбераешь Динамит, Динамитный и так далее. Причем на игре создание оружие никак не сказывается. это лишь подмена переменных. Что касается онлайн миссий, может быть проблема синхронизации, но создавать тригеры я умею. Я же 5 Челенджеров создал, в которых даже выводиться на экран количество сбитых целей. Более того, я даже знаю как подымать воду, считывать здоровье у червей, узнавать умер червь или нет, и т.п. Когда закончу возиться с картами (Сейчас столько проектов для новых карт, с появлением 3DImport'а что времени не хватает на все), буду дальше изучать скрипты, там можно и гравитацию менять, и таймер создавать я умею, короче, если что обращайтесь =) Эмиттеры - они же эффекты в игре, не всегда активируются автоматом, поэтому есть скрипты которые их активируют, проблема только со спаунами, они должны определять позицию эмиттера, там где он появится и где будет находиться. Можно даже воскришать червей =) И заражать их, делать под свою команду, вообще там возможностей неперечислить.
|
|
|
|
Сообщений: 1042
|
Опубликовано: 08.12.2008, 22:06:11
Еще добавлю, Скрипты загружаются от функции initialise которая и лежит в stdlib.lua, остальное лишь прикрепляющие файлы, в которых содержаться функции вызываемые из stdlib.lua. Короче все что она делает это создает команды червей, и схему в зависемости от данных, а затем передает управление вормподу, который и делает дополнительные операции. В луа есть удобная фитча, функция перегружаемая, т.е. написав функцию с таким же именем она полностью заменяет оригинал, тут надо быть внемательным, т.к. можно повредить игровой процесс если не верно воссоздать оригинал. Свои знания буду писать тут W3D Wiki. Как будет время...
|
|
|
|
Сообщений: 1240
|
Опубликовано: 09.12.2008, 22:52:12
АлексБонд, вопрос: как ты узнаёшь, кто есть кто.. то есть как скрипт узнаёт, что он у игрока номер 1, а у второго, что у игрока номер 2?
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1042
|
Опубликовано: 10.12.2008, 01:45:14
В worms3d скрипт у всех игроков одинаковый, он синхронизируется и выполняется на каждой машине одновременно, даже случайные чиста выбиваются одинаковые. Поэтому я не знаю тонкостей онлайн игры... Может в w4 все подругому. Я знаю одно скрипты берут данные червей у хостера, а исполнительный комп уже определяется самой игрой. Черви имеют номера команды, или же цвет, который можно считать с помощью скрипта.
|
|
|
|
Сообщений: 1240
|
Опубликовано: 10.12.2008, 11:42:43
у нас всё также, рандом тоже один, общий, и это круто) то есть нумерация команд у 1-го и 2-го игрока одинаковая, то есть если игрок 1 играет 1-ой командой, игрок 2 - 2-ой командой, тогда в скрипте у игрока 1 и в скрипте у игрока 2 к примеру такой код: Code lock, team = EditContainer("Team.Data00") team.Active = true team.Name = "The Lightsiders" team.TeamColour = 0 team.ATT_Glasses = "WXFE.A.Glasses.Pirate" team.ATT_Hat = "WXFE.A.Hat.Pirate" --team.ATT_Gloves = "WXFE.A.Gloves.Pirate" CloseContainer(lock) изменит именно команду 1-го игрока? то есть оба игрока увидят одинаковый результат? ещё, поподробнее рассказать о порядке выполнения скрипта? Quote (AlexBond) Скрипты загружаются от функции initialise которая и лежит в stdlib.lua, остальное лишь прикрепляющие файлы, в которых содержаться функции вызываемые из stdlib.lua. тут ты говоришь, что initialise лежит в stdlib.lua. А у нас не так) Вот наш stdlib: Code -- Called at the start of a game function StartFirstTurn() WaitUntilNoActivity = false SendMessage("Timer.StartGame") StartTurn() end
function StartTurn() done_once_per_turn_functions = false SendMessage("GameLogic.ActivateNextWorm") -- do this after activating the worm so his details appear in the HUD SendMessage("Timer.StartHotSeatTimer") --SendMessage("Weapon.Create") SetWind() --TurnStarted() SendMessage("GameLogic.Turn.Started") TurnStarted() -- moved here so TeleportIn camera can override startofturn camera RunAILogic() end
function RunAILogic() -- ovverride this function to now have AI. SendMessage("AI.PerformDefaultAITurn"); -- actually called to start the AI turn. SendMessage("AI.ExecuteActions"); end
function Timer_HotSeatTimedOut() SendMessage("Timer.StartTurn") end
function GameLogic_EndTurn_Immediate() -- this called by surrender and skip go -- do all the work here as EndTurn() by itself would be illegal SendMessage("Weapon.Delete") SendMessage("Utility.Delete") SendMessage("Timer.EndTurn") SendMessage("Weapon.DisableWeaponChange") EndTurn() end
function Timer_RetreatTimedOut() EndTurn() end
-- The worm whose turn it is has been damaged function Worm_Damaged_Current() SendMessage("Weapon.Delete") SendMessage("Utility.Delete") SendMessage("Timer.EndRetreatTimer") SendMessage("Timer.EndTurn") SendMessage("Weapon.DisableWeaponChange") EndTurn() end
function Timer_TurnTimedOut() SendMessage("Weapon.Delete") SendMessage("Utility.Delete") SendMessage("Weapon.DisableWeaponChange") EndTurn() end
-- Everything has come stopped moving function Timer_PostActivityTimedOut() SendMessage("GameLogic.AboutToApplyDamage") SendMessage("GameLogic.ApplyDamage") CheckActivity() end
function CheckActivity() Activity = GetData("ObjectCount.Active") if Activity == 0 then DoPostActivity() else WaitUntilNoActivity = true end end
function DoPostActivity() if done_once_per_turn_functions == true then SendMessage("GameLogic.Turn.Ended") TurnEnded() else -- Done only once SendMessage("Net.DisableAllInput") SendMessage("Worm.ApplyPoison") SendMessage("GameLogic.AboutToApplyDamage") SendMessage("GameLogic.ApplyDamage") SetData("DoubleDamage", 0) DoOncePerTurnFunctions() done_once_per_turn_functions = true local GameOver = GetData("FCS.GameOver") -- do no further processing if sudden death drew the game if GameOver == 0 then CheckActivity() -- in case an earthquake or similar was just started end end end
-- override this function TurnStarted() end
-- override this function TurnEnded() CheckOneTeamVictory() end
-- decides if the game has been won or drawn at the end of every turn -- Note do this last in the TurnEnded function as it finishes with the StartTurn Message function CheckOneTeamVictory() -- Changed to use alliances rather than teams so 2 teams vs 1 can end correctly SendMessage("WormManager.GetActiveAlliances") AllianceCount = GetData("AllianceCount") if AllianceCount == 0 then RoundOver() -- all the teams have just snuffed it SendMessage("GameLogic.Draw") elseif AllianceCount == 1 then RoundOver() -- only one team remains -- PC: changed this call to catch naughty use of GetActiveTeamIndex usage. Use the new -- call to get the last team with a worm thats alive on it. SendMessage("WormManager.GetSurvivingTeam") WinningTeam = GetData("SurvivingTeamIndex") SendIntMessage("GameLogic.Win", WinningTeam) else StartTurn() end end
function EndTurn() -- note: could this happen multiple times per turn (eg from WormDamagedCurrent)? -- if so does it matter?
-- Poisoning now moved to DoPostActivity
SendMessage("GameLogic.EndTurn") Activity = GetData("ObjectCount.Active") if Activity == 0 then SendMessage("Timer.StartPostActivity") -- pause else WaitUntilNoActivity = true end end
-- If there was some activity its finished now function GameLogic_NoActivity() if WaitUntilNoActivity == true then -- reset WaitUntilNoActivity before calling message below because zero time might -- cause it to call back immediately and set it true again WaitUntilNoActivity = false SendMessage("Timer.StartPostActivity") end end
function SetWind() SelectRandomWind() end
function SelectRandomWind() -- First the speed SendMessage("RandomNumber.Get") RandomNumber = GetData("RandomNumber.Float") MaxWind = GetData("Wind.MaxSpeed") WindCap = GetData("Wind.Cap")/10 -- Scheme can set the maximum value 1-10 as appears in HUD SetData("Wind.Speed", WindCap*RandomNumber*RandomNumber*MaxWind) -- now squared to make high winds less common
-- Now a direction SendMessage("RandomNumber.Get") RandomNumber = GetData("RandomNumber.Float") Direction = RandomNumber * 2 * 3.14 SetData("Wind.Direction", Direction) end
function DoOncePerTurnFunctions() end
function RoundOver() end
function SetWormpotModes() end
а Initialize обычно в других файлах определяется. Кстати, объясни поточнее, как тут функции перегружаются как определить, какая функция какую перегружает? просто порядок их определения не очень ясен..
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1240
|
Опубликовано: 10.12.2008, 13:13:18
Кто нибудь, попробуйте добавить в наш stdlib.lua в конец файла это: Code function Weapon_Fired_Start() SetData("Text.TestComment", "FIRE!") SetData("CommentaryPanel.Comment", "Text.TestComment") SendMessage("CommentaryPanel.ScriptText") SendMessage("Timer.EndTurn") SendMessage("Weapon.DisableWeaponChange") end и запустите какую-нибудь игру(не по инету, на компе), затем выстрелите меня интересуют 2 вещи, выведится ли при выстреле текст FIRE!, вылетит ли вообще игра, или будет всё корректно работать.. короче это важно! если всё заработает, значит можно писать свои обработчики аналогичные тем, которые в Worms3D(у нас обработчика выстрела нету( )
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 2115
|
Опубликовано: 13.12.2008, 04:57:49
Quote (Герыч) у нас обработчика выстрела нету это что такое?
|
|
|
|
Сообщений: 1240
|
Опубликовано: 13.12.2008, 14:01:30
эта функция, которая вызывается при выстреле из оружия. Я её написал в прошлом посте. Я прошу вас попробовать написать её в луа файле, и посмотреть, вызовется ли она? (то есть есть ли этот обработчик в W4)
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 2115
|
Опубликовано: 16.12.2008, 08:46:30
попробую как проверю отпишусь
|
|
|
|
Сообщений: 3813
|
Опубликовано: 16.12.2008, 18:23:16
интересно, но я думаю не заработает, слово должно быть пробито в файле перевода.
Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005) Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007) Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
mod.worms.pro - мод Worms Renewation для Worms4
|
|
|
|
Сообщений: 1240
|
Опубликовано: 16.12.2008, 23:38:45
какое слово???при чём тут перевод?) Фирсачо, это никак с локализацией не связано... это связано с интерпретатором луа, точнее с тем, как он встроен в W4. Я так подозреваю(даже вроде где-то об этом читал), что луа позовляет вызывать функции из программы, в которую луа встроен.. короче, если разработчики W4 захотели, чтобы SetData позволял бы что-то сделать, то они прописали его в интерпретаторе Lua как доступную, вот и всё) P.S. когда скажете мне результат этого скрипта??? P.P.S. я тут щас весь в учёбе, так что появляюсь редко.. извините плохого Одмина..
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 2115
|
Опубликовано: 19.12.2008, 12:31:31
не работает и не вылетает что-то не так там
|
|
|
|
Сообщений: 3813
|
Опубликовано: 20.12.2008, 12:05:30
может лучше это добавить в stdvs.lua? или в какой нить дополнительный скрипт
Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005) Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007) Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
mod.worms.pro - мод Worms Renewation для Worms4
|
|
|
|