Ho un problemuccio. Sto lavorando a uno script per calcolare la distanza dell'eroe da un certo evento, e in base a quella aumentare il valore di una variabile. Tipo: più ti allontani più ti spaventi (e magari muori).
Ho fatto un frankenstain di script presi dalla rete, e la mia comprensione di ruby è tipo... ... ......bassa? Il problema è che sono abituato a far saltare fuori messaggi d'errore terribili ogni volta che metto mano agli script, e invece stavolta fila tutto liscio. SOlo che fila tutto liscio solo per il primo passo, poi smette di funzionare.
Questo è lo script, incollato dentro a Game_Map dopo il setup del mapID.
#---------------------------------------------------------
# Calcola distanza tra un evento e l'eroe
# ---------------------------------------------------------
def getDistance(id)
return\
Math.sqrt(($game_player.x - @events[id].x) * ($game_player.x - @events[id].x)\
+($game_player.y - @events[id].y) * ($game_player.y - @events[id].y))
end
# ------------------------------------------------------
# Aumenta valore di una Variabile a seconda della distanza
# ------------------------------------------------------
def playDistanceAudio(id, idv)
dist = $game_map.getDistance(id)
if (dist>1)
$game_variables[idv] = +1
elsif (dist>2)
$game_variables[idv] = +1
elsif (dist>3)
$game_variables[idv] = +1
elsif (dist>4)
$game_variables[idv] = +1
elsif (dist>5)
$game_variables[idv] = +1
elsif (dist>6)
$game_variables[idv] = +1
elsif (dist>7)
$game_variables[idv] = +1
elsif (dist>8)
$game_variables[idv] = +1
elsif (dist>9)
$game_variables[idv] = +1
elsif (dist>10)
$game_variables[idv] = +1
elsif (dist>11)
$game_variables[idv] = +1
elsif (dist>12)
$game_variables[idv] = +1
else $game_variables[idv] = +0
end
end
E questo il call script: (messo in un processo parallelo)
$game_map.editVariableWithDistance(1,1)
Come dicevo, funziona per il primo passo, se mi allontano più di una casella mi aumenta di 1 la variabile, e se torno indietro l'azzera di nuovo, ma per le distanze maggiori di uno non funziona più. Come mai? ;_____;
Se qualche anima pia sapesse rispondermi mi farebbe un gran favore ^^ E, già che è molto pia, sarebbe possibile fare in modo che allontanandosi dall'evento la variabile cresca, ma tornando sui propri passi non venga toccata?
Praticamente se ti allontani dal punto x ti spaventi, fino al massimo di 12 passi dove muori, ma se torni indietro non dovresti spaventarti di più (come invece succederebbe con lo script così com'è)
Ma quello per me è come fisica quantistica. Ma che dico? È come algebra, io non capisco nemmeno l'algebra!
Appunto per guardian: ho provato a farlo a eventi, ma nell'XP non c'è la funzione "memorizza posizione" su cui si basava tutto il mio ragionamento >:@
La soluzione altrimenti è tempestare la mappa di eventi calpestabili che fanno esattamente quello che voglio io, ma è poco elegante ^^" (e ancor meno efficiente)
Edited by Sin
Romanzi d'avventura per ragazzi/e dai 13 ai 100 anni su Amazon e IBS
Question
Sin
Ho un problemuccio.
Sto lavorando a uno script per calcolare la distanza dell'eroe da un certo evento, e in base a quella aumentare il valore di una variabile.
Tipo: più ti allontani più ti spaventi (e magari muori).
Ho fatto un frankenstain di script presi dalla rete, e la mia comprensione di ruby è tipo... ... ......bassa?
Il problema è che sono abituato a far saltare fuori messaggi d'errore terribili ogni volta che metto mano agli script, e invece stavolta fila tutto liscio. SOlo che fila tutto liscio solo per il primo passo, poi smette di funzionare.
Questo è lo script, incollato dentro a Game_Map dopo il setup del mapID.
#--------------------------------------------------------- # Calcola distanza tra un evento e l'eroe # --------------------------------------------------------- def getDistance(id) return\ Math.sqrt(($game_player.x - @events[id].x) * ($game_player.x - @events[id].x)\ +($game_player.y - @events[id].y) * ($game_player.y - @events[id].y)) end # ------------------------------------------------------ # Aumenta valore di una Variabile a seconda della distanza # ------------------------------------------------------ def playDistanceAudio(id, idv) dist = $game_map.getDistance(id) if (dist>1) $game_variables[idv] = +1 elsif (dist>2) $game_variables[idv] = +1 elsif (dist>3) $game_variables[idv] = +1 elsif (dist>4) $game_variables[idv] = +1 elsif (dist>5) $game_variables[idv] = +1 elsif (dist>6) $game_variables[idv] = +1 elsif (dist>7) $game_variables[idv] = +1 elsif (dist>8) $game_variables[idv] = +1 elsif (dist>9) $game_variables[idv] = +1 elsif (dist>10) $game_variables[idv] = +1 elsif (dist>11) $game_variables[idv] = +1 elsif (dist>12) $game_variables[idv] = +1 else $game_variables[idv] = +0 end endE questo il call script: (messo in un processo parallelo)
Come dicevo, funziona per il primo passo, se mi allontano più di una casella mi aumenta di 1 la variabile, e se torno indietro l'azzera di nuovo, ma per le distanze maggiori di uno non funziona più.
Come mai? ;_____;
Se qualche anima pia sapesse rispondermi mi farebbe un gran favore ^^
E, già che è molto pia, sarebbe possibile fare in modo che allontanandosi dall'evento la variabile cresca, ma tornando sui propri passi non venga toccata?
Praticamente se ti allontani dal punto x ti spaventi, fino al massimo di 12 passi dove muori, ma se torni indietro non dovresti spaventarti di più (come invece succederebbe con lo script così com'è)
Ma quello per me è come fisica quantistica. Ma che dico? È come algebra, io non capisco nemmeno l'algebra!
Appunto per guardian: ho provato a farlo a eventi, ma nell'XP non c'è la funzione "memorizza posizione" su cui si basava tutto il mio ragionamento >:@
La soluzione altrimenti è tempestare la mappa di eventi calpestabili che fanno esattamente quello che voglio io, ma è poco elegante ^^" (e ancor meno efficiente)
Edited by SinRomanzi d'avventura per ragazzi/e dai 13 ai 100 anni
Rpg2S Short Game Contest 2:
Link to comment
Share on other sites
11 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now