IL-2 BoS WarBirds pähkäilyä

Temuri
Viestit: 104
Liittynyt: Su Huhti 06, 2014 17:12
Handle: Temuri
Etunimi: Teemu
Sukunimi: Hietanen
Verkkosivu: http://

IL-2 BoS WarBirds pähkäilyä

Viesti Kirjoittaja Temuri » Ma Marras 09, 2015 11:41

BoSin tehtäväeditorissa on Server Input MCU. Näitä käsittääkseni voi käyttää tapahtumien manuaaliseen triggaukseen tehtävän ollessa päällä. Käsittääkseni Coconut on käyttänyt näitä omissa tehtävissään: http://forum.il2sturmovik.com/topic/164 ... -missions/

Homma toimii näin:
1. Tehtävään laitetaan vaikkapa "LapinoToAxis" -niminen server input MCU, ja kytketään se logiikkaan, jossa kentän omistus vaihtuu Axikselle.
2. Käynnistetään Dserver ja tehtävä.
3. Otetaan RConClientilla yhteys serveriin ja annetaan "Server Input" käsky, jonka sisältö on "LapinoToAxis".
---> Kenttä siirtyy axiksen haltuun.

Pelkän RConClientin käyttö olis ok, jos joku olisi koko ajan kyttäämässä mitä serverillä tapahtuu. Eli sillä voi kokeilla että tuo tehtäväpuolen logiikka toimii. Jotta ei tarvisi kytätä serveriä koko ajan, pitäisi toteuttaa softa, joka nuuskii dserverin logeja ja:
1. Tallentaa tiedon kun kenttä menee kiinni
2. Tallentaa tiedon kun kenttä vaihtaa omistajaa
3. Tehtävän käynnistyessä lähettää serverille server input käskyt, jotta kentät saadaan tiloihin, joissa ne olivat ennen tehtävän uudelleenkäynnistystä/serverin crashia.

RConClientista on toteutukset lähdekoodeineen olemassa ja jaossa ainakin F#:lla ja Pythonilla tehtyinä. Ilmeisesti rconclientin kuvaus löytyy: bin/console/readme.txt, joten mahdollista on tehdä myös valitsemallaan kielellä.

Koitan kaivella tarkempaa tietoa noista logeista, että mitä sinne menee, ja saako sinne jollain tehtävän triggerillä suoraan sisältöä tyyliin "MISSION STARTED" (jos vastaavaa viestiä logeissa ei jo ole).

Temuri
Viestit: 104
Liittynyt: Su Huhti 06, 2014 17:12
Handle: Temuri
Etunimi: Teemu
Sukunimi: Hietanen
Verkkosivu: http://

Re: IL-2 BoS WarBirds pähkäilyä

Viesti Kirjoittaja Temuri » Ti Marras 10, 2015 12:57

Tämäntapaista pyyttonia väänsin, vaikka en koodata osaakaan. Pitää vielä pukertaa se logiennuuskija, ja napata se rconclientin toteutus. Tässä ollaan toki *nix ympäristössä ihan vaan siitä syystä, että python oli linuxille asennettuna jo.

Koodi: Valitse kaikki

#!/usr/bin/env python

# Airfield reader / writer / setter

import csv

# Make an initial dictionary
airfields = {'lapino': 'axis', 'gumrak': 'VVS'}

# Write airfield owners to csv file
def airfields_to_csv(airfields):
    writer = csv.writer(open("/path/to/airfields.csv", 'wb'))
    for airfield, owner in airfields.items():
        writer.writerow([airfield, owner])

airfields_to_csv(airfields)

# Read airfield owners from csv file
def csv_to_airfields():
    reader = csv.reader(open("/path/to/airfields.csv", 'rb'))
    airfields = dict(reader)
    return airfields

airfields = csv_to_airfields()

# Gives server commands based on airfield owners to set airfield owners on serv$
def set_airfield_owners(owner):
    lapino = owner['lapino']
    gumrak = owner['gumrak']
    if lapino == "axis":
            print "server input command SetLapinoToAxis"
    if lapino == "VVS":
            print "server input command SetLapinoToVVS"
    if gumrak == "axis":
            print "server input command SetGumrakToAxis"
    if gumrak == "VVS":
            print "server input command SetGumrakToVVS"

# Set the airfield owners
set_airfield_owners(airfields)

Untamo
Viestit: 1439
Liittynyt: Ma Joulu 15, 2008 10:01
Handle: LLv34_Untamo
Laivue: Lentolaivue 34
Etunimi: Heikki
Sukunimi: Siltala
Verkkosivu: http://www.virtualpilots.fi/LLv34/
Paikkakunta: Liminka

Re: IL-2 BoS WarBirds pähkäilyä

Viesti Kirjoittaja Untamo » Ti Marras 10, 2015 15:24

Itsehän olen koodari kyllä ammatiltani, mutta aikaa on vaan niin pannahisen huonosti. Kiinnostusta kyllä piisaisi tutkia asiaa.

Temuri
Viestit: 104
Liittynyt: Su Huhti 06, 2014 17:12
Handle: Temuri
Etunimi: Teemu
Sukunimi: Hietanen
Verkkosivu: http://

Re: IL-2 BoS WarBirds pähkäilyä

Viesti Kirjoittaja Temuri » Ti Marras 10, 2015 15:35

Vaal on tehnyt ainakin Rise of Flightille tuon rconclientin: https://github.com/vaal-/rof-rcon-client. Ton vois ottaa pohjaksi. Pitänee tällä viikolla perehtyä tuohon ja samalla niihin dserverin logeihin, että mitä niihin kirjoitetaan ja milloin.

Untamo
Viestit: 1439
Liittynyt: Ma Joulu 15, 2008 10:01
Handle: LLv34_Untamo
Laivue: Lentolaivue 34
Etunimi: Heikki
Sukunimi: Siltala
Verkkosivu: http://www.virtualpilots.fi/LLv34/
Paikkakunta: Liminka

Re: IL-2 BoS WarBirds pähkäilyä

Viesti Kirjoittaja Untamo » Ti Marras 10, 2015 16:11

Jos esim. alkujaan ottas tavotteeksi persistoida kenttien tilat, niin lähtee ihan ruohonjuuresta, että kummalle puolelle kenttä kuuluu. Menee jo huomattavasti monimutkaisemmaksi jos rupeaa hanskaan sitä onko kenttä kiinni. Siinä pitäisi sitten jo tietää jokaisen kentän objektin tila, kauanko on ollut tuhoutuneena yms.

Eli, alkuun, jos vaikka sais nuo kentän puolisuudet persistoitua, niin missiota vois reloadata huoletta esim. 8h välein, niin pysyy pelin aikakin päivän tunneilla, eli ei tarvi pimeässä lentää.

Temuri
Viestit: 104
Liittynyt: Su Huhti 06, 2014 17:12
Handle: Temuri
Etunimi: Teemu
Sukunimi: Hietanen
Verkkosivu: http://

Re: IL-2 BoS WarBirds pähkäilyä

Viesti Kirjoittaja Temuri » Ti Marras 10, 2015 18:34

Untamo kirjoitti: Eli, alkuun, jos vaikka sais nuo kentän puolisuudet persistoitua, niin missiota vois reloadata huoletta esim. 8h välein, niin pysyy pelin aikakin päivän tunneilla, eli ei tarvi pimeässä lentää.
Juurikin tästä olen ajatellut lähteä liikkeelle. Tuossa pythonpätkässähän se rakenne sille jo on (oon jopa testannut että tuo toimii), mutta siitä puuttuu se rcon client -osio ja se logien nuuskinta.

Temuri
Viestit: 104
Liittynyt: Su Huhti 06, 2014 17:12
Handle: Temuri
Etunimi: Teemu
Sukunimi: Hietanen
Verkkosivu: http://

Re: IL-2 BoS WarBirds pähkäilyä

Viesti Kirjoittaja Temuri » Ti Marras 10, 2015 19:18

missionReport login sisälmykset näyttää tältä:

Koodi: Valitse kaikki

T:0 AType:15 VER:17
T:155 AType:9 AID:16384 COUNTRY:201 POS(43527.320, 82.599, 7472.043) IDS()
T:155 AType:9 AID:84992 COUNTRY:101 POS(22845.932, 149.887, 31159.762) IDS()
T:155 AType:9 AID:153600 COUNTRY:201 POS(39220.695, 138.946, 33305.273) IDS()
T:155 AType:9 AID:222208 COUNTRY:201 POS(29062.523, 108.584, 20014.617) IDS()
T:155 AType:9 AID:290816 COUNTRY:101 POS(13947.039, 118.420, 15363.509) IDS()
T:155 AType:9 AID:359424 COUNTRY:101 POS(6386.711, 92.747, 41402.898) IDS()
Tuossa ilmeisesti sanotaan mikä kenttä on milläkin puolella hallussa.

Kun nuo mission logit on käytössä, niin serveri generoi niitä minuutissa kaksi kappaletta, ja nimeää ne tyyliin:
missionReport(2015-11-10_18-09-00)[0].txt
missionReport(2015-11-10_18-09-29)[1].txt
...

Seuraavaksi pitäisi siis testata että kirjautuuko kentän omistajan vaihto missionReport logiin. Jos kirjautuu, niin silloin riittänee, että skripti ottaa aina uusimman missionReport login ja parsii siitä mahdolliset kentänvaihdokset ja laittaa ne talteen.

Temuri
Viestit: 104
Liittynyt: Su Huhti 06, 2014 17:12
Handle: Temuri
Etunimi: Teemu
Sukunimi: Hietanen
Verkkosivu: http://

Re: IL-2 BoS WarBirds pähkäilyä

Viesti Kirjoittaja Temuri » Ti Marras 10, 2015 20:16

Tarkastelin tuota Untamon tekemää wb-kokeilu-5.missionia, niin missionReport logissa esim. tällä rivillä olevat POS koordinaatit:
T:155 AType:9 AID:153600 COUNTRY:201 POS(39220.695, 138.946, 33305.273) IDS()
vastaavat missionissa olevaa Dubkin kentän koordinaatteja, ja:
T:155 AType:9 AID:359424 COUNTRY:101 POS(6386.711, 92.747, 41402.898) IDS() vastaa Naglbaevkan kentän koordinaatteja.

Untamo
Viestit: 1439
Liittynyt: Ma Joulu 15, 2008 10:01
Handle: LLv34_Untamo
Laivue: Lentolaivue 34
Etunimi: Heikki
Sukunimi: Siltala
Verkkosivu: http://www.virtualpilots.fi/LLv34/
Paikkakunta: Liminka

Re: IL-2 BoS WarBirds pähkäilyä

Viesti Kirjoittaja Untamo » Ti Marras 10, 2015 23:03

Okei, hyviä löydöksiä :)

Temuri
Viestit: 104
Liittynyt: Su Huhti 06, 2014 17:12
Handle: Temuri
Etunimi: Teemu
Sukunimi: Hietanen
Verkkosivu: http://

Re: IL-2 BoS WarBirds pähkäilyä

Viesti Kirjoittaja Temuri » Ke Marras 11, 2015 15:50

Tässä logifilen parseriluonnosta. Tuottaa dictionaryn, jossa on logifilestä otettu kentän X position ja sen omistaja-arvo. Ruma ja varmasti buginen ku perkele :D

Koodi: Valitse kaikki

#!/usr/bin/env python
fields = {}
def log_file_parser(infile):
    for line in infile:
        if line.startswith("T:155"):
            splitstr = line.split(" ")
            countrysplit = splitstr[3]
            countrysplit2 = countrysplit.split(":")[1]
            positionsplit = splitstr[4]
            positionsplit2 = positionsplit.split("(")[1]
            positionsplit3 = positionsplit2.split(".")[0]
            fields[positionsplit3] = countrysplit2


logfile = open("logs.txt", "r")

log_file_parser(logfile)

logfile.close()

print fields
edit: nätimpi funktion kanssa :P

Vastaa Viestiin