赞 | 1 |
VIP | 0 |
好人卡 | 0 |
积分 | 19 |
经验 | 0 |
最后登录 | 2020-11-8 |
在线时间 | 157 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 1883
- 在线时间
- 157 小时
- 注册时间
- 2016-1-29
- 帖子
- 267
|
4楼
楼主 |
发表于 2018-11-27 07:58:38
|
只看该作者
#------------------------------------------------------------------------------#
# 新任务
#------------------------------------------------------------------------------#
# 适用: RPGMAKER VX ACE
# 版本: 1.0
# 作者:66RPG的tan12345
#-------------------------------------------------------------------------------
# 自己写的任务系统
# 使用方法:将脚本插入至main以上
# 呼出时,请调用:
# SceneManager.call(Scene_Tan_Task)可查看任务情况
# SceneManager.call(Scene_Tan_Task2)任务工会接取任务完成任务用
#-------------------------------------------------------------------------------
module Tan_task
#任务内容描述是否自己描述,true自己描述,false使用默认描述
Tan_task_description_type = false
#公会面板显示的可接任务列表,具体使用可参考任务工会呼出事件
Tan_task_list2 = []
#公会面板显示的工会名,具体使用可参考任务工会呼出事件
Tan_task_text = ""
#任务列表
Tan_task_list = []
#任务格式设定如下:
#Tan_task_list[id] = ["任务名","任务描述",[任务奖励数组],[任务接取条件数组],[任务完成条件数组],是否可重复接取标志]
#---任务描述
#描述会自动换行
#使用\\n可描述第i号角色名,使用\\p可描述第i号队员名
#使用\\j可描述第i号职业名,使用\\s可描述第i号技能名
#使用\\t可描述第i号物品名,使用\\w可描述第i号武器名
#使用\\a可描述第i号防具名,使用\\m可描述第i号地图名
#使用\\v可描述第i号变量值,使用\\e可描述第i号敌人名,
#使用\\q可描述第i号任务名
#使用\\c可将字体改为第i号颜色,使用\\+字体加粗,使用\\-字体斜体
#使用\\i绘制i号图标,使用\\{字体加大,使用\\}字体变小,使用\\n换行
#---任务奖励
#第1位代表奖励类型,0金钱,1武器,2防具,3物品,5经验值,9其他(例如[9,0,"$game_variables[变量id] += 7"])
#第2位代表奖励的id,如果没有id,则统一0(金钱、经验值、其他都是没有id的)
#第3位代表奖励数值。
#例如:[0,0,100]金钱100,[1,99,2]99号武器2把,[5,0,1000]经验值1000(不显示升级),[5,1,1000]经验值1000(显示升级)
#例如:[2,3,1]3号防具1个,[3,5,7]5号物品7个,[9,0,"$game_party.add_actor(33)"]33号人物入队
#如果没有奖励,则[]
#---任务接取条件
#第1位代表条件类型,l领队等级,i持有物品,s开关打开,v变量值,q前置任务,g金钱
#第2位代表条件类型的id,如果没有id,则统一0(领队等级、前置任务、金钱是没有id的)
#第3位代表条件数值。
#例如:["l",0,10]领队要求10级,["i",6,3]持有3个6号物品,["s",7,true]7号开关打开
#例如:["v",5,10]5号变量等于10,["g",0,3]持有3金钱,["q",0,3]完成3号任务
#如果没有条件,则[]
#---任务完成条件
#第1位代表条件类型,l领队等级,i持有物品,s开关打开,v变量值,q前置任务,g金钱,e杀敌数
#第2位代表条件类型的id,如果没有id,则统一0(领队等级、前置任务、金钱是没有id的)
#第3位代表条件数值。
#例如:["l",0,10]领队要求10级,["i",6,3]持有3个6号物品,["s",7,true]7号开关打开
#例如:["v",5,10]5号变量等于10,["g",0,3]持有3金钱,["q",0,3]完成3号任务,["e",7,10]杀死10个7号敌人
#如果没有条件,则[]
#该任务完成后是否可重复接取,0不可重复,1可重复
Tan_task_list[1] = [
"任务001",
"寻找玉镯--老大娘说家传玉镯被南海龙王抢去了,希望能帮她找回玉镯!",
[[0,0,500],[5,0,400],[9,"声望值10点","$game_variables[6] += 10"]],
[],
[["s",105,true]],
0
]
Tan_task_list[2] = [
"任务002",
"小女孩的要求--小女孩想制作鱼皮衣,希望你能帮助她收集10张鱼皮!",
[[0,0,400],[5,0,300],[9,"声望值5点","$game_variables[6] += 5"]],
[],
[["i",170,10]],
0
]
Tan_task_list[3] = [
"任务003",
"帮药店采药--药店急需一批海胆入药,想请求采集10只海胆,村外海胆怪身上会有!",
[[0,0,300],[5,0,200],[9,"声望值1点","$game_variables[6] += 5"]],
[],
[["i",171,10]],
0
]
Tan_task_list[4] = [
"任务004",
"商人的求助--帮助捕鱼村的商人收集10个星螺草和10个章鱼触角!",
[[0,0,500],[5,0,400],[9,"声望值10点","$game_variables[6] += 10"]],
[],
[["i",172,10],["i",174,10]],
0
]
Tan_task_list[5] = [
"任务005",
"武器店老板的请求--武器店老板需要一批天龙须制作武器,帮她收集15个天龙须!",
[[0,0,800],[5,0,600],[9,"声望值10点","$game_variables[6] += 10"]],
[],
[["i",173,15]],
0
]
Tan_task_list[6] = [
"任务006",
"除去村外的怪物--村外怪物聚集,帮小女孩杀死5只哈姆!",
[[0,0,500],[5,0,500],[2,149,1],[9,"声望值10点","$game_variables[6] += 10"]],
[],
[["s",10,true]],
0
]
Tan_task_list[7] = [
"任务007",
"帮掌柜收集材料--掌柜缺少制作装备的材料,帮忙收集10个蓝颜角和10个白猿毛!",
[[0,0,1000],[5,0,800],[2,80,1],[9,"声望值10点","$game_variables[6] += 10"]],
[],
[["i",161,10],["i",162,10]],
0
]
Tan_task_list[8] = [
"任务008",
"小女孩的请求--帮小女孩找回她的竖琴!",
[[0,0,800],[5,0,700],[9,"声望值10点","$game_variables[6] += 10"]],
[],
[["s",289,true]],
0
]
Tan_task_list[9] = [
"任务009",
"救出使臣女儿--使臣女儿在御花园被陛下带走了,现在不知道关押何处,使臣请求帮忙找回女儿!",
[[0,0,800],[5,0,700],[9,"声望值10点","$game_variables[6] += 10"]],
[],
[["s",288,true]],
0
]
Tan_task_list[10] = [
"任务010",
"击杀大盗张良--通缉榜任务,缉拿大盗张良",
[[0,0,1500],[5,0,500],[9,"声望值10点","$game_variables[6] += 10"]],
[],
[["s",291,true]],
0
]
Tan_task_list[11] = [
"任务011",
"帮方丈调查魔王城--相国寺镇山兽被黑暗魔力所控制,方丈命我前去调查是否魔王城出现异样",
[[0,0,2000],[5,0,1000],[2,151,1],[9,"声望值20点","$game_variables[6] += 20"]],
[],
[["s",293,true]],
0
]
Tan_task_list[12] = [
"任务012",
"杀怪任务--杀死5只蘑菇怪",
[[0,0,1500],[5,0,500],[9,"声望值10点","$game_variables[6] += 10"]],
[],
[["v",28,5]],
0
]
end
class Game_Party < Game_Unit
attr_reader :tan_task_state #任务状态数组
attr_accessor :tan_task_enemy_kill_number #记录杀敌数
#--------------------------------------------------------------------------
# ● 初始化对象(alias重写)
#--------------------------------------------------------------------------
alias tan_task_game_party_init initialize
def initialize
tan_task_game_party_init
@tan_task_state = [0] * Tan_task::Tan_task_list.size
@tan_task_enemy_kill_number = {}
end
#--------------------------------------------------------------------------
# ● 判定任务是否可接取
#--------------------------------------------------------------------------
def can_accept_the_tan_task?(id)
return false if @tan_task_state[id] != 0
return true if Tan_task::Tan_task_list[id][3].size == 0
re = 0
Tan_task::Tan_task_list[id][3].each {|q|
case q[0]
when "l"#等级条件
re += 1 if leader.level <= q[2].to_i
when "i"#持有物品
re += 1 if item_number($data_items[q[1].to_i]) <= q[2].to_i
when "g"#金钱
re += 1 if gold <= q[2].to_i
when "q"#前置任务
re += 1 if @tan_task_state[q[2].to_i] != 2
when "s"#开关状态
re += 1 if $game_switches[q[1].to_i] != q[2]
when "v"#变量值是否等于指定值
re += 1 if $game_variables[q[1].to_i].to_s != q[2].to_s
end
}
return false if re != 0
return true
end
#--------------------------------------------------------------------------
# ● 接取任务
#--------------------------------------------------------------------------
def accept_the_tan_task(id)
@tan_task_state[id] = 1
Tan_task::Tan_task_list[id][4].each {|q|
case q[0]
when "e"#杀敌数
t = id.to_s + "_" + q[1].to_s
@tan_task_enemy_kill_number[t] = [q[1].to_i,0]
end
}
end
#--------------------------------------------------------------------------
# ● 完成任务
#--------------------------------------------------------------------------
def finish_the_tan_task(id)
@tan_task_state[id] = 2
Tan_task::Tan_task_list[id][4].each {|q|
case q[0]
when "e"#杀敌数
t = id.to_s + "_" + q[1].to_s
@tan_task_enemy_kill_number.delete(t)
end
}
Tan_task::Tan_task_list[id][2].each {|q|
case q[0]
when 0#奖励金钱
gain_gold(q[2].to_i)
when 1#奖励武器
gain_item($data_weapons[q[1].to_i], q[2].to_i)
when 2#奖励防具
gain_item($data_armors[q[1].to_i], q[2].to_i)
when 3#奖励物品
gain_item($data_items[q[1].to_i], q[2].to_i)
when 5#奖励经验值
members.each {|actor| actor.change_exp(actor.exp + q[2].to_i, q[1].to_i == 1)}
when 9#其他
eval(q[2])
end
}
@tan_task_state[id] = 0 if Tan_task::Tan_task_list[id][5] == 1
end
#--------------------------------------------------------------------------
# ● 判定任务是否可交付
#--------------------------------------------------------------------------
def can_finish_the_tan_task?(id)
return false if @tan_task_state[id] != 1
return true if Tan_task::Tan_task_list[id][4].size == 0
re = 0
Tan_task::Tan_task_list[id][4].each {|q|
case q[0]
when "l"#等级条件
re += 1 if leader.level <= q[2].to_i
when "i"#持有物品
re += 1 if item_number($data_items[q[1].to_i]) <= q[2].to_i
when "g"#金钱
re += 1 if gold <= q[2].to_i
when "q"#前置任务
re += 1 if @tan_task_state[q[2].to_i] != 2
when "s"#开关状态
re += 1 if $game_switches[q[1].to_i] != q[2]
when "v"#变量值是否等于指定值
re += 1 if $game_variables[q[1].to_i].to_s != q[2].to_s
when "e"#指定杀敌数
t = id.to_s + "_" + q[1].to_s
re += 1 if @tan_task_enemy_kill_number[t][1] < q[2].to_i
end
}
return false if re != 0
return true
end
end
#记录杀敌数
class Game_Troop < Game_Unit
#--------------------------------------------------------------------------
# ● 计算杀敌数
#--------------------------------------------------------------------------
def tan_task_kill_number
dead_members.each {|enemy|
$game_party.tan_task_enemy_kill_number.each_value{|knum| knum[1] += 1 if knum[0].to_i == enemy.enemy_id}
}
end
#--------------------------------------------------------------------------
# ● 生成物品数组(alias重写),将计算杀敌数的方法放到这里,在掉落物里计算杀敌数
#--------------------------------------------------------------------------
alias tan_task_game_troop_make_drop_items make_drop_items
def make_drop_items
tan_task_kill_number
return tan_task_game_troop_make_drop_items
end
end |
|