Author Id: 13374 Author Name: Javi4315♪ Post Content: Sé que la mayoría de los hackers usan XSE. Pero hay pocos tutoriales de pokescripts en español, así que lo publicaré yo mismo para ayudar a gente que quiera aprender a utilizarlo y para que, los que sepan lo básico, amplien sus conocimientos. También lo hago con motivo del nuevo programa, advance script (posteado por ~Neon), que según un punto de sus características, soporta el lenguaje de Pokescript y XSE. Sin más preámbulo, aquí está el tutorial. Introducción a pokescript. Lo primero que se debe saber es qué programas utilizaremos, pues son estos (clic en el nombre para descargar): [list] [*][url=http://www.megaupload.com/?d=8FQB639T]Pokescript y pokemon advance[/url] [*][url=http://www.megaupload.com/?d=V4L0338E]Advance map[/url] [*]Bloc de notas [/list] Antes de nada, deben instalar los programas, pero es muy importante que el pokescript y el pokemon advance estén instalados en el mismo directorio (misma carpeta). Para hacer el script tenemos que abrir el bloc de notas y hacerlo ahí. Por ahora sólo debemos saber el funcionamiento de dos comandos: [quote]#org $(pointer)[/quote] Se pondrá al principio y su función es hacer que se ejecute el script. Se debe poner siempre. [quote]end[/quote] Se coloca al final y su función es hacer que el script finalice. También se debe poner siempre. Para compilar el script es muy fácil, es más, esa facilidad es uno de los atractivos de este programa. Podría explicarlo yo mismo, pero lo que quiero es que lo entendáis bien, para ello, pondré un video-tutorial de cómo compilar scripts con pokescript hecho por derv1205: [url=http://www.youtube.com/watch?v=Hu4zXE1u9tg&feature=player_embedded]Video-tutorial[/url] Pointers. Los pointers también se pueden utilizar en XSE según tengo entendido, de cualquier manera, lo explicaré para la gente que no sepa qué son los pointers. Los pointers serán indicados en el tutorial así: $(pointer). Ese (pointer) debemos cambiarlo por una palabra, la que queramos. Es necesario saber que un pointer lo que hará es mandarnos a otro pointer, con lo cual, la palabra que pongamos en sustitución del primer (pointer), también debemos ponerla en el segundo (al que nos envía). Esto puede parecer algo difícil para los que no sepan nada de script, pero cuando apliquemos los pointers, veréis que es muy fácil. También debemos saber que, como muchas otras cosas, los pointers tienen una excepción. En el primer comando, #org $(pointer), el pointer no se encargará de llevarnos a otro pointer, sólo debemos ponerlo para que se asigne el offset núcleo al script. Yo normalmente lo cambio por la palabra "comienzo", tal que me quedaría así: #org $comienzo. Aviso que para los tutoriales utilizaré ese pointer para comenzar. Habladuría. Este script es el más básico. Este tipo de script sirve para que, al hablar con un mini en el juego, nos muestre un mensaje. Utlizaremos estos comandos: [list] [*]lock: su función es bloquear el movimiento del protagonista. Es necesario ponerlo. [*]faceplayer: este comando lo utilizaremos para que el mini nos mire cuando hablamos con él (no es necesario, depende de cómo queramos que sea el script) [*]Release: se encarga de anular el efecto de lock, es decir, le devolverá el movimiento al mini. [/list] Eso son los comandos que utilizaremos para hacer el script de habladuría, pero queda el más importante, el que se encargará de que aparezca el mensaje. Lo añadiremos así: [quote]message $(pointer) $(pointer) 1 = Aquí el mensaje. boxset 6[/quote] Explico, el boxset 6 lo que hará es crear la caja de texto donde irá el mensaje en el juego. Y el (pointer) lo podéis cambiar por lo que queráis, yo lo cambiaré por "1" tal que me quede así: [quote]message $1 $1 1 = Aquí el mensaje. boxset 6[/quote] Hasta aquí, el script quedaría así (es importante fijarse en la colocación, ya que hasta que lo entendáis, deberéis respetarla o puede que no funcione): [quote]#org $comienzo lock faceplayer message $1 $1 1 = Aquí el mensaje. boxset 6 release end[/quote] Ese es el script de habladuría, ya sólo nos falta aprender a escribir el mensaje. Para escribirlo, debemos utilizar estos comandos: \p \n \l El comando \p sirve para añadir un párrafo, el comando \n sirve para añadir una linea que aparecerá auntomaticamente y el comando \l sirve tambíen para añadir una linea que aparecerá cuando pulsemos el botón (por defecto "A"). ¿Qué pasa si no utilizo estos comandos? Si estos comandos no se utilizan, el texto se saldrá del box y abrá partes que no se podrán leer. Aquí tenéis un ejemplo completo: [quote]#org $comienzo lock faceplayer message $1 $1 1 = Este es un script de habladuría.\pNo se olviden de poner los comandos\npara los mensajes o no funcionará\lcorrectamente. boxset 6 release end[/quote] Respuestas sí/no. Esto consiste en un simple escript de habladuría, pero cundo termine el mensaje, nos aparecerá la caja para responder con sí o no. Lo que suceda después dependerá de la respuesta que demos. Lo primero que debemos hacer es un script de habaduría pero debemos poner una pregunta en el mensaje o algo que se pueda responder con sí o no: [quote]#org $comienzo lock faceplayer message $1 $1 1 = ¿Comprendes el tutorial? boxset 6 release end[/quote] Lo que haremos ahora es añadir estos comandos: [list] [*]boxset 5: muestra la caja para responder con sí o no. [*]compare LASTRESULT 1: comprobará si has respondido con sí o con no. [*]if b_(true o false) goto $(pointer): nos enviará a (pointer) dependiendo de la respuesta que demos. [/list] Si ponemos b_true, nos enviará al pointer si respondemos "sí" y si ponemos b_false, nos enviará al pointer si respondemos "no". También podemos poner las dos dependiendo de como queramos que sea el script. Pondré un ejemplo con cada uno de los casos: [spoiler=b_true]#org $comienzo lock faceplayer message $1 $1 1 = ¿Comprendes el tutorial? boxset 5 comapare LASTRESULT 1 if b_true goto $si boxset 6 message $no $no 1 = ¿No?\nPues es muy sencillo. release end #org $si message $si1 $si1 1 = ¡Qué bien! release end[/spoiler] [spoiler=b_false]org $comienzo lock faceplayer message $1 $1 1 = ¿Comprendes el tutorial? boxset 5 comapare LASTRESULT 1 if b_false goto $no boxset 6 message $si $si 1 = ¡Qué bien! release end #org $no message $no1 $no1 1 = ¿No?\nPues es muy sencillo. release end[/spoiler] [spoiler=b_true y b_false]org $comienzo lock faceplayer message $1 $1 1 = ¿Comprendes el tutorial? boxset 5 comapare LASTRESULT 1 if b_true goto $si if b_false goto $no boxset 6 release end #org $si message $si1 $si1 1 = ¡Que bien! release end #org $no message $no1 $no1 1 = ¿No?\nPues es muy sencillo.[/spoiler] Colores en el mensaje. Todos hemos visto en algunos hacks textos en verde o en rojo, por ejemplo. Para añadirlos es muy fácil, basta con poner un código antes del mensaje. Aquí les dejo la lista de colores para ruby y fire red: [spoiler=Colores para ruby]White - \c\h01\h01 Red - \c\h01\h02 Grey - \c\h01\h03 Blue - \c\h01\h04 Black - \c\h01\h09 Pink - \c\h01\h0C Brown - \c\h01\h0D[/spoiler] [spoiler=Colores para fire red]White - \c\h01\h00 Black - \c\h01\h02 Grey - \c\h01\h03 Red - \c\h01\h04 Orange - \c\h01\h05 Dark Green - \c\h01\h06 Cyan - \c\h01\h07 Blue - \c\h01\h08 Light Blue - \c\h01\h09[/spoiler] Esto creo que todos lo sabrán hacer, de todas formas, pondré un ejemplo: [quote]#org $comienzo lock faceplayer message $1 $1 1 = \c\h01\h02Me encanta el color rojo. boxset 6 release end[/quote] Este ejemplo es para poner el color rojo en un mensaje en ruby, pero se hace de la misma forma para cualquier otro color ya sea en ruby o fire red. Otra cosa que debo decir es que, el color negro, no es el color por defecto. Si ponemos un color y queremos que vuelva al color por defecto, simplemente creamos otro mensaje. Pondré un ejemplo: [quote]#org $comienzo lock faceplayer message $1 $1 1 = \c\h01\h02Aquí está el mensaje en color rojo. boxset 6 message $2 $2 1 = Aquí vuelve a su color por defecto. boxset 6 release end[/quote] Flags 1. Las flag son muy importantes. Sin las flags, los scripts se repetirian infinitamente y no podríamos hacer un buen hack, por otro lado, hay funciones de las las flags que son demasiado complicadas para los conocimientos de script que tenemos hasta aquí. Por esa razón, enseñaré en este tutorial lo que debemos saber para continuar y, más abajo (flags 2), explicaré lo que nos falta por aprender de las flags. Las flags se utilizan para que algo sólo ocurra una vez o para que una cosa no ocurra hasta que no haya ocurrido otra. También la utilizaremos para que un personaje desaparezca o para que vuelva a reaparecer. De momento, sólo expicaré cómo hacer que algo pase una sola vez. Antes de seguir, os diré cuales son las flags libres (las flags están en Hex): Desde la 0x200 hasta la 0x29F Desde la 0x500 hasta la 0x79F Desde la 1000 hasta la 109F Imaginemos que queremos que un mini, al hablar con él, nos diga una cosa y las demás veces, nos diga otra. Para que esto suceda, haremos uso de las flags. Lo primero que haré, será poner un script de habladuría sobre el que trabajaremos: [quote]#org $comienzo lock faceplayer message $1 $1 1 = Hola, me llamo maya.\nEncantada de conocerte. boxset 6 release end[/quote] Lo primero que haremos será colocarle el comando checkflag 0x(flag) al principio para que compruebe si la flag está activada. Justo debajo pondremos if 0x1 goto $(pointer) que podría traducirse como "si está activada ir a (pointer)". Es como if b_(true o fase) goto $(pointer) en el script de sí o no pero aplicado a las flags. Hasta el momento, el script quedaría así: [quote]#org $comienzo lock faceplayer checkflag 0x200 (utilizo la primera flag disponible, si ya se ha utilizado, debemos poner otra) if 0x1 goto $despues (He llamado "despues" al (pointer)) message $1 $1 1 = Hola, me llamo maya.\nEncantada de conocerte. boxset 6 release end[/quote] Obviamente, para que nos envíe a $despues, la flag debe activarse. Como queremos que el "Hola, me llamo maya.\nEncantada de conocerte" sólo nos lo diga una vez, activaremos la flag al final del script con el comando setflag 0x(flag). Cómo la flag que estamos comprobando con checkflag es la 200, también es la que debemos activar. Aquí está el ejemplo completo: [quote]#org $comienzo lock faceplayer checkflag 0x200 if 0x1 goto $despues message $1 $1 1 = Hola, me llamo maya.\nEncantada de conocerte. boxset 6 setflag 0x200 release end #org $despues lock faceplayer message $2 $2 1 = ¿Qué tal? boxset 6 release end[/quote] En mi opinión, es bastante sencillo usar las flag. Por si no quedó claro, advierto que cada flag sólo se puede utilizar una vez. [spoiler=Flags especiales para ruby]0x800 - Pokemon Menu 0x801 - Pokedex Menu 0x802 - Pokenav Menu 0x807 - First Badge 0x808 - Second Badge 0x809 - Third Badge 0x80A - Fourth Badge 0x80B - Fifth Badge 0x80C - Sixth Badge 0x80D - Seventh Badge 0x80E - Eighth Badge 0x860 - Running Shoes[/spoiler] [spoiler=Flags especiales para fire red]0x820 - First Badge 0x821 - Second Badge 0x822 - Third Badge 0x823 - Fourth Badge 0x824 - Fifth Badge 0x825 - Sixth Badge 0x826 - Seventh Badge 0x827 - Eighth Badge 0x828 - Pokemon Menu 0x829 - Pokedex Menu 0x82F - Running Shoes[/spoiler] Givepokemon. La función del comando givepokemon es muy simple, hará que recibamos un pokemon. Lo debemos poner así: givepokemon A B C La A la sustituiremos por el pokemon que queremos recibir, es decir, pondremos su número en la pokedex. La B es para el nivel que tendrá. Y la C es para el objetó que llevará (si no queremos que lleve un objeto, ponemos 0). Por ejemplo, si queremos recibir un charmander en el nivel 5 y que lleve consigo una poción, pondremos eso: givepokemon 4 5 13 Para este tipo de script, tenemos que usar una flag especial que se encargará de activar el menú pokemon (0x800 en ruby o 0x828 en fire red). Puesto que ya estamos usando una flag, no tendremos que usar otra para que no se repita. También podemos añadirle el típico sonido de cuando recibes algo poniendo fanfare 0x(sonido), en nuestro caso, el sonido, será el 0x13E. Este comando lo colocaremos después del mensaje que nos informará de que hemos recibido un pokemon. Voy a poner un script de ejemplo para que veáis como queda: [quote]#org $comienzo lock faceplayer checkflag 0x800 if 0x1 goto $despues message $1 $1 1 = Hola, toma este pokemon. boxset 6 fanfare 0x13E message $2 $2 1 = \v\h01 recibió un CHARMANDER. boxset 6 givepokemon 4 5 13 setflag 0x800 release end #org $despues lock faceplayer message $3 $3 1 = ¿Lo estás cuidando bien? boxset 6 release end[/quote] Giveitem. El giveitem es muy parecido al givepokemon, con la diferencia de que recibiremos un objeto en vez de un pokemon. Lo pondremos así: giveitem A B La A la sustituiremos por el objeto que queremos recibir y la B por la cantidad. También podemos acompañar el script con fanfare 0x13E. Pondré un ejemplo imaginándonos que queremos 5 pociones: [quote]#org $comienzo lock faceplayer checkflag 0x200 (si ya la hemos utilizado, ponemos otra) if 0x1 goto $despues message $1 $1 1 = Toma esto. boxset 6 fanfare 0x13E message $2 $2 1 = \v\h01 recibió 5 pokeballs. boxset 6 giveitem 13 5 setflag 0x200 (o la que hayamos utilizado) release end #org $despues lock faceplayer message $3 $3 1 = Utilízalas bien boxset 6 release end[/quote] Ahora que he explicado el givepokemon y el giveitem pondré la lista de pokemon y de items: [spoiler= Pokemon]BULBASAUR 1 IVYSAUR 2 VENUSAUR 3 CHARMANDER 4 CHARMELEON 5 CHARIZARD 6 SQUIRTLE 7 WARTORTLE 8 BLASTOISE 9 CATERPIE 10 METAPOD 11 BUTTERFREE 12 WEEDLE 13 KAKUNA 14 BEEDRILL 15 PIDGEY 16 PIDGEOTTO 17 PIDGEOT 18 RATTATA 19 RATICATE 20 SPEAROW 21 FEAROW 22 EKANS 23 ARBOK 24 PIKACHU 25 RAICHU 26 SANDSHREW 27 SANDSLASH 28 NIDORAN|w| 29 NIDORINA 30 NIDOQUEEN 31 NIDORAN|m| 32 NIDORINO 33 NIDOKING 34 CLEFAIRY 35 CLEFABLE 36 VULPIX 37 NINETALES 38 JIGGLYPUFF 39 WIGGLYTUFF 40 ZUBAT 41 GOLBAT 42 ODDISH 43 GLOOM 44 VILEPLUME 45 PARAS 46 PARASECT 47 VENONAT 48 VENOMOTH 49 DIGLETT 50 DUGTRIO 51 MEOWTH 52 PERSIAN 53 PSYDUCK 54 GOLDUCK 55 MANKEY 56 PRIMEAPE 57 GROWLITHE 58 ARCANINE 59 POLIWAG 60 POLIWHIRL 61 POLIWRATH 62 ABRA 63 KADABRA 64 ALAKAZAM 65 MACHOP 66 MACHOKE 67 MACHAMP 68 BELLSPROUT 69 WEEPINBELL 70 VICTREEBEL 71 TENTACOOL 72 TENTACRUEL 73 GEODUDE 74 GRAVELER 75 GOLEM 76 PONYTA 77 RAPIDASH 78 SLOWPOKE 79 SLOWBRO 80 MAGNEMITE 81 MAGNETON 82 FARFETCH'D 83 DODUO 84 DODRIO 85 SEEL 86 DEWGONG 87 GRIMER 88 MUK 89 SHELLDER 90 CLOYSTER 91 GASTLY 92 HAUNTER 93 GENGAR 94 ONIX 95 DROWZEE 96 HYPNO 97 KRABBY 98 KINGLER 99 VOLTORB 100 ELECTRODE 101 EXEGGCUTE 102 EXEGGUTOR 103 CUBONE 104 MAROWAK 105 HITMONLEE 106 HITMONCHAN 107 LICKITUNG 108 KOFFING 109 WEEZING 110 RHYHORN 111 RHYDON 112 CHANSEY 113 TANGELA 114 KANGASKHAN 115 HORSEA 116 SEADRA 117 GOLDEEN 118 SEAKING 119 STARYU 120 STARMIE 121 MR. MIME 122 SCYTHER 123 JYNX 124 ELECTABUZZ 125 MAGMAR 126 PINSIR 127 TAUROS 128 MAGIKARP 129 GYARADOS 130 LAPRAS 131 DITTO 132 EEVEE 133 VAPOREON 134 JOLTEON 135 FLAREON 136 PORYGON 137 OMANYTE 138 OMASTAR 139 KABUTO 140 KABUTOPS 141 AERODACTYL 142 SNORLAX 143 ARTICUNO 144 ZAPDOS 145 MOLTRES 146 DRATINI 147 DRAGONAIR 148 DRAGONITE 149 MEWTWO 150 MEW 151 CHIKORITA 152 BAYLEEF 153 MEGANIUM 154 CYNDAQUIL 155 QUILAVA 156 TYPHLOSION 157 TOTODILE 158 CROCONAW 159 FERALIGATR 160 SENTRET 161 FURRET 162 HOOTHOOT 163 NOCTOWL 164 LEDYBA 165 LEDIAN 166 SPINARAK 167 ARIADOS 168 CROBAT 169 CHINCHOU 170 LANTURN 171 PICHU 172 CLEFFA 173 IGGLYBUFF 174 TOGEPI 175 TOGETIC 176 NATU 177 XATU 178 MAREEP 179 FLAAFFY 180 AMPHAROS 181 BELLOSSOM 182 MARILL 183 AZUMARILL 184 SUDOWOODO 185 POLITOED 186 HOPPIP 187 SKIPLOOM 188 JUMPLUFF 189 AIPOM 190 SUNKERN 191 SUNFLORA 192 YANMA 193 WOOPER 194 QUAGSIRE 195 ESPEON 196 UMBREON 197 MURKROW 198 SLOWKING 199 MISDREAVUS 200 UNOWN 201 WOBBUFFET 202 GIRAFARIG 203 PINECO 204 FORRETRESS 205 DUNSPARCE 206 GLIGAR 207 STEELIX 208 SNUBBULL 209 GRANBULL 210 QWILFISH 211 SCIZOR 212 SHUCKLE 213 HERACROSS 214 SNEASEL 215 TEDDIURSA 216 URSARING 217 SLUGMA 218 MAGCARGO 219 SWINUB 220 PILOSWINE 221 CORSOLA 222 REMORAID 223 OCTILLERY 224 DELIBIRD 225 MANTINE 226 SKARMORY 227 HOUNDOUR 228 HOUNDOOM 229 KINGDRA 230 PHANPY 231 DONPHAN 232 PORYGON2 233 STANTLER 234 SMEARGLE 235 TYROGUE 236 HITMONTOP 237 SMOOCHUM 238 ELEKID 239 MAGBY 240 MILTANK 241 BLISSEY 242 RAIKOU 243 ENTEI 244 SUICUNE 245 LARVITAR 246 PUPITAR 247 TYRANITAR 248 LUGIA 249 HO-OH 250 CELEBI 251 TREECKO 277 GROVYLE 278 SCEPTILE 279 TORCHIC 280 COMBUSKEN 281 BLAZIKEN 282 MUDKIP 283 MARSHTOMP 284 SWAMPERT 285 POOCHYENA 286 MIGHTYENA 287 ZIGZAGOON 288 LINOONE 289 WURMPLE 290 SILCOON 291 BEAUTIFLY 292 CASCOON 293 DUSTOX 294 LOTAD 295 LOMBRE 296 LUDICOLO 297 SEEDOT 298 NUZLEAF 299 SHIFTRY 300 NINCADA 301 NINJASK 302 SHEDINJA 303 TAILLOW 304 SWELLOW 305 SHROOMISH 306 BRELOOM 307 SPINDA 308 WINGULL 309 PELIPPER 310 SURSKIT 311 MASQUERAIN 312 WAILMER 313 WAILORD 314 SKITTY 315 DELCATTY 316 KECLEON 317 BALTOY 318 CLAYDOL 319 NOSEPASS 320 TORKOAL 321 SABLEYE 322 BARBOACH 323 WHISCASH 324 LUVDISC 325 CORPHISH 326 CRAWDAUNT 327 FEEBAS 328 MILOTIC 329 CARVANHA 330 SHARPEDO 331 TRAPINCH 332 VIBRAVA 333 FLYGON 334 MAKUHITA 335 HARIYAMA 336 ELECTRIKE 337 MANECTRIC 338 NUMEL 339 CAMERUPT 340 SPHEAL 341 SEALEO 342 WALREIN 343 CACNEA 344 CACTURNE 345 SNORUNT 346 GLALIE 347 LUNATONE 348 SOLROCK 349 AZURILL 350 SPOINK 351 GRUMPIG 352 PLUSLE 353 MINUN 354 MAWILE 355 MEDITITE 356 MEDICHAM 357 SWABLU 358 ALTARIA 359 WYNAUT 360 DUSKULL 361 DUSCLOPS 362 ROSELIA 363 SLAKOTH 364 VIGOROTH 365 SLAKING 366 GULPIN 367 SWALOT 368 TROPIUS 369 WHISMUR 370 LOUDRED 371 EXPLOUD 372 CLAMPERL 373 HUNTAIL 374 GOREBYSS 375 ABSOL 376 SHUPPET 377 BANETTE 378 SEVIPER 379 ZANGOOSE 380 RELICANTH 381 ARON 382 LAIRON 383 AGGRON 384 CASTFORM 385 VOLBEAT 386 ILLUMISE 387 LILEEP 388 CRADILY 389 ANORITH 390 ARMALDO 391 RALTS 392 KIRLIA 393 GARDEVOIR 394 BAGON 395 SHELGON 396 SALAMENCE 397 BELDUM 398 METANG 399 METAGROSS 400 REGIROCK 401 REGICE 402 REGISTEEL 403 KYOGRE 404 GROUDON 405 RAYQUAZA 406 LATIAS 407 LATIOS 408 JIRACHI 409 DEOXYS 410 CHIMECHO 411[/spoiler] [spoiler=items]Master Ball 1 Ultra Ball 2 Great Ball 3 Poké Ball 4 Safari Ball 5 Net Ball 6 Dive Ball 7 Nest Ball 8 Repeat Ball 9 Timer Ball 10 Luxury Ball 11 Premier Ball 12 Potion 13 Antidote 14 Burn Heal 15 Ice Heal 16 Awakening 17 Parlyz Heal 18 Full Restore 19 Max Potion 20 Hyper Potion 21 Super Potion 22 Full Heal 23 Revive 24 Max Revive 25 Fresh Water 26 Soda Pop 27 Lemonade 28 Moomoo Milk 29 Energypowder 30 Energy Root 31 Heal Powder 32 Revival Herb 33 Ether 34 Max Ether 35 Elixir 36 Max Elixir 37 Lava Cookie 38 Blue Flute 39 Yellow Flute 40 Red Flute 41 Black Flute 42 White Flute 43 Berry Juice 44 Sacred Ash 45 Shoal Salt 46 Shoal Shell 47 Red Shard 48 Blue Shard 49 Yellow Shard 50 Green Shard 51 HP Up 63 Protein 64 Iron 65 Carbos 66 Calcium 67 Rare Candy 68 PP Up 69 Zinc 70 PP Max 71 Guard Spec. 73 Dire Hit 74 X Attack 75 X Defend 76 X Speed 77 X Accuracy 78 X Special 79 Poké Doll 80 Fluffy Tail 81 Super Repel 83 Max Repel 84 Escape Rope 85 Repel 86 Sun Stone 93 Moon Stone 94 Fire Stone 95 Thunderstone 96 Water Stone 97 Leaf Stone 98 Tinymushroom 103 Big Mushroom 104 Pearl 106 Big Pearl 107 Stardust 108 Star Piece 109 Nugget 110 Heart Scale 111 Orange Mail 121 Harbor Mail 122 Glitter Mail 123 Mech Mail 124 Wood Mail 125 Wave Mail 126 Bead Mail 127 Shadow Mail 128 Tropic Mail 129 Dream Mail 130 Fab Mail 131 Retro Mail 132 Cheri Berry 133 Chesto Berry 134 Pecha Berry 135 Rawst Berry 136 Aspear Berry 137 Leppa Berry 138 Oran Berry 139 Persim Berry 140 Lum Berry 141 Sitrus Berry 142 Figy Berry 143 Wiki Berry 144 Mago Berry 145 Aguav Berry 146 Iapapa Berry 147 Razz Berry 148 Bluk Berry 149 Nanab Berry 150 Wepear Berry 151 Pinap Berry 152 Pomeg Berry 153 Kelpsy Berry 154 Qualot Berry 155 Hondew Berry 156 Grepa Berry 157 Tamato Berry 158 Cornn Berry 159 Magost Berry 160 Rabuta Berry 161 Nomel Berry 162 Spelon Berry 163 Pamtre Berry 164 Watmel Berry 165 Durin Berry 166 Belue Berry 167 Liechi Berry 168 Ganlon Berry 169 Salac Berry 170 Petaya Berry 171 Apicot Berry 172 Lansat Berry 173 Starf Berry 174 Enigma Berry 175 Brightpowder 179 White Herb 180 Macho Brace 181 Exp. Share 182 Quick Claw 183 Soothe Bell 184 Mental Herb 185 Choice Band 186 King's Rock 187 Silverpowder 188 Amulet Coin 189 Cleanse Tag 190 Soul Dew 191 Deepseatooth 192 Deepseascale 193 Smoke Ball 194 Everstone 195 Focus Band 196 Lucky Egg 197 Scope Lens 198 Metal Coat 199 Leftovers 200 Dragon Scale 201 Light Ball 202 Soft Sand 203 Hard Stone 204 Miracle Seed 205 Blackglasses 206 Black Belt 207 Magnet 208 Mystic Water 209 Sharp Beak 210 Poison Barb 211 Nevermeltice 212 Spell Tag 213 Twistedspoon 214 Charcoal 215 Dragon Fang 216 Silk Scarf 217 Up-grade 218 Shell Bell 219 Sea Incense 220 Lax Incense 221 Lucky Punch 222 Metal Powder 223 Thick Club 224 Stick 225 Red Scarf 254 Blue Scarf 255 Pink Scarf 256 Green Scarf 257 Yellow Scarf 258 Mach Bike 259 Coin Case 260 Itemfinder 261 Old Rod 262 Good Rod 263 Super Rod 264 S.S. Ticket 265 Contest Pass 266 Wailmer Pail 268 Devon Goods 269 Soot Sack 270 Basement Key 271 Acro Bike 272 PokéBlock Case 273 Letter 274 Eon Ticket 275 Red Orb 276 Blue Orb 277 Scanner 278 Go-goggles 279 Meteorite 280 Rm. 1 Key 281 Rm. 2 Key 282 Rm. 4 Key 283 Rm. 6 Key 284 Storage Key 285 Root Fossil 286 Claw Fossil 287 Devon Scope 288 TM01 289 TM02 290 TM03 291 TM04 292 TM05 293 TM06 294 TM07 295 TM08 296 TM09 297 TM10 298 TM11 299 TM12 300 TM13 301 TM14 302 TM15 303 TM16 304 TM17 305 TM18 306 TM19 307 TM20 308 TM21 309 TM22 310 TM23 311 TM24 312 TM25 313 TM26 314 TM27 315 TM28 316 TM29 317 TM30 318 TM31 319 TM32 320 TM33 321 TM34 322 TM35 323 TM36 324 TM37 325 TM38 326 TM39 327 TM40 328 TM41 329 TM42 330 TM43 331 TM44 332 TM45 333 TM46 334 TM47 335 TM48 336 TM49 337 TM50 338 HM01 339 HM02 340 HM03 341 HM04 342 HM05 343 HM06 344 HM07 345 HM08 346 Oak's Parcel 349 Poké Flute 350 Secret Key 351 Bike Voucher 352 Gold Teeth 353 Old Amber 354 Card Key 355 Lift Key 356 Helix Fossil 357 Dome Fossil 358 Silph Scope 359 Bicycle 360 Town Map 361 VS Seeker 362 Fame Checker 363 TM Case 364 Berry Pouch 365 Teachy TV 366 Tri-pass 367 Rainbow Pass 368 Tea 369 Mysticticket 370 Auroraticket 371 Powder Jar 372 Ruby 373 Sapphire 374[/spoiler] Aclaración: \v\h01 se utiliza para mostrar el nombre del jugador en un mensaje. Checkgender. El comando checkgender se utiliza para comprobar si el personaje es chico o chica. Dependiendo de lo que seamos, el script será de una forma o de otra. Para hacerlo, debemos añadir esto a nuestro script: checkgender compare LASTRESULT (0x0 para comprobar si es chico. 0x1 para comprobar si es chica) if b_(true o false) goto $(pointer) Este tipo de script es muy parecido al de sí o no. Sólo se diferencia en que, en el script de sí o no, teníamos tres formas de hacerlo y en este, tenemos muchas. Yo sólo pondré tres ejemplo pero, si lo entendemos, sabremos hacerlo de las demás formas, sólo es cuestión de estudiar el funcionamiento del script. [spoiler=Ejemplo 1]#org $comienzo lock faceplayer checkgender compare LASTRESULT 0x0 if b_true goto $chico message $chica $chica 1 = Eres una gran amiga. boxset 6 release end #org $chico lock faceplayer message $chico1 $chico1 1 = Eres un gran amigo boxset 6 release end[/spoiler] [spoiler=Ejemplo 2]#org $comienzo lock faceplayer checkgender compare LASTRESULT 0x1 if b_true goto $chica message $chico $chico 1 = Eres un gran amigo. boxset 6 release end #org $chica lock faceplayer message $chica1 $chica1 1 = Eres un gran amigo boxset 6 release end[/spoiler] [spoiler=Ejemplo 3]#org $comienzo lock faceplayer checkgender compare LASTRESULT 0x0 if b_true goto $chico if b_false goto $chica boxset 6 release end #org $chico lock faceplayer message $chico1 $chico1 1 = Eres un gran amigo boxset 6 release end #org $chica lock faceplayer message $chica1 $chica1 1 = Eres una gran amiga boxset 6 release end[/spoiler] Applymovement. Sirve para que un mini se mueva en el juego. Utilizaremos el comando applymovement 0x(número del mini) $pointer y al final del script pondremos: #org $pointer #raw (movimientos) 0xFE (movimientos) lo debemos sutituir por los movimientos que queremos que se produzcan y 0xFE siempre lo debemos poner, ya que su función es terminar el movimiento. Aquí está la lista de movimientos: [spoiler=Movimientos para ruby]0x54 ' Hide 0x55 ' Show 0x56 ' Alert 0x57 ' Question 0x58 ' Love 0x5A ' Pokeball 0x10 ' Delay0 0x11 ' Delay1 0x12 ' Delay2 0x13 ' Delay3 0x14 ' Delay4 ' Step 0x00 ' Down0 0x01 ' Up0 0x02 ' Left0 0x03 ' Right0 0x04 ' Down1 0x05 ' Up1 0x06 ' Left1 0x07 ' Right1 0x08 ' Down2 0x09 ' Up2 0x0A ' Left2 0x0B ' Right2 0x17 ' Left3 0x18 ' Right3 0x15 ' Down3 0x16 ' Up3 0x2D ' Down4 0x2E ' Up4 0x2F ' Left4 0x30 ' Right4 ' Running 0x35 ' RunDown 0x36 ' RunUp 0x37 ' RunLeft 0x38 ' RunRight 0x7E ' RunDown2 0x7F ' RunUp2 0x80 ' RunLeft2 0x81 ' RunRight2 ' Hop & Jump 0x0C ' HopTileDown 0x0D ' HopTileUp 0x0E ' HopTileLeft 0x0F ' HopTileRight 0x3A ' HighHopDown 0x3B ' HighHopUp 0x3C ' HighHopLeft 0x3D ' HighHopRight 0x46 ' HopDown 0x47 ' HopUp 0x48 ' HopLeft 0x49 ' HopRight 0x4A ' HopDown180 0x4B ' HopUp180 0x4C ' HopLeft180 0x4D ' HopRight180 0x42 ' JumpDown 0x43 ' JumpUp 0x44 ' JumpLeft 0x45 ' JumpRight ' Straf (May have glitches) 0x19 ' StDown1 0x1A ' StUp1 0x1B ' StLeft1 0x1C ' StRight1 0x1D ' StDown2 0x1E ' StUp2 0x1F ' StLeft2 0x20 ' StRight2 0x21 ' StDown3 0x22 ' StUp3 0x23 ' StLeft3 0x24 ' StRight3 0x25 ' StDown4 0x26 ' StUp4 0x27 ' StLeft4 0x28 ' StRight4 0x6A ' StDown1i 0x6B ' StUp1i 0x6C ' StLeft1i 0x6D ' StRight1i 0x6E ' StDown5 0x6F ' StUp5 0x70 ' StLeft5 0x71 ' StRight5 'Special 0x31 ' SlideFaceDown 0x32 ' SlideFaceUp 0x33 ' SlideFaceLeft 0x34 ' SlideFaceRight 0x86 ' IceSlideDown 0x87 ' IceSlideUp 0x88 ' IceSlideLeft 0x89 ' IceSlideRight ' Glitchy 0x3E ' Up0A 0x3F ' Down0A 0x4E ' Down0B 0x63 ' Up0B 0x65 ' Right0A 0x66 ' RunStopLoopDown 0x67 ' RunStopLoopUp 0x68 ' RunStopLoopLeft 0x69 ' RunStopLoopRight 0x72 ' Down15 0x73 ' Up15 0x74 ' Left15 0x75 ' Right15 0x7A ' Down6 0x7B ' Up6 0x7C ' Left6 0x7D ' Right6 0x82 ' Down7 0x83 ' Up7 0x84 ' Left7 0x85 ' Right7[/spoiler] [spoiler=Movimientos para fire red]Face Down 0x00 Face Up 0x01 Face Left 0x02 Face Right 0x03 Step Down (Very Slow) 0x08 Step Up (Very Slow) 0x09 Step Left (Very Slow) 0x0A Step Right (Very Slow) 0x0B Step Down (Slow) 0x0C Step Up (Slow) 0x0D Step Left (Slow) 0x0E Step Right (Slow) 0x0F Step Down (Normal) 0x10 Step Up (Normal) 0x11 Step Left (Normal) 0x12 Step Right (Normal) 0x13 Jump Down 2 Squares 0x14 Jump Up 2 Squares 0x15 Jump Left 2 Squares 0x16 Jump Right 2 Squares 0x17 Step Down (Fast) 0x1D Step Up (Fast) 0x1E Step Left (Fast) 0x1F Step Right (Fast) 0x20 Step on the Spot Down 0x21 Step on the Spot Up 0x22 Step on the Spot Left 0x23 Step on the Spot Right 0x24 Step on the Spot Down (Fast) 0x25 Step on the Spot Up (Fast) 0x26 Step on the Spot Left (Fast) 0x27 Step on the Spot Right (Fast) 0x28 Step on the Spot Down (Very Fast) 0x29 Step on the Spot Up (Very Fast) 0x2A Step on the Spot Left (Very Fast) 0x2B Step on the Spot Right (Very Fast) 0x2C Face Down (Non-Instant) 0x2D Face Up (Non-Instant) 0x2E Face Left (Non-Instant) 0x2F Face Right (Non-Instant) 0x30 Slide Down 0x31 Slide Up 0x32 Slide Left 0x33 Slide Right 0x34 Slide Down On Right Foot 0x3D Slide Up On Right Foot 0x3E Slide Left On Right Foot 0x3F Slide Right On Right Foot 0x40 Slide Down On Left Foot 0x41 Slide Up On Left Foot 0x42 Slide Left On Left Foot 0x43 Slide Right On Left Foot 0x44 Face Player 0x4A Face Away from Player 0x4B Jump Down 1 Square 0x4E Jump Up 1 Square 0x4F Jump Left 1 Square 0x50 Jump Right 1 Square 0x51 Jump in Place (Facing Down) 0x52 Jump in Place (Facing Up) 0x53 Jump in Place (Facing Left) 0x54 Jump in Place (Facing Right) 0x55 Jump in Place (Facing Down->Up) 0x56 Jump in Place (Facing Up->Down) 0x57 Jump in Place (Facing Left->Right) 0x58 Jump in Place (Facing Right->Left) 0x59 Disappear 0x60 Reappear 0x61 "!" box popup 0x62 "?" box popup 0x63 "X" box popup 0x64 "!!" box popup 0x65 "^_^" box popup 0x66[/spoiler] Ahora pondré un ejemplo (es importante saber que el número del mini debe estar en Hex). Imaginemos que queremos hablar con un mini y que despues se mueva a la izquierda. Lo haríamos así: [quote]#org $comienzo lock faceplayer message $1 $1 1 = No tengo tiempo para hablar. boxset 6 applymovement 0x(el número del mini) $mov pausemove 0 release end #org $mov #raw 0x0A 0x0A 0x0A 0x0A 0x0A 0xFE[/quote] Este sería un ejemplo de applymovement. No he puesto flag porque no se suele hacer un applymovement para asignarle el script a un mini, se suele hacer con scripts de gatillo (lo veremos más adelante). También es necesario poner pausemove 0 debajo del applymovement, de lo contrario, no funcionará. Respecto a los movimientos, el número que hay detrás del movimiento quiere decir la velocidad con la que se efectuará, por ejemplo, left1 será más lento que left2, el espacio que recorren es el mismo. Para saber el número del mini debemos ir a la pestaña de eventos en advance map y seleccionar el mini al que le queremos aplicar el movimiento. Una vez lo tengamos seleccionado, miramos dónde pone No. de gente (justo debajo del botón "delete event"). El número que parezca ahí es el que debemos poner en el applymovement. En caso de que queramos que se mueva el protagonista, pondremos FF (en el número de mini del applymovement). Countpokemon. Se utiliza para que algo no pase hasta que no tengas un número específico de pokemon. Este es el comando que utilizaremos: countpokemon compare LASTRESULT 0x(número de pokemon entre 1 y 6) if b_A goto $(pointer) La A la tenemos que sustituir por uno de estos comandos: B_<< (menor) B_== (igual) B_>> (mayor) B_<= (menor o igual) B_>= (mayor o igual) B_!= (desigual) Imáginemos que queremos que alguien nos de una poción cuando tengamos dos o más pokemon, sería así: [quote]#org $comienzo lock faceplayer checkflag 0x200 (si ya la hemos utilizamos, ponemos otra) if 0x1 goto $despues countpokemon compare LASTRESULT 0x2 if b_>= goto $continuar message $1 $1 1 = Cuando tengas más pokemon te daré\nalgo. boxset 6 release end #org $continuar lock faceplayer message $2 $2 1 = Veo que eres un gran entrenador.\nToma esto. boxset 6 fanfare 0x13E message $3 $3 1 = \v\h01 recibió poción. boxset 6 giveitem 13 1 setflag 0x200 release end #org $despues lock faceplayer message $4 $4 1 = Espero que te vaya bien. boxset 6 release end[/quote] Con este script haremos que nos de el objeto cuando tengamos dos o más pokemon. He utilizado flags porque si no, siempre que hablaramos con el mini llevando dos o más pokemon, nos daría el objeto. Wildbattle. Wildbattle se utiliza para combatir con un pokemon salvaje. Se puede hacer de dos formas, o bien poniendo el mini del pokemon y al hablar con él luches o hablando con una persona y creando una situación para luchar con un pokemon salvaje. De momento, la de hablar con él mini del pokemon no lo explicaré, ya que hay que hay que hacer que el mini desaparezca si ganamos, cosa que aun no sabemos hacer. Así que explicaré la otra. Para hacer luchar con un pokemon salvaje sólo es necesario poner esto: wildbattle A B C La A la sustituimos por el pokemon. La B por el nivel. Y la C por el objetó que llevará (todo igual que en el givepokemon). Ese simplemente el comando que utilizaremos. Pero para hacerlo más original, también le aplicaremos un sonido ponindo esto (lo explicaré más adelante): cry 0xA1 6 nop nop Eso hará que se reproduzca el sonido del pokemon. Y no hay más que explicar, sólo queda poner un ejemplo: [quote]#org $comienzo lock faceplayer checkfalg 0x200 (Si ya la hemos utilizado, utilizamos otra) if 0x1 goto $despues message $1 $1 1 = Oye, está muy ocscuro.\pCreo que algo se está moviendo detrás\nde nosotros. boxset 6 cry 0xA1 6 nop nop wildbattle 6 30 0 setflag 0x200 release end #org $despues lock faceplayer message $2 $2 1 = Ese pokemon era muy grande... boxset 6 release end[/quote] Trainebattle 0. Este comando sirve para hacer una batalla con un entrenador. Para saber el número de entrenador, podemos verlo en A-trainer o en PET. El trainerbattle de tipo 0 lo utilizaremos para una batalla con un entrenador normal (de los que te encuentras en las rutas). Para hacerlo, utilizaremos este comando: trainerbattle 0 0xA $(pointer1) $(pointer2) La A la debemos reemplazar por el númerot del entrenador. Respecto a los pointers, el primero te llevará a lo que te dice antes de combatir y el segundo te llevará a lo que te dice justo después de perder. Pongo el ejemplo con el que se entendará fácilmente: [quote]#org $comienzo lock faceplayer trainerbattle 0 0x001 $antes $derrota message $despues $despues 1 = Debo reconocer que eres mucho más\nfuerte que yo. boxset 6 release end #org $antes $antes 1 = Prepárate para perder. #org $derrota $derrota 1 = ¡oh no, he perdido![/quote] Trainebattle 1. El trainerbattle de tipo uno es exactamente igual que el de tipo 0 con la excepción de que, al acabar el combate, el script continuará. También debemos añadirle flag. Este es el comando que utilizaremos: trainerbattle 1 0xA $(pointer1) $(pointer2) $(pointer3) Como en el anterior, la A la tenemos que sustituir por el número del entrenador (lo podemos ver en A-trainer o en PET). Y se añadirá un nuevo pointer para que continue el script. Este tipo de trainerbattle se suele utilizar para líderes de los gimnasios, encuentros con el/la rivall o similares. Pondré un ejemplo para que veáis cómo queda: [quote]#org $comienzo lock faceplayer checkflag 0x200 (si ya la hemos utilizado, ponemos otra) if 0x1 goto $despues2 trainerbattle 1 0x001 $antes $derrota $despues end #org $antes $antes 1 = ¡Hola!\n¿Qué te parece si luchamos? #org $derrota $derrota 1 = Creo que nunca te gararé... #org $despues message $2 $2 1 = Toma esto, te lo mereces. boxset 6 fanfare 0x13E message $3 $3 1 = \v\h01 recibió poción. boxset 6 giveitem 13 1 setflag 0x200 release end #org $despues2 lock faceplayer message $4 $4 1 = Seguiré entrenando.\nAlgún día seré el campeón de la\lliga pokemon. boxset 6 release end[/quote] Flags 2. Ha llegado el momento de explicar lo resta de las flags. En primer lugar os mostraré un nuevo comando: clearflag 0x(flag) Este comando sirve para desactivar una flag. A simple vista, os puede parecer un comando "inservible" de cierta forma, pero os digo que da muchísimo juego. En realidad no tiene nada que explicar, si estudiáis un poco su funcionamiento, podréis hacer buenos scripts. Otra función de las flags es hacer que un mini desaparezca. Para hacerlo, vamos a advance map y seleccionamos el mini que queremos que desaparezca. Después, ponemos una flag en el ID del mini. Cuando la flag que pusimos ahí, sea activada en cualquier script, el mini desaparecerá. Ojo, si la flag se activa teniendo al mini en la pantalla, este no desaparecerá hasta que no nos alejemos. Si queremos que desaparezca instantaneamente, simplemente tenemos que poner un comando que veremos más aabajo. Y la última función que explicaré es muy sencilla. Si se ha entendido bien el funcionamiento de las flag, con un poco de razonamiento habremos poidido deducir esto. Me refiero a que, por ejemplo, queremos que un mini nos de un objeto pero después de que hablemos con otro mini. Simplemente tenemos que hacer dos script distintos. En el primero, debemos comprobar la flag que activaremos en el segundo. Pongo un ejemplo para que lo entendáis: [spoiler=Script 1]#org $comienzo lock faceplayer checkflag 0x201 if 0x1 goto $despues2 checkflag 0x200 (si ya la hemos utilizado, ponemos otra) if 0x1 goto $despues message $1 $1 1 = Antes vivía aquí con mi hermano,\npero se fue a la ciudad. boxset 6 release end #org $despues lock faceplayer message $2 $2 1 = ¿Has conocido a mi hermano?\pMe alegro mucho,\ntoma esto. boxset 6 fanfare 0x13E message $3 $3 1 = \v\h01 recibió poción. boxset 6 giveitem 13 1 setflag 0x201 release end #org $despues2 lock faceplayer message $4 $4 1 = Espero que te vaya bien. boxset 6 release end[/spoiler] [spoiler=Script 2]#org $comienzo lock faceplayer message $1 $1 1 = No conozco a mucha gente\npor aquí.\pAntes vivía con mi hermano en el pueblo. boxset 6 setflag 0x200 release end[/spoiler] Es bastante sencillo. Como dije antes, basta con estudiar el comportamiento de las flag para exprimir al máximo todas sus funciones. Warp. Es un comando muy simple, su función es enviarnos a un warp. No tiene mucho que explicar así que aquí está el comando que utilizaremos: warp 0xA 0xB 0xC Ahora sólo tenemos que sustituir. La A la cambiaremos por el banco de mapa. La B la cambiaremos por el mapa. Y la C la cabiaremos por el número de warp. Cómo podéis ver, es cómo comfigurar un warp en advance map, pero en un script. Pondré un ejemplo: [quote]#org $comienzo lock faceplayer checkflag 0x200 (como siempre, si ya la hemos utilizado, ponemos otra) if 0x1 goto $despues message $1 $1 1 = Profesor: deberías ir a casa. boxset 6 setflag 0x200 warp 0x1 0x0 0x0 release end #org $despues lock faceplayer message $2 $2 1 = ¿Fuistes a casa? boxset 6 release end[/quote] No es más que eso. Si queremos que el script continue cuando nos lleve a casa, tendremos que hacer un script de nivel (se explica más adelante). Aviso: el warp siempre se pone al final, ya que, lo que pongamos después del warp, no se activará. Por ejemplo, si ponemos esto: warp 0x1 0x0 0x0 setflag 0x200 La flag no se activará, ya que, al llevarnos a otro mapa, el script finalizará y no leerá el setflag. Warp to position. Su función es igual que la de un warp pero la diferencia es que, con este comando, no iremos a otro warp, si no a una posición. Es algo más complicado que el warp, pero se entiende fácilmente. Esto será lo que utilicemos: warp 0xA 0xB 0xFF #raw 0xC 0xD 0xE 0xF En primer lugar, el 0xFF no hay que modificarlo, lo dejamos como está. Dicho esto, explico. La A la sustituimos por el banco de mapa y la B por el mapa. Hasta aquí no hay problema, pero ahora hay que fijar las coordenadas. Para ello nos vamos al #raw. Lo que haremos será ir a advance map para mirar las coordenadas. Imaginemos que son estas: X: 6 Y: 3 Cada coordenada debe tener cuatro números. Para ello, le añadimos 0 a la izquierda hasta tener dicha cantidad. Quedaría así: X: 0006 Y: 0003 Ahora lo que debemos hacer es separarlos de dos en dos y darles la vuelta a los grupos spero sin alterar el orden dentro de estos. Sería así: X: 0006 > 00 06 > 06 00 Y: 0003 > 00 03 > 03 00 Ya lo tenemos, ahora sólo hay que sustituirlos en el #raw: #raw 0x06 0x00 0x03 0x00 Ya tendríamos la posición. Sólo resta poner un ejemplo completo para que lo entendáis. Por ejemplo, si queremos aparecer en villa raiz en la posición (x = 6, y = 3) sería así: [quote]#org $comienzo lock faceplayer checkflag 0x200 if 0x1 goto $despues message $1 $1 1 = Deberías ir a villa raiz. boxset 6 setflag 0x200 warp 0x0 0x9 0xFF #raw 0x06 0x00 0x03 0x00 release end #org $despues lock faceplayer message $2 $2 1 = ¿Ya has estado en villa raiz? boxset 6 release end[/quote] Eso es todo, por si alguien no a entendido lo de poner las coordenadas dejo otro ejemplo. [spoiler=Ejemplo 2]veamos, imaginemos que esta vez las coordenadas son las siguientes: X: B Y: 12 Simplemente le ponemos los 0 necesarios para que tenga cuatro cifras, los separamos en grupos de dos y le damos la vuelta sin alterar el orden dentro de los grupos: X: 000B > 00 0B > 0B 00 Y: 0012 > 00 12 > 12 00 Ya sólo sustituimos: warp 0x0 0x9 0xFF #raw 0x12 0x00 0x0B 0x00[/spoiler] Pokemart. Este comando sirve para crear una tienda en la que se venderá lo que nosotros queramos. Antes de continuar, no se puede poner un precio personalizado en los script. Bien, el comando que utilizaremos será este: pokemart $(pointer) Eso es fácil, lo más importante es el pointer al que nos enviará: #org $(pointer) #binary int (productos a vender) 0x0 Dependiendo de la cantidad de objetos que queramos vender, más #binary int tendremos que poner. Por cada linea se deben poner ocho objetos (excepto en la última, que puede haber menos) incluido el 0x0 (para salir). Los objetos debemos ponerlos en Hex, por ejemplo, si queremos vender pociones (número 13), tendrémos que poner 0xD (si ponemos 0x13 estaríamos vendiendo restau. todo). Si queremos vender pociones, restau. todo y ultraballs, lo pondríamos así: #binary int 0xD 0x13 0x2 0x0 Para que entiendan bien su funcionamiento, pondré tres ejemplo: [spoiler=Menos de 8 objetos]#org $comienzo lock faceplayer pokemart $tienda release end #org $tienda #binary int 0x2 0x13 0xD 0x0[/spoiler] [spoiler=Más de 8 objetos]#org $comienzo lock faceplayer pokemart $tienda release end #org $tienda #binary int 0x2 0x4 0x7 0xA 0x17 0x13 0x1 0xB #binary int 0x3 0x20 0xC 0x0[/spoiler] [spoiler=8 objetos]#org $comienzo lock faceplayer pokemart $tienda release end #org $tienda #binary int 0x2 0x5 0xA 0xB 0x13 0x14 0x15 0x20 #binary int 0x0[/spoiler] Espero que con esos tres ejemplos lo entiendad. Sólo tienen que saber que tienen que poner 8 objetos por cada #binary int. Hidesprite y showsprite. Estos dos comandos los utilizaremos para hacer que un mini aparezca o desaparezca. Eso sí, si no le asignamos una flag al mini, este desaparecerá pero volverá a aparecer en cuanto hagamos algún movimiento. Para hacerlo bien, debemos activar la flag que le hayamos asignado al mini (en el ID) en el mismo script een que lo hagamos desaparecer. Estos son los comandos que usaremos: #raw 0x53 0xA 0xB #raw 0x55 0xA 0xB El primero corresponde a un hidesprite y el segundo a un showsprite. ¿Recordáis el tutorial de warp to position? ¿Y lo que había que hacer para poner las coordenadas? Pues aquí se hace igual. Antes de poner un ejemplo, debo decir que el número de persona lo tenemos que poner en Hex. Ahora sí pondré un ejemplo. Imaginemos que queremos que el mini número 1 deaparezca, pues lo hacemos igual que en warp to position: 1 > 0001 > 00 01 > 01 00 > #raw 0x(53 o 55) 0x01 0x00 Esto lo deberéis probar vosotros mismo, con un ejemplo escrito no se entenderá. Y recuerden asiganarle una flag al mini para que desaparezca totalmente. Aclaración: Para hacer aparecer un mini correstamente, utilizar el comando "clearflag" Consejo: para que desaparezca la persona con la que estamos hablando podemos utilizar el comando "#raw 0x53 0x0F 0x80" Giveegg. Este comando sirve para que recibamos un huevo. Hay que configurarlo igual que warp to position. Este es el comando que utilizaremos: #raw 0x7A 0xA 0xB Vamos a sustituir la A y la B. Imaginemos que queremos un huevo de pikachu, lo haríamos así: 25 (lo debemos pasar a hex) > 19 > 0019 > 00 19 > 19 00 Ya tenemos el número, así que este sería el resultado: #raw 0x7A 0x19 0x00 Pondré un ejemplo para que lo veáis mejor: [quote]#org $comienzo lock faceplayer checkflag 0x200 if 0x1 goto $despues message $1 $1 1 = Toma esto. boxset 6 fanfare 0x13E message $2 $2 1 = \v\h01 recibió huevo. boxset 6 #raw 0x7A 0x19 0x00 setflag 0x200 release end #org $comienzo lock faceplayer message $3 $3 1 = ¿Ha eclosionado ya? boxset 6 release end[/quote] ~CONTINUARÁ... He estado trabajando mucho en este tutorial (llevo tres días redactándolo, no he hecho otra cosa nada más que esta xD). Espero que haya gente a la que le pueda servir y que sepan reconocer mi esfuerzo (me refiero a que penséis antes de comentar jeje) Tutorial integramente redactado por javi4315 (no es copy&paste ni nada de eso) Si se postea dar créditos (que me ha costado trabajo xD) Estado del tutorial: 40% Próxima actualización: Espero que mañana o el martes (entre el 60 y el 80%) Si tienen alguna duda o pregunta pueden postear, mandarme un mp o comentar en mi perfil. Si ven algún fallo en el tutorial (soy persona) por favor avisenme. Si me van a insultar o amenazar también pueden hacerlo, pero cuiden el vocavulario (?) xD Espero que el tutorial sea de vuestro agrado. Saludos!