Rpg˛S Forum uses cookies. Read the Privacy Policy for more info. To remove this message, please click the button to the right:    I accept the use of cookies

Vai al contenuto

Rpg˛S Forum uses cookies. Read the Privacy Policy for more info. To remove this message, please click the button to the right:    I accept the use of cookies

Screen Contest #90

Kamikun






  • Si prega di effettuare il log in prima di rispondere
Modifica a Random Citizen di Alato. Possibile? - - - - -

    Louie
  • Utente avanzato

  • Utenti
  • Rens: 29
  • 0
  • StellettaStellettaStelletta
  • 432 messaggi
  • Sesso:Maschio
  • Provenienza:Pavia
  • Abilitā:Adepto

#1 Inviato 20 December 2022 - 20:59 PM

Salusti, salusti!
Sto facendo degli esperimenti per il futuro (sempre per la mia cara saga di Clairvoyant e, mappando una città molto affollata, sono ben felice di usare lo script Random Citizen di Alato, originariamente postato qui e che posseggo in archivio da molti anni.
E' molto semplice: si piazzano degli eventi vuoti con il commento "begin passante" e lo script fa spawnare tanti npc (basta che contengano il nome "Civilian" nel database) quanti gli eventi, in punti lontano da te, fuori dalla telecamera.

L'effetto è meraviglioso, un vero toccasana per popolare una città e ottima per le mappe grandi.
Ci sarebbe un problema: spawnano semplicemente nelle zone di tileset marcate O, cioè camminabili. 

Ovviamente non sarebbe un grosso problema se non fosse che capitano eventualità in cui sarebbe preferibile che non spawnassero in certi luoghi, come per esempio qui:

HzJrKzB.png

La mia intenzione sarebbe di poter far camminare qui il protagonista per creare un po' di level design, ma ovviamente non voglio che la gente spawni lì a caso.

Qualcuno esperto in RGSS1 sarebbe così gentile da dare un'occhiata e modificare lo script in modo che essi possano sì spawnare nelle zone camminabili MA NON, per esempio, in tiles marchiati col terrain tag di un certo numero? O qualcosa del genere...

Qui c'è lo script, grazie mille in anticipo alla buon'anima.
 

Spoiler

 


>>>>>>>>>>>>>>>   Main developer @ Emptyworld_games!   <<<<<<<<<<<<<<<<<

PROGETTO IN CORSO:
Clairvoyant: Ad AEthera Fides

https://www.rpg2s.ne...48-clairvoyant/

IL MIO ULTIMO GIOCO TEXT-BASED!
As the rain sings

https://emptyworld-games.itch.io/atrs


I miei giochi completi:

https://emptyworld-games.itch.io/


Pls vieni a trovarmi sul web: 

https://linktr.ee/emptyworld
 


    Testament
  • Il Custode della Memoria

  • Utenti Speciali
  • Rens: 1141
  • 51
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 12366 messaggi
  • Sesso:Maschio
  • Provenienza:Firenze
  • Abilitā:Esperto


#2 Inviato 21 December 2022 - 00:05 AM

io credo sia qui

 

  #--------------------------------------------------------------------------
  # - Riposiziona
  #--------------------------------------------------------------------------
  def riposiziona
case rand(3)
when 0
  r_x = $game_map.display_x + rand(21)*128 - 128*3
  r_y = $game_map.display_y - 128*3
when 1
  r_x = $game_map.display_x + rand(21)*128 - 128*3
  r_y = $game_map.display_y + 2176 + 128*3
when 2
  r_x = $game_map.display_x - 128*3
  r_y = $game_map.display_y + rand(16)*128 - 128*3
when 3
  r_x = $game_map.display_x + 2816 + 128*3
  r_y = $game_map.display_y + rand(16)*128 - 128*3
end
x = r_x / 128
y = r_y / 128
if $game_map.passable?(x, y, 0)
  @real_x = r_x
  @real_y = r_y
  @x = x
  @y = y
else
  riposiziona
end

 

 

 

più precisamente in questo IF che controlla se la mappa in X Y è passabile e posiziona lì il chara o in caso contrario richiama "riposiziona" finché non trova una posizione valida.

 

if $game_map.passable?(x, y, 0)

 

 

 

 

ci andrebbe aggiunto un AND $game_map.tag"robe" non conosco la sintassi del ruby di rpgmaker, ma ci deve essere una funzione che controlla che oltre ad essere passabile, la casella X,Y, NON sia marchiata col terrain tag che vuoi tu.


183.png
donatePQ.gif bYridanSiBEi27EwrQBOKvYB04IgpCwL27xIfmrh FBnono.gif


    Louie
  • Utente avanzato

  • Utenti
  • Rens: 29
  • 0
  • StellettaStellettaStelletta
  • 432 messaggi
  • Sesso:Maschio
  • Provenienza:Pavia
  • Abilitā:Adepto

#3 Inviato 21 December 2022 - 10:55 AM

Esattamente! Credo sia proprio un'aggiunta semplice semplice, dovrei avere un corso di RGSS1 in archivio, provo a documentarmi sulla sintassi e magari fare qualche prova, nel frattempo. Grazie. 
Ovviamente la domanda resta aperta, editerò, nel caso non abbia successo.


>>>>>>>>>>>>>>>   Main developer @ Emptyworld_games!   <<<<<<<<<<<<<<<<<

PROGETTO IN CORSO:
Clairvoyant: Ad AEthera Fides

https://www.rpg2s.ne...48-clairvoyant/

IL MIO ULTIMO GIOCO TEXT-BASED!
As the rain sings

https://emptyworld-games.itch.io/atrs


I miei giochi completi:

https://emptyworld-games.itch.io/


Pls vieni a trovarmi sul web: 

https://linktr.ee/emptyworld
 


    Testament
  • Il Custode della Memoria

  • Utenti Speciali
  • Rens: 1141
  • 51
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 12366 messaggi
  • Sesso:Maschio
  • Provenienza:Firenze
  • Abilitā:Esperto


#4 Inviato 21 December 2022 - 12:08 PM

allora forse ho trovato io:

 

$game_map.terrain_tag(x,y)

 

 

Quindi l'IF là sopra diventa:

 

if $game_map.passable?(x, y, 0) and $game_map.terrain_tag(x,y) != NUMEROTERRAINTAGCHEVUOI

 

 

(ammesso che diverso si faccia != e non <> in ruby)


183.png
donatePQ.gif bYridanSiBEi27EwrQBOKvYB04IgpCwL27xIfmrh FBnono.gif


    Louie
  • Utente avanzato

  • Utenti
  • Rens: 29
  • 0
  • StellettaStellettaStelletta
  • 432 messaggi
  • Sesso:Maschio
  • Provenienza:Pavia
  • Abilitā:Adepto

#5 Inviato 21 December 2022 - 13:18 PM

Ok, sono stati fatti tentativi diversi (come Testament ha visto in diretta) e niente, gli npc ignorano totalmente la cosa. Si vede che va a toccare altre cose in Game_Map script, da cui è dipendente.


>>>>>>>>>>>>>>>   Main developer @ Emptyworld_games!   <<<<<<<<<<<<<<<<<

PROGETTO IN CORSO:
Clairvoyant: Ad AEthera Fides

https://www.rpg2s.ne...48-clairvoyant/

IL MIO ULTIMO GIOCO TEXT-BASED!
As the rain sings

https://emptyworld-games.itch.io/atrs


I miei giochi completi:

https://emptyworld-games.itch.io/


Pls vieni a trovarmi sul web: 

https://linktr.ee/emptyworld
 


    Holy87
  • Prode Guerriero

  • Rpg˛S Staff
  • Rens: 458
  • 6
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 7431 messaggi
  • Sesso:Maschio
  • Provenienza:San Giorgio a Cremano
  • Abilitā:Maestro

#6 Inviato 22 December 2022 - 23:59 PM

allora forse ho trovato io:

 

$game_map.terrain_tag(x,y)

 

 

Quindi l'IF là sopra diventa:

 

if $game_map.passable?(x, y, 0) and $game_map.terrain_tag(x,y) != NUMEROTERRAINTAGCHEVUOI

 

 

(ammesso che diverso si faccia != e non <> in ruby)

Ad occhio e croce, il problema mi sa che è perché hai messo un and quando invece dovrebbe esserci un or. E credo anche di dover mettere un == invece che !=.


"Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]

BannerOverdrive35.png
Cap3.png

578.png
 

Miei script per RPG Maker VX Ace:

Spoiler

 
I miei tutorial:
Spoiler

    Testament
  • Il Custode della Memoria

  • Utenti Speciali
  • Rens: 1141
  • 51
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 12366 messaggi
  • Sesso:Maschio
  • Provenienza:Firenze
  • Abilitā:Esperto


#7 Inviato 23 December 2022 - 02:39 AM

Beh, no, perché se io voglio fare una passerella col terrain tag = 5 e voglio che gli NPC non ci vengano piazzati sopra,

 

allora lo spawn deve controllare che il punto della mappa X, Y sia passabile E che abbia un tag terreno diverso da 5, ovvero tutti gli altri punti della mappa con passabilità cerchio e diversi dalla passerella.

 

Il problema, successivo, è che poi ok non ci spawnano sopra, ma camminando ci vanno a finire sopra lo stesso a random.


183.png
donatePQ.gif bYridanSiBEi27EwrQBOKvYB04IgpCwL27xIfmrh FBnono.gif


    Holy87
  • Prode Guerriero

  • Rpg˛S Staff
  • Rens: 458
  • 6
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 7431 messaggi
  • Sesso:Maschio
  • Provenienza:San Giorgio a Cremano
  • Abilitā:Maestro

#8 Inviato 23 December 2022 - 22:33 PM

Beh, no, perché se io voglio fare una passerella col terrain tag = 5 e voglio che gli NPC non ci vengano piazzati sopra,

 

allora lo spawn deve controllare che il punto della mappa X, Y sia passabile E che abbia un tag terreno diverso da 5, ovvero tutti gli altri punti della mappa con passabilità cerchio e diversi dalla passerella.

 

Il problema, successivo, è che poi ok non ci spawnano sopra, ma camminando ci vanno a finire sopra lo stesso a random.

Ah ok, avevo capito male la domanda.

A quel punto basterebbe un evento trasparente non passabile per evitare che ci finiscano sopra, no?


"Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]

BannerOverdrive35.png
Cap3.png

578.png
 

Miei script per RPG Maker VX Ace:

Spoiler

 
I miei tutorial:
Spoiler

    Testament
  • Il Custode della Memoria

  • Utenti Speciali
  • Rens: 1141
  • 51
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 12366 messaggi
  • Sesso:Maschio
  • Provenienza:Firenze
  • Abilitā:Esperto


#9 Inviato 25 December 2022 - 00:17 AM

è un po' quello il problema che alla fine non ha trovato risposta.

 

NON devono spammare sulla passerella,

MA devono passarci SOTTO (se non loro almeno il pg)

Però quando il personaggio c'è sopra ci deve passare solo lui.

 

 

Perciò stavo suggerente un cambio di tileset (o meglio stesso tileset, ma con passabilità cambiate da stella a cerchio attraversabile solo da sinistra a destra).

 

Il problema è che sono sorti mille altri problemi (in privato) che non rammento, che se Louie avrà voglia spiegherà, e che ogni volta hanno mandato in pappa tutto... sigh.


183.png
donatePQ.gif bYridanSiBEi27EwrQBOKvYB04IgpCwL27xIfmrh FBnono.gif


    Louie
  • Utente avanzato

  • Utenti
  • Rens: 29
  • 0
  • StellettaStellettaStelletta
  • 432 messaggi
  • Sesso:Maschio
  • Provenienza:Pavia
  • Abilitā:Adepto

#10 Inviato 25 December 2022 - 11:04 AM

HMhm c'erano complicazioni che ora non ricordo. Abbiamo provato sia un metodo (|=) che un altro (==).
Aldilà del passaggio sotto, che avrei risolto con un mapping diverso, e pazienza per l'arco sospeso camminabile, alla fine ho risolto dedicando un tile trasparente che utilizzo come ultima spiaggia per tappezzare di NO le zone altrimenti camminabili. Certo, questo è un problema se deve passarci anche il nostro pg. 

Allora, ora che ricordo... Avevo creato mappa divisa da fences, metà erba verde e metà rossa. Eravamo riusciti (in privato) a far spawnare npc SOLO sulla zona rossa.
 
Diciamo però che il problema non è dove spawnano, ma dove camminano! Sarebbe utile e molto comodo poter dire: ok, gli npc possono spawnare E camminare esclusivamente in zona TerrainTarget5. 
A me basterebbe piazzare un bel 5 sui pavimenti e fine dei problemi. 

 

EDIT: Ricordo che se mettevamo Terrain tag 1 crashava all'avvio.
Con il 5 invece sembrava tutto bene ma poi praticamente Crashava quando un npc entrava in zona verde. 
ECCO QUAL'ERA IL PROBLEMA.

Alché ho detto: ok evidentemente bisogna toccare ben più di una sola riga... E quindi avevo pensato di lasciar perdere. 


Modificato da Louie, 25 December 2022 - 11:08 AM.

>>>>>>>>>>>>>>>   Main developer @ Emptyworld_games!   <<<<<<<<<<<<<<<<<

PROGETTO IN CORSO:
Clairvoyant: Ad AEthera Fides

https://www.rpg2s.ne...48-clairvoyant/

IL MIO ULTIMO GIOCO TEXT-BASED!
As the rain sings

https://emptyworld-games.itch.io/atrs


I miei giochi completi:

https://emptyworld-games.itch.io/


Pls vieni a trovarmi sul web: 

https://linktr.ee/emptyworld
 


    ickh
  • Alex (Rm2k)

  • Utenti
  • Rens: 54
  • 0
  • StellettaStellettaStellettaStellettaStelletta
  • 1026 messaggi
  • Sesso:Maschio
  • Abilitā:Adepto

#11 Inviato 03 January 2023 - 14:55 PM

Questo script è un po'... meh...
 
L'effetto è carino e fa risparmiare (neanche tantissimo) tempo, ma personalmente non lo userei.
Non è scritto benissimo e in particolare la funzione "riposiziona" può dare problemi. E infatti è quella che fa crashare tutto quando aggiungi la modifica del terrain tag.
In pratica lo script così com'è funziona il 99,9% delle volte, ma in mappe particolari (che nella pratica probabilmente non verrebbero mai create, ma sai, la legge di Murphy...) può crashare. Aggiungendo il controllo sul terrain tag la percentuale si abbassa drasticamente e vedi crash continui. La cosa è indipendente dal numero di tag scelto.
 
Aggiungo una spiegazione pallosa e dettagliata perché non ho di meglio da fare nella vita...
 
Nella funzione "riposiziona" c'è sta roba:

case rand(3)
when 0
  r_x = $game_map.display_x + rand(21)*128 - 128*3
  r_y = $game_map.display_y - 128*3
when 1
  r_x = $game_map.display_x + rand(21)*128 - 128*3
  r_y = $game_map.display_y + 2176 + 128*3
when 2
  r_x = $game_map.display_x - 128*3
  r_y = $game_map.display_y + rand(16)*128 - 128*3
when 3
  r_x = $game_map.display_x + 2816 + 128*3
  r_y = $game_map.display_y + rand(16)*128 - 128*3
end
x = r_x / 128
y = r_y / 128
if $game_map.passable?(x, y, 0)
  @real_x = r_x
  @real_y = r_y
  @x = x
  @y = y
else
  riposiziona
end

dove in pratica la funzione richiama se stessa finché non trova un tile passabile in cui far comparire il passante. Se la ricerca di questo tile passabile va troppo per le lunghe, l'applicazione si stufa, s'incazza e ti sbatte fuori. Finché controlli solo la passabilità del tile, prima o poi ne troverai uno, ma se in più gli dici che deve avere anche un particolare tag, la cosa si complica.
Il problema probabilmente è dovuto a quei calcoli di r_x e r_y, con quei valori un po' forzati, e di cui non ho avuto (e non ho) voglia di entrare nel merito.
 
Oltre a questo, che è il problema principale, va anche a sovrascrivere il metodo "update" di Game_Character. Sarebbe stato meglio un alias, per compatibilità con eventuali altri script.


Giochi completi

----------------------------------------------------------------------------------------------------------------------------------------

rha2Trr.png

[SHORT] ELYON 5 --> http://www.rpg2s.net...15full-elyon-5/

 

Progetti in corso

----------------------------------------------------------------------------------------------------------------------------------------

5KdJ3fW.png

White Crow --> http://www.rpg2s.net...845-white-crow/


    Louie
  • Utente avanzato

  • Utenti
  • Rens: 29
  • 0
  • StellettaStellettaStelletta
  • 432 messaggi
  • Sesso:Maschio
  • Provenienza:Pavia
  • Abilitā:Adepto

#12 Inviato 06 January 2023 - 11:07 AM

Capisco, quindi sostanzialmente andrebbe rivisitato. Immaginavo che si appoggiasse ad altri metodi e che questo avrebbe cambiato le cose. 
Alla fine ho cambiato rotta sul progetto, lo farò in MV anche per questioni grafiche (anziché impazzire sul tileset editing disegnerò tutto a mano e XP non mostra i parallax in editor. Mettiamoci una pietra sopra, XP è sempre stato il mio preferito ma dopo 20 anni comincio a vederne i limiti). E' stato interessante provarci però.
Questo script l'ho usato per anni ed è sempre stato molto comodo, ma ecco che quando si prova a andare oltre non lo permette, e di conseguenza è brutto dover essere assoggettati a uno script. Van bene i compromessi, ma non quando sono così estremi.
Grazie del tuo tempo, ickh!


>>>>>>>>>>>>>>>   Main developer @ Emptyworld_games!   <<<<<<<<<<<<<<<<<

PROGETTO IN CORSO:
Clairvoyant: Ad AEthera Fides

https://www.rpg2s.ne...48-clairvoyant/

IL MIO ULTIMO GIOCO TEXT-BASED!
As the rain sings

https://emptyworld-games.itch.io/atrs


I miei giochi completi:

https://emptyworld-games.itch.io/


Pls vieni a trovarmi sul web: 

https://linktr.ee/emptyworld
 


    Testament
  • Il Custode della Memoria

  • Utenti Speciali
  • Rens: 1141
  • 51
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 12366 messaggi
  • Sesso:Maschio
  • Provenienza:Firenze
  • Abilitā:Esperto


#13 Inviato 06 January 2023 - 17:22 PM

Tutto vero, è una funzione ricorsiva che si richiama per un tot prima di mandarsi a fanculo, ma l'aggiunta di 1 terrain tag è per far sì che NON capiti su quel singolo terrain tag, che identifica una passerella di quanti? 10 tiles su una mappa di almeno 4 schermate...

 

Dubito che ricorsivamente, in una situazione del genere, vada a insistere sempre e solo su quei 10 tiles su 1200. Cioè, proprio sfiga eh.


183.png
donatePQ.gif bYridanSiBEi27EwrQBOKvYB04IgpCwL27xIfmrh FBnono.gif





  • Feed RSS