qna_rh
Thread Id: 12976
Thread Name: Duda de Script en Ruby.
Tengo un problema con un Script de Pokemon Ruby (ENG).
Yo creo mi script paso por encima en el juego y funciona bien :D , mi problema es: si vuelvo a pasar por encima se repite :dodgy: , y lo que yo quiero es:
Paso por encima se activa y ya al pasar que no haga nada.
¿Ay algun comando para eso? ¿:.
si necesitais el script es este:
'---------------
#org 0x6DDD41
special 0x0
if 0x1 goto 0x86DDDA5
end
'---------------
#org 0x6DDDA5
lock
faceplayer
setflag 0x2000
msgbox 0x86DDE09 MSG_FACE '"EEEEEYYYY!!!\pTronco que haces tu ..."
clearflag 0x2000
hidesprite 0x11
release
end
'---------
' Strings
'---------
#org 0x6DDE09
= EEEEEYYYY!!!\p... Y mas Texto... :s
Si podriais ayudarme os lo agradeceria.
Hola amigo.
Bueno, no te lo voy a resolver, porque si no lo haces por ti solo, es como no aprender nada...
Mírate este tutorial: http://wahackforo.com/t-Tutorial-sobre-Scripts
Es realmente bueno, y yo hace tiempo lo usé para refrescarme la memoria.
Mucha suerte. (Ni que decir que mires el apartado de las flags para arreglar tu problema.) xD
Suerte!
Ángel.Hao~, gracias por el tuto pero por mucho que lo intento no lo consigo, o podrias decirme donde esta el fallo esque yebo 2 horas y media intentandolo y no soy capaz, porfavor dime donde esta el fallo que me estan entrando gaas de saltar por la ventana :XD:
'---------------
#org 0x6DDD41
special 0x0
if 0x1 goto 0x86DDDA5
end
'---------------
#org 0x6DDDA5
lock
faceplayer
checkflag 0x2000
msgbox 0x86DDE09 MSG_FACE '"EEEEEYYYY!!!\pTronco que haces tu ..."
clearflag 0x2000
hidesprite 0x11
clearflag 0x2000
release
end
Prueba así. ^^
Pues no me funciona.....
Entonces prueba:
'---------------
#org 0x6DDD41
checkflag 0x2000
special 0x0
if 0x1 goto 0x86DDDA5
clearflag 0x2000
release
end
'---------------
#org 0x6DDDA5
lock
faceplayer
msgbox 0x86DDE09 MSG_FACE '"EEEEEYYYY!!!\pTronco que haces tu ..."
hidesprite 0x11
release
end
Prueba así.
Por cierto, muevan el tema a DUDAS.
antes al pasar por el script reaccionaba pero ahora paso por encima y no pasa nada no se si me esta fallando el AM o El ROM. porque tendria que reaccionar.
voy a probar en la copia de seguridad que tengo por aqui.
Edito: No me funciona, creo que de algun modo he cascado el AM o el XSE en la tarde de hoy porque ago m script de antes y tampoco funciona, probare el script en mi otro ordenador mañana, espero quefuncione.
Ambos estan mal... utiliza esta estructura...
'---------------
#org 0x6DDD41
lockall
faceplayer
checkflag 0x2000
if 0x1 goto 0x86DDDA5
releaseall
end
'---------------
#org 0x6DDDA5
lockall
faceplayer
msgbox 0x86DDE09
pause 0x15
hidesprite 0x11 (Aqui no se si estes bien... si en el AM dice Sprite "11" recuerda convertirlo a HEX que seria "B" osea seria hidesprite 0xB)
setflag 0x2000
releaseall
end
'---------
' Strings
'---------
#org 0x6DDE09
= EEEEEYYYY!!!\p... Y mas Texto... Confused
Si lo que quieres es que ya no se repita, no se para que usar clearflag... clear lo que hace es volverla a activar... como si nunca la hubieras activado... y el setflag es apagarla...
Seguro te funcionará ahora... recuerda que si es un script de gatillo tienes que configurar el simbolo de "S" en el Advance map y ponerle el Offset :)
Pako Master el 11 ya es hex. 11 = 17 (el sprite es 17)
EDITO: Pero no se lo que pasa, ahora hago n script, el que sea, y no funciona. no se que pasa, me voy a vlver loco.
EDITO2: Con tu estructura he conseguido algo, no es lo que yo queria pero parece que me ha funcionado.
Has puesto en el Advance Map, en el script:
Desconocido: 0003
Var number: (La que quieras por ejemplo 5040 o 400C)
Solo tienes que cambiar eso.
Iniciado por Ángel.Hao~
Has puesto en el Advance Map, en el script:
Desconocido: 0003
Var number: (La que quieras por ejemplo 5040 o 400C)
Solo tienes que cambiar eso.
si, claro, soy nobato pero yebo repasando scripts mas de 2 meses xD.
lo que pasa es que con las flags muchas veces no me aclaro bien.
pero con la estructura de el amigo Paco ya he conseguido algo.
No entiendo que tienes mal o porque no te funcione si la estructura que te puse es perfecta... en lugar del hidesprite... te recomendaria la movesprite... es mas efectiva
esque al pasar por encima del script no pasa nada pero lo he echo que sea hablando con el monigote.
PD: he intentado hacer un script (S Verde) y al pasar por encima no reacciona, no se lo que passa[hr]
Pako Master con tu estructura me van lo scrips (poniendolos en gente no pisandolos):
este por ejemplo lo he echo siguiendo un poco tu estructura y funciona de vicio:
'---------------
#org 0x6DE927
lockall
faceplayer
checkflag 0x2103
checkflag 0x2104
special 0x0
pause 0x1E
applymovement 0x4 0x86DEB7F
waitmovement 0x4
msgbox 0x86DE9EF MSG_FACE '"[player]: ¿Eing? esta vacia...\p\n..."
hidesprite 0x5
setflag 0x2104
applymovement MOVE_PLAYER 0x86DE98B
waitmovement 0xFF
pause 0x1E
applymovement 0x4 0x86DEBE3
waitmovement 0x4
cry 0x11E 0x0
applymovement MOVE_PLAYER 0x86DEB1B
waitmovement 0xFF
msgbox 0x86DEA53 MSG_FACE '"[player]: ¡Un DarkAgumon!"
hidesprite 0x4
setflag 0x2103
wildbattle 0x11E 0xB 0x0
loadpointer 0x0 0x3030347
return
'---------
' Strings
'---------
#org 0x6DE9EF
= [player]: ¿Eing? esta vacia...\p\n¡!\p¡Que ha pasado! ¡He notado un\naumento de energia!...
#org 0x6DEA53
= [player]: ¡Un DarkAgumon!
'-----------
' Movements
'-----------
#org 0x6DEB7F
#raw 0x9 'Step Up (Normal)
#raw 0x9 'Step Up (Normal)
#raw 0x9 'Step Up (Normal)
#raw 0x9 'Step Up (Normal)
#raw 0x2 'Face Left
#raw 0x56 'Exclamation Mark (!)
#raw 0xFE 'End of Movements
#org 0x6DE98B
#raw 0x3 'Face Right
#raw 0x3 'Face Right
#raw 0x3 'Face Right
#raw 0x3 'Face Right
#raw 0x3 'Face Right
#raw 0x2 'Face Left
#raw 0x2 'Face Left
#raw 0x2 'Face Left
#raw 0x2 'Face Left
#raw 0x2 'Face Left
#raw 0x1 'Face Up
#raw 0x1 'Face Up
#raw 0x1 'Face Up
#raw 0x1 'Face Up
#raw 0x1 'Face Up
#raw 0x0 'Face Down
#raw 0x0 'Face Down
#raw 0x0 'Face Down
#raw 0x0 'Face Down
#raw 0x0 'Face Down
#raw 0x3 'Face Right
#raw 0x3 'Face Right
#raw 0x3 'Face Right
#raw 0x3 'Face Right
#raw 0x3 'Face Right
#raw 0x0 'Face Down
#raw 0x0 'Face Down
#raw 0x0 'Face Down
#raw 0x0 'Face Down
#raw 0x0 'Face Down
#raw 0xFE 'End of Movements
#org 0x6DEBE3
#raw 0xA 'Step Left (Normal)
#raw 0xA 'Step Left (Normal)
#raw 0xA 'Step Left (Normal)
#raw 0xA 'Step Left (Normal)
#raw 0xA 'Step Left (Normal)
#raw 0xFE 'End of Movements
#org 0x6DEB1B
#raw 0x56 'Exclamation Mark (!)
#raw 0x3 'Face Right
#raw 0xFE 'End of Movements[hr]Ya que he echo el post, quisiera preguntar si alguien sabe cual es el comando para que te den ls zapatillas, esque me cargue los scrips, jeje y quisiera saber cual es el comando.
Ya nada, ya he descubierto que es setflag 0x860
Javi4315: El multi-posting no está permitido en el foro. Si quieres añadir más información, puedes hacer uso de la opción "Editar" para modificar el mensaje anterior. Ten más cuidado la próxima vez.
A ver.. si en advance map al gatillo (los scripts de pisar) le pones una variable que no está usada (400C x ejemplo), y luego en var Value en advance map pones 0000 (osea se fija q el valor de esa variable sea 0, si es 0, entonces el script funciona, al no ser usada es 0 entonces tendría q funcionar), entonces el script obligatoriamente tendría q funcionar, así que revisa que no estés usando una variable que tenga otro valor.
Luego, no se trata de aprenderte de memoria estructuras, si no entender... La mejor forma que tienes de entender es mirando tutoriales, y aun más importante, revisar cada script de ruby, y modificarlos para ver que pasa.
Te explicaré como funcionan las flags... Las flags son variables booleanas, osea variables que solo pueden adquirir dos valores, que son el valor de verdadero (1) o falso (0).
Las flags por defecto si no están usadas empiezan en falso (0).
Entonces ¿Qué es lo que pasa?
Tu las puedes utilizar para condicionar cuando quieres que ocurra una cosa, y cuando quieres que ocurra otra.
Para poner una flag a valor verdadero, el comando que utilizas es setflag, para pasarlo a falso, es clearflag, y para fijarte si una flag tiene determinado valor, lo que utilizas es el checkflag.
En el checkflag también tienes que revisar que valor es el que estás revisando..
Por ejemplo, si quieres que si la flag está en falso (0), recibas un pokemon, y si está en 1, no pase nada, entonces lo que tienes que hacer es:
#org 0xscript1
checkflag 0xflag
if 0x1 goto 0xscript2
givepokemon 0x .................................................
setflag 0x0flag
end
#org 0xscript2
end
básicamente en este script, empiezas con la flag en 0, entonces la primera vez q se ejecuta recibes al pokemon, pero además la flag pasa a tener el valor 1, entonces cuando se vuelva a ejecutar el script este al chequear la flag, verá que es 1 el valor (if 0x1..), entonces irá al script2...
Espero te sirva para entender como funcionan las flags, pero recuerda, nadie te puede enseñar todo, y no existen estructuras para nada, hay muchísimas formas de hacer lo mismo, así q tan solo investiga.
Gracias Xiros ya comprendo mucho mejor las Flags, porque ya sabia que eran como interruptores, pero no sabia como darle correctamente al interruptor jeje.
Pues yo sí critico el script de Neos xD
He comentado (puesto con un " ' " delante) las lineas que sobran
'---------------
#org 0x6DDD41
lockall
' faceplayer - estamos en un script de nivel
checkflag 0x2000
if 0x0 goto 0x86DDDA5 ' Normalmente la gente pone un if 0x1 y un goto a un releaseall end,
' pero tu lo has hecho al revés
releaseall
end
'---------------
#org 0x6DDDA5
' lockall - has puesto uno antes
' faceplayer - estamos en un script de nivel
msgbox 0x86DDE09
pause 0x15
hidesprite 0x11
setflag 0x2000
releaseall
end
'---------
' Strings
'---------
#org 0x6DDE09
= EEEEEYYYY!!!\p... Y mas Texto... Confused
Sobre el gatillo que no funciona. ¿Puedes mandarnos una captura del AM con el gatillo seleccionado?
¿Donde está el gatillo? (En el suelo, en un sitio elevado, en unas escaleras, en el agua, etc.)