Rmxp

Self Variable for Call script

posted on 25 Nov 2008 00:31 by inet03 in Rmxp
วิธีใช้ เลือกคำสั่งเรียกใช้สคริป พิมพ์ key.a = 10 เป็นต้น สามารถใช้ได้ a-z แต่ถ้าอยากเพิ่มก็แก้ที่
$ncht = "abcdefghijklmnopqrstuvwxyz"
เพิ่มลดได้ตามใจชอบครับ

คุณสมบัติตามชื่อเลยครับ เอาไว้เก็บตัวแปรเฉพาะอีเว้น ว่าง่ายมันคือตัวแปรส่วนตัวของอีเว้น

ตัวอย่างการใช้ก็เช่น พวกเกมส์ฮาเวสมูน ที่ทุกคนในหมู่บ้านมีความชอบไม่ชอบตัวเอกเรา
เป็นการส่วนตัว สมมุติว่าผมเอาผักไปให้คนตัดไม้ก็ key.a += 1 ซึ่งแทน key.a เป็นความชอบ
ถ้าเต็ม 100 ก็สนิทกันมากๆ เป็นต้น จะให้ละเอียดขึ้นก็เอาเก็บพวกประโยคที่เราพูดแล้วตัวละคร
ประทับใจ เหตุการณ์ที่ทำให้ประทับใจหรือไม่พอใจ ด้วยคุณสมบัติแบบวัตถุ จะเก็บคำพูดหรือพวก true/false ตัวเลข ได้ ประมาณนี้

ถ้าทำเกมส์พวก Action ก็จะให้เป็นตัวเก็บคุณสมบัติของมอนสเตอร์แต่ละตัวก็ได้ครับเช่นเลือด สกิลที่มี ความเร็วในการเดิน รูปภาพ เสียง เป็นต้น จะได้มีความแตกต่างเยอะๆ
(แล้วคนเล่นอย่างผมจะเดาทางมอนถูกไหมเนี้ย เง้อ)

คุณสมบัติหลักคือใช้เพิ่มรายละเอียดให้กับอีเว้น ใช้งานส่วนใหญ่กับConditional Branch

ตัวอย่างการใช้ เช่น
key.a = "go"
key.b = "Forest"
key.c = key.a +" "+ key.n

key.d = rand(key.e.to_i) if key.e.to_i > 1

  class Nva
    def initialize
      $gvs = []
      $ncht = "abcdefghijklmnopqrstuvwxyz"
    end
  
    def esv(m,e,exc)
      exc.downcase
       if exc[/key.([a-z])/] != nil  
           tmp = exc[/key.([a-z])/]
         for k in 0..$ncht.size-1
           break if $ncht[k] == tmp[4]
         end
           exc[/key.([a-z])/] = "$gvs["+m.to_s+"["+e.to_s+"["+k.to_s+"]]]"
        end #if
         return exc        
    end#def
  end#class
แก้ไขที่ Interpreter 7
def command_355
script = @list[@index].parameters[0] + "\n"
loop do
if @list[@index+1].code == 655
script += @list[@index+1].parameters[0]+ "\n"
แก้เป็น
def command_355
m = $game_map.map_id
e = @event_id
script = $nva.esv(m,e,@list[@index].parameters[0]) + "\n"

loop do
if @list[@index+1].code == 655
script += $nva.esv(m,e,@list[@index+1].parameters[0]) + "\n"


Interpreter 3
when 12
result = eval(@parameters[1])
แก้เป็น
when 12
#========= Nva Interpreter==============
m = $game_map.map_id
e = @event_id
result = eval($nva.esv(m,e,@parameters[1]))
#====================================


Interpreter 1
def initialize(depth = 0, main = false)
@depth = depth
@main = main
แก้เป็น
def initialize(depth = 0, main = false)
@depth = depth
@main = main
$nva = Nva.new
แค่แปะสคริปนี้แล้วแก้ไขตามจุดที่กำหนด ก็เรียบร้อยครับ
สามารถใช้ร่วมกับอีเว้นในการควบคุมและตรวจเช็คเวลาได้ดังนี้
โดยใช้คำสั่งควบคุมตัวแปร(Variable Operation)
ความหมายของตัวแปรแต่ละเลข
ตัวแปรหมายเลข1 = ชั่วโมง
ตัวแปรหมายเลข2 = วัน
ตัวแปรหมายเลข3 = เดือน
ตัวแปรหมายเลข4 = ปี
ตัวแปรหมายเลข5 = นาที
ซึ่งตัวแปรที่1-5 จะเป็นดังนี้และจะอัพเดตตลอด ซึ่ง 1 วินาทีจริง = 1 นาทีเกมส์

ภาพตัวอย่างในเกมส์


วางเหนือ Arrow_Base
CODE
class Nv_DayTime < Window_Base

def initialize
    super(480, 0, 160, 96)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = $fontface and self.contents.font.size = $fontsize
    self.back_opacity = 128
    @ld = false
  end

def refresh
    self.contents.clear
    # Replace "Graphics.frame_rate" with other to custom time speed (Graphics.frame_rate = 40)
    @total_sec = Graphics.frame_count / Graphics.frame_rate
    
  for exi in 1..5 #Check Var
      $game_variables[exi] = 1  if $game_variables[exi] < 0
  end
  
   min = $game_variables[5]  and hr = $game_variables[1]  
   day = $game_variables[2] and month = $game_variables[3]  
   year = $game_variables[4]  and chk = $Nv_Check_Light_Time

    min += 1
    min -= 60 and hr += 1 if min > 59
    hr -= 24 and day +=1 if hr > 23
    
    if month == 1 or month == 3 or month == 5 or month == 7 or month == 8 or month == 10 or month == 12
      day -= 31 and month +=1  if day > 31
    elsif month == 2
      day -= 28 and month +=1 if day >28
    else
      day -= 30 and month += 1 if day >30
    end #if month == 1
    
      month -= 11 and  year += 1 if month > 12

    text = " วันที่ "+day.to_s+"/"+month.to_s+"/"+year.to_s
    self.contents.font.color = system_color and self.contents.draw_text(4, 0, 120, 32, text)
    text = " เวลา "+sprintf("%02d:%02d", hr,min)
    self.contents.font.color = normal_color and self.contents.draw_text(4, 32, 120, 32, text, 2)
    
  @ld = false  if hr != chk

  if @ld == false
  cl = []
  #cl(0-red,1-green,2-blue,3-Timeleft,4-Swich)
  cl = [0,-51,-102,17,true] if  hr.between?(12, 17)
  cl = [-102,-102,0,21,false] if  hr.between?(18, 21)
  cl = [-102,-102,0,0,false] if  hr>= 22 or hr<=5
  cl = [-51,-51,0,9,true] if  hr.between?(6, 9)
  cl = [0,0,0,12,true] if  hr.between?(10, 12)

  @tone = Tone.new(cl[0],cl[1],cl[2],0)
  cl[3] > 0 ? delay = cl[3]-hr : delay = 0
  $game_screen.start_tone_change(@tone,delay*60*Graphics.frame_rate)
  $game_switches[26] = cl[4]
  cl[4] == true ? $game_switches[27] = false : $game_switches[27] = true
  chk = hr
  @ld = true
  end#if @ld == false

$game_variables[5]  = min and $game_variables[1]  = hr
$game_variables[2]  = day  and $game_variables[3]  = month
$game_variables[4]  = year and $Nv_Check_Light_Time = chk
end#def refresh

  def update
    super
    refresh if Graphics.frame_count / Graphics.frame_rate != @total_sec
  end

end #class


Scene_title
QUOTE
$game_map.update
$scene = Scene_Map.new
แก้เป็น
$game_map.update
$game_variables[1] = 15
$game_variables[2] = 10
$game_variables[3] = 1
$game_variables[4] = 1472
$game_variables[5] = 0

$scene = Scene_Map.new


scene_map
QUOTE
def main
@spriteset = Spriteset_Map.new
@message_window = Window_Message.new
Graphics.transition
แก้เป็น
@spriteset = Spriteset_Map.new
@message_window = Window_Message.new
@date_window = Nv_DayTime.new
# トランジション実行
Graphics.transition


QUOTE
def main
if $scene != self
break
end
end
แก้เป็น
if $scene != self
@date_window.dispose
break
end
end


QUOTE
def update
loop do
$game_map.update
$game_system.map_interpreter.update
$game_player.update
$game_system.update
$game_screen.update
แก้เป็น
loop do
@date_window.update
$game_map.update
$game_system.map_interpreter.update
$game_player.update
$game_system.update
$game_screen.update



ถ้าต้องการให้เร็วกว่านี้ก็สามารถปรับเปลี่ยนได้ที่ Def Update ของ Nv_DayTime

Ruby script X alpha

posted on 18 Oct 2008 01:36 by inet03 in Rmxp

ต้องการ .Net framework 3.0

การใช้งาน กดที่คำว่า Window เพื่อเรียกหน้าต่างทดสอบออกมา
กดที่ตัวเลือกเพื่อเลือกค่าที่ต้องการปรับซึ่งสามารถปรับได้จากบาร์
หรือพิมพ์เอาก็ได้ครับ

อธิบายตัวย่อ
x = แนวนอน
y = แนวตั้ง
w = กว้าง
h = สูง
r = สีแดง
g = สีเขียว
b = สีน้ำเงิน
a = ความโปร่งใส

ตอนนี้กำลังทดสอบระบบ ใครต้องการให้มีอะไรในโปรแกรมเสนอมาได้นะคราบบบ

Download now !!

 

Richter View my profile