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

Project1

 找回密码
 注册会员
搜索

自己制作的VA脚本---任务+地图提示 新版发布~~

查看数: 6485 | 评论数: 9 | 收藏 10
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2012-3-4 20:06

正文摘要:

本帖最后由 zhangchi5 于 2012-3-18 19:35 编辑 新版发布啦!!! 神奇呀神奇~神奇呀神奇~神奇呀神奇~神奇呀神奇~…… 任务系统 for VA 添加后 以前的存档都不能用。。。要新开存档 By SkyZH 使用方法: ...

回复

zhangchi5 发表于 2012-10-5 11:53:48
千城落水千城梦 发表于 2012-7-21 18:12
@zhangchi5你不介意把你QQ给我吧!

高压力学生族。。。不解释~


‘‘──zhangchi5于2012-10-5 11:54补充以下内容:

有可能你的任务编号一样。。。
’’
千城落水千城梦 发表于 2012-7-21 18:12:45
@zhangchi5你不介意把你QQ给我吧!
zhangchi5 发表于 2012-7-21 17:24:33
千城落水千城梦 发表于 2012-7-19 04:57
为什么我接两个任务却只显示一个?

有Sample么。。。我很久不在线的说。。。
千城落水千城梦 发表于 2012-7-19 04:57:32
zhangchi5 发表于 2012-3-17 20:21
‘‘──zhangchi5于2012-3-17 20:21补充以下内容

问题已解决~~

为什么我接两个任务却只显示一个?


‘‘──千城落水千城梦于2012-7-19 04:57补充以下内容:

[@]zhangchi5[/@]为什么我接两个任务却只显示一个?
’’
zhangchi5 发表于 2012-3-17 20:21:08
本帖最后由 zhangchi5 于 2012-3-17 20:23 编辑

‘‘──zhangchi5于2012-3-17 20:21补充以下内容

问题已解决~~
请在Window_MissionShow做修改
修改在本帖6楼~~
’’
  1. #==============================================================================
  2. # ■ Window_MissionShow
  3. #------------------------------------------------------------------------------
  4. #  显示任务信息。 By SkyZH
  5. #==============================================================================

  6. class Window_MissionShow < Window_Selectable
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #--------------------------------------------------------------------------
  10.   def initialize(x, y)
  11.     super(x, y, window_width, Graphics.height)
  12.     self.openness = 0
  13.     open
  14.   end
  15.   
  16.   def setNumber(numbers)
  17.     @Mnumber=numbers
  18.     refresh
  19.   end
  20.   
  21.   #--------------------------------------------------------------------------
  22.   # ● 获取窗口的宽度
  23.   #--------------------------------------------------------------------------
  24.   def window_width
  25.     return Graphics.width
  26.   end
  27.   
  28.   def draw_title(text , line, size ,dwhere ,color)
  29.     self.contents.font.color=color
  30.     self.contents.font.size=size
  31.    
  32.     draw_text(4, 0 , window_width-40, fitting_height(line+1), text ,dwhere)
  33.     self.contents.font.color=normal_color
  34.     self.contents.font.size=Font.default_size
  35.   end  
  36.   #--------------------------------------------------------------------------
  37.   # ● 刷新
  38.   #--------------------------------------------------------------------------
  39.   def refresh
  40.     contents.clear
  41.     @texts= $game_missions.mission(@Mnumber).getTitle
  42.     draw_title(@texts,0,48,1,Color.new(255,100,100))
  43.     draw_title("任务介绍",4,22,0,Color.new(100,255,255))
  44.     draw_title($game_missions.mission(@Mnumber).getText,6,18,0,Color.new(255,255,255))
  45.     draw_title("任务奖励/重要信息",9,22,0,Color.new(100,255,255))
  46.     draw_title($game_missions.mission(@Mnumber).getImText,11,18,0,Color.new(255,255,255))
  47.     draw_title("领取任务NPC",14,22,0,Color.new(100,255,255))
  48.     draw_title($game_missions.mission(@Mnumber).getNPC1,16,18,0,Color.new(255,255,255))
  49.     draw_title("交接任务NPC",19,22,0,Color.new(100,255,255))
  50.     draw_title($game_missions.mission(@Mnumber).getNPC2,21,18,0,Color.new(255,255,255))
  51.    
  52.   end
  53.   
  54. end
复制代码
‘‘──zhangchi5于2012-3-17 20:23补充以下内容

因为我设定的两个任务长度一样,木有发现问题。。。

求整合!!!!!!!!!!!!!!!!’’
huianda 发表于 2012-3-14 17:27:04
杂兵天下 发表于 2012-3-4 20:51
看了之后,收回刚才说的话,LZ是一个连alias法冲突避免都不知道的可爱的天朝人
class Game_Mission  
  def ...

话说,我用了一下这个脚本,貌似有问题。比如,当我接到的任务有超过1个(至少2个)时,进入任务界面,第一次选择一个任务,说明很正常。但按下ESC关闭任务说明窗口后,不退出任务界面,而是继续选择下一个任务时,之前的文字似乎没有被清除掉,而是重复显示,叠加在一起了。请教一下,是哪个部分的问题?


‘‘──huianda于2012-3-14 21:10补充以下内容

好吧,我不太懂脚本(只有少许VB.net的基础)。在所能理解的语法基础上做了小小调整。
把:
  1. def create_command_window
  2.     @command_window = Window_MissionCommand.new
  3.     @window_missionShow=Window_MissionShow.new(256,0)
  4.     @window_missionShow.hide
  5.     @command_window.set_handler(:returnsc,    method(:scenereturns))
  6.     @command_window.set_handler(:cancel,      method(:scenereturns))
  7.     @window_missionShow.set_handler(:cancel,  method(:missionHide))
  8.     @window_missionShow.set_handler(:ok,      method(:missionHide))
  9.     for i in 0...100
  10.       @r=i
  11.       @t="mission" + i.to_s
  12.       @command_window.set_handler(@t.to_sym, method(:missionShow))
  13.     end
  14.   end
复制代码
里与@window_missionShow有关的生成和句柄的获取,放到后面,变成:
  1. def missionShow(t)
  2.     @window_missionShow=Window_MissionShow.new(256,0)
  3.     @window_missionShow.set_handler(:cancel,  method(:missionHide))
  4.     @window_missionShow.set_handler(:ok,      method(:missionHide))
  5.     @window_missionShow.setNumber(t)
  6.     @command_window.deactivate
  7.     @window_missionShow.activate
  8.     @window_missionShow.openness=0
  9.     @window_missionShow.show
  10.     @window_missionShow.open
  11.   end
复制代码
貌似没有再出现。但不知道这样做是否可行?会不会浪费很多系统资源,或者,造成别的程序逻辑上的问题?
’’


‘‘──huianda于2012-3-15 16:02补充以下内容

多谢哈,找到了。正在研究当中,貌似很不错的。
’’

Miss.jpg (67.22 KB, 下载次数: 17)

文字显示重叠

文字显示重叠

点评

分辨率问题啊  发表于 2012-7-25 09:05
我没仔细研究过此脚本,感觉有更好的脚本。可以去咕狗搜索一下Quest Journal  发表于 2012-3-15 14:26
zhangchi5 发表于 2012-3-11 19:50:30

回复。。。

本帖最后由 zhangchi5 于 2012-3-11 19:52 编辑

你也明白,我只是C++的那个忠实者。。。。。。。。。
作为一个初中生,只能……做啊做,20~30分钟搞定卷子。。。。。。。。。。。。
不过……经过无数调试以及把RMVX的帮助文档和日文RMVA的帮助文档做对比,好不容易搞定了。。。。
很不习惯在一页里写那么多个类。。。

RP大冒险里有一大堆自己干的脚本。。。
这只是其中一个。。。。。。。。。。。


另外,
“减少冲突,优化程序外观,去除奇怪的地图提示功能后的程序。”
地图提示就是说明这个场景啦!!!
比如说,在游戏初始场景里说明游戏操作方式。
游戏场景里说明游戏操作方式。。。
比如说,在旅馆里可以写计价方式,NPC说明等等。

其实我写C++程序时也是乱七八糟的。。。。。。。。。。


‘‘──zhangchi5于2012-3-11 19:53补充以下内容

真的不习惯RUBY那个重写类啊!!!
竟然可以重复定义!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
’’

点评

初中吗?比我强大这么多……初三啊?  发表于 2012-3-17 20:36
fux2 发表于 2012-3-8 02:12:45
杂兵天下 发表于 2012-3-4 20:51
看了之后,收回刚才说的话,LZ是一个连alias法冲突避免都不知道的可爱的天朝人
class Game_Mission  
  def ...

你也别笑话lz了,alias不考虑reset异常之后的堆栈溢出么?
不然你按几遍f12试试?

点评

F12直接屏蔽掉管它的  发表于 2012-3-8 08:46
杂兵天下 发表于 2012-3-4 20:51:59
本帖最后由 杂兵天下 于 2012-3-5 01:08 编辑

看了之后,收回刚才说的话,LZ是一个连alias法冲突避免都不知道的可爱的天朝人
RUBY 代码复制
  1. class Game_Mission  
  2.   def initialize
  3.     @texts = ""
  4.     @titletext = ""
  5.     @imtext = ""
  6.     @NPC1 = ""
  7.     @NPC2 = ""
  8.     @bool_mission = false
  9.   end
  10.   def setText(text);@texts=text;end
  11.   def setTitle(text);@titletext=text;end
  12.   def setImText(text);@imtext=text;end
  13.   def setNPC(t1, t2);@NPC1=t1;@NPC2=t2;end
  14.   def setStatus(b);@bool_mission=b;end
  15.   def getText;@texts;end
  16.   def getTitle;@titletext;end
  17.   def getImText;@imtext;end
  18.   def getNPC1;@NPC1;end
  19.   def getNPC2;@NPC2;end
  20.   def getStatus;@bool_mission;end
  21.   def clear
  22.     @texts = ""
  23.     @titletext = ""
  24.     @imtext = ""
  25.     @NPC1 = ""
  26.     @NPC2 = ""
  27.     @bool_mission = false
  28.   end
  29. end
  30. class Game_Missions
  31.   def initialize
  32.     @mission_array=Array.new
  33.     for i in 0...100
  34.       @mission_array[i]=Game_Mission.new
  35.     end
  36.   end
  37.   def mission(t);@mission_array[t];end
  38.   def getNoMission
  39.     for i in 99..0
  40.       if @mission_array[i].getStatus==false
  41.         return i
  42.       end
  43.     end
  44.   end
  45.   def clear
  46.     for i in 0...100
  47.       @mission_array[i].clear
  48.     end   
  49.   end
  50.   def serMission(titletext)
  51.     for i in 0...100
  52.       if @mission_array[i].getTitle==titletext && @mission_array[i].getStatus==true then
  53.         return i
  54.       end
  55.     end
  56.     return -1
  57.   end
  58. end
  59. class Window_MissionShow < Window_Selectable
  60.   #--------------------------------------------------------------------------
  61.   # ● 初始化对像
  62.   #--------------------------------------------------------------------------
  63.   def initialize(x, y)
  64.     super(x, y, window_width, Graphics.height)
  65.     self.openness = 0
  66.     open
  67.   end
  68.   def setNumber(numbers)
  69.     @Mnumber=numbers
  70.     refresh
  71.   end
  72.  
  73.   #--------------------------------------------------------------------------
  74.   # ● 获取窗口的宽度
  75.   #--------------------------------------------------------------------------
  76.   def window_width
  77.     return Graphics.width - 256
  78.   end
  79.  
  80.   def draw_title(text , line, size ,dwhere ,color)
  81.     self.contents.font.color=color
  82.     self.contents.font.size=size
  83.  
  84.     draw_text(4, 0 , window_width-40, fitting_height(line+1), text ,dwhere)
  85.     self.contents.font.color=normal_color
  86.     self.contents.font.size=Font.default_size
  87.   end  
  88.   #--------------------------------------------------------------------------
  89.   # ● 刷新
  90.   #--------------------------------------------------------------------------
  91.   def refresh
  92.     @texts= $game_missions.mission(@Mnumber).getTitle
  93.     draw_title(@texts,0,48,1,Color.new(255,100,100))
  94.     draw_title("任务介绍",4,22,0,Color.new(100,255,255))
  95.     draw_title($game_missions.mission(@Mnumber).getText,6,18,0,Color.new(255,255,255))
  96.     draw_title("任务奖励/重要信息",9,22,0,Color.new(100,255,255))
  97.     draw_title($game_missions.mission(@Mnumber).getImText,11,18,0,Color.new(255,255,255))
  98.     draw_title("领取任务NPC",14,22,0,Color.new(100,255,255))
  99.     draw_title($game_missions.mission(@Mnumber).getNPC1,16,18,0,Color.new(255,255,255))
  100.     draw_title("交接任务NPC",19,22,0,Color.new(100,255,255))
  101.     draw_title($game_missions.mission(@Mnumber).getNPC2,21,18,0,Color.new(255,255,255))
  102.  
  103.   end
  104.  
  105. end
  106. #encoding:utf-8
  107. class Window_MissionCommand < Window_Command
  108.   #--------------------------------------------------------------------------
  109.   # ● 初始化对象
  110.   #--------------------------------------------------------------------------
  111.   def initialize
  112.     super(0, 0)
  113.   end
  114.   #--------------------------------------------------------------------------
  115.   # ● 获取窗口的宽度
  116.   #--------------------------------------------------------------------------
  117.   def window_width
  118.     return 256
  119.   end
  120.   #--------------------------------------------------------------------------
  121.   # ● 获取显示行数
  122.   #--------------------------------------------------------------------------
  123.   def visible_line_number
  124.     10
  125.   end
  126.   #--------------------------------------------------------------------------
  127.   # ● 生成指令列表
  128.   #--------------------------------------------------------------------------
  129.   def make_command_list
  130.     add_original_commands
  131.     add_return_command
  132.   end
  133.   #--------------------------------------------------------------------------
  134.   # ● 独自添加指令用
  135.   #--------------------------------------------------------------------------
  136.   def add_original_commands
  137.     for i in 0...100
  138.       @r=i+1
  139.       @t="mission" + i.to_s
  140.       if $game_missions.mission(i).getStatus==true
  141.         add_command($game_missions.mission(i).getTitle, @t.to_sym)
  142.       end
  143.     end
  144.   end
  145.   #--------------------------------------------------------------------------
  146.   # ● 结束指令用
  147.   #--------------------------------------------------------------------------
  148.   def add_return_command
  149.     add_command("返回", :returnsc)
  150.   end
  151.   #--------------------------------------------------------------------------
  152.   # ● 按下确定键时的处理
  153.   #--------------------------------------------------------------------------
  154.   def process_ok
  155.     super
  156.   end
  157.   def call_handler(symbol)
  158.     @handler[symbol].call(symbol.id2name[7,symbol.id2name.size-7].to_i) if handle?(symbol)
  159.   end
  160. end
  161. #encoding:utf-8
  162. class Scene_Mission < Scene_MenuBase
  163.   def start
  164.     super
  165.     create_command_window
  166.   end
  167.   def create_command_window
  168.     @command_window = Window_MissionCommand.new
  169.     @window_missionShow=Window_MissionShow.new(256,0)
  170.     @window_missionShow.hide
  171.     @command_window.set_handler(:returnsc,    method(:scenereturns))
  172.     @command_window.set_handler(:cancel,      method(:scenereturns))
  173.     @window_missionShow.set_handler(:cancel,  method(:missionHide))
  174.     @window_missionShow.set_handler(:ok,      method(:missionHide))
  175.     for i in 0...100
  176.       @r=i
  177.       @t="mission" + i.to_s
  178.       @command_window.set_handler(@t.to_sym, method(:missionShow))
  179.     end
  180.   end
  181.   def scenereturns( t)
  182.     SceneManager.return
  183.   end
  184.   def missionShow( t)
  185.     @window_missionShow.setNumber(t)
  186.     @command_window.deactivate
  187.     @window_missionShow.activate
  188.     @window_missionShow.openness=0
  189.     @window_missionShow.show
  190.     @window_missionShow.open
  191.   end
  192.   def missionHide
  193.     @command_window.activate
  194.     @window_missionShow.deactivate
  195.     @window_missionShow.close
  196.     update until @window_missionShow.close?
  197.     @window_missionShow.hide
  198.   end
  199. end
  200. #encoding:utf-8
  201. module DataManager
  202.   class <<self
  203.     alias make_save_contents_task_zabing make_save_contents
  204.     alias create_game_objects_task_zabing create_game_objects
  205.     alias extract_save_contents_task_zabing extract_save_contents
  206.   end
  207.   def self.create_game_objects
  208.     create_game_objects_task_zabing
  209.     $game_missions = Game_Missions.new
  210.   end
  211.   def make_save_contents
  212.     contents = make_save_contents_task_zabing
  213.     contents[:missions] = $game_missions
  214.     contents
  215.   end
  216.   def self.extract_save_contents(contents)
  217.     extract_save_contents_task_zabing(contents)
  218.     $game_missions = contents[:missions]
  219.   end
  220. end
  221. class Window_MenuCommand < Window_Command
  222.   alias add_original_commands_task_zabing add_original_commands
  223.   def add_original_commands
  224.     add_original_commands_task_zabing
  225.     add_command("任务", :maphint)
  226.   end
  227. end
  228. class Scene_Menu < Scene_MenuBase
  229.   alias create_command_window_task_zabing create_command_window
  230.   def create_command_window
  231.     create_command_window_task_zabing
  232.     @command_window.set_handler(:maphint,   method(:command_maphint))
  233.   end
  234.   def command_maphint
  235.     SceneManager.call(Scene_Mission)
  236.   end
  237. end

减少冲突,优化程序外观,去除奇怪的地图提示功能后的程序。
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-15 20:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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