Hướng dẫn làm 1 game HM bằng RPG maker VX từ A > Z

Thảo luận trong 'Lưu Trữ' bắt đầu bởi prince of games, 29/8/10.

  1. prince of games

    prince of games Space Marine Doomguy GVN Veteran

    Tham gia ngày:
    21/8/06
    Bài viết:
    5,784
    Nơi ở:
    Vô Gia Cư :))
    Hướng Dẫn làm 1 game HarvestMoon từ A > Z bẳng RPG maker VX​

    [​IMG]
    Nguồn - Gamevn​

    Bạn là 1 fan của game HM ? Vậy bạn có bao giờ nghĩ đến việc tự tạo cho mình 1 game y như phong cách của bạn chưa ? Tôi thì có , tôi mang ý định đó suốt 4 năm nhưng cuối cùng vẫn không thực hiện được ? Tôi tự hỏi tại sao

    Vâng, nếu tôi biết thì tôi đã ko tự hỏi ,nếu tôi tự hỏi thì có nghĩa là tôi ko biết, nhưng tôi mong khi tôi viết bài này , có một ai đó sẽ giúp tôi tìm ra câu trả lời ,và hoàn thành ý định đó hộ tôi

    Các bạn có thể chẳng biết làm game thế nào cả ? các bạn chẳng biết gì về code hay graphic PTS gì cả, nhưng đừng lo, cái cần nhất mà game maker cần là ý tường , bản thân tôi lại thiếu cái đó .(có thể đây là 1 lý do mà tôi ko thể hoàn thành project này đc )

    Thôi thì dài dòng văn tự quá rồi , chương trình tôi sử dụng để làm game là Rpg maker VX
    Các bạn có thể down nó tại
    http://www.mediafire.com/?mzjnla2mwwy

    Ccòn nữa, trước khi bắt đầu xin các bạn vui long đọc hết những gì tôi đã viết trong topic này
    http://forum.gamevn.com/showthread....g-dan-nhung-dieu-co-ban-nhat-cua-RPG-maker-VX

    Tuy đó ko phải hướng dẫn làm 1 game thể loại HM nhưng lại chứa yếu tố rất cần thiết là cơ bản cho mọi thể loại ,và nếu các bạn ko đọc bài đó thì tôi nghĩ tôi sắp nói gì dưới đây chắc các bạn cũng ko hiểu !


    -----------------------------------------------------

    Tổng hợp những hệ thống của 1 game HM cần có

    Chúng ta bắt đầu thống kê nhé :
    1. Thời gian
    2. TV
    3. Tình cảm với các cô gái (chàng trai)
    4. Chăn nuôi
    5. Trồng trọt
    6. Thời tiết
    7. Nấu nướng

    Còn gì nữa không nhỉ ? Tôi nghĩ cũng tạm đủ rồi, tôi sẽ hướng dẫn các cậu làm tất cả 7 chức năng này, 7 chức năng này là nền móng buộc phải có của 1 game HM nếu các bạn tạo đc 7 hệ thống này, việc tạo 1 game HM chỉ còn là vấn đề thời gian ……


    ---------- Post added at 15:41 ---------- Previous post was at 15:29 ----------

    Thời gian

    Cái bạn cần ở đây là script , script là 1 đoạn code 1 ,loại ngôn ngữ dành riêng cho RPG maker dùng để mở rộng hay tạo 1 số hệ thống cho game
    Bây giờ tôi cần script thời gian ở đây tôi cùng đọan code này :
    Copy đoạn code này

    Mã:
     #==============================================================================
    # ● Script Function Calls
    #------------------------------------------------------------------------------
    # ● $kts.stop - Stops time (can be used for cutscenes)
    # ● $kts.go - Resumes time (don't forget to use this!)
    # ● $kts.sec(n) - progresses time forward (n) seconds
    # ● $kts.min(n) - progresses time forward (n) minutes
    # ● $kts.hours(n) - progresses time forward (n) hours
    # ● $kts.days(n) - progresses time forward (n) days
    # ● $kts.jump_to_hour(n) - progresses time forward TO the specified hour.
    #==============================================================================
    # ● Game Database Setup
    #------------------------------------------------------------------------------
    # This script, by defult, uses the following game variables and switches:
    # Database Variables:
    # [1] The Current Time [4] The Current Hour
    # [2] The Current Second [5] The Current Day
    # [3] The Current Minute [6] Name of the Current Day
    # Database Switches
    # [1] ON during night hours (2200-0400)(10pm-4am)
    # [2] ON during dawn hours (0500-0800)( 5am-8am)
    # [3] ON during daytime hours (0900-1800)( 9am-6pm)
    # [4] ON during sunset hours (1900-2100)( 7pm-9pm)
    #==============================================================================
    
    #==============================================================================
    # Stores variables and user defined settings for the time system.
    #==============================================================================
    module KTS
      #-----------------------------------------------------------------------
      # User Definable Clock Settings
      #-----------------------------------------------------------------------
      # Sets the speed multiplier of the clock. 1 is real time. A higher
      # value will give you a faster clock. Default is 100.
      SPEED = 60
      #AMPM (True: 12-hour clock, False: 24-hour clock)
      AMPM = true
      # Sets the time at the start of your game.
      START_HOUR = 9
      START_DAY = 1
      #-----------------------------------------------------------------------
      # If you want custom day names, edit away!
      #-----------------------------------------------------------------------
      DAY_NAMES = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]
      #-----------------------------------------------------------------------
      # Settings for Time Periods
      #-----------------------------------------------------------------------
      T1 = [ 0,5 ] # Night # Sets time periods for tinting effects
      T2 = [ 6,8 ] # Dawn # [Start Hour, End Hour] for time period
      T3 = [ 9,18] # Day # Use 24-hour values for time periods
      T4 = [19,21] # Sunset
      T5 = [22,24] # Night # <- Ex: Night is between 23:00 and 24:00
      #-----------------------------------------------------------------------
      # Settings for Output to Game Variables option.
      #-----------------------------------------------------------------------
      # Set this to true to output the current time to game variables.
      DATABASE_OUTPUT = true
      # Game Variable to be used for time output.
      TIME = 101 #(Time in string format. Ex: "2:48 AM" or "02:48")
      SECONDS = 102
      MINUTES = 103
      HOURS = 104
      DAYS = 105
      DAYNAME = 106
      # Game Switches to be used for time output.
      NIGHT = 17 # This switch is on during night hours (2200-0400)(10pm-4am)
      DAWN = 18 # This switch is on during dawn hours (0500-0800)( 5am-8am)
      DAY = 19 # This switch is on during daytime hours (0900-1800)( 9am-6pm)
      SUNSET = 20 # This switch is on during sunset hours (1900-2100)( 7pm-9pm)
      #-----------------------------------------------------------------------
      # Settings for time controlled screen toning
      #-----------------------------------------------------------------------
      TONE_SWITCH_ID = 40
      # True will enable screen toning to be used by the script.
      USE_TONE = true
      # Sets the duration of tone changes (in frames)
      FADE_LENGTH = 120
      # Defines tones to be used in the corresponding time periods defined above.
      # RED, GREEN, BLUE, GREY
      C1 = Tone.new(-187, -119, -17, 68)
      C2 = Tone.new( 17, -51, -102, 0)
      C3 = Tone.new( 0, 0, 0, 0)
      C4 = Tone.new( -68, -136, -34, 0)
      C5 = Tone.new(-187, -119, -17, 68)
      # Defines anti-tones
      A1 = Tone.new( 187, 119, 17, -68)
      A2 = Tone.new( -17, 51, 102, 0)
      A3 = Tone.new( 0, 0, 0, 0)
      A4 = Tone.new( 68, 136, 34, 0)
      A5 = Tone.new( 187, 119, 17, -68)
    end
    
      #==============================================================================
      # Core Time System Engine
      #==============================================================================
    class Kylock_Time_System
      # sets instance variables
      def initialize
        $kts_map_data = load_data("Data/MapInfos.rvdata")
        @event_offset = (KTS::START_HOUR * 3600) + (KTS::START_DAY * 86400)
        @kts_stop = false
        $kts_event_tone = false
        $kts_battle_tone = true
        $kts_anti_tone = Tone.new(0,0,0,0)
      end
    
      # Computes current time and updates variables if used
      def update
        if !@kts_stop
          @total_seconds = (Graphics.frame_count * KTS::SPEED / 60) + @event_offset
          @seconds = (@total_seconds) % 60
          @minutes = (@total_seconds / 60) % 60
          @hours = (@total_seconds / 3600) % 24
          @days = (@total_seconds / 86400)
          update_tint
          if KTS::DATABASE_OUTPUT
            $game_variables[KTS::TIME] = getTime
          end
        end
      end
    
      def update_variables
        $game_variables[KTS::SECONDS] = @seconds
        $game_variables[KTS::MINUTES] = @minutes
        $game_variables[KTS::HOURS] = @hours
        $game_variables[KTS::DAYS] = @days
        $game_variables[KTS::DAYNAME] = getDayName
      end
    
      def update_switches
        if @period == 1 || @period == 5
          $game_switches[KTS::NIGHT] = true
        else
          $game_switches[KTS::NIGHT] = false
        end
        if @period == 2
          $game_switches[KTS::DAWN] = true
        else
          $game_switches[KTS::DAWN] = false
        end
        if @period == 3
          $game_switches[KTS::DAY] = true
        else
          $game_switches[KTS::DAY] = false
        end
        if @period == 4
          $game_switches[KTS::SUNSET] = true
        else
          $game_switches[KTS::SUNSET] = false
        end
      end
    
      def getTime
        if KTS::AMPM
        # Formats a 12-Hour Clock
          if @hours > 12
            hours1 = @hours - 12
              if hours1 > 9
                time = sprintf("%02d:%02d" + " PM", hours1, @minutes, @seconds)
              else
                time = sprintf("%01d:%02d" + " PM", hours1, @minutes, @seconds)
              end
          else
            if @hours > 9
                time = sprintf("%02d:%02d" + " AM", @hours, @minutes, @seconds)
            else
                time = sprintf("%01d:%02d" + " AM", @hours, @minutes, @seconds)
            end
          end
          #-------------------------------------------------------------------------------
          # 12-Format Fix by the unsung bard
          #-------------------------------------------------------------------------------
          # if @hours == 12
          # time = sprintf("%01d:%02d:%02d" + " PM", @hours, @minutes, @seconds)
          # end
          # if @hours == 0
          # time = sprintf("%02d:%02d:%02d" + " AM", "12", @minutes, @seconds)
          # end
          #-------------------------------------------------------------------------------
          return time
        else
          # Formats a 24-Hour Clock
          time = sprintf("%02d:%02d:%02d", @hours, @minutes, @seconds)
          return time
        end
      end
      #-----------------------------------------------------------------------
      # Script Command Functions
      #-----------------------------------------------------------------------
      def stop
        @time_stopped = @total_seconds
        @kts_stop = true
      end
      
      def go
        total_seconds = (Graphics.frame_count * KTS::SPEED / 60) + @event_offset
        @event_offset -= (total_seconds - @time_stopped)
        @kts_stop = false
      end
      
      def sec(sec = 0)
        @event_offset += sec
      end
      
      def min(min = 0)
        @event_offset += min * 60
      end
      
      def hours(hours = 0)
        @event_offset += hours * 3600
      end
      
      def days(days = 0)
      @event_offset += days * 86400
      end
      
      def jump_to_hour(jhour = 0)
        while @hours != jhour
          @event_offset += 1
          $kts.update
        end
      end
      #-----------------------------------------------------------------------
      # Script Support/Misc Functions
      #-----------------------------------------------------------------------
      def getDayName
        weekday = (@days % KTS::DAY_NAMES.length)
        return KTS::DAY_NAMES[weekday]
      end
    
      #-----------------------------------------------------------------------
      # Screen Tone Functions
      #-----------------------------------------------------------------------
      def update_tint(duration = KTS::FADE_LENGTH)
        return if $BTEST
        unless $game_switches[KTS::TONE_SWITCH_ID]
          if KTS::USE_TONE && !$kts_event_tone && $kts_map_data[$game_map.map_id].outside_tint?
            if @hours >= KTS::T1[0] and @hours <= KTS::T1[1]
              @period = 1
              screen.start_tone_change(KTS::C1,duration)
              $kts_anti_tone = KTS::A1
            elsif @hours >= KTS::T2[0] and @hours <= KTS::T2[1]
              @period = 2
              screen.start_tone_change(KTS::C2,duration)
              $kts_anti_tone = KTS::A2
            elsif @hours >= KTS::T3[0] and @hours <= KTS::T3[1]
              @period = 3
              screen.start_tone_change(KTS::C3,duration)
              $kts_anti_tone = KTS::A3
            elsif @hours >= KTS::T4[0] and @hours <= KTS::T4[1]
              @period = 4
              screen.start_tone_change(KTS::C4,duration)
              $kts_anti_tone = KTS::A4
            elsif @hours >= KTS::T5[0] and @hours <= KTS::T5[1]
              @period = 5
              screen.start_tone_change(KTS::C5,duration)
              $kts_anti_tone = KTS::A5
            end
          else
            # no tone if indoors
            if !$kts_map_data[$game_map.map_id].outside_tint?
              screen.start_tone_change(Tone.new(0,0,0,0),duration)
            end
          end
        end
      end
          
      def screen
        if $game_temp.in_battle
          return $game_troop.screen
        else
          return $game_map.screen
        end
      end
    end
    
    class Spriteset_Map
      #--------------------------------------------------------------------------
      # * Object Initialization
      #--------------------------------------------------------------------------
      alias kts_initialize initialize
      def initialize
        $kts.update_switches if !@kts_stop && KTS::DATABASE_OUTPUT
        $kts.update_variables if !@kts_stop && KTS::DATABASE_OUTPUT
        kts_initialize
      end
    end
    
    #==============================================================================
    # Instantly updates screen tone when a new map is loaded.
    #==============================================================================
    class Game_Map
      alias kts_setup setup
      def setup(map_id)
        kts_setup(map_id)
        $kts_event_tone = false
        $kts.update
        $kts.update_tint(0)
      end
    end
    
    #==============================================================================
    # Instantly updates screen tone when a battle starts.
    #==============================================================================
    class Spriteset_Battle
      alias kts_create_battleback create_battleback
      def create_battleback
        $kts.update_tint(0)
        kts_create_battleback
      end
    end
    
    #==============================================================================
    # Temporarily disables auto-toning if an event tints the screen.
    #==============================================================================
    class Game_Interpreter
      alias kts_Interpreter_command_223 command_223
      def command_223
        $kts_event_tone = true
        kts_Interpreter_command_223
      end
    end
    
    #==============================================================================
    # Integrates the Time System into the Game System.
    #==============================================================================
    class Game_System
      # inits a KTS object
      alias kts_initialize initialize
      def initialize
        $kts=Kylock_Time_System.new
        kts_initialize
      end
      # Updates kts every game frame
      alias kts_update update
      def update
        $kts.update
        kts_update
      end
    end
    
    #==============================================================================
    # Scans Map Names for Toning
    #==============================================================================
    class RPG::MapInfo
      def name # Definition prevents location scripts from reading anything within
        eturn @name.gsub(/\[.*\]/) {""} # brackets, including the brackets
      end
      
      def original_name
        return @name
      end
      
      def outside_tint?
        return @name.scan(/\[KTS\]/).size > 0
        # old regexp: return @name.scan(/[\KTS]/).size > 0
      end
    end
    
    
    #==============================================================================
    # Sets up the time window for the menu.
    #==============================================================================
    class Window_KTS < Window_Base
      def initialize(x, y)
        super(x, y, 210, WLH + 52)
        refresh
      end
      
      def refresh
        self.contents.clear
        # Change "49" or "120" higher or lower to move the words horizontally
        # Change "32" higher or lower to move the words vertically
            self.contents.clear
        self.contents.font.color = Color.new(173, 255, 47, 255)
        self.contents.draw_text(4, 15, 75, 32, $kts.getDayName , 2)
        self.contents.draw_text(4, 15, 165, 32, $kts.getTime, 2)
        self.contents.draw_text(152, -8, 75, 32, $game_variables[10]) 
      end
      
      def update
        super
        $kts.update
        self.contents.clear
        self.contents.font.color = Color.new(173, 255, 47, 255)
        self.contents.draw_text(4, 15, 75, 32,$kts.getDayName , 2)
        self.contents.draw_text(4, 15, 165, 32, $kts.getTime, 2)
        self.contents.draw_text(152, -8, 75, 32, $game_variables[10]) 
      end
    end
    #==============================================================================
    # Adds the time window to the menu.
    #==============================================================================
    class Scene_Map < Scene_Base
      alias kts_start start
      def start
        kts_start
        @kts_window = Window_KTS.new(329,339)
        @kts_window.opacity = 0
      end
      
      alias kts_terminate terminate
      def terminate
        kts_terminate
        @kts_window.dispose
      end
    
      alias kts_update update
      def update
        kts_update
    if $game_map.map_id != 14 and $game_map.map_id != 5 #map id clear
          @kts_window.update
        else
          @kts_window.contents.clear
        end
      end
    end
    #==============================================================================
    # Saves and Loads game time to/from save game file.
    #==============================================================================
    class Scene_File
      alias kts_write_save_data write_save_data
      def write_save_data(file)
        kts_write_save_data(file)
        Marshal.dump($kts, file)
      end
      
      alias kts_read_save_data read_save_data
      def read_save_data(file)
        kts_read_save_data(file)
        $kts = Marshal.load(file)
      end
    end
    bây giờ các bạn mở RPG maker VX ra có phải giao diện là thế này không
    [​IMG]

    Bạn ấn F11

    [​IMG]

    Sau đó past đoạn script vừa copy vào trên script main sẳn có như thế này
    [​IMG]

    ở script này các bạn chỉ cần để ý đến line 35, 39 ,40 , 44 cái này kiến thức AV cấp 1 cũng hiểu nên tớ ko cần giải thích
    [​IMG]

    Và để ý line 59 > line 64 nữa , cái này tôi sẽ nói sau !


    Việc chèn script tôi chỉ hướng dẫn 1 lần , các bạn nhớ kĩ đấy

    Rồi đây giờ vào game test thử xem đã có thời gian chưa ?
    [​IMG]


    Kết quả đây đúng ko ? ok rồi nhưng nhin dzầy nó xấu quá các cậu nhỉ thử dùng tấm graphic của tớ xem !
    [​IMG]
    down tấm ảnh này về vất vào folder “pictures”

    Bây giờ tạo 1 common event với nội dung như thế này
    [​IMG]


    Common event này có tác dụng show cái bức ảnh clock các bạn vừa down về đó ra ngoài map khi switch 3 được bật


    Việc rất đơn giản bây giờ chúng ta chỉ cần làm cho switch 3 được bật
    làm thế nào à ? đây chỉnh autorun rồi xóa đi
    [​IMG]
    [​IMG]


    Kết quả tuyệt ko ? thấy cái số 0 kết chữ spring ko ? đó là số ngày , cái đó tôi thêm vào script gốc để phù hợp với thể loại game HM (thật ra thì tôi cũng thêm và chỉnh khá nhiều thứ vào script gốc rồi !)

    Các bạn muốn tăng số ngày chỉ cần thay đổi số “variable no.10” ok chứ ?

    Chưa xog, các bạn tưởng hệ thống thời gian trong HM nó đơn giản là tạo 1 cái clock bên ngoài map sao ? Ko phải đâu , script này có 1 hệ thống mà riêng riêng game HM rất cần đó là “thời gian có thể kích hoạt event”

    Nói đơn giản 1 cái shop chỉ được vào từ 9h sáng tới 2h trưa thôi , bây giờ phải làm thế nào?
    Yên tâm đã có tôi rồi :

    Ta tạo 1 common event với nội dung thế này
    [​IMG]


    Common event này có tác dụng kích hoạt swicth no.10 khi variable 104 của chúng ta lớn hơn hoặc = 8 và nhỏ hơn 15 , (tôi có bảo các bạn để ý line 59 > 64 trong script thời gian nhỉ, và variable “giờ” của chúng ta là no.104 đấy )

    Nhìn hơi khó hiểu nhỉ, tự nhiên event kích hoạt từ 9h > 14h mà trong event này lại có số 15 và số 8 để tôi giải thích 1 chút từ 9h > 14 h có nghĩa là dưới 9h cái cửa đó ko vào đc nên có dấu < =8 số 15 cũng tương tự

    Các bạn hỏi sao ko để thẵng là 9 > 14 lun á , khổ lắm các bạn ạ , để như thế nó ko hoạt động mới chết ấy chứ, tôi cũng chả hỉu nổi cái scrit này nó lạ đời kinh khủng )
    để common event này hoạt động ta phải kích hoạt switch 9 trước

    Để hiểu rõ tác dụng của commont event này ta thử nhé



    Tạo 1 ngôi nhà và tao 1 event cửa gồm 2 page với nội dung lần lượt là thế này
    [​IMG]
    [​IMG]

    test đi các chàng trai
    [​IMG]
    [​IMG]

    thế là xog phần thời gian demo ,tôi gửi file đính kèm bên dưới


    6 phần còn lại mỗi ngày tôi sẽ viết 1 phần , hiện tôi đc nghỉ 1 tuần nên sẽ cố gắng hoàn thành việc này do ko thể thực hiện đc lời hứa làm project này đc
     

    Các file đính kèm:

    Chỉnh sửa cuối: 14/4/11
  2. prince of games

    prince of games Space Marine Doomguy GVN Veteran

    Tham gia ngày:
    21/8/06
    Bài viết:
    5,784
    Nơi ở:
    Vô Gia Cư :))
    Tuy nói là mai Viết nhưng biết đâu mai tôi bận, nên giờ rảnh tôi viết luôn
    phần này các cậu cần những picture
    2 picture bỏ vào folder character
    và 1 số pic bỏ vào picture xin mởi các bạn down bên dưới


    Hệ Thống TV & Thời tiết

    Hệ thống TV thì trong HM có bao nhiêu kênh ấy nhỉ ?
    thôi bao nhiêu kênh thì kệ nó đi nhưng quan trọng là 2 kênh
    _Thời Tiết
    _Tin tức

    Đúng ko nào ? kênh thời tiết là kênh dự báo mà ngày mai sẽ mưa hay nắng
    Còn kênh tin tức là kênh cho ta biết trong tháng này sẽ có những lễ hội nào

    chúng ta bắt đầu nào

    tôi vẽ 2 map
    map đầu tiên là map bên ngoài sẽ diễn tả thời tiết ngoài trời !
    tôi tạo 1 event thế này
    [​IMG]



    2 cái lệnh đầu chắc các bạn đã biết , tới lệnh thứ 3 thì đó có nghĩa là "nếu switch 12 = On thì ở map này sẽ có xuất hiện mưa"
    tạm thời là vậy qua map tiếp theo

    map trong nhà
    trong map này tôi có 3 event
    1 event với nội dung thế này

    [​IMG]


    trong đây "kts.stop" tức là lệnh cho script thời gian ngừng hoạt động trong map này

    1 cái giường để check thử thời tiết ,vì đây là dự báo mà, mai mới có mưa tức là tôi phải đi ngủ rồi cái dự báo mới ứng nghiệm

    cái giường tôi sẽ nói sau

    1 event TV


    nội dung event là thế này
    đây là 1 event gồm 3 page
    page 1
    [​IMG]

    tôi giải thích từng dòng nhé đầu tiên khi nhấp vào nó sẽ hiện picture "TV_Bat" sau đó cho bạn 2 chọn lựa 1 là chọn kênh "dự báo thời tiết" 2 là chọn kênh tin tức mà ở đây tôi đặt tên là "Trên từng kinh tuyến"

    nếu bạn chọn kênh "dự báo thời tiết"
    ở đây sẽ set random variable no.16 = 1 hoặc 2
    nếu là 1 thì mai sẽ mưa còn nếu là 2 thì mai sẽ nắng lời thoại và hình show sẽ khác nhau , hết

    kênh tin tức thì đơn giản quá chúng ta chỉ cần liệt kê trong mùa này có những lễ hội gì, thế thôi !

    nhưng tại sao lại cần đến 3 page , uhm tại vì nếu chỉ page 1 thì mỗi lần bật thì TV lại hiện 1 dự báo thời tiết khác nhau, thế thì hơi xàm , nên cần đến 3 page

    page thứ 2
    [​IMG]

    được kích hoạt khi ngày mai trời nắng tức là variable no.16 = 1
    với nội dung thế này
    tức là mai 100% là năng rồi bật cỡ nào cũng nắng thôi

    page 3
    [​IMG]

    tương tự được kích hoạt nếu ngày mai trời mưa tức là variable no.16 = 2

    bây giờ qua cái event giường nào ở event này về sau sẻ khá phức tạp vì nối các event lại với nhau rất nhiều nhưng hiện giờ thì chỉ cần cái thời tiết thôi

    nên nội dung là thế này
    [​IMG]


    bắt đầu từ dòng $kts.go nhé , vì trong nhá ban đầu đã đặt 1 event là $kts.stop để thời gian ko chạy nữa rồi nếu ko thêm lệnh $kts.go thì sẽ bị đứng màn hình khi chạy event đấy
    variable 10 + 1 là để ngày qua 1 số (0 >1)
    bây h tới phần nếu thì này
    nếu variable 16 = 2 tức là xem dự báo thời tiết mà có mưa ấy thì switch 12 ON , tức là switch mưa sẽ ON event mưa bên ngoài map kia sẽ hoạt động
    [​IMG]


    test đi các chàng trai xog thêm 2 hệ thống nữa nhé, dzậy là chỉ còn vài cái thôi

     
    Chỉnh sửa cuối: 14/4/11
  3. prince of games

    prince of games Space Marine Doomguy GVN Veteran

    Tham gia ngày:
    21/8/06
    Bài viết:
    5,784
    Nơi ở:
    Vô Gia Cư :))
    Bây h là 3h sáng , tôi lại viết hướng dẫn làm hệ thống tiếp theo cho project này đó là hệ thống tình cảm , ở đây là với các cô gái
    để làm được điều này cần có 1 ic của character lúc cầm quà và 1 pic lúc character ko cầm quà ở đây tôi dùng 2 ảnh này
    [​IMG]
    [​IMG]

    Hệ Thống Tình Cảm

    nói tới tình cảm trong HM thì chúng ta phải nói tới việc tặng quà làm tăng chỉ số tình cảm của cô gái lên , sau đó là tới các event ở các map tùy theo mức độ tình cảm của các cô gái đó
    bây h tôi có 2 map như bài Tut thứ 2
    map 1
    là trong 1 ngôi nhà có 1 cái giường, vâng trong HM bất cứ sự kiện nào cũng liên quan đến cái giường, xin chú ý dùm
    cái giường có nhiệm vụ gì trong hệ thống này tôi sẽ nói sau :

    và 1 cái rương , cái rương này là để lấy 2 món quà cho cô gái ở map thứ 2

    map thứ 2

    1 cô gái tróng trong map này
    thế này ,đầu tiên tạo 1 event cô gái (các bạn có thể thêm hệ thống thời gian bào cho cô gái ở event này nhưng tôi thì ko nhắc lại nữavì tut này chủ yếu là tình cảm thôi)

    Tôi có 5 page cho event này như sau

    page đầu tiên , khi cô chả có tình cảm j` với cậu cả
    để làm được điều này tôi cần 1 chỉ số variable cho nv này khi variable nv này = 0 thì mặt lạnh như băng
    [​IMG]
    [​IMG]



    page thứ 2
    cũng như page 1 bây h cô bắt đầu có cảm tình với cậu
    [​IMG]
    [​IMG]


    page 3
    như page 2 có điều tình cảm đã ra hoa kết trái
    [​IMG]
    [​IMG]
    [​IMG]




    page thứ 4
    bắt đầu là page cậu cầm quà ở đây cần có switch "cầm quà" được bật rồi mới thực hiện lệnh trong event này
    [​IMG]


    Nhưng cầm quà thì trong HM có nhiều loại, nông sản , rác , vâng vâng .... ở Tut này tôi chỉ làm đơn giản 2 loại đó là quà tặng đc , và rác

    Bắt đầu thực hiện face này thì ta cần có item
    tạo 1 item thứ 1 là "item tặng đc" nội dung như sau
    [​IMG]

    chú ý những gì tôi khoanh tròn trong ảnh

    item này khi sử dụng sẽ dẫn đến 1 common event vậy bây giờ ta sẽ tạo 1 common event nội dung như sau :
    [​IMG]


    tức là sau khi sử dụng item này thì switch cầm quà sẽ được bật , switch cầm cà rốt-item tặng đc sẽ được bật và switch item rác sẽ off

    item thứ 2 làm tương tự nhớ làm common event

    tới page 5 của event cô gái , đâu có vụ 1 ngày tặng 2-3 lần nhỉ , để giới hạn tình cảm làm game chơi lâu hơn tôi chỉ cho 1 ngày tặng đc 1 lần thế là tôi tạo thêm 1 switch
    [​IMG]

    [​IMG]


    xog bây giờ quay lại map 1 có cái giường, qua ngày mới thì tiế tục tặng quà đc đúng ko , vậy thì event nội dung cái giường sẽ là thế này chỉ cần thêm cái dòng này
    [​IMG]

    xog rồi, test thử coi các chàng trai


    [​IMG]
     
    Chỉnh sửa cuối: 30/8/10
  4. prince of games

    prince of games Space Marine Doomguy GVN Veteran

    Tham gia ngày:
    21/8/06
    Bài viết:
    5,784
    Nơi ở:
    Vô Gia Cư :))
    4h sáng, gamevn lag quá

    Hệ Thống Chăn Nuôi

    Bắt đầu nào, tôi có 3 map

    Map thứ nhất là map trong nhà mình, map này có event "cái giường" là đủ

    [​IMG]

    Vâng tôi đã nói event "cái giường" là event nối kết mọi event của HM kể cả cái hệ thống trồng trọt mà mai tôi sẽ viết

    Map thứ 2
    là map bên ngoài ngôi nhà ,map này chỉ cần những cái event cửa để vào chuồng thôi

    [​IMG]

    Map thứ 3
    là map chuồng bò
    [​IMG]

    Trong map này có 3 event
    1.là con bò
    2.là máng đựng lúa bò sẽ ăn
    3.là khay chứa thức ăn cho bò

    nắm được chưa

    đầu tiên ta làm khay đựng thức ăn cho bò :
    _Thường thì trong HM chúng ta sẽ mua lúa, và lúa đc chuyển tới khay đựng thức ăn cho bò, nếu hết lúa thì ko thể lấy lúa từ khay ra đc
    OK tôi bắt đầu làm
    Set 1 variable : "thức ăn cho bò"
    bắt đầu tạo 1 event khay đựng thức ăn cho bò với 2 page

    Page đầu tiên là khi số lúa = 0 tức là hết lúa rồi variable "thức ăn cho bò" = 0
    [​IMG]




    Page thứ 2 là khi số lúa còn lớn hơn 0
    nếu như vậy thì bắt đầu hiện câu hỏi "Lấy bao nhiêu" và bạn set giá trị đó số item đó sẽ đc add vào item inventory của bạn
    để làm được điều đó, tôi lại cần thêm 1 variable nữa đó là "số thức an bò muốn lấy" là cái số bạn sẽ nhập vào

    nếu cái số đó mà lớn hơn số "thức ăn cho bò" có sẵn thì xuất hiện thông báo ko đủ còn nếu nhỏ hơn hoặc = thì số lúa vào item inventory của bạn sẽ = với "số thức ăn cho bò muốn lấy"

    cuối event nhớ set lại variable "số thức ăn bò muốn lấy = 0" nhé

    bạn xem event để hiểu thêm
    [​IMG]


    tới phần event máng
    cũng đơn giản thôi, cái bạn cần là 1 graphic máng ăn
    event này gồm 3 page

    page 1 - trắng
    [​IMG]

    page 2 - là page thức hiện event khi bạn kích hoạt switch "cầm thức ăn cho bò"
    tức là khi bạn nhấn vào item "lúa"
    [​IMG]


    phần này tương tự phần tôi đã hướng dẫn ở trên "Hệ thống tình cảm", tạo 1 item lúa cũng tương tự như thế

    ở đây có 4 con bò nên phải phân switch ra

    các bạn hãy xem nội dung event để biết thêm chi tiết




    page 3 - thực hiện change graphic khi switch "cho bò x ăn rồi" = ON
    [​IMG]

    Bây h tới event con bò
    cũng đơn giản thôi, cái bạn cần là grahic 1 con bò, hình như vx có sẵn

    event này gồm 2 page
    page 1 là page con bò chưa đc ăn tức là switch đc ăn chưa đc ON
    [​IMG]


    page 2 là page đc ăn rồi nên cho quyền lấy sữa bò nhưng ko phải lúc nào cũng lấy đcn nên hải đặt switch cho nó, event ngắn và cũng rất đơn giản , các bạn có thể tự hiểu chứ
    [​IMG]

    bây h trở lại map 1 , phần cái giường bạn chỉ cần


    thêm cái switch "chưa lấy sữa bò x" = On
    và "cho bò x ăn rồi" = Off là xong


     
    Chỉnh sửa cuối: 31/8/10
  5. prince of games

    prince of games Space Marine Doomguy GVN Veteran

    Tham gia ngày:
    21/8/06
    Bài viết:
    5,784
    Nơi ở:
    Vô Gia Cư :))
    mệt quá , bài này lúc nãy tôi viết rồi đột nhiên mất điện phải viết lại
    thôi thì tôi cũng ráng viết lại để đúng chỉ tiêu bản thân đề ra

    Hệ Thống Trồng Trọt

    hệ thống này yêu cầu bạn phải có 1 số graphic về cây , đất lúc chưa tưới nc và lúc tưới đc rồi và 1 số animation lúc nv thực hiên động tác đào bất, tưới cây .....
    [​IMG]



    và cũng nói trc , hệ thống này là 1 cực hình với các bạn vì trong 1 mảnh đất lớn thì có vô số mảnh đất nhỏ mà mỗi mảnh đất nhỏ này là 1 event khác nhau cho nên mảnh vườn càng rộng thì bạn sẽ càng mệt

    ở đây tôi có 2 map
    map thứ 1 là map vườn , nơi trồng trọt
    map thứ 2 là map nhà - map có event cái giường ý -.-

    map 1.
    [​IMG]


    do ko có thời gian nên tôi chỉ làm 2 mảnh đất nhỏ tức 2 event còn lại thì tương tự

    event này gồm 15 page , sẽ còn tăng nếu như số cây trồng bạn phong phú

    page thứ 1 gồm 2 điều kiện chủ yếu
    1.nếu bạn còn sức - mp > 0 ở đây tôi tạo 1 variable mp (sức lực bạn có) nếu như mp này = 0 bạn ko thể thực hiện lệnh tiếp theo
    @tôi nói rõ là mp là 1 variable ko phải là cái mp mặc định game cho sẵn đâu
    [​IMG]


    2.nếu bạn có trang bị cây cuốc , tức là nếu ko cầm cây cuốc bạn ko thể thực hiện động tác đào đất đc và khi đào đất xog bạn hãy set seft switch A cho nó = ON
    chỉ có vậy ở page này dài là do tôi bày vẽ thêm animation và 1 số điều kiện khác

    page thứ 2 (khi switch A = on)
    tức là khi thực hiện động tác đào đất xog event này sẽ hoạt động, ở đây tôi thay đổi graphic cho nó giống như đã đào đất xog , bây giờ đào đất xog chúng ta sẽ làm gì , chúng ta sẽ gieo hạt
    tạo 1 item "hạt giống x" và làm event này giống như ở Tut hệ thống tình cảm vậy
    ở page này có x đều kiện (x = số hạt giống có trong game của bạn)
    xem kĩ page này
    [​IMG]

    variavble no.501 = 10 : ở đây tôi set khi gieo trồng mỗi lại thì variable này sẽ tăng khác nhau 501 là số variable tôi dùng cho event này

    10 là số để tôi nhận biết tôi đã gieo hạt giống nào

    Khi gieo mỗi hạt giống thì số variable thay đổi khác nhau , tôi khuyến khích bạn tăng 10 với mỗi hạt giống khác nhau

    switch 401 ....406 = Off : khi cầm 1 bịch hạt giống, nếu bạn làm theo cách tôi đã chỉ ở Tut tình cảm , thì 1 switch phải on để thực hiện common event đúng ko , sau khi sử dụng xog hạt giống thì tôi cho off nó tức là ko còn cầm hạt giống nữa

    hãy xem page 3 ( nếu variable 501 = 10)

    ở page này tôi có 3 điều kiện
    1.nếu bạn trang bị bình nước (để tưới) thì thực hiện điều kiện tt
    2.nếu mp bạn >= 1 thì bạn thực hiện dk tiếp theo
    3.nếu 2 điều kiện trc đó bạn thỏa nhưng nước trong bình bạn = 0 thì .....
    [​IMG]

    2 đk đầu chắc các bạn hiểu , điều kiện 3 thì chỉ cần set cho 1 variable nước trong bình = mấy đó khi bạn đi hứng nước ở 1 cái giếng nào đó

    nếu bạn thực hiện đc động tác tưới nc thì + cho variable đó thêm 1 ở đây là
    variable 501 = 1

    switch 501 = ON ( đây là gì , đố các bạn , yes , đây là page khi bạn đã thực hiện xog động tác tưới nc)
    đây là page cuối của event

    bây giờ xem tiếp trang 4
    rất đơn giản nếu mỗi ngày bạn tưới 1 phát qua 4 ngày khi variable của nó = 14 thì bạn sẽ thực hiện đc hành động thu hoạch
    khi thu hoạch hãy set lại cho variable 501 = 0 và switch cũng dẹp đi , bạn cũng có thể set seft switch A = off luôn để nó đào lại rồi mới đc trồng
    [​IMG]

    bắt đầu từ page 5 thì tương tự với loại hạt giống khác

    [​IMG]
    [​IMG]
    [​IMG]

    bây giờ lảm event tiếp theo , tôi đã nói ở mạnh đất lớn thì 1 mãnh đất nhỏ là 1 event khác nhau nên tôi sẽ hướng dẫn bạn làm tương tự

    copy cái event mới làm vào mảnh đất lớn chỗ khác (khuyến khích đặt kế nhau)
    page 1 y chang

    page từ page 2 chỗ nào có số variable 501 change hết thành 502 ko chừa chỗ nào còn = 501 cả
    [​IMG]
    xog
    các event khác làm tương tự

    h tới map cái giường ở map 2

    chắc các bạn biết phải làm gì rồi nhỉ , mỗi làn tưới nc thì ta chi switch 501 = ON h chỉ cần off nó thôi(ko phải chỉ 501 nha nếu bạn càng nhìu đất thì số switch phải off cũng tăng theo đó)
    test đi các chàng trai

     
    Chỉnh sửa cuối: 1/9/10

Chia sẻ trang này