[ Обновленные темы · Новые сообщения · Участники · Поиск · RSS ]
Результаты поиска
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
смотри как это можно решить. Вообще, как работает lua. Он загружает все скрипты в один текст, то есть к примеру идёт так:

текст из stdlib.lua
текст из stdvs.lua
текст из других файлов

потом полученный текст выполняется последовательно.
В lua код не обязательно находится в теле функции, к примеру(это псевдокод, подразумевается, что DisplayComment выводит на экран текст):

Code

DisplayComment("Вне функции")

function a()
   DisplayComment("В функции")
end

a()
DisplayComment("Ещё раз вне функции")

Этот код выведет:

Code
Вне функции
В функции
Ещё раз вне функции

В lua можно переопределять функции:

Code

function a()
   DisplayComment("1")
end

function a()
   DisplayComment("2")
end

a()

тут вызовется не первая, а вторая функция(на экран выведется 2).

В lua есть несколько типов данных: строки(текст), числа, таблицы, функции. То есть мы можем хранить ссылку на функцию в переменной, поэтому можно написать такой код:

Code

function a()
   DisplayComment("1")
end

OldAFunction=a

function a()
   DisplayComment("2")
end

a()
OldAFunction()

тут на экран выведется 2 1. При этом строку:

Code
OldAFunction=a

надо писать до переопределения функции.

Теперь ближе к червям. В stdvs к примеру есть функция

Code
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()
end

В своём скрипте фактически можно написать так:

Code

OldInitialize=Initialize
function Initialise()
    -- тут проводим свою инициализацию
   OldInitialize()  --когда необходимо вызываем старый обработчик
    -- продолжаем свою инициализацию
end

Про подключение сриптов я тоже не супер разобрался...


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
а, на вопрос то толком не ответил) короче можешь написать MyScript.lua, в котором будет такой текст:

Code
OldInitialise=Initialise
function Initialise()
    OldInitialise()
end

OldSetSpecialWeapon=SetSpecialWeapon
function SetSpecialWeapon(TeamIndex, WeaponName)
    OldSetSpecialWeapon(TeamIndex, WeaponName)
end

OldDoOncePerTurnFunctions=DoOncePerTurnFunctions
function DoOncePerTurnFunctions()
    OldDoOncePerTurnFunctions()
end

OldSetupScheme=SetupScheme
function SetupScheme()
    OldSetupScheme()
end

OldSetupInventoriesAndDelays=SetupInventoriesAndDelays
function SetupInventoriesAndDelays()
    OldSetupInventoriesAndDelays()
end

OldIncrementAlliedInventory=IncrementAlliedInventory
function IncrementAlliedInventory(AlliedGroup, Weapon)
    OldIncrementAlliedInventory(AlliedGroup, Weapon)
end

OldStockpile=Stockpile
function Stockpile()
    OldStockpile()
end

OldRoundOver=RoundOver
function RoundOver()
    OldRoundOver()
end

OldTurnStarted=TurnStarted
function TurnStarted()
    OldTurnStarted()
end

OldSetupTeleportIn=SetupTeleportIn
function SetupTeleportIn()
    OldSetupTeleportIn()
end

OldTeleportIn=TeleportIn
function TeleportIn()
    OldTeleportIn()
end

OldTimer_GameTimedOut=Timer_GameTimedOut
function Timer_GameTimedOut()
    OldTimer_GameTimedOut()
end

OldCheckSuddenDeath=CheckSuddenDeath
function CheckSuddenDeath()
    OldCheckSuddenDeath()
end

OldStartSuddenDeath=StartSuddenDeath
function StartSuddenDeath()
    OldStartSuddenDeath()
end

OldGameLogic_NoActivity=GameLogic_NoActivity
function GameLogic_NoActivity()
    OldGameLogic_NoActivity()
end

OldWorm_Died=Worm_Died
function Worm_Died()
    OldWorm_Died()
end

----

OldStartFirstTurn=StartFirstTurn
function StartFirstTurn()
    OldStartFirstTurn()
end

OldStartTurn=StartTurn
function StartTurn()
    OldStartTurn()
end

OldRunAILogic=RunAILogic
function RunAILogic()
    OldRunAILogic()
end

OldTimer_HotSeatTimedOut=Timer_HotSeatTimedOut
function Timer_HotSeatTimedOut()
    OldTimer_HotSeatTimedOut()
end

OldGameLogic_EndTurn_Immediate=GameLogic_EndTurn_Immediate
function GameLogic_EndTurn_Immediate()
    OldGameLogic_EndTurn_Immediate()
end

OldTimer_RetreatTimedOut=Timer_RetreatTimedOut
function Timer_RetreatTimedOut()
    OldTimer_RetreatTimedOut()
end

OldWorm_Damaged_Current=Worm_Damaged_Current
function Worm_Damaged_Current()
    OldWorm_Damaged_Current()
end

OldTimer_TurnTimedOut=Timer_TurnTimedOut
function Timer_TurnTimedOut()
    OldTimer_TurnTimedOut()
end

OldTimer_PostActivityTimedOut=Timer_PostActivityTimedOut
function Timer_PostActivityTimedOut()
    OldTimer_PostActivityTimedOut()
end
     
OldCheckActivity=CheckActivity
function CheckActivity()
    OldCheckActivity()
end

OldDoPostActivity=DoPostActivity
function DoPostActivity()
    OldDoPostActivity()
end

OldTurnEnded=TurnEnded
function TurnEnded()
    OldTurnEnded()
end

OldCheckOneTeamVictory=CheckOneTeamVictory
function CheckOneTeamVictory()
    OldCheckOneTeamVictory()
end

OldEndTurn=EndTurn
function EndTurn()
    OldEndTurn()
end

OldSetWind=SetWind
function SetWind()
    OldSetWind()
end

OldSelectRandomWind=SelectRandomWind
function SelectRandomWind()
    OldSelectRandomWind()
end

OldSetWormpotModes=SetWormpotModes
function SetWormpotModes()
    OldSetWormpotModes()
end

и если нужно в нужной функции меняй тело


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
хм.. если ты внимательно посмотришь в папку maps ты заметишь, что для каждой карты там есть файл xan и hmp, вот ты скопируй любой подходящий hmp файл туда и переименую на нужную карту

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
196

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
о, неплохо)

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
я вообще не понимаю, как ты это будешь реализовывать!

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
может ты сделал их прозрачными? они в игре как стены существуют? т.е. как препятствие

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
а где глюк?

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
а, внешние стены чтоли пропадают?

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Пример изменения данного значения через lua:
SetData("Jetpack.ThrustScale", 0.01)


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
ну вот(

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Предлагаю медальки за число сообщений на форуме!

ну например за 100, 500, 666(демоны форума=) ) и 1000


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
есть такой вариант, что float нельзя задавать, в чём я сомневаюсь...
другой вариант в том, что эти контейнеры "заблокированы".
кстати, что происходит при запуске скрипта? вылет, ничего или кручение карты?


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
медаль за 666 нужна) ну меняются медальки должны, конечно) тупо если будет у одного чела медали за 100 и 500 сразу

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
похоже физика проверяется только в начале хода) те наверно надо сбросить ход и всё заработает

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
да, как мы телепорт делали... наверно так же) короче гравитация меняется только при новом ходе, это я проверил

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
я считаю по чему мануал нужен, так это по реплайсеру! пиши!

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
так, вот это я не понял)

вот мой код:

Code


local GravityChanging=0

function GravityChanger()
   if GravityChanging==1 then
     SetData("Low.Gravity.GameDefault",lib_GetRandomFloat(0.01,2))
     StartTimer("GravityChanger", 1000)
   end
end

function TurnStarted()
    local scheme = QueryContainer("GM.SchemeData")
    if scheme.WormSelect == 1 then
       SendMessage("WormSelect.OptionSelected")
    end
    TeleportIn()
    GravityChanging=1
    StartTimer("GravityChanger",1000)
end

function TurnEnded()
    GravityChanging=0
    CheckOneTeamVictory()
end

по сути он должен каждую секунду менять гравитацию, но он её меняет только после начала хода!


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
ты не понял) я хотел чтобы каждую секунду менялась гравитация, а GravityChanging я ввёл для безопасности.
Проблема не в этом! значение гравитации реально меняется только после начала нового хода!(


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Браво)

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Поиск: