[Script] [RPGXP] Hỏi về Script???
Leon Draceus
Posts: 97Registered
in RPG Maker
Script tạo một cái menu là như thế này
Hình minh họa về lỗi
Hình minh họa về lỗi
#=====================================================================================
# * Pokémon Menu like in Black and White by shiney570, with Scripting help of Luka S.J
#
# * To get this Script work, but it in a new Script above Main.
#* This Script overwrites some Methods from the Old Menu, and add new ones to it.
# * Put the Graphics in the Graphics/Pictures/Menu folder.
# * If you have any questions or found a bug let me know.
# * Contact: Skype: imatrix.wt ; DeviantArt: shiney570
# * The Debug Scene is now accessable with F9
# * Version: 2.1
#===================================================================================
MENUANIMATION = true # true, if you want to keep the Open/Close Animation,
# false, if you don't want it.
ICONMENUANIMATION = true # true, if you want to keep the Icon Animation, if an
# Icon is selected, or false if you don't want it.
BW2OPTIONSCENE = false # do not change. it's just to bypass an error.
#===============================================================================
# * class PokemonMenu_Scene
#===============================================================================
class PokemonMenu_Scene
#===============================================================================
# * STARTING THE SCENE
#===============================================================================
def pbStartScene
@MenuScene=1; @frame=0; @frame2=0
pbSetViableDexes
@viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
@viewport.z=99999
@sprites={}
@sprites["bg"]=IconSprite.new(0,0,@viewport)
@sprites["bg"].setBitmap("Graphics/Pictures/Menu/background")
@sprites["bg2"]=IconSprite.new(0,0,@viewport)
@sprites["bg2"].setBitmap("Graphics/Pictures/Menu/background2")
@sprites["bg2"].y=0
@sprites["bg2"].y = -32 if MENUANIMATION==true
@sprites["bg3"]=IconSprite.new(0,0,@viewport)
@sprites["bg3"].setBitmap("Graphics/Pictures/Menu/background3")
@sprites["bg3"].y = 384-48
@sprites["bg3"].y = 336+48 if MENUANIMATION==true
@sprites["panel_1"]=IconSprite.new(0,0,@viewport)
@sprites["panel_1"].setBitmap("Graphics/Pictures/Menu/panel")
@sprites["panel_1"].x = 3
@sprites["panel_1"].y = 47
@sprites["panel_1"].y = 47 +200 if MENUANIMATION==true
@sprites["panel_2"]=IconSprite.new(0,0,@viewport)
@sprites["panel_2"].setBitmap("Graphics/Pictures/Menu/panel")
@sprites["panel_2"].x = 261
@sprites["panel_2"].y = 47
@sprites["panel_2"].y = 47 +200 if MENUANIMATION==true
@sprites["panel_3"]=IconSprite.new(0,0,@viewport)
@sprites["panel_3"].setBitmap("Graphics/Pictures/Menu/panel")
@sprites["panel_3"].x = 3
@sprites["panel_3"].y = 143
@sprites["panel_3"].y = 143 +200 if MENUANIMATION==true
@sprites["panel_4"]=IconSprite.new(0,0,@viewport)
@sprites["panel_4"].setBitmap("Graphics/Pictures/Menu/panel")
@sprites["panel_4"].x = 261
@sprites["panel_4"].y = 143
@sprites["panel_4"].y = 143 +200 if MENUANIMATION==true
@sprites["panel_5"]=IconSprite.new(0,0,@viewport)
@sprites["panel_5"].setBitmap("Graphics/Pictures/Menu/panel")
@sprites["panel_5"].x = 3
@sprites["panel_5"].y = 241
@sprites["panel_5"].y = 241 +200 if MENUANIMATION==true
@sprites["panel_6"]=IconSprite.new(0,0,@viewport)
@sprites["panel_6"].setBitmap("Graphics/Pictures/Menu/panel")
@sprites["panel_6"].x = 261
@sprites["panel_6"].y = 241
@sprites["panel_6"].y = 241 +200 if MENUANIMATION==true
@sprites["panel_select"]=IconSprite.new(0,0,@viewport)
@sprites["panel_select"].setBitmap("Graphics/Pictures/Menu/panel2")
@sprites["panel_select"].x = 5000
@sprites["panel_select"].y = 48
@sprites["party"]=IconSprite.new(0,0,@viewport)
@sprites["party"].setBitmap("Graphics/Pictures/Menu/party")
@sprites["party"].x = 5000
@sprites["party"].x = 9 if $Trainer.party.length>0
@sprites["party"].y = 62
@sprites["pokedex"]=IconSprite.new(0,0,@viewport)
@sprites["pokedex"].setBitmap("Graphics/Pictures/Menu/pokedex")
@sprites["pokedex"].x = 5000
@sprites["pokedex"].x = 267 if $Trainer.pokedex
@sprites["pokedex"].y = 56
@sprites["bag"]=IconSprite.new(0,0,@viewport)
@sprites["bag"].setBitmap("Graphics/Pictures/Menu/bag")
@sprites["bag"].setBitmap("Graphics/Pictures/Menu/bag_f") if $Trainer.isFemale?
@sprites["bag"].x = 10
@sprites["bag"].y = 159
@sprites["trainercard"]=IconSprite.new(0,0,@viewport)
@sprites["trainercard"].setBitmap("Graphics/Pictures/Menu/trainercard")
@sprites["trainercard"].x = 268
@sprites["trainercard"].y = 157
@sprites["save"]=IconSprite.new(0,0,@viewport)
@sprites["save"].setBitmap("Graphics/Pictures/Menu/save")
@sprites["save"].x = 10
@sprites["save"].y = 255
@sprites["options"]=IconSprite.new(0,0,@viewport)
@sprites["options"].setBitmap("Graphics/Pictures/Menu/options")
@sprites["options"].x = 268
@sprites["options"].y = 253
@sprites["exit"]=IconSprite.new(0,0,@viewport)
@sprites["exit"].setBitmap("Graphics/Pictures/Menu/exit")
@sprites["exit"].x = 459
@sprites["exit"].y = 346
@sprites["overlay"]=BitmapSprite.new(Graphics.width, Graphics.height, @viewport)
@sprites["overlay2"]=BitmapSprite.new(Graphics.width, Graphics.height, @viewport)
if $Trainer.party.length>0
@select=1
end
if $Trainer.party.length==0 && $Trainer.pokedex
@select=2
end
if $Trainer.party.length==0 && !$Trainer.pokedex
@select=3
end
endscene=true
pbStartAnimation
end
#===============================================================================
# * MENU TEXT DISPLAYING
#===============================================================================
def pbMenuText
if @MenuScene==1
overlay=@sprites["overlay"].bitmap
overlay.clear
baseColor=Color.new(255, 255, 255)
shadowColor=Color.new(0,0,0)
shadowColor2=Color.new(156,156,156)
pbSetSystemFont(@sprites["overlay"].bitmap)
textos=[]
textos.push([_ISPRINTF("{1:02d} {2:02d}", Time.now.hour, Time.now.min),15,-3,false,baseColor,shadowColor])
textos.push([_INTL("POKÉMON"),98,80,false,baseColor,shadowColor2]) if $Trainer.party.length>0
textos.push([_INTL("POKÉDEX"),354,80,false,baseColor,shadowColor2]) if $Trainer.pokedex
textos.push([_INTL("BAG"),98,175,false,baseColor,shadowColor2])
textos.push([_INTL("{1}", $Trainer.name),354,175,false,baseColor,shadowColor2])
textos.push([_INTL("SAVE"),98,275,false,baseColor,shadowColor2])
textos.push([_INTL("OPTIONS"),354,275,false,baseColor,shadowColor2])
pbDrawTextPositions(overlay,textos)
overlay2=@sprites["overlay2"].bitmap
overlay2.clear
pbSetSystemFont(@sprites["overlay2"].bitmap)
textos2=[]
textos2.push([_ISPRINTF(" : "),2,-4,false,baseColor,shadowColor])
pbDrawTextPositions(overlay2,textos2)
end
end
#===============================================================================
# * MENU LOOP
#===============================================================================
def pbMenuLoop
while @MenuScene==1
self.update
self.pbMenuInput
self.pbMenuText
if $MenuClose==true
pbDisposeSpriteHash(@sprites)
@viewport.dispose
$MenuClose=false
@MenuScene=2
end
end
end
#===============================================================================
# * HIDING THE MENU
#===============================================================================
def pbHideMenu
@viewport.visible=false
end
#===============================================================================
# * SHOWING THE MENU
#===============================================================================
def pbShowMenu
@viewport.visible=true
end
#===============================================================================
# * STARTING THE SCENE
#===============================================================================
def pbStartAnimation
pbSEPlay("BW2OpenMenu")
if MENUANIMATION==true
@sprites["overlay"].visible=false
@sprites["panel_1"].visible=false
@sprites["panel_2"].visible=false
@sprites["panel_3"].visible=false
@sprites["panel_4"].visible=false
@sprites["panel_5"].visible=false
@sprites["panel_6"].visible=false
@sprites["panel_select"].visible=false
@sprites["party"].visible=false
@sprites["pokedex"].visible=false
@sprites["bag"].visible=false
@sprites["trainercard"].visible=false
@sprites["save"].visible=false
@sprites["options"].visible=false
@sprites["exit"].visible=false
10.times do
@sprites["bg2"].y += 3.2
@sprites["bg3"].y -= 5.3
Graphics.update
Input.update
end
@sprites["bg2"].y = 0
@sprites["bg3"].y = 384-48
pbWait(5)
@sprites["panel_1"].visible=true if $Trainer.party.length>0
@sprites["panel_2"].visible=true if $Trainer.pokedex
@sprites["panel_3"].visible=true
@sprites["panel_4"].visible=true
@sprites["panel_5"].visible=true
@sprites["panel_6"].visible=true
20.times do
@sprites["panel_1"].y -= 10
@sprites["panel_2"].y -= 10
@sprites["panel_3"].y -= 10
@sprites["panel_4"].y -= 10
@sprites["panel_5"].y -= 10
@sprites["panel_6"].y -= 10
Graphics.update
Input.update
end
pbWait(5)
@sprites["overlay"].visible=true
@sprites["panel_select"].visible=true
@sprites["party"].visible=true if $Trainer.party.length>0
@sprites["pokedex"].visible=true if $Trainer.pokedex
@sprites["bag"].visible=true
@sprites["trainercard"].visible=true
@sprites["save"].visible=true
@sprites["options"].visible=true
@sprites["exit"].visible=true
end
self.pbMenuLoop
end
#===============================================================================
# * CLOSING THE SCENE
#===============================================================================
def pbEndScene
@MenuScene=0
if MENUANIMATION==true
@sprites["overlay"].visible=false if @sprites["overlay"]
@sprites["overlay2"].visible=false if @sprites["overlay2"]
@sprites["panel_select"].visible=false if @sprites["panel_select"]
@sprites["party"].visible=false if @sprites["party"]
@sprites["pokedex"].visible=false if @sprites["pokedex"]
@sprites["bag"].visible=false if @sprites["bag"]
@sprites["trainercard"].visible=false if @sprites["trainercard"]
@sprites["save"].visible=false if @sprites["save"]
@sprites["options"].visible=false if @sprites["options"]
@sprites["exit"].visible=false if @sprites["exit"]
pbWait(5)
20.times do
@sprites["panel_1"].y += 10 if @sprites["panel_1"]
@sprites["panel_2"].y += 10 if @sprites["panel_2"]
@sprites["panel_3"].y += 10 if @sprites["panel_3"]
@sprites["panel_4"].y += 10 if @sprites["panel_4"]
@sprites["panel_5"].y += 10 if @sprites["panel_5"]
@sprites["panel_6"].y += 10 if @sprites["panel_6"]
Graphics.update
Input.update
end
@sprites["panel_1"].visible=false if @sprites["panel_1"]
@sprites["panel_2"].visible=false if @sprites["panel_2"]
@sprites["panel_3"].visible=false if @sprites["panel_3"]
@sprites["panel_4"].visible=false if @sprites["panel_4"]
@sprites["panel_5"].visible=false if @sprites["panel_5"]
@sprites["panel_6"].visible=false if @sprites["panel_6"]
10.times do
@sprites["bg2"].y -= 3.2 if @sprites["bg2"]
@sprites["bg3"].y += 5.3 if @sprites["bg3"]
Graphics.update
Input.update
end
end
pbSEPlay("BW2CloseMenu")
pbDisposeSpriteHash(@sprites)
@viewport.dispose
end
#===============================================================================
# * Update Method
#===============================================================================
def update
Graphics.update
Input.update
@frame+=1
@sprites["party"].x=12 if $Trainer.party.length>0
@sprites["pokedex"].x=269 if $Trainer.pokedex
@frame=0 if @frame>=20
frame=[0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1]
@count=frame[@frame]
if (MENUANIMATION==true) && $PokemonSystem.screensize==1
@sprites["party"].y-=0.5 if @select==1 && @count==0
@sprites["party"].y+=0.5 if @select==1 && @count==1
@sprites["party"].y=62 if @select != 1 && $Trainer.party.length>0
@sprites["pokedex"].y-=0.5 if @select==2 && @count==0
@sprites["pokedex"].y+=0.5 if @select==2 && @count==1
@sprites["pokedex"].y=56 if @select != 2 && $Trainer.pokedex
@sprites["bag"].y-=0.5 if @select==3 && @count==0
@sprites["bag"].y+=0.5 if @select==3 && @count==1
@sprites["bag"].y=159 if @select != 3
@sprites["trainercard"].y-=0.5 if @select==4 && @count==0
@sprites["trainercard"].y+=0.5 if @select==4 && @count==1
@sprites["trainercard"].y=157 if @select != 4
@sprites["save"].y-=0.5 if @select==5 && @count==0
@sprites["save"].y+=0.5 if @select==5 && @count==1
@sprites["save"].y=255 if @select != 5
@sprites["options"].y-=0.5 if @select==6 && @count==0
@sprites["options"].y+=0.5 if @select==6 && @count==1
@sprites["options"].y=253 if @select != 6
@frame2+=1
@frame2=0 if @frame2>=40
@sprites["overlay2"].visible=true if @frame2<=20
@sprites["overlay2"].visible=false if @frame2>20
end
x=[5000,5,263,5,263,5,263,5000]
y=[5000,49,49,145,145,243,243,5000]
y=[5000,5000,49,145,145,243,243,5000] if $Trainer.party.length==0 && $Trainer.pokedex
y=[5000,49,5000,145,145,243,243,5000] if $Trainer.party.length>0& !$Trainer.pokedex
y=[5000,5000,5000,145,145,243,243,5000] if $Trainer.party.length==0 && !$Trainer.pokedex
@sprites["panel_select"].x = x[@select]
@sprites["panel_select"].y = y[@select]
@sprites["panel_select"].visible=true
if @select==1
@sprites["party"].setBitmap("Graphics/Pictures/Menu/party2")
else
@sprites["party"].setBitmap("Graphics/Pictures/Menu/party")
end
if @select==2
@sprites["pokedex"].setBitmap("Graphics/Pictures/Menu/pokedex2")
else
@sprites["pokedex"].setBitmap("Graphics/Pictures/Menu/pokedex")
end
if @select==3
@sprites["bag"].setBitmap("Graphics/Pictures/Menu/bag2")
@sprites["bag"].setBitmap("Graphics/Pictures/Menu/bag2_f") if $Trainer.isFemale?
else
@sprites["bag"].setBitmap("Graphics/Pictures/Menu/bag")
@sprites["bag"].setBitmap("Graphics/Pictures/Menu/bag_f") if $Trainer.isFemale?
end
if @select==4
@sprites["trainercard"].setBitmap("Graphics/Pictures/Menu/trainercard2")
else
@sprites["trainercard"].setBitmap("Graphics/Pictures/Menu/trainercard")
end
if @select==5
@sprites["save"].setBitmap("Graphics/Pictures/Menu/save2")
else
@sprites["save"].setBitmap("Graphics/Pictures/Menu/save")
end
if @select==6
@sprites["options"].setBitmap("Graphics/Pictures/Menu/options2")
else
@sprites["options"].setBitmap("Graphics/Pictures/Menu/options")
end
if @select==7
@sprites["exit"].setBitmap("Graphics/Pictures/Menu/exit2")
else
@sprites["exit"].setBitmap("Graphics/Pictures/Menu/exit")
end
if $Trainer.party.length>0
@sprites["panel_1"].visible=true
@sprites["party"].visible=true
else
x[1]=5000
@select=2 if @select==1
@sprites["panel_1"].visible=false
@sprites["party"].visible=false
end
if $Trainer.pokedex
@sprites["panel_2"].visible=true
@sprites["pokedex"].visible=true
else
x[2]=5000
@select=3 if @select==2
@sprites["panel_2"].visible=false
@sprites["pokedex"].visible=false
end
end
#===============================================================================
# * Menu Left Click Animation
#===============================================================================
def pbMenuClick
pbWait(10)
@sprites["panel_select"].visible=false
pbWait(5)
self.update
end
#===============================================================================
# * Menu Left Click Animation on the Exit Button
#===============================================================================
def pbMenuClickExit
@sprites["exit"].setBitmap("Graphics/Pictures/Menu/exit2")
pbWait(10)
@sprites["exit"].setBitmap("Graphics/Pictures/Menu/exit")
pbWait(5)
end
#===============================================================================
# * Button Inputs
#===============================================================================
def pbMenuInput
if Input.trigger?(Input::RIGHT) && !(@select==7)
@select+=1; pbSEPlay("BW2MenuSelect")
end
if Input.trigger?(Input::LEFT) && !(@select==1)
@select-=1; pbSEPlay("BW2MenuSelect")
end
if Input.trigger?(Input::DOWN) && !(@select>4)
@select+=2; pbSEPlay("BW2MenuSelect")
end
if Input.trigger?(Input::UP) && !(@select<3)
@select-=2; pbSEPlay("BW2MenuSelect")
end
if Input.trigger?(Input::UP) && @select==7
@select-=1; pbSEPlay("BW2MenuSelect")
end
for i in 1..6
if defined?($mouse)
if $mouse.leftClick?(@sprites["panel_#{i}"])
@select=i
self.update
self.pbMenuClick
self.pokemonParty if @select==1
self.pokeDex if @select==2
self.bag if @select==3
self.trainerCard if @select==4
self.save if @select==5
self.options if @select==6
end
end
end
if defined?($mouse)
if $mouse.leftClick?(@sprites["exit"])
self.pbMenuClickExit
pbEndScene
end
end
if Input.trigger?(Input::F9) && $DEBUG
pbFadeOutIn(99999) {
pbDebugMenu
}
end
if Input.trigger?(Input::B)
self.pbMenuClickExit
pbEndScene
end
if Input.trigger?(Input::C)
case @select
when 1 # Party
if $Trainer.party.length>0
self.pokemonParty
end
when 2 #Pokedex
if $Trainer.pokedex
self.pokeDex
end
when 3 #Bag
self.bag
when 4 #Trainercard
self.trainerCard
when 5 #Save
self.save
when 6 #Options
self.options
when 7 #Quit
self.pbMenuClickExit
pbEndScene
end
end
end
#===============================================================================
# * MENU SCENE'S
#===============================================================================
def pokemonParty
pbSEPlay("BW2MenuChoose")
sscene=PokemonScreen_Scene.new
sscreen=PokemonScreen.new(sscene,$Trainer.party)
hiddenmove=nil
pbFadeOutIn(99999) {
hiddenmove=sscreen.pbPokemonScreen
if hiddenmove
pbEndScene
end
}
if hiddenmove
Kernel.pbUseHiddenMove(hiddenmove[0],hiddenmove[1])
return
end
end
def pokeDex
pbSEPlay("BW2MenuChoose")
if DEXDEPENDSONLOCATION
pbFadeOutIn(99999) {
scene=PokemonPokedexScene.new
screen=PokemonPokedex.new(scene)
screen.pbStartScreen
}
elsif $PokemonGlobal.pokedexViable.length==1
$PokemonGlobal.pokedexDex=$PokemonGlobal.pokedexViable[0]
$PokemonGlobal.pokedexDex=-1 if $PokemonGlobal.pokedexDex==$PokemonGlobal.pokedexUnlocked.length-1
pbFadeOutIn(99999) {
scene=PokemonPokedexScene.new
screen=PokemonPokedex.new(scene)
screen.pbStartScreen
pbRefresh
}
# else
# pbLoadRpgxpScene(Scene_PokedexMenu.new)
end
end
def bag
pbSEPlay("BW2MenuChoose")
item=0
scene=PokemonBag_Scene.new
screen=PokemonBagScreen.new(scene,$PokemonBag)
pbFadeOutIn(99999) {
item=screen.pbStartScreen
if item>0
pbEndScene
else
pbRefresh
end
}
if item>0
Kernel.pbUseKeyItemInField(item)
return
end
end
def trainerCard
pbSEPlay("BW2MenuChoose")
PBDebug.logonerr {
scene=PokemonTrainerCardScene.new
screen=PokemonTrainerCard.new(scene)
pbFadeOutIn(99999) {
screen.pbStartScreen
}
}
end
def save
pbSEPlay("BW2MenuChoose")
pbHideMenu
scene=PokemonSaveScene.new
screen=PokemonSave.new(scene)
if screen.pbSaveScreen
pbShowMenu
else
pbShowMenu
end
end
def options
pbSEPlay("BW2MenuChoose")
if BW2OPTIONSCENE
pbFadeOutIn(99999) {
BW2Options.new
}
else
scene=PokemonOptionScene.new
screen=PokemonOption.new(scene)
pbFadeOutIn(99999) {
screen.pbStartScreen
pbUpdateSceneMap
}
end
end
def quit
pbHideMenu
if pbInSafari?
if Kernel.pbConfirmMessage(_INTL("Would you like to leave the Safari Game right now?"))
pbEndScene
pbSafariState.decision=1
pbSafariState.pbGoToStart
return
else
pbShowMenu
end
end
if pbInBugContest?
if Kernel.pbConfirmMessage(_INTL("Would you like to end the Contest now?"))
pbEndScene
pbBugContestState.pbStartJudging
return
else
pbShowMenu
end
end
end
end
#===============================================================================
# * class PokemonMenu
#===============================================================================
class PokemonMenu
#===============================================================================
# * SHOWING THE MENU
#===============================================================================
def pbShowMenu
@scene.pbShowMenu
end
#===============================================================================
# * STARTING THE MENU
#===============================================================================
def pbStartPokemonMenu
@scene.pbStartScene
end
end
Comments
THAM GIA GROUP CỦA TTC TRÊN FACEBOOK
y=[5000,49,5000,145,145,243,243,5000] if $Trainer.party.length>0& !$Trainer.pokedex
Bạn thêm ký tự & vào chỗ 0& trở thành 2 dấu &&:
y=[5000,49,5000,145,145,243,243,5000] if $Trainer.party.length>0 && !$Trainer.pokedex
[size=medium]Ngay chổ map trao đổi hàng mình có thể đi lên đầu kìa bạn sửa lại nhé, PKM XYZ mà toàn là thấy PKM vùng cũ ko :dodgy: ( cười )[/size]
THAM GIA GROUP CỦA TTC TRÊN FACEBOOK
Rút ra bài học : Lưu mọi lúc mọi nơi :v
THAM GIA GROUP CỦA TTC TRÊN FACEBOOK