annuncio

Comprimi
Ancora nessun annuncio.

[DOMANDA EASYUO]Finditem e risorse.

Comprimi
X
 
  • Filtro
  • Ora
  • Visualizza
Elimina tutto
nuovi messaggi

  • [DOMANDA EASYUO]Finditem e risorse.

    ciau a tutti!vorrei sapere se è possibile fare un finditem e cercare risorse tipo alberi, minerali ecc.. dato che nn hanno ne ID ne TYPE nn so se si possa fare, nn so esiste qualcosa che permetta di cercarli in base al tile?
    tnx mille in anticipo
    EDIT: per tile intendo ovviamente nn la coordinata, ma per esempio il tile degli alberi, quello in poche parole che si trova con #ltargettile
    Ultima modifica di danyeleid; 04-11-2005, 15:03.

  • #2
    Faccio 2 premesse:
    1- Ho cancellato tutto quello che avevo scritto (20 minuti fa) quando avevo praticamente finito la risposta....
    2- Non conviene utilizzare il metodo in questione per minare poichè le "vene minerarie" coprono un bel numero di tiles.

    Detto ciò, per fare legna, il metodo dei tiles è molto comodo.
    Tornando al punto 2 della premessa sarò moooooooolto sintetico, in caso postate eventuali dubbi

    Cosa serve:

    Serve essenzialmente il comando "tile Get {x} {y} {index}" dove index è un numero variabile fra 1 e #tileCnt.
    X ed Y sono espresse in world cohordinates.

    Cosè #tileCnt e come faccio ad averlo:

    #tileCnt corrisponde al numero di tile di una spefica posizione e viene restituito dal comando "tile Cnt {x} {y}"; per X ed Y vale quanto detto sopra.

    Come si usa sta roba:

    1- Bisogna inizializzare il tutto tramite "tile init"
    2- Dobbiamo recuperare #tileCnt tramite "tile Cnt X Y
    3- Ora possiamo ottenere informazioni sul tile di interesse tramite "tile Get X Y {index} dove, ricordo, {index} è un numero variabile fra 1 e #tileCnt.

    Esempio:
    (L'idea di base è di effettuare una scansione di 4x4 tiles dal punto in cui ci troviamo)

    codice:
    ;inizializzazione
    tile init
    ;area di scansione
    for %x 0 4
    {
       for %y 0 4
       {
          set %ScanX %x - 2
          set %ScanY %y - 2
          set %xpos #charposx  + %ScanX
          set %ypos #charposy + %ScanY
          ;ricaviamo #tileCnt
          tile CNT %xpos %ypos
          ;impostiamo {index}
          for %index 1 #tilecnt
          {
             ;ricaviamo informazione sul tile
             tile GET %xpos %ypos  %index
             ;se è un albero (TREE) facciamo un po' di legna
             if TREE in #TILENAME
             {
                Set #LTARGETX %xpos
                Set #LTARGETY %ypos
                Set #LTARGETZ #tilez
                Set #LTARGETKIND 3
                Set #LTARGETTILE #tiletype
                Set #lobjectid "ID di un'ascia"
                ;last Object
                Event macro 17 0
                ;last target
                Event macro 22 0
             }
          }
       }
    }
    Spero, nonostante tutto di essere stato chiaro
    Ultima modifica di gabx; 04-11-2005, 20:42.
    AKA Hologram


    • A voi il nuovo successo dell'estate!
    Ce l'hai proprio con me?
    • Dal più grande comunicatore d'Italia...
    Uno che, della vita, ha capito tutto...
    Originally posted by SaGeOwL
    conoscete la grammatica come un bambino del Biafra conosce la sagra del cinghiale

    Commenta


    • #3
      Per trovare risorse come alberi e minerali il finditem non va bene. Devi usare il comando tile per scansionare i tile che hai intorno.

      Ti allego una sub che avevo fatto io (è un po vecchiotta, ma dovrebbe sempre andare). Nota che una volta che trova un albero richiama un'altra sub (sub chop) che non è presente qui e te la devi implementare a modo tuo. A prima vista sembra un po complessa, ma è abbastanza facile.

      Hologram mi ha preceduto.

      codice:
      ;==================
      ;** 
      ;* @name Tree_finder
      ;* @ver 1.0 21Gen05 
      ;* @author  Boydon
      ;* @purpose Find all tree in the given area and chop them
      ;* @params %1 req width of the area
      ;*				 %2 req heigt of the area
      ;* @returns
      ;* @dependencies
      ;* @example gosub Tree_finder 16 16
      ;* @status Tested and working
      
      sub Tree_finder
      
      	if %0 < 2 || %1 = N/A || %2 = N/A
      	{
      		display ok Wrong use of Sub Tree_finder: some required arguments are missing!
      			+$Script will be halted.
      		halt
      	}
      	
      	namespace push
      	namespace local Tree_Finder , #time , #random , #scnt2
      
      	tile init
      	set !choppable _3230_3274_3275_3276_3277_3278_3280_3281_3283_3284_3286_3287_3288_3289_3290_3291_3293_3294_3296_3297_3299_3300_3302_
      	set !charposxstart #charposx
      	set !charposystart #charposy
      	set !charposxend #charposx + %1
      	set !charposyend #charposy - %2
      	for !x !charposxstart !charposxend
      	{
      		for !y !charposystart !charposyend
      		{
      			set !i 0
      			tile cnt !x !y
      			for !i 1 #tilecnt
      			{
      				tile get !x !y !i
      				set !tiletype _ , #tiletype , _
      				if !tiletype in !choppable
      				{
      					set !path_find 0
      					path_find:
      					Event PathFind !x !y #tilez
      					wait 20
      					set !xrange1 !x - 1
      					set !xrange2 !x + 1
      					set !yrange1 !y - 1
      					set !yrange2 !y + 1
      					if #charposx < !xrange1 || #charposx > !xrange2 || #charposy < !yrange1 || #charposy > !yrange2
      					{
      						move !x !y 0 1s
      						set !path_find !path_find + 1
      						if !path_find < 3
      							goto path_find
      					}
      					set #ltargettile #tiletype
      					set #ltargetkind 3
      					set #ltargetx !x
      					set #ltargety !y
      					set #ltargetz #tilez
      					gosub chop
      					set !i #tilecnt
      				}
      			}
      		}
      	}
      	
      	namespace clear
      	namespace pop
      
      return

      Commenta

      Sto operando...
      X