Jump to content

lua-скрипты


Recommended Posts

  • ED Team

Для того чтобы по умолчанию в кабине было отключено смещение головы пилота необходимо:

 

в файле Scripts\Aircrafts\Ka-50\Cockpit\Macro_handler.lua

 

переписать функцию post_initialize()

в виде

 

function post_initialize()
   if track_is_reading() then
       return
   end
   dispatch_action(nil,492)--head moving off
end

 

Для тех кому это кажется сложным, прикладываю готовый измененный файл.

Macro_handler.rar

Единственный урок, который можно извлечь из истории, состоит в том, что люди не извлекают из истории никаких уроков. (С) Джордж Бернард Шоу

Link to comment
Share on other sites

  • Replies 308
  • Created
  • Last Reply

Top Posters In This Topic

Попытался сделать более сложное действие в триггере внутри миссии (руками):

 

trigfunc =

{

[1] = "if c_time_after(\"8\") then math.randomseed(os.time()); a_out_text(string.format(\"Random number is %d\", math.random(4))); mission.trigfunc[1]=''; end;",

}, -- end of trigfunc

 

Что math, что string - nil. Куда вы их запихали?

JGr124 "Katze"

Link to comment
Share on other sites

нет этих пакетов в стеке миссии

 

ps: но в патче что-нибудь придумаем...

"There are five dangerous faults which may affect a general: recklessness, which leads to destruction; cowardice, which leads to capture; a hasty temper, which can be provoked by insults; a delicacy of honor which is sensitive to shame; over-solicitude for his men, which exposes him to worry and trouble." Sun Tzu

[sigpic]http://forums.eagle.ru/signaturepics/sigpic2354_5.gif[/sigpic]

Link to comment
Share on other sites

Для того чтобы по умолчанию в кабине было отключено смещение головы пилота необходимо:

 

Как-нибудь настраивается это "смещение головы"?

Можно, например, настроить чтобы "смещение" было сильнее или меньше?.

 

И как отключить смещение по (ROLL)? Чтобы в крене "обзор" не пытался как-бы выровнится по горизонту, а оставался парралельно панели всегда?

Flying is for droids.

Полёты - это для дроидов.

Link to comment
Share on other sites

нет этих пакетов в стеке миссии

 

ps: но в патче что-нибудь придумаем...

У меня вот такой еще филосовский вопрос:

 

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

 

Возьмем, к примеру, миссию "Курьер", и доработаем ее следующим образом: поставим не один УАЗик, а 10, все они будут неактивными, кроме одного, основного. В файл mission я дописываю кусок к концу, который будет после заполнения структуры mission стандартным образом брать, и менять координаты "основного" УАЗика на координаты одно из "неактивных", выбранного случайным образом (ну и координаты зон триггеров для УАЗика, тоже, и т.п.).

 

В сингле примерно ясно, что произойдет. А если миссия будет мультиплеерной - то что получится? Что высылается клиентам с сервера - просто файл миссии как есть, или перепакованные структуры данных миссии, взятых из памяти после отработки скрипта mission и других, какие там есть?


Edited by JGr124_MUTbKA

JGr124 "Katze"

Link to comment
Share on other sites

  • ED Team
Как-нибудь настраивается это "смещение головы"?

Можно, например, настроить чтобы "смещение" было сильнее или меньше?.

Нет.

 

И как отключить смещение по (ROLL)? Чтобы в крене "обзор" не пытался как-бы выровнится по горизонту, а оставался парралельно панели всегда?

http://forums.eagle.ru/showpost.php?p=576132&postcount=3591

Единственный урок, который можно извлечь из истории, состоит в том, что люди не извлекают из истории никаких уроков. (С) Джордж Бернард Шоу

Link to comment
Share on other sites

  • ED Team

В сингле примерно ясно, что произойдет. А если миссия будет мультиплеерной - то что получится? Что высылается клиентам с сервера - просто файл миссии как есть, или перепакованные структуры данных миссии, взятых из памяти после отработки скрипта mission и других, какие там есть?

Наземка считается на сервере. У клиентов "ползают" наземные фантомы.

Единственный урок, который можно извлечь из истории, состоит в том, что люди не извлекают из истории никаких уроков. (С) Джордж Бернард Шоу

Link to comment
Share on other sites

В сингле примерно ясно, что произойдет. А если миссия будет мультиплеерной - то что получится? Что высылается клиентам с сервера - просто файл миссии как есть, или перепакованные структуры данных миссии, взятых из памяти после отработки скрипта mission и других, какие там есть?

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

 

идея рандомизировать координаты хорошА, главное не получить УАЗик стоящий на вершине Эльбруса, ЛЭПа или внутри школы )))

"There are five dangerous faults which may affect a general: recklessness, which leads to destruction; cowardice, which leads to capture; a hasty temper, which can be provoked by insults; a delicacy of honor which is sensitive to shame; over-solicitude for his men, which exposes him to worry and trouble." Sun Tzu

[sigpic]http://forums.eagle.ru/signaturepics/sigpic2354_5.gif[/sigpic]

Link to comment
Share on other sites

Возможно плохо искал, но так и не нашел ответа на вопрос. Есть ли возможность включить "ноги-руки" пилота при виде из кокпита по умолчанию? Когда смотрел демки встроенные в игру - там в общем-то сидит пилот и даже двигает конечностями ) Разве что головы у него нет.

Хотелось бы видеть то же самое при прохождении кампании.

Link to comment
Share on other sites

Возможно плохо искал, но так и не нашел ответа на вопрос. Есть ли возможность включить "ноги-руки" пилота при виде из кокпита по умолчанию?

Хотелось бы видеть то же самое при прохождении кампании.

 

Ну ты "кекс". :) Мало того что не искал, да ещё не туда постишь.

http://forums.eagle.ru/showpost.php?p=557391&postcount=15


Edited by Cobra_ru
  • Like 1
Link to comment
Share on other sites

Возможно плохо искал, но так и не нашел ответа на вопрос. Есть ли возможность включить "ноги-руки" пилота при виде из кокпита по умолчанию?

Вторая страница этого топика. В самом низу.

 

Ну ты "кекс". :) Мало того что не искал, да ещё не туда постишь.

http://forums.eagle.ru/showpost.php?p=557391&postcount=15

А ты не "кекс"? Мало того, что наезжаешь, так еще и офтопишь. Как с помошью кнопки сделать отображение пилота по умолчанию?

Всё сказанное автором - вымесел, и не может быть использовано как доказательство в суде.

Мой блог | My blog

Link to comment
Share on other sites

Вторая страница этого топика. В самом низу.

 

 

А ты не "кекс"? Мало того, что наезжаешь, так еще и офтопишь. Как с помошью кнопки сделать отображение пилота по умолчанию?

 

Не наезжал, успокойся. Не знаю с какой интонацией ты это прочитал для себя. Про по умолчанию- не обратил внимание..

Link to comment
Share on other sites

Вопрос:

Файл options.lua

["graphics"] = 
   {
       ["color"] = "32",
       ["heatBlr"] = 0,
       ["scenes"] = "medium",
       ["water"] = 2,
       ["[b][color=red]fullScreen[/color][/b]"] = false,
       ["visibRange"] = "Medium",
       ["aspect"] = 1.3333333333333,
       ["textures"] = 1,
       ["shadows"] = 2,
       ["display_mode"] = 
       {
           ["avi"] = 
           {
               ["bpp"] = 32,
               ["resolution"] = "640x480",
               ["[b][color=red]full_screen[/color][/b]"] = false,
               ["aspect"] = 1.333333333,
               ["height"] = 480,
               ["width"] = 640,
           }, -- end of ["avi"]
       }, -- end of ["display_mode"]
       ["effects"] = 3,
       ["lights"] = 2,
       ["haze"] = 1,
       ["terrPrld"] = "20",
       ["height"] = 768,
       ["resolution"] = "1024x768",
       ["civTraffic"] = 0,
       ["width"] = 1024,
   }, -- end of ["graphics"]

Выделенное жирным - это умышленно сделано, или всё-таки опечатка?

Всё сказанное автором - вымесел, и не может быть использовано как доказательство в суде.

Мой блог | My blog

Link to comment
Share on other sites

Кста, уважаемые, может пока плохо рыл, не удалось добавить виды головок НАР в список оружия...

Как вариант, в warheads.lua пришлось ковырять только одну бошку (оригинальный файл рекомендую сохранить)..

warheads["C_8"] =

{

expl_mass = 0.9, -- Warhead 3.2 kg, explosive 0.855 kg + fragments bonus

other_factors = { 14.0, 14.0, 1.0 },

concrete_factors = { 5.0, 5.0, 1.0 },

concrete_obj_factor = 0.1,

obj_factors = { 2.0, 2.5 },

cumulative_factor= 1.2,

};

Вот это место правим... параметр cumulative_factor= 1.2, сделать на 2.0(2.3) для с-8ком...в моем виде скорее стандартная с-8 (с-8А). obj_factors = { 2.0, 2.5 }, меня еще мучает, досконально не проврил, и бетон еще сомнения.... Но судя по разговором с тем, кто с-5 и с-8 в реали юзал - сейчас с-8 приблизилось к реали судя по беседам... Проверяйте :)


Edited by edwardpashkov
  • Like 1

[sIGPIC][/sIGPIC]

АКА =TMS= Count _ Полеты на = T M S = dedicate server На точке работает РП (РП+РПП)

Набор вирпилов на вертикальную, штурмовую и истребительную авиацию со времен ВОВ и по настоящее время

Комсостав и инструкторы - летавшие в горячих точках (и не только) и действующие летчики.

Link to comment
Share on other sites

Уважаемые разработчики, Вы бы хоть ответили чего нибудь. :)

 

Например: "Отстань, и не должно работать...",

или: "...спасибо, починим...",

или: "...должно, но не будем чинить...",

или: "...автор поста совершенно не умеет готовить export.lua..." :)

 

Еще раз заранее благодарю за помощь.

Link to comment
Share on other sites

  • ED Team

Не нервничай, у тебя нет варианта "банально не хватает времени" - и это действительно так.

Men may keep a sort of level of good, but no man has ever been able to keep on one level of evil. That road goes down and down.  
Можно держаться на одном уровне добра, но никому и никогда не удавалось удержаться на одном уровне зла. Эта дорога ведёт вниз и вниз.

G.K. Chesterton

DCS World 2.5: Часто задаваемые вопросы

Link to comment
Share on other sites

  • ED Team
День добрый.

 

Очень странно ведёт себя функция LoGetIndicatedAirSpeed(), по идее должна возвращать число, а возвращает nil

 

Слегка модифицированный пример, внутри функции LuaExportAfterNextFrame():

 

local t = LoGetModelTime()

local altBar = LoGetAltitudeAboveSeaLevel()

local altRad = LoGetAltitudeAboveGroundLevel()

local pitch, bank, yaw = LoGetADIPitchBankYaw()

local HSI = LoGetControlPanel_HSI()

local speed = LoGetIndicatedAirSpeed()

 

socket.try(c:send(string.format("t = %.2f, alrRad = %.2f, altBar = %.2f, bank = %.2f, speed = %.2f\n", t, altRad, altBar, bank, speed)))

 

В логе:

 

Lua::Config::call error LuaExportAfterNextFrame:./Config/Export/Export.lua:75: bad argument #6 to 'format' (number expected, got nil)

 

Заранее благодарю за помощь.

 

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

 

--------------------------- Ka-50 fix --------------------------------

function satm(H)--calculate standart atmosphere parameters VelSound,Dens,T_air
local PH  ={-2,10.5,11.2,11.5,24.5,25.16,25.5}
local K   ={0.00025,-0.386248,1.2661,-0.88011,-0.170736,0.506547,-0.33585}
local RG  =287.039
local T1  =301.19
local RO1 =0.15072
local P1  =13031.0
local G1  =9.80665
local R1  =6371.21
local Y1  =3.322227e-3
local YH1 =0.708257e-4
local YHH1=0.304223e-5
local A1  =20.0463
local A2  =0.0341649
	  
local h_ = H*0.001;
local DH = h_- PH[1];
local Y  = Y1 + DH* (YH1+ DH*YHH1/ 2.0);
local X  = 1000*DH*(Y1+ DH*(YH1+ DH*YHH1/3.0)/ 2.0)
local Z;
for i = 1,7 do
	DH= h_- PH[i]
	if DH <= 0 then
		break
	end
	Z = DH* K[i]* DH*DH;
	Y = Y+ 0.001*Z/ 6.0;
	X = X+ Z* DH/ 24.0;
end
local T = (R1/(R1+h_))*(R1/(R1+h_))/ Y;
local A = math.exp(-A2*X);
local RO= RO1*(T1/T)*A;
A = A1*math.sqrt(math.abs(T));
if	   A < 295.0 then A = 295.0
elseif A > 340.4 then A = 340.4 end

if 	   RO < 0.0 then RO = 0.0
elseif RO > 0.12551 then RO = 0.12551 end

local	VelSound = A;
local 	Dens 	 = RO*G1;
local 	T_air 	 = T;

return A, 	  -- speed of sound
	   RO*G1, -- air density
	   T 	  -- air temperature
end


dofile("./Scripts/Aircrafts/Ka-50/Cockpit/devices.lua") -- enumeration of cockpit devices

local ADI = GetDevice(devices.ADI)
local HSI = GetDevice(devices.HSI)


function LoGetIndicatedAirSpeed()
local vs_h,ro_h,t_h = satm(LoGetAltitudeAboveSeaLevel())
local vs_0,ro_0,t_0 = satm(0)
return LoGetTrueAirSpeed() * math.sqrt(ro_h/ro_0)
end

function LoGetMachNumber()
local  vs_h,ro_h,t_h = satm(LoGetAltitudeAboveSeaLevel())
return LoGetTrueAirSpeed() / vs_h
end

function LoGetAngleOfAttack()
return 0 --unavailable to export at current moment
end

function LoGetADIPitchBankYaw()
return ADI:get_pitch(),
	   ADI:get_bank(),
	   HSI:get_heading()
end

function LoGetSlipBallPosition()
return ADI:get_sideslip()
end

function LoGetVerticalVelocity()
return 0 --unavailable to export at current moment 
end

function LoGetControlPanel_HSI()
return 0, -- ADF unavailable to export at current moment 
	   0, -- RMI unavailable to export at current moment  
	   HSI:get_heading()
end

sigpic2354_5.gif
Link to comment
Share on other sites

Не нервничай, у тебя нет варианта "банально не хватает времени" - и это действительно так.

 

Да не вопрос. Я не нервничаю, даже смайлов натыкал, что бы это как претензия не выглядело.

Link to comment
Share on other sites

Не все функции' date=' доступные [в export.lua'] в горячих скалах, работают теперь правильно , это следствие исчезновения управляемых самолетов и полного перехода на новую базу в кокпите.исправить ситуацию запланировано в патче , пока предлагается следующий фикс

 

 
--------------------------- Ka-50 fix --------------------------------

function satm(H)--calculate standart atmosphere parameters VelSound,Dens,T_air
local PH  ={-2,10.5,11.2,11.5,24.5,25.16,25.5}
local K   ={0.00025,-0.386248,1.2661,-0.88011,-0.170736,0.506547,-0.33585}
local RG  =287.039
local T1  =301.19
local RO1 =0.15072
local P1  =13031.0
local G1  =9.80665
local R1  =6371.21
local Y1  =3.322227e-3
local YH1 =0.708257e-4
local YHH1=0.304223e-5
local A1  =20.0463
local A2  =0.0341649
	  
local h_ = H*0.001;
local DH = h_- PH[1];
local Y  = Y1 + DH* (YH1+ DH*YHH1/ 2.0);
local X  = 1000*DH*(Y1+ DH*(YH1+ DH*YHH1/3.0)/ 2.0)
local Z;
for i = 1,7 do
	DH= h_- PH[i]
	if DH <= 0 then
		break
	end
	Z = DH* K[i]* DH*DH;
	Y = Y+ 0.001*Z/ 6.0;
	X = X+ Z* DH/ 24.0;
end
local T = (R1/(R1+h_))*(R1/(R1+h_))/ Y;
local A = math.exp(-A2*X);
local RO= RO1*(T1/T)*A;
A = A1*math.sqrt(math.abs(T));
if	   A < 295.0 then A = 295.0
elseif A > 340.4 then A = 340.4 end

if 	   RO < 0.0 then RO = 0.0
elseif RO > 0.12551 then RO = 0.12551 end

local	VelSound = A;
local 	Dens 	 = RO*G1;
local 	T_air 	 = T;

return A, 	  -- speed of sound
	   RO*G1, -- air density
	   T 	  -- air temperature
end


dofile("./Scripts/Aircrafts/Ka-50/Cockpit/devices.lua") -- enumeration of cockpit devices

local ADI = GetDevice(devices.ADI)
local HSI = GetDevice(devices.HSI)


function LoGetIndicatedAirSpeed()
local vs_h,ro_h,t_h = satm(LoGetAltitudeAboveSeaLevel())
local vs_0,ro_0,t_0 = satm(0)
return LoGetTrueAirSpeed() * math.sqrt(ro_h/ro_0)
end

function LoGetMachNumber()
local  vs_h,ro_h,t_h = satm(LoGetAltitudeAboveSeaLevel())
return LoGetTrueAirSpeed() / vs_h
end

function LoGetAngleOfAttack()
return 0 --unavailable to export at current moment
end

function LoGetADIPitchBankYaw()
return ADI:get_pitch(),
	   ADI:get_bank(),
	   HSI:get_heading()
end

function LoGetSlipBallPosition()
return ADI:get_sideslip()
end

function LoGetVerticalVelocity()
return 0 --unavailable to export at current moment 
end

function LoGetControlPanel_HSI()
return 0, -- ADF unavailable to export at current moment 
	   0, -- RMI unavailable to export at current moment  
	   HSI:get_heading()
end

Всё сказанное автором - вымесел, и не может быть использовано как доказательство в суде.

Мой блог | My blog

Link to comment
Share on other sites

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

 

--------------------------- Ka-50 fix --------------------------------
....

 

День добрый. Alex O'kean, проконсультируйте пожалуйста.

Теперь функция возвращает результат, но что это за результат?

 

Судя по указанному -

LoGetIndicatedAirSpeed() -- (args - 0, results - 1 (m/s))

LoGetTrueAirSpeed() -- (args - 0, results - 1 (m/s))

 

это метры в секунду. Но... какую скорость выдают эти функции?

 

При показании на ИЛС в ~200 - она возвращает 0.02-0.03... чаще отрицательное значение -0.40 и т.д.

 

Дополнительно, с этим кодом в export.lua при аварии или покидании вертолёта программа падает в корку.

 

P.S.: Если действительно недостаёт времени, как говорит USSR_Rik, ну или лень с этим сейчас разбираться (в хорошем смысле), вместо решения этого - будем ждать тогда Большой патч. Только отпишите, пожалуйста, что это за скорости LoGetIndicatedAirSpeed и LoGetTrueAirSpeed.

Link to comment
Share on other sites

  • ED Team
День добрый. Alex O'kean, проконсультируйте пожалуйста.

Теперь функция возвращает результат, но что это за результат?

 

Судя по указанному -

LoGetIndicatedAirSpeed() -- (args - 0, results - 1 (m/s))

LoGetTrueAirSpeed() -- (args - 0, results - 1 (m/s))

 

это метры в секунду. Но... какую скорость выдают эти функции?

 

При показании на ИЛС в ~200 - она возвращает 0.02-0.03... чаще отрицательное значение -0.40 и т.д.

 

Дополнительно, с этим кодом в export.lua при аварии или покидании вертолёта программа падает в корку.

 

P.S.: Если действительно недостаёт времени, как говорит USSR_Rik, ну или лень с этим сейчас разбираться (в хорошем смысле), вместо решения этого - будем ждать тогда Большой патч. Только отпишите, пожалуйста, что это за скорости LoGetIndicatedAirSpeed и LoGetTrueAirSpeed.

 

Позвольте вам не поверить .

Я вложил мой вариант использования скрипта плюс лог полета в квик старте

ваш код в студию , будем разбираться

Export.zip

sigpic2354_5.gif
Link to comment
Share on other sites

Позвольте вам не поверить .

Я вложил мой вариант использования скрипта плюс лог полета в квик старте

ваш код в студию , будем разбираться

 

День добрый, Alex O'kean.

 

Действительно, Ваш вариант работает превосходно, плюс к тому переделанный вариант, где вывод перенесён из LuaExportActivityNextEvent в LuaExportAfterNextFrame и записью в сокет работает тоже прекрасно (excellent.zip). Внутри архива простейший сервер на perl, слушающий сокет. Я доволен как слон. Огромное спасибо за помощь.

 

Мой же старый вариант, где Ваш код тупо перенесён в идущий в поставке export.lua и переделаный для вывода в файл (not-work.zip, лог прилагается) - не работает. Можете посмотреть, в общем-то можно и не смотреть наверно :)

 

P.S.: И всё таки чем LoGetIndicatedAirSpeed от LoGetTrueAirSpeed отличается? (сложно понять - LoGetIndicatedAirSpeed получается умножением LoGetTrueAirSpeed на корень из чего-то страшного, но воздушного... :) )

not-work.zip

excellent.zip

Link to comment
Share on other sites

  • ED Team
День добрый, Alex O'kean.

 

Действительно, Ваш вариант работает превосходно, плюс к тому переделанный вариант, где вывод перенесён из LuaExportActivityNextEvent в LuaExportAfterNextFrame и записью в сокет работает тоже прекрасно (excellent.zip). Внутри архива простейший сервер на perl, слушающий сокет. Я доволен как слон. Огромное спасибо за помощь.

 

Мой же старый вариант, где Ваш код тупо перенесён в идущий в поставке export.lua и переделаный для вывода в файл (not-work.zip, лог прилагается) - не работает. Можете посмотреть, в общем-то можно и не смотреть наверно :)

 

P.S.: И всё таки чем LoGetIndicatedAirSpeed от LoGetTrueAirSpeed отличается? (сложно понять - LoGetIndicatedAirSpeed получается умножением LoGetTrueAirSpeed на корень из чего-то страшного, но воздушного... :) )

IndicatedSpeed приборная скорость , в отличии от истинной является скорее не скоростью а мерой скоростного напора , выдается СВС

расчет происходит исходя из условий равенста скоростного напора

q = ro * V^2 /2

соответсвенно из равенства уравнения ro(H=0) * Vпр^2 = ro(H)*V^2

 

Учим матчасть

 

P.S.

 

в вашем варианте скрипта указано для format четыре поля , а суете ему пять :

io.write(string.format("t = %.2f, alrRad = %.2f, altBar = %.2f, speed = %.2f\n", t, altRad, altBar, bank, speed))

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


Edited by Alex O'kean
sigpic2354_5.gif
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...