[Tutorial]Como criar um jogo de pokémon(RPG Maker Xp)
Página 1 de 2 • Compartilhe •
Página 1 de 2 • 1, 2 
[Tutorial]Como criar um jogo de pokémon(RPG Maker Xp)
Criação de games de Pokémon de RMXp esta virando uma febre muldial por isso nos não poderiamos deixar de trazer os programa para criação de games para essa plataforma abaixo esta o programa mais o pet de funcionamento baixem os 2 para funcionamento total do programa.
RPG Maker em Português Programa
E o programa de criação de jogos de RMXP com ele você pode fazer games com graficos de Nintendo DS ou ate melhor basta saber usalo. Para que o programa funcione baixe o RGSS-RTP-Standard-pt-br disponivel abaixo.
Download RPG Maker Xp
Download RGSS-RTP-Standard-pt-br
Pokémon Starter Kit
Pokemon starter kit é o melhor conjunto de scripts para criar um jogo de pokemon.
Pokémon Starter Kit
Pokémons de Unova Starter Kit
Para instalar extraia o pack e coloca os arquivos em suas respectivas pastas...
e na pasta PBS substitua os antigos.
Download do pack Unova Starter Kit
Tutorial
Começando o seu jogo:
Façam uma copia do starter kit para se tiver uma duvida, u perder algum arquivo importante você podera o pegar la. Abra um dos "starters kits" e delete todos os mapas menos o primeiro que é a Intro.
Modificando as coisas principais:
Primeiro abra o "Editor.exe" que esta dentro da pasta do seu jogo. Va em "Visual Editor". Você vera o mapa que você estava mexendo no RPG Maker.
Clique no fundo e abrira uma janelinha escrito:
Home(1)
Player A,B,C e D(2)
Storage Creator(3)
WildBattleBGM(4)
WildVictoryME(5)
TrainerVictoryME(6)
TextSkin(7)
SurfBGM(8)
BicicleBGM(9)
1 = A casa do personagem. Se ele perder uma batalha, e nunca tiver curado seus Pokémon nu centro pokémon, você devera se curar em casa.
2 = O grafico dos personagens, recomendo deixar somente 2, pois o A é o menino e o B é a menina.
3 = Aquele que fez os boxes, (ex: Bill, Lannette, etc...).
4 = A musica de batalha quando encontra um pokémon selvagem.
5 = A musica de quando você ganha de um pokémon selvagem.
6 = A musica de quando você ganha de um treinador.
7 = O estilo da caixa de texto.
8 = A musica de quando você usa o HM SURF.
9 = A musica de quando você esta na bicicleta.
Criando e modificando mapas:
Abra o RPG Maker, e crie um Mapa com os tiles do starter kit. Crie um mapa que ficara ao lado dele(não importa qual lado). Abra connections.txt que esta na pasta PBS e apague tudo que esta la. Depois faça o seguinte:
# Area 1 (4) - Area 2 (5)
4,East,0,5,West,0
Area 1 e Area 2 = Os nomes dos mapas
4, 5, (4) e (5) = As IDs dos mapas
East e West = Direção onde esta o mapa que sera conectado ao primeiro mapa.(North = Norte, South = Sul, East = Leste, West = Oeste) PS: O numero da esquerda é o ID do mapa. Exemplo simples:
Area 1 com o ID 4 sera conectada com o Leste dela que é a Area 2 com o ID 5 que sera conectada com a outra pelo Oeste.
Agora os Pokémon selvagens:
Abra o Editor, e depois em "Set Encounters". Selecione o nosso mapa e clique.
Aparecera Isso:
Land
Water
OldRod
GoodRod
SuperRod
HeadbuttLow
HeadbuttHigh
Land = Os pokémons que aparecerão na grama.
Water = Os pokémons que aparecerão na agua.
OldRod = Os pokémons que aparecerão se agente pesca com uma Old Rod.
GoodRod = Os pokémons que aparecerão se agente pesca com uma Good Rod.
SuperRod = Os pokémons que aparecerão se agente pesca com uma Super Rod.
HeadbuttLow = Os pokémons que aparecerão se agente usa Headbutt.
HeadbuttHigh = Os pokémons que aparecerão se agente usa Headbutt, so que um Headbutt forte.
Batalhas de treinadores:
Crie um evento chamado "Traner (#)" O # sera a visão do treinador, ex.: Trainer (4) Se eu estiver 5 quadradihos (passos) ou mais longe dele, ele não me vera, mas se eu tiver de 4 passos ou menos perto dele, ele me vera.
Crie 2 paginas, na primeira faça:
Comentario: "Battle: (1)"
Comentario: "Type: (2)"
Comentario: "Name: (3)"
Comentario: "EndSpeech: (4)"
Comentario: "EndBattle: (5)"
Comentario: "EndIfSwitch: (6)"
Script: "pbTrainerIntro(:YOUNGSTER) (7)"
Script: "Kernel.pbNoticePlayer(get_character(0))" (8)
Texto: (9)
Condição(script): "pbTrainerBattle(PBTrainers::YOUNGSTER,"Jimmy",_I( "Eu perdi?"),false,0) (" (10)
Se a condição for feita: "Operação Switch Local A"
FIM
Script: "pbTrainerEnd" (11)
1 = O que o treinador vai falar quando te encontrar.
2 = O tipo do treinador: YOUNGSTER, EXPERT_Male (OBS.: O nome dos personagens é diferente do que aparece no jogo, então va em PBS, trainernames.txt e na esquerda você vera o nome deles para escrever la nos eventos, e na direita você vera o que aparecera no jogo.).
3 = O nome do treinador. Ex.: Youngster "Jimmy" (So escreva o nome do treinador e não o tipo.).
4 = O que o treinador dira no fim da batalha.
5 = O que o treinador dira se você falar com ele e ja tiver derrotado ele.
6 = Eu néao sei o que é. E é melhor deixar 27.
7 = Substitua YOUNGSTER por aquilo que você escreveu no 2° comentario.
8 = Deixe o que estiver la.
9 = Escreva a mesma coisa que você escreveu no 1° comentario.
10 = Substitua YOUNGSTER pelo tipo do treinador, Jimmy pelo nome do treinador, e "Eu perdi?" por o que o treinador vai falar quando te encontrar.
11 = Esse é o script do fim da batalha. Não modifique isso.
Na segunda pagina:
Coloque para funcionar somente se o switch local A estiver ativado.
Texto: (12)
12 = Escreva a mesma coisa que escreveu no 5° comentario.
Agora teste o jogo e fale com o treinador. Ele dira que não o encontrou. Clique em YES e depois escolha o seu primeiro pokémon. Depois vai pedir o nivel dele aperte para cima para aumentar o nivel, e para baixo para abaixar o nivel. Ai ele vai Perguntar se quer colocar mais um pokémon, clique em YES para colocar mais um pokémon e NO para deixar o treinador o jeito que esta.
Os lideres de GYM:
Crie um evento com 2 paginas:
Na primeira pagina faça:
Texto: Você chegou longe, Mas você pode me vencer?(1)
Condição(script): pbTrainerBattle(PBTrainers::LEADER_Roxanne,"Roxy", _I("Muito bom.")) (2)
Reproduzir BGM: 'badge adquired', 100, 100(3)
Texto: Você ganhou a insignia da (nome da insignia)! (4)
Script: $Trainer.badges[0]=true(5)
Reproduzir BGM: 'gym', 100, 100(6)
Operação switch local A = On
FIM
1 = O que a lider fala antes da batalha.
2 = Substitua Roxanne pelo nome do lider do R\S\E para saber(Roxanne = 1° lider), Substitua Roxy pelo nome do lider de GYM, e substitua "Muito bom" por o que a lider dira no fim da batalha.
3 = A musica de quando ganha a insignia.
4 = substitua (nome da insignia) pelo tipo (ex: Você ganhou a insignia da pedra!).
5 = O numero de insignias. Substitua 0 pelo numero de insignias(OBS.: 0 = 1 insignias, 1 = 2 insignias, etc...)
6 = Esse comando é para voltar a musica do GYM, sem este comando tocaria 'badge adquired' até que você troque de mapa, ou até que tenha um outro comando de mudar BGM.
Na segunda pagina faça:
Coloque para funcionar somente se o switch local A estiver ativado.
Texto: (12)
12 = O que o lider de GYM fala se você clica nele e ja tiver ganhado dele.
Outros comandos uteis:
Sistema de Sombra: Comentario: begin Shadow Source(crie um evento com a ativação "Pressinar Tecla" no local onde o sol estara.
Berry: Script: pbBerryPlant
Rock Smash:
Condição(script): Kernel.pbRockSmash
Script: pbEraseThisEvent
Script: Kernel.pbRockSmashRandomEncounter
Cut: Condição(Script): Kernel.pbCut
Script: pbEraseThisEvent
Ganhar item: 1° pagina:
Condição(script): Kernel.pbItemBall(::PBItems::POTION)
Operação de switch local A
2° pagina:
Coloque para funcionar somente se o switch local A estiver ativado.
Surf: é so colocar agua e o menino(a) vai surfar.
Strenght: Script: pbPushThisBoulder
Headbutt: Script: pbHeadbutt
PC: Script: pbPokeCenterPC
Utilidade dos arquivos “METADATAS” E “ENCOUNTERS” no Pokestarter:
Crie seu mapa:
Feito isso vá na pasta de "PBS" e abra o arquivo com o nome "metadata".
Este metadata é tipo uma pasta de registros do seus mapas no jogo, sem esse “registro” do seu mapa as batalhas ficam com o title neutro ou sem efeito de dia e noite!
Bem então vamos aprender como "registrar" seu mapa.
EX 1:
[027] ----------------------------->1
# Route 1 ------------------------->2
Bicycle=true ---------------------->3
MapPosition=0,10,5 ---------------->4
Outdoor=true ---------------------->5
BicycleAlways=false --------------->6
ShowArea=true --------------------->7
Este é o exemplo de uma Route tradicional.
1: Isso acho que todos já sabem o q é. É o ID do mapa, e deve se sempre colocados entras colchetes.
2: Isso ñ é nada alem de uma explicação de a qual mapa você se refere, é apenas um comentário, + é bom para você se localizar melhor.
3: Isso não passa de uma permissão pr se poder andar de bicicleta, já q obviamente em pokemon você não pode andar de bicicleta onde te der vontade. Então caso você estiver querendo fazer um centro ou uma casa será "Bicycle=false".
4: Isso eu ñ seu bem pr q serve, + se deixar do jeito q esta, ele ñ irar influencia no seu mapa.
5: Este eu também não sei bem, basta deixar desse jeito. xD
6: Esta opção quando esta true (ou seja verdadeira) você não pode remover a bicicleta, como na ciclovia da ruby/safira.
7: Este eu também ñ sei bem para que serve, porem é obrigatório todos o mapas terem.
EX2:
[004] -------------------------->1
# Route 20 --------------------->2
Weather=Rain,100 --------------->3
Bicycle=true ------------------->4
MapPosition=0,6,4 -------------->5
Outdoor=true ------------------->6
EscapePoint=11,9,9 ------------->7
ShowArea=true ------------------>8
Este já é o exemplo de uma route, porem um pouquinho diferente.
1: isso eu já expliquei.
2: Isso também. rs
3: Isso é o efeito climático do local, neste esta chuva, para colocar outro efeito basta substituí-lo por:
- Neve: Snow,100
- Areia: Sandstorm,100
- Tempestade: Storm,100
- Chuva: Rain,100
*Não sei para que serve e ñ os aconselho a mudar o valor 100!
4: Já falei!
5: Já falei!
6: Já falei!
7: Esta eu nãos sei bem, mas acho q é as coordenadas q você vai quando você usa DIG, sendo o primeiro numero para o ID do mapa, o segundo para coordenada X e o terceiro coordenada Y.
8: Já falei.
EX3:
[022] ------------------------>1
# Cave Dark ------------------>2
Bicycle=true ----------------->3
MapPosition=0,10,5 ----------->4
DarkMap=true ----------------->5
EscapePoint=11,21,17 --------->6
ShowArea=true ---------------->7
1,2,3 e 4: Já falei!
5: Este é o famoso efeito escuridão, q só pode ser retirado com FLASH!
6 e 7: Já falei.
Gente, é isso, agora é só registrar o mapa de vocês, e depois ir lá no arquivo "encounters" na pasta "PBS".
Encontros no mapa. "Encounters":
Aqui você irá colocar tudo o q é tipo de pokemons que ira aparecer em seu mapa.
EX1:
011 # Test Map
25,10,10
Land # Grama ================================================== ======
PIDGEY,16
PARAS,16
PARAS,16
RATTATA,17
RATTATA,18
PIDGEY,17
RATTATA,19
RATTATA,18
PIDGEY,19
RATTATA,18
PIDGEY,20
RATTATA,20
Water # Agua =============================================
MAGIKARP,2
GOLDEEN,3
POLIWAG,3
FEEBAS,3
FEEBAS,3
OldRod # vara de pesca 1 ====================================
MAGIKARP,2
GOLDEEN,3
GoodRod # vara de pesca 2 ===================================
MAGIKARP,2
GOLDEEN,3
POLIWAG,3
SuperRod # vara de pesca 3 ==================================
MAGIKARP,2
GOLDEEN,3
POLIWAG,3
FEEBAS,3
FEEBAS,3
HeadbuttLow # pokemons q são raramente vistos quando se usa headbutt==
PINECO,10
PINECO,10
PINECO,10
PINECO,10
AIPOM,10
AIPOM,10
AIPOM,10
AIPOM,10
HeadbuttHigh # pokemons q são sempre vistos quando se usa headbutt====
SPEAROW,10
SPEAROW,10
SPEAROW,10
SPEAROW,10
SPEAROW,10
SPEAROW,10
SPEAROW,10
SPEAROW,10
Bem ñ há muito o q falar disso.
###############################################
# AIPOM,10 = Nome do Pokemon,Nível do Pokemon #
###############################################
-Logo no inicio o 011 é o ID do mapa e o resto da linha é só comentário.
-Os valores abaixo (25,10,10), são em relação a densidade e ñ há necessidade de serem mudados, são até mesmo dispensáveis, caso queira, ñ os coloque.
-O Land, Warter, etc são os locais onde os pokemons podem aparecer, vou criar uma lista com eles.
* Land - Encontros na grama.
* Cave - Encontros a caverna.
* Water - Encontros na água.
* RockSmash - Quando usar RockSmash.
* OldRod - Quando usar o OldRod.
* GoodRod - Quando usar o GoodRod.
* SuperRod - Quando usar o SuperRod.
* HeadbuttLow - Pokemons que são raramente vistos quando se usa headbutt
* HeadbuttHigh - Pokemons que são quase sempre vistos quando se usa headbutt
* LandMorning - Encontros na grama, das 6 da tarde as 12 da noite.
* LandDay - Encontros na grama, das 12 noite as 8 da manhã.
* LandNight - Encontros na grama, 8 da manhã as 6 da tarde.
*O relógio do jogo esta ajustado com o Relógio do seu PC.
N° mínimo de tipos de encontros pr cada categoria varia, veja:
* Land/Cave: 12 tipos de encontros.
* Water/RockSmash: 5 tipos de encontros.
* OldRod: 2 tipos de encontros.
* GoodRod: 3 tipos de encontros.
* SuperRod: 5 tipos de encontros.
* HeadbuttHigh/HeadbuttLow: 8 tipos de encontros.
*Caso não sejam colocados no mínimo estes numero de tipos de encontros, o jogo da erro!
* Não é obrigatório colocar todos as categorias, caso ñ queira colocar alguma basta ignorar-la e pular para a próxima, porem evite modificar a ordem.
Como fazer para um NPC iniciar uma batalha com um pokemon Selvagem no Starter Kit:
Crie um evento, e use a opção chamar script e use o exemplo abaixo,
pbWildBattle(::PBSpecies::Nome do pokemon em letra maiuscula,lv,não altere)
Ex: Esse exemplo aqui abaixo ira chamar o pokemon Lucario, no nivel 25.
pbWildBattle(::PBSpecies::LUCARIO,25,1)
PokéMart Script
pbPokemonMart([PBItems::POKeBALL,PBItems::POTION,PBItems::ANTIDOTE,PBItems::PARLYZHEAL,PBItems::AWAKENING])
coloca chamar script e todos os itens tem que tar com letra maiúscula e escrito certo de preferencia xD
===============================
o do pokemart não vi em tuto algum explicando como fazer então criei este evento pra ficar igual ao mercado!
===============================
Se sua pokedex estiver dando erro use script no lugar da dela:
Script:
class Window_Pokedex < SpriteWindow_Selectable
attr_reader :baseColor
attr_reader :shadowColor
def initialize(x,y,width,height)
@starting=true
super(x,y,width,height)
@selarrow=AnimatedBitmap.new("Graphics/Pictures/selarrow")
@pokeball=AnimatedBitmap.new("Graphics/Pictures/pokeball")
@baseColor=Color.new(9<<3,9<<3,9<<3)
@shadowColor=Color.new(26<<3,26<<3,26<<3)
self.index=0
@commands=[]
@item_max=0
@starting=false
refresh
end
def commands=(value)
@commands=value
refresh
end
def dispose
@selarrow.dispose
@pokeball.dispose
super
end
def species
return @commands.length==0 ? 0 : @commands[self.index][0]
end
def refresh
return if @starting
@item_max=@commands.length
dheight=self.height-32
dwidth=self.width-32
if !self.contents || self.contents.disposed? ||
self.contents.height<dheight || self.contents.width<dwidth
self.contents.dispose if self.contents
self.contents=Bitmap.new([1,dwidth].max,[1,dheight].max)
pbSetSystemFont(self.contents)
end
self.contents.clear
contentsWidth=self.contents.width
ypos=0
for i in 0...@item_max
if i<self.top_row || i>self.top_row+self.page_row_max
next
end
pbCopyBitmap(self.contents,@selarrow.bitmap,0,ypos) if self.index==i
indexNumber=@commands[i][4]
species=@commands[i][0]
if $Trainer.seen[species]
j=self.top_row
if $Trainer.owned[species]
pbCopyBitmap(self.contents,@pokeball.bitmap,210,(i-j)*32)
end
text=_ISPRINTF("No.{1:03d} {2:s}",indexNumber,@commands[i][1])
else
text=_ISPRINTF("No.{1:03d} ----------",indexNumber)
end
self.contents.font.color=@shadowColor
pbDrawShadow(self.contents,center=+1,ypos,self.contents.width-16,32,text)
self.contents.font.color=@baseColor
self.contents.draw_text(center=+1,ypos,self.contents.width-16,32,text)
ypos+=32
end
end
def update
dorefresh=false
oldindex=self.index
super
dorefresh=(self.index!=oldindex)
refresh if dorefresh
end
end
class Window_ComplexCommandPokemon < SpriteWindow_Selectable
attr_reader :baseColor
attr_reader :shadowColor
attr_reader :commands
def getAutoDims(commands,dims,width=nil)
windowheight=commands.length*32+32
windowheight=33 if windowheight<33
if !width || width<0
width=0
tmpbitmap=Bitmap.new(1,1)
pbSetSystemFont(tmpbitmap)
for i in commands
width=[width,tmpbitmap.text_size(i).width].max
end
width+=64
tmpbitmap.dispose
else
width=[33,width].max
end
dims[0]=width
dims[1]=windowheight
end
def initialize(commands,width=nil)
@starting=true
@commands=commands
dims=[]
getAutoDims(commands,dims,width)
super(0,0,dims[0],dims[1])
@item_max=commands.length
@selarrow=AnimatedBitmap.new("Graphics/Pictures/selarrow")
@index=0
self.active=true
@baseColor=Color.new(12*8,12*8,12*8)
@shadowColor=Color.new(26*8,26*8,25*8)
refresh
@starting=false
end
def self.newEmpty(x,y,width,height,viewport=nil)
ret=self.new([],width)
ret.x=x
ret.y=y
ret.width=width
ret.height=height
ret.viewport=viewport
return ret
end
def index=(value)
super
refresh if !@starting
end
def indexToCommand(index)
curindex=0
i=0; loop do break unless i<@commands.length
return [i/2,-1] if index==curindex
curindex+=1
return [i/2,index-curindex] if index-curindex<commands[i+1].length
curindex+=commands[i+1].length
i+=2
end
return [-1,-1]
end
def getText(array,index)
cmd=indexToCommand(index)
return "" if cmd[0]==-1
return array[cmd[0]*2] if cmd[1]<0
return array[cmd[0]*2+1][cmd[1]]
end
def commands=(value)
@commands=value
@item_max=commands.length
self.index=self.index
end
def width=(value)
super
if !@starting
self.index=self.index
end
end
def height=(value)
super
if !@starting
self.index=self.index
end
end
def resizeToFit(commands)
dims=[]
getAutoDims(commands,dims)
self.width=dims[0]
self.height=dims[1]
end
def dispose
@selarrow.dispose
super
end
def baseColor=(value)
@baseColor=value
refresh
end
def shadowColor=(value)
@shadowColor=value
refresh
end
def refresh
dwidth=self.width-32
dheight=self.height-32
@item_max=0
i=0; loop do break unless i<@commands.length
@item_max+=1+@commands[i+1].length
i+=2
end
if !self.contents || self.contents.disposed? ||
self.contents.width<dwidth ||
self.contents.height<dheight
self.contents.dispose if self.contents
self.contents=Bitmap.new([1,dwidth].max,[1,dheight].max)
pbSetSystemFont(self.contents)
end
self.contents.clear
contentsWidth=self.contents.width
ypos=0
icommand=0
i=0; loop do break unless i<@commands.length
if icommand>=self.top_row && icommand<self.top_row+self.page_row_max
self.contents.font.color=self.shadowColor
pbDrawShadow(self.contents,0,ypos,contentsWidth,32,@commands[i])
self.contents.font.color=self.baseColor
self.contents.draw_text(0,ypos,contentsWidth,32,@commands[i])
ypos+=32
end
icommand+=1
for j in 0...@commands[i+1].length
if icommand>=self.top_row && icommand<self.top_row+self.page_row_max
pbCopyBitmap(self.contents,@selarrow.bitmap,0,ypos) if self.index==icommand
self.contents.font.color=self.shadowColor
pbDrawShadow(self.contents,16,ypos,contentsWidth-16,32,@commands[i+1][j])
self.contents.font.color=self.baseColor
self.contents.draw_text(16,ypos,contentsWidth-16,32,@commands[i+1][j])
ypos+=32
end
icommand+=1
end
i+=2
end
end
def update
oldindex=self.index
super
refresh if self.index!=oldindex
end
end
class PokemonPokedexScene
def setIconBitmap(file)
@sprites["icon"].setBitmap(file)
if @sprites["icon"].bitmap
@sprites["icon"].ox=@sprites["icon"].bitmap.width/2
@sprites["icon"].oy=@sprites["icon"].bitmap.height/2
end
end
#
# Gets the region used for displaying Pokédex entries.
# Species will be listed according to the given region's
# numbering and the returned region can have any value
# defined in the town map data file. It's currently
# set to the return value of pbGetCurrentRegion,
# and thus will change according to the current map's
# MapPosition metadata setting.
#
def pbGetPokedexRegion
return pbGetCurrentRegion()
end
def pbStartScene
@sprites={}
@viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
@viewport.z=99999
@sprites["pokedex"]=Window_Pokedex.new(
160,0,Graphics.width-160,Graphics.height)
@sprites["pokedex"].viewport=@viewport
@sprites["dexentry"]=IconSprite.new(0,0,@viewport)
@sprites["dexentry"].setBitmap("Graphics/Pictures/dexentry")
@sprites["dexentry"].visible=false
@sprites["overlay"]=SpriteWrapper.new(@viewport)
@sprites["overlay"].bitmap=Bitmap.new(Graphics.width,Graphics.height)
pbSetSystemFont(@sprites["overlay"].bitmap)
@sprites["overlay"].x=0
@sprites["overlay"].y=0
@sprites["overlay"].visible=false
@sprites["iconback"]=IconWindow.new(0,0,160,160)
@sprites["iconback"].viewport=@viewport
@sprites["auxlist"]=Window_CommandPokemon.newEmpty(272,0,208,224,@viewport)
@sprites["searchlist"]=Window_ComplexCommandPokemon.newEmpty(0,0,272,224,@viewport)
@sprites["infowindow"]=Window_UnformattedTextPokemon.newWithSize("",0,160,160,160,@viewport)
@sprites["messagebox"]=Window_UnformattedTextPokemon.new("")
pbBottomLeftLines(@sprites["messagebox"],2)
@sprites["messagebox"].letterbyletter=false
@sprites["messagebox"].visible=false
@sprites["messagebox"].viewport=@viewport
@sprites["auxlist"].visible=false
@sprites["searchlist"].visible=false
addBackgroundPlane(@sprites,"searchbg","searchbg",@viewport)
=begin
# Suggestion for changing the background depending on region. You
# can change the line below with the following:
if pbGetPokedexRegion()==-1 # Using national Pokédex
addBackgroundPlane(@sprites,"background","pokedexbg_national",@viewport)
elsif pbGetPokedexRegion()==0 # Using regional Pokédex
addBackgroundPlane(@sprites,"background","pokedexbg_regional",@viewport)
end
=end
addBackgroundPlane(@sprites,"background","pokedexbg",@viewport)
@sprites["searchbg"].visible=false
@sprites["icon"]=IconSprite.new(80,80,@viewport)
@searchResults=false
pbRefreshDexList($PokemonGlobal.pokedexIndex)
pbFadeInAndShow(@sprites)
end
def pbDexSearchCommands(commands,selitem,helptexts=nil)
ret=-1
auxlist=@sprites["auxlist"]
messagebox=@sprites["messagebox"]
auxlist.commands=commands
auxlist.index=selitem
messagebox.text=helptexts ? helptexts[auxlist.index] : ""
loop do
Graphics.update
Input.update
oldindex=auxlist.index
auxlist.update
if auxlist.index!=oldindex && helptexts
messagebox.text=helptexts[auxlist.index]
end
if Input.trigger?(Input::B)
ret=selitem
break
end
if Input.trigger?(Input::C)
ret=auxlist.index
break
end
end
@sprites["auxlist"].commands=[]
Input.update
return ret
end
def pbCanAddForModeList?(mode,nationalSpecies)
case mode
when 0
return true
when 1
return $Trainer.seen[nationalSpecies]
when 2, 3, 4, 5
return $Trainer.owned[nationalSpecies]
end
end
def pbCanAddForModeSearch?(mode,nationalSpecies)
case mode
when 0, 1
return $Trainer.seen[nationalSpecies]
when 2, 3, 4, 5
return $Trainer.owned[nationalSpecies]
end
end
def pbGetDexList()
dexlist=[]
dexdata=pbOpenDexData
region=pbGetPokedexRegion()
regionalSpecies=pbAllRegionalSpecies(region)
if regionalSpecies.length==1
# No regional species defined,
# use national Pokédex order
for i in 1..PBSpecies.getCount
regionalSpecies.push(i)
end
end
for i in 1...regionalSpecies.length
nationalSpecies=regionalSpecies[i]
if pbCanAddForModeList?($PokemonGlobal.pokedexMode,nationalSpecies)
pbDexDataOffset(dexdata,nationalSpecies,33)
height=dexdata.fgetw
weight=dexdata.fgetw
# Pushing national species, name, height, weight, index number
dexlist.push([nationalSpecies,
PBSpecies.getName(nationalSpecies),height,weight,i])
end
end
dexdata.close
return dexlist
end
def pbRefreshDexList(index=0)
dexlist=pbGetDexList()
case $PokemonGlobal.pokedexMode
when 0 # Numerical mode
# Remove species not seen from the list
i=0; loop do break unless i<dexlist.length
break if $Trainer.seen[dexlist[i][0]]
dexlist[i]=nil
i+=1
end
i=dexlist.length-1; loop do break unless i>=0
break if !dexlist[i] || $Trainer.seen[dexlist[i][0]]
dexlist[i]=nil
i-=1
end
dexlist.compact!
# Sort species in ascending order by
# index number, not national species
dexlist.sort!{|a,b| a[4]<=>b[4]}
when 1 # Alphabetical mode
dexlist.sort!{|a,b| a[1]<=>b[1]}
when 2 # Heaviest mode
dexlist.sort!{|a,b| b[3]<=>a[3]}
when 3 # Lightest mode
dexlist.sort!{|a,b| a[3]<=>b[3]}
when 4 # Tallest mode
dexlist.sort!{|a,b| b[2]<=>a[2]}
when 5 # Smallest mode
dexlist.sort!{|a,b| a[2]<=>b[2]}
end
if !@searchResults
@sprites["infowindow"].text=_ISPRINTF("SEEN: {1:d}\r\nOWN: {2:d}\r\nZ: MENU\r\nF5: SEARCH",$Trainer.pokedexSeen,$Trainer.pokedexOwned)
else
@sprites["infowindow"].text=_INTL("X: BACK\r\nZ: MENU\r\nF5: SEARCH")
end
@dexlist=dexlist
@sprites["pokedex"].commands=@dexlist
@sprites["pokedex"].index=index
@sprites["pokedex"].refresh
iconspecies=@sprites["pokedex"].species
iconspecies=0 if !$Trainer.seen[iconspecies]
setIconBitmap(pbPokemonBitmapFile(iconspecies,false))
end
def pbSearchDexList(params)
dexlist=pbGetDexList()
if params[0]!=0 # Filter by name
nameCommands=[
"",_INTL("ABC"),_INTL("DEF"),_INTL("GHI"),
_INTL("JKL"),_INTL("MNO"),_INTL("PQR"),
_INTL("STU"),_INTL("VWX"),_INTL("YZ")
]
scanNameCommand=nameCommands[params[0]].scan(/./)
dexlist=dexlist.find_all {|item|
firstChar=item[1][0,1]
next scanNameCommand.any? { |v| v==firstChar }
}
end
if params[1]!=0 # Filter by color
dexlist=dexlist.find_all {|item|
dexdata.pos=76*(item[0]-1)+6
color=dexdata.fgetb
next color==params[1]-1
}
end
if params[2]!=0 || params[3]!=0 # Filter by type
typeCommands=[
-1,0,1,2,3,4,5,6,7,8,
10,11,12,13,14,15,16,17
]
stype1=typeCommands[params[2]]
stype2=typeCommands[params[3]]
dexlist=dexlist.find_all {|item|
dexdata.pos=76*(item[0]-1)+8
type1=dexdata.fgetb
type2=dexdata.fgetb
if stype1>=0 && stype2>=0
# Find species that match both types
next (stype1==type1 && stype2==type2) ||
(stype1==type2 && stype2==type1)
elsif stype1>=0
# Find species that match first type entered
next type1==stype1 || type2==stype1
else
# Find species that match second type entered
next type1==stype2 || type2==stype2
end
}
end
dexdata.close
case params[4]
when 0 # Numerical mode
# Sort by index number, not
# national number
dexlist.sort!{|a,b| a[4]<=>b[4]}
when 1 # Alphabetical mode
dexlist.sort!{|a,b| a[1]<=>b[1]}
when 2 # Heaviest mode
dexlist.sort!{|a,b| b[3]<=>a[3]}
when 3 # Lightest mode
dexlist.sort!{|a,b| a[3]<=>b[3]}
when 4 # Tallest mode
dexlist.sort!{|a,b| b[2]<=>a[2]}
when 5 # Smallest mode
dexlist.sort!{|a,b| a[2]<=>b[2]}
end
return dexlist
end
def pbRefreshDexSearch(params)
searchlist=@sprites["searchlist"]
messagebox=@sprites["messagebox"]
searchlist.commands=[
_INTL("SEARCH"),[
_ISPRINTF("NAME: {1:s}",@nameCommands[params[0]]),
_ISPRINTF("COLOR: {1:s}",@colorCommands[params[1]]),
_ISPRINTF("TYPE 1: {1:s}",@typeCommands[params[2]]),
_ISPRINTF("TYPE 2: {1:s}",@typeCommands[params[3]]),
_ISPRINTF("ORDER: {1:s}",@orderCommands[params[4]]),
_INTL("START SEARCH")
],
_INTL("SHIFT"),[
_ISPRINTF("ORDER: {1:s}",@orderCommands[params[5]]),
_INTL("START SHIFT")
],
_INTL("OTHER"),[
_INTL("CANCEL")
]
]
helptexts=[
_INTL("Search for Pokémon based on selected parameters."),[
_INTL("List by the first letter in the name.\r\nSpotted Pokémon only."),
_INTL("List by body color.\r\nSpotted Pokémon only."),
_INTL("List by type.\r\nOwned Pokémon only."),
_INTL("List by type.\r\nOwned Pokémon only."),
_INTL("Select the Pokédex listing mode."),
_INTL("Execute search."),
],
_INTL("Switch Pokédex listings."),[
_INTL("Select the Pokédex listing mode."),
_INTL("Execute switch."),
],
_INTL("Return to the Pokédex."),[
_INTL("Return to the Pokédex.")
]
]
messagebox.text=searchlist.getText(helptexts,searchlist.index)
end
def pbChangeToDexEntry(species)
@sprites["dexentry"].visible=true
@sprites["overlay"].visible=true
@sprites["overlay"].bitmap.clear
basecolor=Color.new(0,0,0)
shadowcolor=Color.new(184,184,184)
indexNumber=pbGetRegionalNumber(pbGetPokedexRegion(),species)
indexNumber=species if indexNumber==0
textpos=[
[_ISPRINTF("No. {1:03d} {2:s}",indexNumber,PBSpecies.getName(species)),96*2,24*2,0,basecolor,shadowcolor],
[sprintf(_INTL("HT")),96*2,56*2,0,basecolor,shadowcolor],
[sprintf(_INTL("WT")),96*2,72*2,0,basecolor,shadowcolor]
]
if $Trainer.owned[species]
dexdata=pbOpenDexData
pbDexDataOffset(dexdata,species,33)
height=dexdata.fgetw
weight=dexdata.fgetw
dexdata.close
kind=pbGetMessage(MessageTypes::Kinds,species)
dexentry=pbGetMessage(MessageTypes::Entries,species)
inches=(height/0.254).round
pounds=(weight/0.45359).round
textpos.push([_ISPRINTF("{1:s} POKéMON",kind),100*2,40*2,0,basecolor,shadowcolor])
textpos.push([_ISPRINTF("{1:.1f} m",height/10.0),184*2,56*2,1,basecolor,shadowcolor])
textpos.push([_ISPRINTF("{1:.1f} kg",weight/10.0),184*2,72*2,1,basecolor,shadowcolor])
# textpos.push([_ISPRINTF("{1:d}'{2:02d}\"",inches/12,inches%12),146*2,56*2,0,basecolor,shadowcolor])
# textpos.push([_ISPRINTF("{1:4.1f} lbs.",pounds/10),184*2,72*2,1,basecolor,shadowcolor])
drawTextEx(@sprites["overlay"].bitmap,
8*2,96*2,232*2,4,dexentry,basecolor,shadowcolor)
else
textpos.push([_INTL("????? POKéMON"),100*2,40*2,0,basecolor,shadowcolor])
textpos.push([_INTL("???.? m"),184*2,56*2,1,basecolor,shadowcolor])
textpos.push([_INTL("???.? kg"),184*2,72*2,1,basecolor,shadowcolor])
# textpos.push([_INTL("??'??\""),146*2,56*2,0,basecolor,shadowcolor])
# textpos.push([_INTL("???.? lbs."),184*2,72*2,1,basecolor,shadowcolor])
end
pbDrawTextPositions(@sprites["overlay"].bitmap,textpos)
pkmnbitmap=AnimatedBitmap.new(pbPokemonBitmapFile(species,false))
@sprites["overlay"].bitmap.blt(
40-(pkmnbitmap.width-128)/2,
48-(pkmnbitmap.height-128)/2,
pkmnbitmap.bitmap,pkmnbitmap.bitmap.rect)
pkmnbitmap.dispose
pbPlayCry(species)
pbFadeInAndShow(@sprites)
end
def pbStartDexEntryScene(species)
@sprites={}
@viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
@viewport.z=99999
@sprites["dexentry"]=IconSprite.new(0,0,@viewport)
@sprites["dexentry"].setBitmap("Graphics/Pictures/dexentry")
@sprites["dexentry"].visible=false
@sprites["overlay"]=SpriteWrapper.new(@viewport)
@sprites["overlay"].bitmap=Bitmap.new(Graphics.width,Graphics.height)
pbSetSystemFont(@sprites["overlay"].bitmap)
@sprites["overlay"].x=0
@sprites["overlay"].y=0
@sprites["overlay"].visible=false
pbChangeToDexEntry(species)
end
def pbMiddleDexEntryScene
loop do
Graphics.update
Input.update
if Input.trigger?(Input::B) || Input.trigger?(Input::C)
break
end
end
end
def pbDexEntry(index)
oldsprites=pbFadeOutAndHide(@sprites)
pbChangeToDexEntry(@dexlist[index][0])
curindex=index
loop do
Graphics.update
Input.update
if Input.trigger?(Input::C)
pbFadeOutAndHide(@sprites)
scene=PokemonAreaMapScene.new
screen=PokemonAreaMap.new(scene)
screen.pbStartScreen(@dexlist[curindex][0])
pbChangeToDexEntry(@dexlist[curindex][0])
elsif Input.trigger?(Input::B)
break
elsif Input.trigger?(Input::A)
pbPlayCry(@dexlist[curindex][0])
elsif Input.trigger?(Input::UP)
nextindex=-1
i=curindex-1; loop do break unless i>=0
if $Trainer.seen[@dexlist[i][0]]
nextindex=i
break
end
i-=1
end
if nextindex>=0
Input.update
pbFadeOutAndHide(@sprites)
pbChangeToDexEntry(@dexlist[nextindex][0])
curindex=nextindex
end
next
elsif Input.trigger?(Input::DOWN)
nextindex=-1
for i in curindex+1...@dexlist.length
if $Trainer.seen[@dexlist[i][0]]
nextindex=i
break
end
end
if nextindex>=0
Input.update
pbFadeOutAndHide(@sprites)
pbChangeToDexEntry(@dexlist[nextindex][0])
curindex=nextindex
end
next
end
end
pbFadeOutAndHide(@sprites)
$PokemonGlobal.pokedexIndex=curindex if !@searchResults
@sprites["pokedex"].index=curindex
@sprites["pokedex"].refresh
iconspecies=@sprites["pokedex"].species
iconspecies=0 if !$Trainer.seen[iconspecies]
setIconBitmap(pbPokemonBitmapFile(iconspecies,false))
pbFadeInAndShow(@sprites,oldsprites)
end
def pbDexSearch
oldsprites=pbFadeOutAndHide(@sprites)
params=[]
params[0]=0
params[1]=0
params[2]=0
params[3]=0
params[4]=0
params[5]=$PokemonGlobal.pokedexMode
@nameCommands=[
_INTL("DON'T SPECIFY"),
_INTL("ABC"),_INTL("DEF"),_INTL("GHI"),
_INTL("JKL"),_INTL("MNO"),_INTL("PQR"),
_INTL("STU"),_INTL("VWX"),_INTL("YZ")
]
@typeCommands=[
_INTL("NONE"),
_INTL("NORMAL"),_INTL("FIGHTING"),_INTL("FLYING"),
_INTL("POISON"),_INTL("GROUND"),_INTL("ROCK"),
_INTL("BUG"),_INTL("GHOST"),_INTL("STEEL"),
_INTL("FIRE"),_INTL("WATER"),_INTL("GRASS"),
_INTL("ELECTRIC"),_INTL("PSYCHIC"),_INTL("ICE"),
_INTL("DRAGON"),_INTL("DARK")
]
@colorCommands=[
_INTL("DON'T SPECIFY"),
_INTL("RED"),_INTL("BLUE"),_INTL("YELLOW"),
_INTL("GREEN"),_INTL("BLACK"),_INTL("BROWN"),
_INTL("PURPLE"),_INTL("GRAY"),_INTL("WHITE"),_INTL("PINK")
]
@orderCommands=[
_INTL("NUMERIC MODE"),
_INTL("A TO Z MODE"),
_INTL("HEAVIEST MODE"),
_INTL("LIGHTEST MODE"),
_INTL("TALLEST MODE"),
_INTL("SMALLEST MODE")
]
@orderHelp=[
_INTL("Pokémon are listed according to their number."),
_INTL("Spotted and owned Pokémon are listed alphabetically."),
_INTL("Owned Pokémon are listed from the heaviest to the lightest."),
_INTL("Owned Pokémon are listed from the lightest to the heaviest."),
_INTL("Owned Pokémon are listed from the tallest to the smallest."),
_INTL("Owned Pokémon are listed from the smallest to the tallest.")
]
@sprites["searchlist"].index=1
searchlist=@sprites["searchlist"]
messagebox=@sprites["messagebox"]
@sprites["messagebox"].visible=true
@sprites["auxlist"].visible=true
@sprites["searchlist"].visible=true
@sprites["searchbg"].visible=true
pbRefreshDexSearch(params)
pbFadeInAndShow(@sprites)
loop do
Graphics.update
Input.update
oldindex=searchlist.index
searchlist.update
if searchlist.index!=oldindex
pbRefreshDexSearch(params)
end
if Input.trigger?(Input::C)
command=searchlist.indexToCommand(searchlist.index)
if command==[2,0]
break
end
if command==[0,0]
params[0]=pbDexSearchCommands(@nameCommands,params[0])
pbRefreshDexSearch(params)
elsif command==[0,1]
params[1]=pbDexSearchCommands(@colorCommands,params[1])
pbRefreshDexSearch(params)
elsif command==[0,2]
params[2]=pbDexSearchCommands(@typeCommands,params[2])
pbRefreshDexSearch(params)
elsif command==[0,3]
params[3]=pbDexSearchCommands(@typeCommands,params[3])
pbRefreshDexSearch(params)
elsif command==[0,4]
params[4]=pbDexSearchCommands(@orderCommands,params[4],@orderHelp)
pbRefreshDexSearch(params)
elsif command==[0,5]
dexlist=pbSearchDexList(params)
if dexlist.length==0
Kernel.pbMessage(_INTL("No matching Pokémon were found."))
else
@dexlist=dexlist
@sprites["pokedex"].commands=@dexlist
@sprites["pokedex"].index=0
@sprites["pokedex"].refresh
iconspecies=@sprites["pokedex"].species
iconspecies=0 if !$Trainer.seen[iconspecies]
@sprites["infowindow"].text=_INTL("X: BACK\r\nZ: MENU\r\nF5: SEARCH")
setIconBitmap(pbPokemonBitmapFile(iconspecies,false))
@searchResults=true
break
end
elsif command==[1,0]
params[5]=pbDexSearchCommands(@orderCommands,params[5],@orderHelp)
pbRefreshDexSearch(params)
elsif command==[1,1]
$PokemonGlobal.pokedexMode=params[5]
pbRefreshDexList
break
end
elsif Input.trigger?(Input::B)
break
end
end
pbFadeOutAndHide(@sprites)
pbFadeInAndShow(@sprites,oldsprites)
Input.update
return 0
end
def pbMenu
ret=0
commands=[_INTL("BACK TO LIST"),_INTL("LIST TOP"),_INTL("LIST BOTTOM"),_INTL("CLOSE POKéDEX")]
using(cmdwindow=Window_CommandPokemon.new(commands)) {
cmdwindow.viewport=@viewport
cmdwindow.resizeToFit(cmdwindow.commands)
pbBottomRight(cmdwindow)
loop do
Graphics.update
Input.update
cmdwindow.update
if Input.trigger?(Input::B)
ret=0
break
end
if Input.trigger?(Input::C)
ret=cmdwindow.index
break
end
end
}
return ret
end
def pbCloseSearch
oldsprites=pbFadeOutAndHide(@sprites)
@searchResults=false
pbRefreshDexList($PokemonGlobal.pokedexIndex)
pbFadeInAndShow(@sprites,oldsprites)
end
def pbPokedex
loop do
Graphics.update
Input.update
oldindex=@sprites["pokedex"].index
@sprites["pokedex"].update
if oldindex!=@sprites["pokedex"].index
$PokemonGlobal.pokedexIndex=@sprites["pokedex"].index if !@searchResults
iconspecies=@sprites["pokedex"].species
iconspecies=0 if !$Trainer.seen[iconspecies]
setIconBitmap(pbPokemonBitmapFile(iconspecies,false))
end
@sprites["icon"].update
if Input.trigger?(Input::B)
if @searchResults
pbCloseSearch
else
break
end
elsif Input.trigger?(Input::C)
if $Trainer.seen[@sprites["pokedex"].species]
pbDexEntry(@sprites["pokedex"].index)
end
elsif Input.trigger?(Input::F5)
pbDexSearch
elsif Input.trigger?(Input::A)
retval=pbMenu
case retval
when 1 # List Top
@sprites["pokedex"].index=1
when 2 # List Bottom
@sprites["pokedex"].index=@sprites["pokedex"].count-1
when 3
if @searchResults
pbCloseSearch
else
break
end
end
end
end
end
def pbEndScene
pbFadeOutAndHide(@sprites)
pbDisposeSpriteHash(@sprites)
@viewport.dispose
end
end
class PokemonPokedex
def initialize(scene)
@scene=scene
end
def pbDexEntry(species)
@scene.pbStartDexEntryScene(species)
@scene.pbMiddleDexEntryScene
@scene.pbEndScene
end
def pbStartScreen
@scene.pbStartScene
@scene.pbPokedex
@scene.pbEndScene
end
end
Creditos:
eduardomk(Membro da Mrm)
RPG Maker em Português Programa
E o programa de criação de jogos de RMXP com ele você pode fazer games com graficos de Nintendo DS ou ate melhor basta saber usalo. Para que o programa funcione baixe o RGSS-RTP-Standard-pt-br disponivel abaixo.
Download RPG Maker Xp
Download RGSS-RTP-Standard-pt-br
Pokémon Starter Kit
Pokemon starter kit é o melhor conjunto de scripts para criar um jogo de pokemon.
Pokémon Starter Kit
Pokémons de Unova Starter Kit
Para instalar extraia o pack e coloca os arquivos em suas respectivas pastas...
e na pasta PBS substitua os antigos.
Download do pack Unova Starter Kit
Tutorial
Começando o seu jogo:
Façam uma copia do starter kit para se tiver uma duvida, u perder algum arquivo importante você podera o pegar la. Abra um dos "starters kits" e delete todos os mapas menos o primeiro que é a Intro.
Modificando as coisas principais:
Primeiro abra o "Editor.exe" que esta dentro da pasta do seu jogo. Va em "Visual Editor". Você vera o mapa que você estava mexendo no RPG Maker.
Clique no fundo e abrira uma janelinha escrito:
Home(1)
Player A,B,C e D(2)
Storage Creator(3)
WildBattleBGM(4)
WildVictoryME(5)
TrainerVictoryME(6)
TextSkin(7)
SurfBGM(8)
BicicleBGM(9)
1 = A casa do personagem. Se ele perder uma batalha, e nunca tiver curado seus Pokémon nu centro pokémon, você devera se curar em casa.
2 = O grafico dos personagens, recomendo deixar somente 2, pois o A é o menino e o B é a menina.
3 = Aquele que fez os boxes, (ex: Bill, Lannette, etc...).
4 = A musica de batalha quando encontra um pokémon selvagem.
5 = A musica de quando você ganha de um pokémon selvagem.
6 = A musica de quando você ganha de um treinador.
7 = O estilo da caixa de texto.
8 = A musica de quando você usa o HM SURF.
9 = A musica de quando você esta na bicicleta.
Criando e modificando mapas:
Abra o RPG Maker, e crie um Mapa com os tiles do starter kit. Crie um mapa que ficara ao lado dele(não importa qual lado). Abra connections.txt que esta na pasta PBS e apague tudo que esta la. Depois faça o seguinte:
# Area 1 (4) - Area 2 (5)
4,East,0,5,West,0
Area 1 e Area 2 = Os nomes dos mapas
4, 5, (4) e (5) = As IDs dos mapas
East e West = Direção onde esta o mapa que sera conectado ao primeiro mapa.(North = Norte, South = Sul, East = Leste, West = Oeste) PS: O numero da esquerda é o ID do mapa. Exemplo simples:
Area 1 com o ID 4 sera conectada com o Leste dela que é a Area 2 com o ID 5 que sera conectada com a outra pelo Oeste.
Agora os Pokémon selvagens:
Abra o Editor, e depois em "Set Encounters". Selecione o nosso mapa e clique.
Aparecera Isso:
Land
Water
OldRod
GoodRod
SuperRod
HeadbuttLow
HeadbuttHigh
Land = Os pokémons que aparecerão na grama.
Water = Os pokémons que aparecerão na agua.
OldRod = Os pokémons que aparecerão se agente pesca com uma Old Rod.
GoodRod = Os pokémons que aparecerão se agente pesca com uma Good Rod.
SuperRod = Os pokémons que aparecerão se agente pesca com uma Super Rod.
HeadbuttLow = Os pokémons que aparecerão se agente usa Headbutt.
HeadbuttHigh = Os pokémons que aparecerão se agente usa Headbutt, so que um Headbutt forte.
Batalhas de treinadores:
Crie um evento chamado "Traner (#)" O # sera a visão do treinador, ex.: Trainer (4) Se eu estiver 5 quadradihos (passos) ou mais longe dele, ele não me vera, mas se eu tiver de 4 passos ou menos perto dele, ele me vera.
Crie 2 paginas, na primeira faça:
Comentario: "Battle: (1)"
Comentario: "Type: (2)"
Comentario: "Name: (3)"
Comentario: "EndSpeech: (4)"
Comentario: "EndBattle: (5)"
Comentario: "EndIfSwitch: (6)"
Script: "pbTrainerIntro(:YOUNGSTER) (7)"
Script: "Kernel.pbNoticePlayer(get_character(0))" (8)
Texto: (9)
Condição(script): "pbTrainerBattle(PBTrainers::YOUNGSTER,"Jimmy",_I( "Eu perdi?"),false,0) (" (10)
Se a condição for feita: "Operação Switch Local A"
FIM
Script: "pbTrainerEnd" (11)
1 = O que o treinador vai falar quando te encontrar.
2 = O tipo do treinador: YOUNGSTER, EXPERT_Male (OBS.: O nome dos personagens é diferente do que aparece no jogo, então va em PBS, trainernames.txt e na esquerda você vera o nome deles para escrever la nos eventos, e na direita você vera o que aparecera no jogo.).
3 = O nome do treinador. Ex.: Youngster "Jimmy" (So escreva o nome do treinador e não o tipo.).
4 = O que o treinador dira no fim da batalha.
5 = O que o treinador dira se você falar com ele e ja tiver derrotado ele.
6 = Eu néao sei o que é. E é melhor deixar 27.
7 = Substitua YOUNGSTER por aquilo que você escreveu no 2° comentario.
8 = Deixe o que estiver la.
9 = Escreva a mesma coisa que você escreveu no 1° comentario.
10 = Substitua YOUNGSTER pelo tipo do treinador, Jimmy pelo nome do treinador, e "Eu perdi?" por o que o treinador vai falar quando te encontrar.
11 = Esse é o script do fim da batalha. Não modifique isso.
Na segunda pagina:
Coloque para funcionar somente se o switch local A estiver ativado.
Texto: (12)
12 = Escreva a mesma coisa que escreveu no 5° comentario.
Agora teste o jogo e fale com o treinador. Ele dira que não o encontrou. Clique em YES e depois escolha o seu primeiro pokémon. Depois vai pedir o nivel dele aperte para cima para aumentar o nivel, e para baixo para abaixar o nivel. Ai ele vai Perguntar se quer colocar mais um pokémon, clique em YES para colocar mais um pokémon e NO para deixar o treinador o jeito que esta.
Os lideres de GYM:
Crie um evento com 2 paginas:
Na primeira pagina faça:
Texto: Você chegou longe, Mas você pode me vencer?(1)
Condição(script): pbTrainerBattle(PBTrainers::LEADER_Roxanne,"Roxy", _I("Muito bom.")) (2)
Reproduzir BGM: 'badge adquired', 100, 100(3)
Texto: Você ganhou a insignia da (nome da insignia)! (4)
Script: $Trainer.badges[0]=true(5)
Reproduzir BGM: 'gym', 100, 100(6)
Operação switch local A = On
FIM
1 = O que a lider fala antes da batalha.
2 = Substitua Roxanne pelo nome do lider do R\S\E para saber(Roxanne = 1° lider), Substitua Roxy pelo nome do lider de GYM, e substitua "Muito bom" por o que a lider dira no fim da batalha.
3 = A musica de quando ganha a insignia.
4 = substitua (nome da insignia) pelo tipo (ex: Você ganhou a insignia da pedra!).
5 = O numero de insignias. Substitua 0 pelo numero de insignias(OBS.: 0 = 1 insignias, 1 = 2 insignias, etc...)
6 = Esse comando é para voltar a musica do GYM, sem este comando tocaria 'badge adquired' até que você troque de mapa, ou até que tenha um outro comando de mudar BGM.
Na segunda pagina faça:
Coloque para funcionar somente se o switch local A estiver ativado.
Texto: (12)
12 = O que o lider de GYM fala se você clica nele e ja tiver ganhado dele.
Outros comandos uteis:
Sistema de Sombra: Comentario: begin Shadow Source(crie um evento com a ativação "Pressinar Tecla" no local onde o sol estara.
Berry: Script: pbBerryPlant
Rock Smash:
Condição(script): Kernel.pbRockSmash
Script: pbEraseThisEvent
Script: Kernel.pbRockSmashRandomEncounter
Cut: Condição(Script): Kernel.pbCut
Script: pbEraseThisEvent
Ganhar item: 1° pagina:
Condição(script): Kernel.pbItemBall(::PBItems::POTION)
Operação de switch local A
2° pagina:
Coloque para funcionar somente se o switch local A estiver ativado.
Surf: é so colocar agua e o menino(a) vai surfar.
Strenght: Script: pbPushThisBoulder
Headbutt: Script: pbHeadbutt
PC: Script: pbPokeCenterPC
Utilidade dos arquivos “METADATAS” E “ENCOUNTERS” no Pokestarter:
Crie seu mapa:
Feito isso vá na pasta de "PBS" e abra o arquivo com o nome "metadata".
Este metadata é tipo uma pasta de registros do seus mapas no jogo, sem esse “registro” do seu mapa as batalhas ficam com o title neutro ou sem efeito de dia e noite!
Bem então vamos aprender como "registrar" seu mapa.
EX 1:
[027] ----------------------------->1
# Route 1 ------------------------->2
Bicycle=true ---------------------->3
MapPosition=0,10,5 ---------------->4
Outdoor=true ---------------------->5
BicycleAlways=false --------------->6
ShowArea=true --------------------->7
Este é o exemplo de uma Route tradicional.
1: Isso acho que todos já sabem o q é. É o ID do mapa, e deve se sempre colocados entras colchetes.
2: Isso ñ é nada alem de uma explicação de a qual mapa você se refere, é apenas um comentário, + é bom para você se localizar melhor.
3: Isso não passa de uma permissão pr se poder andar de bicicleta, já q obviamente em pokemon você não pode andar de bicicleta onde te der vontade. Então caso você estiver querendo fazer um centro ou uma casa será "Bicycle=false".
4: Isso eu ñ seu bem pr q serve, + se deixar do jeito q esta, ele ñ irar influencia no seu mapa.
5: Este eu também não sei bem, basta deixar desse jeito. xD
6: Esta opção quando esta true (ou seja verdadeira) você não pode remover a bicicleta, como na ciclovia da ruby/safira.
7: Este eu também ñ sei bem para que serve, porem é obrigatório todos o mapas terem.
EX2:
[004] -------------------------->1
# Route 20 --------------------->2
Weather=Rain,100 --------------->3
Bicycle=true ------------------->4
MapPosition=0,6,4 -------------->5
Outdoor=true ------------------->6
EscapePoint=11,9,9 ------------->7
ShowArea=true ------------------>8
Este já é o exemplo de uma route, porem um pouquinho diferente.
1: isso eu já expliquei.
2: Isso também. rs
3: Isso é o efeito climático do local, neste esta chuva, para colocar outro efeito basta substituí-lo por:
- Neve: Snow,100
- Areia: Sandstorm,100
- Tempestade: Storm,100
- Chuva: Rain,100
*Não sei para que serve e ñ os aconselho a mudar o valor 100!
4: Já falei!
5: Já falei!
6: Já falei!
7: Esta eu nãos sei bem, mas acho q é as coordenadas q você vai quando você usa DIG, sendo o primeiro numero para o ID do mapa, o segundo para coordenada X e o terceiro coordenada Y.
8: Já falei.
EX3:
[022] ------------------------>1
# Cave Dark ------------------>2
Bicycle=true ----------------->3
MapPosition=0,10,5 ----------->4
DarkMap=true ----------------->5
EscapePoint=11,21,17 --------->6
ShowArea=true ---------------->7
1,2,3 e 4: Já falei!
5: Este é o famoso efeito escuridão, q só pode ser retirado com FLASH!
6 e 7: Já falei.
Gente, é isso, agora é só registrar o mapa de vocês, e depois ir lá no arquivo "encounters" na pasta "PBS".
Encontros no mapa. "Encounters":
Aqui você irá colocar tudo o q é tipo de pokemons que ira aparecer em seu mapa.
EX1:
011 # Test Map
25,10,10
Land # Grama ================================================== ======
PIDGEY,16
PARAS,16
PARAS,16
RATTATA,17
RATTATA,18
PIDGEY,17
RATTATA,19
RATTATA,18
PIDGEY,19
RATTATA,18
PIDGEY,20
RATTATA,20
Water # Agua =============================================
MAGIKARP,2
GOLDEEN,3
POLIWAG,3
FEEBAS,3
FEEBAS,3
OldRod # vara de pesca 1 ====================================
MAGIKARP,2
GOLDEEN,3
GoodRod # vara de pesca 2 ===================================
MAGIKARP,2
GOLDEEN,3
POLIWAG,3
SuperRod # vara de pesca 3 ==================================
MAGIKARP,2
GOLDEEN,3
POLIWAG,3
FEEBAS,3
FEEBAS,3
HeadbuttLow # pokemons q são raramente vistos quando se usa headbutt==
PINECO,10
PINECO,10
PINECO,10
PINECO,10
AIPOM,10
AIPOM,10
AIPOM,10
AIPOM,10
HeadbuttHigh # pokemons q são sempre vistos quando se usa headbutt====
SPEAROW,10
SPEAROW,10
SPEAROW,10
SPEAROW,10
SPEAROW,10
SPEAROW,10
SPEAROW,10
SPEAROW,10
Bem ñ há muito o q falar disso.
###############################################
# AIPOM,10 = Nome do Pokemon,Nível do Pokemon #
###############################################
-Logo no inicio o 011 é o ID do mapa e o resto da linha é só comentário.
-Os valores abaixo (25,10,10), são em relação a densidade e ñ há necessidade de serem mudados, são até mesmo dispensáveis, caso queira, ñ os coloque.
-O Land, Warter, etc são os locais onde os pokemons podem aparecer, vou criar uma lista com eles.
* Land - Encontros na grama.
* Cave - Encontros a caverna.
* Water - Encontros na água.
* RockSmash - Quando usar RockSmash.
* OldRod - Quando usar o OldRod.
* GoodRod - Quando usar o GoodRod.
* SuperRod - Quando usar o SuperRod.
* HeadbuttLow - Pokemons que são raramente vistos quando se usa headbutt
* HeadbuttHigh - Pokemons que são quase sempre vistos quando se usa headbutt
* LandMorning - Encontros na grama, das 6 da tarde as 12 da noite.
* LandDay - Encontros na grama, das 12 noite as 8 da manhã.
* LandNight - Encontros na grama, 8 da manhã as 6 da tarde.
*O relógio do jogo esta ajustado com o Relógio do seu PC.
N° mínimo de tipos de encontros pr cada categoria varia, veja:
* Land/Cave: 12 tipos de encontros.
* Water/RockSmash: 5 tipos de encontros.
* OldRod: 2 tipos de encontros.
* GoodRod: 3 tipos de encontros.
* SuperRod: 5 tipos de encontros.
* HeadbuttHigh/HeadbuttLow: 8 tipos de encontros.
*Caso não sejam colocados no mínimo estes numero de tipos de encontros, o jogo da erro!
* Não é obrigatório colocar todos as categorias, caso ñ queira colocar alguma basta ignorar-la e pular para a próxima, porem evite modificar a ordem.
Como fazer para um NPC iniciar uma batalha com um pokemon Selvagem no Starter Kit:
Crie um evento, e use a opção chamar script e use o exemplo abaixo,
pbWildBattle(::PBSpecies::Nome do pokemon em letra maiuscula,lv,não altere)
Ex: Esse exemplo aqui abaixo ira chamar o pokemon Lucario, no nivel 25.
pbWildBattle(::PBSpecies::LUCARIO,25,1)
PokéMart Script
pbPokemonMart([PBItems::POKeBALL,PBItems::POTION,PBItems::ANTIDOTE,PBItems::PARLYZHEAL,PBItems::AWAKENING])
coloca chamar script e todos os itens tem que tar com letra maiúscula e escrito certo de preferencia xD
===============================
o do pokemart não vi em tuto algum explicando como fazer então criei este evento pra ficar igual ao mercado!
===============================
Se sua pokedex estiver dando erro use script no lugar da dela:
Script:
class Window_Pokedex < SpriteWindow_Selectable
attr_reader :baseColor
attr_reader :shadowColor
def initialize(x,y,width,height)
@starting=true
super(x,y,width,height)
@selarrow=AnimatedBitmap.new("Graphics/Pictures/selarrow")
@pokeball=AnimatedBitmap.new("Graphics/Pictures/pokeball")
@baseColor=Color.new(9<<3,9<<3,9<<3)
@shadowColor=Color.new(26<<3,26<<3,26<<3)
self.index=0
@commands=[]
@item_max=0
@starting=false
refresh
end
def commands=(value)
@commands=value
refresh
end
def dispose
@selarrow.dispose
@pokeball.dispose
super
end
def species
return @commands.length==0 ? 0 : @commands[self.index][0]
end
def refresh
return if @starting
@item_max=@commands.length
dheight=self.height-32
dwidth=self.width-32
if !self.contents || self.contents.disposed? ||
self.contents.height<dheight || self.contents.width<dwidth
self.contents.dispose if self.contents
self.contents=Bitmap.new([1,dwidth].max,[1,dheight].max)
pbSetSystemFont(self.contents)
end
self.contents.clear
contentsWidth=self.contents.width
ypos=0
for i in 0...@item_max
if i<self.top_row || i>self.top_row+self.page_row_max
next
end
pbCopyBitmap(self.contents,@selarrow.bitmap,0,ypos) if self.index==i
indexNumber=@commands[i][4]
species=@commands[i][0]
if $Trainer.seen[species]
j=self.top_row
if $Trainer.owned[species]
pbCopyBitmap(self.contents,@pokeball.bitmap,210,(i-j)*32)
end
text=_ISPRINTF("No.{1:03d} {2:s}",indexNumber,@commands[i][1])
else
text=_ISPRINTF("No.{1:03d} ----------",indexNumber)
end
self.contents.font.color=@shadowColor
pbDrawShadow(self.contents,center=+1,ypos,self.contents.width-16,32,text)
self.contents.font.color=@baseColor
self.contents.draw_text(center=+1,ypos,self.contents.width-16,32,text)
ypos+=32
end
end
def update
dorefresh=false
oldindex=self.index
super
dorefresh=(self.index!=oldindex)
refresh if dorefresh
end
end
class Window_ComplexCommandPokemon < SpriteWindow_Selectable
attr_reader :baseColor
attr_reader :shadowColor
attr_reader :commands
def getAutoDims(commands,dims,width=nil)
windowheight=commands.length*32+32
windowheight=33 if windowheight<33
if !width || width<0
width=0
tmpbitmap=Bitmap.new(1,1)
pbSetSystemFont(tmpbitmap)
for i in commands
width=[width,tmpbitmap.text_size(i).width].max
end
width+=64
tmpbitmap.dispose
else
width=[33,width].max
end
dims[0]=width
dims[1]=windowheight
end
def initialize(commands,width=nil)
@starting=true
@commands=commands
dims=[]
getAutoDims(commands,dims,width)
super(0,0,dims[0],dims[1])
@item_max=commands.length
@selarrow=AnimatedBitmap.new("Graphics/Pictures/selarrow")
@index=0
self.active=true
@baseColor=Color.new(12*8,12*8,12*8)
@shadowColor=Color.new(26*8,26*8,25*8)
refresh
@starting=false
end
def self.newEmpty(x,y,width,height,viewport=nil)
ret=self.new([],width)
ret.x=x
ret.y=y
ret.width=width
ret.height=height
ret.viewport=viewport
return ret
end
def index=(value)
super
refresh if !@starting
end
def indexToCommand(index)
curindex=0
i=0; loop do break unless i<@commands.length
return [i/2,-1] if index==curindex
curindex+=1
return [i/2,index-curindex] if index-curindex<commands[i+1].length
curindex+=commands[i+1].length
i+=2
end
return [-1,-1]
end
def getText(array,index)
cmd=indexToCommand(index)
return "" if cmd[0]==-1
return array[cmd[0]*2] if cmd[1]<0
return array[cmd[0]*2+1][cmd[1]]
end
def commands=(value)
@commands=value
@item_max=commands.length
self.index=self.index
end
def width=(value)
super
if !@starting
self.index=self.index
end
end
def height=(value)
super
if !@starting
self.index=self.index
end
end
def resizeToFit(commands)
dims=[]
getAutoDims(commands,dims)
self.width=dims[0]
self.height=dims[1]
end
def dispose
@selarrow.dispose
super
end
def baseColor=(value)
@baseColor=value
refresh
end
def shadowColor=(value)
@shadowColor=value
refresh
end
def refresh
dwidth=self.width-32
dheight=self.height-32
@item_max=0
i=0; loop do break unless i<@commands.length
@item_max+=1+@commands[i+1].length
i+=2
end
if !self.contents || self.contents.disposed? ||
self.contents.width<dwidth ||
self.contents.height<dheight
self.contents.dispose if self.contents
self.contents=Bitmap.new([1,dwidth].max,[1,dheight].max)
pbSetSystemFont(self.contents)
end
self.contents.clear
contentsWidth=self.contents.width
ypos=0
icommand=0
i=0; loop do break unless i<@commands.length
if icommand>=self.top_row && icommand<self.top_row+self.page_row_max
self.contents.font.color=self.shadowColor
pbDrawShadow(self.contents,0,ypos,contentsWidth,32,@commands[i])
self.contents.font.color=self.baseColor
self.contents.draw_text(0,ypos,contentsWidth,32,@commands[i])
ypos+=32
end
icommand+=1
for j in 0...@commands[i+1].length
if icommand>=self.top_row && icommand<self.top_row+self.page_row_max
pbCopyBitmap(self.contents,@selarrow.bitmap,0,ypos) if self.index==icommand
self.contents.font.color=self.shadowColor
pbDrawShadow(self.contents,16,ypos,contentsWidth-16,32,@commands[i+1][j])
self.contents.font.color=self.baseColor
self.contents.draw_text(16,ypos,contentsWidth-16,32,@commands[i+1][j])
ypos+=32
end
icommand+=1
end
i+=2
end
end
def update
oldindex=self.index
super
refresh if self.index!=oldindex
end
end
class PokemonPokedexScene
def setIconBitmap(file)
@sprites["icon"].setBitmap(file)
if @sprites["icon"].bitmap
@sprites["icon"].ox=@sprites["icon"].bitmap.width/2
@sprites["icon"].oy=@sprites["icon"].bitmap.height/2
end
end
#
# Gets the region used for displaying Pokédex entries.
# Species will be listed according to the given region's
# numbering and the returned region can have any value
# defined in the town map data file. It's currently
# set to the return value of pbGetCurrentRegion,
# and thus will change according to the current map's
# MapPosition metadata setting.
#
def pbGetPokedexRegion
return pbGetCurrentRegion()
end
def pbStartScene
@sprites={}
@viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
@viewport.z=99999
@sprites["pokedex"]=Window_Pokedex.new(
160,0,Graphics.width-160,Graphics.height)
@sprites["pokedex"].viewport=@viewport
@sprites["dexentry"]=IconSprite.new(0,0,@viewport)
@sprites["dexentry"].setBitmap("Graphics/Pictures/dexentry")
@sprites["dexentry"].visible=false
@sprites["overlay"]=SpriteWrapper.new(@viewport)
@sprites["overlay"].bitmap=Bitmap.new(Graphics.width,Graphics.height)
pbSetSystemFont(@sprites["overlay"].bitmap)
@sprites["overlay"].x=0
@sprites["overlay"].y=0
@sprites["overlay"].visible=false
@sprites["iconback"]=IconWindow.new(0,0,160,160)
@sprites["iconback"].viewport=@viewport
@sprites["auxlist"]=Window_CommandPokemon.newEmpty(272,0,208,224,@viewport)
@sprites["searchlist"]=Window_ComplexCommandPokemon.newEmpty(0,0,272,224,@viewport)
@sprites["infowindow"]=Window_UnformattedTextPokemon.newWithSize("",0,160,160,160,@viewport)
@sprites["messagebox"]=Window_UnformattedTextPokemon.new("")
pbBottomLeftLines(@sprites["messagebox"],2)
@sprites["messagebox"].letterbyletter=false
@sprites["messagebox"].visible=false
@sprites["messagebox"].viewport=@viewport
@sprites["auxlist"].visible=false
@sprites["searchlist"].visible=false
addBackgroundPlane(@sprites,"searchbg","searchbg",@viewport)
=begin
# Suggestion for changing the background depending on region. You
# can change the line below with the following:
if pbGetPokedexRegion()==-1 # Using national Pokédex
addBackgroundPlane(@sprites,"background","pokedexbg_national",@viewport)
elsif pbGetPokedexRegion()==0 # Using regional Pokédex
addBackgroundPlane(@sprites,"background","pokedexbg_regional",@viewport)
end
=end
addBackgroundPlane(@sprites,"background","pokedexbg",@viewport)
@sprites["searchbg"].visible=false
@sprites["icon"]=IconSprite.new(80,80,@viewport)
@searchResults=false
pbRefreshDexList($PokemonGlobal.pokedexIndex)
pbFadeInAndShow(@sprites)
end
def pbDexSearchCommands(commands,selitem,helptexts=nil)
ret=-1
auxlist=@sprites["auxlist"]
messagebox=@sprites["messagebox"]
auxlist.commands=commands
auxlist.index=selitem
messagebox.text=helptexts ? helptexts[auxlist.index] : ""
loop do
Graphics.update
Input.update
oldindex=auxlist.index
auxlist.update
if auxlist.index!=oldindex && helptexts
messagebox.text=helptexts[auxlist.index]
end
if Input.trigger?(Input::B)
ret=selitem
break
end
if Input.trigger?(Input::C)
ret=auxlist.index
break
end
end
@sprites["auxlist"].commands=[]
Input.update
return ret
end
def pbCanAddForModeList?(mode,nationalSpecies)
case mode
when 0
return true
when 1
return $Trainer.seen[nationalSpecies]
when 2, 3, 4, 5
return $Trainer.owned[nationalSpecies]
end
end
def pbCanAddForModeSearch?(mode,nationalSpecies)
case mode
when 0, 1
return $Trainer.seen[nationalSpecies]
when 2, 3, 4, 5
return $Trainer.owned[nationalSpecies]
end
end
def pbGetDexList()
dexlist=[]
dexdata=pbOpenDexData
region=pbGetPokedexRegion()
regionalSpecies=pbAllRegionalSpecies(region)
if regionalSpecies.length==1
# No regional species defined,
# use national Pokédex order
for i in 1..PBSpecies.getCount
regionalSpecies.push(i)
end
end
for i in 1...regionalSpecies.length
nationalSpecies=regionalSpecies[i]
if pbCanAddForModeList?($PokemonGlobal.pokedexMode,nationalSpecies)
pbDexDataOffset(dexdata,nationalSpecies,33)
height=dexdata.fgetw
weight=dexdata.fgetw
# Pushing national species, name, height, weight, index number
dexlist.push([nationalSpecies,
PBSpecies.getName(nationalSpecies),height,weight,i])
end
end
dexdata.close
return dexlist
end
def pbRefreshDexList(index=0)
dexlist=pbGetDexList()
case $PokemonGlobal.pokedexMode
when 0 # Numerical mode
# Remove species not seen from the list
i=0; loop do break unless i<dexlist.length
break if $Trainer.seen[dexlist[i][0]]
dexlist[i]=nil
i+=1
end
i=dexlist.length-1; loop do break unless i>=0
break if !dexlist[i] || $Trainer.seen[dexlist[i][0]]
dexlist[i]=nil
i-=1
end
dexlist.compact!
# Sort species in ascending order by
# index number, not national species
dexlist.sort!{|a,b| a[4]<=>b[4]}
when 1 # Alphabetical mode
dexlist.sort!{|a,b| a[1]<=>b[1]}
when 2 # Heaviest mode
dexlist.sort!{|a,b| b[3]<=>a[3]}
when 3 # Lightest mode
dexlist.sort!{|a,b| a[3]<=>b[3]}
when 4 # Tallest mode
dexlist.sort!{|a,b| b[2]<=>a[2]}
when 5 # Smallest mode
dexlist.sort!{|a,b| a[2]<=>b[2]}
end
if !@searchResults
@sprites["infowindow"].text=_ISPRINTF("SEEN: {1:d}\r\nOWN: {2:d}\r\nZ: MENU\r\nF5: SEARCH",$Trainer.pokedexSeen,$Trainer.pokedexOwned)
else
@sprites["infowindow"].text=_INTL("X: BACK\r\nZ: MENU\r\nF5: SEARCH")
end
@dexlist=dexlist
@sprites["pokedex"].commands=@dexlist
@sprites["pokedex"].index=index
@sprites["pokedex"].refresh
iconspecies=@sprites["pokedex"].species
iconspecies=0 if !$Trainer.seen[iconspecies]
setIconBitmap(pbPokemonBitmapFile(iconspecies,false))
end
def pbSearchDexList(params)
dexlist=pbGetDexList()
if params[0]!=0 # Filter by name
nameCommands=[
"",_INTL("ABC"),_INTL("DEF"),_INTL("GHI"),
_INTL("JKL"),_INTL("MNO"),_INTL("PQR"),
_INTL("STU"),_INTL("VWX"),_INTL("YZ")
]
scanNameCommand=nameCommands[params[0]].scan(/./)
dexlist=dexlist.find_all {|item|
firstChar=item[1][0,1]
next scanNameCommand.any? { |v| v==firstChar }
}
end
if params[1]!=0 # Filter by color
dexlist=dexlist.find_all {|item|
dexdata.pos=76*(item[0]-1)+6
color=dexdata.fgetb
next color==params[1]-1
}
end
if params[2]!=0 || params[3]!=0 # Filter by type
typeCommands=[
-1,0,1,2,3,4,5,6,7,8,
10,11,12,13,14,15,16,17
]
stype1=typeCommands[params[2]]
stype2=typeCommands[params[3]]
dexlist=dexlist.find_all {|item|
dexdata.pos=76*(item[0]-1)+8
type1=dexdata.fgetb
type2=dexdata.fgetb
if stype1>=0 && stype2>=0
# Find species that match both types
next (stype1==type1 && stype2==type2) ||
(stype1==type2 && stype2==type1)
elsif stype1>=0
# Find species that match first type entered
next type1==stype1 || type2==stype1
else
# Find species that match second type entered
next type1==stype2 || type2==stype2
end
}
end
dexdata.close
case params[4]
when 0 # Numerical mode
# Sort by index number, not
# national number
dexlist.sort!{|a,b| a[4]<=>b[4]}
when 1 # Alphabetical mode
dexlist.sort!{|a,b| a[1]<=>b[1]}
when 2 # Heaviest mode
dexlist.sort!{|a,b| b[3]<=>a[3]}
when 3 # Lightest mode
dexlist.sort!{|a,b| a[3]<=>b[3]}
when 4 # Tallest mode
dexlist.sort!{|a,b| b[2]<=>a[2]}
when 5 # Smallest mode
dexlist.sort!{|a,b| a[2]<=>b[2]}
end
return dexlist
end
def pbRefreshDexSearch(params)
searchlist=@sprites["searchlist"]
messagebox=@sprites["messagebox"]
searchlist.commands=[
_INTL("SEARCH"),[
_ISPRINTF("NAME: {1:s}",@nameCommands[params[0]]),
_ISPRINTF("COLOR: {1:s}",@colorCommands[params[1]]),
_ISPRINTF("TYPE 1: {1:s}",@typeCommands[params[2]]),
_ISPRINTF("TYPE 2: {1:s}",@typeCommands[params[3]]),
_ISPRINTF("ORDER: {1:s}",@orderCommands[params[4]]),
_INTL("START SEARCH")
],
_INTL("SHIFT"),[
_ISPRINTF("ORDER: {1:s}",@orderCommands[params[5]]),
_INTL("START SHIFT")
],
_INTL("OTHER"),[
_INTL("CANCEL")
]
]
helptexts=[
_INTL("Search for Pokémon based on selected parameters."),[
_INTL("List by the first letter in the name.\r\nSpotted Pokémon only."),
_INTL("List by body color.\r\nSpotted Pokémon only."),
_INTL("List by type.\r\nOwned Pokémon only."),
_INTL("List by type.\r\nOwned Pokémon only."),
_INTL("Select the Pokédex listing mode."),
_INTL("Execute search."),
],
_INTL("Switch Pokédex listings."),[
_INTL("Select the Pokédex listing mode."),
_INTL("Execute switch."),
],
_INTL("Return to the Pokédex."),[
_INTL("Return to the Pokédex.")
]
]
messagebox.text=searchlist.getText(helptexts,searchlist.index)
end
def pbChangeToDexEntry(species)
@sprites["dexentry"].visible=true
@sprites["overlay"].visible=true
@sprites["overlay"].bitmap.clear
basecolor=Color.new(0,0,0)
shadowcolor=Color.new(184,184,184)
indexNumber=pbGetRegionalNumber(pbGetPokedexRegion(),species)
indexNumber=species if indexNumber==0
textpos=[
[_ISPRINTF("No. {1:03d} {2:s}",indexNumber,PBSpecies.getName(species)),96*2,24*2,0,basecolor,shadowcolor],
[sprintf(_INTL("HT")),96*2,56*2,0,basecolor,shadowcolor],
[sprintf(_INTL("WT")),96*2,72*2,0,basecolor,shadowcolor]
]
if $Trainer.owned[species]
dexdata=pbOpenDexData
pbDexDataOffset(dexdata,species,33)
height=dexdata.fgetw
weight=dexdata.fgetw
dexdata.close
kind=pbGetMessage(MessageTypes::Kinds,species)
dexentry=pbGetMessage(MessageTypes::Entries,species)
inches=(height/0.254).round
pounds=(weight/0.45359).round
textpos.push([_ISPRINTF("{1:s} POKéMON",kind),100*2,40*2,0,basecolor,shadowcolor])
textpos.push([_ISPRINTF("{1:.1f} m",height/10.0),184*2,56*2,1,basecolor,shadowcolor])
textpos.push([_ISPRINTF("{1:.1f} kg",weight/10.0),184*2,72*2,1,basecolor,shadowcolor])
# textpos.push([_ISPRINTF("{1:d}'{2:02d}\"",inches/12,inches%12),146*2,56*2,0,basecolor,shadowcolor])
# textpos.push([_ISPRINTF("{1:4.1f} lbs.",pounds/10),184*2,72*2,1,basecolor,shadowcolor])
drawTextEx(@sprites["overlay"].bitmap,
8*2,96*2,232*2,4,dexentry,basecolor,shadowcolor)
else
textpos.push([_INTL("????? POKéMON"),100*2,40*2,0,basecolor,shadowcolor])
textpos.push([_INTL("???.? m"),184*2,56*2,1,basecolor,shadowcolor])
textpos.push([_INTL("???.? kg"),184*2,72*2,1,basecolor,shadowcolor])
# textpos.push([_INTL("??'??\""),146*2,56*2,0,basecolor,shadowcolor])
# textpos.push([_INTL("???.? lbs."),184*2,72*2,1,basecolor,shadowcolor])
end
pbDrawTextPositions(@sprites["overlay"].bitmap,textpos)
pkmnbitmap=AnimatedBitmap.new(pbPokemonBitmapFile(species,false))
@sprites["overlay"].bitmap.blt(
40-(pkmnbitmap.width-128)/2,
48-(pkmnbitmap.height-128)/2,
pkmnbitmap.bitmap,pkmnbitmap.bitmap.rect)
pkmnbitmap.dispose
pbPlayCry(species)
pbFadeInAndShow(@sprites)
end
def pbStartDexEntryScene(species)
@sprites={}
@viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
@viewport.z=99999
@sprites["dexentry"]=IconSprite.new(0,0,@viewport)
@sprites["dexentry"].setBitmap("Graphics/Pictures/dexentry")
@sprites["dexentry"].visible=false
@sprites["overlay"]=SpriteWrapper.new(@viewport)
@sprites["overlay"].bitmap=Bitmap.new(Graphics.width,Graphics.height)
pbSetSystemFont(@sprites["overlay"].bitmap)
@sprites["overlay"].x=0
@sprites["overlay"].y=0
@sprites["overlay"].visible=false
pbChangeToDexEntry(species)
end
def pbMiddleDexEntryScene
loop do
Graphics.update
Input.update
if Input.trigger?(Input::B) || Input.trigger?(Input::C)
break
end
end
end
def pbDexEntry(index)
oldsprites=pbFadeOutAndHide(@sprites)
pbChangeToDexEntry(@dexlist[index][0])
curindex=index
loop do
Graphics.update
Input.update
if Input.trigger?(Input::C)
pbFadeOutAndHide(@sprites)
scene=PokemonAreaMapScene.new
screen=PokemonAreaMap.new(scene)
screen.pbStartScreen(@dexlist[curindex][0])
pbChangeToDexEntry(@dexlist[curindex][0])
elsif Input.trigger?(Input::B)
break
elsif Input.trigger?(Input::A)
pbPlayCry(@dexlist[curindex][0])
elsif Input.trigger?(Input::UP)
nextindex=-1
i=curindex-1; loop do break unless i>=0
if $Trainer.seen[@dexlist[i][0]]
nextindex=i
break
end
i-=1
end
if nextindex>=0
Input.update
pbFadeOutAndHide(@sprites)
pbChangeToDexEntry(@dexlist[nextindex][0])
curindex=nextindex
end
next
elsif Input.trigger?(Input::DOWN)
nextindex=-1
for i in curindex+1...@dexlist.length
if $Trainer.seen[@dexlist[i][0]]
nextindex=i
break
end
end
if nextindex>=0
Input.update
pbFadeOutAndHide(@sprites)
pbChangeToDexEntry(@dexlist[nextindex][0])
curindex=nextindex
end
next
end
end
pbFadeOutAndHide(@sprites)
$PokemonGlobal.pokedexIndex=curindex if !@searchResults
@sprites["pokedex"].index=curindex
@sprites["pokedex"].refresh
iconspecies=@sprites["pokedex"].species
iconspecies=0 if !$Trainer.seen[iconspecies]
setIconBitmap(pbPokemonBitmapFile(iconspecies,false))
pbFadeInAndShow(@sprites,oldsprites)
end
def pbDexSearch
oldsprites=pbFadeOutAndHide(@sprites)
params=[]
params[0]=0
params[1]=0
params[2]=0
params[3]=0
params[4]=0
params[5]=$PokemonGlobal.pokedexMode
@nameCommands=[
_INTL("DON'T SPECIFY"),
_INTL("ABC"),_INTL("DEF"),_INTL("GHI"),
_INTL("JKL"),_INTL("MNO"),_INTL("PQR"),
_INTL("STU"),_INTL("VWX"),_INTL("YZ")
]
@typeCommands=[
_INTL("NONE"),
_INTL("NORMAL"),_INTL("FIGHTING"),_INTL("FLYING"),
_INTL("POISON"),_INTL("GROUND"),_INTL("ROCK"),
_INTL("BUG"),_INTL("GHOST"),_INTL("STEEL"),
_INTL("FIRE"),_INTL("WATER"),_INTL("GRASS"),
_INTL("ELECTRIC"),_INTL("PSYCHIC"),_INTL("ICE"),
_INTL("DRAGON"),_INTL("DARK")
]
@colorCommands=[
_INTL("DON'T SPECIFY"),
_INTL("RED"),_INTL("BLUE"),_INTL("YELLOW"),
_INTL("GREEN"),_INTL("BLACK"),_INTL("BROWN"),
_INTL("PURPLE"),_INTL("GRAY"),_INTL("WHITE"),_INTL("PINK")
]
@orderCommands=[
_INTL("NUMERIC MODE"),
_INTL("A TO Z MODE"),
_INTL("HEAVIEST MODE"),
_INTL("LIGHTEST MODE"),
_INTL("TALLEST MODE"),
_INTL("SMALLEST MODE")
]
@orderHelp=[
_INTL("Pokémon are listed according to their number."),
_INTL("Spotted and owned Pokémon are listed alphabetically."),
_INTL("Owned Pokémon are listed from the heaviest to the lightest."),
_INTL("Owned Pokémon are listed from the lightest to the heaviest."),
_INTL("Owned Pokémon are listed from the tallest to the smallest."),
_INTL("Owned Pokémon are listed from the smallest to the tallest.")
]
@sprites["searchlist"].index=1
searchlist=@sprites["searchlist"]
messagebox=@sprites["messagebox"]
@sprites["messagebox"].visible=true
@sprites["auxlist"].visible=true
@sprites["searchlist"].visible=true
@sprites["searchbg"].visible=true
pbRefreshDexSearch(params)
pbFadeInAndShow(@sprites)
loop do
Graphics.update
Input.update
oldindex=searchlist.index
searchlist.update
if searchlist.index!=oldindex
pbRefreshDexSearch(params)
end
if Input.trigger?(Input::C)
command=searchlist.indexToCommand(searchlist.index)
if command==[2,0]
break
end
if command==[0,0]
params[0]=pbDexSearchCommands(@nameCommands,params[0])
pbRefreshDexSearch(params)
elsif command==[0,1]
params[1]=pbDexSearchCommands(@colorCommands,params[1])
pbRefreshDexSearch(params)
elsif command==[0,2]
params[2]=pbDexSearchCommands(@typeCommands,params[2])
pbRefreshDexSearch(params)
elsif command==[0,3]
params[3]=pbDexSearchCommands(@typeCommands,params[3])
pbRefreshDexSearch(params)
elsif command==[0,4]
params[4]=pbDexSearchCommands(@orderCommands,params[4],@orderHelp)
pbRefreshDexSearch(params)
elsif command==[0,5]
dexlist=pbSearchDexList(params)
if dexlist.length==0
Kernel.pbMessage(_INTL("No matching Pokémon were found."))
else
@dexlist=dexlist
@sprites["pokedex"].commands=@dexlist
@sprites["pokedex"].index=0
@sprites["pokedex"].refresh
iconspecies=@sprites["pokedex"].species
iconspecies=0 if !$Trainer.seen[iconspecies]
@sprites["infowindow"].text=_INTL("X: BACK\r\nZ: MENU\r\nF5: SEARCH")
setIconBitmap(pbPokemonBitmapFile(iconspecies,false))
@searchResults=true
break
end
elsif command==[1,0]
params[5]=pbDexSearchCommands(@orderCommands,params[5],@orderHelp)
pbRefreshDexSearch(params)
elsif command==[1,1]
$PokemonGlobal.pokedexMode=params[5]
pbRefreshDexList
break
end
elsif Input.trigger?(Input::B)
break
end
end
pbFadeOutAndHide(@sprites)
pbFadeInAndShow(@sprites,oldsprites)
Input.update
return 0
end
def pbMenu
ret=0
commands=[_INTL("BACK TO LIST"),_INTL("LIST TOP"),_INTL("LIST BOTTOM"),_INTL("CLOSE POKéDEX")]
using(cmdwindow=Window_CommandPokemon.new(commands)) {
cmdwindow.viewport=@viewport
cmdwindow.resizeToFit(cmdwindow.commands)
pbBottomRight(cmdwindow)
loop do
Graphics.update
Input.update
cmdwindow.update
if Input.trigger?(Input::B)
ret=0
break
end
if Input.trigger?(Input::C)
ret=cmdwindow.index
break
end
end
}
return ret
end
def pbCloseSearch
oldsprites=pbFadeOutAndHide(@sprites)
@searchResults=false
pbRefreshDexList($PokemonGlobal.pokedexIndex)
pbFadeInAndShow(@sprites,oldsprites)
end
def pbPokedex
loop do
Graphics.update
Input.update
oldindex=@sprites["pokedex"].index
@sprites["pokedex"].update
if oldindex!=@sprites["pokedex"].index
$PokemonGlobal.pokedexIndex=@sprites["pokedex"].index if !@searchResults
iconspecies=@sprites["pokedex"].species
iconspecies=0 if !$Trainer.seen[iconspecies]
setIconBitmap(pbPokemonBitmapFile(iconspecies,false))
end
@sprites["icon"].update
if Input.trigger?(Input::B)
if @searchResults
pbCloseSearch
else
break
end
elsif Input.trigger?(Input::C)
if $Trainer.seen[@sprites["pokedex"].species]
pbDexEntry(@sprites["pokedex"].index)
end
elsif Input.trigger?(Input::F5)
pbDexSearch
elsif Input.trigger?(Input::A)
retval=pbMenu
case retval
when 1 # List Top
@sprites["pokedex"].index=1
when 2 # List Bottom
@sprites["pokedex"].index=@sprites["pokedex"].count-1
when 3
if @searchResults
pbCloseSearch
else
break
end
end
end
end
end
def pbEndScene
pbFadeOutAndHide(@sprites)
pbDisposeSpriteHash(@sprites)
@viewport.dispose
end
end
class PokemonPokedex
def initialize(scene)
@scene=scene
end
def pbDexEntry(species)
@scene.pbStartDexEntryScene(species)
@scene.pbMiddleDexEntryScene
@scene.pbEndScene
end
def pbStartScreen
@scene.pbStartScene
@scene.pbPokedex
@scene.pbEndScene
end
end
Creditos:
eduardomk(Membro da Mrm)
Última edição por Leon em Qua Fev 01, 2012 11:37 am, editado 5 vez(es)

Leon- Lenda

- Mensagens: 51
Pontos: 1053
Reputação: 15
Data de inscrição: 31/08/2011
Idade: 12
Status do Trainer
Cash: 9999999999
Level: 999
Exp:


(9999/9999)
Re: [Tutorial]Como criar um jogo de pokémon(RPG Maker Xp)
Bem legau o Tuto sorte q te ensinei muita coisa kkkkkkkkkkkkkkkk

xandy1608- Admin

- Mensagens: 87
Pontos: 1018
Reputação: 14
Data de inscrição: 29/08/2011
Idade: 12
Localização: Não revelada
Status do Trainer
Cash: 9999999999
Level: 999
Exp:


(9999/9999)

Re: [Tutorial]Como criar um jogo de pokémon(RPG Maker Xp)
Você n me ensinou quase nada, coloquei ai no tutorial coisa que você nunca falou pra min.

Leon- Lenda

- Mensagens: 51
Pontos: 1053
Reputação: 15
Data de inscrição: 31/08/2011
Idade: 12
Status do Trainer
Cash: 9999999999
Level: 999
Exp:


(9999/9999)
Re: [Tutorial]Como criar um jogo de pokémon(RPG Maker Xp)
Leon escreveu:Você n me ensinou quase nada, coloquei ai no tutorial coisa que você nunca falou pra min.
Não sei se você sabe mais oque eu te disse criar batalhas contra treinadores editar os personagens como faser apareser pokémons selvagens no matinho e mudar o pokémon inisial se nem sabia disso né :?:
Num presisa me dar coise :(

xandy1608- Admin

- Mensagens: 87
Pontos: 1018
Reputação: 14
Data de inscrição: 29/08/2011
Idade: 12
Localização: Não revelada
Status do Trainer
Cash: 9999999999
Level: 999
Exp:


(9999/9999)

Re: [Tutorial]Como criar um jogo de pokémon(RPG Maker Xp)
Leon escreveu:
Download do pack Unova Starter Kit
O link está quebrado :o

SebLynnch- Membro

- Mensagens: 33
Pontos: 57
Reputação: 12
Data de inscrição: 10/10/2011
Idade: 18
Localização: Em Wonderland
Status do Trainer
Cash: 0000
Level: 2
Exp:


(7/80)

Re: [Tutorial]Como criar um jogo de pokémon(RPG Maker Xp)
Link concertado!

Leon- Lenda

- Mensagens: 51
Pontos: 1053
Reputação: 15
Data de inscrição: 31/08/2011
Idade: 12
Status do Trainer
Cash: 9999999999
Level: 999
Exp:


(9999/9999)
Re: [Tutorial]Como criar um jogo de pokémon(RPG Maker Xp)
Leon escreveu:Link concertado!
Obrigada! :D

SebLynnch- Membro

- Mensagens: 33
Pontos: 57
Reputação: 12
Data de inscrição: 10/10/2011
Idade: 18
Localização: Em Wonderland
Status do Trainer
Cash: 0000
Level: 2
Exp:


(7/80)

Re: [Tutorial]Como criar um jogo de pokémon(RPG Maker Xp)
Unova Stater Kit é?
Vou baixar e ver o que é xD
e outra coisa, estou trabalhando numa tradução da Pokédex para o Dark Mithycs, qunado terminar eu posto aqui, vai ser util a todos os makers XD
EDIT: Hunn, nada mal o pack XD
Agora vou começar a tradução da pokédex e postar no forum lá pelo final do mes ou antes quem sabe, depende da minha disposição e tempo livre, até pq o jogo nom pode parar de nv ou a Seb me mata de vez e.e
Vou baixar e ver o que é xD
e outra coisa, estou trabalhando numa tradução da Pokédex para o Dark Mithycs, qunado terminar eu posto aqui, vai ser util a todos os makers XD
EDIT: Hunn, nada mal o pack XD
Agora vou começar a tradução da pokédex e postar no forum lá pelo final do mes ou antes quem sabe, depende da minha disposição e tempo livre, até pq o jogo nom pode parar de nv ou a Seb me mata de vez e.e

Draykon- Moderador

- Mensagens: 5
Pontos: 5
Reputação: 0
Data de inscrição: 10/10/2011
Idade: 14
Localização: Belém
Status do Trainer
Cash: 0000
Level: 1
Exp:


(0/40)
Re: [Tutorial]Como criar um jogo de pokémon(RPG Maker Xp)
Draykon escreveu:Unova Stater Kit é?
Vou baixar e ver o que é xD
e outra coisa, estou trabalhando numa tradução da Pokédex para o Dark Mithycs, qunado terminar eu posto aqui, vai ser util a todos os makers XD
EDIT: Hunn, nada mal o pack XD
Agora vou começar a tradução da pokédex e postar no forum lá pelo final do mes ou antes quem sabe, depende da minha disposição e tempo livre, até pq o jogo nom pode parar de nv ou a Seb me mata de vez e.e
Legau seria bem utiu tradus la nos proprios pokes porq se não vai tradusira pokédex e os pokés vaõ tar com instrusoens em ingles
Nossa :shock: a seb é ruim asim?

xandy1608- Admin

- Mensagens: 87
Pontos: 1018
Reputação: 14
Data de inscrição: 29/08/2011
Idade: 12
Localização: Não revelada
Status do Trainer
Cash: 9999999999
Level: 999
Exp:


(9999/9999)

Re: [Tutorial]Como criar um jogo de pokémon(RPG Maker Xp)
Muito bem, vou começar a traduzir, pra não criar um topico de votação inutil, vo perguntar aqui mesmo, vcs querem que eu traduza os tipos dos pokémons tbm? ou isso fica em ingles mesmo? e os golpes?

Draykon- Moderador

- Mensagens: 5
Pontos: 5
Reputação: 0
Data de inscrição: 10/10/2011
Idade: 14
Localização: Belém
Status do Trainer
Cash: 0000
Level: 1
Exp:


(0/40)
Re: [Tutorial]Como criar um jogo de pokémon(RPG Maker Xp)
Draykon escreveu:Muito bem, vou começar a traduzir, pra não criar um topico de votação inutil, vo perguntar aqui mesmo, vcs querem que eu traduza os tipos dos pokémons tbm? ou isso fica em ingles mesmo? e os golpes?
Os golpes não porque to acustumado com golpes em ingles fica esquisito em portugues

xandy1608- Admin

- Mensagens: 87
Pontos: 1018
Reputação: 14
Data de inscrição: 29/08/2011
Idade: 12
Localização: Não revelada
Status do Trainer
Cash: 9999999999
Level: 999
Exp:


(9999/9999)


Draykon- Moderador

- Mensagens: 5
Pontos: 5
Reputação: 0
Data de inscrição: 10/10/2011
Idade: 14
Localização: Belém
Status do Trainer
Cash: 0000
Level: 1
Exp:


(0/40)
Re: [Tutorial]Como criar um jogo de pokémon(RPG Maker Xp)
xandy1608 escreveu:Nossa :shock: a seb é ruim asim?
Você nem imagina o quanto :twisted:

SebLynnch- Membro

- Mensagens: 33
Pontos: 57
Reputação: 12
Data de inscrição: 10/10/2011
Idade: 18
Localização: Em Wonderland
Status do Trainer
Cash: 0000
Level: 2
Exp:


(7/80)

Re: [Tutorial]Como criar um jogo de pokémon(RPG Maker Xp)
Pois é, ela só faltou me matar quando eu falei que tinha fechado o jogo sem salvar e.e
Anyway, traduzindo a pokédex, estou no Spearow [21] no momento, só mais 628 pokémons faltando...
Vai dar um trabalhin né? xD
Espero que no final valha a pena, e que isso ainda apareça em varios foruns e.e
Anyway, traduzindo a pokédex, estou no Spearow [21] no momento, só mais 628 pokémons faltando...
Vai dar um trabalhin né? xD
Espero que no final valha a pena, e que isso ainda apareça em varios foruns e.e

Draykon- Moderador

- Mensagens: 5
Pontos: 5
Reputação: 0
Data de inscrição: 10/10/2011
Idade: 14
Localização: Belém
Status do Trainer
Cash: 0000
Level: 1
Exp:


(0/40)
Re: [Tutorial]Como criar um jogo de pokémon(RPG Maker Xp)
Auguns monstros Oripilantes não machucam,augumas plantas tem espinho e acho que as aparensas enganam kk :P
A pokédex tradusida é uma ideia boa nunca pensei nisso os tipos tardusir também é uma boa
EDIT:Entei? legau :D
A pokédex tradusida é uma ideia boa nunca pensei nisso os tipos tardusir também é uma boa
EDIT:Entei? legau :D

xandy1608- Admin

- Mensagens: 87
Pontos: 1018
Reputação: 14
Data de inscrição: 29/08/2011
Idade: 12
Localização: Não revelada
Status do Trainer
Cash: 9999999999
Level: 999
Exp:


(9999/9999)

Página 1 de 2 • 1, 2 
Tópicos similares» Como Criar Nova Guild no ot pokemon? [TOPICO FIXADO]
» Como criar servidor privado Metin2
» [TUTORIAL COMPLETO] Faça você mesmo seu jogo de MUGEN
» Tutorial de como jogar SA-MP modo RPG
» [Tutorial] Como Faser Parçeria
» Como criar servidor privado Metin2
» [TUTORIAL COMPLETO] Faça você mesmo seu jogo de MUGEN
» Tutorial de como jogar SA-MP modo RPG
» [Tutorial] Como Faser Parçeria
Página 1 de 2
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum
