﻿system "Track Lines"
{
Autore: J.Angel
Xtremizzato da: laRoulette.it

Dare un punteggio di + o - alle sestine a secondo della loro uscita (se tra le ultime 3 è + altrimenti è -)
In base all'andamento del punteggio piazzare le puntate sulle ultime 3 sestine

Spiegazione sistema sul sito www.laroulette.it
}
method "main"
begin
    While Starting a New Session
    begin
        Put 0 on Record "Boules" data;
       //Call "Inserisci Parametri";

    end

    While On each Spin
    begin
        // Memorizza l'ultima terzina e l'ultimo numero uscito
       copy last Street nel Record "Uscita" layout
       copy last number nel Record "numero" layout
       if record "numero" layout = number 0  //se esce lo zero non elabora le sestine
        begin
            Call "Punta"
            exit
        end
       Call "Assegna sestine"
       if record "Sestine" layout count > 6
	   begin
            Call "verifica"
            Call "attacco"
            Call "Punta"
        end
        put 100% record "Boules" data record "posizioni" data
    end
end

//Punta in base ai parametri
// individua la sestina uscita e assegna l'indice corrispondente al numero della sestina (da 1 a 6)
// al termine della routine il numero di boule verrà assegnato alla sestina nel record Posizioni
method "Assegna sestine"
begin
    add 1 record "Boules" data
    add 1 Record"Sestine"Layout index
    If record "Uscita" layout =Street(1-3)
    or record "Uscita" layout =Street(4-6)
    begin
        copy Line(1-6) record "sestine" Layout
        put 1 record "posizioni" data index
    end
    If record "Uscita" layout =Street(7-9)
    or record "Uscita" layout =Street(10-12)
    begin
        copy Line(7-12) record "sestine" Layout
        put 2 record "posizioni" data index
    end
    If record "Uscita" layout =Street(13-15)
    or record "Uscita" layout =Street(16-18)
    begin
        copy Line(13-18) record "sestine" Layout
        put 3 record "posizioni" data index
    end
    If record "Uscita" layout =Street(19-21)
    or record "Uscita" layout =Street(22-24)
    begin
        copy Line(19-24) record "sestine" Layout
        put 4 record "posizioni" data index
    end
    If record "Uscita" layout =Street(25-27)
    or record "Uscita" layout =Street(28-30)
    begin
        copy Line(25-30) record "sestine" Layout
        put 5 record "posizioni" data index
    end
    If record "Uscita" layout =Street(31-33)
    or record "Uscita" layout =Street(34-36)
    begin
        copy Line(31-36) record "sestine" Layout
        put 6 record "posizioni" data index
    end
// per la sestina uscita, memorizza sia il numero di sestina che la boule in cui è uscita l'ultima volta
    Put 100% record "posizioni" data index record "indice sestina" data
    Put 100% record "posizioni" data record "boule sestina" data

    If Record "Sestine" layout index > 12 then
    begin
        Move List Up by 1 of the items located in Record "Sestine" layout
        set max record "Sestine" layout index
    end

end

method "Verifica"
begin
    Duplicate record "posizioni" record "temp"
    Set flag "score+" false
    set flag "score-" false
    put 0 record "Temp1" data
    Put 1 record "temp" data index

    loop until record "temp" data index > record "temp" data count
    begin
        if record "temp" data > record "boule sestina" data //confronta quando sono uscite le sestine precedenti con l'ultima
        begin
            Add 1 record "Temp1" data // somma 1 se una sestina è uscita dopo
        end
        add 1 record "temp" data index
    end
    if record "Temp1" data > 2 // se le sestine uscite dopo sono più di due significa che la sestina è assente da più di tre
    begin
        set flag "Score-" true //e perciò si assegna il segno -
        add 1 record "Parz-" data
    end
    else
    begin
        Set flag "Score+" true //altrimenti si assegnail segno +
        Put 0 Record "Parz-" data
    end
// conta i più e i meno e li mette nel totale
    if Flag"score+" true
    begin
        add 1 record "ScoreTotale" data
        add 1 record "+ Totale" data  //usato per il conteggio statistico
        add 1 record "+ parziale" data
        if record "+ parziale" data =1 //se è il primo segno + memorizza la serie di - precedente
        begin
            put 100% record "- Parziale" data nel record "Temp3" data
            put 0 record "- Parziale" data
        end
        add 1 record"Score Attacco"data   //aggiunge 1 al totale dell'attacco
    end
    If Flag"Score-" true
    begin
        subtract 1 record "ScoreTotale" data
        add 1 record "- Totale" data  //usato per il conteggio statistico
        add 1 record "- parziale" data
        put 0 record "+ parziale" data
        subtract 1 record"Score Attacco"data
    end
end
// questo metodo verifica se ci sono le condizioni per puntare
// e poi punta le ultime 3 sestine
method "Punta"
begin
    if Flag "gioca" true
    begin
        //Verifica situazione attacco
        if record "Score Attacco" data = Record "Obiettivo" data
        or record "Score Attacco" data = -2
        begin
            clear record "Obiettivo" data
            clear record "Score Attacco" data
            Set flag "gioca" false
        end
        else
        begin
            //piazza le puntate
            Put 0 su All Inside layouts
            duplicate record "sestine" record "dapuntare"
            set max record "dapuntare" layout index
            loop until record "dapuntare" layout index =0 //parte dall'ultima sestina uscita
            begin
                if total line bets count < 3  // fino a che ci sono 3 sestine con puntate
                begin
                    put 1 record "dapuntare" layout
                end
                subtract 1 record "dapuntare" layout index
            end
        end
    end
end
// E' la routine che stabilisce se iniziare l'attacco e con che parametri
method "Attacco"
begin
    if record "Temp3" data >2 // se si hanno tre -
    and flag "gioca" false
    begin
        duplicate record "Temp3" record "Obiettivo"
        subtract 1 record "Obiettivo" data  // fissa il punto di equilibrio in cui l'attacco si chiude in vincita
        Set flag "gioca" true
        Put 0 Record "Score Attacco" data
        put 0 record "Temp3" data
    end
end


