WIF - La Community Italiana di The Battle for Wesnoth

Wesnoth Italian Forum
La Community Italiana di The Battle for Wesnoth uno dei migliori giochi multiplayer online gratis open source, a turni di ambientazione fantasy. Iscriviti a wifper partecipare ai tornei online, allo sviluppo di nuove estensioni (campagne, mappe, ere, scenari, fazioni) e a tutte le iniziative di w.i.f. per questo meraviglioso gioco strategia . Giocare gratis on line non è mai stato più facile.

Se stai cercando giochi multiplayer online, giochi di strategia, giochi a turni, giochi open source, giochi gratuiti o giochi fantasy, vieni a giocare online in multiplayer con noi! Questo è il forum che cercavi.
15 Dicembre 2017, 13:22:32 *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
 Notizia
VENITE A TROVARCI NELLA CHAT DI W.I.F.
- per organizzare partite ed incontri Ghigno  -
Ti aspettiamo!
Ricerca avanzata  
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: Il calcio in costume.  (Letto 3278 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
Uesmae
Eroe del Reame
*****
Scollegato Scollegato

Messaggi: 1419


Fu Bardo...è Vagabondo. Tituli:Vinto1torneo(n.u).


« inserita:: 25 Gennaio 2015, 19:29:06 »

Porgo alla comunità uno scenario: Il calcio in costume...

http://it.wikipedia.org/wiki/Calcio_in_costume

https://www.youtube.com/watch?v=XfDl580qT9U

...che tratta d'uno sport praticato nella città di Firenze.

n.b: le immagini del video introduttivo potrebbero risultare un pochettino violente (in tal caso basta comunicarlo e verranno ovviamente sostituite), tuttavia il Calcio in costume è uno sport abbastanza violento di per sè, ma non si tratta solo di questo (come di primo acchito potrebbe sembrare...) perchè in realtà c'è molto...molto di più! E' uno sport ma allo stesso tempo è una manifestazione storica...e non di meno si tratta d'una passione.

Benchè non mi sia stato possibile riprodurre fedelmente le dinamiche del calcio storico, diciamo che semplicemente lo scenario trae ispirazione da questo sport. La mappa è piccolina ed abbastanza semplice, raffigura una sorta di campetto sportivo...ne ho realizzate 10 (ovviamente differenti tra loro), allego quella col manto erboso.

[ Allegato: Non sei abilitato a vedere gli allegati ]
« Ultima modifica: 26 Gennaio 2015, 01:36:13 da Uesmae » Registrato

Il potere asserve i suoi servi, non mi serve...abbisogno d'una visione comune d'insieme.
ego potest non summa "Chi ha troppa fretta e poco tempo farebbe meglio a non leggere quel che scrissi."
Uesmae
Eroe del Reame
*****
Scollegato Scollegato

Messaggi: 1419


Fu Bardo...è Vagabondo. Tituli:Vinto1torneo(n.u).


« Risposta #1 inserita:: 25 Gennaio 2015, 19:33:56 »

"Programmare" lo scenario in questione non è stato molto difficile, ma nemmeno poi così facile...in quanto ho dovuto modificare alcune abilità (già esistenti), alcune unità e in relazione al codice "metterci un bel pò del mio" per strutturarlo nella migliore maniera possibile, quindi passo direttamente ad illustrare lo scenario nelle sue "meccaniche e dinamiche" senza soffermarmi nelle "cosine tecniche" perchè sarebbe come mettersi a discutere soltanto con quelle utenze che un pochettino conoscono quelle cosine lì. In alternativa posso però allegare al post (in maniera piuttosto sommaria...perchè l'estensione contiene diversi files cfg) almeno il codice dello scenario, così se qualcuno conoscesse delle vie alternative per "snellire" le formuline se ne possa ugualmente discutere in tranquillanza...

Codice:

#textdomain wesnoth-Il_calcio_in_costume

#define SONINO1 NINE
    [sound]
        name={NINE}
        immediate=yes
    [/sound]
#enddef

#define SONINO2 NINA NINO
        [sound]
            name={NINA}
            delay={NINO}
        [/sound]
#enddef

#define LASCIAPALLA IL QUESITO
    [option]
        message= _ "{IL}"
        [command]
            [set_variable]
                name=lasciapalla
                value={QUESITO}
            [/set_variable]    
        [/command]
    [/option]
#enddef

#define OPZIONE NON
    [case]
        value={NON}
        {SONINO1 (miss-2.ogg)}
    [/case]
#enddef

#define SMOVI BIM BUM BAM
    [move_unit]
        type={BIM}
        to_x={BUM}
        to_y={BAM}
    [/move_unit]
#enddef

#define ARBITRO COGGIUNE
    [unit]
        side=3
        type=Arbitro
        x,y={COGGIUNE}
        name= _ "Referee"
        canrecruit=no
    [/unit]
#enddef

#define PUNTO ZERO
    [unit]
         side=3
         type=Cranio
         x,y={ZERO}
         name= _ "Bonestack"
         canrecruit=no
    [/unit]
#enddef  

#define COORDINATE1
    [not]
        terrain=Xuc
    [/not]
    [not]
        [filter]
        [/filter]
    [/not]
    [not]
        x=32,33
        y=3-12,3-13
    [/not]
    [not]
        x=3,4
        y=3-13,3-12
    [/not]
#enddef

#define COORDINATE2 QUI QUA
    [filter_location]
        x={QUI}
        y={QUA}
    [/filter_location]
#enddef

#define DISEGNOPALLA CHE
    [remove_unit_overlay]
        id={CHE}
        image="pallone/pallainmano.png"
    [/remove_unit_overlay]
#enddef

#define BUTTAPALLA1 DOVE
    [have_location]
        [filter_adjacent_location]
            x,y={DOVE}
        [/filter_adjacent_location]
        {COORDINATE1}
        variable=buttapalla
    [/have_location]
#enddef

#define BUTTAPALLA2 SE
    [store_locations]
        [filter_adjacent_location]
            x,y={SE}
        [/filter_adjacent_location]
        {COORDINATE1}                            
        variable=buttapalla
    [/store_locations]
        {RANDOM "0..$($buttapalla.length-1)"}
            [unit]
                x,y=$buttapalla[$random].x,$buttapalla[$random].y
                type=Pallone
                side=3
                name= _ "Ball"
                canrecruit=no
                placement=map_passable
            [/unit]
        {SONINO2 (sling-miss.ogg) (200)}
    {CLEAR_VARIABLE buttapalla,random}
#enddef

#define CAMPO QUALE QUESTO
    [case]
        value={QUALE}
        {FADE_TO_BLACK}
        {QUAKE "rumble.ogg"}
            [terrain_mask]
                mask="{~add-ons/Il_calcio_in_costume/maps/{QUESTO}}"
            [/terrain_mask]
        {FADE_IN}
    [/case]
#enddef

#define PALLACASO CASO SOCA COSA COSO
    [case]
        value={CASO}
        {SMOVI {SOCA} {COSA} {COSO}}
    [/case]
#enddef

#define PIAZZACALCIANTE JD JB JW
    [unit]
        type={JD}
        side={JB}
        x,y={JW}
        random_traits=no
    [/unit]
#enddef

#define PIAZZACALCIANTI AZ AB BA CD DC EF FE FG GF HI IH LM ML NO ON PQ QP RS SR TU UT VZ ZV XK KX YW WY
        [if]
            [have_unit]
                side={AZ}
                canrecruit=yes
                race={AB}
                [filter_location]
                    x,y={BA}
                [/filter_location]
             [/have_unit]
             [then]
        {PIAZZACALCIANTE {CD} {DC} {EF}}
        {PIAZZACALCIANTE {FE} {FG} {GF}}
        {PIAZZACALCIANTE {HI} {IH} {LM}}
        {PIAZZACALCIANTE {ML} {NO} {ON}}
        {PIAZZACALCIANTE {PQ} {QP} {RS}}
        {PIAZZACALCIANTE {SR} {TU} {UT}}
        {PIAZZACALCIANTE {VZ} {ZV} {XK}}
        {PIAZZACALCIANTE {KX} {YW} {WY}}
             [/then]
             [else]
             [/else]
        [/if]
#enddef

#define PIAZZASQUADRE
    {PIAZZACALCIANTI (1) (Draghicalcianti) (3,8) (Adrago) (1) (3,4) (Mdrago) (1) (3,5) (Cdrago) (1) (3,6) (Ddrago) (1) (3,7) (Ddrago) (1) (3,9) (Cdrago) (1) (3,10) (Mdrago) (1) (3,11) (Adrago) (1) (3,12)}
    {PIAZZACALCIANTI (2) (Draghicalcianti) (33,8) (Adrago) (2) (33,12) (Mdrago) (2) (33,11) (Cdrago) (2) (33,10) (Ddrago) (2) (33,9) (Ddrago) (2) (33,7) (Cdrago) (2) (33,6) (Mdrago) (2) (33,5) (Adrago) (2) (33,4)}  
    {PIAZZACALCIANTI (1) (Umanicalcianti) (3,8) (Aumano) (1) (3,4) (Mumano) (1) (3,5) (Cumano) (1) (3,6) (Dumano) (1) (3,7) (Dumano) (1) (3,9) (Cumano) (1) (3,10) (Mumano) (1) (3,11) (Aumano) (1) (3,12)}
    {PIAZZACALCIANTI (2) (Umanicalcianti) (33,8) (Aumano) (2) (33,12) (Mumano) (2) (33,11) (Cumano) (2) (33,10) (Dumano) (2) (33,9) (Dumano) (2) (33,7) (Cumano) (2) (33,6) (Mumano) (2) (33,5) (Aumano) (2) (33,4)}
    {PIAZZACALCIANTI (1) (Elficalcianti) (3,8) (Aelfo) (1) (3,4) (Melfo) (1) (3,5) (Celfo) (1) (3,6) (Delfo) (1) (3,7) (Delfo) (1) (3,9) (Celfo) (1) (3,10) (Melfo) (1) (3,11) (Aelfo) (1) (3,12)}
    {PIAZZACALCIANTI (2) (Elficalcianti) (33,8) (Aelfo) (2) (33,12) (Melfo) (2) (33,11) (Celfo) (2) (33,10) (Delfo) (2) (33,9) (Delfo) (2) (33,7) (Celfo) (2) (33,6) (Melfo) (2) (33,5) (Aelfo) (2) (33,4)}
    {PIAZZACALCIANTI (1) (Nanicalcianti) (3,8) (Anano) (1) (3,4) (Mnano) (1) (3,5) (Cnano) (1) (3,6) (Dnano) (1) (3,7) (Dnano) (1) (3,9) (Cnano) (1) (3,10) (Mnano) (1) (3,11) (Anano) (1) (3,12)}
    {PIAZZACALCIANTI (2) (Nanicalcianti) (33,8) (Anano) (2) (33,12) (Mnano) (2) (33,11) (Cnano) (2) (33,10) (Dnano) (2) (33,9) (Dnano) (2) (33,7) (Cnano) (2) (33,6) (Mnano) (2) (33,5) (Anano) (2) (33,4)}
    {PIAZZACALCIANTI (1) (Orchicalcianti) (3,8) (Aorco) (1) (3,4) (Morco) (1) (3,5) (Corco) (1) (3,6) (Dorco) (1) (3,7) (Dorco) (1) (3,9) (Corco) (1) (3,10) (Morco) (1) (3,11) (Aorco) (1) (3,12)}
    {PIAZZACALCIANTI (2) (Orchicalcianti) (33,8) (Aorco) (2) (33,12) (Morco) (2) (33,11) (Corco) (2) (33,10) (Dorco) (2) (33,9) (Dorco) (2) (33,7) (Corco) (2) (33,6) (Morco) (2) (33,5) (Aorco) (2) (33,4)}
    {PIAZZACALCIANTI (1) (Nonmorticalcianti) (3,8) (Anonmorto) (1) (3,4) (Mnonmorto) (1) (3,5) (Cnonmorto) (1) (3,6) (Dnonmorto) (1) (3,7) (Dnonmorto) (1) (3,9) (Cnonmorto) (1) (3,10) (Mnonmorto) (1) (3,11) (Anonmorto) (1) (3,12)}
    {PIAZZACALCIANTI (2) (Nonmorticalcianti) (33,8) (Anonmorto) (2) (33,12) (Mnonmorto) (2) (33,11) (Cnonmorto) (2) (33,10) (Dnonmorto) (2) (33,9) (Dnonmorto) (2) (33,7) (Cnonmorto) (2) (33,6) (Mnonmorto) (2) (33,5) (Anonmorto) (2) (33,4)}
#enddef

#define PIAZZACRANIO TESTA
    [item]
        x,y={TESTA}
        image=cranio/uniossa.png
    [/item]
#enddef

#define PIAZZACRANI TESTE
    [item]
        x,y={TESTE}
        image=cranio/trieteschi.png
    [/item]
#enddef

#define PIAZZAPALLA1 MA VA
    [unit]
        x,y={MA}
        type=Pallone
        side=3
        name= _ "Ball"
        canrecruit=no
    [/unit]
        [animate_unit]
            [filter]
                x,y={VA}
            [/filter]
            flag=standing
   hits=no
        [/animate_unit]
    {SONINO1 (explosion.ogg)}
#enddef

#define PIAZZAPALLA2
    [set_variable]
        name=piazzapallas
        rand=1..6
    [/set_variable]
    [switch]
        variable=piazzapallas
            {PALLACASO (1) (Pallone) (25) (8)}
            {PALLACASO (2) (Pallone) (25) (11)}
            {PALLACASO (3) (Pallone) (11) (11)}
            {PALLACASO (4) (Pallone) (11) (8)}
            {PALLACASO (5) (Pallone) (11) (5)}
            {PALLACASO (6) (Pallone) (25) (5)}
        {CLEAR_VARIABLE piazzapallas}
    [/switch]
#enddef

#define FERMAPALLA
    [modify_unit]
        [filter]
            type=Pallone
        [/filter]
        side=3
        max_moves=0
        moves=0
    [/modify_unit]
#enddef

#define TORNAPALLA NUMERO
    [event]
        name=side {NUMERO} turn refresh
        first_time_only=no
        {FERMAPALLA}
    [/event]
#enddef

#define MODIFIVITA VITA
    [modify_unit]
        [filter]
            id=$unit.id
        [/filter]
        hitpoints={VITA}
    [/modify_unit]
#enddef

#define MODIFISBERLE
    [modify_unit]
        [filter]
            id=$unit.id
        [/filter]
        attacks_left=1
    [/modify_unit]
#enddef

#define STORUNITA SBARELLA SVARIONA
    [store_unit]
        [filter]
            canrecruit=yes
            side={SBARELLA}  
        [/filter]
        variable={SVARIONA}
        kill=no
    [/store_unit]
#enddef

#define METTIPUNTO OSSO SOSO SOOS
    [if]
        [have_unit]
                x,y={OSSO}
        [/have_unit]
            [then]
                {PUNTO {SOSO}}  
            [/then]
            [else]
           {PUNTO {SOOS}}
            [/else]
    [/if]
#enddef

#define VINCIPARTITA ASSO SOAS SASO OSSA
    [if]
        [have_unit]
            x,y={ASSO}
        [/have_unit]
            [then]  
                {PUNTO {SOAS}}  
                [kill]
                    side={SASO}
                    animate=yes
                [/kill]  
            [/then]
            [else]
            {PUNTO {OSSA}}
            [heal_unit]
                [filter]
                    canrecruit=yes
                 [/filter]
                amount=60
                animate=yes
                [/heal_unit]
             [/else]  
    [/if]  
#enddef

#define VINCIPARTITA1
    {VINCIPARTITA (1,6) (1,10) (2) (1,6)}
    {SALVAPELLE (2) (35,8)}
    {SALVAPELLE (1) (1,8)}
    {FAPELLE}
    {SALVAPELLE (1) (3,8)}
    {SALVAPELLE (2) (33,8)}
    {PIAZZASQUADRE}
    {SONINO1 (yeti-die.ogg)}
    {ARBITRO (18,3)}
        [animate_unit]
            [filter]
                x,y=18,3
            [/filter]
            flag=standing
            hits=no
        [/animate_unit]
        {SMOVI (Arbitro) (18) (7)}
{PIAZZAPALLA1 (18,8) (18,8)}
        [animate_unit]
            [filter]
                x,y=18,7
            [/filter]
                [primary_attack]
                    type=impact
                [/primary_attack]
            flag=attack
            hits=yes
        [/animate_unit]
    {SMOVI (Pallone) (29) (8)}
#enddef

#define VINCIPARTITA2
    {VINCIPARTITA (35,6) (35,10) (1) (35,6)}
    {SALVAPELLE (1) (1,8)}
    {SALVAPELLE (2) (35,8)}
    {FAPELLE}
    {SALVAPELLE (2) (33,8)}
    {SALVAPELLE (1) (3,8)}
    {PIAZZASQUADRE}
    {SONINO1 (yeti-die.ogg)}
    {ARBITRO (18,3)}
        [animate_unit]
            [filter]
                x,y=18,3
            [/filter]
        flag=standing
        hits=no
        [/animate_unit]
            {SMOVI (Arbitro) (18) (7)}
            {PIAZZAPALLA1 (18,8) (18,8)}
        [animate_unit]
            [filter]
                x,y=18,7
            [/filter]
                [primary_attack]
                    type=impact
                [/primary_attack]
            flag=attack
            hits=yes
        [/animate_unit]
    {SMOVI (Pallone) (7) (8)}
#enddef

#define SALVAPELLE VAI IAV
    [teleport]
        [filter]
            canrecruit=yes
            side={VAI}
        [/filter]
            x,y={IAV}
    [/teleport]
#enddef

#define FAPELLE
    [kill]
        x=3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33
        y=1-14,1-14,1-14,1-14,1-14,1-14,1-14,1-14,1-14,1-14,1-14,1-14,1-14,1-14,1-14,1-14,1-14,1-14,1-14,1-14,1-14,1-14,1-14,1-14,1-14,1-14,1-14,1-14,1-14,1-14,1-14
        animate=yes
    [/kill]
#enddef

#define PANCA STAI BONO
    [if]
        [not]
           [have_unit]
              x,y={STAI}
           [/have_unit]
        [/not]  
        [then]
            [teleport]
         [filter]
             id=$unit.id
         [/filter]
                x,y={BONO}
            [/teleport]
        [/then]
    [/if]
#enddef

#define PANCHINA1
    {PANCA (18,1) (18,1)}
    {PANCA (16,1) (16,1)}
    {PANCA (14,1) (14,1)}
    {PANCA (12,1) (12,1)}
    {PANCA (10,1) (10,1)}
    {PANCA (8,1) (8,1)}
    {PANCA (6,1) (6,1)}
    {PANCA (4,1) (4,1)}
#enddef

#define PANCHINA2
    {PANCA (18,14) (18,14)}
    {PANCA (20,14) (20,14)}
    {PANCA (22,14) (22,14)}
    {PANCA (24,14) (24,14)}
    {PANCA (26,14) (26,14)}
    {PANCA (28,14) (28,14)}
    {PANCA (30,14) (30,14)}
    {PANCA (32,14) (32,14)}
#enddef

#define STRECCIN DEH DOH
    [event]
        name=turn refresh
        first_time_only=no
            [store_unit]
                [filter]
                    side=$side_number
                    x,y={DEH}
                [/filter]
                    variable=streccin
                    kill=no
            [/store_unit]
        [if]
            [variable]
                name=streccin.length
                greater_than=0
            [/variable]
            [variable]
                name=streccin.hitpoints
                greater_than=19
            [/variable]
            [then]
            [heal_unit]
                [filter]
                   id=$streccin.id
                [/filter]
                amount=40
                animate=yes
            [/heal_unit]
                [teleport]
                    [filter]
                        id=$streccin.id
                   [/filter]
                    x,y={DOH}
                [/teleport]
                {SONINO1 (magic-faeriefire.ogg)}
                {CLEAR_VARIABLE streccin}
            [/then]
        [else]
            {CLEAR_VARIABLE streccin}
        [/else]
        [/if]
    [/event]
#enddef

#define PRESSIN ZZA STI AZZ
    [event]
         name=attack end
         first_time_only=no
        [if]
            [have_unit]
                canrecruit=no
                side=1,2
                   [filter_location]
                       x,y={ZZA}
                   [/filter_location]
            [/have_unit]
            [then]
                [teleport]
                    [filter]
                        side=1,2
                        canrecruit=no
                        x,y={STI}
                    [/filter]
                    x,y={AZZ}
                [/teleport]
            [/then]
        [else]
        [/else]
        [/if]
    [/event]
#enddef

#define STANCHEZZA AH OH
    [event]
        name=side {AH} turn refresh
        first_time_only=no
            {STORUNITA {OH} (fermalo)}
         [if]
            [variable]
                name=fermalo.hitpoints
                less_than=12
            [/variable]
            [then]
                [modify_unit]
                    [filter]
                        id=$fermalo.id
                    [/filter]
                    attacks_left=0
                [/modify_unit]
            {CLEAR_VARIABLE fermalo}
             [/then]
          [else]
              {CLEAR_VARIABLE fermalo}  
          [/else]
         [/if]
    [/event]
#enddef

#define MOLLAPALLA PING PONG
    [event]
        name=side {PING} turn refresh
        first_time_only=no
            {STORUNITA {PONG} (lasciala)}
        [if]
            [variable]
                name=lasciala.overlays
                equals="pallone/pallainmano.png"
            [/variable]
            {BUTTAPALLA1 ($lasciala.x,$lasciala.y)}
            [then]
            {SONINO1 (miss-1.ogg)}
                [message]
                    side=$side_number
                    message=_ "Want you release the ball?"
                    {LASCIAPALLA (NO) (1)}
                    {LASCIAPALLA (OK) (2)}
                [/message]
                [switch]
                    variable=lasciapalla
                    {OPZIONE (1)}
                    [case]
                        value=2
                        {DISEGNOPALLA ($lasciala.id)}
                        {BUTTAPALLA2 ($lasciala.x,$lasciala.y)}
                        {MODIFISBERLE}
                    [/case]
                    {CLEAR_VARIABLE lasciala,lasciapalla}
                [/switch]
            [/then]
        [/if]
    [/event]
#enddef

« Ultima modifica: 02 Febbraio 2015, 18:31:06 da Uesmae » Registrato

Il potere asserve i suoi servi, non mi serve...abbisogno d'una visione comune d'insieme.
ego potest non summa "Chi ha troppa fretta e poco tempo farebbe meglio a non leggere quel che scrissi."
Uesmae
Eroe del Reame
*****
Scollegato Scollegato

Messaggi: 1419


Fu Bardo...è Vagabondo. Tituli:Vinto1torneo(n.u).


« Risposta #2 inserita:: 25 Gennaio 2015, 19:38:23 »

Codice:

[multiplayer]
    name= _ "2p_The footbal gladiators"
    description= _ "A footbal gladiators match. Have fun."
    map_data="{~add-ons/Il_calcio_in_costume/maps/2p_Campoerba.map}"
    id=Il_calcio_in_costume
    turns=-1
    next_scenario=null
    allow_era=Calcianti

    {UNDERGROUND}
    {DEFAULT_MUSIC_PLAYLIST}
    
    [side]
        side=1
        controller=human
        allow_player=yes
        team_name=Home
        user_team_name=_ "Home"
        fog=no
        shroud=no
        income=0
        gold=200
        village_gold=0
        facing=se
        fog=no
        shroud=no
        income_lock=true
        team_lock=true
        color=red
    [/side]

    [side]
        side=2
        controller=human
        allow_player=yes
        team_name=Visitors
        user_team_name=_ "Visitors"
        fog=no
        shroud=no
        income=0
        gold=200
        village_gold=0
        facing=so
        fog=no
        shroud=no
        income_lock=true
        team_lock=true
        color=blue
    [/side]

    [side]
        side=3
        allow_player=no
        controller=ai
        no_leader=yes
        fog=no
        color=black
    [/side]

    {TORNAPALLA (1)}
    {TORNAPALLA (2)}
    {TORNAPALLA (3)}
    {STRECCIN (4,1) (3,4)}
    {STRECCIN (6,1) (3,5)}
    {STRECCIN (8,1) (3,6)}
    {STRECCIN (10,1) (3,7)}
    {STRECCIN (12,1) (3,9)}
    {STRECCIN (14,1) (3,10)}
    {STRECCIN (16,1) (3,11)}
    {STRECCIN (18,1) (3,12)}
    {STRECCIN (18,14) (33,4)}
    {STRECCIN (20,14) (33,5)}
    {STRECCIN (22,14) (33,6)}
    {STRECCIN (24,14) (33,7)}
    {STRECCIN (26,14) (33,9)}
    {STRECCIN (28,14) (33,10)}
    {STRECCIN (30,14) (33,11)}
    {STRECCIN (32,14) (33,12)}
    {PRESSIN (1,6) (1,6) (18,1)}
    {PRESSIN (1,8) (1,8) (18,1)}
    {PRESSIN (1,10) (1,10) (18,1)}
    {PRESSIN (35,10) (35,10) (18,14)}
    {PRESSIN (35,8) (35,8) (18,14)}
    {PRESSIN (35,6) (35,6) (18,14)}
    {STANCHEZZA (1) (1)}
    {STANCHEZZA (2) (2)}
    {MOLLAPALLA (1) (1)}
    {MOLLAPALLA (2) (2)}

    [story]
        [part]
            story = _ "The footbal gladiators"
            scale_background=yes
        [/part]
        [part]
            story = _ "...long live the W.I.F!"
       background=story/wif_logo.jpg
            scale_background=yes
        [/part]
    [/story]

    [event]
        name=prestart
        [objectives]
            [objective]
                description= _ "You must send the ball over the opponent's line, two times."
                condition=win
            [/objective]
            [objective]
                description= _ "If the ball crosses your line two times, you lost."
                condition=lose
            [/objective]
            note=_ "Have fun!"
        [/objectives]
    [/event]

    [event]
        name=start
        first_time_only=yes
            [modify_side]
                side=1,2
                gold=0
            [/modify_side]
                {ARBITRO (18,3)}  
                {PIAZZACRANIO (32,14)}
                {PIAZZACRANIO (30,14)}
                {PIAZZACRANIO (28,14)}
                {PIAZZACRANIO (26,14)}
                {PIAZZACRANIO (24,14)}
                {PIAZZACRANIO (22,14)}
                {PIAZZACRANIO (20,14)}
                {PIAZZACRANIO (18,14)}
                {PIAZZACRANIO (4,1)}
                {PIAZZACRANIO (6,1)}
                {PIAZZACRANIO (8,1)}
                {PIAZZACRANIO (10,1)}
                {PIAZZACRANIO (12,1)}
                {PIAZZACRANIO (14,1)}
                {PIAZZACRANIO (16,1)}
                {PIAZZACRANIO (18,1)}
                {PIAZZACRANI (33,13)}
                {PIAZZACRANI (23,13)}
                {PIAZZACRANI (13,13)}
                {PIAZZACRANI (3,13)}
                {PIAZZACRANI (3,3)}
                {PIAZZACRANI (13,3)}
                {PIAZZACRANI (23,3)}
                {PIAZZACRANI (33,3)}
                {PIAZZASQUADRE}
                {SONINO1 (yeti-die.ogg)}
                    [animate_unit]
                        [filter]
                           x,y=18,3
                        [/filter]
                        flag=standing
                        hits=no
                    [/animate_unit]
            {SMOVI (Arbitro) (18) (7)}
            {PIAZZAPALLA1 (18,8) (18,8)}  
        [animate_unit]
            [filter]
                x,y=18,7
            [/filter]
       [primary_attack]
               type=impact
       [/primary_attack]
            flag=attack
            hits=yes
        [/animate_unit]  
        {PIAZZAPALLA2}
    [/event]

    [event]
        name=turn refresh
        first_time_only=yes
        {SONINO2 (miss-1.ogg) (50)}
        [message]
            side=1
            message=_ "Want you change the arena?"
            {LASCIAPALLA (NO) (1)}
            {LASCIAPALLA (ARENA2) (2)}
            {LASCIAPALLA (ARENA3) (3)}
            {LASCIAPALLA (ARENA4) (4)}
            {LASCIAPALLA (ARENA5) (5)}
            {LASCIAPALLA (ARENA6) (6)}
            {LASCIAPALLA (ARENA7) (7)}
            {LASCIAPALLA (ARENA8) (8)}
            {LASCIAPALLA (ARENA9) (9)}
            {LASCIAPALLA (ARENA10) (10)}
        [/message]
        [switch]
            variable=lasciapalla
            {OPZIONE (1)}
            {CAMPO (2) (2p_Camposabbia.mask)}
            {CAMPO (3) (2p_Campolegno.mask)}
            {CAMPO (4) (2p_Campoterra.mask)}
            {CAMPO (5) (2p_Camposasso.mask)}
            {CAMPO (6) (2p_Campopietra.mask)}
            {CAMPO (7) (2p_Campofungo.mask)}
            {CAMPO (8) (2p_Campocoltivato.mask)}
            {CAMPO (9) (2p_Campoghiaccio.mask)}
            {CAMPO (10) (2p_Camponeve.mask)}
        {CLEAR_VARIABLE lasciapalla}
        [/switch]
    [/event]

    [event]
        name=moveto
        first_time_only=no
            {STORUNITA ($side_number) (lasciala)}
            [filter]
                canrecruit=yes
                side=$side_number
            [/filter]
        [if]
            [variable]
                name=lasciala.overlays
                equals="pallone/pallainmano.png"
            [/variable]
       [variable]
            name=lasciala.attacks_left
                greater_than=0
            [/variable]
            {BUTTAPALLA1 ($lasciala.x,$lasciala.y)}
            [then]
            {SONINO1 (miss-1.ogg)}
                [message]
                    side=$side_number
                    message=_ "Want you release the ball?"
                    {LASCIAPALLA (NO) (1)}
                    {LASCIAPALLA (OK) (2)}
                [/message]
                [switch]
                    variable=lasciapalla
                    {OPZIONE (1)}
                    [case]
                        value=2
                        {DISEGNOPALLA ($lasciala.id)}
                        {BUTTAPALLA2 ($lasciala.x,$lasciala.y)}
                        {MODIFISBERLE}
                    [/case]
                    {CLEAR_VARIABLE lasciala,lasciapalla}
                [/switch]
            [/then]
        [/if]
    [/event]

    [event]
        name=attack
        first_time_only=no
            [filter]
                canrecruit=yes
                side=$side_number
            [/filter]
                [filter_second]
                    type=Pallone
                [/filter_second]
            {STORUNITA ($side_number) (pigliala)}
        [if]
            [variable]
                name=pigliala.hitpoins
                greather_than=1
            [/variable]
            [then]
            {SONINO1 (miss-1.ogg)}
                [message]
                    side=$side_number
                    message=_ "Want you take the ball?"
                    {LASCIAPALLA (NO) (1)}
                    {LASCIAPALLA (OK) (2)}
                [/message]
                [switch]
                    variable=lasciapalla
                    {OPZIONE (1)}
                    [case]
                        value=2
                    [unit_overlay]
                        id=$pigliala.id
                        image="pallone/pallainmano.png"
                    [/unit_overlay]
                    [kill]
                        type=Pallone
                        animate=no
                    [/kill]
                        {MODIFISBERLE}
                        {SONINO1 (tail.ogg)}
                    [/case]
                    {CLEAR_VARIABLE pigliala,lasciapalla}
                [/switch]
            [/then]
        [/if]
    [/event]

    [event]
        name=moveto
        first_time_only=no
        [filter]
            type=Pallone
        [/filter]
             [set_variable]
                name=movimentiunita
                value=$unit.moves
            [/set_variable]
        [if]
            [variable]
                name=movimentiunita
                equals=0
            [/variable]
            [then]
            {FERMAPALLA}
            [/then]
        [/if]
            {CLEAR_VARIABLE movimentiunita}
    [/event]

    [event]
        name=last breath
        first_time_only=no
            [filter]
                side=1
                canrecruit=no
            [/filter]
        {MODIFIVITA (11)}
        {SONINO1 (magic-faeriefire.ogg)}
        {PANCHINA1}
    [/event]

    [event]
        name=last breath
        first_time_only=no
        [filter]
            side=2
            canrecruit=no
        [/filter]
        {MODIFIVITA (11)}
        {SONINO1 (magic-faeriefire.ogg)}
        {PANCHINA2}
    [/event]

    [event]
        name=last breath
        first_time_only=no
        [filter]
            side=1,2
            canrecruit=yes
        [/filter]
            [modify_unit]
        [filter]
            id=$unit.id
        [/filter]
            hitpoints=11
            [status]
                slowed=yes
            [/status]
       [/modify_unit]
        {SONINO1 (magic-holy-1.ogg)}
    [/event]

    [event]
        name=last breath
        first_time_only=no
        [filter]
            type=Pallone
        [/filter]
        {MODIFIVITA (100)}
        {SONINO1 (yeti-die.ogg)}
    [/event]

    [event]
        name=moveto
        first_time_only=no
        [filter]
            type=Pallone
            x=32,33
            y=3-12,3-13
        [/filter]
        {SONINO1 (dragonstick.ogg)}
        {VINCIPARTITA1}
    [/event]

    [event]
        name=moveto
        first_time_only=no
        [filter]
            type=Pallone
            x=3,4
            y=3-13,3-12
        [/filter]
        {SONINO1 (dragonstick.ogg)}
        {VINCIPARTITA2}
    [/event]

    [event]
        name=attack end
        first_time_only=no
        [filter]
            side=1,2
        [/filter]
        [if]
            [have_unit]
                type=Pallone
            {COORDINATE2 (32,33) (3-12,3-13)}
            [/have_unit]
            [then]
                {SONINO1 (dragonstick.ogg)}
            {VINCIPARTITA1}
            [/then]
        [else]
        [/else]
        [/if]
    [/event]

    [event]
        name=attack end
        first_time_only=no
    [filter]
       side=1,2
    [/filter]
        [if]
            [have_unit]
                type=Pallone
                {COORDINATE2 (3,4) (3-13,3-12)}
            [/have_unit]
            [then]
                {SONINO1 (dragonstick.ogg)}
                {VINCIPARTITA2}
            [/then]
        [else]
        [/else]
        [/if]
    [/event]

    [event]
        name=moveto
        first_time_only=no
    [filter]
        canrecruit=yes
        side=$side_number
       {COORDINATE2 (32,33) (3-12,3-13)}
    [/filter]
        [if]
            [variable]
                name=unit.overlays
                equals="pallone/pallainmano.png"
            [/variable]
            [then]
                {SONINO1 (dragonstick.ogg)}
                {DISEGNOPALLA ($unit.id)}
                {VINCIPARTITA1}  
            [/then]
        [else]
        [/else]
        [/if]
    [/event]

    [event]
        name=moveto
        first_time_only=no
        [filter]
           canrecruit=yes
           side=$side_number
        {COORDINATE2 (3,4) (3-13,3-12)}
        [/filter]
         [if]
            [variable]
                name=unit.overlays
                equals="pallone/pallainmano.png"
            [/variable]            
            [then]
                {SONINO1 (dragonstick.ogg)}
                {DISEGNOPALLA ($unit.id)}
                {VINCIPARTITA2}  
            [/then]
        [else]
        [/else]
        [/if]
    [/event]

    [event]
        name=attack end
        first_time_only=no
            [filter]
                canrecruit=yes
                side=$side_number
                {COORDINATE2 (32,33) (3-12,3-13)}
            [/filter]
        [if]
            [variable]
                name=unit.overlays
                equals="pallone/pallainmano.png"
            [/variable]
            [then]
                {SONINO1 (dragonstick.ogg)}
                {DISEGNOPALLA ($unit.id)}
                {VINCIPARTITA1}  
            [/then]
        [else]
        [/else]
        [/if]
    [/event]

    [event]
        name=attack end
        first_time_only=no
        [filter]
            canrecruit=yes
            side=$side_number
           {COORDINATE2 (3,4) (3-13,3-12)}
        [/filter]
         [if]
            [variable]
                name=unit.overlays
                equals="pallone/pallainmano.png"
            [/variable]            
            [then]
                {SONINO1 (dragonstick.ogg)}
                {DISEGNOPALLA ($unit.id)}
                {VINCIPARTITA2}  
            [/then]
        [else]
        [/else]
        [/if]
    [/event]

    [event]
        name=attacker hits
        first_time_only=no
            [filter]
                side=1,2
            [/filter]
            [filter_second]
                canrecruit=yes
            [/filter_second]
        [if]
            [variable]
                name=second_unit.overlays
                equals="pallone/pallainmano.png"
            [/variable]
            {BUTTAPALLA1 ($x2,$y2)}
            [then]
                {DISEGNOPALLA ($second_unit.id)}
                {BUTTAPALLA2 ($x2,$y2)}
            [/then]
        [/if]
    [/event]
 
    [event]
        name=defender hits
        first_time_only=no
            [filter]
               canrecruit=yes
            [/filter]
            [filter_second]
                side=1,2
            [/filter_second]
        [if]
            [variable]
                name=unit.overlays
                equals="pallone/pallainmano.png"
            [/variable]
            {BUTTAPALLA1 ($x1,$y1)}
            [then]
                {DISEGNOPALLA ($unit.id)}
                {BUTTAPALLA2 ($x1,$y1)}
            [/then]
        [/if]
    [/event]
[/multiplayer]

#undef SONINO1
#undef SONINO2
#undef LASCIAPALLA
#undef OPZIONE
#undef SMOVI
#undef ARBITRO
#undef PUNTO
#undef COORDINATE1
#undef COORDINATE2
#undef DISEGNOPALLA
#undef BUTTAPALLA1
#undef BUTTAPALLA2
#undef CAMPO
#undef PALLACASO
#undef PIAZZACALCIANTE
#undef PIAZZACALCIANTI
#undef PIAZZASQUADRE
#undef PIAZZACRANIO
#undef PIAZZACRANI
#undef PIAZZAPALLA1
#undef PIAZZAPALLA2
#undef FERMAPALLA
#undef TORNAPALLA
#undef MODIFIVITA
#undef MODIFISBERLE
#undef STORUNITA
#undef METTIPUNTO
#undef VINCIPARTITA
#undef VINCIPARTITA1
#undef VINCIPARTITA2
#undef SALVAPELLE
#undef FAPELLE
#undef PANCA
#undef PANCHINA1
#undef PANCHINA2
#undef STRECCIN
#undef PRESSIN
#undef STANCHEZZA
#undef MOLLAPALLA
#undef ABILITY_RISANANSAVISCE
#undef ABILITY_ATTACCANCORA
#undef WEAPON_SPECIAL_CALCIA
#undef WEAPON_SPECIAL_CALCIA2
#undef WEAPON_SPECIAL_KNOCKBACKO


n.b: abbiate pazienza se la struttura del codice (attualmente) non risultasse "ordinata", però quando vengono ricopiati sul forum i caratteri "si sparpagliano" nel fogliolino bianco e dunque mi toccherebbe di riordinare tutte cose manualmente riga per riga (cosa che eventualmente farò in un secondo momento, ad avanzatempo).

...anche perchè al termine d'ogni partita ho notato che sul fogliolino dello stderr appaiono diversi errori ma questo non mi pare che comprometta assolutamente lo svolgimento della gara (in quanto gli eventi accadono regolarmente) o addirittura il funzionamento del videogioco, l'unica palese "magagna" è che dopo parecchi turni l'ai sembra come "rallentata" nelle tempistiche del proprio turno (perchè il programma sembra come di non trovare alcune variabili) però ad ogni riavvio di partita torna tutto quanto a posto, dunque per il momento non sto a "lambiccarmi" poi troppo e vedrò casomai in futuro di trovare una soluzione a questo "problemino", od altrimenti se vi fosse qualcuno che possa fornirmi delle soluzioni in tal senso, ben vengano.

Inoltre ho strutturato un'era apposita con delle immagini dell'Era default e 6 unità differenti per ogni squadra: 2 capitani, un attaccante, un centrocampista, un mediano e un difensore...più un arbitro e un pallone. Le squadre sono 6: i Draghicalcianti, gli Umanicalcianti, gli Elficalcianti, i Nanicalcianti, gli Orchicalcianti, i Nonmorticalcianti e le partite si disputano nella mappa 1 contro 1 con 9 unità per squadra, mentre in quella 2 contro 2 con 10.  
« Ultima modifica: 02 Febbraio 2015, 18:26:07 da Uesmae » Registrato

Il potere asserve i suoi servi, non mi serve...abbisogno d'una visione comune d'insieme.
ego potest non summa "Chi ha troppa fretta e poco tempo farebbe meglio a non leggere quel che scrissi."
Uesmae
Eroe del Reame
*****
Scollegato Scollegato

Messaggi: 1419


Fu Bardo...è Vagabondo. Tituli:Vinto1torneo(n.u).


« Risposta #3 inserita:: 25 Gennaio 2015, 19:45:48 »

Non è abbastato "uno schiocco di dita" per realizzare questa estensione (mi riferisco più che altro alle tempistiche), pure se tutto sommato mi pare d'aver fatto un buon "lavoro" perchè essa risulta molto semplice da giocare ("lavora" in automatico ed è abbastanza intuitiva), in quanto alcuni scenari di questo tipo già esistono (perlomeno un paio di sicuro), ma io ho preferito optare per un sistema di gioco che non prevede l'ausilio del menù durante la partita e non perchè non sarei stato capace di realizzarlo, bensì perchè mi sembrava che il menù "incasinasse" un pochino le dinamiche dello scenario e allora ho evitato di strutturarne uno, questo per fare in maniera che altresì gli utenti meno pratici del videogioco possano divertirsi senza doversi arrabattare troppo a selezionare dal menù un'azione dopo l'altra.

Ringrazio le utenze che mi hanno dato una mano nella relalizzazione dell'estensione (che ho fatto da solo, però in alcuni momenti c'erano delle formuline che non volevano saperne di lavorare correttamente e il mio computer ha rischiato seriamente di fare un baggiggaimpi dal balcone ma senza l'elastico...  Ghigno  ...per fortuna che c'era il Lucertolino nei paraggi!) ad ogni modo la fase test si è rivelata utile per ottenere una giocabilità abbastanza scorrevole (mi sembra che la partita risulti divertente) ed alcuni ottimi spunti, anzi, debbo dire che appunto le impressioni dei giocatori mi si sono rivelate parecchio d'ausilio.

N'zomma via, diggiamo che n'è sortia fori una battaglia shportiva...  Sorriso  

Allego a questo post una versione alfa dello scenario coi numerini delle unità tutti quanti uguali, perchè avanti d'ottenere una versione stabile c'è bisogno di fare qualche altro test.

Il calcio in costume - Versione Alpha (con le fazioni tutte uguali). (TBFW v.1.12)
« Ultima modifica: 02 Febbraio 2015, 18:11:55 da Uesmae » Registrato

Il potere asserve i suoi servi, non mi serve...abbisogno d'una visione comune d'insieme.
ego potest non summa "Chi ha troppa fretta e poco tempo farebbe meglio a non leggere quel che scrissi."
Uesmae
Eroe del Reame
*****
Scollegato Scollegato

Messaggi: 1419


Fu Bardo...è Vagabondo. Tituli:Vinto1torneo(n.u).


« Risposta #4 inserita:: 25 Gennaio 2015, 19:47:33 »

Passiamo adesso alle modalità di gioco:

L'obbiettivo è quello di fare oltrepassare la palla oltre la linea dell'avversario.
I calcianti possono menarsi.
Quando un calciante sta per venire ucciso viene teletrasportato in panchina e vi rimane per 5 turni, prima di tornare in campo.
Quando il capitano sta per essere ucciso non sarà più possibile per egli di prendere la palla o di attaccare i calcianti avversari.

Le unità:

Citazione di: Unità

Capitano:

Sitratta d'una unità molto forte, resistenze ed abbastanza veloce, dispone dell'abilità comando ed egli può prendere la palla in mano per proteggerla e/o lasciarla cadere per permettere alla squadra di passarsela con i pedi, oppure calciarla, l'unica maniera per gli avversari di togliergli la palla è quella d'infliggergli del danno.

Attaccante:

E' una unità non molto resistente ma è adibita a "liberare" l'area di gioco perchè può spostare le unità dal campo per mezzo degli attacchi melee, inoltre possiede un attacco ranged col colpo di precisione molto utile per togliere la palla al capitano avversario, dispone dell'abilità incursione e può attaccare più d'una volta in un turno, il suo calcio di palla non è granchè.

Mediano:

E' una unità versatile non molto resistente però ha un movimento elevato che le permette di finalizzare l'azione offensiva o altrimenti d'andare a recuperare le unità avversarie nel senso inverso, perchè quando essa si trova vicino alla linea avversaria ha un calcio di palla sufficientemente potente da poter segnare il punto e dispone d'un attacco sia melee che ranged il quale rallenta le altre unità.

Centrocampista:

E' una unità abbastanza resistente, dispone d'un attacco ranged piuttosto potente e d'un calcio di palla notevole, come pure il movimento.

Difensore:

E' una unità resistente, dispone d'un attacco melee piuttosto potente ed altrettanto lo è il calcio di palla, ma ha poco movimento.


I ruoli dei calcianti possono cambiare, per adesso ho strutturato questi qui e almeno per il momento, ho provato a buttare giù una bozza di bilanciamento.

Citazione di: Bozza bilanciamento 1

Draghicalcianti:

D= movimento 6, calcio 5, vita 35, agilità 50, resistenze 90, attacco 5-2 m
C= movimento 7, calcio 3, vita 30, agilità 50, resistenze 90, attacco 5-2 r
M= movimento 8, calcio 3, vita 20, agilità 40, resistenze 100, attacco 3-1 m (rallenta) | 3-1 r (rallenta)
A= movimento 5, calcio 1, vita 25, agilità 40, resistenze 90, attacco 3-1 m (knockback) | 3-1 r (precisione) [attacco multiplo]

Umanicalcianti:

D= movimento 4, calcio 5, vita 35, agilità 50, resistenze 80, attacco 6-2 m
C= movimento 6, calcio 4, vita 30, agilità 50, resistenze 80, attacco 6-2 r
M= movimento 7, calcio 3, vita 20, agilità 40, resistenze 90, attacco 3-1 m (rallenta) | 3-1 r (rallenta)
A= movimento 5, calcio 1, vita 25, agilità 40, resistenze 90, attacco 3-1 m (knockback) | 3-1 r (precisione) [attacco multiplo]

Elficalcianti:

D= movimento 5, calcio 5, vita 35, agilità 40, resistenze 90, attacco 5-2 m
C= movimento 6, calcio 5, vita 30, agilità 40, resistenze 90, attacco 5-2 r
M= movimento 7, calcio 4, vita 20, agilità 40, resistenze 100, attacco 3-1 m (rallenta) | 3-1 r (rallenta)
A= movimento 5, calcio 1, vita 25, agilità 40, resistenze 90, attacco 3-1 m (knockback) | 3-1 r (precisione) [attacco multiplo]

Nanicalcianti:

D= movimento 4, calcio 4, vita 35, agilità 50, resistenze 70, attacco 6-2 m
C= movimento 4, calcio 5, vita 30, agilità 50, resistenze 70, attacco 6-2 r
M= movimento 5, calcio 4, vita 20, agilità 50, resistenze 70, attacco 3-1 m (rallenta) | 3-1 r (rallenta)
A= movimento 5, calcio 1, vita 25, agilità 50, resistenze 80, attacco 3-1 m (knockback) | 3-1 r (precisione) [attacco multiplo]

Orchicalcianti:

D= movimento 4, calcio 5, vita 35, agilità 60, resistenze 80, attacco 7-2 m
C= movimento 5, calcio 5, vita 30, agilità 60, resistenze 80, attacco 7-2 r
M= movimento 6, calcio 3, vita 20, agilità 50, resistenze 90, attacco 3-1 m (rallenta) | 3-1 r (rallenta)
A= movimento 5, calcio 1, vita 25, agilità 50, resistenze 80, attacco 3-1 m (knockback) | 3-1 r (precisione) [attacco multiplo]

Nonmorticalcianti:

D= movimento 3, calcio 4, vita 35, agilità 60, resistenze 90, attacco 8-2 m
C= movimento 3, calcio 5, vita 30, agilità 60, resistenze 90, attacco 8-2 r
M= movimento 5, calcio 4, vita 20, agilità 50, resistenze 100, attacco 4-1 m (rallenta) | 4-1 r (rallenta)
A= movimento 5, calcio 1, vita 25, agilità 50, resistenze 80, attacco 3-1 m (knockback) | 3-1 r (precisione) [attacco multiplo]


Naturalmente ci vorrà un pò di tempo innanzi che i settaggi risultino ben calibrati (idem la giocabilità in senso generale), per l'adesso sono partito dalla fazione degli umani e poi ho modificato le altre (i capitani li ho lasciati tutti uguali e non ho ancora cipollato sui punti vita delle unità), dunque se qualcuno avesse in merito delle soluzioni differenti se ne potrebbe discutere in tranquillanza (o per qualsiasi idea/proposta in tal senso, così da poter diversificare il più possibile il gioco delle fazioni ed eventualmente assegnare alle unità delle altre abilità).  Allego a questo post una versione alfa dello scenario con le fazioni diverse tra loro.

Il calcio in costume - Versione Alpha (con le fazioni tutte diverse - prova di bilanciamento numero 1). (TBFW v.1.12)
« Ultima modifica: 02 Febbraio 2015, 18:12:47 da Uesmae » Registrato

Il potere asserve i suoi servi, non mi serve...abbisogno d'una visione comune d'insieme.
ego potest non summa "Chi ha troppa fretta e poco tempo farebbe meglio a non leggere quel che scrissi."
Uesmae
Eroe del Reame
*****
Scollegato Scollegato

Messaggi: 1419


Fu Bardo...è Vagabondo. Tituli:Vinto1torneo(n.u).


« Risposta #5 inserita:: 25 Gennaio 2015, 19:49:49 »

Inoltre, ci sarebbe da cominciare a pensare alle descrizioni delle squadre e dei calcianti, ed eventualmente ad alcuni eventi che all'inizio della partita illustrino un pochino le peculiarità delle unità. Infine, sempre a proposito delle unità, con le immagini esistenti ho aggiunto loro delle nuove animazioni perchè mi sembravano un pochino ferme nei tempi morti e allora gli ho fatto fare un pò di streccing...ho aggiunto altresì una lista di nomi italioti per i giocatori, ma esclusivamente nelle versioni "inter nos".

Buon divertimento...  Sorriso

[ Allegato: Non sei abilitato a vedere gli allegati ]
Registrato

Il potere asserve i suoi servi, non mi serve...abbisogno d'una visione comune d'insieme.
ego potest non summa "Chi ha troppa fretta e poco tempo farebbe meglio a non leggere quel che scrissi."
Xalzar
Eroe del Reame
*****
Scollegato Scollegato

Messaggi: 1516


Il Lucertolino


« Risposta #6 inserita:: 26 Gennaio 2015, 10:08:01 »

Chiarimento per chi vuole commentare/discutere del bilanciamento e non fosse pratico di WML:
Citazione di: Bozza bilanciamento 1
D= movimento 5, calcio 5, vita 40, agilità 40, resistenze 90, attacco 5-2 m

Movimento è il movimento dell'unità;
Calcio è il movimento che guadagna la palla quando viene "calciata" (attaccata) dall'unità in esame;
Vita sono i punti ferita;
Agilità è la percentuale di difesa, in questo caso sull'intero campo di gioco, espressa però come "percentuale di essere colpiti": agilità/difesa 40 = difesa 60%, 70 = 30%;
Resistenze sono uguali per ogni tipo di danno e sono anch'esse espresse "a rovescio", come "percentuale di danno subito", più basso è il numero meglio è: 90 = +10% resistenza, 100 = +0% resistenza, 110 = -10% resistenza;
Attacco è espresso come (danno)/(numero) e m = melee, ravvicinato e r = ranged, a distanza.

Per il resto, ho già parlato anche troppo in altre sedi.  Occhiolino
Registrato
Uesmae
Eroe del Reame
*****
Scollegato Scollegato

Messaggi: 1419


Fu Bardo...è Vagabondo. Tituli:Vinto1torneo(n.u).


« Risposta #7 inserita:: 26 Gennaio 2015, 13:15:35 »

Per il resto, ho già parlato anche troppo in altre sedi.  Occhiolino

Puoi parlare anche qui eh...  Ghigno  ...nessuno t'azzanna se t'esprimi (anche più del dovuto), perchè questo non è un topico indove ci s'informa e basta però s'è smesso di comunicare (altrimenti la fantasia delle utenze verrebbe letteralmente soffocata). Ad ogni modo hai fatto bene Lucertolino a far chiarezza sul punto perchè io a quella tabellina volevo annetterci una specie di legenda però mi sa che me ne sono dimenticato.

In sintesi il discorso è che bisognerebbe fare in maniera di rendere le squadre il più possibile differenti tra d'esse (rendendole tuttavia equilibrate), così da poter assegnare una specifica tipologia di gioco a ciascheduna, però bisognerebbe tenere presente che il bilanciamento in questo scenario potrebbe non risultare "convenzionale" in quanto le sue dinamiche e meccaniche sono un pochino differenti da quelle del videogioco stesso. Al momento ho già ascoltato alcuni pareri da parte degli utenti in tal senso (i quali non sto a mensionare perchè sono stati in diversi), però chiunque volesse contribuire al bilanciamento dello scenario (od esprimere un parere in merito a qualsiasi altra questione) è il benvenuto.  Sorriso
Registrato

Il potere asserve i suoi servi, non mi serve...abbisogno d'una visione comune d'insieme.
ego potest non summa "Chi ha troppa fretta e poco tempo farebbe meglio a non leggere quel che scrissi."
Elvish_Hunter
Moderatore globale
*****
Scollegato Scollegato

Messaggi: 674


Lo sviluppator cortese


« Risposta #8 inserita:: 01 Febbraio 2015, 12:22:41 »

In seguito a un messaggio che Uesmae mi ha inviato, ho dato un'occhiata al codice di alcuni eventi che generano i famigerati errori nell'stderr.
Codice:
20150127 00:08:35 warning engine: variable_info: retrieving member of non-existent WML container, streccin.hitpoints

#define STRECCIN DEH DOH
...
{STRECCIN (4,1) (3,4)}
Per questo evento, la domanda sorge spontanea: al momento del turn refresh, almeno una delle posizioni indicate nel primo argomento della macro non contiene unità? Se per esempio la casella 4,1 fosse vuota, lo [store_unit] fallirebbe e il messaggio d'errore ne sarebbe la diretta conseguenza.
Codice:
20150127 00:08:35 warning engine: variable_info: retrieving member of non-existent WML container, fermalo.hitpoints
20150127 00:08:35 warning engine: variable_info: retrieving member of non-existent WML container, fermalo.id

    [event]
        name=turn refresh
        first_time_only=no
            [store_unit]
                [filter]
                    canrecruit=yes
                    side=$side_number              
                [/filter]
                    variable=fermalo
                    kill=no
            [/store_unit]  
Questo evento mi funziona perfettamente. L'ho copiato e incollato in uno scenario e il problema non si è presentato. Visto che la variabile $side_number è sempre memorizzata automaticamente, l'unico caso in cui potrebbe accadere è se una fazione non avesse a disposizione alcun condottiero - il che è tecnicamente possibile anche usando la chiave defeat_conditions, ma in questo caso accade perché lo scenario ha victory_when_enemies_defeated=no, tre fazioni e la terza non ha un leader.
Lo stesso accade anche per il terzo problema:
Codice:
   [event]
        name=moveto
      first_time_only=no
            {STORUNITA (lasciala)}     
            [filter]
                canrecruit=yes
                side=$side_number
            [/filter]   
Codice:
20150127 00:07:08 warning unit: Unknown attribute 'no_recruit' discarded.
Questo non so come mai accade. Recentemente ho rigiocato la campagna del Martello di Thursagan sulla versione 1.13 (ancora in fase di sviluppo), in seguito ad alcune modifiche apportate da uno degli altri sviluppatori (vultraz), e anch'io ho riscontrato questo errore. Allora ho avuto la pensata di lanciare un comando grep (che serve a trovare una stringa di testo nei file specificati) sulla directory della campagna e, con mia sorpresa, non ho trovato nessun riferimento a no_recruit, neanche nella directory core Che?!? . Gli unici riferimenti a quella stringa sono nel codice C++, quindi è possibile che venga inserita nei salvataggi per chissà quale oscuro motivo. Quindi al momento questo bug non ha soluzione.

Detto questo, per evitare che il problema delle variabili vuote si ripresenti hai diverse strade. La prima è quella di aggiungere un blocco
[filter_condition] [have_unit] agli eventi, in modo da verificare che le unità da memorizzare esistano (e laddove non esistessero, l'evento non accadrebbe). La seconda è quella di controllare, dopo aver eseguito lo [store_unit], se la variabile fosse vuota, e questo si fa con un blocco [if] [variable] name=la_mia_variabile.length greater_than=0: il campo length indica quanti elementi siamo memorizzati nell'array, e logicamente se lo [store_unit] non trova unità il suo valore è pari a zero.
« Ultima modifica: 01 Febbraio 2015, 12:25:08 da Elvish_Hunter » Registrato

Manutentore corrente di The Sojournings of Grog, Children of Dragons, A Rough Life e Wesnoth Lua Pack.
The White Troll - topic ufficiale
Uesmae
Eroe del Reame
*****
Scollegato Scollegato

Messaggi: 1419


Fu Bardo...è Vagabondo. Tituli:Vinto1torneo(n.u).


« Risposta #9 inserita:: 01 Febbraio 2015, 13:18:38 »

Al termine d'ogni partita ho notato che sul fogliolino dello stderr appaiono diversi errori ma questo non mi pare che comprometta assolutamente lo svolgimento della gara (in quanto gli eventi accadono regolarmente) o addirittura il funzionamento del videogioco, l'unica palese "magagna" è che dopo parecchi turni l'ai sembra come "rallentata" nelle tempistiche del proprio turno (perchè il programma sembra come di non trovare alcune variabili) però ad ogni riavvio di partita torna tutto quanto a posto, dunque per il momento non sto a "lambiccarmi" poi troppo e vedrò casomai in futuro di trovare una soluzione a questo "problemino", od altrimenti se vi fosse qualcuno che possa fornirmi delle soluzioni in tal senso, ben vengano.

In seguito a un messaggio che Uesmae mi ha inviato, ho dato un'occhiata al codice di alcuni eventi che generano i famigerati errori nell'stderr.

Sì, la questione dello store unit che "gira a vuoto" probabilmente deriva appunto dal fatto che in quelle caselle le unità non sempre vi si trovano situate, dunque provvederò a regolarmi in base ai tuoi suggerimenti così da fare in maniera che quando viene eseguito "il controllo" se in quelle caselle vi sono presenti delle unità l'evento abbia effetto, altrimenti no. Credo d'avere capito cosa debbo fare e appena possibile sistemerò le formuline ed aggiornerò l'estensione (anzi, ho potuto contare sul prezioso ausilio del Lucertolino per strutturare quell'evento lì, sicchè di 2 testoline...se proprio non ci dovessi riuscire io a farlo funzionare correttamente, una delle 2 vedrai che c'arriesce).  Sorriso

N'zomma, t'arringrazio per le dritte Elfo!  Felice

Edit risolutivo:

Ho modificato gli eventi suddetti, quindi allego i codici che mi sembra per l'adesso stiano a posto.

Prima...

Codice:

#define ISTRECCIN DEH DOH
    [event]
        name=turn refresh
        first_time_only=no
            [store_unit]
                [filter]
                    side=$side_number
                    x,y={DEH}
                [/filter]
                    variable=streccin
                    kill=no
            [/store_unit]
        [if]
            [variable]
                 name=streccin.hitpoints
                 greater_than=19
            [/variable]
            [then]
            [heal_unit]
                [filter]
                   id=$streccin.id
                [/filter]
                amount=40
                animate=yes
            [/heal_unit]
                [teleport]
                    [filter]
                        id=$streccin.id
                   [/filter]
                    x,y={DOH}
                [/teleport]
                {ISONINO1 (magic-faeriefire.ogg)}
                {CLEAR_VARIABLE streccin}
            [/then]
        [else]
            {CLEAR_VARIABLE streccin}
        [/else]
        [/if]
    [/event]
#enddef


Codice:

#define STRECCIN DEH DOH
    [event]
        name=turn refresh
        first_time_only=no
            [store_unit]
                [filter]
                    side=$side_number
                    x,y={DEH}
                [/filter]
                    variable=streccin
                    kill=no
            [/store_unit]
        [if]
            [variable]
                name=streccin.length
                greater_than=0
            [/variable]
            [variable]
                name=streccin.hitpoints
                greater_than=19
            [/variable]
            [then]
            [heal_unit]
                [filter]
                   id=$streccin.id
                [/filter]
                amount=40
                animate=yes
            [/heal_unit]
                [teleport]
                    [filter]
                        id=$streccin.id
                   [/filter]
                    x,y={DOH}
                [/teleport]
                {SONINO1 (magic-faeriefire.ogg)}
                {CLEAR_VARIABLE streccin}
            [/then]
        [else]
            {CLEAR_VARIABLE streccin}
        [/else]
        [/if]
    [/event]
#enddef


...e dopo.

Prima...

Codice:

    [event]
        name=turn refresh
        first_time_only=no
            [store_unit]
                [filter]
                    canrecruit=yes
                    side=$side_number  
                [/filter]
                    variable=fermalo
                    kill=no
            [/store_unit]
         [if]
            [variable]
                name=fermalo.hitpoints
                less_than=12
            [/variable]
            [then]
            [modify_unit]
                [filter]
                    id=$fermalo.id
                [/filter]
                    attacks_left=0
            [/modify_unit]
          {CLEAR_VARIABLE fermalo}
          [/then]
          [else]
          {CLEAR_VARIABLE fermalo}  
          [/else]
         [/if]
    [/event]


Codice:

#define STANCHEZZA AH OH
    [event]
        name=side {AH} turn refresh
        first_time_only=no
            [store_unit]
                [filter]
                    canrecruit=yes
                    side={OH}  
                [/filter]
                    variable=fermalo
                    kill=no
            [/store_unit]
         [if]
            [variable]
                name=fermalo.hitpoints
                less_than=12
            [/variable]
            [then]
            [modify_unit]
                [filter]
                    id=$fermalo.id
                [/filter]
                    attacks_left=0
            [/modify_unit]
          {CLEAR_VARIABLE fermalo}
          [/then]
          [else]
          {CLEAR_VARIABLE fermalo}  
          [/else]
         [/if]
    [/event]
#enddef

    {STANCHEZZA (1) (1)}
    {STANCHEZZA (2) (2)}


...e dopo.

Prima...

Codice:

[event]
        name=turn refresh
        first_time_only=no
            {STORUNITA (lasciala)}
        [if]
            [variable]
                name=lasciala.overlays
                equals="pallone/pallainmano.png"
            [/variable]
            {BUTTAPALLA1 ($lasciala.x,$lasciala.y)}
            [then]
            {SONINO1 (miss-1.ogg)}
                [message]
                    side=$side_number
                    message=_ "Want you release the ball?"
                    {LASCIAPALLA (NO) (1)}
                    {LASCIAPALLA (OK) (2)}
                [/message]
                [switch]
                    variable=lasciapalla
                    {OPZIONE (1)}
                    [case]
                        value=2
                        {DISEGNOPALLA ($lasciala.id)}
                        {BUTTAPALLA2 ($lasciala.x,$lasciala.y)}
                        {MODIFISBERLE}
                [/case]
                    {CLEAR_VARIABLE lasciala,lasciapalla}
                [/switch]
            [/then]
        [/if]
[/event]


Codice:

#define MOLLAPALLA PING PONG
[event]
        name=side {PING} turn refresh
        first_time_only=no
            {STORUNITA {PONG} (lasciala)}
        [if]
            [variable]
                name=lasciala.overlays
                equals="pallone/pallainmano.png"
            [/variable]
            {BUTTAPALLA1 ($lasciala.x,$lasciala.y)}
            [then]
            {SONINO1 (miss-1.ogg)}
                [message]
                    side=$side_number
                    message=_ "Want you release the ball?"
                    {LASCIAPALLA (NO) (1)}
                    {LASCIAPALLA (OK) (2)}
                [/message]
                [switch]
                    variable=lasciapalla
                    {OPZIONE (1)}
                    [case]
                        value=2
                        {DISEGNOPALLA ($lasciala.id)}
                        {BUTTAPALLA2 ($lasciala.x,$lasciala.y)}
                        {MODIFISBERLE}
                [/case]
                    {CLEAR_VARIABLE lasciala,lasciapalla}
                [/switch]
            [/then]
        [/if]
[/event]
#enddef

    {MOLLAPALLA (1) (1)}
    {MOLLAPALLA (2) (2)}

   

...e dopo.

Al momento questi eventi mi sembra che non manifestino più errori nel fogliolino dello stderr.  Sorriso
« Ultima modifica: 02 Febbraio 2015, 02:10:55 da Uesmae » Registrato

Il potere asserve i suoi servi, non mi serve...abbisogno d'una visione comune d'insieme.
ego potest non summa "Chi ha troppa fretta e poco tempo farebbe meglio a non leggere quel che scrissi."
Uesmae
Eroe del Reame
*****
Scollegato Scollegato

Messaggi: 1419


Fu Bardo...è Vagabondo. Tituli:Vinto1torneo(n.u).


« Risposta #10 inserita:: 01 Febbraio 2015, 22:02:37 »

Però s'è presentato un altro errore, che forse prima non avevo notato.

Codice:

20150201 21:05:15 warning engine: Could not find move_unit_fake route from 18,8 to 25,11: ignoring complexities


Il quale presumo scaturisca da questo evento qui (e pure da altri eventi ma che utilizzano le medesime macro).

Codice:

#define ARBITRO COGGIUNE
    [unit]
        side=3
        type=Arbitro
        x,y={COGGIUNE}
        name= _ "Referee"
        canrecruit=no
    [/unit]
#enddef

#define PALLACASO CASO SOCA COSA COSO
    [case]
        value={CASO}
        {SMOVI {SOCA} {COSA} {COSO}}
    [/case]
#enddef

#define PIAZZAPALLA1 MA VA
    [unit]
        x,y={MA}
        type=Pallone
        side=3
        name= _ "Ball"
        canrecruit=no
    [/unit]
        [animate_unit]
            [filter]
                x,y={VA}
            [/filter]
            flag=standing
            hits=no
        [/animate_unit]
#enddef

#define PIAZZAPALLA2
    [set_variable]
        name=piazzapallas
        rand=1..6
    [/set_variable]
    [switch]
        variable=piazzapallas
            {PALLACASO (1) (Pallone) (25) (8)}
            {PALLACASO (2) (Pallone) (25) (11)}
            {PALLACASO (3) (Pallone) (11) (11)}
            {PALLACASO (4) (Pallone) (11) (8)}
            {PALLACASO (5) (Pallone) (11) (5)}
            {PALLACASO (6) (Pallone) (25) (5)}
        {CLEAR_VARIABLE piazzapallas}
    [/switch]
#enddef

[event]
        name=start
        first_time_only=yes
            {ARBITRO (18,3)}  
                 [animate_unit]
                     [filter]
                          x,y=18,3
                      [/filter]
                      flag=standing
                      hits=no
                  [/animate_unit]
            {SMOVI (Arbitro) (18) (7)}
            {PIAZZAPALLA1 (18,8) (18,8)}  
            [animate_unit]
                [filter]
                    x,y=18,7
                [/filter]
             [primary_attack]
                  type=impact
             [/primary_attack]
                flag=attack
                hits=yes
            [/animate_unit]  
        {PIAZZAPALLA2}
[/event]


Si tratta d'un evento che serve per piazzare la palla in una posizione casuale all'inizio della partita e inoltre muove sia l'arbitro che la palla, per creare una sorta d'animazione (nello scenario serve altresì per altre cosine, ma ora l'ho semplificato per "circoscrivere" la parte del codice che immagino determini il qui pro quo). Suppongo che l'errore si manifesti dopo che l'arbitro posa la palla a terra e la manda verso una delle posizioni casuali (cioè quando agisce la macro PIAZZAPALLA2) e pure questo errore come i precedenti non dovrebbe compromettere gli effetti dell'evento, perchè esso mi pare che si svolga regolarmente, però nel fogliolino dello stderr mi sembra che il programma non trovi il tag move unit fake (correlandolo al relativo percorso della palla), anche se io mi sono servito del tag move unit. Dunque l'interpretazione del messaggio dell'errore non mi risulta particolarmente chiara.

Se e quando possibile attendo lumi in tal senso.  Sorriso
« Ultima modifica: 02 Febbraio 2015, 03:04:04 da Uesmae » Registrato

Il potere asserve i suoi servi, non mi serve...abbisogno d'una visione comune d'insieme.
ego potest non summa "Chi ha troppa fretta e poco tempo farebbe meglio a non leggere quel che scrissi."
Elvish_Hunter
Moderatore globale
*****
Scollegato Scollegato

Messaggi: 674


Lo sviluppator cortese


« Risposta #11 inserita:: 02 Febbraio 2015, 11:20:18 »

Codice:
warning engine: Could not find move_unit_fake route from 18,8 to 25,11: ignoring complexities
Questo accade perchè il tag [move_unit] (che, pur essendo realizzato in Lua, al suo interno contiene una chiamata al tag [move_unit_fake], il quale è il vero responsabile del comportamento) tenta di muovere l'unità seguendo le normali regole di spostamento (esagoni occupati, zone di controllo, terreni invalicabili). Se non ci riesce, allora prova a muovere l'unità per il percorso più semplice ed emette l'avviso di cui sopra. Questi messaggi non possono essere eliminati in nessun modo efficace.
In passato, la faccenda fu discussa anche sul forum ufficiale: http://forums.wesnoth.org/viewtopic.php?f=21&t=35609&p=515368#p515368 .
È possibile che, assegnando l'abilità di incursore all'unità che vuoi spostare (il che per l'arbitro potrebbe avere senso, visto che deve essere sempre vicino all'azione di gioco, almeno teoricamente), i messaggi si riducano, visto che questa ignorerebbe comunque le zone di controllo.
Registrato

Manutentore corrente di The Sojournings of Grog, Children of Dragons, A Rough Life e Wesnoth Lua Pack.
The White Troll - topic ufficiale
Uesmae
Eroe del Reame
*****
Scollegato Scollegato

Messaggi: 1419


Fu Bardo...è Vagabondo. Tituli:Vinto1torneo(n.u).


« Risposta #12 inserita:: 02 Febbraio 2015, 14:29:15 »

È possibile che, assegnando l'abilità di incursore all'unità che vuoi spostare (il che per l'arbitro potrebbe avere senso, visto che deve essere sempre vicino all'azione di gioco, almeno teoricamente), i messaggi si riducano, visto che questa ignorerebbe comunque le zone di controllo.

L'arbitro dispone già dell'abilità incursione, ma dalle coordinate del messaggio dell'errore intuisco che è la palla a far scattare l'errore, però è abbastanza "illogico" tutto ciò perchè essa non incontra "ostacoli" lungo il proprio percorso in quanto all'inizio della partita non vi sono presenti unità che potrebbero interporsi fra le caselle libere e neppure delle tipologie di terreno non passabili (però comprendo benissimo che il programma è composto da talmente tante formuline che vattelappesca un ago in un pagliaio). Ad ogni modo si tratta d'un errore che potrebbe verificarsi da un minimo di una ad un massimo di tre 3 volte durante la partita, quindi esso non dovrebbe provocare alcun problema di rallentamento dell'ai o altre "magagne" (perchè la palla durante la partita quando viene smossa, diviene del side dei giocatori per un certo periodo e pertanto l'errore in questione non si manifesta). Anzi, direi che di 5 errori trovati sono riuscito a risolverne 3 (e per gli altri 2 dato che al momento non c'è soluzione, pazienza), dunque posso ritenermi "soddisfatto" anche perchè il fogliolino dello stderr adesso ne segnala veramente pochissimi e la partita ci tengo a ribadire che comunque si svolge regolarmente, indipendentemente dalla presenza di codesti errori.  Sorriso

A questo punto, ovviamente ringrazio le utenze per il supporto "tecnico" e direi che posso aggiornare l'estensione, mi riferisco sia ai pacchettini presenti nel topico innanzi di giungere a questo post e sia per quanto concerne il pacchettino spedito al Porto di mare...

http://wif.altervista.org/index.php?action=downloads;sa=view;id=239

...in relazione ai codici dello scenario idem con bresaola, modifico esclusivamente i posts precedenti senza mettermi a crearne d'ulteriori (tanto le modifiche che ho fatto al file.cfg le ho elencate tutte quante poc'anzi), così da fare in maniera che risolte le "magagne tecniche" (si spera) adesso sia possibile di concentrarsi sul bilanciamento dello scenario.
Registrato

Il potere asserve i suoi servi, non mi serve...abbisogno d'una visione comune d'insieme.
ego potest non summa "Chi ha troppa fretta e poco tempo farebbe meglio a non leggere quel che scrissi."
Pagine: [1]   Vai su
  Stampa  
 
Vai a: