Project1
标题:
請求幫忙修改『多功能限時腳本』
[打印本页]
作者:
s20810
时间:
2014-5-11 05:40
标题:
請求幫忙修改『多功能限時腳本』
請求大大幫忙修改讓以下腳本
$game_party.reckon_time(0, 持續秒數, [開關編號])內的[開關編號]可以使用事件的獨立開關A.B.C...等等
module Sword
#=======================================
#★ 魔劍工舖 - 多功能限時效果 1.00
# 轉貼腳本請著名出處:http://blog.yam.com/a870053jjkj/
# 如果採用在遊戲中,看你高興是否顯示腳本出處,但嚴禁說是自己寫的腳本!!
#=======================================
#● 使用者自定設置
=begin
========================================
● 設置方法
設置限時效果:$game_party.reckon_time(效果編號, 持續秒數, 參數)
判斷限時效果:$game_party.reckon_time?(效果編號)
解除限時效果:$game_party.relief_reckon_time(效果編號)
========================================
● 限時效果列表(效果編號.效果名稱:參數)「*」符號表示可不加
0.開關變更:[開關編號](不同的開關視為不同的限時效果,所以可重複使用)
1.經驗加乘:[百分比, 戰鬥以外是否也加乘*](將 * 參數移除表示OFF)
2.金錢加乘:[百分比, 戰鬥以外是否也加乘*](將 * 參數移除表示OFF)
3.移動速度:[變更移動速度, 還原移動速度*](將 * 參數移除表示目前移動速度)
4.遇敵減少:[不遇敵率, 減少遇敵步數*](將 * 參數移除表示恢復該地圖遇敵步數)
5.遇敵增加:[遇敵率]
========================================
詳細設置說明請參考:http://blog.yam.com/a870053jjkj/article/27027561
=end
$Sword ? $Sword[39] = true : $Sword = {39=>true} # 腳本使用標誌
$Sword_F12_Error = {39=>false} unless $Sword_F12_Error # F12除錯標誌
($Sword_VX = false ; RPG::Weather rescue $Sword_VX = true) if $Sword_VX == nil
Sword39_Size = 1..5
end
#=======================================
#□ 進行有關全體圖像處理的模塊
class << Graphics
#-------------------------------------------------------------
#● 更新畫面
alias sword39_update update unless $Sword_F12_Error[39]
def update
if $game_party
Sword::Sword39_Size.each{|i| next if $game_party.reckon_times[i][0] == 0
$game_party.relief_reckon_time(i) if Graphics.frame_count / Graphics.frame_rate >
$game_party.reckon_times[i][0]}
$game_party.reckon_times[0].each{|a, b| $game_party.relief_reckon_time(0, a) if
Graphics.frame_count / Graphics.frame_rate > b}
end
sword39_update
end
end
#=======================================
#■ 處理同伴的類別
class Game_Party
attr_accessor :reckon_times # 計時秒數與資料
attr_accessor :steps_record # 步數增加記錄標誌
#-------------------------------------------------------------
#● 初始化物件
alias sword39_initialize initialize
def initialize
sword39_initialize ; @reckon_times = {0=>{}}
Sword::Sword39_Size.each{|i| @reckon_times[i] = [0, []]}
end
#-------------------------------------------------------------
#● 增加金錢 (減少)
alias sword39_gain_gold gain_gold
def gain_gold(n)
#○ 金錢加乘(實際增加的處理)
a = $Sword_VX ? ((not $game_temp.in_battle) and $game_party.reckon_times[2][2]) :
($game_temp.in_battle or $game_party.reckon_times[2][2])
n = (n / 100.0 * $game_party.reckon_times[2][1]).to_i if reckon_time?(2) and a
sword39_gain_gold(n)
end
#-------------------------------------------------------------
#● 增加步數
alias sword39_increase_steps increase_steps
def increase_steps ; @steps_record = true ; sword39_increase_steps ; end
#-------------------------------------------------------------
#● 設置限時效果的方法
def reckon_time(id, time, v)
case id # 效果編號分歧(立即觸發效果用)
when 0 #○ 開關變更(設為ON)
@reckon_times[0][v[0]] = Graphics.frame_count / Graphics.frame_rate + time
$game_switches[v[0]] = true ; $game_map.need_refresh = true ; return
when 3 #○ 移動速度(修改速度)
v[1] = $game_player.move_speed unless v[1] # 記憶移動速度
$game_player.move_speed = v[0] # 設置新的移動速度
end
@reckon_times[id] = [Graphics.frame_count / Graphics.frame_rate + time] + v
end
#-------------------------------------------------------------
#● 判斷限時效果的方法
def reckon_time?(id, v = 0)
return (not $game_party.reckon_times[0][v].nil?) if id == 0 #○ 開關變更(判斷開關)
return $game_party.reckon_times[id][0] > 0
end
#-------------------------------------------------------------
#● 解除限時效果的方法
def relief_reckon_time(id, v = 0)
case id # 效果編號分歧(立即解除效果用)
when 0 #○ 開關變更(設為OFF)
@reckon_times[0].delete(v)
$game_switches[v] = false ; $game_map.need_refresh = true ; return
when 3 #○ 移動速度(還原速度)
$game_player.move_speed = $game_party.reckon_times[id][2]
end
$game_party.reckon_times[id] = [0, []]
end
end
#=======================================
#■ 處理角色的類別
class Game_Actor
if $Sword_VX # 重定義VX的方法
#-----------------------------------------------------------
#● 獲取經驗(獲取雙倍經驗值用)〈VX〉
alias sword39_gain_exp gain_exp
def gain_exp(exp, show)
#○ 經驗加乘(實際增加的處理)
(exp = (exp / 100.0 * $game_party.reckon_times[1][1]).to_i) if
$game_party.reckon_time?(1) and
(not $game_temp.in_battle) and $game_party.reckon_times[1][2]
sword39_gain_exp(exp, show)
end
else # 重定義XP的方法
#-----------------------------------------------------------
#● 變更 EXP〈XP〉
alias sword39_exp= exp=
def exp=(exp)
#○ 經驗加乘(實際增加的處理)
(exp = ((exp - @exp) / 100.0 * $game_party.reckon_times[1][1]).to_i) if
$game_party.reckon_time?(1) and
($game_temp.in_battle or $game_party.reckon_times[1][2])
self.sword39_exp = exp
end
end
end
#=======================================
#■ 處理角色的類別
class Game_Character
attr_accessor :move_speed # 地圖移動速度
end
#=======================================
#■ 處理主角的類別
class Game_Player < Game_Character
#-------------------------------------------------------------
#● 獲取遇敵計數
alias sword39_encounter_count encounter_count
def encounter_count
#○ 遇敵減少
if $game_party.reckon_time?(4) and @encounter_count <= 1 and $game_party.steps_record
if $game_party.reckon_times[4][1] > rand(100)
@encounter_count += $game_party.reckon_times[4][2] ?
$game_party.reckon_times[4][2] : $game_map.encounter_step
$game_party.steps_record = false ; return @encounter_count
end ; end
#○ 遇敵增加
if $game_party.reckon_time?(5) and $game_party.steps_record
if $game_party.reckon_times[5][1] > rand(100)
@encounter_count = 0
$game_party.steps_record = false ; return @encounter_count
end ; end
$game_party.steps_record = false ; sword39_encounter_count
end
end
#=======================================
#■ 處理敵人隊伍和戰鬥相關資料的類
class Game_Troop
if $Sword_VX
#-----------------------------------------------------------
#● 計算經驗值總數
alias sword39_exp_total exp_total
def exp_total
if $game_party.reckon_time?(1)
return (sword39_exp_total / 100.0 * $game_party.reckon_times[1][1]).to_i
else ; return sword39_exp_total
end
end
#-----------------------------------------------------------
#● 計算金錢總數
alias sword39_gold_total gold_total
def gold_total
if $game_party.reckon_time?(2)
return (sword39_gold_total / 100.0 * $game_party.reckon_times[2][1]).to_i
else ; return sword39_gold_total
end
end
end
end
#=======================================
#■ 戰鬥結束時、顯示獲得的 EXP 及金錢、寶物的視窗
class Window_BattleResult < Window_Base
#-------------------------------------------------------------
#● 更新內容
alias sword39_initialize initialize
def initialize(exp, gold, treasures)
exp = (exp / 100.0 * $game_party.reckon_times[1][1]).to_i if
$game_party.reckon_time?(1) #○ 經驗加乘(戰鬥結束顯示數值的處理)
gold = (gold / 100.0 * $game_party.reckon_times[2][1]).to_i if
$game_party.reckon_time?(2) #○ 金錢加乘(戰鬥結束顯示數值的處理)
sword39_initialize(exp, gold, treasures)
end
end
$Sword_F12_Error[39] = true # F12除錯標誌
复制代码
作者:
丿梁丶小柒
时间:
2014-5-11 18:29
没有这个技能,或者是我没听明白。
LZ有那么好用的开关不用一定要用独立开关?
作者:
s20810
时间:
2014-5-12 02:51
丿梁丶小柒 发表于 2014-5-11 18:29
没有这个技能,或者是我没听明白。
LZ有那么好用的开关不用一定要用独立开关? ...
其實可以多設定幾個開關就好,只是不同事件若能直接使用獨立開關會方便很多
會有這個需求是因為做明雷遇敵的戰鬥,一般事件若是使用並行那麼與角色在不同地圖內的事件就不會執行
所以需要這個腳本的功能,如果能使用獨立開關,就不用建立那麼多的開關囉@@"
不然一個場景,20張地圖每張地圖又有兩個明雷敵人,等於要做上40個開關才行="=
可以的話就希望有能力的人幫幫忙囉 呵呵...因為腳本甚麼的 真的看不懂...- -
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1