Registrarse

[RH - Scripting] [ESCUELA DE SCRIPTS] SetMapTile / Buffer

Estado
Cerrado para nuevas respuestas.

Xabier2012

Usuario mítico



¿Qué es un setmaptile?

Lo indica su nombre en inglés: "poner tile al mapa". Básicamente cambia tiles al mapa. Cada comando setmaptile que pongamos cambiará solo un tile del mapa, y para que se note el cambio deberemos refrescar la pantalla. Entonces, si quiero Cambiar por ejemplo un árbol por otro del mismo tamaño, suponiendo que el árbol tengo un tamaño de 2x3 (6 tiles), tendría que hacer 6 setmaptile.


Ejecutando un setmaptile

La estructura de un comando setmaptile es la siguiente:

Código:
setmaptile 0x(X) 0x(Y) 0x(Nº tile) 0x(permisos)
X e Y son las coordenadas del tile que vamos a cambiar.

El número de tile es un número que tiene asignado cada tile en el tileset, es decir, es el número del tile al cual queremos que se cambie, y para saber qué número es solo tenemos que hacer clic en el tile y fijarnos abajo a la izquierda en el AM dónde aparecerá el número de ese tile



Y permisos se refiere a si podemos pasar o no por el tile. Si podemos pasar por encima de él ponemos un 0x0, y si no pues un 0x1.

Y ahora lo más importante. Para que los cambios de hagan visibles, después de poner todos nuestros setmaptile tenemos que poner el siguiente special:

Código:
special 0x8E
Este especial hará que se refresque la pantalla.

Por ejemplo, imaginaros que en ruby quiero poner al lado de la casa de player un arbusto de 1x2 tiles. Primero tendría que saber las coordenadas, las cuales serían (8,8) para la base, y (8,7) para la copa. El nº tile de la base es "16" y el de la copa es "E" (todos estos números ya están en hexa así no los tenemos que pasar). En la base no se puede pasar pero en la copa sí. Entonces nuestro setmaptile quedaría así:

Código:
setmaptile 0x8 0x8 0x16 0x1
setmaptile 0x8 0x7 0xE 0x0
special 0x8E

Setmaptile permanente

Para hacer los cambios permanentes, el offset del script compilado lo tenemos que poner en un script de nivel, concretamente en el 01 (scripts de nivel explicados en el tutorial anterior). Este script de nivel propiamente no tiene condiciones para que se ejcute, así que siempre se ejecutará, pero si queréis que los setmaptiles se produzcan con cierto condición, simplemente en el script al inicio ponéis un if, tan sencillo como eso. Este script de nivel hará los cambios de setmaptile antes de que se cargue todo el mapa lo que hará que no veamos como se cambian los tiles.


¿Qué es un buffer?

Dentro del código pokemon, un buffer es una variable, solo que almacena palabras y números y sólo temporalmente. Esto nos será útil para almacenar nombres de pokemon, objetos y números y ahorrar condiciones.

Hay bastantes buffers, no tengo la certeza de cuantos, pero no es que necesitemos muchos pues lo que almacenamos en los buffers es temporal. Las palabras o números que almacenemos en buffers se podrán mostrar por mensajes de texto. Por ejemplo en el buffer1 tenemos almacenada la palabra "pikachu". Pues en un msgbox cuando pongas [buffer1] aparecerá pikachu. Algo así como cuando pones [player].


Bufferpokemon

La estructura es así:

Código:
bufferpokemon [buffer nº] [pokemon nº]
En buffers nº ponemos el número de buffer dónde es va almacenar nuestro nombre de pokemon, si ponemos 0 se almacena en el 1, no en el 0, entonces el número que pomgamos después para referirnos al buffer en un msg tenemos que poner un número más del que hemos puesto. Y en pokemon nº el número del pokemon de la pokedex.

Ejemplo:

Código:
#dynamic 0x800000

#org @inicio
setvar 0x4050 0x6
bufferpokemon 0x0 0x4050
msgbox 0x6 @texto
waitmsg
end

#org @texto
= Tengo un [buffer1]!
Acabo de decir que tengo un charizard.
¿Por qué he puesto 0x4050 en vez de un número de la pokedex. Es sencillo, en cualquier comando que pida un número, podemos poner el número de una variable, y el juego tomará no el número de la variable en sí, sino el número que está almacenado en la variable, de esta forma yo almacené el 6 de charizard en la var 4050, así que es lo mismo que poner 0x6. Lógicamente es más rápido poner 0x6 pero quería mostraros que se pueden poner variables y que os puede ser de utilidad ya que en otro script ya no tenemos la palabra charizard almacenada en el buffer1 pero si tenemos su numero en la var, así que hacemos un bufferpokemon y solucionado. De esta forma no tendremos que hacer un if para ver que pokemon hemos elegido y lo más importante, no tendremos que poner tres textos diferentes para bulbasaur squirtle o charmander, si almacenamos el valor del pokemon en la variable con hacer un buffer nos bastará. Fijaros en el script de fire red de cuando recibes tu pokemon, utiliza buffers y se ahorra textos, y espacio de la rom.


Bufferfirstpokemon

Este comando-buffers simplemente almacena el nombre del pokemon que tengamos del primero en el equipo. Solo necesita el parámetro del nº de buffer en el cual lo almacenamos.

Código:
bufferfirstpokemon [buffer nº]

Bufferitem y Bufferattack

La mecánica es la misma que con Bufferpokemon. Sólo que tenemos que poner un nº de un objeto de la lista de items o el número de un ataque.

Código:
Bufferitem 0x[buffer nº] 0x[nº item]
Código:
Bufferattack 0x[buffer nº] 0x[nº ataque]
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

001 Pound
002 Karate Chop
003 DoubleSlap
004 Comet Punch
005 Mega Punch
006 Pay Day
007 Fire Punch
008 Ice Punch
009 ThunderPunch
00A Scratch
00B ViceGrip
00C Guillotine
00D Razor Wind
00E Swords Dance
00F Cut
010 Gust
011 Wing Attack
012 Whirlwind
013 Fly
014 Bind
015 Slam
016 Vine Whip
017 Stomp
018 Double Kick
019 Mega Kick
01A Jump Kick
01B Rolling Kick
01C Sand-Attack
01D Headbutt
01E Horn Attack
01F Fury Attack
020 Horn Drill
021 Tackle
022 Body Slam
023 Wrap
024 Take Down
025 Thrash
026 Double-Edge
027 Tail Whip
028 Poison Sting
029 Twineedle
02A Pin Missile
02B Leer
02C Bite
02D Growl
02E Roar
02F Sing
030 Supersonic
031 SonicBoom
032 Disable
033 Acid
034 Ember
035 Flamethrower
036 Mist
037 Water Gun
038 Hydro Pump
039 Surf
03A Ice Beam
03B Blizzard
03C Psybeam
03D BubbleBeam
03E Aurora Beam
03F Hyper Beam
040 Peck
041 Drill Peck
042 Submission
043 Low Kick
044 Counter
045 Seismic Toss
046 Strength
047 Absorb
048 Mega Drain
049 Leech Seed
04A Growth
04B Razor Leaf
04C SolarBeam
04D PoisonPowder
04E Stun Spore
04F Sleep Powder
050 Petal Dance
051 String Shot
052 Dragon Rage
053 Fire Spin
054 ThunderShock
055 Thunderbolt
056 Thunder Wave
057 Thunder
058 Rock Throw
059 Earthquake
05A Fissure
05B Dig
05C Toxic
05D Confusion
05E Psychic
05F Hypnosis
060 Meditate
061 Agility
062 Quick Attack
063 Rage
064 Teleport
065 Night Shade
066 Mimic
067 Screech
068 Double Team
069 Recover
06A Harden
06B Minimize
06C SmokeScreen
06D Confuse Ray
06E Withdraw
06F Defense Curl
070 Barrier
071 Light Screen
072 Haze
073 Reflect
074 Focus Energy
075 Bide
076 Metronome
077 Mirror Move
078 Selfdestruct
079 Egg Bomb
07A Lick
07B Smog
07C Sludge
07D Bone Club
07E Fire Blast
07F Waterfall
080 Clamp
081 Swift
082 Skull Bash
083 Spike Cannon
084 Constrict
085 Amnesia
086 Kinesis
087 Softboiled
088 Hi Jump Kick
089 Glare
08A Dream Eater
08B Poison Gas
08C Barrage
08D Leech Life
08E Lovely Kiss
08F Sky Attack
090 Transform
091 Bubble
092 Dizzy Punch
093 Spore
094 Flash
095 Psywave
096 Splash
097 Acid Armor
098 Crabhammer
099 Explosion
09A Fury Swipes
09B Bonemerang
09C Rest
09D Rock Slide
09E Hyper Fang
09F Sharpen
0A0 Conversion
0A1 Tri Attack
0A2 Super Fang
0A3 Slash
0A4 Substitute
0A5 Struggle
0A6 Sketch
0A7 Triple Kick
0A8 Thief
0A9 Spider Web
0AA Mind Reader
0AB Nightmare
0AC Flame Wheel
0AD Snore
0AE Curse
0AF Flail
0B0 Conversion 2
0B1 Aeroblast
0B2 Cotton Spore
0B3 Reversal
0B4 Spite
0B5 Powder Snow
0B6 Protect
0B7 Mach Punch
0B8 Scary Face
0B9 Faint Attack
0BA Sweet Kiss
0BB Belly Drum
0BC Sludge Bomb
0BD Mud-Slap
0BE Octazooka
0BF Spikes
0C0 Zap Cannon
0C1 Foresight
0C2 Destiny Bond
0C3 Perish Song
0C4 Icy Wind
0C5 Detect
0C6 Bone Rush
0C7 Lock-On
0C8 Outrage
0C9 Sandstorm
0CA Giga Drain
0CB Endure
0CC Charm
0CD Rollout
0CE False Swipe
0CF Swagger
0D0 Milk Drink
0D1 Spark
0D2 Fury Cutter
0D3 Steel Wing
0D4 Mean Look
0D5 Attract
0D6 Sleep Talk
0D7 Heal Bell
0D8 Return
0D9 Present
0DA Frustration
0DB Safeguard
0DC Pain Split
0DD Sacred Fire
0DE Magnitude
0DF DynamicPunch
0E0 Megahorn
0E1 DragonBreath
0E2 Baton Pass
0E3 Encore
0E4 Pursuit
0E5 Rapid Spin
0E6 Sweet Scent
0E7 Iron Tail
0E8 Metal Claw
0E9 Vital Throw
0EA Morning Sun
0EB Synthesis
0EC Moonlight
0ED Hidden Power
0EE Cross Chop
0EF Twister
0F0 Rain Dance
0F1 Sunny Day
0F2 Crunch
0F3 Mirror Coat
0F4 Psych Up
0F5 ExtremeSpeed
0F6 AncientPower
0F7 Shadow Ball
0F8 Future Sight
0F9 Rock Smash
0FA Whirlpool
0FB Beat Up
0FC Fake Out
0FD Uproar
0FE Stockpile
0FF Spit Up
100 Swallow
101 Heat Wave
102 Hail
103 Torment
104 Flatter
105 Will-O-Wisp
106 Memento
107 Facade
108 Focus Punch
109 SmellingSalt
10A Follow Me
10B Nature Power
10C Charge
10D Taunt
10E Helping Hand
10F Trick
110 Role Play
111 Wish
112 Assist
113 Ingrain
114 Superpower
115 Magic Coat
116 Recycle
117 Revenge
118 Brick Break
119 Yawn
11A Knock Off
11B Endeavor
11C Eruption
11D Skill Swap
11E Imprison
11F Refresh
120 Grudge
121 Snatch
122 Secret Power
123 Dive
124 Arm Thrust
125 Camouflage
126 Tail Glow
127 Luster Purge
128 Mist Ball
129 FeatherDance
12A Teeter Dance
12B Blaze Kick
12C Mud Sport
12D Ice Ball
12E Needle Arm
12F Slack Off
130 Hyper Voice
131 Poison Fang
132 Crush Claw
133 Blast Burn
134 Hydro Cannon
135 Meteor Mash
136 Astonish
137 Weather Ball
138 Aromatherapy
139 Fake Tears
13A Air Cutter
13B Overheat
13C Odor Sleuth
13D Rock Tomb
13E Silver Wind
13F Metal Sound
140 GrassWhistle
141 Tickle
142 Cosmic Power
143 Water Spout
144 Signal Beam
145 Shadow Punch
146 Extrasensory
147 Sky Uppercut
148 Sand Tomb
149 Sheer Cold
14A Muddy Water
14B Bullet Seed
14C Aerial Ace
14D Icicle Spear
14E Iron Defense
14F Block
150 Howl
151 Dragon Claw
152 Frenzy Plant
153 Bulk Up
154 Bounce
155 Mud Shot
156 Poison Tail
157 Covet
158 Volt Tackle
159 Magical Leaf
15A Water Sport
15B Calm Mind
15C Leaf Blade
15D Dragon Dance
15E Rock Blast
15F Shock Wave
160 Water Pulse
161 Doom Desire

(sorry en inglés)


Buffernumber

Este comando nos servirá para mostrar en un mensaje un número que esté almacenado en una variable, entonces si queréis guardar almacenar un número cualquiera pues se lo asignáis a una variable y ejecutáis este comando. Importante tener en cuenta de que el número que esté almacenado en un variable se mostrará como un número decimal, no hexadecimal. Si en una var tenemos A y los mostramos con Buffernumber pues se mostrará 10 y no A.

La estructura es la siguiente:

Código:
Buffernumber 0x[buffer1] 0x(variable)
Misma mecánica.
@Tervaxx @Toni @rdoble @AwesomeCS @RafaSc3 @LluviaElemental @AlexanderWWE @Axnez @ZeonElMagnífico @jfem
 
Estado
Cerrado para nuevas respuestas.
Arriba