Pon una condicion despues de la comprobación.
Es decir
checkflag 0xflag // comprueba si la flag que hayas colocado está activada
if 0x1 goto 0xoffset // Si está activada, irá a otro offset(donde habrá otro script, por ejemplo un msgbox deseandote buena suerte...
??? <-- continua el script
(lo que va detrás de los "//" son comentarios mios...)
Así que tu script debería quedar así...
'---------------
#org 0x1BB9C1
faceplayer
msgbox 0x871A6A0 MSG_KEEPOPEN '"OAK: ¡[player]!\n¿Qué haces tu por..."
givepokemon 0x1 0x5 0x0 0x0 0x0 0x0
setflag 0x828
warp 0x4 0x3 0x0 0x0 0x0
end
'---------
' Strings
'---------
#org 0x71A6A0
= OAK: ¡[player]!\n¿Qué haces tu por aquí?\lNo deverías andar por esta cueva\les muy peligroso ya que hay unos\lhombres malvados intentandose\lapoderar del pokémon que surca\llos cielos de esta región.\ltoma este pokémon es de mi amigo\lserbal de la región de Shinnoh.\lVen, te enseñaré algo.
tu script deberia quedar así, sin checkflag ni nada, puesto que luego hay un warp, y al asignarle una variable (que se comporta en este caso como flag) al mini, este desaparecerá i dará como imposible que el script se vuelva a ejecutar.
Ah, y has de mirarte bien cual es la flag que activa el givepokemon, en rubí es la 0x800, en fr creo que es la 0x828 pero no estoy muy seguro.