Jump to content
Rpg²S Forum

sorcioni

Utenti
  • Posts

    161
  • Joined

  • Last visited

Posts posted by sorcioni

  1. Allora stavo cercando di creare tramite eventi un sistema di 4 icone che stanno sullo schermo e che si illuminano se selezionate(per selezionare uso le frecce giù e su) quindi ho creato un evento composto di 4 pagine,poi ho messo delle conditional branch tipo se premi SU cambia la picture dell'icona cioè io ho 4 icone A B C D il tutto parte con l'icona A selezionata quando premo giù teoricamente A dovrebbe diventare normale e B dovrebbe passare allo stato di "selezionata" e così via con tt le combinazioni solo che nn funziona :biggrin: praticamente le icone di selezionano e tornano normali troppo velocemente e a volte risultano più icone selezionate contemporaneamente,oppure premo GIÙ e dall'icona A passa all'icona D senza passare per B e C...

    Non so se mi sono spiegato bene xD è un po' difficile a parole...in caso posterò una demo...

    Grazie a tutti =D

  2. Per come lo hai descritto forse ti viene bene creare ad eventi un BS personalizzato su mappa dove ogni creatura ha un potere diverso e lo utilizza per sbarazzarsi dei nemici o per...ad esempio la creatura possente sposta rocce, quella affine all' acqua ti permette di navigare, una spara fuoco contro i nemici o per accendere torcie, ecc...

    Non necessariamente hai bisogno di lunghi combattimenti, con qualche colpo fatto bene (esempio fuoco contro nemici a cubetto di ghiaccio) stendi il nemico (che magari ti blocca l' entrata).

    ^ ^

     

    credo che riunirò i poteri per eliminare gli ostacoli nel Player che guida le proprie creature e utilizzerò lo SBABS così che la "creature" combatte per conto proprio utilizzando un paio di skill (penso massimo 5)

  3. mmm effettivamente nn avevo pensato che il tattico con solo un pg diventa noioso certo nel mio progetto si potranno avere fino a un massimo di 4 creature ma credo che cmq nn cambi molto la cosa....forse riprenderò in considerazione quello in tempo reale,credo che utilizzerò il Bs in tempo reale con comandi che puoi dare a tutto il party...ci devo riflettere bene xD

     

    Anche perchè la parte della gestione e della crescita della "creatura" l'ho già completata quindi mancano le quest e poi la sostituzione della grafica che c'è adesso con quella definitiva

  4. Grazie a tutti per le risposte!(specialmente Axel)

    Cmq per i primi che hanno risposto volevo solo dire che avevo già fatto delle ricerche e avevo trovato diversi Bs ma nn ero sicuro di averli trovati tutti....ma capisco le vostre risposte =)

     

    P.S

    Credo cmq che utilizzerò o quello standard un po' modificato o uno tattico,quello in tempo reale non mi convince molto ...

  5. Buona sera a tutti eccomi ancora con un altro post....non so se è la sezione giusta quindi chiedo poi in caso spostate =)

    Mi servirebbe un elenco di tt i tipi di Bs per VX(possibilmente con lo script o la demo allegata) visto che devo scegliere che stile di combattimento usare nel mio tamagotchi :D

  6. Posto ancora per chiedervi se qualcuno è capace di ricostruire attraverso script un BS come quello di chaos faction(chaos faction è un gioco in flash secondo me molto carino) non è una cosa urgente ma sarebbe molto interessante riuscire a emulare quel tipo di BS sopratutto per il mio prog :D

     

    Grazie a tutti

  7. Per quando li vuoi?

     

    Humm ma sinceramente nn mi servono subito cioè prima posso pensare al progetto e usare i pg prestabiliti e poi sostituirli con quelli finali quindi l'importante è sapere se qualcuno lo può fare e se ci si può dedicare un minimo :D

  8. Puoi usare quante picture vuoi, 20 è il limite massimo di picture visualizzate contemporaneamente, al numero uno puoi assegnare quante picture vuoi, quelle che hai assegnato prima verranno sovrascitte, ma potrai sempre assegnarle di nuovo ad un numero od allo stesso numero uno.

    ^ ^

    Ad esempio per la barra HP puoi assegnare alle picture sempre lo stesso numero, tanto quelle prima devono venire sovrascritte e di loro non c' è più bisogno; spero che tu non abbia più di 20 barre sullo schermo! XD

    ^ ^

     

    Quindi se ti servono dieci picture per 10 barre (ipotesi) basta assegnare alla barra hp sempre la picture n.1, a quella mp sempre la n.2 e così via fino a 10

    ^ ^

     

    Ok grz mille così posso terminare le basi del progetto e dedicarmi al resto XD

  9. Eeeeh dai non essere così arrendevole, hai detto che con gli eventi ci sai fare un po', mettici un poco più di impegno e tempo, magari esce fuori qualcosa di carino; lo sai per fare un buon gioco ci vuole impegno, perdici qualche giorno, ne vale la pena, anche solo per vedere i tuoi limiti (che puoi sempre superare con un altro po' di impegno :D)!

    ^ ^

     

    eh lo so .... prima o poi mi ci metterò ma ho anche altre cose di cui occuparmi :D

  10. Basta fare un chara che cambia in base all'arma equipaggiata.

     

    Cioè crei "Actor1" quando il tuo pg è senza armi

    crei "Actor1_001" quando il tuo pg ha equipaggiata la prima arma

     

    So che è una cosa pallosa, ma se usi i chara di kaduki, non vedo altra soluzione...

     

    Faccio prima a mandare a farsi fottere il D20 :D

  11. Per le icon con le armi basta modificare i chara applicandogli sopra l'icon dell'arma.

    Per attaccare, ti basta far vedere il pg che si avvicina al nemico, che esegue l'animazione di attacco, e con il controllo variabili, modifichi gli HP del nemico sottraendogli i danni (non mi ricordo quale sia l'equazione per determinare il danno, ma potresti inventartela tu).

     

    Si si in teoria è fattibile ma ad esempio io ho il BS che a seconda dell'arma equipaggiata fa vedere un icon diversa che attacca e poi con lo script è molto più facile XD

  12. Hai due possibilità:

    1- Modifichi lo script

    2- Ti crei un bs ad eventi in modo da poter organizzare tutto come vuoi tu

     

    Io ti consiglierei di seguire il secondo passo, visto che sugli script sei a -5 xD

    Però come ha scritto sopra Lollo, se ancora non sei bravo ad eventi, lascia perdere

     

    Mah con gli eventi me la cavicchio però ma nn al punto di fare un BS laterale che usa le icon come armi e per attaccare XD

    Cmq se a qualcuno servono ho già pronte le immagini del D6

  13. Allora lo script ti permette di mostrare un testo in una piccola finestra quando il cursore del mouse è su un determinato evento. Dovresti inserire un commento in un evento che cominci per [M] e poi il testo da mostrare. Alla linea 45 dovrebbero esserci dei comandi d configurazione epr lo script, credo grandezza del testo, della finestra, la windowskin etc... Hey io ho studiato francese in terza media quindi figurati xD però questo con un po' di intuizione è abbastanza comprensibile :P

     

     

    ah ok grazie mille:D Peccato però, a me serviva che faceva attivare un evento e non un testo uffaXD

  14. =D lo si conosce abbastanza bene... o meglio "lo si conosceva" fortunatamente... vattelo a cercare su qualche sito di pixelart il ragazzino, che qui non ci bazzica più molto U.U

     

    Ok grazie ...cmq lo cerco perchè lui era riuscito a fare tramite eventi molte funzioni che mi servono per il progetto....ma come mai nn si connette più?o.O

  15. Ho trovato su un sito postato qui sul forum uno script che credo possa risolvere i miei problemi :D

     

    Lo posto sotto spoiler

    #------------------------------------------------------------------------

    # MouseOver Version 1.3

    # RPG Maker VX

    #

    # Auteur : Samarium

    #

    # Créé le 12 Février 2008

    #

    #

    # Fonction : Permet d'afficher une fenêtre contenant un texte sur

    # un ou des évènement(s) lors du passage de la souris

    # sur ce dernier

    #

    # Utilisation : Très facile ! Faites un commentaire commençant par [M]

    # suivit du texte dans l'/les évènement(s) de votre choix.

    # Allez vers la ligne 45 pour changer certaines propriétés.

    #

    # Site : www.rpgcreative.net

    #

    # Remarque : Script disponible aussi sous RPG Maker XP

    #

    #------- Modification ---------

    # Modifié le 27/03/08

    # - Correction des incompatiblités (Remerciement à Siegfried pour quelques éclairements)

    # - Correction d'un bug : Affichage selon le déplacement de l'évènement

    # - Correction d'un bug : Affichage lorsqu'il y a un changement de map

    #

    # Modifié le 13/02/08

    # - Position de la fenêtre fixe (sur l'évènement) ou mobile (sur la souris)

    # - Possibilité de mettre un son

    # - Fonctionnalité de \N[x] et \V[x]

    #

    # Modifié le 12/02/08

    # - Correction d'un bug : Affichage de la fenêtre pour tous les évènements

    # - Correction d'un bug : Commentaire sans message commençant par [M]

    # - Optimation de la vitesse d'éxécution du script

    # - Fusionnement de la modification du script Scene_Map avec ce script

    #------------------------------------------------------------------------

     

    def defaut

    return "Window"

    end

     

    # ------------------ A définir -------------------

     

    FONT_SIZE = 16 # La taille du texte

    FONT_FACE = "Arial" # Police du texte

    WINDOWSKIN = defaut # Le nom du Windoskin. Mettez "defaut" (sans les guillemets) pour afficher le Windowskins par défaut.

     

    # Mettez la couleur RGB du texte. Mettez 0 pour tous pour la couleur noire et 255 pour la couleur blanche

    COLOR_RED = 255

    COLOR_BLUE = 255

    COLOR_GREEN = 255

     

    OPACITY = 160 # Opacité de la fenêtre

    SON = false # Le nom du fichier son. Mettez "false" (sans les guillemets) pour ne pas mettre de son

    FIX = true # "true" pour fixer la fenêtre sur l'évènement et "false" pour la rendre mobile : fenêtre suit la souris

    # ------------------------------------------------

     

    #---------------------------------------------------------------------

    # Game_Search_Event

    #

    # Permet, dès le départ, chercher tout les évènements ayant un

    # commentaire commençant par [M] et de les enregistrer dans un

    # tableau (ID de l'évènement et message)

    #---------------------------------------------------------------------

    class Game_Search_Event

     

    def initialize

    # initialisation des variables

    @element_event = {}

    @map = load_data(sprintf("Data/Map%03d.rvdata", $game_map.map_id))

    @nb_event = @map.events.size

    @tab_event = @map.events.values # Retourne les valeurs du Hash dans un tableau

     

    main

    end

     

    def main

    for i in 0..@nb_event - 1

    # Prend le contenu de la page de chaques évènements

    event = @tab_event

    pages = event.pages

    for page in event.pages

    # Prend la liste et le code de la commande d'évènement

    list = page.list

    code = cod(list)

    # Si le code est celui que l'on veut

    if code[0]

    event_id = event.id

    message = code[1]

     

    # Ajoute dans un Hash, l'ID et le message de l'évènement

    @element_event[event_id] = message

     

    end

    end

     

    $search_finish = $game_map.map_id

    end

     

     

    end

     

    def element_event_id

    return @element_event.keys # Array

    end

     

    def element_event_message(event)

    return @element_event[event] # String

    end

     

    def element_event_size

    return @element_event.size # Integer

    end

     

    def cod(list)

    # initialisation des variables

    for index in 0...list.size

    parameters = list[index].parameters

    # Si la commande est un commentaire et commence par [M]

    if list[index].code == 108 and commentaire(parameters[0])

    message_text = parameters[0] + "\n"

    # Ajoute aux messages les lignes suivantes

    for line_count in 1..5

    if list[line_count] != nil

    if list[index + line_count].code == 408

    message_text += text_sub(list[index + line_count].parameters[0]) + "\n"

     

    end

    end

    end

    return true, message_text

    end

    end

     

    return false, false

    end

     

     

    def commentaire(text)

    # Cherche le [M] et l'efface

    text.gsub!(/[\[Mm]\]/) { "\001" }

     

    while ((c = text.slice!(/./m)) != nil)

    if c == "\001"

    text.sub!(/[\[Mm]\]/, "")

    text_sub(text)

    return true

    end

    end

    return false

    end

     

    # Remplace \N[x] par le nom du héros d'ID x et \V[x] par la variable x

    def text_sub(text)

    begin

    last_text = text.clone

    text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }

    end until text == last_text

    text.gsub!(/\\[Nn]\[([0-9]+)\]/) do

    $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""

    end

    return text

    end

     

    end

     

    #---------------------------------------------------------------------

    # Mouse

    #

    # Reprise du module Mouse créé par Cybersam et édité par Astro_mech

    # Calcule et retourne la position X et Y de la souris sur l'écran

    #

    #---------------------------------------------------------------------

     

    module Mouse

    gsm = Win32API.new('user32', 'GetSystemMetrics', 'i', 'i')

     

    @cursor_pos = Win32API.new('user32', 'GetCursorPos', 'p', 'i')

    module_function

     

    def mouse_global_pos

    pos = [0, 0].pack('ll')

    if @cursor_pos.call(pos) != 0

    return pos.unpack('ll')

    else

    return nil

    end

    end

     

    def mouse_pos(catch_anywhere = false)

    x, y = screen_to_client(*mouse_global_pos)

    width, height = client_size

    # if catch_anywhere or (x >= 0 and y >= 0 and x < width and y < height)

    return x, y

    # else

    # return $m.x, $m.y

    # end

    end

     

     

    def del

    if @oldcursor == nil

    return

    else

    @SetClassLong.call(handel ,-12, @oldcursor)

    @oldcursor = nil

    end

    end

     

     

    end

     

    $scr2cli = Win32API.new('user32', 'ScreenToClient', %w(l p), 'i')

    $client_rect = Win32API.new('user32', 'GetClientRect', %w(l p), 'i')

    $readini = Win32API.new('kernel32', 'GetPrivateProfileStringA', %w(p p p p l p), 'l')

    $findwindow = Win32API.new('user32', 'FindWindowA', %w(p p), 'l')

     

    def screen_to_client(x, y)

    return nil unless x and y

    pos = [x, y].pack('ll')

    if $scr2cli.call(hwnd, pos) != 0

    return pos.unpack('ll')

    else

    return nil

    end

    end

     

    def hwnd

    game_name = "\0" * 256

    $readini.call('Game','Title','',game_name,255,".\\Game.ini")

    game_name.delete!("\0")

    return $findwindow.call('RGSS Player',game_name)

    end

     

    def client_size

    rect = [0, 0, 0, 0].pack('l4')

    $client_rect.call(hwnd, rect)

    right, bottom = rect.unpack('l4')[2..3]

    return right, bottom

    end

     

     

    #---------------------------------------------------------------------

    # Game_Pos_Screen_Event

    #

    # Calcul la position de l'évènement non par rapport à la carte

    # mais selon l'écran.

    #---------------------------------------------------------------------

     

    class Game_Pos_Screen_Event

     

    def initialize

    # Initialisation

    @x = @y = @real_x = @real_y = 0

    @map = load_data(sprintf("Data/Map%03d.rvdata", $game_map.map_id))

    end

     

    def calcul_pos_event(event_id = 1)

    # Prend la position de l'évènement

    event = $game_map.events[event_id]

    pos_x_event = event.x

    pos_y_event = event.y

     

    # Calcule la position relative à l'écran

    @x = pos_x_event % @map.width

    @y = pos_y_event % @map.height

    @real_x = @x * 256

    @real_y = @y * 256

    end

     

    def screen_x

    return ($game_map.adjust_x(@real_x) + 8007) / 8 - 1000 + 16

    end

     

    def screen_y

    return ($game_map.adjust_y(@real_y) + 8007) / 8 - 1000 + 32

    end

     

    end

     

    #---------------------------------------------------------------------

    # Game_Pos_Screen_Mouse

    #

    # Retourne les positions de la souris grâce au module Mouse

    #---------------------------------------------------------------------

     

    class Game_Pos_Screen_Mouse

     

    def initialize

    @pos_x_mouse = @pos_y_mouse = 0

    end

     

    def screen_x

    return @pos_x_mouse = Mouse.mouse_pos[0]

    end

     

    def screen_y

    return @pos_y_mouse = Mouse.mouse_pos[1]

    end

     

    end

     

    #---------------------------------------------------------------------

    # Window_MouseOver

    #

    # Affichage de la fenêtre MouseOver. Calcule la taille de la feêtre

    # selon la taille du texte.

    #---------------------------------------------------------------------

     

     

    class Window_MouseOver < Window_Base

     

    def initialize

    super(0, 0, 64, 64)

    @height = @width = 64

    end

     

    def refresh(text)

    # initialisation

    x = y = lign_size = max_size = 0

     

    self.contents = Bitmap.new(@width - 32, @height - 32)

     

    self.contents.font.name = FONT_FACE

    self.contents.font.size = FONT_SIZE

    self.windowskin = Cache.system(WINDOWSKIN)

    self.contents.font.color = Color.new(COLOR_RED,COLOR_BLUE, COLOR_GREEN, 255)

    self.opacity = OPACITY

     

    self.contents.clear

     

    ctab = text.scan(/./m)

    for i in 0..ctab.size - 1

    if ctab == "\n"

    # Prend la ligne la plus grande (pour la taille de la fenêtre)

    if lign_size > max_size

    max_size = lign_size

    end

     

    lign_size = x = 0

    y += 1

    next

    end

     

    lign_size += self.contents.text_size(ctab).width

    taille_height = self.contents.text_size(ctab).height

    # Affichage du texte

    self.contents.draw_text(x, taille_height * y, 20, 20, ctab)

    x += self.contents.text_size(ctab).width

    end

     

     

    # Calcule de la taille de la fenêtre

    @height = self.height = taille_height * y + 32

    @width = self.width = max_size + 32

     

    # Affichage si la taille du contenu de la Bitmap (- 32px) est égal à la taille de la fenêtre

    if self.contents.width == @width - 32 and self.contents.height == @height - 32

    self.visible = true

    else

    self.visible = false

    end

    end

     

    def width_window

    return self.width

    end

     

    def height_window

    return self.height

    end

     

     

    end

     

    #---------------------------------------------------------------------

    # Scene_Map

    #

    # Reprise du scritp Scene_Map avec des parties rajoutées

    # Affiche la fenêtre sur la carte.

    #---------------------------------------------------------------------

     

    class Scene_Map

     

    # Définition des alias pour la classe Scene_Map

    alias new_start start

    alias new_update update

    alias new_terminate terminate

    alias new_fadein fadein

     

    def start

     

    $search_finish = 0

     

    @map = load_data(sprintf("Data/Map%03d.rvdata", $game_map.map_id))

    @mouseover_window = Window_MouseOver.new

    @mouseover_window.visible = false

    @event_memoire = 0

     

    new_start

    end

     

    def terminate

    @mouseover_window.dispose

    new_terminate

    end

     

    def fadein(duration)

    @mouseover_window.visible = false

    new_fadein(duration)

    end

     

    def update

    @mouseover_window.update

     

    # Cherche les évènements commentés commençant par [M]

    if $search_finish != $game_map.map_id # Cette condition permet de chercher seulement une fois les évènements par map

    $game_search_event = Game_Search_Event.new

    @event_tab = $game_search_event.element_event_id

    end

     

    # Positions X et Y de la souris sur l'écran

    $game_pos_screen_mouse = Game_Pos_Screen_Mouse.new

     

    mouse_x = $game_pos_screen_mouse.screen_x

    mouse_y = $game_pos_screen_mouse.screen_y

     

    # Positions X et Y des évènements sur l'écran

    $game_pos_screen_event = Game_Pos_Screen_Event.new

    element_event_size = $game_search_event.element_event_size

     

    # Parcours le tableau contenant les évènements à afficher

    for i in 0..element_event_size - 1

     

    event = @event_tab

     

    # Calcul la position de l'évènement relative à l'écran

    $game_pos_screen_event.calcul_pos_event(event)

     

    event_x = $game_pos_screen_event.screen_x

    event_y = $game_pos_screen_event.screen_y

     

    # Si la souris est sur l'évènement (carreau de 32*32)

    if mouse_x != nil and mouse_y != nil # Evite de tester une position nulle de la souris

    if mouse_x <= (event_x + 16) and mouse_x >= (event_x - 16)

    if mouse_y <= (event_y) and mouse_y >= (event_y - 32)

     

    if @event_memoire != event and SON != false

    $game_system.se_play(SON)

    end

     

    # Affiche la fenêtre avec le message de l'évènement et à ses positions

    text = $game_search_event.element_event_message(event)

     

    if text.size != 1

    @mouseover_window.refresh(text)

    end

     

    # Calcul la position X et Y à afficher afin d'éviter que l'écran coupe la fenêtre

    width_window = @mouseover_window.width_window

    height_window = @mouseover_window.height_window

     

    if FIX

    if (width_window + event_x) > 544

    @mouseover_window.x = event_x - width_window

    else

    @mouseover_window.x = event_x

    end

     

    if (height_window + event_y) > 416

    @mouseover_window.y = event_y - height_window - 16

    else

    @mouseover_window.y = event_y - 16

    end

    else

    if (width_window + event_x) > 544

    @mouseover_window.x = mouse_x - width_window

    else

    @mouseover_window.x = mouse_x

    end

     

    if (height_window + event_y) > 416

    @mouseover_window.y = mouse_y - height_window

    else

    @mouseover_window.y = mouse_y

    end

    end

     

    # Retient en mérmoire l'ID de l'évènement

    @event_memoire = event

     

    # Si la souris n'est plus sur l'évènement

    elsif @event_memoire == event

    @mouseover_window.visible = false

    @event_memoire = 0

    end

     

    elsif @event_memoire == event

    @mouseover_window.visible = false

    @event_memoire = 0

    end

    else

    @mouseover_window.visible = false

    end

    end

     

    new_update

     

    end

    end

     

×
×
  • Create New...