qna_rh
Thread Id: 19591
Thread Name: ¿Que función tiene el comando call?
#0
crolax 22669
Pues eso, he visto mucho tutoriales sobre scripts y ninguno dice para que sirve el comando call y me gustaría saber que función hace
#1
cosarara97 12296
Llama a un sub-script para luego volver.

Script_1Script_2
msgbox @asdf -----> msgbox @asdf3
callstd 6 / callstd 6
call Script_2 ---------- /-- return
msgbox @asdf2 <------------
callstd 6
end

El orden de las cajas de texto sería @asdf1 @asdf3 @asdf2.
Ah, y algo que mucha gente no sabe es que con el callstd también estamos haciendo un call a la rutina de output de texto estandard. También hay el comando jumpstd/gotostd, con el que no volvemos y por lo tanto acaba el script.
#2
crolax 22669
y por ejemplo hago un yes/no y quiero que al decir no, vuelva a preguntar. Tendría que poner un call?
#3
cosarara97 12296
Nop, porque lo que estarías haciendo es un bucle, así que no llamas ni vuelves de una subrutina:
(pseudocódigo)
@asdf <-----------\
pregunta |
if no goto @asdf --/
msgbox @has_dicho_que_si
#4
crolax 22669
y entonces, que cosas se pueden hacer con el comando call?
#5
cosarara97 12296
Sabes lo que hace el comando, ahora usarlo de un modo u otro es tu trabajo. Arriba te he dado un ejemplo.
#6
Tito Sayer301 26309
Vale, un uso muy bueno es para los script de gatillo que haya que tener varios juntos. Como cuando entras al laboratorio y coges y tu pokemon en cualquier juego, que cuando intentas salir luchas.

Pues por ejemplo tienes 3 scripts de estos juntos para tapar un pasillo y que pases por donde pases, se ejecute el script.
Si pones un applymovement tendrá que ser diferente según cual de los gatillos hayas pulsado, pero lo que te dice siempre es lo mismo, la pelea tambien.

Entonces para no crear en cada script el dialogo la pelea y toda la historio y ocupar mucho espacio.
Mucho mejor creas la charla y la batalla en un script.
y en los script de gatillo les pones los applymovement y luego que llamen al script de la charla y la batalla.

Quizás suene algo raro explicado pero no se hacerlo mejor. Pero básicamente te sirve para ahorrar espacio.