當(dāng)前位置:視頻教程網(wǎng) > 教育知識(shí) > 正文
發(fā)布:2023-10-27 15:46:00編輯:視頻君來源:視頻教程網(wǎng)
行走圖在這里更改 或者獨(dú)立的事件更改 事件遇敵的設(shè)置 開關(guān)1的意義是執(zhí)行事件2.變量逃跑數(shù)可以自己選擇適當(dāng)?shù)淖兞渴录?比如逃跑數(shù)超過10扣屬性,超過100獲得稱號(hào). 注意移動(dòng)方式是自定義中的接近主角.速度和頻率可以適當(dāng)減少. 這是第二頁(yè)事件.等待300幀的意義是5秒后刷新該怪物.可以自己改下時(shí)間.60幀=1秒.開關(guān)01=off的意義是在5秒后重新激活事件1.事件執(zhí)行條件必須是并行處理. 撞到人就戰(zhàn)斗的事件是一樣的啊,你去碰的話改下移動(dòng)路線就行了,怪物碰你就如上圖
你的調(diào)查指的是什么……?總之用開關(guān)和獨(dú)立開關(guān)就可以做到。 這就是開關(guān)和獨(dú)立開關(guān): 調(diào)查完以后不再調(diào)查: 先輸入你想要的指令,然后在指令的最末尾(不是末尾也行,根據(jù)實(shí)際情況而定)輸入“獨(dú)立開關(guān)操作 A(或B、C、D) 為 ON”(即打開獨(dú)立開關(guān)A(或B、C、D))。 然后,新建一個(gè)事件頁(yè)。 之后在事件的“出現(xiàn)條件”中設(shè)置“獨(dú)立開關(guān)A(或B、C、D)開啟”時(shí)。 然后在這個(gè)事件耶上設(shè)定你想要第一個(gè)事件頁(yè)執(zhí)行過后的情況。 這就是調(diào)查完了之后不再調(diào)查。 調(diào)查完了再觸發(fā)一個(gè)調(diào)查: 在一個(gè)事件的末尾(或其他位置)設(shè)置“開關(guān) ** 為ON”(即打開**開關(guān)),這里的開關(guān)到底打開那一個(gè)可以自己設(shè)置。一個(gè)游戲里可以設(shè)置很多個(gè)開關(guān)。 之后,在你想要在這個(gè)調(diào)查完成之后觸發(fā)的事件的出現(xiàn)條件中設(shè)置“開關(guān)**開啟時(shí)”。 這樣就可以在一個(gè)調(diào)查了再觸發(fā)一個(gè)結(jié)局。 如果有什么對(duì)問題意思有理解偏差的地方,請(qǐng)指出。
首先,確認(rèn)兩點(diǎn):
①caps lock鍵沒有按下并且鍵盤工作良好
②你的腳本庫(kù)里是否有full kboard腳本,如果沒有,請(qǐng)把腳本編輯器打開,在main腳本之前插入我給你的這段腳本。
請(qǐng)你在當(dāng)前地圖新建一個(gè)并行處理事件(允許穿透):
事件頁(yè)1:
腳本:if Kboard.press?($R_Key_A)
print("A")
end
獨(dú)立開關(guān)操作:A=on
事件頁(yè)2:(啟動(dòng)條件:獨(dú)立A=on)
加入此事件后,測(cè)試,進(jìn)入插入事件的地圖,按鍵盤上的A鍵測(cè)試。
若顯示出了“A”字母,說明是事件問題(常見的事件問題是:自動(dòng)執(zhí)行事件干擾了整個(gè)地圖,請(qǐng)你逐個(gè)檢查該地圖上的每個(gè)自動(dòng)執(zhí)行事件并修改)。
若沒有顯示出“A”字母,說明腳本有問題(你如果沒有改過腳本庫(kù),這一項(xiàng)應(yīng)該不太可能)。
#==============================================================================
# 本腳本來自www.66RPG.com,使用和轉(zhuǎn)載請(qǐng)保留此信息
#==============================================================================
#
# 全鍵盤
# ★、Kboard.press?(鍵位) 返回是否按下這個(gè)鍵的判斷。
# 比如條件分歧:Kboard.keyboard($R_Key_H)
# 則當(dāng)按下鍵盤H鍵的時(shí)候條件分歧成立
#
# ★、Kboard.repeat?(鍵位) == 1 當(dāng)連續(xù)按住某鍵返回真,否則為false
# 比如條件分歧:Kboard.keyb($R_Key_U) == 1
# 則當(dāng)持續(xù)按下鍵盤U的時(shí)候條件分歧成立
#
# ★、Kboard.trigger?(鍵位,1) 似乎可以做開關(guān)用。按下一次變?yōu)閠rue,再按變false
# 修改:夏娜
#
#============================================================================
module Kboard
#==========================================================================
# 以下是全鍵盤按鍵列表
#--------------------------------------------------------------------------
$Rmouse_BUTTON_L = 0x01 # left mouse button
$Rmouse_BUTTON_R = 0x02 # right mouse button
$Rmouse_BUTTON_M = 0x04 # middle mouse button
$Rmouse_BUTTON_4 = 0x05 # 4th mouse button
$Rmouse_BUTTON_5 = 0x06 # 5th mouse button
#--------------------------------------------------------------------------
$R_Key_BACK = 0x08 # BACKSPACE key
$R_Key_TAB = 0x09 # TAB key
$R_Key_RETURN = 0x0D # ENTER key
$R_Key_SHIFT = 0x10 # SHIFT key
$R_Key_CTLR = 0x11 # CTLR key
$R_Key_ALT = 0x12 # ALT key
$R_Key_PAUSE = 0x13 # PAUSE key
$R_Key_CAPITAL = 0x14 # CAPS LOCK key
$R_Key_ESCAPE = 0x1B # ESC key
$R_Key_SPACE = 0x20 # SPACEBAR
$R_Key_PRIOR = 0x21 # PAGE UP key
$R_Key_NEXT = 0x22 # PAGE DOWN key
$R_Key_END = 0x23 # END key
$R_Key_HOME = 0x24 # HOME key
$R_Key_LEFT = 0x25 # LEFT ARROW key
$R_Key_UP = 0x26 # UP ARROW key
$R_Key_RIGHT = 0x27 # RIGHT ARROW key
$R_Key_DOWN = 0x28 # DOWN ARROW key
$R_Key_SELECT = 0x29 # SELECT key
$R_Key_PRINT = 0x2A # PRINT key
$R_Key_SNAPSHOT = 0x2C # PRINT SCREEN key
$R_Key_INSERT = 0x2D # INS key
$R_Key_DELETE = 0x2E # DEL key
#--------------------------------------------------------------------------
$R_Key_0 = 0x30 # 0 key
$R_Key_1 = 0x31 # 1 key
$R_Key_2 = 0x32 # 2 key
$R_Key_3 = 0x33 # 3 key
$R_Key_4 = 0x34 # 4 key
$R_Key_5 = 0x35 # 5 key
$R_Key_6 = 0x36 # 6 key
$R_Key_7 = 0x37 # 7 key
$R_Key_8 = 0x38 # 8 key
$R_Key_9 = 0x39 # 9 key
#--------------------------------------------------------------------------
$R_Key_A = 0x41 # A key
$R_Key_B = 0x42 # B key
$R_Key_C = 0x43 # C key
$R_Key_D = 0x44 # D key
$R_Key_E = 0x45 # E key
$R_Key_F = 0x46 # F key
$R_Key_G = 0x47 # G key
$R_Key_H = 0x48 # H key
$R_Key_I = 0x49 # I key
$R_Key_J = 0x4A # J key
$R_Key_K = 0x4B # K key
$R_Key_L = 0x4C # L key
$R_Key_M = 0x4D # M key
$R_Key_N = 0x4E # N key
$R_Key_O = 0x4F # O key
$R_Key_P = 0x50 # P key
$R_Key_Q = 0x51 # Q key
$R_Key_R = 0x52 # R key
$R_Key_S = 0x53 # S key
$R_Key_T = 0x54 # T key
$R_Key_U = 0x55 # U key
$R_Key_V = 0x56 # V key
$R_Key_W = 0x57 # W key
$R_Key_X = 0x58 # X key
$R_Key_Y = 0x59 # Y key
$R_Key_Z = 0x5A # Z key
#--------------------------------------------------------------------------
$R_Key_LWIN = 0x5B # Left Windows key (Microsoft Natural keyboard)
$R_Key_RWIN = 0x5C # Right Windows key (Natural keyboard)
$R_Key_APPS = 0x5D # Applications key (Natural keyboard)
#--------------------------------------------------------------------------
$R_Key_NUMPAD0 = 0x60 # Numeric keypad 0 key
$R_Key_NUMPAD1 = 0x61 # Numeric keypad 1 key
$R_Key_NUMPAD2 = 0x62 # Numeric keypad 2 key
$R_Key_NUMPAD3 = 0x63 # Numeric keypad 3 key
$R_Key_NUMPAD4 = 0x64 # Numeric keypad 4 key
$R_Key_NUMPAD5 = 0x65 # Numeric keypad 5 key
$R_Key_NUMPAD6 = 0x66 # Numeric keypad 6 key
$R_Key_NUMPAD7 = 0x67 # Numeric keypad 7 key
$R_Key_NUMPAD8 = 0x68 # Numeric keypad 8 key
$R_Key_NUMPAD9 = 0x69 # Numeric keypad 9 key
$R_Key_MULTIPLY = 0x6A # Multiply key (*)
$R_Key_ADD = 0x6B # Add key (+)
$R_Key_SEPARATOR = 0x6C # Separator key
$R_Key_SUBTRACT = 0x6D # Subtract key (-)
$R_Key_DECIMAL = 0x6E # Decimal key
$R_Key_DIVIDE = 0x6F # Divide key (/)
#--------------------------------------------------------------------------
$R_Key_F1 = 0x70 # F1 key
$R_Key_F2 = 0x71 # F2 key
$R_Key_F3 = 0x72 # F3 key
$R_Key_F4 = 0x73 # F4 key
$R_Key_F5 = 0x74 # F5 key
$R_Key_F6 = 0x75 # F6 key
$R_Key_F7 = 0x76 # F7 key
$R_Key_F8 = 0x77 # F8 key
$R_Key_F9 = 0x78 # F9 key
$R_Key_F10 = 0x79 # F10 key
$R_Key_F11 = 0x7A # F11 key
$R_Key_F12 = 0x7B # F12 key
#--------------------------------------------------------------------------
$R_Key_NUMLOCK = 0x90 # NUM LOCK key
$R_Key_SCROLL = 0x91 # SCROLL LOCK key
#--------------------------------------------------------------------------
$R_Key_LSHIFT = 0xA0 # Left SHIFT key
$R_Key_RSHIFT = 0xA1 # Right SHIFT key
$R_Key_LCONTROL = 0xA2 # Left CONTROL key
$R_Key_RCONTROL = 0xA3 # Right CONTROL key
$R_Key_L_ALT = 0xA4 # Left ALT key
$R_Key_R_ALT = 0xA5 # Right ALT key
#--------------------------------------------------------------------------
$R_Key_SEP = 0xBC # , key
$R_Key_DASH = 0xBD # - key
$R_Key_DOTT = 0xBE # . Key
module_function
@R_Key_Hash = {}
@R_Key_Repeat = {}
GetKeyState = Win32API.new("user32","GetAsyncKeyState",['I'],'I')
def press?(rkey)
return GetKeyState.call(rkey) != 0
end
def repeat?(rkey)
result = GetKeyState.call(rkey)
if result != 0
if @R_Key_Repeat[rkey].nil?
@R_Key_Repeat[rkey] = 0
return true
end
@R_Key_Repeat[rkey] += 1
else
@R_Key_Repeat[rkey] = nil
@R_Key_Hash[rkey] = 0
end
if !@R_Key_Repeat[rkey].nil? and @R_Key_Repeat[rkey] > 4 # 4乃準(zhǔn)確數(shù)字
@R_Key_Repeat[rkey] = 0
return true
else
return false
end
end
def trigger?(rkey)
result = GetKeyState.call(rkey)
if @R_Key_Hash[rkey] == 1 and result != 0
return false
end
if result != 0
@R_Key_Hash[rkey] = 1
return true
else
@R_Key_Hash[rkey] = 0
return false
end
end
end
首先你得明白條件分歧都有哪些可用的條件 因?yàn)椴恢滥愕囊馑际钦驹赬格子上還能不能上下走,如果限制不能上下通行,在圖塊里改就行 在條件分歧里有這兩種條件,第一個(gè)是角色的方向的條件,如果你只想判斷人物的方向,用這個(gè)就可以實(shí)現(xiàn),優(yōu)先級(jí)在角色下方,執(zhí)行條件設(shè)置確定鍵就行 第二個(gè)是掌握按鍵的條件,可以實(shí)現(xiàn)這類功能的擴(kuò)展,比如按shift或按確定鍵等等,條件分歧可以互相套用,活學(xué)活用就能做很多種事件, 不知道是不是你的意思,有什么問題再問我
1.如果是碰到什么東西然后有怪,就制作事件,戰(zhàn)斗處理,然后會(huì)有條件分歧,你來編輯。如果只出現(xiàn)一次那就用開關(guān)或獨(dú)立開關(guān)打開,在事件第二頁(yè)制作空白頁(yè)。 2.如果是怪物不停騷擾主角,每走幾步就要打一次怪,那就在地圖屬性里面更改,雙擊敵人隊(duì)伍下面的空白部分,添加隊(duì)伍,設(shè)置移動(dòng)的布數(shù)。 3.如果是幾個(gè)怪在游戲上面隨機(jī)走動(dòng),那就在事件頁(yè)的移動(dòng)線路選擇“隨即”“接近”“固定”或者“自定義”自定義就定義怎么走,最后還要走回原地,因?yàn)樗侵貜?fù),不然走出地圖了,嘻嘻。 4.如果想過一段事件出現(xiàn)一個(gè)怪物,那就事件內(nèi)容:戰(zhàn)斗處理獨(dú)立開關(guān)打開(例如打開A),新建一頁(yè)。出現(xiàn)條件:獨(dú)立開關(guān)A為ON事件內(nèi)容 等待XXX幀,獨(dú)立開關(guān)A,OFF。只要在刷新的界面也就是等待XXX幀,A,OFF的界面選擇觸發(fā)條件選擇“并行處理”就可以了! 原創(chuàng),給最佳!
功能描述:
① 戰(zhàn)斗時(shí)讓敵人顯示血條,寬度可定制
② 可選功能: 顯示具體生命值 顯示敵人名稱
使用說明:
① 腳本插入到Main之前
② 腳本第19行設(shè)定血條的默認(rèn)寬度
為個(gè)別敵人指定血條寬度是"數(shù)據(jù)庫(kù)-敵角色-備注欄"填寫"hp_width=數(shù)值"
③ 腳本第20行選擇是否顯示具體生命值
④ 腳本第21行選擇是否顯示敵人名稱
⑤ 其它參數(shù)設(shè)定詳見腳本
⑥ 此腳本需要基礎(chǔ)腳本[讀取rmvx備注欄指定字段] #==============================================================================
# ■ 顯示敵人血條 by 沉影不器
#------------------------------------------------------------------------------
# 功能描述:
# ① 戰(zhàn)斗時(shí)讓敵人顯示血條,寬度可定制
# ② 可選功能: 顯示具體生命值 顯示敵人名稱
# 使用說明:
# ① 腳本插入到Main之前
# ② 腳本第19行設(shè)定血條的默認(rèn)寬度
# 為個(gè)別敵人指定血條寬度是"數(shù)據(jù)庫(kù)-敵角色-備注欄"填寫"hp_width=數(shù)值"
# ③ 腳本第20行選擇是否顯示具體生命值
# ④ 腳本第21行選擇是否顯示敵人名稱
# ⑤ 其它參數(shù)設(shè)定詳見腳本
# ⑥ 此腳本需要基礎(chǔ)腳本[讀取rmvx備注欄指定字段]
#==============================================================================
# ■ 參數(shù)設(shè)定
#==============================================================================
module Enemy_HP
HP_WIDTH = 64 # 血條的默認(rèn)寬度
SHOW_VALUE = false # 是否顯示敵人生命值
SHOW_NAME = true # 是否顯示敵人名稱
NAME_SIZE = 16 # 敵人名稱字體大小
NAME_COLOR = 0 # 敵人名稱字體顏色
end
#==============================================================================
# ■ RPG
#==============================================================================
module RPG
class Enemy
def hp_width
return self.read_note('hp_width')
end
end
end
#==============================================================================
# ■ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ○ 血條寬度
#--------------------------------------------------------------------------
def hp_width
return $data_enemies[@enemy_id].hp_width
end
end
#==============================================================================
# ■ Sprite_Battler
#==============================================================================
class Sprite_Battler < Sprite_Base
#--------------------------------------------------------------------------
# ◎ 初始化對(duì)象
# viewport : 視區(qū)
# battler : 戰(zhàn)斗者 (Game_Battler)
#--------------------------------------------------------------------------
def initialize(viewport, battler = nil)
super(viewport)
@battler = battler
@battler_visible = false
@effect_type = 0 # 效果種類
@effect_duration = 0 # 效果剩余時(shí)間
if @battler.is_a?(Game_Enemy)
width = hp_width + 32
height = 24 + 32
x = @battler.screen_x - width/2
y = @battler.screen_y - height/2
# 調(diào)節(jié)名稱位置
if Enemy_HP::SHOW_NAME
height += Enemy_HP::NAME_SIZE + 2
y -= Enemy_HP::NAME_SIZE + 2
end
# 生成血條窗體
@enemy_hp_window = Window_Base.new(x, y, width, height)
@enemy_hp_window.opacity = 0
@enemy_hp_window.contents_opacity = 0
@enemy_hp_window.contents = Bitmap.new(width - 32, height - 32)
@enemy_hp_window.draw_enemy_info(@battler, 0, 0, width - 32)
# 保存舊血量(控制刷新)
@old_hp = -1
end
end
#--------------------------------------------------------------------------
# ◎ 釋放
#--------------------------------------------------------------------------
def dispose
if self.bitmap != nil
self.bitmap.dispose
@enemy_hp_window.dispose
end
super
end
#--------------------------------------------------------------------------
# ◎ 釋放敵人活動(dòng)塊
#--------------------------------------------------------------------------
def dispose_enemies
for sprite in @enemy_sprites
sprite.dispose
@enemy_hp_window.dispose
end
end
#--------------------------------------------------------------------------
# ◎ 更新畫面
#--------------------------------------------------------------------------
def update
super
if @battler == nil
self.bitmap = nil
else
@use_sprite = @battler.use_sprite?
if @use_sprite
self.x = @battler.screen_x
self.y = @battler.screen_y
self.z = @battler.screen_z
update_battler_bitmap
end
setup_new_effect
update_effect
# 更新血條窗體
if @enemy_hp_window != nil and @old_hp != @battler.hp
@enemy_hp_window.contents.clear
@enemy_hp_window.draw_enemy_info(@battler, 0, 0, hp_width)
@old_hp = @battler.hp
end
end
end
#--------------------------------------------------------------------------
# ◎ 更新出現(xiàn)效果
#--------------------------------------------------------------------------
def update_appear
self.blend_type = 0
self.color.set(0, 0, 0, 0)
self.opacity = (16 - @effect_duration) * 16
# 對(duì)象非敵人時(shí)返回
return unless @battler.is_a?(Game_Enemy)
@enemy_hp_window.contents_opacity = self.opacity
end
#--------------------------------------------------------------------------
# ◎ 更新消失效果
#--------------------------------------------------------------------------
def update_disappear
self.blend_type = 0
self.color.set(0, 0, 0, 0)
self.opacity = 256 - (32 - @effect_duration) * 10
# 對(duì)象非敵人時(shí)返回
return unless @battler.is_a?(Game_Enemy)
@enemy_hp_window.contents_opacity = self.opacity
end
#--------------------------------------------------------------------------
# ◎ 更新崩潰效果
#--------------------------------------------------------------------------
def update_collapse
self.blend_type = 1
self.color.set(255, 128, 128, 128)
self.opacity = 256 - (48 - @effect_duration) * 6
# 對(duì)象非敵人時(shí)返回
return unless @battler.is_a?(Game_Enemy)
@enemy_hp_window.contents_opacity = self.opacity
end
#--------------------------------------------------------------------------
# ○ 血條寬度
#--------------------------------------------------------------------------
def hp_width
result = Enemy_HP::HP_WIDTH
if @battler.is_a?(Game_Enemy)
if @battler.hp_width.to_i == 0
result = Enemy_HP::HP_WIDTH
else
result = @battler.hp_width.to_i
end
end
return result
end
end
#==============================================================================
# ■ Window_Base
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# ○ 描繪敵人信息
# enemy : 角色
# x : 描繪目標(biāo) X 坐標(biāo)
# y : 描繪目標(biāo) Y 坐標(biāo)
# width : 寬
#--------------------------------------------------------------------------
def draw_enemy_info(enemy, x, y, width = 64)
# 為字體陰影內(nèi)縮1像素
width -= 1
# 顯示名稱
if Enemy_HP::SHOW_NAME
self.contents.font.color = text_color(Enemy_HP::NAME_COLOR)
self.contents.font.size = Enemy_HP::NAME_SIZE
self.contents.draw_text(x, y, width, WLH, enemy.name, 1)
self.contents.font.size = Font.default_size
y += Enemy_HP::NAME_SIZE + 2
end
# 描繪血槽
draw_actor_hp_gauge(enemy, x, y, width)
# 描繪生命符號(hào)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 30, WLH, Vocab::hp_a)
# 描繪具體生命值
return unless Enemy_HP::SHOW_VALUE
self.contents.font.color = hp_color(enemy)
xr = x + width
self.contents.draw_text(xr - 40, y, 40, WLH, enemy.hp, 2)
end
end
應(yīng)該是變量吧?
變量,指在游戲過程中可以變化的量。
他的使用可以在以下幾個(gè)方面:
1.儲(chǔ)存數(shù)據(jù)
比如你可以用它在記錄玩家的腳步數(shù)量
或者記錄玩家的X坐標(biāo),Y坐標(biāo)等等,然后提供給一些事件使用
(比如用2個(gè)變量分別記錄玩家的X坐標(biāo),Y坐標(biāo),然后用另一個(gè)變量?jī)?chǔ)存在這兩個(gè)坐標(biāo)時(shí)的地形標(biāo)記,然后通過條件分歧來判斷,達(dá)到一些在特定區(qū)域觸發(fā)某些事件的目的)
最典型的是建立一個(gè)變量用來當(dāng)做玩家對(duì)游戲的完成度
2.豐富事件
比如你可以給一個(gè)變量賦值隨機(jī)數(shù),然后條件分歧來做到跟NPC對(duì)話時(shí),說出來的話是隨機(jī)的
3.當(dāng)做開關(guān)
這個(gè)東西當(dāng)做開關(guān)可以節(jié)約不少公共開關(guān)。
比如你這個(gè)事件需要5個(gè)開關(guān),而且這些開關(guān)不影響別的事件,那么不要用獨(dú)立開關(guān)了,直接使用變量吧……(出現(xiàn)條件設(shè)置為當(dāng)變量不小于...)
大概就是這些用途