-
Posts
1,404 -
Joined
-
Last visited
-
Days Won
2
Content Type
Profiles
Forums
Calendar
Posts posted by Apo
-
-
Ma lol XD
Facciamolo una volta l'uno una l'altro? Piace pure a me XD
Comunque non è colpa mia, i font mi odiano ç__ç
-
Di per sé non è complicato, al di là di come visualizzare il cambio di hp.
Togliamo questo:
@face = Sprite.new
@face.bitmap = RPG::Cache.picture("Sora_face")
mettiamo nel def update
@face = Sprite
if @hp != $game_party.actors[0].hp
if @hp > $game_party.actors[0].hp
@face.bitmap = RPG::Cache.picture("face che soffre")
else
@face.bitmap = RPG::Cache.picture(Sora_face")
end
@hp = $game_party.actors[0].hp
else
@face.bitmap = RPG::Cache.picture(Sora_face")
end
@hp_percentuale = $game_party.actors[0].hp
@hp_percentuale *= 100
@hp_percentuale /= $game_party.actors[0].maxhp
if @hp_percentuale =
@face.bitmap = RPG::Cache.picture("face sfinito")
end
Ricorda di mettere nell'initialize
@hp = 0
@hp_percentuale = 0
Dovrebbe funzionare; ti è chiaro all'incirca il procedimento? Ho controllato con una variabile "ausiliaria" se gli hp cambiano nel corso del gioco(controlla ad ogni update); se sì, se sono scesi, faccia sofferente; altrimenti, se salgono o non sono cambiati, faccia normale. Se sono sotto il 15% del totale, faccia sfinita. ; )
E' scritto un po' di fretta, di' poi se c'è qualche distrazione!
-
Allora posta il progetto aggiornato no? XD *craniata*
Posta sia il progetto sia l'altro script!
-
Senti giocando al progetto che hai postato nell'altro topic sinceramente quell'effetto nero non lo vedo °_°
Ma hai cambiato il progetto nel frattempo?
-
Intanto postaci il metodo che segui nell'update ;)
Comunque, puoi andare di variabili e if, se le face sono relativamente poche. Per esempio, se tu volessi far 100 face diverse per ogni 1% di vita, puoi far visualizzare un'immagine che si chiami "faceX" dove X è quella percentuale di vita.
In generale non c'è un metodo solo, dipende da cosa vorresti.
-
Scusa, hai provato per esempio ad utilizzare lo script in un progetto nuovo, senza nessuna altro script? Non cambia niente?
Purtroppo posso aiutarti poco, il mio pc non regge lo script ; (
-
Caldeggio anche io come Guardian il tasto cerca, anche per la prima domanda, già fatta molte volte ; )
Comunque per permettere al giocatore di crearsi un pg personalizzato non sarà necessario utilizzare l'RGSS, di per sé è fattibile anche ad eventi impostando un codice evento (certo un po' lungo) per considerare tutte le possibili scelte grafiche del giocatore.
Oppure intendevi qualcosa di diverso?
Ad ogni modo se vuoi mettere a disposizione del giocatore certi elementi grafici (capelli, facce, vestiti), per ovviare al problema delle animazioni di battaglia di un BS laterale ti "basterebbe" crearne tante quante potrebbero essere i pg creabili.
La cosa negativa è che il peso del gioco lieviterebbe.
"Assemblare" gli elementi nel momento stesso del gioco credo però che sarebbe possibile, se cerchi dovrebbe esserci uno script che permette di visualizzare gli equipaggiamenti come se facessero parte del character; forse con le opportune modifiche potrebbe servire allo scopo.
; )
-
Ser che ti avevo detto? ; )
Complimenti, buon lavoro tutti : )
Comunque no, non aspettarti che ora mi metta a lavorare alla fine del mondo, ho anche io i miei impegni! ù___ù
-
Yeaaaah!......
Ok, l'entusiasmo devo dire che è relativo XD
Comunque per il font so che non è il massimo, ma volevo una cosa semplice e leggibile che però fosse sul quadrato.
Per la disposizione strana, ho pensato ad un triangolo massonicheggiante e al profilo di una piramide maya, o giù di lì. XD
"Utentibus Apo causa placuit, sed Nullius Jano" (sperando di ricordare correttamente la citazione)
Sì, Impaled, sono indeclinabile!
-
Errore mio scusa, dovrebbe essere
@hudm.bitmap = RPG::Cache.picture("Max_HP1quart"+$game_party.actors[0].hp.to_s)
quindi senza le virgolette al game_party.actors.
Comunque ho scaricato il progetto: non puoi mettere una serie di comandi dentro una pagina, così, senza una struttura che la contenga!
class HUD
def initialize
@hud = Sprite.new
@hud.bitmap = RPG::Cache.picture("nHP")
@hud_x = 0
@hud_y = 0
@hud.z = 4
@face = Sprite.new
@face.bitmap = RPG::Cache.picture("Sora_face")
@face_x = 0
@face_y = 0
@face.z = 0
@hudm = Sprite.new
@hudm.bitmap = RPG::Cache.picture("Max_HP1quart")
@hudm_x = 0
@hudm_y = 0
@hudm.z = 3
@n = 0
update
end
def update
@hudm.bitmap = RPG::Cache.picture() #se Sora è il primo personaggio del gruppo
end
end
Nel def update dovresti vedere in base a cosa richiamare le immagini: secondo percentuali della vita o altro, vedi tu.
L'avere una struttura ordinata permette di gestire meglio le cose, e di non vedere l'hud partire a casaccio ad inizio gioco ma richiamarlo:
in un evento per esempio puoi inserire nel Call script il comando "@hud=HUD.new" che richiamerà questo script. Però per far sì che si aggiorni correttamente ti conviene fare fare questo richiamo mettendo un metodo (un def) nella scene_map per richiamare tramite un tasto l'HUD, oppure inserirlo permanentemente lì, richiamandolo nel main della scene_map ed aggiornandolo.
Ora, questo alla fin fine come script è un abozzo, dicci più chiaramente quali sono le tue idee.
Comunque ho visto che avevi un'altro script per un HUD: come mai ne inseriresti uno ex novo?
In ogni caso ti consiglio di cercare in sezione una guida iniziale per l'RGSS, per orientartici un pochino meglio

-
Per caso hai usato lo script qui (http://www.rpg2s.net/forum/index.php?showtopic=4865) ed hai la versione 1.01 di RPG Maker XP?
Se sì è possibile che tu abbia qualche problema per quello, altrimenti non so, non conosco altri bug/conflitti di quello script.
-
Devi anche un po' sforzarti, è chiaro che $switch_quello_che_vuoi è per essere indicativi XD
Comunque, facciamo le cose semplici, ti scrivo più o meno l'idea:
#Test per creare un HUD di Base
@hud = Sprite.new
@hud.bitmap = RPG::Cache.picture("nHP")
@hud_x = 0
@hud_y = 0
@hud.z = 0
@face = Sprite.new
@face.bitmap = RPG::Cache.picture("Sora_face")
@face_x = 0
@face_y = 0
@face.z = 0
@hudm = Sprite.new
@hudm.bitmap = RPG::Cache.picture("Max_HP1quart"+"$game_party.actors[0].hp.to_s") #se Sora è il primo personaggio del gruppo
@hudm_x = 0
@hudm_y = 0
@hudm.z = 0
In questo modo, aggiornando la picture, il programma caricherà l'immagine chiamata "Max_HP1quartX" dove X è la vita del primo personaggio del gruppo. Nella cartella picture allora dovrai mettere altrettante immagini.
Se preferisci, come suggeriva guardian, sarebbe molto più comodo gestire la cosa a percentuali(quindi molte meno picture).
Per la switch
if $game_switches[1] == true
fai il codice precedente
else
#niente
end
In questo caso considera la prima delle normali switch.
Ma comunque scusa, questo codice dove lo stai mettendo?
-
Non ho capito bene cosa hai in mente.
Spiega meglio da capo:
Un barra della vita circolare?
Comunque per attivare/disattivare via switch
if switch_che_vuoi == true
#fai normalmente
else
#niente
end
-
Zekro considera che ProGM in quel topic considerava un gioco alla Zelda con tre cuori/vite, per questo metteva un numero preciso

Se devi visualizzare la vita piena del pg l'idea è mettere
if $hp == $max_hp
allora etc.
end
-
Mmmmh ho una curiosità.
All'inizio dello script, spesso fa delle if con il numero 19 e il numero 25.
Puoi provare a sostituire 25 con 15 in tutti quei casi iniziali e dirmi se ti funziona?
-
Esattamente in quel caso cosa non va?
Illustra meglio, magari con anche uno screen

-
+2
Può sembrare vuoto, però mi piace quella semplicità e il sentimento che trasmette; oltretutto vedo i colori molto in linea con il forum

-
A parte che questo "conflitto" non ha bisogno di una guida, perché si tratta semplicemente di un caso(nello script delle 8 direzioni non è di per sé necessario quel valore 4;infatti l'autore ha solo riportato lo Sprite_Character così com'è normalmente, modificando dove serviva), comunque sii preciso: per avere l'effetto giusto è comunque necessario mantenere le altre modifiche per ottenere la camminata a 9 frame.
-
Intendi ridimensionare proprio la finestra di gioco giusto?
Qua c'è uno script che sembra adatto al tuo caso.
Io sinceramente non l'ho potuto provare, perché il mio pc non regge i comandi API, ma di per sé funziona.
Pare ci fosse un bug o due, ma qualcuno potrebbe sempre aggiustarlo, o potresti provarci tu ; )
Cambiare risoluzione dello schermo
#==============================================================================
# ■ Win32API
#------------------------------------------------------------------------------
# by Squall squall@loeher.znn.com
# Change the window size
# I must thank cybersam for his mouse and keyboard scripts. they were very
# useful finding some winapi function.
#
# Ce script a été modifié par Sunmat pour une gestion fonctionnelle
# de la supperposition.
# les valeurs de la taille sont aux lignes 71 et 72
#==============================================================================
class Win32API
#--------------------------------------------------------------------------
# ● define constant
#--------------------------------------------------------------------------
GAME_INI_FILE = ".\\Game.ini" # define "Game.ini" file
HWND_TOPMOST = 0 # window always active
HWND_TOP = -1 # window active when used only
SWP_NOMOVE = 0 # window pos and sizes can be changed
#--------------------------------------------------------------------------
# ● Win32API.GetPrivateProfileString // check your game title in Game.ini
#--------------------------------------------------------------------------
def Win32API.GetPrivateProfileString(section, key)
val = "\0"*256
gps = Win32API.new('kernel32', 'GetPrivateProfileString',%w(p p p p l p), 'l')
gps.call(section, key, "", val, 256, GAME_INI_FILE)
val.delete!("\0")
return val
end
#--------------------------------------------------------------------------
# ● Win32API.FindWindow // cherche la fenetre RGSS
#--------------------------------------------------------------------------
def Win32API.FindWindow(class_name, title)
fw = Win32API.new('user32', 'FindWindow', %(p, p), 'i')
hWnd = fw.call(class_name, title)
return hWnd
end
#--------------------------------------------------------------------------
# ● Win32API.SetWindowPos // change la position et la taille de la fenetre
#--------------------------------------------------------------------------
def Win32API.SetWindowPos(w, h)
title = Win32API.GetPrivateProfileString("Game", "Title")
hWnd = Win32API.FindWindow("RGSS Player", title)
swp = Win32API.new('user32', 'SetWindowPos', %(l, l, i, i, i, i, i), 'i')
win = swp.call(hWnd, HWND_TOP, 0, 0, w + 6, h + 32, 0)
#la ligne si dessous correspond à la fenetre supérieur aux autres
#win = swp.call(hWnd, HWND_TOPMOST, 0, 0, w + 6, h + 32, SWP_NOMOVE)
return win
end
#--------------------------------------------------------------------------
# ● Win32API.client_size // check the window width and height
#--------------------------------------------------------------------------
def Win32API.client_size
title = Win32API.GetPrivateProfileString("Game", "Title")
hWnd = Win32API.FindWindow("RGSS Player", title)
rect = [0, 0, 0, 0].pack('l4')
Win32API.new('user32', 'GetClientRect', %w(l p), 'i').call(hWnd, rect)
width, height = rect.unpack('l4')[2..3]
return width, height
end
end
#==============================================================================
# ■ proceed with creation of the window
#------------------------------------------------------------------------------
# the width and height variables set the screen size.
#==============================================================================
$width = 800
$height = 600
win = Win32API.SetWindowPos($width, $height)
if(win == 0)
p "Size change has failed!"
end
#==============================================================================
# ■ Game_Player
#------------------------------------------------------------------------------
# remade to be compatible with change sreen size scrîpt
#==============================================================================
class Game_Player
#--------------------------------------------------------------------------
# ● define constant
#--------------------------------------------------------------------------
CENTER_X = ($width/2 - 16) * 4 # X coordinate in the center of the screen
CENTER_Y = ($height/2 - 16) * 4 # Y coordinate in the center of the screen
end
#==============================================================================
# ■ Spriteset_Map //squall@loeher.zzn.com
#------------------------------------------------------------------------------
# remade to be compatible with change sreen size scrîpt
#==============================================================================
class Spriteset_Map
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------
def initialize
if $game_map.width >= 25 and $game_map.height >= 19
$width2 = $width
$height2 = $height
elsif $game_map.width >= 25 and $game_map.height
$width2 = $width
$height2 = 480
elsif $game_map.width = 19
$width2 = 640
$height2 = $height
elsif $game_map.width
$width2 = 640
$height2 = 480
else
$width2 = $width
$height2 = $height
end
@viewport1 = Viewport.new(0, 0, $width2, $height2)
@viewport2 = Viewport.new(0, 0, $width2, $height2)
@viewport3 = Viewport.new(0, 0, $width2, $height2)
@viewport4 = Viewport.new(640, 0, $width2-640, 480)
@viewport5 = Viewport.new(0, 480, 640, $height2-480)
@viewport6 = Viewport.new(640, 480, $width2-640, $height2-480)
#@viewport1 = Viewport.new(0, 0, 640, 480)
@viewport2.z = 200
@viewport3.z = 5000
@tilemap = Tilemap.new(@viewport1)
@tilemap.tileset = RPG::Cache.tileset($game_map.tileset_name)
for i in 0..6
autotile_name = $game_map.autotile_names
@tilemap.autotiles = RPG::Cache.autotile(autotile_name)
end
@tilemap.map_data = $game_map.data
@tilemap.priorities = $game_map.priorities
@panorama = Plane.new(@viewport1)
@panorama.z = -1000
@fog = Plane.new(@viewport1)
@fog.z = 3000
@character_sprites = []
for i in $game_map.events.keys.sort
sprite = Sprite_Character.new(@viewport1, $game_map.events)
@character_sprites.push(sprite)
end
@character_sprites.push(Sprite_Character.new(@viewport1, $game_player))
@weather = RPG::Weather.new(@viewport1)
@picture_sprites = []
for i in 1..50
@picture_sprites.push(Sprite_Picture.new(@viewport2, $game_screen.pictures))
end
@timer_sprite = Sprite_Timer.new
@tilemap2 = Tilemap.new(@viewport4)
@tilemap2.tileset = RPG::Cache.tileset($game_map.tileset_name)
@tilemap3 = Tilemap.new(@viewport5)
@tilemap3.tileset = RPG::Cache.tileset($game_map.tileset_name)
@tilemap4 = Tilemap.new(@viewport6)
@tilemap4.tileset = RPG::Cache.tileset($game_map.tileset_name)
for i in 0..6
autotile_name = $game_map.autotile_names
@tilemap2.autotiles = RPG::Cache.autotile(autotile_name)
@tilemap3.autotiles = RPG::Cache.autotile(autotile_name)
@tilemap4.autotiles = RPG::Cache.autotile(autotile_name)
end
@tilemap2.map_data = $game_map.data
@tilemap3.map_data = $game_map.data
@tilemap4.map_data = $game_map.data
update
end
#--------------------------------------------------------------------------
# ● Dispose the sprite
#--------------------------------------------------------------------------
def dispose
@tilemap.tileset.dispose
@tilemap2.tileset.dispose
@tilemap3.tileset.dispose
@tilemap4.tileset.dispose
for i in 0..6
@tilemap.autotiles.dispose
@tilemap2.autotiles.dispose
@tilemap3.autotiles.dispose
@tilemap4.autotiles.dispose
end
@tilemap.dispose
@tilemap2.dispose
@tilemap3.dispose
@tilemap4.dispose
@panorama.dispose
@fog.dispose
for sprite in @character_sprites
sprite.dispose
end
@weather.dispose
for sprite in @picture_sprites
sprite.dispose
end
@timer_sprite.dispose
@viewport1.dispose
@viewport2.dispose
@viewport3.dispose
@viewport4.dispose
@viewport5.dispose
@viewport6.dispose
end
#--------------------------------------------------------------------------
# ● Update the sprite
#--------------------------------------------------------------------------
def update
if @panorama_name != $game_map.panorama_name or
@panorama_hue != $game_map.panorama_hue
@panorama_name = $game_map.panorama_name
@panorama_hue = $game_map.panorama_hue
if @panorama.bitmap != nil
@panorama.bitmap.dispose
@panorama.bitmap = nil
end
if @panorama_name != ""
@panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
end
Graphics.frame_reset
end
if @fog_name != $game_map.fog_name or @fog_hue != $game_map.fog_hue
@fog_name = $game_map.fog_name
@fog_hue = $game_map.fog_hue
if @fog.bitmap != nil
@fog.bitmap.dispose
@fog.bitmap = nil
end
if @fog_name != ""
@fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
end
Graphics.frame_reset
end
@tilemap.ox = $game_map.display_x / 4
@tilemap.oy = $game_map.display_y / 4
@tilemap.update
#if @tilemap.ox > $game_map.width * 32 - $width
#@tilemap.ox = $game_map.width * 32 - $width
#end
#if @tilemap.oy > $game_map.width * 32 - $height
#@tilemap.oy = $game_map.height * 32 - $height
#end
@tilemap2.ox = @tilemap.ox + 640
@tilemap2.oy = @tilemap.oy
@tilemap2.update
@tilemap3.ox = @tilemap.ox
@tilemap3.oy = @tilemap.oy + 480
@tilemap3.update
@tilemap4.ox = @tilemap.ox + 640
@tilemap4.oy = @tilemap.oy + 480
@tilemap4.update
@panorama.ox = $game_map.display_x / 8
@panorama.oy = $game_map.display_y / 8
@fog.zoom_x = $game_map.fog_zoom / 100.0
@fog.zoom_y = $game_map.fog_zoom / 100.0
@fog.opacity = $game_map.fog_opacity
@fog.blend_type = $game_map.fog_blend_type
@fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
@fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
@fog.tone = $game_map.fog_tone
for sprite in @character_sprites
sprite.update
end
@weather.type = $game_screen.weather_type
@weather.max = $game_screen.weather_max
@weather.ox = $game_map.display_x / 4
@weather.oy = $game_map.display_y / 4
@weather.update
for sprite in @picture_sprites
sprite.update
end
@timer_sprite.update
@viewport1.tone = $game_screen.tone
@viewport1.ox = $game_screen.shake
@viewport3.color = $game_screen.flash_color
@viewport1.update
@viewport3.update
end
end
class Game_Map
#--------------------------------------------------------------------------
# ● Scroll the map down
# distance : Distance to scroll in real units (4 = 1 pixel).
#--------------------------------------------------------------------------
def scroll_down(distance)
if $height / 32.0
@display_y = [@display_y + distance, (self.height - ($height / 32.0)) * 128].min
else
@display_y = [@display_y + distance, (self.height - 15) * 128].min
end
end
#--------------------------------------------------------------------------
# ● Scroll the map left
# distance : Distance to scroll in real units (4 = 1 pixel).
#--------------------------------------------------------------------------
def scroll_left(distance)
@display_x = [@display_x - distance, 0].max
end
#--------------------------------------------------------------------------
# ● Scroll the map right
# distance : Distance to scroll in real units (4 = 1 pixel).
#--------------------------------------------------------------------------
def scroll_right(distance)
if $width / 32.0
@display_x = [@display_x + distance, (self.width - ($width / 32.0)) * 128].min
else
@display_x = [@display_x + distance, (self.width - 20) * 128].min
end
end
#--------------------------------------------------------------------------
# ● Scroll the map up
# distance : Distance to scroll in real units (4 = 1 pixel).
#--------------------------------------------------------------------------
def scroll_up(distance)
@display_y = [@display_y - distance, 0].max
end
end
EDIT: riscritto, non so per quale ragione ma il colore dava problemi .__.
-
Per l'HUD penso tu abbia bisogno di uno script apposito, ma penso sia fattibile anche ad eventi circolare; per adesso prova a cercare in sezione, oppure, niente di particolare, per ora puoi farti ad eventi un hud lineare.

Ricorda sempre di cercare prima di chiedere: 8 direzioni.
Prima devi cercare, poi se non trovi niente con una ricerca attenta, chiedi pure, ti si aiuta volentieri. : )
-
B-bentornato XD
-
Benvenuto XD
Buona permanenza sul forum, con il nuovo anno inizia anche questo fantastico viaggio insieme

Ok, è eccessivo. XD
-
Sì ma per modificare che intendi? Ne hai già una fatta a script?
Per farla ad eventi vediamo...
Non mi è ancora capitato di farne una barra, ma può andare bene usare due immagini: la barra verde della vita e quella grigia che indica la barra vuota; metti come immagine 3 lo sfondo, con un ritaglio in corrispondenza della barra; l'immagine 1 sarà la barra grigia, che sarà visibile per il ritaglio. Come immagine 2, quindi sopra alla barra grigia ma con priorità inferiore rispetto allo sfondo, mettiamo la barra verde.
Ora, in base al danno che l'avversario riceve, sposterai la barra verde verso la zona dello sfondo dove non sarà visibile, simulando l'abbassamento degli HP. Per le barre di vita indicate dai quadratini verdi, ti basterà cambiare immagine ogni volta che una barra termina (lo puoi comunicare al gioco con una condizione se), riposizionare la barra nella posizione di partenza(vita piena) e continuare; con una condizione se controlli ogni volta se le barre in totale sono finite; se sì, il nemico è sconfitto.
Sono andato un po' a braccio, ma per me questa era ancora una questione teorica : P
Con l'RGSS comunque non hai bisogno di nascondere la barra, puoi creare un rettangolo con dimensioni legate direttamente agli HP.
-
Puoi farlo via script o ad eventi.
Ad eventi devi utilizzare delle immagini controllando tramite conditional branch (condizione SE) le magie che puoi utilizzare, e in un processo parallelo associare il tutto ad uno dei tasti supportati dal programma(per avere tutta la tastiera a disposizione serve uno script apposito) con il controllo tasti oppure con un conditional branch (se tasto è premuto), in questo caso però devi inserire anche almeno un wait da 1 frame.
Che intendi per "modificare" la barra nemico?

creazione personaggio e battle system
in Richieste scripts RGSS (XP)
Posted
Personalmente non so neppure se è possibile fare quello che chiedi (aprire un secondo programma da rpg maker, inserire un nuovo file a gioco aperto e caricarlo). Oltretutto per quanto riguarda un gioco online con rpg maker non è molto facile: c'erano 1-2 versioni di un RPG Maker XP online, ma andrebbero entrambe riviste.
Se la tua idea è creare un gioco online, ci sono programmi migliori; mi pare che uno sia Elysium ad esempio