Neon Posted January 26, 2018 Posted January 26, 2018 It should work just fine in 1.5.8 but I cannot be completely sure because I use 2.2. Sent from my iPhone using Tapatalk [sIGPIC][/sIGPIC]
Meiz Posted January 31, 2018 Posted January 31, 2018 Is this working in the 1.5.8 version 1.5.8 Yes, 2.5 dropped today though, will be interesting to see if this still works. Due your instructions are not very clear. What does this mean After installing python open a dos window as admin and install requests using pip install requests What requests? That confused me a little too... Just type "pip install requests" into the command prompt after you have installed Python. Didn't seem to matter which directory i was in. Press Start. Type CMD. Open command prompt . Type pip install requests and then press enter.
Kenta Posted February 6, 2018 Posted February 6, 2018 1.5.8 Yes, 2.5 dropped today though, will be interesting to see if this still works. It works. Failure is the mother of all success.
vTJG17_Jemi Posted February 8, 2018 Posted February 8, 2018 Hi , I want like this tool to try. Can you make a install video please? [sIGPIC]http://marsy.azurewebsites.net/vJaBoG32-Signatur_Jemi.jpg[/sIGPIC]
Johnny_Rico Posted February 26, 2018 Author Posted February 26, 2018 Due your instructions are not very clear. What does this mean After installing python open a dos window as admin and install requests using pip install requests What requests? 2nd Get an API key to grab real time weather from the internet from www.checkwx.com - register an account and then login and go to www.checkwx.com/apikey - fill in the details (remember to say non commercial use) - might take up to 24 hours for him to activate it for you but you can check by going to - https://www.checkwx.com/user/api once you have it copy paste it somewhere safe - dont give your key out to anyone else you only get a certain amount of free reads per month - Our server restarts 4 times per day every 6 hours, so we said we would only use about 200 per month - when filling in the form What API key are you talking about? I really want to use this but need help with this. UPDATE GOT THE KEY but still need help to install Sorry for delay in replying was on an enforced "holiday" from here When you get your API key you need to edit the script and paste it into the following variable s_api_key_checkwx = 'API STRING GOES HERE' then save the file METAR weather for DCS World missions Guide to help out new DCS MOOSE Users -> HERE Havoc Company Dedicated server info Connect IP: 94.23.215.203 SRS enabled - freqs - Main = 243, A2A = 244, A2G = 245 Please contact me HERE if you have any server feedback or METAR issues/requests
Picchio Posted May 30, 2018 Posted May 30, 2018 (edited) Need some help here... can't get my head around this error I keep getting. Any advice? C:\Windows\system32>SET DCS_PATH="C:\Program Files\Eagle Dynamics\DCS World OpenBeta\bin" C:\Windows\system32>SET PRIMARY_AIRPORT=URMO C:\Windows\system32>SET BACKUP_AIRPORT=URMN C:\Windows\system32>SET TIME_CONTROL=real C:\Windows\system32>SET zip="C:\Program Files\7-Zip\7z.exe" C:\Windows\system32>SET MISSION_PATH="D:\Games\MISSION" C:\Windows\system32>SET MISSION_NAME=MYMISSION C:\Windows\system32>SET PYTHON_SCRIPT="C:\Users\Picchio\Desktop\TEST\dcs_weather.py" C:\Windows\system32>SET TEST= C:\Windows\system32>SET HOUR= 0 C:\Windows\system32>IF " " == " " SET HOUR=0 C:\Windows\system32>IF 0 GEQ 18 TIME_CONTROL=6 real C:\Windows\system32>cd /D "D:\Games\MISSION" D:\Games\MISSION>"C:\Users\Picchio\Desktop\TEST\dcs_weather.py" "D:\Games\MISSION"MYMISSION.miz URMO URMN real Not enough arguments need more input usage example dcs_weather.py "D:\DCS_Missions\Weapons_Training_v2.11.2.miz" UGSB UGSS real D:\Games\MISSION>ren MYMISSION.miz MYMISSION.zip D:\Games\MISSION>"C:\Program Files\7-Zip\7z.exe" a -tzip MYMISSION.zip mission -mx9 7-Zip 18.05 (x64) : Copyright © 1999-2018 Igor Pavlov : 2018-04-30 Open archive: MYMISSION.zip WARNINGS: Headers Error -- Path = MYMISSION.zip Type = zip WARNINGS: Headers Error Physical Size = 9504 Scanning the drive: WARNING: The system cannot find the file specified. mission 0 files, 0 bytes Updating archive: MYMISSION.zip Keep old data in archive: 6 files, 130229 bytes (128 KiB) Add new data to archive: 0 files, 0 bytes Files read from disk: 0 Archive size: 9504 bytes (10 KiB) Scan WARNINGS for files and folders: mission : The system cannot find the file specified. ---------------- Scan WARNINGS: 1 D:\Games\MISSION>ren MYMISSION.zip MYMISSION.miz D:\Games\MISSION>cd /D "C:\Program Files\Eagle Dynamics\DCS World OpenBeta\bin" C:\Program Files\Eagle Dynamics\DCS World OpenBeta\bin>start /D"C:\Program Files\Eagle Dynamics\DCS World OpenBeta\bin" /B dcs.exe C:\Program Files\Eagle Dynamics\DCS World OpenBeta\bin>pause Press any key to continue . . . Edited May 30, 2018 by Picchio Updated
Johnny_Rico Posted May 31, 2018 Author Posted May 31, 2018 change SET MISSION_PATH="D:\Games\MISSION" to SET MISSION_PATH=D:\Games\MISSION\ METAR weather for DCS World missions Guide to help out new DCS MOOSE Users -> HERE Havoc Company Dedicated server info Connect IP: 94.23.215.203 SRS enabled - freqs - Main = 243, A2A = 244, A2G = 245 Please contact me HERE if you have any server feedback or METAR issues/requests
Picchio Posted May 31, 2018 Posted May 31, 2018 (edited) Hi, Just made the correction; now getting "WARNING: specified miz file does not exist" Edited May 31, 2018 by Picchio
Picchio Posted May 31, 2018 Posted May 31, 2018 Heads-up. I found a solution. Here's the correction it accepts: SET MISSION_PATH="D:\Games\MISSION\\" Everything else is set as you indicated. Urrà! :D
tn_prvteye Posted June 12, 2018 Posted June 12, 2018 Just out of curiosity, could you theoretically use python to randomly change only the mission time and inject it into the MIZ file? Been looking for a way to do this forever.
Johnny_Rico Posted June 13, 2018 Author Posted June 13, 2018 (edited) This system allows you to use either realtime or presets, I suppose it could be changed to add random as well I will have a look at this later on tonight when I get time Edited June 13, 2018 by Johnny_Rico METAR weather for DCS World missions Guide to help out new DCS MOOSE Users -> HERE Havoc Company Dedicated server info Connect IP: 94.23.215.203 SRS enabled - freqs - Main = 243, A2A = 244, A2G = 245 Please contact me HERE if you have any server feedback or METAR issues/requests
tn_prvteye Posted June 13, 2018 Posted June 13, 2018 Great! Thanks for the help. This one small detail has been driving me crazy for a while.
Johnny_Rico Posted June 13, 2018 Author Posted June 13, 2018 is it just time of day you want changed ? randomised i mean METAR weather for DCS World missions Guide to help out new DCS MOOSE Users -> HERE Havoc Company Dedicated server info Connect IP: 94.23.215.203 SRS enabled - freqs - Main = 243, A2A = 244, A2G = 245 Please contact me HERE if you have any server feedback or METAR issues/requests
tn_prvteye Posted June 13, 2018 Posted June 13, 2018 Yep.. Randomized weather would be nice, but time of day is what I'm mainly after. I've got a mission I created (by stealing alot of other's LUA code) that a pretty good random mix of CAS/CAP stuff going on, and having a random mission time would be perfect for it.
Johnny_Rico Posted June 14, 2018 Author Posted June 14, 2018 updated set b_update_weather = False and use rand for time parameter METAR weather for DCS World missions Guide to help out new DCS MOOSE Users -> HERE Havoc Company Dedicated server info Connect IP: 94.23.215.203 SRS enabled - freqs - Main = 243, A2A = 244, A2G = 245 Please contact me HERE if you have any server feedback or METAR issues/requests
tn_prvteye Posted June 15, 2018 Posted June 15, 2018 Well, I can't seem to get it to work. I can get the weather to update (I tested to make sure had installed everything right), but the time doesn't change, This is a snippet that might be where I'm having a problem. C:\Users\Steve\Saved Games\DCS.openbeta\Missions>"C:\dcs_weather\dcs_weather.py" "C:\Users\Steve\Saved Games\DCS.openbeta\Missions\\"AV8Train.miz KBNA KMQY rand Traceback (most recent call last): File "C:\dcs_weather\dcs_weather.py", line 916, in <module> get_mission_date_time() File "C:\dcs_weather\dcs_weather.py", line 575, in get_mission_date_time convert_to_hr_and_min_to_seconds() File "C:\dcs_weather\dcs_weather.py", line 184, in convert_to_hr_and_min_to_seconds G.s_start_time = str(int(G.s_hour) * 3600 + (int(G.s_mins) * 60) + int(G.s_seconds)) ValueError: invalid literal for int() with base 10: '' I can post the entire debug if you want. Although I have a feeling I'm just missing something simple. Thanks again for this, I'm really grateful.
Johnny_Rico Posted June 16, 2018 Author Posted June 16, 2018 fixed now METAR weather for DCS World missions Guide to help out new DCS MOOSE Users -> HERE Havoc Company Dedicated server info Connect IP: 94.23.215.203 SRS enabled - freqs - Main = 243, A2A = 244, A2G = 245 Please contact me HERE if you have any server feedback or METAR issues/requests
tn_prvteye Posted June 16, 2018 Posted June 16, 2018 You are the MAN! Works perfectly now. It's a small thing, but this has been like the Holy Grail for me. You rock!
Bottle-RUM Posted July 2, 2018 Posted July 2, 2018 (edited) hey Johnny_Rico, i try to get this to work but i'm stuck at 1 scan warning, and i might have the same problem as tn_prvteye? my cmd log; C:\WINDOWS\system32>SET DCS_PATH="D:\Games\Eagle Dynamics\DCS World OpenBeta\bin" C:\WINDOWS\system32>SET PRIMARY_AIRPORT=OMDB C:\WINDOWS\system32>SET BACKUP_AIRPORT=OMDM C:\WINDOWS\system32>SET TIME_CONTROL=real C:\WINDOWS\system32>SET zip="E:\Programma's\7-Zip\7z.exe" C:\WINDOWS\system32>SET MISSION_PATH=C:\Users\tommy\Saved Games\DCS.openbeta\Missions\Persian Gulf\Downloaded\ThroughTheInfernoPersianGulfv1.03\ C:\WINDOWS\system32>SET MISSION_NAME=ThroughTheInfernoPersianGulfCoopv1.03 C:\WINDOWS\system32>SET PYTHON_SCRIPT="D:\Games\Eagle Dynamics\dcs_weather Through the Inferno\DCS Realtime Weather\dcs_weather.py" C:\WINDOWS\system32>SET TEST=2 C:\WINDOWS\system32>SET HOUR=23 C:\WINDOWS\system32>IF "2" == " " SET HOUR=3 C:\WINDOWS\system32>IF 23 GEQ 18 TIME_CONTROL=6 'TIME_CONTROL' is not recognized as an internal or external command, operable program or batch file. real C:\WINDOWS\system32>cd /D C:\Users\tommy\Saved Games\DCS.openbeta\Missions\Persian Gulf\Downloaded\ThroughTheInfernoPersianGulfv1.03\ C:\Users\tommy\Saved Games\DCS.openbeta\Missions\Persian Gulf\Downloaded\ThroughTheInfernoPersianGulfv1.03>"D:\Games\Eagle Dynamics\dcs_weather Through the Inferno\DCS Realtime Weather\dcs_weather.py" C:\Users\tommy\Saved Games\DCS.openbeta\Missions\Persian Gulf\Downloaded\ThroughTheInfernoPersianGulfv1.03\ThroughTheInfernoPersianGulfCoopv1.03.miz OMDB OMDM real Traceback (most recent call last): File "D:\Games\Eagle Dynamics\dcs_weather Through the Inferno\DCS Realtime Weather\dcs_weather.py", line 8, in <module> import requests ModuleNotFoundError: No module named 'requests' C:\Users\tommy\Saved Games\DCS.openbeta\Missions\Persian Gulf\Downloaded\ThroughTheInfernoPersianGulfv1.03>ren ThroughTheInfernoPersianGulfCoopv1.03.miz ThroughTheInfernoPersianGulfCoopv1.03.zip C:\Users\tommy\Saved Games\DCS.openbeta\Missions\Persian Gulf\Downloaded\ThroughTheInfernoPersianGulfv1.03>"E:\Programma's\7-Zip\7z.exe" a -tzip ThroughTheInfernoPersianGulfCoopv1.03.zip mission -mx9 7-Zip [64] 16.04 : Copyright © 1999-2016 Igor Pavlov : 2016-10-04 Open archive: ThroughTheInfernoPersianGulfCoopv1.03.zip WARNINGS: Headers Error -- Path = ThroughTheInfernoPersianGulfCoopv1.03.zip Type = zip WARNINGS: Headers Error Physical Size = 1040757 Scanning the drive: WARNING: The system cannot find the file specified. mission 0 files, 0 bytes Updating archive: ThroughTheInfernoPersianGulfCoopv1.03.zip Items to compress: 0 Files read from disk: 0 Archive size: 1040757 bytes (1017 KiB) Scan WARNINGS for files and folders: mission : The system cannot find the file specified. ---------------- Scan WARNINGS: 1 C:\Users\tommy\Saved Games\DCS.openbeta\Missions\Persian Gulf\Downloaded\ThroughTheInfernoPersianGulfv1.03>ren ThroughTheInfernoPersianGulfCoopv1.03.zip ThroughTheInfernoPersianGulfCoopv1.03.miz C:\Users\tommy\Saved Games\DCS.openbeta\Missions\Persian Gulf\Downloaded\ThroughTheInfernoPersianGulfv1.03>cd /D "D:\Games\Eagle Dynamics\DCS World OpenBeta\bin" my Weather.bat; : example launch file for DCS used with dcs_weather.py : by havoc-company.com : you need python 3 and 7z installed on server hosting PC : you will need to edit this file to change parameters to match your install : contact Johnny Rico in ED forums for any queries : V 1.0.1 SET DCS_PATH="D:\Games\Eagle Dynamics\DCS World OpenBeta\bin" : settings for dcs_weather.py - airports weather to query SET PRIMARY_AIRPORT=OMDB SET BACKUP_AIRPORT=OMDM : you want to use current realtime on server ? SET TIME_CONTROL=real : set this to where your 7z.exe is installed SET zip="E:\Programma's\7-Zip\7z.exe" : where you store your mission miz files SET MISSION_PATH=C:\Users\tommy\Saved Games\DCS.openbeta\Missions\Persian Gulf\Downloaded\ThroughTheInfernoPersianGulfv1.03\ : mission name minus the file extension SET MISSION_NAME=ThroughTheInfernoPersianGulfCoopv1.03 : path and name of weather python script SET PYTHON_SCRIPT="D:\Games\Eagle Dynamics\dcs_weather Through the Inferno\DCS Realtime Weather\dcs_weather.py" SET TEST=%time:~0,1% SET HOUR=%time:~0,2% IF "%TEST%" == " " SET HOUR=%time:~1,1% : this override was added so that if it is too late in the year (dark a lot in evenings) then people would get some time were it is light for a bit IF %HOUR% GEQ 18 TIME_CONTROL=6 @echo %TIME_CONTROL% cd /D %MISSION_PATH% %PYTHON_SCRIPT% %MISSION_PATH%%MISSION_NAME%.miz %PRIMARY_AIRPORT% %BACKUP_AIRPORT% %TIME_CONTROL% : rename .miz to .zip because 7z don't like miz file extension ren %MISSION_NAME%.miz %MISSION_NAME%.zip : add the updated mission to the zip file %zip% a -tzip %MISSION_NAME%.zip mission -mx9 : rename it back to miz ren %MISSION_NAME%.zip %MISSION_NAME%.miz cd /D %DCS_PATH% start /D%DCS_PATH% /B dcs.exe pause my thanks in advance Edited July 8, 2018 by Bottle-RUM Intel® Core™ i7-6900K Processor (watercooled) - Asus ROG Rampage V Edition 10 (watercooled) motherbord - 8 x 8Gb Corsair Vengeance LPX DDR4-3333Mhz RAM (watercooled) - 2 x ROG-STRIX-GTX1080TI-11G-GAMING (watercooled) - Creative X-Fi Titanium Fatal1ty Pro - Logitech G910 Orion Spark - Asus PG348 34'' LCD screen - Razor Tiamat 7.1 - Thrustmaster HOTAS Warthog Replica USAF A-10C - TrackIR 5 - Pro Flight Cessna Rudder Pedals - VAICOM 2.5 PRO
Johnny_Rico Posted July 4, 2018 Author Posted July 4, 2018 from near the top of the python file # you might need to run this in a command line window if this module is not installed # pip install requests open a dos window paste or type pip install requests press the enter button METAR weather for DCS World missions Guide to help out new DCS MOOSE Users -> HERE Havoc Company Dedicated server info Connect IP: 94.23.215.203 SRS enabled - freqs - Main = 243, A2A = 244, A2G = 245 Please contact me HERE if you have any server feedback or METAR issues/requests
Bottle-RUM Posted July 4, 2018 Posted July 4, 2018 (edited) I’ll wil try this asap, Thanks for the quick reply! [PROBLEM SOLVED] oke i "pip install request" worked, i had to be specific in CMD "C:\Users\tommy\AppData\Local\Programs\Python\Python37-32\Scripts>pip install requests" wich makes sense. but i can't/don't know how to set real time or any other time? where exactly do i have to do this? i get the following message in CMD window; C:\WINDOWS\system32>SET DCS_PATH="D:\Games\Eagle Dynamics\DCS World OpenBeta\bin" C:\WINDOWS\system32>SET PRIMARY_AIRPORT=OMDB C:\WINDOWS\system32>SET BACKUP_AIRPORT=OMDM C:\WINDOWS\system32>SET TIME_CONTROL=real C:\WINDOWS\system32>SET zip="E:\Programma's\7-Zip\7z.exe" C:\WINDOWS\system32>SET MISSION_PATH="C:\Users\tommy\Saved Games\DCS.openbeta\Missions\Persian Gulf\Downloaded\ThroughTheInfernoPersianGulfv1.03" C:\WINDOWS\system32>SET MISSION_NAME=ThroughTheInfernoPersianGulfCoopv1.03 C:\WINDOWS\system32>SET PYTHON_SCRIPT="D:\Games\Eagle Dynamics\dcs_weather Through the Inferno\DCS Realtime Weather\dcs_weather.py" C:\WINDOWS\system32>SET TEST=2 C:\WINDOWS\system32>SET HOUR=21 C:\WINDOWS\system32>IF "2" == " " SET HOUR=1 C:\WINDOWS\system32>IF 21 GEQ 18 TIME_CONTROL=6 'TIME_CONTROL' is not recognized as an internal or external command, operable program or batch file. real C:\WINDOWS\system32>cd /D "C:\Users\tommy\Saved Games\DCS.openbeta\Missions\Persian Gulf\Downloaded\ThroughTheInfernoPersianGulfv1.03" C:\Users\tommy\Saved Games\DCS.openbeta\Missions\Persian Gulf\Downloaded\ThroughTheInfernoPersianGulfv1.03>"D:\Games\Eagle Dynamics\dcs_weather Through the Inferno\DCS Realtime Weather\dcs_weather.py" "C:\Users\tommy\Saved Games\DCS.openbeta\Missions\Persian Gulf\Downloaded\ThroughTheInfernoPersianGulfv1.03"ThroughTheInfernoPersianGulfCoopv1.03.miz OMDB OMDM real D:\Games\Eagle Dynamics\dcs_weather Through the Inferno\DCS Realtime Weather\dcs_weather.py:141: DeprecationWarning: 'U' mode is deprecated file = open(s_filename_to_read, "rU", encoding="utf8") b_daws_mission is False s_temperature is 8 s_cloud_thickness_m is 380 s_cloud_density is 5 s_cloud_base_m is 5000 s_iprecptns is 0 s_qnh is 760 s_wind_speed_8k is 15 s_wind_dir_8k is 0 s_wind_speed_2k is 10 s_wind_dir_2k is 0 s_wind_speed_gnd is 0 s_wind_dir_gnd is 180 s_turbulence is 20 s_fog_enable false s_fog_visibility_m 6000 s_fog_thickness_m 0 s_fog_density 0 s_primary_airport OMDB s_backup_airport OMDM s_year 2018 s_month 7 s_day 4 s_hour 22 s_mins 0 s_seconds 28 s_start_time 79228 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ https://api.checkwx.com/metar/OMDB/decoded { "results": 1, "data": [ { "icao": "OMDB", "name": "Dubai International", "observed": "04-07-2018 @ 19:00Z", "raw_text": "OMDB 041900Z VRB03KT CAVOK 36\/26 Q0993 NOSIG", "barometer": { "hg": 29.32, "kpa": 99.29, "mb": 993 }, "clouds": [ { "code": "CAVOK", "text": "Clear skies", "base_feet_agl": 0, "base_meters_agl": 0 } ], "dewpoint": { "celsius": 26, "fahrenheit": 79 }, "elevation": { "feet": 16, "meters": 5 }, "flight_category": "VFR", "heat_c": 46, "heat_f": 115, "humidity_percent": 56, "temperature": { "celsius": 36, "fahrenheit": 97 }, "visibility": { "miles": "Greater than 6", "meters": "10,000+" }, "wind": { "degrees": 0, "speed_kts": 3, "speed_mph": 3, "speed_mps": 2 } } ] } {'results': 1, 'data': [{'icao': 'OMDB', 'name': 'Dubai International', 'observed': '04-07-2018 @ 19:00Z', 'raw_text': 'OMDB 041900Z VRB03KT CAVOK 36/26 Q0993 NOSIG', 'barometer': {'hg': 29.32, 'kpa': 99.29, 'mb': 993}, 'clouds': [{'code': 'CAVOK', 'text': 'Clear skies', 'base_feet_agl': 0, 'base_meters_agl': 0}], 'dewpoint': {'celsius': 26, 'fahrenheit': 79}, 'elevation': {'feet': 16, 'meters': 5}, 'flight_category': 'VFR', 'heat_c': 46, 'heat_f': 115, 'humidity_percent': 56, 'temperature': {'celsius': 36, 'fahrenheit': 97}, 'visibility': {'miles': 'Greater than 6', 'meters': '10,000+'}, 'wind': {'degrees': 0, 'speed_kts': 3, 'speed_mph': 3, 'speed_mps': 2}}]} Max records is 1 raw is OMDB 041900Z VRB03KT CAVOK 36/26 Q0993 NOSIG 10000 b_daws_mission is False s_temperature is 36 s_cloud_thickness_m is 883 s_cloud_density is 0 s_cloud_base_m is 450 s_iprecptns is 0 s_qnh is 745 s_wind_speed_8k is 9 s_wind_dir_8k is 353 s_wind_speed_2k is 3 s_wind_dir_2k is 8 s_wind_speed_gnd is 2 s_wind_dir_gnd is 0 s_turbulence is 3 s_fog_enable false s_fog_visibility_m 4200 s_fog_thickness_m 0 s_fog_density 0 s_primary_airport OMDB s_backup_airport OMDM s_year 2018 s_month 7 s_day 4 s_hour 22 s_mins 0 s_seconds 28 s_start_time 79228 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ weather.py V1.1.6 2018.JUN.16_13:05 exiting C:\Users\tommy\Saved Games\DCS.openbeta\Missions\Persian Gulf\Downloaded\ThroughTheInfernoPersianGulfv1.03>ren ThroughTheInfernoPersianGulfCoopv1.03.miz ThroughTheInfernoPersianGulfCoopv1.03.zip C:\Users\tommy\Saved Games\DCS.openbeta\Missions\Persian Gulf\Downloaded\ThroughTheInfernoPersianGulfv1.03>"E:\Programma's\7-Zip\7z.exe" a -tzip ThroughTheInfernoPersianGulfCoopv1.03.zip mission -mx9 7-Zip [64] 16.04 : Copyright © 1999-2016 Igor Pavlov : 2016-10-04 Open archive: ThroughTheInfernoPersianGulfCoopv1.03.zip WARNINGS: Headers Error -- Path = ThroughTheInfernoPersianGulfCoopv1.03.zip Type = zip WARNINGS: Headers Error Physical Size = 1045640 Scanning the drive: 1 file, 1797423 bytes (1756 KiB) Updating archive: ThroughTheInfernoPersianGulfCoopv1.03.zip Items to compress: 1 Files read from disk: 1 Archive size: 1045636 bytes (1022 KiB) Everything is Ok C:\Users\tommy\Saved Games\DCS.openbeta\Missions\Persian Gulf\Downloaded\ThroughTheInfernoPersianGulfv1.03>ren ThroughTheInfernoPersianGulfCoopv1.03.zip ThroughTheInfernoPersianGulfCoopv1.03.miz C:\Users\tommy\Saved Games\DCS.openbeta\Missions\Persian Gulf\Downloaded\ThroughTheInfernoPersianGulfv1.03>cd /D "D:\Games\Eagle Dynamics\DCS World OpenBeta\bin" D:\Games\Eagle Dynamics\DCS World OpenBeta\bin>start /D"D:\Games\Eagle Dynamics\DCS World OpenBeta\bin" /B dcs.exe D:\Games\Eagle Dynamics\DCS World OpenBeta\bin>pause Press any key to continue . . . Edited July 9, 2018 by Bottle-RUM added how to FiX my problem Intel® Core™ i7-6900K Processor (watercooled) - Asus ROG Rampage V Edition 10 (watercooled) motherbord - 8 x 8Gb Corsair Vengeance LPX DDR4-3333Mhz RAM (watercooled) - 2 x ROG-STRIX-GTX1080TI-11G-GAMING (watercooled) - Creative X-Fi Titanium Fatal1ty Pro - Logitech G910 Orion Spark - Asus PG348 34'' LCD screen - Razor Tiamat 7.1 - Thrustmaster HOTAS Warthog Replica USAF A-10C - TrackIR 5 - Pro Flight Cessna Rudder Pedals - VAICOM 2.5 PRO
Johnny_Rico Posted July 4, 2018 Author Posted July 4, 2018 to enforce realtime change IF %HOUR% GEQ 18 TIME_CONTROL=6 to : IF %HOUR% GEQ 18 TIME_CONTROL=6 to use a specific preset time SET TIME_CONTROL=X where X is the preset number from this listed table in the dcs_weather.py file valid values are from 0 to 7 these are the presets that are in this file listed below l_dates = [['2017', '03', '06', '7', '30'], ['2017', '06', '06', '5', '50'], ['2017', '09', '06', '7', '45'], ['2017', '12', '06', '8', '30'], ['2017', '03', '06', '14', '0'], ['2017', '06', '06', '17', '0'], ['2017', '09', '06', '15', '0'], ['2017', '12', '06', '13', '0']] METAR weather for DCS World missions Guide to help out new DCS MOOSE Users -> HERE Havoc Company Dedicated server info Connect IP: 94.23.215.203 SRS enabled - freqs - Main = 243, A2A = 244, A2G = 245 Please contact me HERE if you have any server feedback or METAR issues/requests
Bottle-RUM Posted July 8, 2018 Posted July 8, 2018 (edited) Thank you for the quick reply, and sorry for bothering you again. but I followed your instructions but i'm stil not able to inject real time into the .miz file and apparently i'm doing something wrong here, can you help me out once again? dcs_weather.py import os import re import sys import json import time import zipfile import datetime import requests import random as rd # you might need to run this in a command line window if this module is not installed # pip install requests # real time / weather update script for dcs world (tested under 1.5/2) # created by havoc-company.com s_version_info = " V1.1.6 2018.JUN.16_13:05" # usage # dcs_weather.py <path and file name of mission.miz> <primary_airport code> <backup_airport code> <time control> # eg # dcs_weather.py D:\DCS_Missions\Weapons_Training_v2.11.2.miz UGSB UGSS real # dcs_weather.py D:\DCS_Missions\Weapons_Training_v2.11.2.miz UGSB UGSS rand # ^ update and use random time of day # dcs_weather.py D:\DCS_Missions\Weapons_Training_v2.11.2.miz KLAS KLAS 6 # ^ no backup airport and use preset #6 autumn evening # time control - dawn = 0 1 2 3 dusk = 4 5 6 7 # use real time in mission <time control> = real # https://www.world-airport-codes.com/ get ICAO code for airport you want to use # https://www.world-airport-codes.com/alphabetical/country-name/g.html#georgia # city = 5m , intl = 82m class G: # Globals class ...... to store all the data we need to mess with (populate with some defaults) # you need to register with http://www.checkwx.com create an account, then request an api key (takes 24hrs or less) # once activated your key will appear in your API dashboard http://www.checkwx.com/apikey # enter your key below between the quotes s_api_key_checkwx = ':music_whistling:' b_daws_mission = False b_update_weather = True # Set this to False if you do NOT want to use METAR weather s_cloud_base_min = '450' s_cloud_base_max = '5000' s_cloud_thickness_min = '200' s_cloud_thickness_max = '2000' s_fog_visibility_min = '1800' # use this to limit how much fog visibility will effect things s_fog_visibility_max = '4200' # was 6000 s_fog_thickness_min = '0' s_fog_thickness_max = '1000' s_temperature = '8' s_cloud_base_m = '5000' s_cloud_thickness_m = '380' s_cloud_density = '5' # few scattered clouds in sky s_iprecptns = '0' s_qnh = '760' s_wind_speed_8k = '15' s_wind_dir_8k = '0' s_wind_speed_2k = '10' s_wind_dir_2k = '0' s_wind_speed_gnd = '0' s_wind_dir_gnd = '180' s_turbulence = '20' s_fog_enable = 'false' # fog off by default s_fog_visibility_m = '6000' s_fog_thickness_m = '0' s_fog_density = '0' s_primary_airport = '' # EGAA = belfast int 82m above sea level s_backup_airport = '' # EGAC = city 5m above sea level s_mission_miz = '' # full name inc path s_mission_miz_filename = '' # just filename s_mission_miz_path = '' # path to miz file s_year = '' s_month = '' s_day = '' s_hour = '' s_mins = '' s_seconds = '' s_start_time = '' i_rand_template = 1 # presets used if time is too late in day and dark eg autumn / winter l_dates = [['2017', '03', '06', '7', '30'], ['2017', '06', '06', '5', '50'], ['2017', '09', '06', '7', '45'], ['2017', '12', '06', '8', '30'], ['2017', '03', '06', '14', '0'], ['2017', '06', '06', '17', '0'], ['2017', '09', '06', '15', '0'], ['2017', '12', '06', '13', '0']] b_change_time = False b_qnh_update = False # set this to True if you want to have the QNH set by METAR data b_adjust_for_daylight_savings = False # this controls if u want to add one hour to account for clock going forward i_time_index = 0 # TODO better less shite command line parsing (but this is test version to see if any problems) # parse commandline stuff eg airport code / time if len(sys.argv) < 5: print("Not enough arguments need more input") print("usage example") print('dcs_weather.py "D:\DCS_Missions\Weapons_Training_v2.11.2.miz" UGSB UGSS real') exit(1) elif len(sys.argv) == 3: G.s_backup_airport = str(sys.argv[2]) # set backup to primary elif len(sys.argv) == 4: G.s_primary_airport = str(sys.argv[2]) G.s_backup_airport = str(sys.argv[3]) elif len(sys.argv) == 5: G.s_primary_airport = str(sys.argv[2]) G.s_backup_airport = str(sys.argv[3]) G.b_change_time = True if str(sys.argv[4]) == 'real': G.i_time_index = 99 elif str(sys.argv[4]) == 'rand': G.i_time_index = 100 else: G.i_time_index = int(sys.argv[4]) # TODO maybe add check for number before setting this # deal with filename and paths G.s_mission_miz = sys.argv[1] G.s_mission_miz_path, G.s_mission_miz_filename = os.path.split(sys.argv[1]) G.s_mission_miz_path = G.s_mission_miz_path + '\\' def extract_mission_file(s_file_path, s_zip_file_name, s_file_to_extract): # use zip module to get our mission file s_zip_to_open = s_file_path + s_zip_file_name if os.path.isfile(G.s_mission_miz): archive = zipfile.ZipFile(s_zip_to_open) for file in archive.namelist(): if file.startswith(s_file_to_extract): archive.extract(file, s_file_path) else: print("WARNING: specified miz file does not exist") exit(1) def read_mission_file(s_filename_to_read): # read actual file mission into a list for changing file = open(s_filename_to_read, "rU", encoding="utf8") l_content = list(file) l_content = [x.rstrip('\x0A\x0D') for x in l_content] if l_content[0] == 'mission = {}': # is this a DAWS mission file ? G.b_daws_mission = True return l_content def write_mission_file(s_filename_to_write, l_mission): # write mission list into mission file f = open(s_filename_to_write, 'w', encoding="utf8") s1 = '\x0D'.join(l_mission) f.write(s1) f.close() change_newline_chars_in_file(s_filename_to_write) # do not ask ..... problems with extra chars being added def change_mission_data_item(l_mission, s_item, i_new_value, s_tab='\t\t'): # used to change single unique item value i_mission_size = len(l_mission) i_count = 0 s_new_item = s_tab + s_item + str(i_new_value) + "," while i_count < i_mission_size: if s_item in l_mission[i_count]: l_mission[i_count] = s_new_item break i_count += 1 def change_newline_chars_in_file(s_filename): # used to deal with extra chars being written to file (0x0D) with open(s_filename, "rb") as input_file: content = input_file.read() content = content.replace(b"\x0D", b"\x0A") with open(s_filename, "wb") as output_file: output_file.write(content) def convert_feet_to_meters(f_feet): # cos we get data in feet # 1 foot = 0.3048 meters f_meters = float(f_feet) * 0.3048 return str(int(f_meters)) def convert_to_hr_and_min_to_seconds(): # DCS uses seconds from 00:00 as time of day (this converts hr&min to this) G.s_start_time = str(int(G.s_hour) * 3600 + (int(G.s_mins) * 60) + int(G.s_seconds)) def convert_knots_to_m_per_sec(f_knots): # used to convert the supplied knots value to meters per second # 1 knot = 0.514444 m per sec f_mps = float(f_knots) * 0.514444 return str(int(f_mps)) def convert_hpa_to_mmhg(f_hpa): # cos we get data in hPa # 1 hPa = 0.75006157584566 mmHg f_mmhg = float(f_hpa) * 0.75006157584566 return str(int(round(f_mmhg, 0))) def find_item_index_from_start(l_mission, s_search): # used to find which index (first list item) something is i_index = 0 i_max = len(l_mission) ret_val = False while i_index < i_max: if s_search in l_mission[i_index]: ret_val = i_index break i_index += 1 return ret_val def find_item_index(l_mission, s_search, i_stop_position, i_start_position=0): # used to find index of item with params ret_val = False i_index = i_start_position while i_index != i_stop_position: if s_search in l_mission[i_index]: return i_index i_index += 1 return ret_val def gen_rand_dev(s_value, i_min, i_max): # used to change values for wind speed / direction at diff alts i_deviation = rd.randint(i_min, i_max) i_value = int(s_value) + i_deviation if i_value < 0: i_value = 360 + i_value if i_value >= 360: i_value -= 360 return str(i_value) def not_setup_correctly(): print("") print("ERROR: You have not set-up you API KEY YET") print("you need to register with http://www.checkwx.com/ create an account,") print("then request an api key (takes 24hrs or less)") print("once activated your key will appear in your API dashboard") print(" http://www.checkwx.com/apikey ") print("enter your key in s_api_key_checkwx variable near the top of this script") time.sleep(30) exit(1) def get_avwx_all_weather_parameters(json_weather_l): # going to read ALL weather info from json then stick it in G vars G.s_temperature = get_avwx_json_temperature(json_weather_l) get_avwx_weather_cloud_atmosphere(json_weather_l) get_avwx_weather_wind(json_weather_l) s_raw_report = get_avwx_json_raw_report(json_weather_l) get_avwx_fog_visibility(json_weather_l) get_weather_fog(s_raw_report) get_weather_turbulence() get_avwx_weather_qnh(json_weather_l) check_weather_limits() # used to check we are within the limits DCS editor has def get_avwx_json_other_list(json_weather_l): return json_weather_l['Other-List'] def get_avwx_json_raw_report(json_weather_l): return json_weather_l['Raw-Report'] def get_avwx_json_temperature(json_weather_l): return json_weather_l['Temperature'] def get_avwx_json_wind_direction(json_weather_l): s_direction = json_weather_l['Wind-Direction'] if 'VRB' in s_direction: # variable means not measured (unknown) return str(rd.randint(0, 359)) elif s_direction == '000': return '0' else: return s_direction def get_avwx_fog_visibility(json_weather_l): # set fog view visibility distance (how far you can see before fog obscures stuff) G.s_fog_visibility_m = json_weather_l['Visibility'] if int(G.s_fog_visibility_m) > int(G.s_fog_visibility_max): # make sure its not out of bounds for DCS G.s_fog_visibility_m = G.s_fog_visibility_max def get_avwx_weather_qnh(json_weather_l): G.s_qnh = convert_hpa_to_mmhg(json_weather_l['Altimeter']) def get_avwx_weather_cloud_atmosphere(json_weather_l): # read json and set the cloud settings from it # get record count - how many cloud data items do we have i_max_cloud_records = len(json_weather_l['Cloud-List']) print("Max records is ", i_max_cloud_records) # debug info # need to make sure there are some clouds first ? is Zero its a CLR day if i_max_cloud_records == 0: s_cloud_base = 5000 else: s_cloud_base = json_weather_l['Cloud-List'][0][1] # set cloud base as first record height (lowest clouds) if i_max_cloud_records == 1: # if only one cloud record then set cloud alt and cloud type G.s_cloud_thickness_m = str(rd.randint(200, 300)) G.s_cloud_base_m = convert_feet_to_meters((int(s_cloud_base)) * 100) s_cloud_cover = json_weather_l['Cloud-List'][0][0] elif i_max_cloud_records > 1: # if we have multiple cloud records use difference between max and min for cloud depth G.s_cloud_base_m = convert_feet_to_meters((int(s_cloud_base)) * 100) s_cloud_alt_max_ft = int(json_weather_l['Cloud-List'][i_max_cloud_records - 1][1]) * 100 # height cl alt ft s_cloud_alt_min_ft = int(json_weather_l['Cloud-List'][0][1]) * 100 # get low G.s_cloud_thickness_m = str(convert_feet_to_meters(s_cloud_alt_max_ft - s_cloud_alt_min_ft)) # top to bottom s_cloud_cover = json_weather_l['Cloud-List'][i_max_cloud_records - 1][0] # get last record cloud type else: s_cloud_cover = 'CLR' # stick a default value here (if there is no cloud records) # common parse could cover type into number G.s_cloud_density = '0' # default value if s_cloud_cover in ('SKC', 'CLR', 'NSC'): G.s_cloud_density = '0' elif s_cloud_cover in 'FEW': G.s_cloud_density = str(rd.randint(1, 2)) elif s_cloud_cover in 'SCT': G.s_cloud_density = str(rd.randint(3, 4)) elif s_cloud_cover in 'BKN': G.s_cloud_density = str(rd.randint(5, 8)) elif s_cloud_cover in 'OVC': G.s_cloud_density = '9' G.s_cloud_thickness_m = '200' elif s_cloud_cover in 'VV': G.s_cloud_density = str(rd.randint(2, 8)) # Rules cloud >= 5 then, ["iprecptns"] = 0 = none , 1 = rain , 2 = thunderstorm(if cloud>=9) # if temp <=0 then, 3 = snow, 4 = snowstorm(if cloud>=9) s_raw_report = get_avwx_json_raw_report(json_weather_l) l_rain = ['RA', 'DZ', 'GR', 'UP'] l_snow = ['SN', 'SG', 'PL'] l_other = ['TS'] # thunderstorm if any(x in s_raw_report for x in l_rain): # print("RA found") G.s_iprecptns = '1' # rain elif any(x in s_raw_report for x in l_snow): if int(G.s_temperature) <= 2: # is it cold enough for snow/snow storm ? if int(G.s_cloud_density) >= 9: G.s_iprecptns = '4' # snow storm else: G.s_iprecptns = '3' # snow elif any(x in s_raw_report for x in l_other): G.s_cloud_density = '9' # over ride this to match DCS G.s_iprecptns = '2' # thunderstorm else: G.s_iprecptns = '0' # no rain at all def get_avwx_weather_wind(json_weather_l): # read json weather data and set the wind info from it # weather at ground s_knots = json_weather['Wind-Speed'] s_mps = convert_knots_to_m_per_sec(float(s_knots)) G.s_wind_speed_gnd = s_mps G.s_wind_dir_gnd = get_avwx_json_wind_direction(json_weather_l) # this function will get a bullshit or real value l_wind_variable_dir = get_avwx_wind_variable_dir(json_weather_l) i_winds_size = len(l_wind_variable_dir) if l_wind_variable_dir is None: G.s_wind_speed_gnd = rd.randint(0, 10) G.s_wind_dir_2k = gen_rand_dev(G.s_wind_dir_gnd, -10, 10) G.s_wind_dir_8k = gen_rand_dev(G.s_wind_dir_gnd, -20, 20) else: if represents_int(l_wind_variable_dir[0]): if i_winds_size > 1: # must have at least 2 G.s_wind_dir_2k = l_wind_variable_dir[0] G.s_wind_dir_8k = l_wind_variable_dir[1] elif i_winds_size == 1: # single G.s_wind_dir_2k = l_wind_variable_dir[0] G.s_wind_dir_8k = gen_rand_dev(G.s_wind_dir_gnd, -20, 20) # randomise gnd dir else: print("No variable wind ") G.s_wind_dir_2k = gen_rand_dev(G.s_wind_dir_gnd, -10, 10) G.s_wind_dir_8k = gen_rand_dev(G.s_wind_dir_gnd, -20, 20) # wind at 2k - we use ground level value and randomise G.s_wind_speed_2k = gen_rand_dev(s_mps, 1, 3) # wind at 8k - we use ground level value and randomise a bit more G.s_wind_speed_8k = gen_rand_dev(s_mps, 2, 8) def get_avwx_wind_variable_dir(json_weather_l): return json_weather_l['Wind-Variable-Dir'] def get_checkwx_json_temperature(json_weather_l): # get temperature return str(json_weather_l['data'][0]['temperature']['celsius']) def get_checkwx_weather_cloud_atmosphere(json_weather_l): # get clouds / atmosphere i_max_cloud_records = len(json_weather_l['data'][0]['clouds']) print("Max records is ", i_max_cloud_records) # debug info if i_max_cloud_records == 0: s_cloud_base_m = 5000 else: s_cloud_base_m = str(int(round(json_weather_l['data'][0]['clouds'][0]['base_meters_agl'], 0))) # set cloud base as first record height (lowest clouds) if i_max_cloud_records == 1: # if only one cloud record then set cloud alt and cloud type G.s_cloud_thickness_m = str(rd.randint(200, 800)) G.s_cloud_base_m = s_cloud_base_m s_cloud_cover = json_weather_l['data'][0]['clouds'][0]['code'] elif i_max_cloud_records > 1: # if we have multiple cloud records use difference between max and min for cloud depth G.s_cloud_base_m = s_cloud_base_m s_cloud_alt_max_m = int(round(json_weather_l['data'][0]['clouds'][i_max_cloud_records-1]['base_meters_agl'], 0)) s_cloud_alt_min_m = int(round(json_weather_l['data'][0]['clouds'][0]['base_meters_agl'], 0)) G.s_cloud_thickness_m = str(s_cloud_alt_max_m - s_cloud_alt_min_m) s_cloud_cover = json_weather_l['data'][0]['clouds'][i_max_cloud_records - 1]['code'] else: s_cloud_cover = 'CLR' # stick a default value here (if there is no cloud records) # common parse could cover type into number G.s_cloud_density = '0' # default value if s_cloud_cover in ('SKC', 'CLR', 'NSC'): G.s_cloud_density = '0' elif s_cloud_cover in 'FEW': G.s_cloud_density = str(rd.randint(1, 2)) elif s_cloud_cover in 'SCT': G.s_cloud_density = str(rd.randint(3, 4)) elif s_cloud_cover in 'BKN': G.s_cloud_density = str(rd.randint(5, 8)) elif s_cloud_cover in 'OVC': G.s_cloud_density = '9' G.s_cloud_thickness_m = '200' elif s_cloud_cover in 'VV': G.s_cloud_density = str(rd.randint(2, 8)) s_raw_report = str(json_weather_l['data'][0]['raw_text']) print("raw is ", s_raw_report) l_rain = ['RA', 'DZ', 'GR', 'UP'] l_snow = ['SN', 'SG', 'PL'] l_other = ['TS'] # thunderstorm if any(x in s_raw_report for x in l_rain): # print("RA found") G.s_iprecptns = '1' # rain elif any(x in s_raw_report for x in l_snow): if int(G.s_temperature) <= 2: # is it cold enough for snow/snow storm ? if int(G.s_cloud_density) >= 9: G.s_iprecptns = '4' # snow storm else: G.s_iprecptns = '3' # snow elif any(x in s_raw_report for x in l_other): G.s_cloud_density = '9' # over ride this to match DCS G.s_iprecptns = '2' # thunderstorm else: G.s_iprecptns = '0' # no rain at all def get_checkwx_weather_qnh(json_weather_l): G.s_qnh = convert_hpa_to_mmhg(json_weather_l['data'][0]['barometer']['mb']) def get_checkwx_weather_wind(json_weather_l): # get wind i_wind_records = len(json_weather_l['data'][0]['wind']) s_direction = str(json_weather_l['data'][0]['wind']['degrees']) if s_direction is None: s_direction = '0' if 'VRB' in s_direction: # variable means not measured (unknown) s_direction = str(rd.randint(0, 359)) s_mps = str(rd.randint(0, 20)) G.s_wind_speed_gnd = str(s_mps) else: if i_wind_records > 1: s_mps = int(json_weather_l['data'][0]['wind']['speed_mps']) G.s_wind_speed_gnd = str(s_mps) else: s_direction = '0' G.s_wind_dir_gnd = str(s_direction) G.s_wind_dir_2k = gen_rand_dev(G.s_wind_dir_gnd, -10, 10) G.s_wind_dir_8k = gen_rand_dev(G.s_wind_dir_gnd, -20, 20) G.s_wind_speed_2k = gen_rand_dev(G.s_wind_speed_gnd, 1, 3) G.s_wind_speed_8k = gen_rand_dev(G.s_wind_speed_gnd, 2, 8) def get_checkwx_fog_visibility(json_weather_l): # set fog view visibility distance (how far you can see before fog obscures stuff) i_tmp = json_weather_l['data'][0]['visibility']['meters'] i_tmp = re.sub('[,+]', '', i_tmp) G.s_fog_visibility_m = i_tmp print(G.s_fog_visibility_m) def get_checkwx_all_weather_parameters(json_weather_l): G.s_temperature = get_checkwx_json_temperature(json_weather_l) get_checkwx_weather_cloud_atmosphere(json_weather_l) get_checkwx_weather_wind(json_weather_l) s_raw_report = json_weather_l['data'][0]['raw_text'] get_checkwx_fog_visibility(json_weather_l) get_weather_fog(s_raw_report) # turbulence get_weather_turbulence() get_checkwx_weather_qnh(json_weather) # weather limits check_weather_limits() def get_weather_turbulence(): # 0 is nothing, 60 is crap your pants time .... 0.1* m = 6mps i_wind_speed_gnd = int(G.s_wind_speed_gnd) # print("wind sped gnd ", i_wind_speed_gnd) if i_wind_speed_gnd <= 5: i_min_turbulence = 0 i_max_turbulence = 12 if 6 <= i_wind_speed_gnd <= 10: i_min_turbulence = 12 i_max_turbulence = 25 if 11 <= i_wind_speed_gnd <= 15: i_min_turbulence = 15 i_max_turbulence = 35 if 16 <= i_wind_speed_gnd <= 20: i_min_turbulence = 25 i_max_turbulence = 50 if 21 <= i_wind_speed_gnd <= 25: i_min_turbulence = 30 i_max_turbulence = 60 if i_wind_speed_gnd > 30: i_min_turbulence = 35 i_max_turbulence = 70 # print("Turb min ", i_min_turbulence, " max ", i_max_turbulence) G.s_turbulence = str(rd.randint(i_min_turbulence, i_max_turbulence)) def get_mission_date_time(): # get the time date store in G. if G.i_time_index == 100: G.s_start_time = str(rd.randint(0, 86400)) return elif G.i_time_index == 99: # this is for real server time to set mission time # do real time calc stuff here a = datetime.datetime.now() now = a + datetime.timedelta(0, 180) # add 180 seconds as it takes this long to spool the server up and load # due to summer/winter time check if between change date then + 1 d_start = datetime.date(now.year, 10, 29) d_now_date = datetime.date(now.year, now.month, now.day) d_end = datetime.date(now.year + 1, 3, 26) if G.b_adjust_for_daylight_savings: if d_start < d_now_date < d_end: now = a + datetime.timedelta(0, 3780) # add 1 hour 180 seconds forward G.s_year = str(now.year) G.s_month = str(now.month) G.s_day = str(now.day) G.s_hour = str(now.hour) G.s_mins = str(now.minute) G.s_seconds = str(now.second) else: # do time array stuff here G.s_year = G.l_dates[G.i_time_index][0] G.s_month = G.l_dates[G.i_time_index][1] G.s_day = G.l_dates[G.i_time_index][2] G.s_hour = G.l_dates[G.i_time_index][3] G.s_mins = G.l_dates[G.i_time_index][4] G.s_seconds = str(0) convert_to_hr_and_min_to_seconds() def check_weather_limits(): # created this to make sure values fall within the acceptable range that can be configured in the DCS editor # dcs has a hard base limit of 300m, think we should be above it as people bitch about it s_base_tmp = G.s_cloud_base_m if int(G.s_cloud_base_m) <= int(G.s_cloud_base_min): # going for ? i_diff = abs(int(s_base_tmp) - int(G.s_cloud_base_min)) G.s_cloud_base_m = G.s_cloud_base_min G.s_cloud_thickness_m = str(int(G.s_cloud_thickness_m) + int(i_diff)) if int(G.s_cloud_thickness_m) <= int(G.s_cloud_thickness_min): G.s_cloud_thickness_m = '200' if int(G.s_fog_visibility_m) >= int(G.s_fog_visibility_max): # make sure its not out of bounds for DCS G.s_fog_visibility_m = G.s_fog_visibility_max if int(G.s_fog_visibility_m) <= int(G.s_fog_visibility_min): G.s_fog_visibility_m = G.s_fog_visibility_min if int(G.s_cloud_density) >= 9 or G.s_fog_enable == 'true' and int(G.s_cloud_base_m) <= 2000: G.s_cloud_base_m = '2000' def get_weather_fog(s_raw_report): # read raw report and see if any fog markers l_fog = ['BR', 'FG', 'FU', 'VA', 'DU', 'SA', 'HZ', 'PY'] # codes for obscure weather if not any(x in s_raw_report for x in l_fog): # search it for ANY fog tags # print("Fog NOT found") # debug info if int(G.s_fog_visibility_m) >= 6000 or G.s_iprecptns == '0': # if def val for dist intact? or greater than G.s_fog_enable = 'false' return False # bail out and leave defaults as is G.s_fog_enable = 'true' G.s_fog_thickness_m = str(500 + rd.randint(-50, 200)) # generate a random thickness value G.s_fog_density = '7' # set it to ON def retrieve_json_data_from_web(s_request, s_header=None): # connect to url and grab METAR data print(s_request) try: # Can we get connect to the website..... Better check first response = requests.get(s_request, headers=s_header, timeout=8) response.raise_for_status() except requests.exceptions.HTTPError: print(requests.exceptions.HTTPError) return False except requests.exceptions.ReadTimeout: print("HTTP read time out") return False except requests.exceptions.Timeout: print("HTTP time out") return False except requests.exceptions.TooManyRedirects: print("Too many re-directs") return False except requests.exceptions.RequestException as e: # catch any problem and print out what it is here print(e) sys.exit(1) else: print(response.text) # print out raw data json_object = json.loads(response.text) if json_object is False: return False if 'Error' in json_object: # this is to cover sometimes getting an error string from the server # print(json_object) return False print(json_object) return json_object def weather_read_url_checkwx(): # try to read metar data for airport(s) from internet if G.s_api_key_checkwx == 'NOT_SET_YET': not_setup_correctly() s_url1 = 'https://api.checkwx.com/metar/' + G.s_primary_airport + '/decoded' s_url2 = 'https://api.checkwx.com/metar/' + G.s_backup_airport + '/decoded' s_headers = {'X-API-Key': G.s_api_key_checkwx} json_object = False # just stuck this here to stick pycharm whining like a little bitch # we should try primary twice with a 5 second wait between attempts i_count = 0 while i_count < 1: json_object = retrieve_json_data_from_web(s_url1, s_headers) # try primary airport if json_object is not False: break time.sleep(5) i_count += 1 if json_object is False: i_count = 0 while i_count < 2: json_object = retrieve_json_data_from_web(s_url2, s_headers) # try backup airport if json_object is not False: break time.sleep(5) i_count += 1 return json_object def weather_read_url_avwx(): # try to read metar data for airport(s) from internet s_url_base = "https://avwx.rest/api/metar/" s_url1 = s_url_base + G.s_primary_airport s_url2 = s_url_base + G.s_backup_airport json_object = False # just stuck this here to stick pycharm whining like a little bitch # we should try primary twice with a 5 second wait between attempts i_count = 0 while i_count < 1: json_object = retrieve_json_data_from_web(s_url1) # try primary airport if json_object is not False: break time.sleep(5) i_count += 1 if json_object is False: i_count = 0 while i_count < 2: json_object = retrieve_json_data_from_web(s_url2) # try backup airport if json_object is not False: break time.sleep(5) i_count += 1 return json_object def save_cloud_atmosphere(l_mission): # save cloud data into mission file list s_cloud_start = '["clouds"]' s_daws_cloud_start = 'mission["weather"]["clouds"]["thickness"] = ' s_thickness = '["thickness"] = ' s_dense = '["density"] = ' s_cloud_base = '["base"] = ' s_cloud_rain = '["iprecptns"] = ' i_max_line = len(l_mission) if G.b_daws_mission: i_start_clouds = find_item_index(l_mission, s_daws_cloud_start, i_max_line) l_mission[i_start_clouds] = s_daws_cloud_start + G.s_cloud_thickness_m # thickness of clouds l_mission[i_start_clouds + 1] = 'mission["weather"]["clouds"]["density"] = ' + G.s_cloud_density l_mission[i_start_clouds + 2] = 'mission["weather"]["clouds"]["base"] = ' + G.s_cloud_base_m l_mission[i_start_clouds + 3] = 'mission["weather"]["clouds"]["iprecptns"] = ' + G.s_iprecptns else: # get record count (mission list size) i_start_clouds = find_item_index(l_mission, s_cloud_start, i_max_line) # omitting start means begin index @ 0 l_mission[i_start_clouds + 2] = '\t\t\t' + s_thickness + G.s_cloud_thickness_m + "," # thickness of clouds l_mission[i_start_clouds + 3] = '\t\t\t' + s_dense + G.s_cloud_density + "," # density of clouds l_mission[i_start_clouds + 4] = '\t\t\t' + s_cloud_base + G.s_cloud_base_m + "," # cloud base change_mission_data_item(l_mission, s_cloud_rain, G.s_iprecptns, '\t\t\t') # l_mission[i_start_clouds + 5] = '\t\t\t' + s_cloud_rain + G.s_iprecptns + "," def save_date_and_time(l_mission): # save time/date info into mission list s_year = 'mission["date"]["Year"] =' s_day = 'mission["date"]["Day"] = ' s_month = 'mission["date"]["Month"] = ' i_mission_size = len(l_mission) if G.b_daws_mission: if G.i_time_index != 100: i_date_start = find_item_index(l_mission, 'mission["date"] = {}', i_mission_size) l_mission[i_date_start + 1] = s_year + G.s_year l_mission[i_date_start + 2] = s_day + G.s_day l_mission[i_date_start + 3] = s_month + G.s_month else: change_mission_data_item(l_mission, 'mission["start_time"] = ', str(G.s_start_time), '') else: if G.i_time_index != 100: # set year , month and date in mission change_mission_data_item(l_mission, '["Year"] = ', str(G.s_year)) # month change_mission_data_item(l_mission, '["Month"] = ', str(G.s_month)) # day change_mission_data_item(l_mission, '["Day"] = ', str(G.s_day)) # time, hmm tricky find ["forcedOptions"] then -1 write value cos it will be start_time in seconds 00:00 # because start_time appears a lot thru the mission file else: i_forced = find_item_index(l_mission, '["forcedOptions"]', i_mission_size) l_mission[i_forced-1] = '\t' + '["start_time"] = ' + G.s_start_time + ',' def save_data_to_mission(l_mission): # save all data we have into mission list s_temp = '["temperature"] = ' s_temp_daws = 'mission["weather"]["season"]["temperature"] = ' s_turb = '["groundTurbulence"] = ' s_turb_daws = 'mission["weather"]["groundTurbulence"] = ' save_cloud_atmosphere(l_mission) save_wind(l_mission) save_qnh(l_mission) save_fog(l_mission) if G.b_daws_mission: i_max_line = len(l_mission) i_start_turb = find_item_index(l_mission, s_turb_daws, i_max_line) l_mission[i_start_turb] = s_turb_daws + G.s_turbulence i_start_temp = find_item_index(l_mission, s_temp_daws, i_max_line) l_mission[i_start_temp] = s_temp_daws + G.s_temperature else: change_mission_data_item(l_mission, s_turb, G.s_turbulence, '\t\t\t') change_mission_data_item(l_mission, s_temp, G.s_temperature, '\t\t\t') def save_qnh(l_mission): s_qnh = '["qnh"] = ' s_qnh_daws = 'mission["weather"]["qnh"] = ' if not G.b_qnh_update: return if G.b_daws_mission: i_max_line = len(l_mission) i_start_qnh = find_item_index(l_mission, s_qnh_daws, i_max_line) l_mission[i_start_qnh] = s_qnh_daws + G.s_qnh else: change_mission_data_item(l_mission_data, s_qnh, G.s_qnh, '\t\t') def save_fog(l_mission): # save fog data into mission list s_fog_start = '["fog"]' s_fog_vis = '["visibility"] = ' s_fog_enable = '["enable_fog"] = ' s_fog_enable_daws = 'mission["weather"]["enable_fog"] = ' s_thickness = '["thickness"] = ' s_fog_density = '["density"] = ' s_fog_start_daws = 'mission["weather"]["fog"]["thickness"] = ' i_max_line = len(l_mission) if G.b_daws_mission: i_fog_start = find_item_index(l_mission, s_fog_start_daws, i_max_line) l_mission[i_fog_start] = s_fog_start_daws + G.s_fog_thickness_m l_mission[i_fog_start + 1] = 'mission["weather"]["fog"]["visibility"] = ' + G.s_fog_visibility_m l_mission[i_fog_start + 2] = 'mission["weather"]["fog"]["density"] = ' + G.s_fog_density i_fog_en = find_item_index(l_mission, s_fog_enable_daws, i_max_line) l_mission[i_fog_en] = s_fog_enable_daws + G.s_fog_enable else: # find start of fog data stuff i_fog_start = find_item_index_from_start(l_mission, s_fog_start) change_mission_data_item(l_mission_data, s_fog_enable, G.s_fog_enable, '\t\t') # enable fog flag # set fog thickness (height above ground before fog l_mission[i_fog_start + 2] = '\t\t\t' + s_thickness + G.s_fog_thickness_m + "," # fog view thickness # set fog view visibility distance (how far you can see before fog obscures stuff) l_mission[i_fog_start + 3] = '\t\t\t' + s_fog_vis + G.s_fog_visibility_m + "," # fog view visibility # set fog density - **** knows what this does but 7 seems ok l_mission[i_fog_start + 4] = '\t\t\t' + s_fog_density + G.s_fog_density + "," # fog density def save_wind(l_mission): # save wind speed direction info into mission list s_wind_speed = '["speed"] = ' s_wind_dir = '["dir"] = ' s_wind_at_8k = '["at8000"]' s_wind_at_gnd = '["atGround"]' s_wind_at_2k = '["at2000"]' s_wind_start8k = 'mission["weather"]["wind"]["at8000"]["speed"] = ' s_wind_startgnd = 'mission["weather"]["wind"]["atGround"]["speed"] = ' s_wind_start2k = 'mission["weather"]["wind"]["at2000"]["speed"] = ' i_max_line = len(l_mission) if G.b_daws_mission: i_start_wind8k = find_item_index(l_mission, s_wind_start8k, i_max_line) l_mission[i_start_wind8k] = s_wind_start8k + G.s_wind_speed_8k l_mission[i_start_wind8k + 1] = 'mission["weather"]["wind"]["at8000"]["dir"] = ' + G.s_wind_dir_8k i_start_windgnd = find_item_index(l_mission, s_wind_startgnd, i_max_line) l_mission[i_start_windgnd] = s_wind_startgnd + G.s_wind_speed_gnd l_mission[i_start_windgnd + 1] = 'mission["weather"]["wind"]["atGround"]["dir"] = ' + G.s_wind_dir_gnd i_start_wind2k = find_item_index(l_mission, s_wind_start2k, i_max_line) l_mission[i_start_wind2k] = s_wind_start2k + G.s_wind_speed_2k l_mission[i_start_wind2k + 1] = 'mission["weather"]["wind"]["at2000"]["dir"] = ' + G.s_wind_dir_2k else: # find start of WIND ground section i_start_wind_at_gnd = find_item_index(l_mission, s_wind_at_gnd, i_max_line) # omitting start begin index @ 0 l_mission[i_start_wind_at_gnd + 2] = '\t\t\t\t' + s_wind_speed + G.s_wind_speed_gnd + "," l_mission[i_start_wind_at_gnd + 3] = '\t\t\t\t' + s_wind_dir + G.s_wind_dir_gnd + "," # find start of WIND 2K section i_start_wind_at_2k = find_item_index(l_mission, s_wind_at_2k, i_max_line) # omitting start begin index @ 0 l_mission[i_start_wind_at_2k + 2] = '\t\t\t\t' + s_wind_speed + G.s_wind_speed_2k + "," l_mission[i_start_wind_at_2k + 3] = '\t\t\t\t' + s_wind_dir + G.s_wind_dir_2k + "," # find start of WIND 8K section i_start_wind_at_8k = find_item_index(l_mission, s_wind_at_8k, i_max_line) # omitting start begin index @ 0 l_mission[i_start_wind_at_8k + 2] = '\t\t\t\t' + s_wind_speed + G.s_wind_speed_8k + "," l_mission[i_start_wind_at_8k + 3] = '\t\t\t\t' + s_wind_dir + G.s_wind_dir_8k + "," def print_all_data(): # debug just so we can see what values we have print("b_daws_mission is ", G.b_daws_mission) print("s_temperature is ", G.s_temperature) print("s_cloud_thickness_m is ", G.s_cloud_thickness_m) print("s_cloud_density is ", G.s_cloud_density) print("s_cloud_base_m is ", G.s_cloud_base_m) print("s_iprecptns is ", G.s_iprecptns) print("s_qnh is ", G.s_qnh) print("s_wind_speed_8k is ", G.s_wind_speed_8k) print("s_wind_dir_8k is ", G.s_wind_dir_8k) print("s_wind_speed_2k is ", G.s_wind_speed_2k) print("s_wind_dir_2k is ", G.s_wind_dir_2k) print("s_wind_speed_gnd is ", G.s_wind_speed_gnd) print("s_wind_dir_gnd is ", G.s_wind_dir_gnd) print("s_turbulence is ", G.s_turbulence) print("s_fog_enable ", G.s_fog_enable) print("s_fog_visibility_m ", G.s_fog_visibility_m) print("s_fog_thickness_m ", G.s_fog_thickness_m) print("s_fog_density ", G.s_fog_density) print("s_primary_airport ", G.s_primary_airport) print("s_backup_airport ", G.s_backup_airport) print("s_year ", G.s_year) print("s_month ", G.s_month) print("s_day ", G.s_day) print("s_hour ", G.s_hour) print("s_mins ", G.s_mins) print("s_seconds ", G.s_seconds) print("s_start_time ", G.s_start_time) print("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++") def represents_int(s_value): try: int(s_value) return True except ValueError: return False # extract mission file from mission miz extract_mission_file(G.s_mission_miz_path, G.s_mission_miz_filename, 'mission') # read mission file into a list item l_mission_data = read_mission_file(G.s_mission_miz_path + 'mission') # get realtime date and change in mission file (if necessary) if G.b_change_time: get_mission_date_time() save_date_and_time(l_mission_data) print_all_data() # debug just for seeing what things started at if G.b_update_weather: # first try the primary (first site) and see of we get data ok json_weather = weather_read_url_checkwx() if json_weather is not False: # set values in G array get_checkwx_all_weather_parameters(json_weather) else: # this is to cover primary website data read failing for some reason # try secondary json_weather = weather_read_url_avwx() if json_weather is not False: # set values in G array get_avwx_all_weather_parameters(json_weather) else: print("WARNING - METAR data read failure") print("Using default weather values instead") save_data_to_mission(l_mission_data) # write G. global variables for weather into mission list print_all_data() # debug just for seeing what things actually are in the file write_mission_file('mission', l_mission_data) # now take mission list and write it back to file print("weather.py", s_version_info, " exiting") weather.bat : example launch file for DCS used with dcs_weather.py : by havoc-company.com : you need python 3 and 7z installed on server hosting PC : you will need to edit this file to change parameters to match your install : contact Johnny Rico in ED forums for any queries : V 1.0.1 SET DCS_PATH="D:\Games\Eagle Dynamics\DCS World OpenBeta\bin" : settings for dcs_weather.py - airports weather to query SET PRIMARY_AIRPORT=OMDB SET BACKUP_AIRPORT=OMDM : you want to use current realtime on server ? SET TIME_CONTROL=real : set this to where your 7z.exe is installed SET zip="E:\Programma's\7-Zip\7z.exe" : where you store your mission miz files SET MISSION_PATH="C:\Users\tommy\Saved Games\DCS.openbeta\Missions\Persian Gulf\Downloaded\ThroughTheInfernoPersianGulfv1.03" : mission name minus the file extension SET MISSION_NAME=ThroughTheInfernoPersianGulfCoopv1.03 : path and name of weather python script SET PYTHON_SCRIPT="D:\Games\Eagle Dynamics\DCS Real Weather Script's\dcs_weather Through the Inferno\DCS Realtime Weather\dcs_weather.py" SET TEST=%time:~0,1% SET HOUR=%time:~0,2% IF "%TEST%" == " " SET HOUR=%time:~1,1% : this override was added so that if it is too late in the year (dark a lot in evenings) then people would get some time were it is light for a bit : IF %HOUR% GEQ 18 TIME_CONTROL=6 @echo %TIME_CONTROL% cd /D %MISSION_PATH% %PYTHON_SCRIPT% %MISSION_PATH%%MISSION_NAME%.miz %PRIMARY_AIRPORT% %BACKUP_AIRPORT% %TIME_CONTROL% : rename .miz to .zip because 7z don't like miz file extension ren %MISSION_NAME%.miz %MISSION_NAME%.zip : add the updated mission to the zip file %zip% a -tzip %MISSION_NAME%.zip mission -mx9 : rename it back to miz ren %MISSION_NAME%.zip %MISSION_NAME%.miz cd /D %DCS_PATH% start /D%DCS_PATH% /B dcs.exe pause CMD Log D:\Games\Eagle Dynamics\DCS Real Weather Script's\dcs_weather Through the Inferno\DCS Realtime Weather>SET DCS_PATH="D:\Games\Eagle Dynamics\DCS World OpenBeta\bin" D:\Games\Eagle Dynamics\DCS Real Weather Script's\dcs_weather Through the Inferno\DCS Realtime Weather>SET PRIMARY_AIRPORT=OMDB D:\Games\Eagle Dynamics\DCS Real Weather Script's\dcs_weather Through the Inferno\DCS Realtime Weather>SET BACKUP_AIRPORT=OMDM D:\Games\Eagle Dynamics\DCS Real Weather Script's\dcs_weather Through the Inferno\DCS Realtime Weather>SET TIME_CONTROL=real D:\Games\Eagle Dynamics\DCS Real Weather Script's\dcs_weather Through the Inferno\DCS Realtime Weather>SET zip="E:\Programma's\7-Zip\7z.exe" D:\Games\Eagle Dynamics\DCS Real Weather Script's\dcs_weather Through the Inferno\DCS Realtime Weather>SET MISSION_PATH="C:\Users\tommy\Saved Games\DCS.openbeta\Missions\Persian Gulf\Downloaded\ThroughTheInfernoPersianGulfv1.03" D:\Games\Eagle Dynamics\DCS Real Weather Script's\dcs_weather Through the Inferno\DCS Realtime Weather>SET MISSION_NAME=ThroughTheInfernoPersianGulfCoopv1.03 D:\Games\Eagle Dynamics\DCS Real Weather Script's\dcs_weather Through the Inferno\DCS Realtime Weather>SET PYTHON_SCRIPT="D:\Games\Eagle Dynamics\DCS Real Weather Script's\dcs_weather Through the Inferno\DCS Realtime Weather\dcs_weather.py" D:\Games\Eagle Dynamics\DCS Real Weather Script's\dcs_weather Through the Inferno\DCS Realtime Weather>SET TEST=1 D:\Games\Eagle Dynamics\DCS Real Weather Script's\dcs_weather Through the Inferno\DCS Realtime Weather>SET HOUR=16 D:\Games\Eagle Dynamics\DCS Real Weather Script's\dcs_weather Through the Inferno\DCS Realtime Weather>IF "1" == " " SET HOUR=6 real D:\Games\Eagle Dynamics\DCS Real Weather Script's\dcs_weather Through the Inferno\DCS Realtime Weather>cd /D "C:\Users\tommy\Saved Games\DCS.openbeta\Missions\Persian Gulf\Downloaded\ThroughTheInfernoPersianGulfv1.03" C:\Users\tommy\Saved Games\DCS.openbeta\Missions\Persian Gulf\Downloaded\ThroughTheInfernoPersianGulfv1.03>"D:\Games\Eagle Dynamics\DCS Real Weather Script's\dcs_weather Through the Inferno\DCS Realtime Weather\dcs_weather.py" "C:\Users\tommy\Saved Games\DCS.openbeta\Missions\Persian Gulf\Downloaded\ThroughTheInfernoPersianGulfv1.03"ThroughTheInfernoPersianGulfCoopv1.03.miz OMDB OMDM real D:\Games\Eagle Dynamics\DCS Real Weather Script's\dcs_weather Through the Inferno\DCS Realtime Weather\dcs_weather.py:141: DeprecationWarning: 'U' mode is deprecated file = open(s_filename_to_read, "rU", encoding="utf8") b_daws_mission is False s_temperature is 8 s_cloud_thickness_m is 380 s_cloud_density is 5 s_cloud_base_m is 5000 s_iprecptns is 0 s_qnh is 760 s_wind_speed_8k is 15 s_wind_dir_8k is 0 s_wind_speed_2k is 10 s_wind_dir_2k is 0 s_wind_speed_gnd is 0 s_wind_dir_gnd is 180 s_turbulence is 20 s_fog_enable false s_fog_visibility_m 6000 s_fog_thickness_m 0 s_fog_density 0 s_primary_airport OMDB s_backup_airport OMDM s_year 2018 s_month 7 s_day 8 s_hour 16 s_mins 25 s_seconds 41 s_start_time 59141 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ https://api.checkwx.com/metar/OMDB/decoded { "results": 1, "data": [ { "icao": "OMDB", "name": "Dubai International", "observed": "08-07-2018 @ 14:00Z", "raw_text": "OMDB 081400Z 32009KT 5000 DU NSC 38\/24 Q0997 TEMPO 4000", "barometer": { "hg": 29.44, "kpa": 99.7, "mb": 997 }, "clouds": [ { "code": "CLR", "text": "Clear skies", "base_feet_agl": 0, "base_meters_agl": 0 } ], "conditions": [ { "code": "DU", "text": "Dust" } ], "dewpoint": { "celsius": 24, "fahrenheit": 75 }, "elevation": { "feet": 16, "meters": 5 }, "flight_category": "MVFR", "heat_c": 46, "heat_f": 114, "humidity_percent": 45, "temperature": { "celsius": 38, "fahrenheit": 100 }, "visibility": { "miles": "31\/11", "meters": "5,005" }, "wind": { "degrees": 320, "speed_kts": 9, "speed_mph": 10, "speed_mps": 5 } } ] } {'results': 1, 'data': [{'icao': 'OMDB', 'name': 'Dubai International', 'observed': '08-07-2018 @ 14:00Z', 'raw_text': 'OMDB 081400Z 32009KT 5000 DU NSC 38/24 Q0997 TEMPO 4000', 'barometer': {'hg': 29.44, 'kpa': 99.7, 'mb': 997}, 'clouds': [{'code': 'CLR', 'text': 'Clear skies', 'base_feet_agl': 0, 'base_meters_agl': 0}], 'conditions': [{'code': 'DU', 'text': 'Dust'}], 'dewpoint': {'celsius': 24, 'fahrenheit': 75}, 'elevation': {'feet': 16, 'meters': 5}, 'flight_category': 'MVFR', 'heat_c': 46, 'heat_f': 114, 'humidity_percent': 45, 'temperature': {'celsius': 38, 'fahrenheit': 100}, 'visibility': {'miles': '31/11', 'meters': '5,005'}, 'wind': {'degrees': 320, 'speed_kts': 9, 'speed_mph': 10, 'speed_mps': 5}}]} Max records is 1 raw is OMDB 081400Z 32009KT 5000 DU NSC 38/24 Q0997 TEMPO 4000 5005 b_daws_mission is False s_temperature is 38 s_cloud_thickness_m is 1015 s_cloud_density is 0 s_cloud_base_m is 2000 s_iprecptns is 0 s_qnh is 748 s_wind_speed_8k is 10 s_wind_dir_8k is 304 s_wind_speed_2k is 8 s_wind_dir_2k is 328 s_wind_speed_gnd is 5 s_wind_dir_gnd is 320 s_turbulence is 11 s_fog_enable true s_fog_visibility_m 4200 s_fog_thickness_m 566 s_fog_density 7 s_primary_airport OMDB s_backup_airport OMDM s_year 2018 s_month 7 s_day 8 s_hour 16 s_mins 25 s_seconds 41 s_start_time 59141 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ weather.py V1.1.6 2018.JUN.16_13:05 exiting C:\Users\tommy\Saved Games\DCS.openbeta\Missions\Persian Gulf\Downloaded\ThroughTheInfernoPersianGulfv1.03>ren ThroughTheInfernoPersianGulfCoopv1.03.miz ThroughTheInfernoPersianGulfCoopv1.03.zip C:\Users\tommy\Saved Games\DCS.openbeta\Missions\Persian Gulf\Downloaded\ThroughTheInfernoPersianGulfv1.03>"E:\Programma's\7-Zip\7z.exe" a -tzip ThroughTheInfernoPersianGulfCoopv1.03.zip mission -mx9 Access is denied. C:\Users\tommy\Saved Games\DCS.openbeta\Missions\Persian Gulf\Downloaded\ThroughTheInfernoPersianGulfv1.03>ren ThroughTheInfernoPersianGulfCoopv1.03.zip ThroughTheInfernoPersianGulfCoopv1.03.miz C:\Users\tommy\Saved Games\DCS.openbeta\Missions\Persian Gulf\Downloaded\ThroughTheInfernoPersianGulfv1.03>cd /D "D:\Games\Eagle Dynamics\DCS World OpenBeta\bin" D:\Games\Eagle Dynamics\DCS World OpenBeta\bin>start /D"D:\Games\Eagle Dynamics\DCS World OpenBeta\bin" /B dcs.exe D:\Games\Eagle Dynamics\DCS World OpenBeta\bin>pause Press any key to continue . . . Edited July 8, 2018 by Bottle-RUM Intel® Core™ i7-6900K Processor (watercooled) - Asus ROG Rampage V Edition 10 (watercooled) motherbord - 8 x 8Gb Corsair Vengeance LPX DDR4-3333Mhz RAM (watercooled) - 2 x ROG-STRIX-GTX1080TI-11G-GAMING (watercooled) - Creative X-Fi Titanium Fatal1ty Pro - Logitech G910 Orion Spark - Asus PG348 34'' LCD screen - Razor Tiamat 7.1 - Thrustmaster HOTAS Warthog Replica USAF A-10C - TrackIR 5 - Pro Flight Cessna Rudder Pedals - VAICOM 2.5 PRO
Recommended Posts