AccueilAccueil  PortailPortail  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  



-40%
Le deal à ne pas rater :
Tefal Ingenio Emotion – Batterie de cuisine 10 pièces (induction, ...
59.99 € 99.99 €
Voir le deal

Partagez
 

 [VX] Menu contextuel

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
berka
Maire Lv.9
Maire Lv.9
berka


Masculin Age : 33
Inscrit le : 15/10/2008
Messages : 351

[VX] Menu contextuel Empty
MessageSujet: [VX] Menu contextuel   [VX] Menu contextuel Icon_minitimeLun 5 Jan 2009 - 19:51

voila un menu utilisant le meme principe que le menu contextuel de windows.
Pour un seul héro !

[VX] Menu contextuel Menu_c11

a placer au dessus de main
Code:
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=
#                          Menu Popup Ms Style
#                                v 1.0
#  Berka              http://www.rpgmakervx-fr.com          rgss2
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=
module Menu
  dll='user32' #dll utilisée
  CreatePopupMenu=Win32API.new(dll,'CreatePopupMenu','','l') #creation menu
  AppendMenu=Win32API.new(dll,'AppendMenu','lllp','l') #ajout des objets du menu
  DestroyMenu=Win32API.new(dll,'DestroyMenu','p','l') #destruction du menu
  GetCursorPos=Win32API.new(dll,'GetCursorPos','p','i') #position souris à l'ecran
  ScreenToClient=Win32API.new(dll,'ScreenToClient','lp','i') #coord à l'ecran
  GetClientRect=Win32API.new(dll,'GetClientRect','lp','i') #position player a l'ecran
  GetWindowRect=Win32API.new(dll,'GetWindowRect','lp','i') #dimensions player
  GetAsyncKeyState=Win32API.new(dll,"GetAsyncKeyState",'i','i') # test d'entree clavier
  TrackPopupMenuEx=Win32API.new(dll,'TrackPopupMenuEx','lpiipi','i') #event du menu
  GetprivateProfileString=Win32API.new('kernel32','GetPrivateProfileString','pppplp','l') #lecture fichier
  FindWindow=Win32API.new(dll,'FindWindow','pp','i') #recuperation handle d'une fenetre
  #style des objets du menu
  Normal=0 #normal
  Grise=1 #grisé
  Desactive=2 #désactivé (+grisé)
  Coche=8 #coché
  Saut=16 #barre d'espacement
 
  module_function
  def creer
    @h_menu=CreatePopupMenu.call #creation d'un menu
    sous_menus #appel des soumenus
    update #mise a jour
  end
  def sous_menus
    AppendMenu.call(@h_menu,Normal,1,Vocab::item) #menu objets
    AppendMenu.call(@h_menu,Normal,2,Vocab::skill) #competences
    AppendMenu.call(@h_menu,Normal,3,Vocab::equip) #equipement
    AppendMenu.call(@h_menu,Normal,4,Vocab::status) #statut
    s=$game_system.save_disabled #sauvegarde desactivée ?
    AppendMenu.call(@h_menu,s ? Desactive : Normal,5,Vocab::save) #sauvegarde normale/desactivée
    AppendMenu.call(@h_menu,Normal,6,Vocab::game_end) #fin
    #pour rajouter des choix, c'est ici, avec le n°7
  end
  def update
    $menu=true #le menu est affiché
    x,y=pos[0]+client_pos[0],pos[1]+client_pos[1] #coords d'affichage du menu
    @choix=TrackPopupMenuEx.call(@h_menu,(256|2),x,y,handle,0) #apparition des events du menu
    choix if GetAsyncKeyState.call(1)&0x01==1 #si clic gauche: appel du choix
    dispose if GetAsyncKeyState.call(2)&0x01==1 # si clic droit: fermeture du menu
  end
  def handle
    title="\0"*256 #creation d'une chaine vide
    GetprivateProfileString.call("Game","Title","",title,256,".//Game.ini") #lecture de game.ini: récup titre
    title.delete!("\0") #supression des espaces vides
    return FindWindow.call("RGSS Player",title) #recuperation handle fenetre depuis titre
  end
  def global_pos
    @pos=[0,0].pack('ll') #compactage de 2 entiers
    GetCursorPos.call(@pos)!=0 ? (return @pos.unpack('ll')):(return nil) #retour des coords souris ecran
  end
  def pos
    x,y=screen_to_client(*global_pos) #recuperation des coords dans le player
    width,height=client_size
    begin
      x=0 if x<=0;y=0 if y<=0 # conditions de positionnement
      x=width if x>=width;y=height if y>=height # idem
      return x,y
    end
  end
  def screen_to_client(x,y)
    return nil unless x&&y # evite les bugs: continue si x/y sont initialisés
    @pos=[x,y].pack('ll')
    ScreenToClient.call(handle,@pos)!=0 ? (return @pos.unpack('ll')):(return nil)
  end
  def client_size #la flemme
    rect=[0,0,0,0].pack('l4')
    GetClientRect.call(handle,rect)
    right,bottom=rect.unpack('l4')[2..3]
    return right,bottom
  end
  def client_pos #pareil...
    rect=[0,0,0,0].pack('l4')
    GetWindowRect.call(handle,rect)
    left,upper=rect.unpack('l4')[0..1]
    return left+4,upper+24
  end 
  def dispose;DestroyMenu.call(@h_menu);$menu=false;end #suppression menu
  def choix
    Sound.play_decision #son validation
    case @choix #comparaison du choix
    when 1;$scene=Scene_Item.new
    when 2;$scene=Scene_Skill.new(0)
    when 3;$scene=Scene_Equip.new(0)
    when 4;$scene=Scene_Status.new(0)
    when 5;$scene=Scene_File.new(true,false,false)
    when 6;$scene=Scene_End.new
    #pour rajouter des choix, c'est ici, avec le même n° qu'au dessus
    else;dispose #sinon suppression
    end
  end
end
#===========================================
# Scene_Map
#                                par Berka
#===========================================
include Menu
class Scene_Map < Scene_Base
  alias popup_init initialize
  alias popup_update update
  def update
    Menu.creer if GetAsyncKeyState.call(2)&0x01==1 #si clic droit: menu !
    popup_update
  end
end
#===========================================
# Scene_XXX retour a la map
#                                par Berka
#===========================================
class Scene_Item<Scene_Base
  def return_scene
    $menu ? $scene=Scene_Map.new : $scene=Scene_Menu.new(0) #si menu a été affiché: map, sinon menu normal
    $menu=false #fermeture menu popup
  end
end
class Scene_Skill<Scene_Base
  def return_scene
    $menu ? $scene=Scene_Map.new : $scene=Scene_Menu.new(1)
    $menu=false
  end
end
class Scene_Equip<Scene_Base
  def return_scene
    $menu ? $scene=Scene_Map.new : $scene=Scene_Menu.new(2)
    $menu=false
  end
end
class Scene_Status<Scene_Base
  def return_scene
    $menu ? $scene=Scene_Map.new : $scene=Scene_Menu.new(3)
    $menu=false
  end
end
class Scene_File<Scene_Base
  def return_scene
    if @from_title;$scene=Scene_Title.new
    elsif @from_event||$menu;$scene=Scene_Map.new
    else;$scene=Scene_Menu.new(4)
    end
    $menu=false
  end
end
class Scene_End<Scene_Base
  def return_scene
    $menu ? $scene=Scene_Map.new : $scene=Scene_Menu.new(5)
    $menu=false
  end
end
Revenir en haut Aller en bas
http://rpgruby.olympe-network.com
zz2manuz3
Prêtre Lv13
Prêtre Lv13
zz2manuz3


Masculin Age : 29
Inscrit le : 11/10/2008
Messages : 801

[VX] Menu contextuel Empty
MessageSujet: Re: [VX] Menu contextuel   [VX] Menu contextuel Icon_minitimeLun 5 Jan 2009 - 19:52

J'ai pas trop compris à quoi ça sert.
Revenir en haut Aller en bas
Matsuo Kaito
+ Heir Øf Ŧime +
+ Heir Øf Ŧime +
Matsuo Kaito


Masculin Age : 32
Inscrit le : 27/06/2008
Messages : 10881

[VX] Menu contextuel Empty
MessageSujet: Re: [VX] Menu contextuel   [VX] Menu contextuel Icon_minitimeLun 5 Jan 2009 - 19:53

C'est pas mal ( même si je ne vois pas comment on pourrait l'utiliser dans un rpg >w< )

Merci du partage x)

* tiens, 3 points d'aide au forum puisque ta barre de script déborde *
Revenir en haut Aller en bas
Elezia
Roi des Lapinous
Roi des Lapinous
Elezia


Masculin Age : 33
Inscrit le : 11/10/2008
Messages : 2291

[VX] Menu contextuel Empty
MessageSujet: Re: [VX] Menu contextuel   [VX] Menu contextuel Icon_minitimeLun 5 Jan 2009 - 19:53

C'est un menu à la façon windows à ce que j'ai compris ^^ Je vais tester ça à l'air sympa si c'est juste pour un héro =p
Revenir en haut Aller en bas
zz2manuz3
Prêtre Lv13
Prêtre Lv13
zz2manuz3


Masculin Age : 29
Inscrit le : 11/10/2008
Messages : 801

[VX] Menu contextuel Empty
MessageSujet: Re: [VX] Menu contextuel   [VX] Menu contextuel Icon_minitimeLun 5 Jan 2009 - 19:54

a oui j'avais pas vus le screen pardon ^^'
Revenir en haut Aller en bas
berka
Maire Lv.9
Maire Lv.9
berka


Masculin Age : 33
Inscrit le : 15/10/2008
Messages : 351

[VX] Menu contextuel Empty
MessageSujet: Re: [VX] Menu contextuel   [VX] Menu contextuel Icon_minitimeLun 5 Jan 2009 - 20:06

ce menu n'est utile que dans les arpg, parce qu'il est hyper rapide... ca peut etre cool: ca limite le nombre d'attaques, et pendant qu'on navigue pour chercher un skill, les ennemis nous petent la figure....

c'est une des seules utilités à quoi j'ai pensé en le faisant
Revenir en haut Aller en bas
http://rpgruby.olympe-network.com
Elezia
Roi des Lapinous
Roi des Lapinous
Elezia


Masculin Age : 33
Inscrit le : 11/10/2008
Messages : 2291

[VX] Menu contextuel Empty
MessageSujet: Re: [VX] Menu contextuel   [VX] Menu contextuel Icon_minitimeLun 5 Jan 2009 - 20:26

Si quelqu'un ce lance dans un éspéce de Dugeon Fire ou Diablo.. comment on dit déja... un hack and slash! Si c'est possible avec VX ce script peux être sympathique!
Revenir en haut Aller en bas
Invité
Invité
avatar



[VX] Menu contextuel Empty
MessageSujet: Re: [VX] Menu contextuel   [VX] Menu contextuel Icon_minitimeMar 6 Jan 2009 - 9:26

On pourrais l'utiliser avec le script immitant le menu Windows, pour mettre sur un ordinateur non? Avec interrupteur d'acivation non? ^^"

Aller sur un PC et acceder à cette page, m'enfin ça peut toujours être sympa si le skin est modifiable ^^
Revenir en haut Aller en bas
Contenu sponsorisé




[VX] Menu contextuel Empty
MessageSujet: Re: [VX] Menu contextuel   [VX] Menu contextuel Icon_minitime

Revenir en haut Aller en bas
 

[VX] Menu contextuel

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

 Sujets similaires

-
» Aller directement à un sous-menu sans passer par le menu général
» [Menu]Demande de script pour un Menu "Aide"
» [VX] Menu Tales of
» menu
» Mon menu a moi

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker VX :: Entraide :: Scripts :: Scripts VX - RGSS2 :: Menu-
Créer un forum | ©phpBB | Forum gratuit d'entraide | Signaler un abus | Forum gratuit