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://

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

Viesti Kirjoittaja Temuri » Ke Marras 11, 2015 19:45

Seuraava iteraatio.

Koodi: Valitse kaikki

#!/usr/bin/env python
import os
import csv
import time

# Parses the contents of the given file and updates dictionary accordingly
def log_file_parser(infile):
    for line in infile:
        if "AType:9" in line:
            splitstr = line.split(" ")
            countrysplit = splitstr[3]
            countrysplit2 = countrysplit.split(":")[1]
            positionsplit = splitstr[4]
            positionsplit2 = positionsplit.split("(")[1]
            positionsplit3 = positionsplit2.split(".")[0]
            fields[positionsplit3] = countrysplit2
    return fields

# Gets the latest log file
def file_sniffer():
    logdir='.' # path to your log directory
    logfiles = sorted([ f for f in os.listdir(logdir) if f.startswith('missionReport')])
    return logfiles[-1]

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

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

# Gives server commands based on airfield owners to set airfield owners on server
def set_airfield_owners(fields):
        if fields['39220'] == "101":
            print "Setting Dubki to VVS"
        if fields['39220'] == "201":
            print "Setting Dubki to Axis"
        if fields['6386'] == "101":
            print "Setting Naglbaevka to VVS"
        if fields['6386'] == "201":
            print "Setting Naglbaevka to Axis"

fields = csv_to_airfields()
print fields
# Set the airfield owners
set_airfield_owners(fields)

while True:
    logfile = file_sniffer()
    logfiletoparse = open(logfile, "r")
    fields = log_file_parser(logfiletoparse)
    logfiletoparse.close()
    airfields_to_csv(fields)
    time.sleep(15)
Seuraavaksi voisi toteuttaa toiminnallisuuden, jossa csv:stä ladataan vain, kun nuuskaistaan ensimmäinen missionReport.

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 22:23

Seuraava iteraatio.

Toteutettu niin, että jos parsitaan ensimmäistä logifileä (oletettavasti "T:0" merkkaa että on kyseessä missionin eka logifile), niin kenttien omistajia ei parsita. Tällöin jää voimaan kenttämääritykset, jotka luetaan aluksi csv filestä.

Koodi: Valitse kaikki

#!/usr/bin/env python

import os
import csv
import time

# Parses the contents of the given file and updates dictionary accordingly
def log_file_parser(infile):
    for line in infile:
        if "MFile:Multiplayer" in line: # Assuming "MFile:Multiplayer" means that this is the first log file
            return {} # We don't parse rest of the file since this is the first log
        if "AType:9" in line:
            splitstr = line.split(" ")
            countrysplit = splitstr[3]
            countrysplit2 = countrysplit.split(":")[1]
            positionsplit = splitstr[4]
            positionsplit2 = positionsplit.split("(")[1]
            positionsplit3 = positionsplit2.split(".")[0]
            fields[positionsplit3] = countrysplit2
    return fields

# Gets the latest log file
def file_sniffer():
    logdir='.' # path to your log directory
    logfiles = sorted([ f for f in os.listdir(logdir) if f.startswith('missionReport')])
    return logfiles[-1]

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

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

# Gives server commands based on airfield owners to set airfield owners on server
def set_airfield_owners(fields):
        if fields:
            if fields['39220'] == "101":
                print "Setting Dubki to VVS"
            if fields['39220'] == "201":
                print "Setting Dubki to Axis"
            if fields['6386'] == "101":
                print "Setting Naglbaevka to VVS"
            if fields['6386'] == "201":
                print "Setting Naglbaevka to Axis"

# Get the stored owner information
fields = csv_to_airfields()

# Set the airfield owners
set_airfield_owners(fields)

while True:
    logfile = file_sniffer()
    logfiletoparse = open(logfile, "r")
    fields = log_file_parser(logfiletoparse)
    logfiletoparse.close()
    if fields:
        airfields_to_csv(fields) #We don't put possible empty data to csv
    time.sleep(15)
TO-DO:
Kenttien koordinaattien ja nimien mappaus.
RConClient-toteutus

Edit: "T:0" ei merkkaa serverin käynnistystä.

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 » La Marras 14, 2015 11:55

Dodii, scriptihässäkkää kokeiltu serverillä. Rconclient-scriptikin tuntuu toimivan, ainakin chat messaget menee läpi :) Nyt pitänee siis tuohon missioniin lisätä niitä server input MCU:ita ja liittää ne oikeaan paikkaan.

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 » Su Marras 15, 2015 18:58

Olen koittanu tuosta hämähäkinseitistä ottaa selvää, mutta aika perhanan hepreaa se on noin graafisena. :D

Untamo, onko tuossa lentokentän Logic groupissa tms. jotain sellaista MCU:ta, jota triggaamalla se kenttä vaihtaisi puolta heti, vai onko se toteutettu jotenkin laskureilla? Jos se on toteutettu laskureilla, niin tuo pitänee tehdä niin, että trigataan server inputilla tuhoamiskomennot, ja sen jälkeen laitetaan parat kentälle.

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 » Su Marras 15, 2015 21:07

On siellä sellaiset triggerit, muistaakseni tein ne ryssä/saku -kenttä groupit niin niissä ei ole muuta eroa, kuin se, kumpaa puoli-triggeriä kutsutaan.

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 » Ma Marras 16, 2015 17:56


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 » Ma Marras 16, 2015 23:11

S!

Näyttää äärimmäisen lupaavalta! :)

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 » Ma Marras 16, 2015 23:24

Kyllä. Pitää vielä toteuttaa toiminnallisuus, jossa parsittu missionreport poistetaan. Lisäksi olisi hyvä tehdä vielä logitus itse skriptille.

Mietin, että mitenhän käy jos spawnaa kentälle ja odottaa että kenttä vaihtaa omistajaa. Ei olisi tarvinut kokeilla, jos ois vähän miettiny: tulee it-kuti kupoliin :D

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 18, 2015 11:12

Jahka ollaan todettu skripti toimivaksi, niin taitaa olla vaivattominta tehdä eri versio eri mapeille siitä päivitysskriptistä, niin ei tarvi aina rukata skriptistä niitä kenttien sijaintikoordinaatteja.

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 » La Marras 21, 2015 16:32

http://forum.il2sturmovik.com/topic/168 ... ntry305444
Mielenkiintoista:
"New flag object added that can be used in multiplayer missions for capturing objects and territories."
"New feature: ability to automatically login and load a certain mission or replay. Use config file <game_folder>\data\autoplay.cfg."

Nyt selkis sekin, mitä se tikun kuva serverilistassa tarkoittaa. Taitaa olla tästä kyse:
"Furthermore, in case a part of the community feels they want to play only with players who use a joystick, we added a special option to dedicated server configuration that allows a server owner to restrict the control scheme to joystick."

Vastaa Viestiin