Menu

Connexion



Retenir ?

Mot de passe oublié ?

Inscription

Fille Garçon
Gravatar ? (basé sur votre mail)
Eclipso logo
Merry Christmas !
21/01/2018 07:26:13

Une Princesse sans amour est une Princesse oubliée - Brandobscure

World of Forestia

Anonyme

8015
Anonyme
  • Messages : 8015
sam. 08 juin 2013 - 21h56

World of Forestia


J'avais testé ton projet à ses débuts, donc oui ça date un peu xD, néanmoins je vois qu'il a beaucoup changer (en bien), donc c'est vraiment sympa.
J'ai juste regardé les screens, je ferais un commentaire constructif un peu plus tard vu l'heure. ^^''
Merci de l'avoir présenté ici. =)

Edit: Je reprends où j'en étais.
Globalement les systèmes sont nombreux, il faudrait que je regarde In Game, s'ils m’encombrent pas le joueur, mais vu que tu reprends ce qui fait briller les mmos je pense que ça passera sans trop de problèmes. =)
J'aime beaucoup ce concept pour l'expérience, ça motive à vaincre des monstres supérieurs à ton personnage une bonne initiative selon moi.
Une question sur la caractéristique chance, as-tu modifié la caractéristique par défaut où tu l'as laissé tel quel ? Sinon elle a un rôle bien différent.
Les interfaces changent vraiment de ce que j'ai vu, et je trouve qu'elle donne une identité à ton projet, le Windowskin est sympa lui aussi, rien à redire dessus.
Globalement tes différents systèmes me plaisent bien, je le testerais quand j'aurais déjà terminé toutes les démos qui sont sur mon bureau, par contre il y a une chose dont je ne suis pas fan mais ça n'engage que moi.
Disons que depuis que j'ai joué à Acassia, j'ai vraiment du mal avec ses tiles, après peut-être qu'il y a la taille des arbres qui a mon sens serait plus adapté si tu reprenais ceux de benben par exemple (juste une histoire de taille).
Après en ce qui concerne le mapping extérieur, tu as beaucoup avancé ou pas ? Sinon je serais bien tenté de te donner un petit coup de pouce, disons que je pense que les tiles que j'utile pour mon projet (les forêts surtout) corrigeraient ses petits défauts, mais ces petits défauts n'engagent que moi. x)
Globalement ton projet est très bien comme ça.


spywaretof

Néophyte
spywaretof
  • Messages : 142
sam. 08 juin 2013 - 22h13

World of Forestia


Salut merci pour ton message.

Pour la caractéristique "chance" je n'ai encore rien réglé dans mon projet mais je pense influencer les loots via cette caractéristique.

Pour les interfaces j'ai du toutes les modifier pour qu'elles soient compatible et utilisables à la souris, ça a pas été une mince affaire...
Je suis plutôt content du résultat

Pour mon mapping et les tileset, ce n'est pas vraiment ma tasse de thé je suis pas super fort en mapping mais j'ai, enfin je pense, fais beaucoup de progrès.
Par contre je ne connais pas les tileset de Benben et je suis pas contre pour recevoir de l'aide, d'ailleurs j'ai pas du tout ton niveau sur ce point la

Pour le mapping extérieur, toute la vallée de Vileva est terminée soit 15 cartes de 25x25 sans compter les villes.

J'aimerais aussi trouver un bon graphiste qui pourrait me faire un plus joli logo en guise de titre.

Encore merci pour tes conseils

...


Anonyme

8015
Anonyme
  • Messages : 8015
sam. 08 juin 2013 - 22h22

World of Forestia


Pour ton logo je te recommande ce sujet: viewtopic.php?f=11&t=187
Pour le mapping faudra que je vois, car un actionRpg doit adopter un mapping assez particulier, tu pourrais me faire un screen complet d'une zone de combat extérieur (forêt par exemple), je vais tenter quelque chose et si ça te plaît, je veux bien te donner un coup de main pour le mapping extérieur, par contre je ne pense pas que j'aurais le temps de tout remapper, mais je peux toujours te conseiller. =)


Nana

Expert
Nana
  • Messages : 1066
sam. 08 juin 2013 - 22h31

World of Forestia


Bonjour bonjour ! ( ou bonsoir dépend à quel heure c'est lu ! ^^)

Ton jeu m'a l'air fan-tas-tique !

Je l'avais déjà vu sur oniro, mais impossible de le dl pendant plusieurs jours, allez savoir pourquoi. ( Enfin si ma connexion est vraiment pourri en fait ... )
Puis après ça m'étais sorti de l'esprit et la, bonheuuuuur !! Je peux enfin le tester et le dl n'a pas planter !!

Tout ça pour dire que pour le moment, je n'ai pu faire que les premières quêtes du début et mon dieuu ... quel ambiance génial !! Avec les sons de wow ça passe vraiment bien ( ça me rappelle tellement pleins de souvenirs !!! )

Le système de combat et grandissime ! La personnalisation du jeu est vraiment au top!
La barre du dessous avec accès au sac, aux quêtes, aux sorts, enfin le menu complet est vraiment une très bonne idée. et c'est de plus très bien réaliser.

Pour le moment je n'ai pas pu plus le tester, j'aurais juste voulu savoir une chose par contre. Est-il possible de réglé la résolution d'écran ? car en "moitié full screen" sur mon ordi ça bug assez et du coup le bas du jeu est coupé ( donc difficile d'accéder à la barre de sorts et du menu par exemple ^^, un peu gênant pour jouer du coup )

Et sincèrement de ce que j'ai vu, c'est juste excellent je te tire mon chapeau
C'est tout ce que j'aime !


Anonyme

8015
Anonyme
  • Messages : 8015
sam. 08 juin 2013 - 22h36

World of Forestia


J'avais oublié de le préciser mais Nana à raison, enfin vu que tu utilises une interface permanente pour le personnage, je pense que ça serait très apprécier que tu augmentes légèrement la résolution de l'écran, si tu as un problème avec ça demande-moi.


spywaretof

Néophyte
spywaretof
  • Messages : 142
sam. 08 juin 2013 - 23h26

World of Forestia


Re bonsoir

Merci pour vos messages.

Pour la résolution d'écran oui je dois encore modifier ça, pas mal de joueur on des soucis à ce niveau.
Mais quel résolution adopter ?...
Chez vous quand vous faites "ALT" "ENTER" pour passer en full screen, ça ne règle pas le problème ?

Merci pour ton test Nana, bizarre que tu n'ai pas pu télécharger sur Oniro, mais tu n'est pas le (la) premier(e) à qui ça arrive.

La version qui est en ligne ne présente que 5% du projet et a été upload pour tester et débusquer les vilains bubugs également

Garruk : Pour le screen je t'envoie ça sur le forum dans 5 minutes.
Merci pour le lien pour la demande de logo etc je te remercie

Voila la map, elle est de 25x27 et est liée à droite et à gauche à une autre carte (Maplink)

Spoiler


Anonyme

8015
Anonyme
  • Messages : 8015
dim. 09 juin 2013 - 00h30

World of Forestia


Merci, je verrais ça demain, et de rien pour le lien.
Pour la résolution tu peux toujours essayer avec celle que j'utilise pour mon projet, si tu la trouves trop haute, pas assez ou que tu souhaites la changer, tout ce fait à partir des premières lignes mais je pense que 544x480 sera suffisant. =)

Auteur: FenixFyreX

# ResolutionVX v 1.2 -- FenixFyreX




# SET UP YOUR RESOLUTION HERE:

Graphics.resize_screen(544,480) # The default is (544,416)





### DO NOT EDIT BELOW UNLESS YOU KNOW WHAT YOU ARE DOING!!! ###





class Game_Temp

attr_accessor :temp_bitmap # Temporary Bitmap

alias initialize_temp_bit initialize unless $@
def initialize
initialize_temp_bit
@temp_bitmap = Bitmap.new(Graphics.width,Graphics.height)
end
end

class Game_Map
#--------------------------------------------------------------------------
# * Scroll Setup
#--------------------------------------------------------------------------
def setup_scroll
@scroll_direction = 2
@scroll_rest = 0
@scroll_speed = 4
@margin_x = (width - (Graphics.width/32)) * 256 / 2 # Screen non-display width /2
@margin_y = (height - (Graphics.height/32)) * 256 / 2 # Screen non-display height /2
end
#--------------------------------------------------------------------------
# * Calculate X coordinate for parallax display
# bitmap : Parallax bitmap
#--------------------------------------------------------------------------
def calc_parallax_x(bitmap)
if bitmap == nil
return 0
elsif @parallax_loop_x
return @parallax_x / 16
elsif loop_horizontal?
return 0
else
w1 = bitmap.width - Graphics.width
w2 = @map.width * 32 - Graphics.width
if w1 <= 0 or w2 <= 0
return 0
else
return @parallax_x * w1 / w2 / 8
end
end
end
#--------------------------------------------------------------------------
# * Calculate Y coordinate for parallax display
# bitmap : Parallax bitmap
#--------------------------------------------------------------------------
def calc_parallax_y(bitmap)
if bitmap == nil
return 0
elsif @parallax_loop_y
return @parallax_y / 16
elsif loop_vertical?
return 0
else
h1 = bitmap.height - Graphics.height
h2 = @map.height * 32 - Graphics.height
if h1 <= 0 or h2 <= 0
return 0
else
return @parallax_y * h1 / h2 / 8
end
end
end
#--------------------------------------------------------------------------
# * Scroll Down
# distance : scroll distance
#--------------------------------------------------------------------------
def scroll_down(distance)
if loop_vertical?
@display_y += distance
@display_y %= @map.height * 256
@parallax_y += distance
else
last_y = @display_y
@display_y = [@display_y + distance, (height - (Graphics.height/32)) * 256].min
@parallax_y += @display_y - last_y
end
end
#--------------------------------------------------------------------------
# * Scroll Left
# distance : scroll distance
#--------------------------------------------------------------------------
def scroll_left(distance)
if loop_horizontal?
@display_x += @map.width * 256 - distance
@display_x %= @map.width * 256
@parallax_x -= distance
else
last_x = @display_x
@display_x = [@display_x - distance, 0].max
@parallax_x += @display_x - last_x
end
end
#--------------------------------------------------------------------------
# * Scroll Right
# distance : scroll distance
#--------------------------------------------------------------------------
def scroll_right(distance)
if loop_horizontal?
@display_x += distance
@display_x %= @map.width * 256
@parallax_x += distance
else
last_x = @display_x
@display_x = [@display_x + distance, (width - (Graphics.width/32)) * 256].min
@parallax_x += @display_x - last_x
end
end
#--------------------------------------------------------------------------
# * Scroll Up
# distance : scroll distance
#--------------------------------------------------------------------------
def scroll_up(distance)
if loop_vertical?
@display_y += @map.height * 256 - distance
@display_y %= @map.height * 256
@parallax_y -= distance
else
last_y = @display_y
@display_y = [@display_y - distance, 0].max
@parallax_y += @display_y - last_y
end
end
end

class Game_Player < Game_Character

CENTER_X = (Graphics.width / 2 - 16) * 8 # Screen center X coordinate * 8
CENTER_Y = (Graphics.height/ 2 - 16) * 8 # Screen center Y coordinate * 8

#--------------------------------------------------------------------------
# * Set Map Display Position to Center of Screen
# x : x-coordinate
# y : y-coordinate
#--------------------------------------------------------------------------
def center(x, y)
display_x = x * 256 - CENTER_X # Calculate coordinates
unless $game_map.loop_horizontal? # No loop horizontally?
max_x = ($game_map.width - (Graphics.width/32)) * 256 # Calculate max value
display_x = [0, [display_x, max_x].min].max # Adjust coordinates
end
display_y = y * 256 - CENTER_Y # Calculate coordinates
unless $game_map.loop_vertical? # No loop vertically?
max_y = ($game_map.height - (Graphics.height/32)) * 256 # Calculate max value
display_y = [0, [display_y, max_y].min].max # Adjust coordinates
end
$game_map.set_display_pos(display_x, display_y) # Change map location
end
end

class Sprite_Base < Sprite
#--------------------------------------------------------------------------
# * Start Animation
#--------------------------------------------------------------------------
def start_animation(animation, mirror = false)
dispose_animation
@animation = animation
return if @animation == nil
@animation_mirror = mirror
@animation_duration = @animation.frame_max * 4 + 1
load_animation_bitmap
@animation_sprites = []
if @animation.position != 3 or not @@animations.include?(animation)
if @use_sprite
for i in 0..15
sprite = ::Sprite.new(viewport)
sprite.visible = false
@animation_sprites.push(sprite)
end
unless @@animations.include?(animation)
@@animations.push(animation)
end
end
end
if @animation.position == 3
if viewport == nil
@animation_ox = Graphics.width / 2
@animation_oy = Graphics.height / 2
else
@animation_ox = viewport.rect.width / 2
@animation_oy = viewport.rect.height / 2
end
else
@animation_ox = x - ox + width / 2
@animation_oy = y - oy + height / 2
if @animation.position == 0
@animation_oy -= height / 2
elsif @animation.position == 2
@animation_oy += height / 2
end
end
end
end

class Sprite_Battler < Sprite_Base
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
if @battler == nil
self.bitmap = nil
else
@use_sprite = @battler.use_sprite?
if @use_sprite
self.x = @battler.screen_x + ((Graphics.width - 544)/2)
self.y = @battler.screen_y + ((Graphics.height - 416)/2)
self.z = @battler.screen_z
update_battler_bitmap
end
setup_new_effect
update_effect
end
end
end

class Spriteset_Map
#--------------------------------------------------------------------------
# * Create Viewport
#--------------------------------------------------------------------------
def create_viewports
@viewport1 = Viewport.new(0, 0, Graphics.width, Graphics.height)
@viewport2 = Viewport.new(0, 0, Graphics.width, Graphics.height)
@viewport3 = Viewport.new(0, 0, Graphics.width, Graphics.height)
@viewport2.z = 50
@viewport3.z = 100
end
end

class Spriteset_Battle
#--------------------------------------------------------------------------
# * Create Viewport
#--------------------------------------------------------------------------
def create_viewports
@viewport1 = Viewport.new(0, 0, Graphics.width, Graphics.height)
@viewport2 = Viewport.new(0, 0, Graphics.width, Graphics.height)
@viewport3 = Viewport.new(0, 0, Graphics.width, Graphics.height)
@viewport2.z = 50
@viewport3.z = 100
end
#--------------------------------------------------------------------------
# * Create Battleback Sprite
#--------------------------------------------------------------------------
def create_battleback
source = $game_temp.background_bitmap
bitmap = Bitmap.new(Graphics.width+64, Graphics.height+64)
bitmap.stretch_blt(bitmap.rect, source, source.rect)
bitmap.radial_blur(90, 12)
@battleback_sprite = Sprite.new(@viewport1)
@battleback_sprite.bitmap = bitmap
@battleback_sprite.ox = 320
@battleback_sprite.oy = 240
@battleback_sprite.x = 272
@battleback_sprite.y = 176
@battleback_sprite.wave_amp = 8
@battleback_sprite.wave_length = 240
@battleback_sprite.wave_speed = 120
end
#--------------------------------------------------------------------------
# * Create Battlefloor Sprite
#--------------------------------------------------------------------------
def create_battlefloor
@battlefloor_sprite = Sprite.new(@viewport1)
@battlefloor_sprite.bitmap = Cache.system("BattleFloor"
@battlefloor_sprite.x = (Graphics.width/2) - (@battlefloor_sprite.bitmap.width/2)
@battlefloor_sprite.y = 192
@battlefloor_sprite.z = 1
@battlefloor_sprite.opacity = 128
end
end

class Window_Base < Window
#--------------------------------------------------------------------------
# * Constants
#--------------------------------------------------------------------------
WLH = (Graphics.width >= 544) ? 24 : (24+(Graphics.height-416)/5)+4 #Window Line Height
end

class Window_MenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
# x : window X coordinate
# y : window Y coordinate
#--------------------------------------------------------------------------
def initialize(x, y)
super(x, y, Graphics.width-x, Graphics.height)
refresh
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.members.size
for actor in $game_party.members
draw_actor_face(actor, 2, actor.index * 96 + 2, 92)
x = 104
y = actor.index * 96 + WLH / 2
draw_actor_name(actor, x, y)
draw_actor_class(actor, x + 90, y)
draw_actor_level(actor, x, y + WLH * 1)
draw_actor_state(actor, x, y + WLH * 2)
draw_actor_hp(actor, x + 90, y + WLH * 1)
draw_actor_mp(actor, x + 90, y + WLH * 2)
end
end
end

class Window_SkillStatus < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
# x : window X coordinate
# y : window Y corrdinate
# actor : actor
#--------------------------------------------------------------------------
def initialize(x, y, actor)
super(x, y, Graphics.width, WLH + 32)
@actor = actor
refresh
end
end

class Window_Equip < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
# x : window X coordinate
# y : window Y corrdinate
# actor : actor
#--------------------------------------------------------------------------
def initialize(x, y, height, actor)
super(x, y, Graphics.width-(Graphics.height/2), height)
@actor = actor
refresh
self.index = 0
end
end

class Window_EquipStatus < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
# x : window X coordinate
# y : window Y corrdinate
# actor : actor
#--------------------------------------------------------------------------
def initialize(x, y, height, actor)
super(x, y, Graphics.height/2, height)
@actor = actor
refresh
end
end

class Window_Status < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 0, Graphics.width, Graphics.height)
@actor = actor
refresh
end
end

class Window_SaveFile < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
# file_index : save file index (0-3)
# filename : filename
#--------------------------------------------------------------------------
def initialize(file_index, filename)
height = ((Graphics.height-(WLH + 32))/4)
y = (WLH+32) + (height*file_index)
super(0, y, Graphics.width, height)
@file_index = file_index
@filename = filename
load_gamedata
refresh
@selected = false
end
end

class Window_ShopNumber < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
# x : window X coordinate
# y : window Y coordinate
#--------------------------------------------------------------------------
def initialize(x, y)
w = Graphics.width/2
h = Graphics.height-y
super(0, y, w, h)
@item = nil
@max = 1
@price = 0
@number = 1
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
y = 96
offset = (Graphics.width-544)+40
self.contents.clear
draw_item_name(@item, 0, y)
self.contents.font.color = normal_color
self.contents.draw_text(202-offset, y, 20, WLH, "×"
self.contents.draw_text(238-offset, y, 20, WLH, @number, 2)
self.cursor_rect.set(234-offset, y, 28, WLH)
draw_currency_value(@price * @number, 0-offset, y + WLH * 2, 264)
end
end

class Window_NumberInput < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
# digits_max : digit count
#--------------------------------------------------------------------------
def initialize
super(0, 0, Graphics.width, 64)
@number = 0
@digits_max = 6
@index = 0
self.opacity = 0
self.active = false
self.z += 9999
refresh
update_cursor
end
end

class Window_Message < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, Graphics.width/4, Graphics.width, Graphics.width/4)
self.z = 200
self.active = false
self.index = -1
self.openness = 0
@opening = false # WIndow opening flag
@closing = false # Window closing flag
@text = nil # Remaining text to be displayed
@contents_x = 0 # X coordinate for drawing next character
@contents_y = 0 # Y coordinate for drawing next character
@line_count = 0 # Line count drawn up until now
@wait_count = 0 # Wait count
@background = 0 # Background type
@position = 2 # Display position
@show_fast = false # Fast forward flag
@line_show_fast = false # Fast forward by line flag
@pause_skip = false # Input standby omission flag
create_gold_window
create_number_input_window
create_back_sprite
end
#--------------------------------------------------------------------------
# * Create Gold Window
#--------------------------------------------------------------------------
def create_gold_window
@gold_window = Window_Gold.new(Graphics.width, 0)
@gold_window.x -= @gold_window.width
@gold_window.openness = 0
end
#--------------------------------------------------------------------------
# * Set Window Background and Position
#--------------------------------------------------------------------------
def reset_window
@background = $game_message.background
@position = $game_message.position
if @background == 0 # Normal window
self.opacity = 255
else # Dim Background and Make it Transparent
self.opacity = 0
end
case @position
when 0 # Top
self.y = 0
@gold_window.y = Graphics.height-@gold_window.height
when 1 # Middle
self.y = (Graphics.height/2)-(self.height/2)
@gold_window.y = 0
when 2 # Bottom
self.y = Graphics.height-self.height
@gold_window.y = 0
end
end
end

class Window_BattleMessage < Window_Message
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super
self.y = Graphics.height-self.height
self.openness = 255
@lines = []
refresh
end
end

class Window_PartyCommand < Window_Command
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
s1 = Vocab::fight
s2 = Vocab::escape
super(Graphics.width/4, [s1, s2], 1, 4)
draw_item(0, true)
draw_item(1, $game_troop.can_escape)
self.active = false
end
end

class Window_ActorCommand < Window_Command
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(Graphics.width/4, [], 1, 4)
self.active = false
end
end

class Window_TargetEnemy < Window_Command
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
commands = []
@enemies = []
for enemy in $game_troop.members
next unless enemy.exist?
commands.push(enemy.name)
@enemies.push(enemy)
end
super(Graphics.width-(Graphics.width/4), commands, 2, 4)
end
end

class Window_BattleStatus < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, Graphics.width-(Graphics.width/4), 128)
refresh
self.active = false
end
#--------------------------------------------------------------------------
# * Draw Item
# index : Item number
#--------------------------------------------------------------------------
def draw_item(index)
rect = item_rect(index)
rect.x += 4
rect.width -= 8
self.contents.clear_rect(rect)
self.contents.font.color = normal_color
actor = $game_party.members[index]
draw_actor_name(actor, 4, rect.y)
draw_actor_state(actor, 114, rect.y, 48)
draw_actor_hp(actor, 174, rect.y, 120)
draw_actor_mp(actor, 305, rect.y, 70)
end
end

class Window_DebugLeft < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
# x : window X coordinate
# y : window Y corrdinate
#--------------------------------------------------------------------------
def initialize(x, y)
super(x, y, 176, Graphics.height)
self.index = 0
refresh
end
end

class Scene_Title < Scene_Base
#--------------------------------------------------------------------------
# * Create Command Window
#--------------------------------------------------------------------------
def create_command_window
s1 = Vocab::new_game
s2 = Vocab::continue
s3 = Vocab::shutdown
@commands = [s1,s2,s3]
width = 172
@commands.each {|w| ww = $game_temp.temp_bitmap.text_size(w).width
width = ww if ww > width }
@command_window = Window_Command.new(width, @commands)
@command_window.x = (Graphics.width/2) - (@command_window.width/2)
@command_window.y = Graphics.height - (@command_window.height*1.5)
if @continue_enabled # If continue is enabled
@command_window.index = 1 # Move cursor over command
else # If disabled
@command_window.draw_item(1, false) # Make command semi-transparent
end
@command_window.openness = 0
@command_window.open
end
end

class Scene_Menu < Scene_Base
#--------------------------------------------------------------------------
# * Start processing
#--------------------------------------------------------------------------
def start
super
create_menu_background
create_command_window
@gold_window = Window_Gold.new(0, Graphics.height)
@gold_window.y -= @gold_window.height
@status_window = Window_MenuStatus.new(@command_window.width, 0)
end
#--------------------------------------------------------------------------
# * Create Command Window
#--------------------------------------------------------------------------
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = Vocab::save
s6 = Vocab::game_end
@commands = [s1, s2, s3, s4, s5, s6]
width = 160
@commands.each {|w| ww = $game_temp.temp_bitmap.text_size(w).width
width = ww if ww > width }
@command_window = Window_Command.new(160, @commands)
@command_window.index = @menu_index
if $game_party.members.size == 0 # If number of party members is 0
@command_window.draw_item(0, false) # Disable item
@command_window.draw_item(1, false) # Disable skill
@command_window.draw_item(2, false) # Disable equipment
@command_window.draw_item(3, false) # Disable status
end
if $game_system.save_disabled # If save is forbidden
@command_window.draw_item(4, false) # Disable save
end
end
end

class Scene_Item < Scene_Base
#--------------------------------------------------------------------------
# * Start processing
#--------------------------------------------------------------------------
def start
super
create_menu_background
@viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
@help_window = Window_Help.new
@help_window.viewport = @viewport
@item_window = Window_Item.new(0, @help_window.height, Graphics.width, Graphics.height-@help_window.height)
@item_window.viewport = @viewport
@item_window.help_window = @help_window
@item_window.active = false
@target_window = Window_MenuStatus.new(0, 0)
hide_target_window
end
#--------------------------------------------------------------------------
# * Show Target Window
# right : Right justification flag (if false, left justification)
#--------------------------------------------------------------------------
def show_target_window(right)
@item_window.active = false
width_remain = Graphics.width - @target_window.width
@target_window.x = right ? width_remain : 0
@target_window.visible = true
@target_window.active = true
if right
@viewport.rect.set(0, 0, width_remain, Graphics.height)
@viewport.ox = 0
else
@viewport.rect.set(@target_window.width, 0, width_remain, Graphics.height)
@viewport.ox = @target_window.width
end
end
#--------------------------------------------------------------------------
# * Hide Target Window
#--------------------------------------------------------------------------
def hide_target_window
@item_window.active = true
@target_window.visible = false
@target_window.active = false
@viewport.rect.set(0, 0, Graphics.width, Graphics.height)
@viewport.ox = 0
end
end


class Scene_Skill < Scene_Base
#--------------------------------------------------------------------------
# * Start processing
#--------------------------------------------------------------------------
def start
super
create_menu_background
@actor = $game_party.members[@actor_index]
@viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
@help_window = Window_Help.new
@help_window.viewport = @viewport
@status_window = Window_SkillStatus.new(0, @help_window.height, @actor)
@status_window.viewport = @viewport
@skill_window = Window_Skill.new(0, @help_window.height*2, Graphics.width, Graphics.height-(@help_window.height*2), @actor)
@skill_window.viewport = @viewport
@skill_window.help_window = @help_window
@target_window = Window_MenuStatus.new(0, 0)
hide_target_window
end
#--------------------------------------------------------------------------
# * Show Target Window
# right : Right justification flag (if false, left justification)
#--------------------------------------------------------------------------
def show_target_window(right)
@skill_window.active = false
width_remain = Graphics.width - @target_window.width
@target_window.x = right ? width_remain : 0
@target_window.visible = true
@target_window.active = true
if right
@viewport.rect.set(0, 0, width_remain, Graphics.height)
@viewport.ox = 0
else
@viewport.rect.set(@target_window.width, 0, width_remain, Graphics.height)
@viewport.ox = @target_window.width
end
end
#--------------------------------------------------------------------------
# * Hide Target Window
#--------------------------------------------------------------------------
def hide_target_window
@skill_window.active = true
@target_window.visible = false
@target_window.active = false
@viewport.rect.set(0, 0, Graphics.width, Graphics.height)
@viewport.ox = 0
end
end


class Scene_Equip < Scene_Base
#--------------------------------------------------------------------------
# * Start processing
#--------------------------------------------------------------------------
def start
super
create_menu_background
@actor = $game_party.members[@actor_index]
@help_window = Window_Help.new
create_item_windows
height = (Graphics.height-@item_windows[0].height)-@help_window.height
@equip_window = Window_Equip.new(Graphics.height/2, @help_window.height, height, @actor)
@equip_window.help_window = @help_window
@equip_window.index = @equip_index
@status_window = Window_EquipStatus.new(0, @help_window.height, height, @actor)
end
#--------------------------------------------------------------------------
# * Create Item Window
#--------------------------------------------------------------------------
def create_item_windows
@item_windows = []
for i in 0...EQUIP_TYPE_MAX
@item_windows[i] = Window_EquipItem.new(0, Graphics.height/2, Graphics.width, Graphics.height/2, @actor, i)
@item_windows[i].help_window = @help_window
@item_windows[i].visible = (@equip_index == i)
@item_windows[i].y = Graphics.height/2
@item_windows[i].height = Graphics.height/2
@item_windows[i].active = false
@item_windows[i].index = -1
end
end
end

class Scene_End < Scene_Base

#--------------------------------------------------------------------------
# * Create Command Window
#--------------------------------------------------------------------------
def create_command_window
s1 = Vocab::to_title
s2 = Vocab::shutdown
s3 = Vocab::cancel
width = 172
@commands = [s1, s2, s3]
@commands.each {|w| ww = $game_temp.temp_bitmap.text_size(w).width
width = ww if ww > width }
@command_window = Window_Command.new(width, @commands)
@command_window.x = (Graphics.width - @command_window.width) / 2
@command_window.y = (Graphics.height - @command_window.height) / 2
@command_window.openness = 0
end
end

class Scene_Shop < Scene_Base
#--------------------------------------------------------------------------
# * Start processing
#--------------------------------------------------------------------------
def start
super
create_menu_background
create_command_window
@help_window = Window_Help.new
@command_window.y = @help_window.height
gwy = Graphics.height-(@help_window.height*2)
@gold_window = Window_Gold.new(Graphics.width, @help_window.height)
@gold_window.x -= @gold_window.width
@dummy_window = Window_Base.new(0, @help_window.height*2, Graphics.width, gwy)
@sell_window = Window_ShopSell.new(0, @help_window.height*2, Graphics.width, gwy)
@sell_window.active = false
@sell_window.visible = false
@sell_window.help_window = @help_window
@number_window = Window_ShopNumber.new(0, @help_window.height*2)
@number_window.active = false
@number_window.visible = false
@status_window = Window_ShopStatus.new(Graphics.width/2, @help_window.height*2, Graphics.width/2, gwy)
@status_window.visible = false
@buy_window = Window_ShopBuy.new(0, @help_window.height*2, Graphics.width-@status_window.width, gwy)
@buy_window.active = false
@buy_window.visible = false
@buy_window.help_window = @help_window
end
end

class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# * Create Information Display Viewport
#--------------------------------------------------------------------------
def create_info_viewport
@info_viewport = Viewport.new(0, Graphics.height, Graphics.width, Graphics.width/4)
@info_viewport.z = 100
@status_window = Window_BattleStatus.new
@party_command_window = Window_PartyCommand.new
@actor_command_window = Window_ActorCommand.new
@status_window.viewport = @info_viewport
@party_command_window.viewport = @info_viewport
@actor_command_window.viewport = @info_viewport
@status_window.x = Graphics.width/4
@actor_command_window.x = Graphics.width
@info_viewport.rect.y -= @status_window.height
@info_viewport.visible = false
end
#--------------------------------------------------------------------------
# * Update Information Display Viewport
#--------------------------------------------------------------------------
def update_info_viewport
@party_command_window.update
@actor_command_window.update
@status_window.update
if @party_command_window.active and @info_viewport.ox > 0
@info_viewport.ox -= 16
@info_viewport.ox = 0 if @info_viewport.ox < 0
elsif @actor_command_window.active and @info_viewport.ox < Graphics.width/4
@info_viewport.ox += 16
@info_viewport.ox = @actor_command_window.width if @info_viewport.ox > @actor_command_window.width
end
end
#--------------------------------------------------------------------------
# * Start Skill Selection
#--------------------------------------------------------------------------
def start_skill_selection
@help_window = Window_Help.new
height = (Graphics.height-@status_window.height)-@help_window.height
@skill_window = Window_Skill.new(0, @help_window.height, Graphics.width, height, @active_battler)
@skill_window.help_window = @help_window
@actor_command_window.active = false
end
#--------------------------------------------------------------------------
# * Start Item Selection
#--------------------------------------------------------------------------
def start_item_selection
@help_window = Window_Help.new
height = (Graphics.height-@status_window.height)-@help_window.height
@item_window = Window_Item.new(0, @help_window.height, Graphics.width, height)
@item_window.help_window = @help_window
@actor_command_window.active = false
end
end


spywaretof

Néophyte
spywaretof
  • Messages : 142
dim. 09 juin 2013 - 00h39

World of Forestia


Merci pour le script mais il ne fonctionne pas chez moi et ne fonctionnera pas à moins d'être modifié car toute mes "scène" sont modifiées chez moi...

J'ai celui-ci qui fonctionne (car ne touche pas mes scripts) que je peux régler sur 544x480 pour test.

#Basic Window Resizer v1.1
#----------#
#Features: Allows you to resize the window to whatever size you like! (This is not
# like Graphics.resize, this will scale to fit)
#
#Usage: Script calls:
# Window_Resize.r(width, height) - Self-explanatory
# Window_Resize.f - fits the game window to monitor size
# Window_Resize.full - switches to full screen unless already fullscreened
# Window_Resize.window - same as full but opposite
#
#No Customization
#
#----------#
#-- Script by: V.M of D.T
#--- Free to use in any project with credit given

SWPO = Win32API.new 'user32', 'SetWindowPos', ['l','i','i','i','i','i','p'], 'i'
WINX = Win32API.new 'user32', 'FindWindowEx', ['l','l','p','p'], 'i'
SMET = Win32API.new 'user32', 'GetSystemMetrics', ['i'], 'i'

module Window_Resize
def self.r(width, height)
resw = SMET.call(0)
resh = SMET.call(1)
window_loc = WINX.call(0,0,"RGSS Player",0)
width += (SMET.call(5) + SMET.call(45)) * 2
height += (SMET.call(6) + SMET.call(45)) * 2 + SMET.call(4)
x = (resw - width) / 2; y = (resh - height) / 2
y = 0 if y < 0;x = 0 if x < 0
SWPO.call(window_loc,0,x,y,width,height,0)
end
def self.f
resw = SMET.call(0)
resh = SMET.call(1)
window_loc = WINX.call(0,0,"RGSS Player",0)
SWPO.call(window_loc,0,0,0,resw,resh,0)
end
def self.full
resw = SMET.call(0)
return unless resw > 640
toggle
end
def self.window
resw = SMET.call(0)
return unless resw < 640
toggle
end
def self.toggle
keybd = Win32API.new 'user32.dll', 'keybd_event', ['i', 'i', 'l', 'l'], 'v'
keybd.call 0xA4, 0, 0, 0
keybd.call 13, 0, 0, 0
keybd.call 13, 0, 2, 0
keybd.call 0xA4, 0, 2, 0
end
end


Anonyme

8015
Anonyme
  • Messages : 8015
dim. 09 juin 2013 - 00h40

World of Forestia


Et il marche bien celui-ci ?
Sinon oui 544x480 sera largement mieux pour ton projet.


spywaretof

Néophyte
spywaretof
  • Messages : 142
dim. 09 juin 2013 - 00h42

World of Forestia


Oui il fonctionne parfaitement même si je trouve que 544x480 fait fort "carré" dans la démo je l'avais réglé sur 1024x768.

J'y comprend rien à ces résolutions ...


Anonyme

8015
Anonyme
  • Messages : 8015
dim. 09 juin 2013 - 00h48

World of Forestia


Si tu as l'occasion de prendre quelques screens avec les différentes résolutions, je te donnerais mon avis, comme ça je sais pas trop quoi dire. x)


spywaretof

Néophyte
spywaretof
  • Messages : 142
dim. 09 juin 2013 - 00h51

World of Forestia


Je te fais ça demain, le soucis c'est que Nana qui a test la démo avec une résolution de 1024x768 dit avoir eu des bugs et avoir l'écran du jeu coupé, je ne comprend pas trop comment c'est possible à moins d'avoir un écran de plus petite résolution (800x600 ? oO).

Faut vraiment que je trouve une solution à ce problème rapidement


Anonyme

8015
Anonyme
  • Messages : 8015
dim. 09 juin 2013 - 09h44

World of Forestia


J'ai fait un test avec mes tiles vu qu'il était prêt à l'emploi, par contre je n'étais pas trop fan de la conception de la map, c'était le fleuve et le chemin qui me dérangeait un peu xD, je n'ai pas non plus surchargé la map, pour un action Rpg, j'estime que le héros doit avoir un champ assez large pour gérer les ennemis et pouvoir progresser assez facilement.
J'ai fait un truc rapide, juste pour te donner un aperçu, après c'est facilement améliorable (je n'utilise pas le parano pour les extérieurs).

Spoiler


RitoJS

6307
RitoJS
  • Messages : 6307
dim. 09 juin 2013 - 10h03

World of Forestia


Quitte à avoir une plus grande résolution, pour quoi ne pas opté pour du 640x480 (plein écran) ?





Merci à Maki et KuroFidy pour ces cadeaux:

Spoiler



spywaretof

Néophyte
spywaretof
  • Messages : 142
dim. 09 juin 2013 - 14h19

World of Forestia


Oui je pense opter pour cette solution également.

Pour mon mapping j'ai appris à utiliser le overlay mapping grace à ton tuto justement , je vous présente ma première map avec cette solution, pouvez vous me dire ce que cella donne ?

[img]http://www.worldofforestia.com/para1.PNG[/img]

[img]http://www.worldofforestia.com/para2.PNG[/img]

[img]http://www.worldofforestia.com/para3.PNG[/img]

Je sais que c'est certainement améliorable, j'attends vos retour, merci d'avance