设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 5570|回复: 27
打印 上一主题 下一主题

[已经解决] 想做个打怪任务 求个打怪任务能在任务栏计数的脚本!

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1883
在线时间
157 小时
注册时间
2016-1-29
帖子
267
跳转到指定楼层
1
发表于 2018-11-26 23:01:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
500星屑
本帖最后由 lixinglixing022 于 2018-11-28 10:01 编辑

我用了 tan12345的任务脚本  去掉下面最后一栏可以计数,但不能完成任务了, 而且每次计数打怪都是3只一次 ,怎么办 求大神了 !! 或者来个大神 给个打怪能计数的脚本也行!!!
Tan_task::Tan_task_list2 = [6]
Tan_task::Tan_task_text = "除去村外怪物"
SceneManager.call(Scene_Tan_Task2)
$game_party.tan_task_state[6]=1

最佳答案

查看完整内容

调试完了,跟脚本错误没关系,是因为lz的用法不对= = 杀怪之后

Lv5.捕梦者

梦石
10
星屑
39587
在线时间
1920 小时
注册时间
2010-11-14
帖子
3320

R考场第七期纪念奖

2
发表于 2018-11-26 23:01:33 | 只看该作者
本帖最后由 KB.Driver 于 2018-11-28 19:53 编辑

调试完了,跟脚本错误没关系,是因为lz的用法不对= =








杀怪之后




点评

$game_party.accept_the_tan_task(6) #请用这种方法接受任务 就可以杀敌计数 不需要再搞开关  发表于 2018-11-28 19:55
#$game_party.tan_task_state[6]=1 #警告 不要再使用这个写法来接受任务  发表于 2018-11-28 19:54
用头画头像,用脚写脚本
回复

使用道具 举报

Lv5.捕梦者

梦石
10
星屑
39587
在线时间
1920 小时
注册时间
2010-11-14
帖子
3320

R考场第七期纪念奖

3
发表于 2018-11-26 23:37:36 | 只看该作者
有完整代码吗?
最好附上工程,不然别人都理解不了你的需求。
用头画头像,用脚写脚本
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1883
在线时间
157 小时
注册时间
2016-1-29
帖子
267
4
 楼主| 发表于 2018-11-27 07:58:38 | 只看该作者
KB.Driver 发表于 2018-11-26 23:37
有完整代码吗?
最好附上工程,不然别人都理解不了你的需求。

#------------------------------------------------------------------------------#
#  新任务
#------------------------------------------------------------------------------#
#  适用: 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

点评

我在本地运行缺少Scene_Tan_Task和Scene_Tan_Task2,无法打开界面  发表于 2018-11-27 10:23
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1883
在线时间
157 小时
注册时间
2016-1-29
帖子
267
5
 楼主| 发表于 2018-11-27 08:30:19 | 只看该作者
求个好方法的打怪任务 最好是不要在怪物里设置变量的那种 因为做了怪物变量 怪物感觉有稍微卡顿..
回复

使用道具 举报

Lv5.捕梦者

梦石
10
星屑
39587
在线时间
1920 小时
注册时间
2010-11-14
帖子
3320

R考场第七期纪念奖

6
发表于 2018-11-27 10:31:30 | 只看该作者


其实我想说,人家明明内置了杀敌数的判断,你还弄一个开关……
如果按照脚本功能的话,这样写就行了↓


因为我这里还缺你的Scene部分,所以现在只能这么判断
用头画头像,用脚写脚本
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1883
在线时间
157 小时
注册时间
2016-1-29
帖子
267
7
 楼主| 发表于 2018-11-27 11:57:14 | 只看该作者
KB.Driver 发表于 2018-11-27 10:31
其实我想说,人家明明内置了杀敌数的判断,你还弄一个开关……
如果按照脚本功能的话,这样写就行了↓

大神 不是这个意思啊  我加个开关是因为不加 我接了任务直接可以交 所以加个开关控制下!  如果我再里面设置 e 336 10  进游戏接任务就会出现错误!
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1883
在线时间
157 小时
注册时间
2016-1-29
帖子
267
8
 楼主| 发表于 2018-11-27 12:01:28 | 只看该作者
KB.Driver 发表于 2018-11-27 10:31
其实我想说,人家明明内置了杀敌数的判断,你还弄一个开关……
如果按照脚本功能的话,这样写就行了↓

我再接任务这个NPC这里 如果去掉我打红色的部分 就不会出现错误 ! 而已也能用那个 e 336 10  只是打一只怪在任务栏里面会计数3只  搞不懂!!  求大神帮忙!

QQ图片20181127115235.png (30.56 KB, 下载次数: 50)

QQ图片20181127115235.png

点评

还是那句话……我在本地运行缺少Scene_Tan_Task和Scene_Tan_Task2,无法打开界面,了解不到你的实际情况。给个完整可运行的代码,有工程最好。  发表于 2018-11-27 13:04
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1883
在线时间
157 小时
注册时间
2016-1-29
帖子
267
9
 楼主| 发表于 2018-11-27 16:27:22 | 只看该作者
lixinglixing022 发表于 2018-11-27 12:01
我再接任务这个NPC这里 如果去掉我打红色的部分 就不会出现错误 ! 而已也能用那个 e 336 10  只是打一只 ...

大神 我怎么上传我的工程啊 我大小有400多MB行吗?
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1883
在线时间
157 小时
注册时间
2016-1-29
帖子
267
10
 楼主| 发表于 2018-11-27 16:48:44 | 只看该作者
lixinglixing022 发表于 2018-11-27 12:01
我再接任务这个NPC这里 如果去掉我打红色的部分 就不会出现错误 ! 而已也能用那个 e 336 10  只是打一只 ...

大神 我弄了个百度链接  缩小文件了  你看看  
https://pan.baidu.com/s/1jjr-Ryf23pKc_Zj1hAekqA

点评

好了 我复制了脚本自己开了个工程测试,问题已经找到了。lz你看看解决方案  发表于 2018-11-28 19:56
下载好了,你说的事件在哪里?我自己跑一下看看  发表于 2018-11-28 19:18
你这个链接我怎么打不开……  发表于 2018-11-28 18:14
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-13 14:29

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表