[RPG-MAKER.FR] Oniromancie: tout l'univers de RPG Maker en français - Scripts - Mode 7

Oniromancie: Scripts - Mode 7


Comment ça marche?

Aëdemphia
Par Sylvanor

Fighting Robots Quest
Par Boulon

Forstale
Par Ødd Clock

Geex
Par roys

Inexistence
Par Falco

La Légende d'Ibabou
Par Zaitan

Lije
Par Gaetz

Sarcia
Par Kaëlar

Super Mario RPG - Lost Souls
Par Omegabowser

Sorties: Viridik / News: Le samedi, c'est best of des (...) / Tutos: [XP] Installer automatiquement (...) / Sorties: Black Ritual RE / News: Le samedi, c'est best of des (...) /

Chat  (44 connectés)

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

44 connectés actuellement

9898024 visiteurs
depuis l'ouverture

310 visiteurs
aujourd'hui

Groupe Facebook

Barre de séparation

Partenaires






TOP
GAMEMAKING


Les 5 plus
visités

Akademiya RPG Maker

Alex d'Or

Blog of Chaos17

BloGecko

ConsoleFun

Au hasard

Tashiroworld

Lumen

Offgame

Les deux derniers

Zarok

Akademiya RPG Maker

Nos autres partenaires

Devenir
partenaire


Barre de séparation

Un site du réseau
War Paradise

Annuaires référenceurs




Mode 7
Script pour RPG Maker VX
Ecrit par mitraille

Bonjour tout le monde,
Je vous propose donc un script sympathique vous permettant d'insérer un jolie effet 3D dans vos carte de monde.

Voila un screenshot pour vous faire une idée de la chose :

image

Script de inconnu ( je sais pas )

Nombre de script pour le fonctionnement : 4

non traduit

C'est parti pour le premier : a placer au dessus de main



Portion de code:





module Game

#ゲーム画面の定義
DISPLAY_WIDTH = 544
DISPLAY_HEIGHT = 416

#縦横チップ数の定義
DISPLAY_CHIP_WIDTH = DISPLAY_WIDTH / 32
DISPLAY_CHIP_HEIGHT = DISPLAY_HEIGHT / 32

#実座標の定義(よくわからないがマップ座標 * 256が定義らしい)
DISPLAY_REAL_WIDTH = DISPLAY_CHIP_WIDTH * 256
DISPLAY_REAL_HEIGHT = DISPLAY_CHIP_HEIGHT * 256

end

#記述ルール

#定義済みの処理への追加(元の処理を損ねない)
#--------------------------------------------------------------------------
# ● 処理
#--------------------------------------------------------------------------

#定義済みの処理を上書きする変更
#--------------------------------------------------------------------------
# ● 処理 (上書き)
#--------------------------------------------------------------------------

#新規処理
#--------------------------------------------------------------------------
# ○ 処理
#--------------------------------------------------------------------------


Second code : a placer au dessus de main



Portion de code:





#タイルを並べられる

class Rect
def set_pos(x, y)
self.x = x
self.y = y
end

def set_size(w, h)
self.width = w
self.height = h
end
end



#==============================================================================
# ■ TileBitmap
#------------------------------------------------------------------------------
#  
#==============================================================================
class TileBitmap < Bitmap
def initialize(width, height, tilemap)
super(width, height)
@tilemap = tilemap
@map_width = width / 32
@map_height = height / 32
@buffer = Bitmap.new(width, height)
@map_x = 999
@map_y = 999
@anime_face = 0
@anime_face_x = 0
@anime_speed = 30
@anime_count = @anime_speed
@main_autotile = MainAutotile.new(self, @tilemap.bitmaps)
@temprect = Rect.new(0,0,32,32)
@range = -1..1
end

#--------------------------------------------------------------------------
def dispose
@buffer.dispose
@main_autotile.dispose
super
end

#--------------------------------------------------------------------------
def set_tile(id, dx, dy)
case id
when 2048...2816
set_auto_tile1(id - 2048, dx, dy)
when 2816...4352
chipid, atid = (id -2816).divmod(48)
@main_autotile.draw(1,
atid, (chipid & 7) << 6 , (chipid >> 3) * 96, dx, dy, chipid)
when 4352...5888
set_auto_tile2(@tilemap.bitmaps[2], id - 4352, dx, dy)
when 5888...8000
set_auto_tile2(@tilemap.bitmaps[3], id - 5888, dx, dy)
when 1536...2048
set_normal_tile(@tilemap.bitmaps[4], id - 1536, dx, dy)
when 1...256
#0は書き込まない
set_normal_tile(@tilemap.bitmaps[5], id, dx, dy)
when 256...512
set_normal_tile(@tilemap.bitmaps[6], id - 256, dx, dy)
when 512...768
set_normal_tile(@tilemap.bitmaps[7], id - 512, dx, dy)
when 768...1536
set_normal_tile(@tilemap.bitmaps[8], id - 768, dx, dy)
end
end

#--------------------------------------------------------------------------
def set_normal_tile(bitmap, id, dx, dy)
if(id < 128)
@temprect.set((id & 7) << 5, id >> 3 << 5, 32, 32)
else
id = id - 128
@temprect.set(((id & 7) + 8) << 5, id >> 3 << 5, 32, 32)
end
blt(dx, dy, bitmap, @temprect)
end

#--------------------------------------------------------------------------
def set_auto_tile1(id, dx, dy)
chip_id, atid = id.divmod(48)

f = @anime_face
fx = @anime_face_x
case chip_id
when 0
@main_autotile.draw(0, atid, fx, 0, dx, dy, f)
when 1
@main_autotile.draw(0, atid, fx, 96, dx, dy, 8 + f)
when 2
@main_autotile.draw(0, atid, 192, 0, dx, dy, 3)
# blt(dx, dy, @tilemap.bitmaps[0], Rect.new(192, 0, 32, 32))
when 3
blt(dx, dy, @tilemap.bitmaps[0], Rect.new(192, 96, 32, 32))
when 4
@main_autotile.draw(0, atid, 256 + fx, 0, dx, dy, f + 4)
when 6
@main_autotile.draw(0, atid, 256 + fx, 96, dx, dy, f + 12)
when 8
@main_autotile.draw(0, atid, fx, 192, dx, dy, f + 16)
when 10
@main_autotile.draw(0, atid, fx, 288, dx, dy, f + 20)
when 12
@main_autotile.draw(0, atid, 256 + fx, 192, dx, dy, f + 24)
when 14
@main_autotile.draw(0, atid, 256 + fx, 288, dx, dy, f + 28)
end

end

#--------------------------------------------------------------------------
# アニメーションタイルであればtrueを返す
# Params: tile_id タイル番号
# Return: アニメーションタイルであればTrue
#--------------------------------------------------------------------------
def anime_tile? (tile_id)
return tile_id && tile_id.between?(2048, 2815)
end

#--------------------------------------------------------------------------
def set_auto_tile2(bitmap, id, dx, dy)
#オートタイルID
autotile_id = id % 48

#仮に八分割して表示
real = id / 48
@temprect.set((real & 7) << 5, real >> 3 << 5, 32, 32)
blt(dx, dy, bitmap, @temprect)
end

#--------------------------------------------------------------------------
# マップ上の座標からマップをセット
#--------------------------------------------------------------------------
def set_map(ox, oy)
return update_anime(ox, oy) if @map_x == ox && @map_y == oy

#誤差が1の時はバッファからマップをコピー、不足分のみ描画する
#このときアニメカウント0ならアニメを更新する
dir_x = ox - @map_x
dir_y = oy - @map_y
update_anime(ox - dir_x, oy - dir_y)
#ループの考慮なし
#マップWとdirxの絶対値が同じなら+ならー1ーなら1にする
if @range === dir_x && @range === dir_y
case
when dir_x.zero? && dir_y == -1
copy_from_buffer(Rect.new(0, 0, width, height - 32), 0, 32)
#上端の一列を描く
draw_map(0, 0, ox, oy,
ox + @map_width, oy + 1)
when dir_x.zero? && dir_y == 1
copy_from_buffer(Rect.new(0, 32, width, height - 32), 0, 0)
#下端の一列を描く
draw_map(0, height - 32, ox, oy + @map_height - 1,
ox + @map_width, oy + @map_height)
when dir_y.zero? && dir_x == -1
copy_from_buffer(Rect.new(0, 0, width - 32, height), 32, 0)
#左端の一列を描く
draw_map(0, 0, ox, oy,
ox + 1, oy + @map_height)
when dir_y.zero? && dir_x == 1
copy_from_buffer(Rect.new(32, 0, width - 32, height), 0, 0)
#右端の一列を描く
draw_map(width - 32, 0, ox + @map_width - 1, oy,
ox + @map_width, oy + @map_height)

# when dir_y = -1 && dir_x = -1
# when dir_y = -1 && dir_x = 1
# when dir_y = 1 && dir_x = -1
# when dir_y = 1 && dir_x = 1
end

else
#全描画
#アニメカウントを考慮すること
clear
draw_map(0, 0, ox, oy, ox + @map_width, oy + @map_height)
end
@map_x = ox
@map_y = oy
return true
end

def next_anime_face
@anime_face = (@anime_face + 1) % 3
@anime_face_x = @anime_face << 6
end


#--------------------------------------------------------------------------
# バッファからコピー
#ox,oy 左上の座標(関数内で画面外補正をかける)
#--------------------------------------------------------------------------
def update_anime(ox, oy)
if @anime_count.zero?
next_anime_face

x = y = dx = dy = 0
data = $game_map.data
map_each(ox+3, oy, ox + @map_width-3, oy + @map_height) do |x, y, dx, dy|
#レイヤー1のアニメタイルはアニメタイルの上にある
#レイヤー2にアニメタイルは無い
#よって0のみチェックすればよい
if anime_tile?(data[x, y, 0])
for z in 0..2
tile_id = data[x, y, z]
set_tile(tile_id, 96 + dx, dy) if tile_id
end
end
end

@anime_count = @anime_speed
return true
else
@anime_count -= 1
return false
end
end

#--------------------------------------------------------------------------
# バッファからコピー
#--------------------------------------------------------------------------
def copy_from_buffer(r, bx, by)
@buffer.clear
@buffer.blt(0, 0, self, self.rect)

clear
blt(bx, by, @buffer, r)
end

#--------------------------------------------------------------------------
def draw_map(tox, toy, ox, oy, xmax, ymax)
data = $game_map.data
x = y = dx = dy = 0
map_each(ox, oy, xmax, ymax) do |x, y, dx, dy|
for z in 0..2
tile_id = data[x, y, z]
set_tile(tile_id, tox + dx, toy + dy) if tile_id
end
end
end

#--------------------------------------------------------------------------
# マップの特定箇所に対して処理を行う
# z軸については考慮しないため処理ブロック側で実装のこと
# Params:
# sx start_x
# sy start_y
# ex end_x
# ey end_y
# Yield: |x, y, dx, dy| マップのx,y、0から数えた描画先のx,y
#--------------------------------------------------------------------------
def map_each(sx, sy, ex, ey)
mapw = $game_map.width
maph = $game_map.height
isv = $game_map.loop_vertical?
ish = $game_map.loop_horizontal?
draw_y = 0
for y in sy...ey
y = get_looped_point(y, maph) if isv
draw_x = 0
for x in sx...ex
x = get_looped_point(x, mapw) if ish
yield(x, y, draw_x, draw_y)
draw_x += 32
end
draw_y += 32
end
end

#ループを考慮して座標を取得(x,y対応)
#val 現在位置  size マップサイズ
#--------------------------------------------------------------------------
def get_looped_point(val, size)
return case
when size <= val then val -= size
when val < 0 then val += size
else val
end
end
end


Troisième code : a placer au dessus de main



Portion de code:





class TileSprite < Sprite

def initialize(width, height, tilemap, viewport)
super(viewport)
self.bitmap = Bitmap.new(Game::DISPLAY_WIDTH, Game::DISPLAY_HEIGHT)
self.x = 0
self.y = 0
self.ox = 0
self.oy = 0
self.z = 0
@backbuffer = TileBitmap.new(width, height, tilemap)
@bg = Sprite.new(viewport)
@bg.z = 1
@bg.blend_type = 1
@bg.bitmap = Cache.picture('bg')

@mapx = -999
@mapy = -999

@x_plus = (width - Game::DISPLAY_WIDTH) / 2
@y_plus = 128 #(height - Game::DISPLAY_HEIGHT) / 2

@draw_count = false

@x_table = Table.new(416)
@y_table = Table.new(416)
set_render_table(45)
end

def dispose
@bg.dispose if @bg
@backbuffer.dispose if @backbuffer
self.bitmap.dispose if self.bitmap
super
end

def hide
self.visible = false
@bg.visible = false
end

def show
self.visible = true
@bg.visible = true
end


def set_render_table(angle)
return false if angle == @angle
@angle = angle
d = 400.0
rad = angle * Math::PI / 180
sina = Math.sin(rad)
cosa = Math.cos(rad)

x_zoom = 272 * 1.5
for i in 0...416

sy = 208 - i

unless angle == 90
aaa = sy == 0 ? 0: (90 - angle) / 208.0 * sy
aaa = sy < 0 ? 90 + aaa : 90 - aaa
rad = aaa * Math::PI / 180
sy = (sy / Math.sin(rad)) * (d + (sy * Math.cos(rad))) / d
end


to_y = sina.zero? ? -256: ((sy / sina) * (d + (sy * cosa)) / d).round
#to_y = sina.zero? ? -256: ((sy / sina) * (d + (sy * cosa)) / d).round
@y_table = 208 - to_y

#y=1のときのx
to_x = (-x_zoom * (d + (sy * -cosa)) / d) + x_zoom
@x_table = - (272 * to_x / (272 - to_x )).round
end

#一応bgのサイズもかえとく
#90が0で45が100
case @angle
when 45
@bg.zoom_y = 1.0
when 90
@bg.zoom_y = 0.0
else
@bg.zoom_y = (1.0 / 45) * (90 - @angle)
end
@bg.opacity = 255 * @bg.zoom_y
return true
end



#マップ上の座標で設定
def update_map(ox, oy)
return unless self.visible

aox = ($game_map.display_x >> 3 & 31) + @x_plus
aoy = ($game_map.display_y >> 3 & 31) + @y_plus

ud = set_render_table($game_map.get_angle)
sd = @backbuffer.set_map(ox, oy)
return if !sd && !ud && aox == @mapx && aoy == @mapy
update_bitmap(aox, aoy)
end

def update_bitmap(aox, aoy)
@mapx = aox
@mapy = aoy

unless aox == @x_plus && aoy == @y_plus
@draw_count = !@draw_count
return if @draw_count
end

bmp = self.bitmap
bmp.clear

bmph = bmp.height
bmpw = bmp.width

yt = @y_table
xt = @x_table
bb = @backbuffer
from_r = Rect.new(0, 0, 1 , 1)
to_r = Rect.new(0, 0, bmpw, 1)
i = 0
while i < bmph
to_y = yt
if to_y < -@y_plus
i += 1
next
end

to_x = xt
to_r.y = i

ww = 0
while i < bmph
ww += 1
i += 1
break unless to_x == xt && to_y + ww == yt
end


to_r.height = ww
from_r.set(to_x + aox, to_y + aoy, bmpw - to_x - to_x, ww)
bmp.stretch_blt(to_r, bb, from_r)
end
end


end

class Game_Map
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :mode3D

#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias a9_003_initialize initialize
def initialize
a9_003_initialize
@mode3D = false
@angle3D = 45
end

#--------------------------------------------------------------------------
def set_angle(v)
@angle3D = v
end

#--------------------------------------------------------------------------
def get_angle
@angle3D
end

end

class Spriteset_Map

#--------------------------------------------------------------------------
# ● ビューポートの作成
#--------------------------------------------------------------------------
alias a9_003_create_viewports create_viewports
def create_viewports
a9_003_create_viewports
@viewport_invisible = Viewport.new(0, 0, 1, 1)
@viewport_invisible.visible = false
end

#--------------------------------------------------------------------------
# ● ビューポートの解放
#--------------------------------------------------------------------------
alias a9_003_dispose_viewports dispose_viewports
def dispose_viewports
a9_003_dispose_viewports

@viewport_invisible.dispose
end
#--------------------------------------------------------------------------
# ● タイルマップの作成
#--------------------------------------------------------------------------
alias a9_003_create_tilemap create_tilemap
def create_tilemap
a9_003_create_tilemap
@tilemap.visible = false
@tile_sprite = TileSprite.new(544+448, 416+128, @tilemap, @viewport1)
end_3d
end

#--------------------------------------------------------------------------
def begin_3d
@tilemap.viewport = @viewport_invisible
@mode3d = true
@tile_sprite.show
end

#--------------------------------------------------------------------------
def end_3d
@tilemap.viewport = @viewport1
@mode3d = false
@tile_sprite.hide
end


#--------------------------------------------------------------------------
# ● タイルマップの解放
#--------------------------------------------------------------------------
alias a9_003_dispose_tilemap dispose_tilemap
def dispose_tilemap
a9_003_dispose_tilemap
@tile_sprite.dispose
end


#--------------------------------------------------------------------------
# ● タイルマップの更新
#--------------------------------------------------------------------------
alias a9_003update_tilemap update_tilemap
def update_tilemap
g = $game_map
unless g.mode3D == @mode3d
@mode3d ? end_3d: begin_3d
end
unless @mode3d
a9_003update_tilemap
else
@tile_sprite.update_map((g.display_x >> 8) - 7, (g.display_y >> 8) - 4)
end
end
end

#==============================================================================
# ■ Game_Vehicle
#------------------------------------------------------------------------------
#  乗り物を扱うクラスです。このクラスは Game_Map クラスの内部で使用されます。
# 現在のマップに乗り物がないときは、マップ座標 (-1,-1) に設定されます。
#==============================================================================

class Game_Vehicle < Game_Character

#--------------------------------------------------------------------------
# ● 乗り物に乗る
#--------------------------------------------------------------------------
alias a9_003_get_on get_on
def get_on
a9_003_get_on
$game_map.mode3D = true if @type == 2 # 飛行船の場合
end

#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
alias a9_003_update update
def update
a = @altitude
a9_003_update
update_angle(a)
end

#--------------------------------------------------------------------------
def update_angle(alti)
def set_angle
$game_map.set_angle(90 - (45 / 8 * (@altitude / 4 + 1)))
end

if @type == 2 # 飛行船の場合
if @driving
if alti < MAX_ALTITUDE
@altitude == MAX_ALTITUDE ? $game_map.set_angle(45): set_angle
end
elsif 0 < alti
if @altitude.zero?
$game_map.set_angle(90)
$game_map.mode3D = false
else
set_angle
end

end
end


end
end


Enfin quatrième et dernier code : a vous de deviner ( au dessus de main)



Portion de code:





#==============================================================================

# ■ MainAutotile
#------------------------------------------------------------------------------
#  Bitmapに海形式のオートタイルを描くクラス
#==============================================================================
class MainAutotile
def initialize(parent, tilebitmaps)
super()
@parent = parent
@bitmaps = tilebitmaps

@rect = Rect.new(0, 0, 16, 16)
# 01 buf0
# 23 1
# 45 2
@lt_buffer = {0=>1, 4=>1, 6=>1, 8=>1, 12=>1, 19=>1, 23=>1, 32=>1, 33=>1}
@lt_buf_0 = {0=>1, 4=>1, 6=>1, 8=>1, 12=>1}
@lt_buf_1 = {19=>1, 32=>1}
@lt_buf_2 = {23=>1,33=>1}
@lt_1 = {1=>1, 3=>1, 5=>1, 7=>1, 9=>1, 11=>1, 13=>1,
15=>1, 26=>1, 27=>1, 29=>1, 31=>1, 39=>1}
@lt_2 = {34=>1, 35=>1, 42=>1, 43=>1, 46=>1 }
@lt_3 = {20=>1, 21=>1, 22=>1, 36=>1, 37=>1, 45=>1}#23, 33
@lt_4 = {16=>1, 17=>1, 18=>1, 40=>1, 41=>1, 44=>1}#17..19, 32
@lt_5 = {2=>1, 4=>1, 8=>1, 10=>1, 14=>1, 24=>1,
25=>1, 28=>1, 30=>1, 38=>1}#0, 6, 12

@rt_buffer = {27=>1}
@rt_height = {6=>1, 14=>1, 20=>1, 22=>1, 27=>1, 28=>1, 29=>1}#7

@lb_buffer = {1=>1, 2=>1, 3=>1, 31=>1}
@lb_width = {1=>1, 2=>1, 3=>1, 12=>1, 14=>1, 16=>1, 17=>1, 26=>1, 31=>1}

make_buffer
end

#ox oy タイル側の転送元原点(海形式のタイルならなんにでも対応出来る)
#--------------------------------------------------------------------------
# メイン(海構成)のオートタイルを描く
# Params:
# bmpNo @tilemap.bitmapsの数値(通常0か1)
# atid オートタイルID
# ox 取得もとx
# oy 取得もとy
# dx 描画先x
# dy 描画先y
# bufid バッファID
#--------------------------------------------------------------------------
def draw(bmpNo, atid, ox, oy, dx, dy, bufid)
r = @rect
r.set_size(16, 16)
b = @parent
bw = bufid << 5
bmps = rect = nil
return if draw_lt(r, atid, ox, oy, bw) do |bmps, rect|
b.blt(dx, dy, bmps[bmpNo], rect)
end

draw_rt(r, atid, ox, oy, bw) do |bmps, rect|
b.blt(dx + 16, dy, bmps[bmpNo], rect)
end

return if draw_lb(r, atid, ox, oy, bw) do |bmps, rect|
b.blt(dx, dy + 16, bmps[bmpNo], rect)
end

draw_rb(r, atid, ox, oy) do |bmps, rect|
b.blt(dx + 16, dy + 16, bmps[bmpNo], rect)
end
end

#--------------------------------------------------------------------------
def dispose
@buffers.each do |v|
v.dispose
end
end

#--------------------------------------------------------------------------
private

#--------------------------------------------------------------------------
def make_buffer
@buffers = []

bmp1 = Bitmap.new(1024, 96)
@buffers[0] = bmp1
tobmp = @bitmaps[0]
for i in 0..6
draw_buffer(tobmp, i * 64, 0, bmp1, i * 32, 0)
end
#7のバッファ
for i in 0..6
draw_buffer(tobmp, i * 64, 96, bmp1, 256 + (i * 32), 0)
end
#15のバッファ
for i in [0, 1, 2, 4, 5, 6]
draw_buffer(tobmp, i * 64, 192, bmp1, 512 + (i * 32), 0)
end
for i in [0, 1, 2, 4, 5, 6]
draw_buffer(tobmp, i * 64, 288, bmp1, 768 + (i * 32), 0)
end

bmp2 = Bitmap.new(1024, 96)
@buffers[1] = bmp2
tobmp = @bitmaps[1]
for i in 0..7
draw_buffer(tobmp, i * 64, 0, bmp2, i * 32, 0)
end
for i in 0..7
draw_buffer(tobmp, i * 64, 96, bmp2, 256 + (i * 32), 0)
end
for i in 0..7
draw_buffer(tobmp, i * 64, 192, bmp2, 512 + (i * 32), 0)
end
for i in 0..7
draw_buffer(tobmp, i * 64, 288, bmp2, 768 + (i * 32), 0)
end
end

#--------------------------------------------------------------------------
def draw_buffer(bmp, ox, oy, tobmp, tox, toy)
r = Rect.new(0, 0, 16, 16)
#つうじょうチップ
r.set_pos(ox + 32, oy + 64)
tobmp.blt(tox, toy, bmp, r)
r.set_pos(ox + 16, oy + 64)
tobmp.blt(tox + 16, toy, bmp, r)
r.set_pos(ox + 32, oy + 48)
tobmp.blt(tox, toy + 16, bmp, r)
r.set_pos(ox + 16, oy + 48)
tobmp.blt(tox + 16, toy + 16, bmp, r)

#||
r.set_pos(ox, oy + 64)
tobmp.blt(tox, toy + 32, bmp, r)
r.set_pos(ox + 48, oy + 64)
tobmp.blt(tox + 16, toy + 32, bmp, r)
r.set_pos(ox, oy + 48)
tobmp.blt(tox, toy + 48, bmp, r)
r.set_pos(ox + 48, oy + 48)
tobmp.blt(tox + 16, toy + 48, bmp, r)

#=
r.set_pos(ox + 32, oy + 32)
tobmp.blt(tox, toy + 64, bmp, r)
r.set_pos(ox + 16, oy + 32)
tobmp.blt(tox + 16, toy + 64, bmp, r)
r.set_pos(ox + 32, oy + 80)
tobmp.blt(tox, toy + 80, bmp, r)
r.set_pos(ox + 16, oy + 80)
tobmp.blt(tox + 16, toy + 80, bmp, r)
end

#--------------------------------------------------------------------------
# オートタイルの左上を描く
# Return: 描画終了ならtrue
#--------------------------------------------------------------------------
def draw_lt(r, atid, ox, oy, bx)
case
#r.set(ox, oy, 16, 16)
when @lt_buf_0.key?(atid)
r.x = bx
r.y = 0
when @lt_buf_1.key?(atid)
r.x = bx
r.y = 32
when @lt_buf_2.key?(atid)
r.x = bx
r.y = 64
when @lt_1.key?(atid)
r.x = ox + 32
r.y = oy
when @lt_2.key?(atid)
r.x = ox
r.y = oy + 32
when @lt_3.key?(atid)
r.x = ox + 32
r.y = oy + 32
when @lt_4.key?(atid)
r.x = ox
r.y = oy + 64
when @lt_5.key?(atid)
r.x = ox + 32
r.y = oy + 64
end
bool = false
case atid
when 0, 15, 32..34, 36, 38, 40
r.set(r.x, r.y, 32, 32)
bool = true
when 3, 4, 7, 8, 11, 12, 16, 18, 23, 25, 35, 37
r.width = 32
when 6, 9, 13, 19, 20, 28, 41
r.height = 32
end
yield(@lt_buffer.key?(atid) ? @buffers : @bitmaps , r)
return bool
end

#--------------------------------------------------------------------------
# オートタイルの右上を描く
# Return: 描画終了ならtrue
#--------------------------------------------------------------------------
def draw_rt(r, atid, ox, oy, bx)
if case atid
#r.set(ox + 16, oy, 16, 16)
when 27
r.set_pos(bx + 16, 32)
when 2, 6, 10, 14, 15, 17, 19, 30, 31, 41 #2, 3, 7, 11
r.set_pos(ox + 48, oy)
when 1, 5, 9, 13, 28, 29, 40 #0, 1, 4, 8, 12, 16, 18
r.set_pos(ox + 16, oy + 64)
when 20..22, 34, 43 #35, 33, 23
r.set_pos(ox + 16, oy + 32)
when 24, 26, 38, 39, 44 #25, 27, 32
r.set_pos(ox + 48, oy + 64)
when 36, 42, 45, 46 #37
r.set_pos(ox + 48, oy + 32)
#when 3, 7, 11, 18, 25, 35, 37
# false
end then
r.set(r.x, r.y, 16, @rt_height.key?(atid) ? 32: 16)
yield(@rt_buffer.key?(atid) ? @buffers : @bitmaps, r)
end
return false
end

#--------------------------------------------------------------------------
# オートタイルの左下を描く
# Return: 描画終了ならtrue
#--------------------------------------------------------------------------
def draw_lb(r, atid, ox, oy, bx)
if case atid
#r.set(ox, oy + 16, 16, 16)
when 1, 2, 3
r.set_pos(bx, 16)
when 31
r.set_pos(bx, 80)
when 8, 10, 11, 12, 14, 15, 22, 23, 25, 27, 37 #9, 13
r.set_pos(ox + 32, oy + 16)
when 4, 5, 7, 21, 24, 26, 36 #0, 1,2,3, 6, 20
r.set_pos(ox + 32, oy + 48)
when 16, 17, 18, 32, 34, 35, 42 #19
r.set_pos(ox, oy + 48)
when 29, 30, 38, 39, 45 #28, 33, 31
r.set_pos(ox + 32, oy + 80)
when 40, 43, 44, 46 #41
r.set_pos(ox, oy + 80)
#when 9, 13, 20, 28, 41
# false
end then
is_buf = @lb_width.key?(atid)
r.set(r.x, r.y, is_buf ? 32: 16, 16)
yield(@lb_buffer.key?(atid) ? @buffers : @bitmaps, r)
return is_buf || @rt_height.key?(atid)
end
return false
end

#--------------------------------------------------------------------------
# オートタイルの左下を描く(バッファは使わない)
# Return: なし
#--------------------------------------------------------------------------
def draw_rb(r, atid, ox, oy)
case atid
#r.set(ox, oy + 16, 16, 16)
when 4, 5, 7, 13, 15, 18, 19, 21, 23, 35 #6, 12, 14
r.set_pos(ox + 48, oy + 16)
when 8..11, 16, 34 #0,1,2,3, 17, 20, 22
r.set_pos(ox + 16, oy + 48)
when 24, 25, 27, 32, 36, 37, 42 #26
r.set_pos(ox + 48, oy + 48)
when 30, 40, 41, 43 #28, 29, 31, 33
r.set_pos(ox + 16, oy + 80)
when 38, 39, 44..46
r.set_pos(ox + 48, oy + 80)
#when 6, 14, 20, 22, 28, 29
#12, 17, 26
else return
end
yield (@bitmaps, r)
end
end


VOILA pour les scripts
maintenant l'image en plus a mettre dans pictures sour le nom de "bg"

image

Quelque astuce : pour votre carte du monde ajouter un backgroung ( le ciel ) et dans les propriétés de la carte mettre un type de défilement horizontal/vertical ET SURTOUT ne pas mettre d'evenement sur la carte du monde ( essayer et vous verrez .

Si vous avez des question, problèmes et autre n'hésiter pas
A plus pour un nouveau script.SonicSonic


FoxFiesta - posté le 24/03/2009 à 18:10:11. (449 messages postés)

Hey mais ça ROXXE se script !

Je l'ai pas encore testé mais :
Si on peut pas mettre d'events sur la map, ben pour accéder à un lieu (ville, grotte), comment on fait puisqu'on peut pas utiliser un event pour la téléportation ?

Game Dev Alliance


mitraille - posté le 24/03/2009 à 18:12:20. (94 messages postés)

mon statut ..... on dit pas une statut... Ah, non...

Pas d'event visible ( un Chara par exemple ^^ )

Chaque jour qui passe nous rapproche de l'infini


FoxFiesta - posté le 24/03/2009 à 18:16:03. (449 messages postés)

Ah donc du coup on peut quand même mettre un teleport...

Merci pour l'info !

Game Dev Alliance


letrasheur1313 - posté le 24/03/2009 à 18:53:26. (26 messages postés)

Tros bien pour faire un effet Snes.

Je vais le mettre sur mon jeu.

Merci :biere

Prout man sera de retour un de ses jours !!


nuparu1997 - posté le 24/03/2009 à 18:57:13. (222 messages postés)

mais comment on choisit les maps à mettre en 3d???
:help


Stuart - posté le 24/03/2009 à 18:59:47. (1872 messages postés)

On choisit pas ça fonctionne dès l'utilisation du "vaisseau".


FoxFiesta - posté le 24/03/2009 à 19:00:17. (449 messages postés)

C'est quand on prend un vaisseau par exemple..

EDIT : Grillé...

Game Dev Alliance


mitraille - posté le 24/03/2009 à 19:23:35. (94 messages postés)

mon statut ..... on dit pas une statut... Ah, non...

et comme on le dis si bien trop de 3D tu la 3D du 2D
C'est a dire qu'a force de l'utiliser ça pique les yeux. Et surtout que cela va très bien avec un vaisseau ( ça me rappelle Final fantasy 6 avec le vaisseau de Sedzer ):sonic:sonic

Chaque jour qui passe nous rapproche de l'infini


Ephy - posté le 24/03/2009 à 20:18:46. (27480 messages postés) - honor

Non vernaculaire

Pas mal ce script. Ca va m'être utilse je pense. Merci beaucoup.

Power Level: 1 148 355,38|Mystic Slayer|Le monde d'Adélaïde|Reikon no Yume|★ H-Project|Toho Danmaku Arena|Loli versus Ponies|Mes vidéos|Ma galerie|Débuter sur VX:10, 11|Tuto: Importation de ressources|Mapper avec les RTP VX|Touhou|Fan de Omenides|Fan de Estheone|Eph'ille: 14


zeshin 56 - posté le 24/03/2009 à 22:22:35. (51 messages postés)

C'est genial en plus si on met une île flottante en event elle vole vraiment


Onitak - posté le 25/03/2009 à 14:24:31. (333 messages postés)

Du Front de Gauche

J'ai pas testé mais sa m'a l'air énorme. En exploitant le script on pourrait presque créer des jeux de course en 2D à l'ancienne ou des Dud Nuken basique. à étudier.

EDIT: zut, le script fait ramer et bug, les murs ne marchent pas, en d'autres termes, ils se volatilisent dé que le script s'active.


mitraille - posté le 25/03/2009 à 14:52:47. (94 messages postés)

mon statut ..... on dit pas une statut... Ah, non...

Le script rame un peu c vrai, mais e même temps c'est le premier a être sortie pour faire se genre de chose.
soyer indulgent RPG maker Reste et restera un logiciel fait pour faire des rpg

PS : Onitak si tu veux faire un jeux style Dud Nuken ( FPS) y a FPS créateur x10 sorti il y a un 1 ans.

Chaque jour qui passe nous rapproche de l'infini


pokecola - posté le 25/03/2009 à 15:18:27. (2 messages postés)

RPG bosseur

GENIAL (dommage qu'il ne marche qu'en vaisseau...)

Louisv2


tamtammort - posté le 25/03/2009 à 15:46:38. (376 messages postés)

Citation:

GENIAL

Enfin quelqu'un de satisfait !

Citation:

(dommage qu'il ne marche qu'en vaisseau...)

Je retire ce que j'ai dit au début...


Chopper25 - posté le 25/03/2009 à 18:44:23. (93 messages postés)

La mort n'est pas comme quand on actionne un interrupteur ...

C'est comme pour Pokemon perle diamant

Ma p'tite galerie - Mon blog


tamtammort - posté le 26/03/2009 à 10:37:05. (376 messages postés)

A Chopper25: J'en déduit donc que ce script te convient ?
Enfin un avis positif !


seby350 - posté le 27/03/2009 à 13:50:05. (56 messages postés)

Ah ! Le mode 7 ! C'est vraiment génial. Grâce à ça , on n'a pu avoir des jeux comme super mario kart et plein d'autres sur la bonne vieille snes !
Plusieurs scripts de mode 7 pour Rpg Maker XP existes déja.Et maintenant , c'est au tour de VX !
Mais je ne crois pas que quelqu'un est déja réussi un créer un bon mode 7 avec Rpg Maker 2003 ou 2000.
Réussir à créer un mode 7 avec différents rpg maker est bon défi à relever !
XP et VX ont réussi grace au Script.
Il ne reste plus qu'à réussir à faire ça avec Rpg maker 2003 , donc sans aucun script.


FoxFiesta - posté le 27/03/2009 à 17:49:03. (449 messages postés)

seby350 -> Les jeux Rm2k3 sonc codés en C (je crois), et il existe un patch qui permet d'éditer le code de son jeu Rm2k3. Après faut connaître le C...

Sinon est-ce que quelqu'un saurait faire une modif pour qu'on puisse lancer le Mode 7 en utilisant le bâteau à la place du vaisseau ? Ce serait vraiment sympa...

Game Dev Alliance


Stuart - posté le 27/03/2009 à 19:11:24. (1872 messages postés)

Citation:

Sinon est-ce que quelqu'un saurait faire une modif pour qu'on puisse lancer le Mode 7 en utilisant le bâteau à la place du vaisseau ? Ce serait vraiment sympa...


Il faudrait plus d'une modif je pense vu qu'apparemment le script ne gère pas les collisions.


FoxFiesta - posté le 27/03/2009 à 19:29:39. (449 messages postés)

Ah oui... :goutte

Bon ben je me débrouillerais, à la limite je mets l'apparence d'un bateau sur mon vaisseau, et les déplacements se feront tout seuls (comme des cut-scenes)...

Game Dev Alliance


Alkanédon - posté le 27/03/2009 à 19:45:51. (7593 messages postés)

Citoyen d'Alent

Le seul défaut que je reproche, c'est que ça marche!!
Rien à dire...:biereFélicitations à l'inconnu...

Allez-y voir donc. Et followez-moi


tamtammort - posté le 28/03/2009 à 20:29:55. (376 messages postés)

Citation:

Ah ! Le mode 7 ! C'est vraiment génial. Grâce à ça , on n'a pu avoir des jeux comme super mario kart et plein d'autres sur la bonne vieille snes !

Hum, cette personne semble éprouver une certaine nostalgie atristante, cela me fend le cœur !


mitraille - posté le 29/03/2009 à 09:54:59. (94 messages postés)

mon statut ..... on dit pas une statut... Ah, non...

Pour tout dire Le mode 7 était une puce intégrer a certaine cartouche de jeux de la Super NES, Elle a permit l'apparition de la 3D sur cette console 16-bit. Le premier jeux ayant bénéficier de cette puce étant Lylawars, Mieux connu sous le nom de starfox ( jeux étonnamment cher pour l'époque d'ailleurs ). :sonic:sonic

Chaque jour qui passe nous rapproche de l'infini


Tagnar - posté le 29/03/2009 à 16:23:34. (209 messages postés)

Je boss sur un projet

Si l'inconnu pouvait améliorer son script en gérant les collision on pourrai mettre nos jeu en 3D sans besoin d'aller dans un véhicule

Jouez pas à Dofus!!!C'est de la MERDE!!!


Alegreto - posté le 29/03/2009 à 20:33:25. (60 messages postés)

Devinez qui est mon avatar...oui c'est Alex Mercer il n'a pas peur des helicopter xD

Genialisime seul defaut : bug avec le script de 8 direction et quelques lag mais l'effet est super merci au createur et a celui qui la trouver ^^:banane

Vive AIRBOURNE !! rocks yourself http://street-fightor.labrute.fr inscrivez vous


Artyssoflash - posté le 05/04/2009 à 10:33:41. (8 messages postés)

Mais comment mettre un background sur la map?


Alkanédon - posté le 22/04/2009 à 13:18:44. (7593 messages postés)

Citoyen d'Alent

Citation:

Mais comment mettre un background sur la map?


Et bien...
En dessous des ressources (A gauche, les chipset)Tu as un dossier avec écrit le nom de ton jeu.Jusque là, ça va?
En-dessous de ce dossier, il y a toute les map que tu as créés(MAP001,MAP002...).
Tu fais clique droit sur la Map (toujours en dessous du dossier de ton jeu) "Propriétés de la carte ----->(cadre "image")Image----->Et tu séléctionne le panorama que tu souhaites !:hurle
Peux pas faire mieux...:doute2

Allez-y voir donc. Et followez-moi


Hiryuu - posté le 06/05/2009 à 20:08:51. (8 messages postés)

C'est cool mais en bordure de carte c'est tres moche m'enfin faut pas trop en demander(et tester avec des mur il devienne marron et tout bizare).

Je make, mais je forum pas >


Stormcrow - posté le 23/05/2009 à 04:38:25. (1 messages postés)

Le script a l'air superbe mais on m'indique une erreur a la ligne 51 du troisième script.

Script 'airship3' line 51 : NoMethodError occured.
undefined method `*' for nil:NilClass

Merci d'avance.


guizmo - posté le 26/05/2009 à 02:10:06. (35 messages postés)

et donc, si je veux faire un pont qui n'apparait qu'à un moment dans le jeu(ex: si je fais une mission), c'est mort ?

edit : je viens de tester et ... c'est foutu le pont est effectivement en l'air une fois l'interrupteur activé :(:hum

Pourquoi les super méchants reviennent-ils toujours ?


timtrack - posté le 23/12/2009 à 23:52:50. (629 messages postés)

Ce script est superbe mise à part que ça vas gêner ceux qui on mis des évènements sur leur carte du monde.

Passe son temps à imaginer des scénarios de projets qui ne verront jamais le jour


Carnass - posté le 16/02/2010 à 17:48:23. (1 messages postés)

Euuuh, je suis nouveau et peut-être un peu naze en programmation mais... J'ai bien mis les scripts au dessus de main, et comment faites-vous pour les faire marcher ? J'ai ma World Map, j'ai enregistré le "bg" et... Quand je lance le jeu, aucune nouvelles du script !! Peut-être y a-t-il des choses à modifier dedans ?

Aidez moi plz... :help


Yuann - posté le 03/03/2010 à 12:43:32. (8 messages postés)

Très bon script, malheureusement quelques erreurs qui gache un peu le plaisir (et qui font que je ne l'utiliserais pas :( ).
Ayant également choisi d'utiliser le véhicule "Bateau", le problème des évènements visibles se creait (bateau volant , c'est fun mais pas ce que je veux^^), et j'ai remarqué quelques erreur graphique pendant le vole...changement de "texture" (ex: parroie en terre devenu en brique Oo...).
Ps: Mais sinon très bonne idée et très bon scipt.
Ps N°2: L'effet 3D de la map n'est pas non plus super (peu génant pour les villes, chateaux etc... mais un peu plus pour les décor plus élevé).


franck james - posté le 05/03/2010 à 16:20:22. (23 messages postés)

Rock'n'roll

Encore une fois un script qui m'a l'air super mais qui ne fonctionne pas pour moi...

erreur au troisième script

@tile_sprite.show

...

www.myspace.fr/Zizitoudurh


SuperGregMaker - posté le 20/03/2010 à 18:20:25. (111 messages postés)

J'aime les trains.

Pour un RPG a la Olive et Tom x)

Que Dieu vous garde, j'ai plus de place chez moi ...


RPG Dragon - posté le 07/04/2010 à 21:32:20. (121 messages postés)

Hyper Génial, sauf que l'on peut sortir de la carte...


AsterPhoenix - posté le 08/07/2010 à 11:39:04. (8 messages postés)

Moi il me dit :Script''Main''line 1113:Syntax error occured.
Aidez moi svp!:help:help


Fredomaker - posté le 04/08/2010 à 02:29:34. (37 messages postés)

Epéliste en colère

[color=red][/color]Super cool comme ca je pourais voir plus facilement les vilages et surtout les ennemis je vais les bombardés:demon hahahaha

beaucoup de choses se passe mais quoi que vous fassiez quelqu'un ous regarde d'un mauvais oeil


Pauldcool - posté le 16/08/2010 à 17:13:15. (102 messages postés)

Ce qu'il faudrait rajouter c'est un script qui permet d'élever les décors et les murs, et les évènement qu'on veut, je crois que c'est possible mais je suis pas programmeur.

Avec ça, on pourrait en faire un script permanent, sur toute les maps.

horizonrpg.canalblog.com


reelie - posté le 22/09/2010 à 00:21:22. (35 messages postés)

Marine

Moi c'est erreur à la ligne 54...
(du 3e script)
:help

Hell, it's about time !


Raamza - posté le 09/12/2010 à 21:16:38. (42 messages postés)

Sur un projet nommé: Hopeless (sans espoir)

J'suis entrain de travailler sur ce script afin de pouvoir l'utiliser en temps normal (ou au moins en bateau). Je vais aussi mettre des commentaires pour vous aider (en français bien entendu).

Quand j'aurais terminer, je vous ferais part des (ou du s'il n'y en a qu'un qui est à changer) script(s).

Merci de votre compréhension cordialement Raamza. :sfrog

Pour sauver un arbre, tuer un castor !


thom123 - posté le 19/01/2011 à 17:15:23. (47 messages postés)

Eh! c'est pas parce que tu suce des glands que tu deviendras un écureuils, hein!

Bien, bien!!!
Merci, c'est utile pour mon jeu!


Felix739 - posté le 20/03/2011 à 11:44:59. (2 messages postés)

Super script!Je l'ai utiliser et il est parfait pour des jeu d'avion ou de combat galactique!Je trink pour son créateur:biere!

Ich suis french :D


RiyadhLéonart25 - posté le 20/05/2011 à 18:38:22. (1 messages postés)

c'est bien beau tout ça ,mais comment on place une machine volante?:feu XD


katsuragi-sensei - posté le 16/06/2011 à 12:08:58. (6 messages postés)

moi c'est bizarre quand je vole c'est flou et au lieu d'avoir un effet 3D ba j'ai les traits de mes rabres et de la terre vous aviez raison trop de 3D tue la 3D


darkal - posté le 20/06/2011 à 22:24:31. (285 messages postés)

Ryhadh,ya deux moyens,soit tu configure dans base de donnnees /système la position de départ du vaisseau,soit par événement tu fais placer un véhicule et la tu le place sur la carte.ensuite tu teste ton jeu et normalement ou tas place ton dirigeable,tu peux y accéder en appuyant sur entrée .
PS:supers scripts!je vais m'en servir dans mon jeu!il est super et il marche!:bob


Ramis89 - posté le 06/08/2011 à 15:00:49. (6 messages postés)

Moi je vois juste des bandes dherbes et tout est flou, eske c parskil me manque un bg ciel?


timo99 - posté le 16/07/2013 à 17:36:45. (15 messages postés)

J'ai testé le script pour ace ,et maintenant il m'affiche"Cannot initialize CoGenDRM..."j'ai tout essayé !Ca ne MARCHE PLUS!!!!!!!!!!!:feu:feu


Yamashi54 - posté le 27/08/2013 à 00:23:43. (266 messages postés)

Germanophile en folie poétique

Super script! Il y a juste un petit bug notable.

I want you for the bed.

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site:

Activité: Accueil | News | Forum | Flash-news | Chat | Commentaires | Galerie | Blogs | Screen de la semaine | Sorties | Articles perso | Palmarès | Livre d'or | Recherche
Télécharger: Programmes | Scripts | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Index jeux séparés | Top Classiques | Top Originaux | Les autres | Collection Oniro | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Jeux complets | Proposer
Rubriques: Le Wiki | Tutoriels | Guides | Gaming-Live | Tests | Making-of | Interviews | Articles perso | OST | L'Annuaire | Divers
Hébergés: Aëdemphia | Fighting Robots Quest | Forstale | Geex | Inexistence | La Légende d'Ibabou | Lije | Sarcia | Super Mario RPG - Lost Souls
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis