Space Engineers
Jelentkezz be a hozzászóláshoz.
Az esztétikát kritizálták nagyon és, hogy pár találat és elszökött a levegő. Nameg, hogy nagyon a tetejére koncentráltam a tűzerőt.
Végülis mindez igaz, de tekintve, hogy 2 hetem volt rá munka mellett, elszúrt piston-futómű párossal, én azért elégedett vagyok.
Warning! Cargo bay open, shields are down!
A félkész blokokat meg max úgy lehet megoldani hogy megcsinálod a blokkot és vagy nem fejezed be vagy kikapcsolod a blokk rongálást és miután végzel visszakapcsolod.
Viszont SETools progiban nem vágom miért lehet sérült blokkokra is szűrni ha nem lehet állítani a blokk minősítését
Vagy lehet csak én nem tudom hogyan??
Utoljára szerkesztette: RoboKutya78, 2015.10.18. 11:42:36
COMTRAYA.Steam:Robokutya;Asus RX460 4GB DDR5 Intel I5-7400 3GHz Memoria: 16 GB DDR4 B250G Gaming
Az effekt külön kikapcsolásának van értelme. Ha nagyon eldeformálódik egy blokk, akkor esetleg elzárhatja a ki/bejáratot. Ilyenkor vagy leflexeled vagy meghegeszted. Sajnos az sem működik, hogy kicsit megflexeled, míg félkész alakot vesz fel, mert a játék a rongálódott formáját kezeli, ami te már nem látsz.
Warning! Cargo bay open, shields are down!
Szívjon más a gondokkal ne a hajó tervezője:)
Bár ezeket a kapcsolókat se vágom
Ugye van egy ami a blokkok rongálódását kapcsolja ki meg van egy ami a blokkok rongálódásából fakadó effekteket kapcsolja ki külön ha jól emlékszem
Utoljára szerkesztette: RoboKutya78, 2015.10.18. 10:52:20
COMTRAYA.Steam:Robokutya;Asus RX460 4GB DDR5 Intel I5-7400 3GHz Memoria: 16 GB DDR4 B250G Gaming
Igenám, csakhogy a vezérlésre meg reagál. Elég érdekes, hogy a hajóval odébb repülök, kiadom a motornak a forgás parancsot és elkezd forogni a rotor és a rászerelt kar a decay-jal a végén csak úgy a semmiben.
A videó nagyon állat.
Warning! Cargo bay open, shields are down!
COMTRAYA.Steam:Robokutya;Asus RX460 4GB DDR5 Intel I5-7400 3GHz Memoria: 16 GB DDR4 B250G Gaming
Kár hogy nem válaszol senki a lézer antennás távolsági aktiválós ötletemre :( Kiírtam a space engineers fórumra is pedig.
COMTRAYA.Steam:Robokutya;Asus RX460 4GB DDR5 Intel I5-7400 3GHz Memoria: 16 GB DDR4 B250G Gaming
<#eljen>#eljen><#eljen>#eljen><#eljen>#eljen><#eljen>#eljen><#eljen>#eljen>
COMTRAYA.Steam:Robokutya;Asus RX460 4GB DDR5 Intel I5-7400 3GHz Memoria: 16 GB DDR4 B250G Gaming
Valami kalóz bázis költözhetett tőlem 3 km-es távra. Fixen csak ott van. Pár jel elhaladt fölöttem, de most úgy 5 km-re vannak. 6-7 km-re lehetnek a bázisuktól. Elég idegesítő.
Az FPS mostanában nálam is eléggé leesett, nem tudom mi van a játékkal.
Warning! Cargo bay open, shields are down!
COMTRAYA.Steam:Robokutya;Asus RX460 4GB DDR5 Intel I5-7400 3GHz Memoria: 16 GB DDR4 B250G Gaming
Egy síkító pókszerű szörny árnyéka ahogy kergeti az űrmérnök árnyékát? :D
COMTRAYA.Steam:Robokutya;Asus RX460 4GB DDR5 Intel I5-7400 3GHz Memoria: 16 GB DDR4 B250G Gaming
A vége meg tiszta Transformers volt.
Warning! Cargo bay open, shields are down!
Bolygó teaser
Nagyon durva az eheti bolygó bemutató! De nagyon! És az utolsó másodpercek? Áhh, már nem bírok várni :D
Utoljára szerkesztette: laci4321, 2015.10.16. 13:33:13
Milyen ellenség beállítást használsz?
Warning! Cargo bay open, shields are down!
a másik egy két háromszöget formázó alak benne két számítógép meg 3 időzítő a meghajtás meg egy gyémántalakba lerakott formába volt csomagolva az elején egy géppityuval.
Képem még nincs mert nem azon filóztam hogy fotózzak:)
COMTRAYA.Steam:Robokutya;Asus RX460 4GB DDR5 Intel I5-7400 3GHz Memoria: 16 GB DDR4 B250G Gaming
Az ügyes vágta és gyorsította fel a videót. Vajon ténylegesen meddig építhette?
Warning! Cargo bay open, shields are down!
Nálam a fegyverzetet célozza először mindig. Ha sikerül segítséget hívnia, akkor az is először a fegyverzetet célozza és csak utána lövi a hajó többi részét.
Drónt még úgy igazán nem láttam, van róla képed?
Warning! Cargo bay open, shields are down!
Mármint az építkezési stílusa az a videjót lessétek:)
Aki képes arra hogy felvegyen egy teljes állomás felépítését az már vér profi játékos:)
Utoljára szerkesztette: RoboKutya78, 2015.10.15. 22:09:03
COMTRAYA.Steam:Robokutya;Asus RX460 4GB DDR5 Intel I5-7400 3GHz Memoria: 16 GB DDR4 B250G Gaming
akár mit találok ki az ellen mindig megtalálja a gyenge pontját a járműmnek
Csináltam egy dront távirányítással ugye a kamera a leggyengébb láncszem ebbe az esetben Naná hogy teli vágja rakétával a mocsok.
még azt se tudtam mi talált el .
Visszacammogtam a cuccomhoz hogy meglessem mi vaan erre a kis nyomi dron benne csücsült a kockám közepébe és úgy repült vele elfele mint a szél.pedig 5 5 meghajtó volt mind a 4 oldalán a kockámnak ez a kishajó meg a törpe meghajtóival uhh pedig a kockám volt vagy 1 milla tonnás.
Lehet ideje váltanom vissza kell lesnem star trekbe mi folyik ottan.
Utoljára szerkesztette: RoboKutya78, 2015.10.15. 19:33:34
COMTRAYA.Steam:Robokutya;Asus RX460 4GB DDR5 Intel I5-7400 3GHz Memoria: 16 GB DDR4 B250G Gaming
COMTRAYA.Steam:Robokutya;Asus RX460 4GB DDR5 Intel I5-7400 3GHz Memoria: 16 GB DDR4 B250G Gaming
letolto
Utoljára szerkesztette: SUPERTRABI, 2015.10.15. 18:45:05
Steam: Gfegyver
Ncorem meg nincs sajna:)
COMTRAYA.Steam:Robokutya;Asus RX460 4GB DDR5 Intel I5-7400 3GHz Memoria: 16 GB DDR4 B250G Gaming
Ha album kell akkor pl. az nCore-t tudom ajánlani.
Warning! Cargo bay open, shields are down!
De ez már megint olyan hogy nem csomagban tud letölteni
Utoljára szerkesztette: RoboKutya78, 2015.10.15. 16:08:46
COMTRAYA.Steam:Robokutya;Asus RX460 4GB DDR5 Intel I5-7400 3GHz Memoria: 16 GB DDR4 B250G Gaming
Utoljára szerkesztette: RoboKutya78, 2015.10.15. 16:07:12
COMTRAYA.Steam:Robokutya;Asus RX460 4GB DDR5 Intel I5-7400 3GHz Memoria: 16 GB DDR4 B250G Gaming
Kiválaszthatod a képminőséget, de képes csak a hangot is leszedni. Abból is van általában több minőségben is.
Warning! Cargo bay open, shields are down!
A flash Got jó lenne de az csak letölti a filokat de nem konvertál egybe mp3 ra:)
Utoljára szerkesztette: RoboKutya78, 2015.10.15. 11:54:01
COMTRAYA.Steam:Robokutya;Asus RX460 4GB DDR5 Intel I5-7400 3GHz Memoria: 16 GB DDR4 B250G Gaming
Warning! Cargo bay open, shields are down!
vagy csak én nem látom?:)
COMTRAYA.Steam:Robokutya;Asus RX460 4GB DDR5 Intel I5-7400 3GHz Memoria: 16 GB DDR4 B250G Gaming
Az új Sakk-Matt:
A decay még nincs rajta és nem olyan szép, mint elődje volt, de remélhetőleg jobban teljesít majd. Ebbe már került 2 közepes konténer is.
A hajtómű sérül kikapcsolása révén lehet átalakítom a hajtómű szekciókat. De mára már elég volt a játékból.
Utoljára szerkesztette: RJoco, 2015.10.14. 20:23:58
Warning! Cargo bay open, shields are down!
Úgy gondoltam a magamévá tenni, hogy az egészet elfoglalni és irányításom alá vonni. De akkor ez csak sok idővel lehetséges.
Ma egy Carrige-t fogtam és a saját hajtóműveivel vittem haza, mert a kis hajóm elég nehezen bírta volna el. Viszont csak 1 rakéta torony volt rajta.
Nálatok is baromira fénylik az antenna környéke úgy 1000m-en belülről? Elég zavaró.
Warning! Cargo bay open, shields are down!
Az alatt mit értesz, hogy nem tudtad magadévá tenni a hajót? Ha irányítani akarod, akkor a Control Station-t kell magadévá tenni. Ha a tárolókba, reaktorba, mindenfélébe is bele akarsz nyúlni (nyilván bele akarsz nyúlni, és ki akarod szedni, ami bennük van), akkor azokat egyesével kell magadévá tenni. Bizony, ez van...
Steam: Gfegyver
Nálad nem kevés befújásra az egy venti? Azt látom, hogy kifele gyorsan akarod szívni.
Nem vagyok igazán otthon a témában, mert én ilyet még nem üzemeltetek túlélőben, de:
Azt tudom tanácsolni, hogy tölts meg tartályokat levegővel. Akkor talán mindig fogy.
De megpróbálhatsz egy szortírozót is betenni a rendszerbe és visszavezetni a levegőt a fő tartályba. Persze, csak, ha van rá lehetőség, nem tudom, hogy a szortírozó a levegőt is kezeli e.
A másik és tuti működő megoldás az lehet, ha a hajó külső falára teszel egy ventit, mely mindig kifújja a levegőt és erre kötöd az elszívó rendszered. Persze ez pazarlás, de ha az előző ötletek nem működnek, akkor...
Nekem most más nem jut az eszembe.
Edit: Én mindig lekapcsoltam az elszívót is, hogy tuti ne szívja el a levegőt, amit a másik beküld. De lehet, hogy működik az is, hogy amikor nyomás alá helyezed a helységet, akkor az elszívó visszaküldi a levegőt és csak utána kapcsol be a rendes szellőzés. Persze ehhez jó időzítés kell vagy, ha megoldható, akkor scripttel kell üzemeltetni a rendszert.
Utoljára szerkesztette: RJoco, 2015.10.14. 16:43:41
Warning! Cargo bay open, shields are down!
A dolgot tetézi, hogy mindezt 1G-s gravitációs környezetben tetted. Vagyis amikor kiszállsz és nem számítasz rá, hogy nem megy a jetpack (mert a hud szerint be van kapcsolva), akkor szépen leesel és szörnyet halsz.
Nálam szerencsére csak 0,3G a gravitáció, pont az esések miatt, de ez nem mindig és mindenhol lesz így.
Warning! Cargo bay open, shields are down!
COMTRAYA.Steam:Robokutya;Asus RX460 4GB DDR5 Intel I5-7400 3GHz Memoria: 16 GB DDR4 B250G Gaming
Végre összehoztam az első levegő elszívós hangár rendszeremet:)
Első képen bal oldalon látható a levegőszállító rendszere a bázisomnak egy oxigén tartály egy ventilátor. A jobb oldalt az elszívó rendszer ami nincs a hálózatra kötve van egy tartály ami begyűjtésre van állítva és van 3 venti ami elszívásra. A kép az alap állapotot mutatja
Ajtó kinyitásnál a bal oldali ventit lezártam a jobb oldali kinyitva a hudon szépen lassan lowba megy a mutató majd kinyitnak a kapuk, és nem vágódók ki a légnyomástól a hangárból:) Most még lehet finomítani hang fény efeltekkel a dolgot majd:)
-- Viszont egy dologban kellene a segítségetek azt hogy tudom megoldani hogy a beszívó tartályt gombnyomásra üríteni tudjam mert jelenleg csak beszívja a levegőt azt 100% nál kihal a rendszer:)
COMTRAYA.Steam:Robokutya;Asus RX460 4GB DDR5 Intel I5-7400 3GHz Memoria: 16 GB DDR4 B250G Gaming
A hajó nevét el is felejtettem írni. Sakk-Matt-nak hívják :)
Ma gondoltam levadászok egy Mining Hauler-t. Hát nem jött össze. Volt rajta 2 rakétatorony, meg vagy 4 ágyú torony. Én meg kevés rakétával mentem, az ágyútoronnyal meg nem lehet ráközelíteni, így nem tudtam, pontosan hova lövök.
Szomorúan tapasztaltam, hogy a rakétáknak is kell platinium és, hogy egy hauler-en több a fegyverzet, mint a Private Sail-on.
Warning! Cargo bay open, shields are down!
Elég idegesítő, holott kilépésnél még be volt kapcsolva.
Warning! Cargo bay open, shields are down!
Amúgy van hátrafelé is egy és igen, a konnektornál is van egy, ez csak természetes. Bár az sem a legjobb helyen van még.
A másik hajóra való landolást külső nézetből csináltam, még van mit csiszolni a kamerákon. Nameg Flight Assist nélkül nem olyan egyszerű a dolog, de mozgó hajóra másképp nem lehet leszállni.
(Flight Assist (Elite) = Csillapítás)
Azért sajnálatos, hogy kamerával nem lehet körbenézni, mint a pilótaszékből.
Az első-felső kamera tényleg nem a tuti, bár nem a nézelődés, hanem inkább a célzás miatt. Az alsóval egyszerűbben lövök fölé. Viszont amikor tüzelnek az ágyúk, akkor sajna sok mindent nem lehet látni. Meglátjuk a rakétákkal mi lesz a helyzet majd.
Nem lenne rossz lézer célzós fegyverzet. Akkor tuti, hogy pontosan lehetne lőni és nem csak kb-ra. Lőszer spórolás lenne.
Utoljára szerkesztette: RJoco, 2015.10.13. 21:56:48
Warning! Cargo bay open, shields are down!
nincs rajta egy kicsit felesleges kamera mennyiség?
Előre minek kettő az oldalát se vágom minek az ott, alul van a konnektornál?
Elöl a fülkénél én inkább lehegyesíteném. Az alsó jó az maradhat mivel 2 kockányival előrébb lát:)
<#eljen>#eljen>
COMTRAYA.Steam:Robokutya;Asus RX460 4GB DDR5 Intel I5-7400 3GHz Memoria: 16 GB DDR4 B250G Gaming
Az alant lévő hajó is szimmetrikus, ráadásul túlélő módban csináltam az egészet.
Azt el is felejtettem írni, hogy azért hajót fogni nem annyira egyszerű. Lehet, hogy nem hátulról kellett volna neki mennem, hanem elölről, ott nem volt fegyverzete és a hajó kialakítása miatt nem is érhetett volna el a hátsó fegyvereivel. Nameg, ha leszedem az antennát az elején, akkor nem tud segítséget hívni :D
Warning! Cargo bay open, shields are down!
Mindjárt fogtam is vele egy Private Sail-t. Igaz a 3 ágyú az elején elhalálozott, a kis mocsok leszedte őket, de addigra pont az ő fegyverzetének is annyi volt. Aztán még segítséget is hívott, még jó, hogy volt tornyom, azzal azt már el tudtam intézni.
Rátalpaltam a kicsikére, megflexeltem a hajtóműveit, meg a sérült modulokat távolítottam el és a jeladóit csonkítottam meg, majd hazavontattam.
Sajnálatos mód sehogy sem sikerült a magamévá tenni. Minden áramforrását megcsonkítottam, de úgy vettem észre, hogy minden aktív elemet meg kell rongálni, hogy utána magamévá tehessem. Nem vacakoltam, szétszedtem az egészet. Jó sok akkunak és napelemnek való került ki belőle.
Viszont a kis hajóra asszem rakétavetőt kell tegyek az elejére, az talán hatásosabb, mint az ágyú.
Warning! Cargo bay open, shields are down!
Lesz egy kis energiám meglesem köszi:)
ezt a funkciót nem is láttam benne:)
COMTRAYA.Steam:Robokutya;Asus RX460 4GB DDR5 Intel I5-7400 3GHz Memoria: 16 GB DDR4 B250G Gaming
1. hozd létre a szimmetriasíkot a játékban
2. Hagyd meg azt a részét a hajónak, ami alapján le akarod másolni a másikat. A hibás szimmetriájú hajórészt töröld ki.
3. Mentsd el a világot és lépj ki a SE-ből
4. Nyisd meg a világot a SETool-boxban és keresd meg a lemásolandó hajót a listában.
5. Jobb oldalon van egy „Mirror” fül, arra katt és valami olyasmire kell nyomni aztán egy listában hogy „Mirroring with defined symmetry” - tükrözés megadott szimmetriasíkon. Ilyenkor a SETool box felépíti a szimmetriasík alapján a hiányzó hajórészeket.
(Én még csak páncélblokkokkal próbáltam, nem tudom hogy másféle blokkokkal is működik-e a tükrözés)
1.: Válassz ki valamilyen blokkot, pl egy páncél blokkot és nézz rá a hajóra, mintha rá akarnád tenni.
2./a: Nyomj "m" betűt. (többször is nyomhatsz) Ilyenkor a blokkon amire rá akarnád tenni a másikat, színes szimmetriasíkok jelennek meg. Ha megvan a megfelelő, amit rá akarsz tenni, nyomj bal egérgombot. Ha jobb egérgombot nyomsz, azzal törölhetsz már meglévő szimmetriasíkokat.
2./b: Ha pl. törölni akarsz egy már meglévő piros szimmetriasíkot, akkor jelöld ki ugyan azt a szimmetriasíkot az "m" betű nyomogatásával, illeszd rá a már meglévőre (egy megfelelő blokkra nézel) és nyomj egy jobb egérgombot.
3.: A szimmetriaszerkesztést úgy tudod bezárni, hogy megnyomod 2-szer az "n" betűt. (Ha csak 1-szer nyomsz, azzal kikapcsolod a szimmetriát (és ezzel együtt a szimmetriaszerkesztőt), ezért meg kell nyomni újra hogy bekapcsold, de ezúttal már szimmetriamód kapcsol be, a szerkesztője nem, azt az "m"-el tudod újra bekapcsolni.)
Script for automatic rotor stop when a solar panel or oxygen farm has high output.
Version: 0.99d
Sigurd Hansen
*/
#region Variables
const int HighPwrValue = 200; // Set this to your minimum power requirement per panel. (Or oxygen L/min)
const string NameOfSolar = "SolarMain"; // Search for Solar Blocks(Or oxygen farm)
const string NameOfRotorX = "RotorX"; // Search for Rotor Blocks with this name.
const float rotorspeed = 2f; // Max speed of rotor. Will be dynamically adjusted when close to target. Do not remove "f"
const bool EnableTimerMgmt = false; // Enable Dynamic Timer Trigger Management for better accuracy and performance.
const string NameOfTimer = "SolarTimer"; // Set this to the timer responsible for triggering this program.
const float TimerIdleDelay = 8f; // Delay of timer when idle. Do not remove "f"
const float TimerActiveDelay = 2f; // Delay of timer when active. Do not remove "f". Do not set below 2.
const bool EnableTwoAxisMode = true; // Support for dual axis configuration
const string NameOfRotorY = "RotorY"; // Search for this name for extra axis. Must not find x-axis rotors.
const bool EnableOxygenMode = false; // Enables oxygen mode.
// Changes below this line not recommended
//------------------------------------------------------------
List<IMyTerminalBlock> solarBlocks = new List<IMyTerminalBlock>();
List<IMyTerminalBlock> rotorBlocksX = new List<IMyTerminalBlock>();
List<IMyTerminalBlock> rotorBlocksY = new List<IMyTerminalBlock>();
IMyTimerBlock timer;
bool firstrun = true;
#endregion
#region Main
void Main()
{
if (firstrun) {
GridTerminalSystem.SearchBlocksOfName(NameOfSolar, solarBlocks); // Search for Solar Blocks
GridTerminalSystem.SearchBlocksOfName(NameOfRotorX, rotorBlocksX); // Search for Rotor Blocks
GridTerminalSystem.SearchBlocksOfName(NameOfRotorY, rotorBlocksY); // Search for RotorY Blocks
timer = GridTerminalSystem.GetBlockWithName(NameOfTimer) as IMyTimerBlock;
if (timer == null && EnableTimerMgmt) { throw new Exception("Cannot find timer. Check timer name and recompile."); }
if (solarBlocks.Count == 0) { throw new Exception("Cannot find solar panel. Check name and recompile."); }
if (rotorBlocksX.Count == 0) { throw new Exception("Cannot find x-axis rotor blocks. Check name and recompile."); }
if (rotorBlocksY.Count == 0 && EnableTwoAxisMode) { throw new Exception("Cannot find y-axis rotor blocks. Check name and recompile."); }
if (rotorBlocksY.Count < rotorBlocksX.Count && EnableTwoAxisMode) {
int diff = rotorBlocksX.Count - rotorBlocksY.Count;
throw new Exception(diff + " Y-axis rotors missing. Fix and recompile.");
}
firstrun = false;
}
bool[] rotorOn = new bool
bool[] rotorLow = new bool
bool[] rotorFineTune = new bool
bool[] reverse = new bool
bool[] rotorOnY = new bool
bool containsFalse = false; // Dynamic timer management. Increase or decrease timer
float pwr = 0f, lastPwr = 0f; // Current and last power reading
if (EnableOxygenMode) {
for(int i = 0; i < solarBlocks.Count; i++) { // For each oxygen farm...
var solar = solarBlocks as IMyOxygenFarm; // Support for oxygen farm
if(solar != null) { // Yes I am
GetOxygen(solar, ref pwr); // Get oxygen level, return into existing pwr variable
lastPwr = GetAndSetLastOxygen(solar, pwr); // Get and set last runs oxygen level
reverse = (lastPwr < pwr || pwr == 0) ? false : true; // Change rotor direction
rotorOn = (pwr <= HighPwrValue) ? true : false; // Turn on rotor
rotorLow = (pwr < HighPwrValue/2) ? true : false; // Slow or fast rotor
rotorFineTune = (pwr > HighPwrValue*10/11) ? true : false; // Fine tune rotor
}
}
} else {
for(int i = 0; i < solarBlocks.Count; i++) { // For each solar panel...
var solar = solarBlocks as IMySolarPanel; // I am a Solar Panel
if(solar != null) { // Yes I am
GetPower(solar, ref pwr); // Get Power from solar panel, return into existing pwr variable
lastPwr = GetAndSetLastPwr(solar, pwr); // Get and set last runs power
reverse = (lastPwr < pwr || pwr == 0) ? false : true; // Change rotor direction
rotorOn = (pwr <= HighPwrValue) ? true : false; // Turn on rotor
rotorLow = (pwr < HighPwrValue/2) ? true : false; // Slow or fast rotor
rotorFineTune = (pwr > HighPwrValue*10/11) ? true : false; // Fine tune rotor
}
}
}
for(int i = 0; i < rotorBlocksX.Count; i++) { // For each rotorX...
IMyMotorStator rotor = rotorBlocksX as IMyMotorStator; // I am a Rotor
if(rotor != null) { // Yes I am
SetRotorSpeed(rotor, rotorLow, rotorFineTune); // Dynamic rotor speed
if (!rotorOn) { // Turn off...
TriggerRotor(rotor, false, false, ref containsFalse); // Stop rotor
} else if (rotorOn && EnableTwoAxisMode && reverse) { // Turn On, dual axis mode, and reverse
rotorOnY = CheckAndUpdateRotorName(rotor);
if (rotorOnY) {
TriggerRotor(rotor, false, false, ref containsFalse); // Y on, therefore X off.
}
if (!rotorOnY) {
TriggerRotor(rotor, true, reverse, ref containsFalse); // Y off, therefore X on, and reverse.
}
} else if (rotorOn && EnableTwoAxisMode && !reverse) {
rotorOnY = CheckAndUpdateRotorName(rotor);
if (!rotorOnY) {
TriggerRotor(rotor, true, reverse, ref containsFalse); // Start rotor. Reverse if needed
}
} else {
TriggerRotor(rotor, true, reverse, ref containsFalse); // Start rotor. Reverse if needed
}
}
}
if (EnableTwoAxisMode) {
for(int i = 0; i < rotorBlocksY.Count; i++) { // For each rotorY...
IMyMotorStator rotor = rotorBlocksY as IMyMotorStator; // I am a Rotor
if(rotor != null) { // Yes I am
if (rotorOnY == true) {
SetRotorSpeed(rotor, rotorLow, rotorFineTune); // Dynamic rotor speed
TriggerRotor(rotor, true, reverse, ref containsFalse); // Start rotor Y. Reverse if needed
} else {
TriggerRotor(rotor, false, false, ref containsFalse);
}
}
}
}
if (containsFalse && EnableTimerMgmt) { // Dynamic timer stuff
if (timer.TriggerDelay > TimerActiveDelay) {
AdjustTriggerDelay(timer, false); // Decrease Timer Delay
}
} else {
if (timer.TriggerDelay < TimerIdleDelay && EnableTimerMgmt) {
AdjustTriggerDelay(timer, true); // Increase Timer Delay
}
}
}
#endregion
#region Methods
void AdjustTriggerDelay(IMyTimerBlock timer, bool Increase) {
if (Increase) { timer.SetValue("TriggerDelay", TimerIdleDelay); } // Increase Timer Trigger Delay
else { timer.SetValue("TriggerDelay", TimerActiveDelay); } // Decrease Timer Trigger Delay
}
void TriggerRotor(IMyMotorStator rotor, bool state, bool reverse, ref bool containsFalse) {
if (!state) {
rotor.GetActionWithName("OnOff_Off").Apply(rotor); // Stop rotor
} else {
rotor.GetActionWithName("OnOff_On").Apply(rotor); // Start rotor
containsFalse = true; // Adjust timer for better accuracy
if (reverse) { rotor.GetActionWithName("Reverse").Apply(rotor); }
}
}
void GetPower(IMySolarPanel solar, ref float pwr) {
string value = "";
string type = "";
System.Text.RegularExpressions.Regex matchthis = new System.Text.RegularExpressions.Regex(@"^.+\n.+\:\s?(<0-9\.>0-9\.>+)\s(.*)\n.+$");
System.Text.RegularExpressions.Match match = matchthis.Match(solar.DetailedInfo);
if (match.Success)
{
value = match.Groups<1>1>.Value;
type = match.Groups<2>2>.Value;
Echo (value + " " + type);
} else throw new Exception("Can't parse DetailedInfo with regex");
bool test = float.TryParse(value, out pwr); // Get power into variable
if (type == "W") { pwr /= 1000; } // Make sure power is in kW
if (!test) { throw new Exception("Can't parse power reading from solar panel: " + value); }
}
void GetOxygen(IMyOxygenFarm solar, ref float pwr) {
string value = "";
System.Text.RegularExpressions.Regex matchthis = new System.Text.RegularExpressions.Regex(@"^.+\n.+\n.+\:\s?(<0-9\.>0-9\.>+)\s?L.*$");
System.Text.RegularExpressions.Match match = matchthis.Match(solar.DetailedInfo);
if (match.Success)
{
value = match.Groups<1>1>.Value;
Echo (value + " L/min");
} else
{
Echo("Assuming 0; Can't parse DetailedInfo: " + value);
value = "0";
}
bool test = float.TryParse(value, out pwr); // Get oxygen into variable
if (!test) { throw new Exception("Can't parse reading from oxygen farm\n"); }
}
void SetRotorSpeed(IMyMotorStator rotor, bool fast, bool FineTune) {
float SetTo = 0f;
bool VelocityPositive = (rotor.GetValueFloat("Velocity") > 0f) ? true : false; // True if positive velocity
if (fast) { // Under half of required power from solar panel. Will increase speed
SetTo = (VelocityPositive) ? rotorspeed : -rotorspeed;
} else if (FineTune) { // Fine tune speed
SetTo = (VelocityPositive) ? rotorspeed/3.7f : -rotorspeed/3.7f;
} else { // Not far from required power. Lower speed for increased accuracy
SetTo = (VelocityPositive) ? rotorspeed/1.7f : -rotorspeed/1.7f;
}
rotor.SetValue("Velocity", SetTo);
}
float GetAndSetLastPwr(IMySolarPanel solar, float CurrentPower) {
float OldPwr = 0f;
string[] words = solar.CustomName.Split(':'); // Colon split words
if (words.Length > 1) { // If there is data after colon
if (!float.TryParse(words<1>1>, out OldPwr)) { OldPwr = 0f;} // Try to get data into float variable
}
solar.SetCustomName(words<0>0> + ":" + CurrentPower); // Set current power in solar panel name
return OldPwr;
}
float GetAndSetLastOxygen(IMyOxygenFarm solar, float CurrentPower) {
float OldPwr = 0f;
string[] words = solar.CustomName.Split(':'); // Colon split words
if (words.Length > 1) { // If there is data after colon
if (!float.TryParse(words<1>1>, out OldPwr)) { OldPwr = 0f;} // Try to get data into float variable
}
solar.SetCustomName(words<0>0> + ":" + CurrentPower); // Set current power in solar panel name
return OldPwr;
}
bool CheckAndUpdateRotorName(IMyMotorStator rotor) {
int OldCount = 0;
string[] words = rotor.CustomName.Split(':'); // Colon split words
if (words.Length > 1) { // If there is data after colon
if (!int.TryParse(words<1>1>, out OldCount)) { OldCount = 0;} // Try to get data into int variable
}
int NewCount = OldCount + 1;
if (OldCount > 6) {
rotor.SetCustomName(words<0>0> + ":0");
return true;
}
else if (OldCount >= 3) {
rotor.SetCustomName(words<0>0> + ":" + NewCount); // Set current count in rotor name
return true;
} else {
rotor.SetCustomName(words<0>0> + ":" + NewCount); // Set current count in rotor name
return false;
}
}
#endregion
COMTRAYA.Steam:Robokutya;Asus RX460 4GB DDR5 Intel I5-7400 3GHz Memoria: 16 GB DDR4 B250G Gaming