napoleonico operazionale (Campaigns on the Danube)

Discussione in 'Wargames - Generale' iniziata da sinbad, 25 Gennaio 2015.

  1. mitra

    mitra

    Registrato:
    5 Febbraio 2006
    Messaggi:
    383
    Ratings:
    +70
    non serve usare il save del gioco, il comando dumpscen or dumpscenoob anche dati dalla linea di comando del salvataggio esportano lo odb di scenario a fine partita. La parte più onerosa è preparare un piccolo db con tutte le unità e ufficiali fino alla brigata delle unità di CoD e attribuirgli i valori e naturalmente le relative uniformi, dopo fare un software di export\import di un csv di scenario e degli altri file di battaglia non è eccessivamente complicato.
     
  2. alessillo

    alessillo

    Registrato:
    6 Ottobre 2014
    Messaggi:
    4
    Ratings:
    +2
    scusa la mia somma ignoranza mitra, ma dove devo dare questo comando dumpscen o dumpscenoob? Quando voglio salvare una partita in Campaigns on the Danube mi appare una finestra in cui l'unica cosa che posso fare è scegliere la cartella e scrivere il nome del file.
     
  3. mitra

    mitra

    Registrato:
    5 Febbraio 2006
    Messaggi:
    383
    Ratings:
    +70
    durante il match o dopo aver caricato il save, premi il tasto @ (fa apparire la linea di comando in alto a sinistra) e poi digiti dumpscen (che da il formato oob delle sandboxes) o dumpscenoob (che da il formato oob scenario degli scenari normali). E poi dai invio.

    nella cartella SOWWL del gioco in documenti trovi il file scenario.csv salvato della partita con i valori allo stato attuale (per essere più specifici lo trovi in \SowWL\Scenarios\ScenSave ).

    Con lo stesso sistema usando il comando dumpgamedb salvi il file delle statistiche di perdite di fine battaglia, con dumplocs salvi la posizione delle truppe sulla mappa, con dumpdead il file della posizione dei morti sul campo; tutti i file generati da questi comandi finiscono in \SowWL\.
     
  4. mitra

    mitra

    Registrato:
    5 Febbraio 2006
    Messaggi:
    383
    Ratings:
    +70
    Se davvero vi interessa, per gli sprites e gli oob potete contattare gunship sul forum di Scourge, lui aveva fatto il mod napoelonico road to wagram, quindi aveva oob e uniformi della campagna 1809 e poi ha lavorato con me per le statistiche degli oob di Waterloo, quindi conosce la scala che abbiamo usato. Poi semmai con i files vi do una mano, non conosco il tipo di dato che CoD esporta o importa ma non penso sia complicato se è pensato per le battaglie con le miniature.
     
  5. Sargon

    Sargon

    Registrato:
    15 Dicembre 2013
    Messaggi:
    128
    Ratings:
    +21
    Ciao Sinbad, attualmente in sow non ci sono ancora gli OdB austriaci, russi, bavaresi, etc.
    Tra un annetto forse ......

    E' possibile comunque portare i risultati di una battaglia, in termini di perdite, dispersi etc, per ambientare un secondo scenario. Con l'editor non sarà affatto difficile.
     
  6. sinbad

    sinbad

    Registrato:
    31 Luglio 2009
    Messaggi:
    548
    Ratings:
    +49
    sì, lo so

    la mia è una speranza per il futuro:
    Abbiamo un gran bel gioco a livello operazionale + gran bel gioco a livello tattico
    perché non unirli?
     
  7. mitra

    mitra

    Registrato:
    5 Febbraio 2006
    Messaggi:
    383
    Ratings:
    +70
    Ho preso CoD visto che c'era il coupon, l'ho appena sfiorato perchè non ho molto tempo adesso, però dal manuale mi sembra che il sistema di miniature implichi l'imputazione manuale dei dati della battaglia non c'è un sistema di file come per EiA.
     
  8. ivaldi79

    ivaldi79

    Registrato:
    2 Aprile 2010
    Messaggi:
    1.954
    Ratings:
    +209
    Devastante l'idea di simbad :approved:
     
  9. mitra

    mitra

    Registrato:
    5 Febbraio 2006
    Messaggi:
    383
    Ratings:
    +70
    SI però se CoD accetta solo l'imputazione manuale dei dati casca tutto; nulla si esporta nulla si importa
     
  10. risorgimento59

    risorgimento59

    Registrato:
    9 Maggio 2015
    Messaggi:
    46
    Ratings:
    +7
    Premetto che non ho CoD... non ancora almeno...
    Per "imputazione manuale" intendete controlli di Win32 (editbox, buttons, sliders, etc.)?
    Potreste farmi qualche screen delle schermate interessate, per favore?
    Nel qual caso si potrebbe ricorrere ad un hook (anche da Python volendo) per riempirli con dati SOWWL / interrogarli per successivo impiego in SOWWL.
    La cosa più fastidiosa (e legalmente borderline), forse, è trovare gli HWND o gli id di finestra dei singoli elementi UI.
    Per quanto laborioso, penso sia fattibile, comunque.
    Saluti.
    Nicolò
     
  11. mitra

    mitra

    Registrato:
    5 Febbraio 2006
    Messaggi:
    383
    Ratings:
    +70
    https://www.sendspace.com/file/j277x5

    Il processo è copio fuori le forze in campo (1ma immagine), la partita viene salvata, riapro dal salvataggio e mi compare la schermata 2; definisco chi ha vinto e le perdite (schermata 3). Anche nel 2004 un modo un po' più smart di procedere si poteva trovare
     
  12. risorgimento59

    risorgimento59

    Registrato:
    9 Maggio 2015
    Messaggi:
    46
    Ratings:
    +7
    Grazie Davide. Sempre gentilissimo. :)

    Preso.
    Concordo ovviamente sulla valutazione del sistema di I/O risultati/oobs. Inadeguato.
    La situazione della schermata #1 dovrebbe essere la seguente:

    Codice:
    ControlType:    UIA_PaneControlTypeId (0xC371)
    Name:    "MiniaturesForm"
    IsEnabled:    true
    ClassName:    "TMiniaturesForm"
    FirstChild:    "" pannello (French Forces in screen 1)
    LastChild:    "" pannello (Coalition Forces in screen 1)
    Next:    "Campaigns on the Danube 1805/1809  version 3.03" finestra
    Previous:    "" pannello
    Children:    "" pannello
    Ancestors:    "Desktop" pannello
        [ No Parent ]
    
    ControlType:    UIA_PaneControlTypeId (0xC371)
    Name:    ""
    ClassName:    "TAdvSmoothPanel"
    FirstChild:    "" Modifica
    LastChild:    "" Modifica
    Next:    [null]
    Previous:    [null]
    Children:    "" Modifica
        "OK" pannello
        "" Modifica
    Ancestors:    "MiniaturesForm" pannello
        "Desktop" pannello
        [ No Parent ]
    
    ControlType:    UIA_EditControlTypeId (0xC354)
    Name:    ""
    ClassName:    "TMemo" // French Forces in screen 1
    Value.Value:    "Brady          Strength 18 Regular Fresh     Steady
    Ulm            Strength 28 Regular Fresh     Confident
    II A           Strength 3  Regular Fresh     Confident
    "
    FirstChild:    [null]
    LastChild:    [null]
    Next:    "OK" pannello
    Previous:    [null]
    Children:    Container has no children
    Ancestors:    "" pannello // TAdvSmoothPanel
        "MiniaturesForm" pannello
        "Desktop" pannello
        [ No Parent ]
    
    ControlType:    UIA_EditControlTypeId (0xC354)
    Name:    ""
    ClassName:    "TMemo" // Coalition Forces in screen 1
    Value.Value:    "Neubronn    Strength 14  Regular Fresh Confident
    Wollwarth    Strength 4  Regular Fresh Confident
    VII (A)    Strength 2  Regular Fresh Confident
    "
    FirstChild:    [null]
    LastChild:    [null]
    Next:    [null]
    Previous:    "OK" pannello
    Children:    Container has no children
    Ancestors:    "" pannello // TAdvSmoothPanel
        "MiniaturesForm" pannello
        "Desktop" pannello
        [ No Parent ]
    
    Quindi, in teoria, con un FindWindowEx e fornendogli "TMiniaturesForm" (convenzione di nominazione Delphi?) come classe, si potrebbero prendere i dati delle forze in campo.
    Orario e terreno della battaglia sembrano più problematici, non avendo un controllo Win32 vero e proprio (mi sà che il testo è mostrato a video direttamente attraverso le GDI).
    Vedo due possibilità: fare un detour alle API di GDI (legalissimo ma non elegante) o leggere direttamente da memoria del processo il dato (altrettanto legale e fattibile, visto che non si tocca nulla, per quanto sgradevole senza l'autorizzazione di Frank Hunter).

    Le schermate #2 e #3 (importazione dati) non sono ancora riuscito ad analizzarle, purtroppo. Mi crasha ricaricando il savegame. Forse ho patchato male il gioco? Potreste condividere un savegame garantendomi che vi funziona, per favore?

    Grazie. ;)
    Nicolò
     
    Ultima modifica: 7 Luglio 2015
  13. risorgimento59

    risorgimento59

    Registrato:
    9 Maggio 2015
    Messaggi:
    46
    Ratings:
    +7
    Situazione 2^ / 3^ schermata (nessun problema qui):

    Codice:
    #define UIA_ComboBoxControlTypeId 0xC353
    #define UIA_EditControlTypeId 0xC354
    #define UIA_ListItemControlTypeId 0xC357
    #define UIA_ListControlTypeId 0xC358
    #define UIA_WindowControlTypeId 0xC370
    #define UIA_PaneControlTypeId 0xC371
    
    // MiniRecoverForm
    - "", "TMiniRecoverForm" (UIA_WindowControlTypeId)
      - "", "TAdvSmoothPanel" (UIA_PaneControlTypeId)
    
        // Battle decision (1)
        - "Battle had no clear decision", "TAdvSmoothToggleButton" (UIA_PaneControlTypeId)
        - "Coalition victory", "TAdvSmoothToggleButton" (UIA_PaneControlTypeId)
        - "French victory", "TAdvSmoothToggleButton" (UIA_PaneControlTypeId)
     
        // Length of battle, in hours (2)
        - "", "TSpinEdit" (UIA_EditControlTypeId)
          - "", "TSpinButton" (UIA_PaneControlTypeId)
     
        // Side (3)
        - "French", "TAdvSmoothToggleButton" (UIA_PaneControlTypeId)
        - "Coalition", "TAdvSmoothToggleButton" (UIA_PaneControlTypeId)
     
        // Units (4)
        - "", "TListBox" (UIA_ListControlTypeId)
          - "Morand" (UIA_ListItemControlTypeId)
          - "Montbrun" (UIA_ListItemControlTypeId)
          - ...
     
        // Strength (5)
        - "", "TSpinEdit" (UIA_EditControlTypeId)
          - "", "TSpinButton" (UIA_PaneControlTypeId)
       
        // Fatigue (5)
        - "", "TSpinEdit" (UIA_EditControlTypeId)
          - "", "TSpinButton" (UIA_PaneControlTypeId)
       
        // Morale (5)
        - "", "TComboBox" (UIA_ComboBoxControlTypeId) // Value.Value = "Shattered"
          - "", "ComboLBox" (UIA_ListControlTypeId)
            - "Shattered" (UIA_ListItemControlTypeId) // SelectionItem.IsSelected = true
            - "Wavering" (UIA_ListItemControlTypeId)
            - "Brittle" (UIA_ListItemControlTypeId)
            - "Steady" (UIA_ListItemControlTypeId)
            - "Confident" (UIA_ListItemControlTypeId)
          - "" , "Edit" (UIA_EditControlTypeId) // Value.Value = "Shattered"
       
        // Update (5)
        - "Update", "TAdvSmoothButton" (UIA_PaneControlTypeId)
     
        // Finished (6)
        - "Finished", "TAdvSmoothButton" (UIA_PaneControlTypeId)
    Formato: Name, ClassName (ControlType).
     
  14. risorgimento59

    risorgimento59

    Registrato:
    9 Maggio 2015
    Messaggi:
    46
    Ratings:
    +7
    Invece di lavorare sui controlli Win32, ho scelto l'approccio (totalmente esterno / non intrusivo) di I/O con la memoria del gioco.

    Et voilà!

    Codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <OutputBattleData date="1809-05-27" x="66" y="17" type="1" startTime="1">
        <Army id="1" name="Allemagne" leader="1">
            <Unit id="5" type="1" name="Morand" corps="2" strength="22" quality="2" fatigue="4" morale="12"/>
            <Unit id="6" type="1" name="Friant" corps="2" strength="18" quality="2" fatigue="4" morale="12"/>
            <Unit id="8" type="1" name="Demont" corps="2" strength="8" quality="2" fatigue="5" morale="12"/>
            <Unit id="11" type="1" name="Legrand" corps="3" strength="9" quality="2" fatigue="3" morale="12"/>
            <Unit id="12" type="1" name="Saint-Cyr" corps="3" strength="19" quality="2" fatigue="4" morale="12"/>
            <Unit id="17" type="3" name="IV (A)" corps="3" strength="5" quality="2" fatigue="4" morale="12"/>
        </Army>
        <Army id="2" name="Rhein" leader="19">
            <Unit id="34" type="2" name="Klenau" corps="13" strength="4" quality="2" fatigue="0" morale="12"/>
            <Unit id="46" type="1" name="Hohenfeld" corps="12" strength="11" quality="2" fatigue="0" morale="12"/>
            <Unit id="47" type="1" name="Kottulinsky" corps="12" strength="10" quality="2" fatigue="0" morale="12"/>
            <Unit id="48" type="2" name="Wallmoden" corps="12" strength="3" quality="2" fatigue="0" morale="12"/>
            <Unit id="49" type="3" name="VI A" corps="12" strength="3" quality="2" fatigue="0" morale="12"/>
            <Unit id="50" type="1" name="Aspre" corps="13" strength="11" quality="4" fatigue="0" morale="12"/>
            <Unit id="51" type="1" name="Prochaszka" corps="13" strength="12" quality="3" fatigue="0" morale="10"/>
            <Unit id="52" type="3" name="IR A" corps="13" strength="4" quality="2" fatigue="0" morale="12"/>
            <Unit id="53" type="2" name="Hessen-Hom." corps="13" strength="8" quality="3" fatigue="0" morale="12"/>
            <Unit id="54" type="2" name="Kienmayer" corps="13" strength="15" quality="2" fatigue="0" morale="12"/>
        </Army>
        <Corps id="2" name="IV" leader="5"/>
        <Corps id="3" name="VII" leader="6"/>
        <Corps id="12" name="I Rs" leader="27"/>
        <Corps id="13" name="Inn." leader="29"/>
        <Leader id="1" name="Napoleon" skills="8-9-9"/>
        <Leader id="5" name="Massena" skills="8-8-7"/>
        <Leader id="6" name="Lefebvre" skills="8-4-8"/>
        <Leader id="19" name="Charles" skills="7-8-7"/>
        <Leader id="27" name="Liechtenstein" skills="4-3-4"/>
        <Leader id="29" name="John" skills="4-3-4"/>
    </OutputBattleData>
    Prossimo step: l'ingresso dei risultati della battaglia da file XML.

    Poi le opportune conversioni output_cod -> input_sow e output_sow -> input_cod spero le possa fare qualcun'altro. :)

    Ciao. ;)
     
  15. ivaldi79

    ivaldi79

    Registrato:
    2 Aprile 2010
    Messaggi:
    1.954
    Ratings:
    +209
    Hey risorgimento posso chiedere che stai facendo XD
     
  16. risorgimento59

    risorgimento59

    Registrato:
    9 Maggio 2015
    Messaggi:
    46
    Ratings:
    +7
    Stò cercando di rendere possibile un'interazione automatizzata tra COD e SOWWL.
    Mi sembrava sottointeso e chiedo scusa se non si era capito. :)
    Attraverso files XML nel caso specifico, dato che COD non contempla(va) alcuna possibilità di input / output se non manualmente da controlli Win32.
    Così invece si potrebbe, in linea del tutto teorica, relazionare con un semplice click persino la posizione x/y nella griglia esagonale di COD ad una porzione di archivio di dati elevazionali satellitari / contenuti procedurali (fiumi, strade, boschi, villaggi, etc.) da cui attingere per generare il campo di battaglia di SOWWL.
    Per il momento mi accontenterei di poter giocare consistentemente con OOB ed un set di mappe predefinito.
    Ciao. ;)
     
  17. risorgimento59

    risorgimento59

    Registrato:
    9 Maggio 2015
    Messaggi:
    46
    Ratings:
    +7
    CODPlus, versione 0.9:
    http://www68.zippyshare.com/v/EBxPu3aL/file.html

    Permette di esportare i dati delle battaglie e di importare successivamente i risultati delle medesime via XML (ci sono files di esempio allegati), passando per le schermate "Miniature".
    Se avete installato in directory alternative, dovete cambiare il primo argomento a CODPlus nel batch.
    Il gioco è fatto partire automaticamente.

    Saluti.
    Nicolò
     
    Ultima modifica: 11 Luglio 2015
  18. sinbad

    sinbad

    Registrato:
    31 Luglio 2009
    Messaggi:
    548
    Ratings:
    +49
    Finalmente uscita la patch 3.04 di questo interessantissimo gioco
     
  19. sinbad

    sinbad

    Registrato:
    31 Luglio 2009
    Messaggi:
    548
    Ratings:
    +49
    Qualcuno vuole provare 1 pbem?

    :)
    Non avrei mai creduto...
     
  20. qwetry

    qwetry

    Registrato:
    29 Giugno 2006
    Messaggi:
    6.799
    Località:
    Emilia/Sicilia
    Ratings:
    +1.003
    l'attuale basso prezzo, la semplicità, la simulazione della catena di comando, la scala, e il non aver mai giocato un napoleonico a parte gli hps, mi invogliano all'acquisto...
     
    • Agree Agree x 1

Condividi questa Pagina