RPG Maker XP - Pokémon 1 - Como criar um jogo de Pokémon
+9
Kai Hitsugaya
isaacfernande20
marceloQWE
w07
zubat15
Draykon
SebLynnch
Xandy1608
Leon
13 participantes
Página 1 de 3
Página 1 de 3 • 1, 2, 3
RPG Maker XP - Pokémon 1 - Como criar um jogo de Pokémon
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 necessário para seu funcionamento total.
O programa de criação de jogos se chama RPG Maker XP com ele você pode fazer games com gráficos de Nintendo DS ou ate melhor basta saber usa-lo.
Download RPG Maker Xp
Pokemon Starter Kit é o melhor conjunto de scripts para criar um jogo de pokemon.
Pokémon Starter Kit
Unova Pack
Para instalar extraia o pack e coloca os arquivos em suas respectivas pastas...
e na pasta PBS substitua os antigos.
Tutorial
Começando o seu jogo:
Façam uma copia do starter kit para se tiver uma duvida, se 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)
TrainerBattleBGM(10)
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.
10 = A musica de batalha quando encontra um treinador.
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:
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
Cave
Water
RockSmash
OldRod
GoodRod
SuperRod
HeadbuttLow
HeadbuttHigh
LandMorning
LandDay
LandNight
BugContest
Cave = Os pokémons que aparecerão em qualquer chão.
Water = Os pokémons que aparecerão na agua.
RockSmash = Os pokémons que aparecerão se agente usa RockSmash.
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, só que um Headbutt forte.
LandMorning = Os pokémons que aparecerão de manhã.
LandDay = Os pokémons que aparecerão de dia.
LandNight = Os pokémons que aparecerão de noite.
Batalhas de treinadores:
Crie um evento chamado "Trainer (#)" 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)
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ão 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 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 iself.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 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 self.contents.height 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.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 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 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)Mrm
------------------------------OBS---------------------------
Adicionando imagens.
O programa de criação de jogos se chama RPG Maker XP com ele você pode fazer games com gráficos de Nintendo DS ou ate melhor basta saber usa-lo.
Download RPG Maker Xp
Pokemon Starter Kit é o melhor conjunto de scripts para criar um jogo de pokemon.
Pokémon Starter Kit
Unova Pack
Para instalar extraia o pack e coloca os arquivos em suas respectivas pastas...
e na pasta PBS substitua os antigos.
Tutorial
Começando o seu jogo:
Façam uma copia do starter kit para se tiver uma duvida, se 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)
TrainerBattleBGM(10)
- Spoiler:
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.
10 = A musica de batalha quando encontra um treinador.
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:
- Código:
# Area 1 (4) - Area 2 (5)
4,East,0,5,West,0
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
Cave
Water
RockSmash
OldRod
GoodRod
SuperRod
HeadbuttLow
HeadbuttHigh
LandMorning
LandDay
LandNight
BugContest
- Spoiler:
Cave = Os pokémons que aparecerão em qualquer chão.
Water = Os pokémons que aparecerão na agua.
RockSmash = Os pokémons que aparecerão se agente usa RockSmash.
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, só que um Headbutt forte.
LandMorning = Os pokémons que aparecerão de manhã.
LandDay = Os pokémons que aparecerão de dia.
LandNight = Os pokémons que aparecerão de noite.
Batalhas de treinadores:
Crie um evento chamado "Trainer (#)" 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)
- Spoiler:
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ão 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
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
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
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
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
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.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[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)Mrm
------------------------------OBS---------------------------
Adicionando imagens.
Última edição por Leon em Seg Dez 30, 2013 2:17 pm, editado 23 vez(es)
Re: RPG Maker XP - Pokémon 1 - Como criar um jogo de Pokémon
Bem legau o Tuto sorte q te ensinei muita coisa kkkkkkkkkkkkkkkk
Re: RPG Maker XP - Pokémon 1 - Como criar um jogo de Pokémon
Você não me ensinou quase nada, coloquei ai no tutorial coisa que você nunca falou pra min.
Última edição por Leon em Qui Ago 30, 2012 7:29 pm, editado 1 vez(es)
Re: RPG Maker XP - Pokémon 1 - Como criar um jogo de Pokémon
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é :?:Leon escreveu:Você n me ensinou quase nada, coloquei ai no tutorial coisa que você nunca falou pra min.
Num presisa me dar coise :(
Re: RPG Maker XP - Pokémon 1 - Como criar um jogo de Pokémon
Leon escreveu:
Download do pack Unova Starter Kit
O link está quebrado :o
Re: RPG Maker XP - Pokémon 1 - Como criar um jogo de Pokémon
Leon escreveu:Link concertado!
Obrigada! :D
Re: RPG Maker XP - Pokémon 1 - Como criar um jogo de Pokémon
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
Reputação : 0
Data de inscrição : 10/10/2011
Idade : 27
Localização : Belém
Re: RPG Maker XP - Pokémon 1 - Como criar um jogo de Pokémon
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 inglesDraykon 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
Nossa :shock: a seb é ruim asim?
Re: RPG Maker XP - Pokémon 1 - Como criar um jogo de Pokémon
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
Reputação : 0
Data de inscrição : 10/10/2011
Idade : 27
Localização : Belém
Re: RPG Maker XP - Pokémon 1 - Como criar um jogo de Pokémon
Os golpes não porque to acustumado com golpes em ingles fica esquisito em portuguesDraykon 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?
Draykon- Moderador
- Mensagens : 5
Reputação : 0
Data de inscrição : 10/10/2011
Idade : 27
Localização : Belém
Re: RPG Maker XP - Pokémon 1 - Como criar um jogo de Pokémon
xandy1608 escreveu:Nossa :shock: a seb é ruim asim?
Você nem imagina o quanto :twisted:
Re: RPG Maker XP - Pokémon 1 - Como criar um jogo de Pokémon
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
Reputação : 0
Data de inscrição : 10/10/2011
Idade : 27
Localização : Belém
Re: RPG Maker XP - Pokémon 1 - Como criar um jogo de Pokémon
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
Re: RPG Maker XP - Pokémon 1 - Como criar um jogo de Pokémon
Ei num tendi nada
zubat15- Colaboração
- Mensagens : 31
Reputação : 11
Data de inscrição : 11/10/2011
Idade : 34
Localização : Whithe Florest
Re: RPG Maker XP - Pokémon 1 - Como criar um jogo de Pokémon
Cara tem que ser bem explicativo com você né?zubat15 escreveu:Ei num tendi nada
Re: RPG Maker XP - Pokémon 1 - Como criar um jogo de Pokémon
Não entendo muito facio kk me manda MP me dando detalhes mais simplesxandy1608 escreveu:Cara tem que ser bem explicativo com você né?zubat15 escreveu:Ei num tendi nada
zubat15- Colaboração
- Mensagens : 31
Reputação : 11
Data de inscrição : 11/10/2011
Idade : 34
Localização : Whithe Florest
Re: RPG Maker XP - Pokémon 1 - Como criar um jogo de Pokémon
Ok fica tranquilo vo te manda tudo direitinhozubat15 escreveu:Não entendo muito facio kk me manda MP me dando detalhes mais simplesxandy1608 escreveu:Cara tem que ser bem explicativo com você né?zubat15 escreveu:Ei num tendi nada
Re: RPG Maker XP - Pokémon 1 - Como criar um jogo de Pokémon
Reaumente é bem fasinho nem sei como não entendi antes 8)
zubat15- Colaboração
- Mensagens : 31
Reputação : 11
Data de inscrição : 11/10/2011
Idade : 34
Localização : Whithe Florest
links para outro servidor
Boa tarde,
Poderiam por os links noutro servidor?
Cumprimentos,
w07
[Segundo post retirado por ser a mesma coisa que estava aqui)
Poderiam por os links noutro servidor?
Cumprimentos,
w07
[Segundo post retirado por ser a mesma coisa que estava aqui)
w07- Membro
- Mensagens : 1
Reputação : 0
Data de inscrição : 01/02/2012
Re: RPG Maker XP - Pokémon 1 - Como criar um jogo de Pokémon
Link postado em outro servidor.
E por favor não faça double-post e ainda mais igual um ao outro.
E por favor não faça double-post e ainda mais igual um ao outro.
Re: RPG Maker XP - Pokémon 1 - Como criar um jogo de Pokémon
pf posta o unova em outro server pf
marceloQWE- Membro
- Mensagens : 2
Reputação : 0
Data de inscrição : 05/03/2012
Re: RPG Maker XP - Pokémon 1 - Como criar um jogo de Pokémon
sabe onde eu o acho para baixar?
marceloQWE- Membro
- Mensagens : 2
Reputação : 0
Data de inscrição : 05/03/2012
Página 1 de 3 • 1, 2, 3
Tópicos semelhantes
» Duvidas sobre como criar um game de pokemon.
» RPG Maker XP - Pokémon 2 - Adicionando um Fakemon no Stater Kit
» Game Maker - 0 - Apresentando Engine
» Game Maker - GML 1 - Editor de Script do GM8
» Pokémon GBA, GBC e GB
» RPG Maker XP - Pokémon 2 - Adicionando um Fakemon no Stater Kit
» Game Maker - 0 - Apresentando Engine
» Game Maker - GML 1 - Editor de Script do GM8
» Pokémon GBA, GBC e GB
Página 1 de 3
Permissões neste sub-fórum
Não podes responder a tópicos