0 Members and 1 Guest are viewing this topic.
CockpitCamRotateLeft = LEFT ALTCockpitCamRotateRight = RIGHT ALTCockpitCamRotateUp = UP ALTCockpitCamRotateDown = DOWN ALTCockpitCamDontLean = DOWN CTRL ALTCockpitCamLeanForward = UP CTRL ALTCockpitCamLeanLeft = LEFT CTRL ALTCockpitCamLeanRight = RIGHT CTRL ALTCockpitResetCam = HOMEPanelShiftLeft = LEFT PanelShiftRight = RIGHTPanelShiftUp = UPPanelShiftDown = DOWNPanelSwitchLeft = LEFT CTRLPanelSwitchRight = RIGHT CTRLPanelSwitchUp = UP CTRLPanelSwitchDown = DOWN CTRLTrackCamRotateLeft = LEFT CTRLTrackCamRotateRight = RIGHT CTRLTrackCamRotateUp = UP CTRLTrackCamRotateDown = DOWN CTRLTrackCamAdvance = PGDOWNTrackCamRetreat = PGUPGroundCamTiltLeft = LEFTGroundCamTiltRight = RIGHTGroundCamTiltUp = UPGroundCamTiltDown = DOWNIncMainThrust = ADD CTRLDecMainThrust = SUBTRACT CTRLKillMainRetroThrust = MULTIPLYOverrideFullMainThrust = ADDOverrideFullRetroThrust = SUBTRACTIncHoverThrust = NUMPAD0DecHoverThrust = DECIMALRCSEnable = DIVIDE CTRLRCSMode = DIVIDERCSPitchUp = NUMPAD2RCSPitchDown = NUMPAD8RCSYawLeft = NUMPAD1RCSYawRight = NUMPAD3RCSBankLeft = NUMPAD4RCSBankRight = NUMPAD6RCSUp = NUMPAD2RCSDown = NUMPAD8RCSLeft = NUMPAD1RCSRight = NUMPAD3RCSForward = NUMPAD6RCSBack = NUMPAD9LPRCSPitchUp = NUMPAD2 CTRLLPRCSPitchDown = NUMPAD8 CTRLLPRCSYawLeft = NUMPAD1 CTRLLPRCSYawRight = NUMPAD3 CTRLLPRCSBankLeft = NUMPAD4 CTRLLPRCSBankRight = NUMPAD6 CTRLLPRCSUp = NUMPAD2 CTRLLPRCSDown = NUMPAD8 CTRLLPRCSLeft = NUMPAD1 CTRLLPRCSRight = NUMPAD3 CTRLLPRCSForward = NUMPAD6 CTRLLPRCSBack = NUMPAD9 CTRLNMHoldAltitude = NMHLevel = L CTRL SHIFTNMPrograde = A CTRL SHIFTNMRetrograde = S CTRL SHIFTNMNormal = SEMICOLON CTRL SHIFTNMAntinormal = APOSTROPHE CTRL SHIFTNMKillrot = NUMPAD5Undock = D CTRL SHIFTIncElevatorTrim = DELETEDecElevatorTrim = INSERTWheelbrakeLeft = COMMAWheelbrakeRight = PERIODHUD = H CTRLHUDMode = HHUDReference = R CTRLHUDTarget = R CTRL ALTHUDColour = H ALTIncSimSpeed = T SHIFTDecSimSpeed = R SHIFTIncFOV = X SHIFTDecFOV = Z SHIFTStepIncFOV = X CTRLStepDecFOV = Z CTRLMainMenu = F4DlgHelp = F1 ALTDlgCamera = F1 CTRLDlgSimspeed = F2 CTRLDlgCustomCmd = F4 CTRLDlgVisualHelpers = F9 CTRLDlgRecorder = F5 CTRLDlgInfo = I CTRLDlgMap = M CTRLDlgNavaid = N CTRLToggleInfo = I CTRL SHIFTToggleFPS = FToggleCamInternal = F1ToggleTrackMode = F2TogglePanelMode = F8TogglePlanetarium = F9ToggleRecPlay = C CTRLPause = P CTRLQuicksave = S CTRLQuit = Q CTRLDlgSelectVessel = F3SelectPrevVessel = F3 CTRL
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.#Warn ; Enable warnings to assist with detecting common errors.SendMode Input ; Recommended for new scripts due to its superior speed and reliability.SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.SetKeyDelay,10,30;Position et taille du MFD1pltMFD1PosX:=2060pltMFD1PosY:=418pltMFD1Width:=600pltMFD1Height:=600;Position et taille du MFD2pltMFD2PosX:=1440pltMFD2PosY:=418pltMFD2Width:=600pltMFD2Height:=600!i::InitMfds() ;Appuyez ALT+i pour lancer le script et ouvrir les deux MFDspause::suspend ;Appuyez sur "pause" pour susprendre/activer la prise en compte des raccourcis clavier;Raccourcis clavier du MFD1q::ClickButton(pltMfd1Handle,"ExtMfd_Button15") ;Bouton superieur gauchew::ClickButton(pltMfd1Handle,"ExtMfd_Button13")e::ClickButton(pltMfd1Handle,"ExtMfd_Button11")r::ClickButton(pltMfd1Handle,"ExtMfd_Button9")t::ClickButton(pltMfd1Handle,"ExtMfd_Button7")y::ClickButton(pltMfd1Handle,"ExtMfd_Button5") ;Bouton inferieur gaucheu::ClickButton(pltMfd1Handle,"ExtMfd_Button3") ;Bouton PWRi::ClickButton(pltMfd1Handle,"ExtMfd_Button2") ;Bouton SELo::ClickButton(pltMfd1Handle,"ExtMfd_Button1") ;Bouton MENUp::ClickButton(pltMfd1Handle,"ExtMfd_Button4") ;Bouton inferieur droit[::ClickButton(pltMfd1Handle,"ExtMfd_Button6")]::ClickButton(pltMfd1Handle,"ExtMfd_Button8")f::ClickButton(pltMfd1Handle,"ExtMfd_Button10")j::ClickButton(pltMfd1Handle,"ExtMfd_Button12") k::ClickButton(pltMfd1Handle,"ExtMfd_Button14") ;Raccourcis clavier du MFD2F6::ClickButton(pltMfd2Handle,"ExtMfd_Button15") ;Bouton superieur gauche'::ClickButton(pltMfd2Handle,"ExtMfd_Button13")z::ClickButton(pltMfd2Handle,"ExtMfd_Button11")x::ClickButton(pltMfd2Handle,"ExtMfd_Button9")c::ClickButton(pltMfd2Handle,"ExtMfd_Button7")v::ClickButton(pltMfd2Handle,"ExtMfd_Button5") ;Bouton inferieur gaucheb::ClickButton(pltMfd2Handle,"ExtMfd_Button3") ;Bouton PWRn::ClickButton(pltMfd2Handle,"ExtMfd_Button2") ;Bouton SELm::ClickButton(pltMfd2Handle,"ExtMfd_Button1") ;Bouton MENUF12::ClickButton(pltMfd2Handle,"ExtMfd_Button4") ;Bouton inferieur droit F11::ClickButton(pltMfd2Handle,"ExtMfd_Button6")F10::ClickButton(pltMfd2Handle,"ExtMfd_Button8")F7::ClickButton(pltMfd2Handle,"ExtMfd_Button10")=::ClickButton(pltMfd2Handle,"ExtMfd_Button12") -::ClickButton(pltMfd2Handle,"ExtMfd_Button14") ;Bouton superieur droitInitMfds(){ global WinActivate,Orbiter 2010 [D3D9Client] Send {F4} WinActivate, Main Sleep 500 Send {Click 40, 285} WinWait, Custom Functions Control, ChooseString, External Mfd, ListBox1, Custom ControlClick, Button1, Custom WinWait,MFD WinSetTitle,pltMfd1 WinMove,pltMfd1,,%pltMfd1PosX%,%pltMfd1PosY%,%pltMfd1Width%,%pltMfd1Height% WinGet,pltMfd1Handle,ID,pltMfd1 WinActivate, Main Send {Click} WinWait, Custom Functions Control, ChooseString, External Mfd, ListBox1, Custom ControlClick, Button1, Custom WinWait,MFD WinSetTitle,pltMfd2 WinMove,pltMfd2,,%pltMfd2PosX%,%pltMfd2PosY%,%pltMfd2Width%,%pltMfd2Height% WinGet,pltMfd2Handle,ID,pltMfd2 WinClose, Main WinActivate,Orbiter 2010 [D3D9Client] return }ClickButton(mfdHandle,button){ ControlClick,%button%,ahk_id %mfdHandle%}
#include <HIDKeyboard.h>HIDKeyboard keyboard; // Initialize HIDKeyboard objectint j = 1; // integer used in scanning the array designating column number//2-dimensional array for asigning the buttons and there high and low valuesint Button[15][3] = {{1, 928, 933}, // button 1 {2, 849, 854}, // button 2 {3, 784, 789}, // button 3 {4, 727, 733}, // button 4 {5, 628, 633}, // button 5 {6, 553, 557}, // button 6 {7, 467, 473}, // button 7 {8, 403, 410}, // button 8 {9, 341, 345}, // button 9 {10, 294, 299}, // button 10 {11, 245, 249}, // button 11 {12, 196, 201}, // button 12 {13, 135, 140}, // button 13 {14, 97, 102}, // button 14 {15, 64, 70}, // button 15}; int analogpin = 0; // analog pin to read the buttonsint label = 0; // for reporting the button labelint counter = 0; // how many times we have seen new valuelong time = 0; // the last time the output pin was sampledint debounce_count = 50; // number of millis/samples to consider before declaring a debounced inputint current_state = 0; // the debounced input valueint ButtonVal;void setup(){ Serial.begin(9600); keyboard.begin(); // Start communication delay(2000); // Wait for device to be found as a keyboard }void loop(){ // If we have gone on to the next millisecond if (millis() != time) { // check analog pin for the button value and save it to ButtonVal ButtonVal = analogRead(analogpin); if(ButtonVal == current_state && counter >0) { counter--; } if(ButtonVal != current_state) { counter++; } // If ButtonVal has shown the same value for long enough let's switch it if (counter >= debounce_count) { counter = 0; current_state = ButtonVal; //Checks which button or button combo has been pressed if (ButtonVal > 0) { ButtonCheck(); } } time = millis(); }}void ButtonCheck(){ // loop for scanning the button array. for(int i = 0; i <= 15; i++) { // checks the ButtonVal against the high and low vales in the array if(ButtonVal >= Button[i][j] && ButtonVal <= Button[i][j+1]) { // stores the button number to a variable label = Button[i][0]; Action(); } }}void Action(){ if(label == 1) { keyboard.pressKey('q'); delay(40); keyboard.releaseKey(); } if(label == 2) { keyboard.pressKey('w'); delay(40); keyboard.releaseKey(); } if(label == 3) { keyboard.pressKey('e'); delay(40); keyboard.releaseKey(); } if(label == 4) { keyboard.pressKey('r'); delay(40); keyboard.releaseKey(); } if(label == 5) { keyboard.pressKey('t'); delay(40); keyboard.releaseKey(); } if(label == 6) { keyboard.pressKey('y'); delay(40); keyboard.releaseKey(); } if(label == 7) { keyboard.pressKey('u'); delay(40); keyboard.releaseKey(); } if(label == 8) { keyboard.pressKey('i'); delay(40); keyboard.releaseKey(); } if(label == 9) { keyboard.pressKey('o'); delay(40); keyboard.releaseKey(); } if(label == 10) { keyboard.pressKey('p'); delay(40); keyboard.releaseKey(); } if(label == 11) { keyboard.pressKey('['); delay(40); keyboard.releaseKey(); } if(label == 12) { keyboard.pressKey(']'); delay(40); keyboard.releaseKey(); } if(label == 13) { keyboard.pressKey('f'); delay(40); keyboard.releaseKey(); } if(label == 14) { keyboard.pressKey('j'); delay(40); keyboard.releaseKey(); } if(label == 15) { keyboard.pressKey('k'); delay(40); keyboard.releaseKey(); } //Serial.println("Button =:"); //Serial.println(label); //delay(200); }
int Button[15][3] = {{1, 928, 933}, // button 1 {2, 849, 854}, // button 2 {3, 784, 789}, // button 3 {4, 727, 733}, // button 4 {5, 628, 633}, // button 5 {6, 553, 557}, // button 6 {7, 467, 473}, // button 7 {8, 403, 410}, // button 8 {9, 341, 345}, // button 9 {10, 294, 299}, // button 10 {11, 245, 249}, // button 11 {12, 196, 201}, // button 12 {13, 135, 140}, // button 13 {14, 97, 102}, // button 14 {15, 64, 70}, // button 15};
-- ******************************************-- ********read number lines from scn file***-- ******************************************function line_read (file) number_lines=0 local g = io.open(file,"r") if g ~= nil then repeat t = g:read() number_lines=number_lines+1 until t == nil g:close() endend-- *****************************************-- *********end function line_read *********-- *****************************************-- *******************************************-- ********load lines from scn file***********-- *******************************************function load_scnfile (file,n) slist={} local f = io.open(file,"r") if f ~= nil then for i=1,n do t = f:read() if t == nil then break end slist[i]=t end f:close() end return slistend-- ******************************************-- *********end function load_scnfile *******-- ******************************************-- *******************************************-- ***********load ship status****************-- *******************************************function load_ship_status (pattern) note:set_colour ({r=0.0,g=0.7,b=0.2}) note:set_text(pattern) proc.wait_sysdt(0.2) status_array={} level_array={} for i=1,number_lines-1 do s1 = slist[i] s2=string.find(s1,pattern) if s2==7 then for j=i, number_lines-1 do if string.match (slist[j], 'RCSMODE')~=nil then note:set_colour ({r=0.8,g=0.4,b=0.8}) _,_,aux,status = string.find(slist[j],"(.+) (.+)") status_array[1]=status note:set_text('Mode rcs'..'=>'..status_array[1]) proc.wait_sysdt(0.81) elseif string.match (slist[j], 'NOSECONE')~=nil then _,_,_,status,level = string.find(slist[j],"(.+) (.+) (.+)") status_array[2]=status level_array[2]=level note:set_text('NOSECONE=>'..status_array[2]..' '..level_array[2]) proc.wait_sysdt(1.21) elseif string.match (slist[j], 'GEAR')~=nil then _,_,_,status,level = string.find(slist[j],"(.+) (.+) (.+)") status_array[3]=status level_array[3]=level note:set_text('GEAR=>'..status_array[3]..' '..level_array[3]) proc.wait_sysdt(1.21) elseif string.match (slist[j], 'RADIATOR')~=nil then _,_,_,status,level = string.find(slist[j],"(.+) (.+) (.+)") status_array[4]=status level_array[4]=level note:set_text('RADIATOR=>'..status_array[4]..' '..level_array[4]) proc.wait_sysdt(1.21) elseif string.match (slist[j], 'HATCH')~=nil then _,_,_,status,level = string.find(slist[j],"(.+) (.+) (.+)") status_array[5]=status level_array[5]=level note:set_text('HATCH=>'..status_array[5]..' '..level_array[5]) proc.wait_sysdt(1.21) elseif slist[j]=='END' then note:set_colour ({r=0.8,g=0.2,b=0.2}) note:set_text(slist[j]) proc.wait_sysdt(1.21) flag_out=1 break end end end if flag_out==1 then flag_out=nil break end endend-- ****************************************-- *******end function load_ship_status ***-- ****************************************note = oapi.create_annotation()note:set_pos (0.35,0.1,0.8,0.95)note:set_colour ({r=0.9,g=0.5,b=0.2})data_path = 'Scenarios/XR2 Ravenstar/essailua.scn'ship = ':XR2Ravenstar'intro = 'LUA challenge:\n\Launch LUA and\use data extracted from the file.\Try to print them on the screen.\n'note:set_text(ship)proc.wait_sysdt(0.2)note:set_text(intro)proc.wait_sysdt(0.2)note:set_colour ({r=0.9,g=0.5,b=0.2})-- ******************************************-- ***********begin call functions **********-- ******************************************sfirst = line_read (data_path)slist = load_scnfile (data_path,number_lines)lstatus = load_ship_status (ship)-- ******************************************-- ************ end call functions **********-- ******************************************note:set_text('End program')proc.wait_sysdt(1)note:set_text(' ')proc.wait_sysdt(1)
data_path = 'Scenarios/Scenarios/XR5 Vanguard/In Orbit.scn'ship = ':XR5Vanguard'
BEGIN_ENVIRONMENT System Sol Date MJD 51984.6216048103 SCRIPT Script/test.luaEND_ENVIRONMENT
BEGIN_ENVIRONMENT System Sol Date MJD 51984.6055217260 SCRIPT Demos/nom_du_scriptEND_ENVIRONMENT
Je suppose que tu peux faire le même chose pour le carburant? et afficher tes réserve sur un écran?Car mon probleme pour le moment c'est l'affichage de ce genre de données (Carburant APU, Moteur, Scram, quantite LOX)
BEGIN_ENVIRONMENT System Sol Date MJD 51984,6704617905 Script Simpit/Init_simpitEND_ENVIRONMENT
-- ******************************************-- ********read number lines from scn file***-- ******************************************function line_read (file) number_lines=0 local g = io.open(file,"r") if g ~= nil then repeat t = g:read() number_lines=number_lines+1 until t == nil g:close() endend-- *****************************************-- *********end function line_read *********-- *****************************************-- *******************************************-- ********load lines from scn file***********-- *******************************************function load_scnfile (file,n) slist={} local f = io.open(file,"r") if f ~= nil then for i=1,n do t = f:read() if t == nil then break end slist[i]=t end f:close() end return slistend-- ******************************************-- *********end function load_scnfile *******-- ******************************************-- *******************************************-- ***********load ship status****************-- *******************************************function load_ship_status (pattern) status_array={} level_array={} for i=1,number_lines-1 do s1 = slist[i] _,_,name,classname = string.find (s1, "(.-):(.+)") if (classname=='XR2Ravenstar') and (ship=='XR2Ravenstar') then status_array[1]=v:get_rcsmode() note:set_text('Mode rcs'..'=>'..status_array[1]) proc.wait_sysdt(0.81) main_fuel=v:get_propellanthandle(0) level_array[1]=v:get_propellantmass(main_fuel) note:set_text('Main fuel=>'..level_array[1]..'kg') proc.wait_sysdt(0.81) rcs_fuel=v:get_propellanthandle(1) level_array[2]=v:get_propellantmass(rcs_fuel) note:set_text('Rcs fuel=>'..level_array[2]..'kg') proc.wait_sysdt(0.81) scram_fuel=v:get_propellanthandle(2) level_array[3]=v:get_propellantmass(scram_fuel) note:set_text('Scram fuel=>'..level_array[3]..'kg') proc.wait_sysdt(0.81) for j=i, number_lines-1 do if string.match (slist[j], 'APU_FUEL_QTY')~=nil then _,_,aux,level = string.find(slist[j],"(.+) (.+)") level_array[4]=level*268 note:set_text('APU fuel'..'=>'..level_array[4]..'kg') proc.wait_sysdt(0.81) elseif string.match (slist[j], 'APU_STATUS')~=nil then _,_,aux,status = string.find(slist[j],"(.+) (.+)") status_array[4]=status note:set_text('Status APU'..'=>'..status_array[4]) proc.wait_sysdt(1.81) elseif string.match (slist[j], 'NOSECONE')~=nil then _,_,_,status,level = string.find(slist[j],"(.+) (.+) (.+)") status_array[5]=status level_array[5]=level note:set_text('NOSECONE=>'..status_array[5]..' '..level_array[5]) proc.wait_sysdt(0.81) elseif string.match (slist[j], 'GEAR')~=nil then _,_,_,status,level = string.find(slist[j],"(.+) (.+) (.+)") status_array[6]=status level_array[6]=level note:set_text('GEAR=>'..status_array[6]..' '..level_array[6]) proc.wait_sysdt(0.81) elseif string.match (slist[j], 'RADIATOR')~=nil then _,_,_,status,level = string.find(slist[j],"(.+) (.+) (.+)") status_array[7]=status level_array[7]=level note:set_text('RADIATOR=>'..status_array[7]..' '..level_array[7]) proc.wait_sysdt(0.81) elseif string.match (slist[j], 'HATCH')~=nil then _,_,_,status,level = string.find(slist[j],"(.+) (.+) (.+)") status_array[8]=status level_array[8]=level note:set_text('HATCH=>'..status_array[8]..' '..level_array[8]) proc.wait_sysdt(0.81) elseif string.match (slist[j], 'LOX_QTY')~=nil then _,_,aux,level = string.find(slist[j],"(.+) (.+)") level_array[9]=level*364 note:set_text('LOX quantity'..'=>'..level_array[9]..'kg') proc.wait_sysdt(0.81) elseif slist[j]=='END' then note:set_colour ({r=0.8,g=0.2,b=0.2}) note:set_text(slist[j]) proc.wait_sysdt(0.81) flag_out=1 break end end elseif (classname=='XR5Vanguard') and (ship=='XR5Vanguard') then note:set_text('XR5Vanguard not implemented, simpit not activated') proc.wait_sysdt(2.01) break elseif (classname=='ShuttleA') and (ship=='ShuttleA') then note:set_text('ShuttleA not implemented, simpit not activated') proc.wait_sysdt(2.01) break elseif (i== number_lines-1) then note:set_text('vessel not implemented, simpit not activated') proc.wait_sysdt(2.01) break end if flag_out==1 then flag_out=nil break end endend-- ****************************************-- *******end function load_ship_status ***-- ****************************************note = oapi.create_annotation()note:set_pos (0.35,0.1,0.8,0.95)note:set_colour ({r=0.9,g=0.5,b=0.2})data_path = 'Scenarios/(Current state).scn'intro = 'Load scn data'note:set_text(intro)proc.wait_sysdt(1.2)note:set_colour ({r=0.9,g=0.0,b=0.0})v=vessel.get_focusinterface() --get vessel handleship=v:get_classname() --know vessel class-- ******************************************-- ***********begin call functions **********-- ******************************************sfirst = line_read (data_path)slist = load_scnfile (data_path,number_lines)lstatus = load_ship_status (ship)-- ******************************************-- ************ end call functions **********-- ******************************************note:set_text('End of program')proc.wait_sysdt(1)note:set_text(' ')proc.wait_sysdt(1)
Content de t'avoir entrainer a essayer une Arduino!Pour la taille des programmes oui tu n'as que ça mais il y a une époque avoir un ordinateur de 8-bits était un luxe :DJe pense qu'il faut savoir optimiser. Si tu veux plus gros tu as la Mega qui monte a 127k
Du reste, je me suis "amusé" à dupliquer quatre fois les mêmes séquences. le programme est donc quatre fois plus long pour le source. Et bien le programme objet à pratiquement pas augmenté en taille. Probablement qu'une fois les subroutines chargées, il se contente d'y faire plusieurs fois appel et ne duplique pas le code.
J'ai pas encore essaye mais c'est sur le même principe que l'autre? défilement des paramètres du vaisseau?
Il va y avoir de plus en plus d'arduinautes!! J'ai amélioré mon code LUA d'initialisation. Désormais, on pourra lire le fichier scn du vaisseau focusé, si c'est un Xr2, un Xr5, ou un ShuttleA. Pour appeler le script LUA:Code: [Select]BEGIN_ENVIRONMENT System Sol Date MJD 51984,6704617905 Script Simpit/Init_simpitEND_ENVIRONMENTLe script LUA:Code: [Select]-- ******************************************-- ********read number lines from scn file***-- ******************************************function line_read (file) number_lines=0 local g = io.open(file,"r") if g ~= nil then repeat t = g:read() number_lines=number_lines+1 until t == nil g:close() endend-- *****************************************-- *********end function line_read *********-- *****************************************-- *******************************************-- ********load lines from scn file***********-- *******************************************function load_scnfile (file,n) slist={} local f = io.open(file,"r") if f ~= nil then for i=1,n do t = f:read() if t == nil then break end slist[i]=t end f:close() end return slistend-- ******************************************-- *********end function load_scnfile *******-- ******************************************-- *******************************************-- ***********load ship status****************-- *******************************************function load_ship_status (pattern) status_array={} level_array={} for i=1,number_lines-1 do s1 = slist[i] _,_,name,classname = string.find (s1, "(.-):(.+)") if (classname=='XR2Ravenstar') and (ship=='XR2Ravenstar') then status_array[1]=v:get_rcsmode() note:set_text('Mode rcs'..'=>'..status_array[1]) proc.wait_sysdt(0.81) main_fuel=v:get_propellanthandle(0) level_array[1]=v:get_propellantmass(main_fuel) note:set_text('Main fuel=>'..level_array[1]..'kg') proc.wait_sysdt(0.81) rcs_fuel=v:get_propellanthandle(1) level_array[2]=v:get_propellantmass(rcs_fuel) note:set_text('Rcs fuel=>'..level_array[2]..'kg') proc.wait_sysdt(0.81) scram_fuel=v:get_propellanthandle(2) level_array[3]=v:get_propellantmass(scram_fuel) note:set_text('Scram fuel=>'..level_array[3]..'kg') proc.wait_sysdt(0.81) for j=i, number_lines-1 do if string.match (slist[j], 'APU_FUEL_QTY')~=nil then _,_,aux,level = string.find(slist[j],"(.+) (.+)") level_array[4]=level*268 note:set_text('APU fuel'..'=>'..level_array[4]..'kg') proc.wait_sysdt(0.81) elseif string.match (slist[j], 'APU_STATUS')~=nil then _,_,aux,status = string.find(slist[j],"(.+) (.+)") status_array[4]=status note:set_text('Status APU'..'=>'..status_array[4]) proc.wait_sysdt(1.81) elseif string.match (slist[j], 'NOSECONE')~=nil then _,_,_,status,level = string.find(slist[j],"(.+) (.+) (.+)") status_array[5]=status level_array[5]=level note:set_text('NOSECONE=>'..status_array[5]..' '..level_array[5]) proc.wait_sysdt(0.81) elseif string.match (slist[j], 'GEAR')~=nil then _,_,_,status,level = string.find(slist[j],"(.+) (.+) (.+)") status_array[6]=status level_array[6]=level note:set_text('GEAR=>'..status_array[6]..' '..level_array[6]) proc.wait_sysdt(0.81) elseif string.match (slist[j], 'RADIATOR')~=nil then _,_,_,status,level = string.find(slist[j],"(.+) (.+) (.+)") status_array[7]=status level_array[7]=level note:set_text('RADIATOR=>'..status_array[7]..' '..level_array[7]) proc.wait_sysdt(0.81) elseif string.match (slist[j], 'HATCH')~=nil then _,_,_,status,level = string.find(slist[j],"(.+) (.+) (.+)") status_array[8]=status level_array[8]=level note:set_text('HATCH=>'..status_array[8]..' '..level_array[8]) proc.wait_sysdt(0.81) elseif string.match (slist[j], 'LOX_QTY')~=nil then _,_,aux,level = string.find(slist[j],"(.+) (.+)") level_array[9]=level*364 note:set_text('LOX quantity'..'=>'..level_array[9]..'kg') proc.wait_sysdt(0.81) elseif slist[j]=='END' then note:set_colour ({r=0.8,g=0.2,b=0.2}) note:set_text(slist[j]) proc.wait_sysdt(0.81) flag_out=1 break end end elseif (classname=='XR5Vanguard') and (ship=='XR5Vanguard') then note:set_text('XR5Vanguard not implemented, simpit not activated') proc.wait_sysdt(2.01) break elseif (classname=='ShuttleA') and (ship=='ShuttleA') then note:set_text('ShuttleA not implemented, simpit not activated') proc.wait_sysdt(2.01) break elseif (i== number_lines-1) then note:set_text('vessel not implemented, simpit not activated') proc.wait_sysdt(2.01) break end if flag_out==1 then flag_out=nil break end endend-- ****************************************-- *******end function load_ship_status ***-- ****************************************note = oapi.create_annotation()note:set_pos (0.35,0.1,0.8,0.95)note:set_colour ({r=0.9,g=0.5,b=0.2})data_path = 'Scenarios/(Current state).scn'intro = 'Load scn data'note:set_text(intro)proc.wait_sysdt(1.2)note:set_colour ({r=0.9,g=0.0,b=0.0})v=vessel.get_focusinterface() --get vessel handleship=v:get_classname() --know vessel class-- ******************************************-- ***********begin call functions **********-- ******************************************sfirst = line_read (data_path)slist = load_scnfile (data_path,number_lines)lstatus = load_ship_status (ship)-- ******************************************-- ************ end call functions **********-- ******************************************note:set_text('End of program')proc.wait_sysdt(1)note:set_text(' ')proc.wait_sysdt(1)
if (classname=='XR2Ravenstar') and (ship=='XR2Ravenstar') then
elseif (classname=='XR5Vanguard') and (ship=='XR5Vanguard') then
elseif (classname=='ShuttleA') and (ship=='ShuttleA') then
vessel not implemented, simpit not activated
BEGIN_FOCUS Ship [b]XR2Ravenstar[/b]END_FOCUS
BEGIN_CAMERA TARGET [b]XR2Ravenstar[/b] MODE Cockpit FOV 40.00END_CAMERA
[b]XR2Ravenstar[/b]:XR2Ravenstar STATUS Orbiting Earth RPOS -5162407.29 -3388968.28 2699300.62 RVEL -4399.314 6283.349 -519.496 AROT -20.92 -43.26 103.28 PRPLEVEL 0:0.604 1:0.938 IDS 0:199 100 NAVFREQ 588 466 84 114 XPDR 193 SECONDARY_HUD 2[...]END
-- ******************************************-- ********read number lines from scn file***-- ******************************************function line_read (file) number_lines=0 local g = io.open(file,"r") if g ~= nil then repeat t = g:read() number_lines=number_lines+1 until t == nil g:close() endend-- *****************************************-- *********end function line_read *********-- *****************************************-- *******************************************-- ********load lines from scn file***********-- *******************************************function load_file (file,n) slist={} local f = io.open(file,"r") if f ~= nil then for i=1,n do t = f:read() if t == nil then break end slist[i]=t end f:close() end return slistend-- ******************************************-- *********end function load_scnfile *******-- ******************************************-- *******************************************-- ***********load xr2 status****************-- *******************************************function load_xr2_status (pattern) status_array={} level_array={} flag_out=0 main_fuel_tank=0 scram_fuel_tank=0 lox_tank=0 nb_tank_main_fuel=0 nb_tank_scram_fuel=0 nb_tank_lox=0 name_ship="" for i=1,40 do status_array[i]="" level_array[i]="" end for i=1,number_lines-1 do s1 = slist[i] _,_,name,classname = string.find (s1, "(.-):(.+)") --***************************************************************************--*****************************************************Begin Xr2 settings****--*************************************************************************** if (classname=='XR2Ravenstar') and (name==name_ship_focused) then name_ship=name status_array[1]=v:get_rcsmode() note:set_text('Mode rcs'..'=>'..status_array[1]) proc.wait_sysdt(0.31) main_fuel=v:get_propellanthandle(0) level_array[1]=v:get_propellantmass(main_fuel) note:set_text('Main fuel=>'..level_array[1]..'kg') proc.wait_sysdt(0.31) rcs_fuel=v:get_propellanthandle(1) level_array[2]=v:get_propellantmass(rcs_fuel) note:set_text('Rcs fuel=>'..level_array[2]..'kg') proc.wait_sysdt(0.31) scram_fuel=v:get_propellanthandle(2) level_array[3]=v:get_propellantmass(scram_fuel) note:set_text('Scram fuel=>'..level_array[3]..'kg') proc.wait_sysdt(0.31) for j=i, number_lines-1 do if string.match (slist[j], 'APU_FUEL_QTY')~=nil then _,_,aux,level = string.find(slist[j],"(.+) (.+)") level_array[4]=level*268 note:set_text('APU fuel'..'=>'..level_array[4]..'kg') proc.wait_sysdt(0.41) elseif string.match (slist[j], 'APU_STATUS')~=nil then _,_,aux,status = string.find(slist[j],"(.+) (.+)") status_array[4]=status note:set_text('Status APU'..'=>'..status_array[4]) proc.wait_sysdt(0.41) elseif string.match (slist[j], 'NOSECONE')~=nil then _,_,_,status,level = string.find(slist[j],"(.+) (.+) (.+)") status_array[20]=status level_array[20]=level note:set_text('NOSECONE=>'..status_array[20]..' '..level_array[20]) proc.wait_sysdt(0.41) elseif string.match (slist[j], 'GEAR')~=nil then _,_,_,status,level = string.find(slist[j],"(.+) (.+) (.+)") status_array[21]=status level_array[21]=level note:set_text('GEAR=>'..status_array[21]..' '..level_array[21]) proc.wait_sysdt(0.41) elseif string.match (slist[j], 'RADIATOR')~=nil then _,_,_,status,level = string.find(slist[j],"(.+) (.+) (.+)") status_array[22]=status level_array[22]=level note:set_text('RADIATOR=>'..status_array[22]..' '..level_array[22]) proc.wait_sysdt(0.41) elseif string.match (slist[j], 'HATCH')~=nil then _,_,_,status,level = string.find(slist[j],"(.+) (.+) (.+)") status_array[23]=status level_array[23]=level note:set_text('HATCH=>'..status_array[23]..' '..level_array[23]) proc.wait_sysdt(0.41) elseif string.match (slist[j], 'LOX_QTY')~=nil then _,_,aux,level = string.find(slist[j],"(.+) (.+)") level_array[24]=level*364 note:set_text('LOX quantity'..'=>'..level_array[24]..'kg') proc.wait_sysdt(0.41) elseif slist[j]=='END' then flag_out=1 break end --Endif du Xr2 end --Next j--***************************************************************--************************************End Xr2 settings***********--***************************************************************--************************************Begin Xr2 payload setting**--*************************************************************** elseif(classname=='XR2PayloadCHM') then CHM_set=0 CHM_capacity=0 CHM_i=i lpayload=xr2_payload_setting(main_fuel_tank, nb_tank_main_fuel, CHM_capacity,CHM_set,CHM_i) elseif(classname=='XR2PayloadMainFuel') then main_fuel_set=4 main_fuel_max_capacity=3350 main_fuel_i=i lpayload=xr2_payload_setting(main_fuel_tank, nb_tank_main_fuel, main_fuel_max_capacity, main_fuel_set,main_fuel_i) elseif(classname=='XR2PayloadSCRAMFuel') then scram_fuel_set=6 scram_fuel_max_capacity=3350 scram_fuel_i=i lpayload=xr2_payload_setting(scram_fuel_tank, nb_tank_scram_fuel, scram_fuel_max_capacity, scram_fuel_set,scram_fuel_i) elseif(classname=='XR2PayloadLOX') then lox_set=9 lox_max_capacity=10545 lox_i=i lpayload=xr2_payload_setting(lox_tank, nb_tank_lox, lox_max_capacity, lox_set, lox_i) elseif(classname=='XR2PayloadLOX_Half') then lox_set=9 lox_max_capacity=5272.5 lox_i=i lpayload=xr2_payload_setting(lox_tank, nb_tank_lox, lox_max_capacity, lox_set, lox_i) elseif(classname=='XR2PayloadEmptyLOX') then lox_set=9 lox_max_capacity=0 lox_i=i lpayload=xr2_payload_setting(lox_tank, nb_tank_lox, lox_max_capacity, lox_set, lox_i)--********************************************************--*****************************End Xr2 payload setting****--******************************************************** end end --Next i data_path = 'Config/XR2RavenstarPrefs.cfg'--******************* begin init xr2 prefs***************** number_lines=0 sfirst = line_read (data_path) slist = load_file (data_path,number_lines) lprefs= load_prefs() --******************** end init xr2 prefs****************** for i=5,15 do note:set_text('level_array['..i..']='..level_array[i]..'Slot='..status_array[i]) --****status payload on screen********* proc.wait_sysdt(1.01) endend-- ****************************************-- *******end function load_xr2_status ***-- ****************************************-- ***********************************************-- *********** Xr2 payload setting ***************-- ***********************************************function xr2_payload_setting (payload_tank, nb_tank_payload,payload_max_capacity,payload_set,payload_i) for k=payload_i, number_lines-1 do if string.match (slist[k], 'ATTACHED')~=nil then _,_,attached,slot,carrier = string.find(slist[k],"(.+):(.+),(.+)") elseif (string.match (slist[k], 'PRPLEVEL')~=nil or classname=='XR2PayloadEmptyLOX') and name_ship_focused==carrier then if classname~='XR2PayloadEmptyLOX' then _,_,aux,level = string.find(slist[k],"(.+):(.+)") elseif classname=='XR2PayloadEmptyLOX' then level=0 end carrier="" payload_tank=level*payload_max_capacity+payload_tank nb_tank_payload=nb_tank_payload+1 level_array[payload_set+nb_tank_payload]=level*payload_max_capacity status_array[payload_set+nb_tank_payload]=slot+1 flag_out=1 if payload_set==4 then nb_tank_main_fuel=nb_tank_payload elseif payload_set==6 then nb_tank_scram_fuel=nb_tank_payload elseif payload_set==9 then nb_tank_lox=nb_tank_payload end break elseif (classname=='XR2PayloadCHM') and (name_ship_focused==carrier) then carrier="" level_array[9]=1 status_array[9]=1 flag_out=1 break elseif slist[k]=='END' then break end endend-- ****************************************-- ******* end function payload setting ***-- ****************************************-- ****************************************-- ********** begin load xr2 prefs ************-- ****************************************function load_prefs() for i=1,number_lines-1 do s1=slist[i] _,_,pref,value = string.find (s1, "(.-)=(.+)") if pref=='APUFuelBurnRate' then note:set_text(pref..'=>'..value) proc.wait_sysdt(0.5) elseif pref=='CoolantHeatingRate' then note:set_text(pref..'=>'..value) proc.wait_sysdt(0.5) end endend-- ****************************************-- ************ end load xr2 prefs ************-- ****************************************-- ****************************************-- ********** begin program ***************-- ****************************************note = oapi.create_annotation()note:set_pos (0.35,0.1,0.8,0.95)note:set_colour ({r=0.9,g=0.5,b=0.2})data_path = 'Scenarios/(Current state).scn'intro = 'Load scn data'note:set_text(intro)proc.wait_sysdt(0.5)note:set_colour ({r=0.9,g=0.0,b=0.0})v=vessel.get_focusinterface()ship=v:get_classname()name_ship_focused=v:get_name()-- ******************************************************-- ***********begin call functions for scn file**********-- ******************************************************sfirst = line_read (data_path)slist = load_file (data_path,number_lines)if ship=='XR2Ravenstar' then lstatus = load_xr2_status (ship)elseif ship=='Xr5Vanguard' then note:set_text('Toward function loop load of XR5Vanguard') proc.wait_sysdt(2.01)elseif ship=='ShuttleA' then note:set_text('Toward function loop load of ShuttleA') proc.wait_sysdt(2.01)else note:set_text('vessel not implemented, simpit not activated') proc.wait_sysdt(2.01)end-- ******************************************************-- ************ end call functions for scn file**********-- ******************************************************note:set_text('End of program')proc.wait_sysdt(1)note:set_text(' ')proc.wait_sysdt(1)
rs232 = require("luars232)