任务系统脚本.docx
- 文档编号:7556459
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:10
- 大小:17.21KB
任务系统脚本.docx
《任务系统脚本.docx》由会员分享,可在线阅读,更多相关《任务系统脚本.docx(10页珍藏版)》请在冰豆网上搜索。
任务系统脚本
RPGMakerVXAce任务系统脚本
此脚本原作者为韩云溪转载请注明
1.=begin
2.领取任务:
$game_party.get_task(任意数字,任务名称,任务描述)
3.完成任务:
$game_party.finish_task(领取任务时设定的数字)
4.对已有任务追加说明:
$game_party.add_task(任务编号,任务追加描述)
5.
6.如:
7.前面有事件$game_party.get_task(1,"测试","只是测试")
8.
9.此时任务1的说明为
10.
11.>只是测试
12.
13.后面完成任务的脚本就是$game_party.finish_task
(1)
14.
15.追加说明$game_party.add_task(1,"真的只是测试哦")
16.
17.此时任务1的说明为:
18.>只是测试
19.>真的只是测试哦
20.
21.召唤任务界面:
SceneManager.call(Scene_Task)
22.
23.该脚本来自66rpg,发布者:
韩云溪
24.改进:
工藤由纪(论坛ID:
zyyczp)
25.=end
26.
27.#===========================================================
28.#●任务系统
29.#===========================================================
30.classTask
31. attr_reader:
desc
32. attr_reader:
finished
33. definitialize(origin_name,desc)
34. @origin_name=origin_name
35. @desc=desc
36. @finished=false
37. end
38. defname
39. if@finished
40. return@origin_name+"(完成)"
41. else
42. return@origin_name
43. end
44. end
45. defdesc=(desc)
46. @desc=desc
47. end
48.
49. deffinish
50. @finished=true
51. end
52.
53.end
54.
55.classGame_Party 56. aliasold_initinitialize 57. definitialize 58. old_init 59. @tasks={} 60. end 61. defadd_task(i,desc) 62. @tasks[i].desc=@tasks[i].desc+"\n"+desc 63. end 64. defget_task(i,name,desc) 65. @tasks[i]=Task.new(name,desc) 66. end 67. defhave_task? (i) 68. @tasks[i]! =nil 69. end 70. deffinish_task(i) 71. @tasks[i].finishifhave_task? (i) 72. end 73. defunfinished_tasks 74. n=[] 75. foriin@tasks.values 76. nextifi.finished 77. n.push(i) 78. end 79. returnn 80. end 81. deffinished_tasks 82. n=[] 83. foriin@tasks.values 84. nextunlessi.finished 85. n.push(i) 86. end 87. returnn 88. end 89.end 90. 91.classWindow_Task_Type 92. #-------------------------------------------------------------------------- 93. #●オブジェクト初期化 94. #-------------------------------------------------------------------------- 95. definitialize 96. super(0,0) 97. activate 98. end 99. defwindow_width 100. returnGraphics.width 101. end 102. defcol_max 103. return3 104. end 105. #-------------------------------------------------------------------------- 106. #●コマンドリストの作成 107. #-------------------------------------------------------------------------- 108. defmake_command_list 109. add_command("未完成任务", : unfinished_task) 110. add_command("已完成任务",: finished_task) 111. add_command("取消",: cancel) 112. end 113.end 114. 115.classWindow_TaskLeft 116. attr_reader: finished 117. definitialize 118. super(0,48,160,Graphics.height-48) 119. create_contents 120. @finished=false 121. @index=0 122. refresh 123. deactivate 124. end 125. defset_finish(finish) 126. @finished=finish 127. set_item_max 128. end 129. defitem_max 130. return@item_max! =nil? @item_max: 0 131. end 132. defset_item_max 133. if@finished 134. @item_max=$game_party.finished_tasks.size 135. else 136. @item_max=$game_party.unfinished_tasks.size 137. end 138. end 139. 140. defrefresh 141. set_item_max 142. super 143. end 144. #-------------------------------------------------------------------------- 145. #●項目の描画 146. #-------------------------------------------------------------------------- 147. defdraw_item(index) 148. text="" 149. unless@finished 150. if$game_party.unfinished_tasks[index]! =nil 151. text=$game_party.unfinished_tasks[index].name 152. end 153. else 154. if$game_party.finished_tasks[index]! =nil 155. text=$game_party.finished_tasks[index].name 156. end 157. end 158. draw_text(item_rect_for_text(index),text) 159. end 160. 161.end 162. 163.classWindow_TaskRight 164. attr_reader: left_index 165. definitialize 166. super(160,48,Graphics.width-160,Graphics.height-48) 167. create_contents 168. @left_index=0 169. @finished=false 170. refresh 171. end 172. defset_index(i) 173. @left_index=i 174. refresh 175. end 176. defset_finish(i) 177. @finished=i 178. end 179. 180. defrefresh 181. contents.clear 182. draw_desc 183. end 184. defdraw_desc 185. if@finished 186. if$game_party.finished_tasks[@left_index]! =nil 187. draw_text_ex(0,0,$game_party.finished_tasks[@left_index].desc) 188. end 189. else 190. if$game_party.unfinished_tasks[@left_index]! =nil 191. draw_text_ex(0,0,$game_party.unfinished_tasks[@left_index].desc) 192. end 193. end 194. end 195. 196.end 197. 198.classScene_Task 199. defstart 200. super 201. create_task_type_window 202. create_left_window 203. create_right_window 204. end 205. defupdate 206. super 207. if@left_window.active 208. ifInput.trigger? (: B) 209. @left_window.deactivate 210. @task_type_window.activate 211. end 212. ifInput.trigger? (: UP)||Input.trigger? (: DOWN) 213. @right_window.set_finish(@left_window.finished) 214. @right_window.set_index(@left_window.index) 215. end 216. end 217. end 218. 219. defterminate 220. super 221. end 222. defcreate_task_type_window 223. @task_type_window=Window_Task_Type.new 224. @task_type_window.set_handler(: unfinished_task,method(: view_unfinished_task)) 225. @task_type_window.set_handler(: finished_task,method(: view_finished_task)) 226. @task_type_window.set_handler(: cancel,method(: return_scene)) 227. end 228. defcreate_left_window 229. @left_window=Window_TaskLeft.new 230. @left_window.set_finish(false) 231. @left_window.refresh 232. end 233. defcreate_right_window 234. @right_window=Window_TaskRight.new 235. @right_window.refresh 236. end 237. defview_unfinished_task 238. @left_window.set_finish(false) 239. @left_window.refresh 240. @left_window.activate 241. @task_type_window.deactivate 242. @right_window.set_finish(false) 243. @right_window.set_index(@left_window.index) 244. end 245. defview_finished_task 246. @left_window.set_finish(true) 247. @left_window.refresh 248. @left_window.activate 249. @task_type_window.deactivate 250. @right_window.set_finish(true) 251. @right_window.set_index(@left_window.index) 252. end 253. 254.end接下说一下主菜单添加查看任务命令的方法: 255. 256.1、先打开脚本窗口(废话==) 257.2、找到Windows_MenuCommand 258.在 defadd_main_commands下方end之前插入add_command("任务", : task, main_commands_enabled) 3、找到Scene_Menu 在defcreate_command_window下方end之前插入 1. @command_window.set_handler(: task, method(: command_task)) 4、在 1. #-------------------------------------------------------------------------- 2. #●指令“结束游戏” 3. #-------------------------------------------------------------------------- 4. defcommand_game_end 5. SceneManager.call(Scene_End) 6. end 的前面加入 1. #-------------------------------------------------------------------------- 2. #●指令“任务” 3. #-------------------------------------------------------------------------- 4. defcommand_task 5. SceneManager.call(Scene_Task) 6. end 7. OK~~~ 追加: 具体判定某个任务是否完成只需要: $game_party.tasks(编号).finished(完成的情况下返回真,未完成返回假,说白了,就是完成的情况下条件成立)如: $game_party.tasks (1).finished#=>完成时为true,没有完成为false 在条件分歧的情况下,只需要在脚本里面填上这样一行就了。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 任务 系统 脚本