irpg Community
สอนใส่สคริปหน่อยครับ - Printable Version

+- irpg Community (https://irpg.in.th)
+-- Forum: irpg Fabella RPG Maker Academia (https://irpg.in.th/forum-4.html)
+--- Forum: RPG Maker Engine School (https://irpg.in.th/forum-7.html)
+--- Thread: สอนใส่สคริปหน่อยครับ (/thread-711.html)



สอนใส่สคริปหน่อยครับ - rxzeroyelko - 10-29-2012

เป็นสคริป ระบบเวลาในเกมส์ ดังนี้

#Basic Game Time + Night/Day
#----------#
#Features: Provides a series of functions to set and recall current game time
# as well customizable tints based on current game time to give the
# appearance of night and day.
#
#Usage: Script calls:
# GameTime::minute? - returns the current minute
# GameTime::hour? - returns the current hour
# GameTime:Confusedet(time) - sets the game time to time, in frames (max:1440)
# GameTime::change(time) - increments the game time! (can be negative)
# GameTime::pause_time(set) - stops time for events and stuff, true or false
# GameTime::pause_tint(set) - time runs, but tints do not update
# GameTime::clock(set) - sets whether clock is visible or not
#
#Customization: Set below, in comments.
#
#Examples: GameTime:Confusedet(360)
#
#----------#
#-- Script by: V.M of D.T
#--- Free to use in any project with credit given

#---Game Clock---#
#USE_CLOCK to true to display game time clock
#CLOCK_POSITION for position of clock
# 1 = topleft, 2 = topright, 3 = bottomleft, 4 = bottomright
#CLOCK_TOGGLE is any input button available, see the INPUT help file for options
#------#
USE_CLOCK = true
CLOCK_POSITION = 4
CLOCK_TOGGLE = :SHIFT

module GameTime
#---Game Time Details---#
#Number of frames in a game minute, 60 frames = 1 second
TIME_COUNT = 60
#Sets whether to tint screen based on game time
USE_TINT = true

#True to pause time while not in map or while during a message
PAUSE_IN_COMBAT = false
PAUSE_NOT_IN_MAP = true
PAUSE_IN_MESSAGE = true

#Sets time frames of tints by minute count, one day is 1440 minutes
# 0 = 12am, 360 = 6am, 720 = 12pm, 1080 = 6pm etc...
PRESUNRISE_TIME = 240
SUNRISE_TIME = 360
NOONSTART_TIME = 660
NOONEND_TIME = 900
PRESUNSET_TIME = 1080
SUNSET_TIME = 1260
MIDNIGHT_TIME = 60 #Must be greater than 0

#Sets custome tints
PRESUNRISE_TONE = Tone.new(-75,-75,0,50)
SUNRISE_TONE = Tone.new(0,0,0,0)
NOONSTART_TONE = Tone.new(45,45,0,-25)
NOONEND_TONE = Tone.new(0,0,0,0)
PRESUNSET_TONE = Tone.new(-50,-50,0,25)
SUNSET_TONE = Tone.new(-75,-100,0,75)
MIDNIGHT_TONE = Tone.new(-125,-125,0,125)

#Include the ids of any maps not to be tinted based on time
# Usually reserved for indoor maps
NOTINTMAPS = [2]
#---END---#

def self.init
$game_time = 0
$game_time_pause_time = false
$game_time_pause_tint = false
end
def self.update
if $game_time_pause_time then return else end
case SceneManager:Confusedcene_is?(Scene_Map)
when true
if $game_message.visible == true && PAUSE_IN_MESSAGE then else
$game_time += 1 if Graphics.frame_count % TIME_COUNT == 0 end
when false

if !PAUSE_NOT_IN_MAP and !SceneManager:Confusedcene_is?(Scene_Battle)
$game_time += 1 if Graphics.frame_count % TIME_COUNT == 0 end
if SceneManager:Confusedcene_is?(Scene_Battle) && PAUSE_IN_COMBAT != true
$game_time += 1 if Graphics.frame_count % TIME_COUNT == 0 end
end
if $game_time == 1440 then $game_time = 0 end
GameTime::tint if $game_time_pause_tint != true
end
def self.hour?
return $game_time / 60
end
def self.minute?
return $game_time % 60
end
def self.time?
meri = "AM"
hour = GameTime::hour?
minute = GameTime::minute?
if hour > 11 then meri = "PM" end
if hour == 0 then hour = 12; meri = "AM" end
if hour > 12 then hour -= 12 end
if hour < 10 then hour = " " + hour.to_s else hour.to_s end
if minute < 10 then minute = "0" + minute.to_s else minute.to_s end
return hour.to_s + ":" + minute.to_s + " " + meri
end
def self.set(number)
$game_time = number if number < 1440
GameTime::tint(0)
end
def self.change(number)
$game_time += number
$game_time -= 1440 if $game_time > 1440
$game_time += 1440 if $game_time < 0
GameTime::tint(0)
end
def self.tint(tint = 60)
if USE_TINT != true then return end
for i in NOTINTMAPS
if $game_map.map_id == i
$game_map.screen.start_tone_change(Tone.new(0,0,0,0),0)
return
end
end
if SceneManager:Confusedcene_is?(Scene_Map) then else return end
case $game_time
when PRESUNRISE_TIME .. SUNRISE_TIME
$game_map.screen.start_tone_change(PRESUNRISE_TONE, tint)
when SUNRISE_TIME .. NOONSTART_TIME
$game_map.screen.start_tone_change(SUNRISE_TONE, tint)
when NOONSTART_TIME .. NOONEND_TIME
$game_map.screen.start_tone_change(NOONSTART_TONE, tint)
when NOONEND_TIME .. PRESUNSET_TIME
$game_map.screen.start_tone_change(NOONEND_TONE, tint)
when PRESUNSET_TIME .. SUNSET_TIME
$game_map.screen.start_tone_change(PRESUNSET_TONE, tint)
when SUNSET_TIME .. 1440
$game_map.screen.start_tone_change(SUNSET_TONE, tint)
when 0 .. MIDNIGHT_TIME
$game_map.screen.start_tone_change(SUNSET_TONE, tint)
when MIDNIGHT_TIME .. PRESUNRISE_TIME
$game_map.screen.start_tone_change(MIDNIGHT_TONE, tint)
end
end
def self.pause_time(set)
$game_time_pause_time = set
end
def self.pause_tint(set)
$game_time_pause_tint = set
end
def self.clock(set)
SceneManager.scene.clock_visible?(set)
end

class Window_Clock < Window_Base
def initialize
case CLOCK_POSITION
when 1
super(0,0,115,56)
when 2
super(429,0,115,56)
when 3
super(0,360,115,56)
when 4
super(429,360,115,56)
end
self.visible = $game_time_clock_visibility unless $game_time_clock_visibility.nil?
end
def update
self.contents.clear
self.contents.draw_text(0,0,100,24,GameTime::time?)
$game_time_clock_visibility = self.visible
end
end

end

module DataManager
class << self
alias gametime_msc make_save_contents
alias gametime_esc extract_save_contents
end
def self.make_save_contents
contents = gametime_msc
contents[:gametime] = $game_time
contents
end
def self.extract_save_contents(contents)
gametime_esc(contents)
$game_time = contents[:gametime]
end
end


class Scene_Map < Scene_Base
alias gametime_post_transfer post_transfer
alias gametime_create_all_windows create_all_windows
alias gametime_update_map update
def post_transfer
GameTime::tint(0)
gametime_post_transfer
end
def create_all_windows
gametime_create_all_windows
@gametimeclock = GameTime::Window_Clock.new if USE_CLOCK
end
def update
gametime_update_map
@gametimeclock.update if @gametimeclock.nil? == false
if Input.trigger?(CLOCK_TOGGLE) and @gametimeclock.nil? == false
@gametimeclock.visible ? @gametimeclock.visible = false : @gametimeclock.visible = true
end
end
def clock_visible?(set)
@gametimeclock.visible = set
end
end

class Scene_Base
alias gametime_update update
def update
gametime_update
GameTime::update
end
end

GameTime::init

ขอบคุณครับ[/quote]


RE: สอนใส่สคริปหน่อยครับ - Nivas - 10-29-2012

ใส่ที่ว่านี่คือ ใส่ลงไปในเกมสินะครับ
เคยลองแตะโปรแกรมไหมครับเนี่ย ปกติมันต้องศึกษาโปรแกรมก่อนว่าทำอะไรได้ไม่ใช่เรอะ
รู้สึกอันนี้จะเบสิคๆไม่ใช่เหรอ ถ้าผมเข้าใจถูกน่ะนะ ถ้าแบบนั้นผมขอไม่ตอบแล้วกัน อย่าหาว่าใจร้าย แต่ผมอยากให้ลอง
ศึกษาพื้นฐานของโปรแกรมสักนิดน่ะ ว่ามันทำอะไรยังไง ลองกดๆดูโปรแกรมมันไม่น่าเจ๊งหรอกมั้งฮะ = =


RE: สอนใส่สคริปหน่อยครับ - Nazuth - 10-29-2012

อย่างที่นิวาสว่าแหละสิ่งสำคัญที่สุดของการทำเกมคือพึ่งตัวเองให้มากที่สุดเมื่อมีอะไรที่ไม่ไหวจริงๆถึงจะมาขอความช่วยเหลือกรณีนี้ขอแนะนำให้ไปศึกษาพื้นฐานการใชโปรแกรมจากE-bookอันนี้ก่อนถึงจะเป็นของxpแต่พื้นฐานก็เหมือนกัน
http://community.thaiware.com/index.php/topic/357283-e-book-rpg-maker-xp-bible/


RE: สอนใส่สคริปหน่อยครับ - Shinryu - 10-30-2012

แตะๆไม่เจ๊ง แต่เผลอไปลบสคริปในโซนสคริปนี่มีเจ๊ง 55+

วิธีใส่กดที่ จัดการสคริปต์(F11) ที่เมนูด้านบน
เปลื่อนแทปทางซ้ายไปล่างสุด ให้คลิกขวาที่ส่วนว่างๆ(เหนือสคริป main) แล้วเลือก แทรก(Insert) เพื่อสร้างหน้าใหม่

เอาสคริปที่หามาได้ใส่ลงไป แล้วลองทดสอบรันดู


RE: สอนใส่สคริปหน่อยครับ - gol-a-khung - 10-30-2012

นานๆ จะแวะเข้ามาดู อันตัวผมเองไม่ได้ใช้โปรแกรมนี้ครับ แต่เข้ามาดูสคิป จะบอกว่าสคิปนี้ยาวได้ใจจริงๆ แต่ก็ได้ความรู้ในการเขียนไปอีกแบบ การเซทค่าเวลากำหนดกลางวันกลางคืนและการตรวจเช็คค่า ผมมันสาวก GM รูปแบบการเขียนคลาย ภาษา C เลยไม่ค่อยเข้าใจรูปแบบการเขียนสคิปแบบนี้ แต่ก็เอาใจช่วยนะครับ ผมก็มือใหม่เช่นกัน


RE: สอนใส่สคริปหน่อยครับ - rxzeroyelko - 10-30-2012

เอิ่ม ลองใส่แล้วล่ะ มัน เอ๋อเหรอ น่ะ ไม่เป็นไร ถ้าใจร้าย ก็ช่างมันแระกัน จนปัญญาแล้ว T^T

เราขอแค่วิธีใส่เอง แต่ถ้าเทศกลับมา เราก็ไม่ขอให้ใครช่วยล่ะ บาย

(10-29-2012, 08:58 PM)natsukikung Wrote: อย่างที่นิวาสว่าแหละสิ่งสำคัญที่สุดของการทำเกมคือพึ่งตัวเองให้มากที่สุดเมื่อมีอะไรที่ไม่ไหวจริงๆถึงจะมาขอความช่วยเหลือกรณีนี้ขอแนะนำให้ไปศึกษาพื้นฐานการใชโปรแกรมจากE-bookอันนี้ก่อนถึงจะเป็นของxpแต่พื้นฐานก็เหมือนกัน
http://community.thaiware.com/index.php/topic/357283-e-book-rpg-maker-xp-bible/

ลิงก์นี้ part 2 ใช้ไม่ได้


RE: สอนใส่สคริปหน่อยครับ - Shinryu - 10-30-2012

ตอบไปตั้งแต่เรปที่4 หรือถ้าไม่มีรุปจะทำไม่ได้ละเนี่ย


RE: สอนใส่สคริปหน่อยครับ - rxzeroyelko - 11-01-2012

แต๊งกิ้วสำหรับเม้นบนเน่อ T^T

อ่อ รู้แระ ทำไมถึงใช้ไม่ได้ เราใส่ผิดที่นี่เอง(เมาเนื้อ) T^T