THE NVL Maker

 找回密码
 注册
搜索
查看: 1305|回复: 4

[系统修改] 关于在物品栏目上追加阅读书信脚本

[复制链接]

1

主题

3

帖子

0

精华

游戏开发者

积分
3
发表于 2024-8-29 17:03:17 | 显示全部楼层 |阅读模式
我的想要做的追加功能是,在物品栏中,某些物品(书信)可以点击查看,点击后会出现一段由全屏对话框展示的文字,再点击便会返回物品栏。

因此我个人理解的流程大概为 :
other.ks中的*使用物品标签下,判断点击了书信以后,先消除物品栏,再跳转到包含有书信内容的其他脚本(items.ks),在展示完书信内容后,再跳转回道具栏(other.ks)。

@if exp="f.item[f.选择物品编号].name=='书信'" [locklink]="true"
;模仿返回按钮的清空代码
@locklink
@rclick enabled="false"
@backlay
@tempload bgm="false" se="false" backlay="true"
@trans time="200" method="crossfade"
@wt
;清空结束
@jump target="*1" storage="item.ks"

在item.ks的*1标签下,我按照普通插入对话的模式插入了全屏框,
*1
@scr
测试[lr]
@jump target="*物品返回" storage="main_menu.ks"

在对话完成后,我在main.menu模仿原本的*返回写了一个物品返回,只追加了最后一串跳转回物品栏的代码。
*物品返回
[locklink]
[rclick enabled="false"]
[backlay]
[tempload backlay="false" bgm="false" se="false"]
[trans method="crossfade" time=200]
[wt]

[unlocksnapshot]
@jump target="*start" storage="other.ks"

我在测试时发现,在显示完全屏框文字内容后,再点击虽然会回到物品框,全屏框会漂移在左上方并且文字不会消失。
在道具栏中返回以后,又会进入漂移的对话框,再点击一下,才会回到正常的对话中。
想请问一下如何正确的实现功能,感激不尽
回复

使用道具 举报

16

主题

1065

帖子

0

精华

管理员

Rank: 9Rank: 9Rank: 9

积分
1086
发表于 2024-8-29 17:38:30 | 显示全部楼层
改写了一下范例里的other.ks,以羊毛为例子。
要点:
(1)不使用message0而是使用了messge4,尽量避免动到游戏画面本身。
(2)使用了tempsave的place(默认不写应该是place=0),多个临时存档用于记录不同层的界面,这样可以最简单地处理画面的复原。
(3)这里全部使用了指令所以显得很长,重复使用时可以将显示文字外的功能封装成宏。

  1. ;【例如】假如物品名称是XXX,那么……
  2. [if exp="f.item[f.选择物品编号].name=='羊毛'"]
  3. ;是羊毛的处理
  4. ;--------------------------------------------------------------------
  5. ;保存画面到指定编号临时存档
  6. [tempsave place=1]

  7. ;对当前显示界面进行处理
  8. [backlay]
  9. ;隐藏道具系统相关图层
  10. [layopt layer="14" visible="false" page="back" left=0 top=0]
  11. [layopt layer="15" visible="false" page="back" left=0 top=0]
  12. [layopt layer="16" visible="false" page="back" left=0 top=0]
  13. [layopt layer="17" visible="false" page="back" left=0 top=0]
  14. [layopt layer="message4" visible="false" page="back" left=0 top=0]
  15. ;隐藏原来的对话框
  16. [layopt layer="message0" visible="false" page="back" left=0 top=0]
  17. ;隐藏头像
  18. [freeimage layer=8 page="back"]
  19. ;隐藏系统按钮
  20. [hidesysbutton]
  21. [trans method="crossfade" time=200]
  22. [wt]

  23. ;使用message4定义一个新的全屏对话框
  24. [backlay]
  25. [current layer="message4" page="back"]
  26. ;可以自己定义一些对话框图片什么的,这里是直接读取了scr的数据
  27. [position page="back" layer="message4" visible="true" frame=&"f.config_dia.scr.frame" left=&"f.config_dia.scr.left" top=&"f.config_dia.scr.top" marginl=&"f.config_dia.scr.marginl" marginr=&"f.config_dia.scr.marginr" margint=&"f.config_dia.scr.margint" marginb=&"f.config_dia.scr.marginb"]
  28. [trans method="crossfade" time=500]
  29. [wt]
  30. [current layer="message4" page="fore"]

  31. 在这里显示说明文字。[lr]
  32. 在这里显示说明文字。[lr]
  33. 在这里显示说明文字。[lr]

  34. ;文字消失
  35. [er]

  36. ;从自己定义的位置读取临时存档画面
  37. [tempload place=1]

  38. ;--------------------------------------------------------------------
  39. [elsif exp="f.item[f.选择物品编号].name=='黄金'"]
  40. ;是黄金的处理
复制代码
回复

使用道具 举报

1

主题

3

帖子

0

精华

游戏开发者

积分
3
 楼主| 发表于 2024-8-29 17:54:40 | 显示全部楼层
VariableD 发表于 2024-8-29 17:38
改写了一下范例里的other.ks,以羊毛为例子。
要点:
(1)不使用message0而是使用了messge4,尽量避免动到 ...

成功了实现功能!学到了很多!
感谢D大的解答!
回复

使用道具 举报

1

主题

3

帖子

0

精华

游戏开发者

积分
3
 楼主| 发表于 2024-10-18 17:06:55 | 显示全部楼层
D大你好,我这边已经成功实现了调查物品以后显示详细内容的功能了。

但是在测试中发现一个问题:在调查完书信以后,因为是用的临时读取功能,因此BGM会重新播放。
请问这个问题能否解决呢?

点评

tempload加bgm=false参数即可  发表于 2024-10-20 09:03
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|nvlmaker

GMT+8, 2025-1-21 03:34 , Processed in 0.010987 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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