幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 8676|回复: 21

[KR] [求教]如何修改KRKR自帶的文字履歷界面?

[复制链接]

4

主题

22

帖子

123

积分

③业余

积分
123
发表于 2008-2-4 09:39:11 | 显示全部楼层 |阅读模式
KRKR中有個自帶的文字履歷界面
不過那個界面看上去非常寒磣
想要求教一下如何修改它。
比如説給它貼個背景圖片、用圖片按鈕取代系統自帶的"前一頁"、"后一頁"、"返回"的鏈接。

我猜想可能是在system文件夾下面的HistoryLayer文件中修改
不過不知道具體的代碼修改位置和方法

還請知道的大人多多指教
謝謝!
回复

使用道具 举报

36

主题

996

帖子

350万

积分

⑧专业

积分
3507413
发表于 2008-2-4 09:55:50 | 显示全部楼层
修改那个不如自己用kag直接重写一个,先[history enabled=false],然后设定某个按钮call到自己写的履历界面去,履历的文字都记录在kag.historyLayer.data[]里,最近的一句就是kag.historyLayer.data[kag.historyLayer.dataPos-1],显示的时候从这个开始向上算就好
回复 支持 反对

使用道具 举报

4

主题

22

帖子

123

积分

③业余

积分
123
 楼主| 发表于 2008-2-4 10:13:53 | 显示全部楼层
首先非常感謝sarah大的回復與指點。
看來要實現自己設定的界面是非學KAG不可了OTZ
+++++++++++++++++++++++++++++++++++++++++++
不好意思我發現我是把KAG與TJS的概念搞混了
其實我是不清楚怎麽使用kag.historyLayer.data[]
是不是把kag.historyLayer.data[]當作一個變量來使用?
回复 支持 反对

使用道具 举报

122

主题

3954

帖子

24万

积分

超级版主

传说中的Bunny坑神~!

Rank: 8Rank: 8

积分
244543

声命组铜赏

发表于 2008-2-4 11:49:47 | 显示全部楼层
对的...
那是一个数组,然后每个记录一行的对话...=.=
直接用[emb exp="kag.historyLayer.data[kag.historyLayer.dataPos-1]"]就可以显示了...
-2的话就是继续往上...
http://www.nvlmaker.net/
回复 支持 反对

使用道具 举报

4

主题

22

帖子

123

积分

③业余

积分
123
 楼主| 发表于 2008-2-4 14:46:08 | 显示全部楼层
按照二位的建議我做了個殼,
思路是這樣的:
first.ks文件為用於實驗的對話文本
rclick.ks文件為右鍵菜單(提供了跳轉到"對話履歷"的選項)
history.ks文件為顯示對話履歷界面

first.ks代碼如下
  1. ;〓〓〓〓〓〓〓〓〓〓〓〓〓
  2. ;進入系統
  3. ;〓〓〓〓〓〓〓〓〓〓〓〓〓
  4. *start
  5. ;關閉顯示歷史紀錄
  6. [history enabled=false]
  7. ;〓〓〓〓〓〓〓〓〓〓〓〓〓
  8. ;文本試驗
  9. ;〓〓〓〓〓〓〓〓〓〓〓〓〓
  10. *test|
  11. [rclick call=true storage=rclick.ks target=*start enabled=true]
  12. [current layer=message0]
  13. [layopt layer=message0 page=fore visible=true]
  14. *|
  15. [cm]
  16. 【段落1】[r]
  17. 段落1_1[r]
  18. 段落1_2[p]
  19. *|
  20. [cm]
  21. 【段落2】[r]
  22. 段落2[p]
  23. *|
  24. [cm]
  25. 【段落3】[r]
  26. 段落3[p]
  27. *|
  28. [cm]
  29. 【段落4】[r]
  30. 段落4[p]
  31. *|
  32. [cm]
  33. 【段落5】[r]
  34. 段落5[p]
  35. *|
  36. [cm]
  37. 【段落6】[r]
  38. 段落6[p]
  39. *|
  40. [cm]
  41. 【段落7】[r]
  42. 段落7[p]
  43. *|
  44. [cm]
  45. 【段落8】[r]
  46. 段落8[p]
  47. *|
  48. [cm]
  49. 【段落9】[r]
  50. 段落9[p]
  51. [s]
复制代码

rclick.ks代碼如下
  1. ;〓〓〓〓〓〓〓〓〓〓〓〓〓
  2. ;右鍵菜單
  3. ;〓〓〓〓〓〓〓〓〓〓〓〓〓
  4. *start
  5. [rclick jump=true storage=rclick.ks target=*exit enabled=true]
  6. [current layer=message1]
  7. [layopt layer=message0 page=fore visible=false]
  8. [layopt layer=message1 page=fore visible=true]
  9. [er]
  10. [link storage=history.ks]對話履歷[endlink]
  11. [s]
  12. ;〓〓〓〓〓〓〓〓〓〓〓〓〓
  13. ;返回
  14. ;〓〓〓〓〓〓〓〓〓〓〓〓〓
  15. *exit
  16. [layopt layer=message1 page=fore visible=false]
  17. [layopt layer=message0 page=fore visible=true]
  18. [current layer=message0]
  19. [rclick call=true storage=rclick.ks target=*start enabled=true]
  20. [return]
复制代码

history.ks代碼如下
  1. ;〓〓〓〓〓〓〓〓〓〓〓〓〓
  2. ;對話履歷
  3. ;〓〓〓〓〓〓〓〓〓〓〓〓〓
  4. *start
  5. [rclick enabled=false]
  6. [layopt layer=message0 page=fore visible=false]
  7. [layopt layer=message1 page=fore visible=true]
  8. [current layer=message1]
  9. *history
  10. [er]
  11. [emb exp="kag.historyLayer.data[kag.historyLayer.dataPos-5]"][r]
  12. [emb exp="kag.historyLayer.data[kag.historyLayer.dataPos-4]"][r]
  13. [emb exp="kag.historyLayer.data[kag.historyLayer.dataPos-3]"][r]
  14. [emb exp="kag.historyLayer.data[kag.historyLayer.dataPos-2]"][r]
  15. [emb exp="kag.historyLayer.data[kag.historyLayer.dataPos-1]"][r][r]
  16. [link storage=rclick.ks target=*start]返回[endlink]
  17. [s]
复制代码

問題是在運行第一段落、右鍵單擊並選擇了"對話履歷"選項后,
所顯示出來的對話並非是預期的
【段落1】
段落1_1
段落1_2

而是
段落1_2
【段落1】
段落1_2

【段落1】
【段落1】

我想可能是我的*history処的代碼有誤?
還請知道的大人指點
謝謝!
回复 支持 反对

使用道具 举报

36

主题

996

帖子

350万

积分

⑧专业

积分
3507413
发表于 2008-2-4 15:47:25 | 显示全部楼层
因为你用emb显示对话也纪录进history了阿…………kag.historyLayer.dataPos这个值就变动了……
解决方法应该是在显示履历的时候就把history的输出关上,应该是[history output=false]吧……
回复 支持 反对

使用道具 举报

4

主题

22

帖子

123

积分

③业余

积分
123
 楼主| 发表于 2008-2-4 19:48:22 | 显示全部楼层
sarah大,我按照你的指點修改了一下rclick.ks和history.ks的代碼
具體如下所示

+++++++++++rclick.ks+++++++++++
;〓〓〓〓〓〓〓〓〓〓〓〓〓
;右鍵菜單
;〓〓〓〓〓〓〓〓〓〓〓〓〓
*start
[history output=false]
[rclick jump=true storage=rclick.ks target=*exit enabled=true]
[current layer=message1]
[layopt layer=message0 page=fore visible=false]
[layopt layer=message1 page=fore visible=true]
[er]
[link storage=history.ks]對話履歷[endlink]

;〓〓〓〓〓〓〓〓〓〓〓〓〓
;返回
;〓〓〓〓〓〓〓〓〓〓〓〓〓
*exit
[history enabled=false output=true]
[layopt layer=message1 page=fore visible=false]
[layopt layer=message0 page=fore visible=true]
[current layer=message0]
[rclick call=true storage=rclick.ks target=*start enabled=true]
[return]

+++++++++++history.ks+++++++++++
;〓〓〓〓〓〓〓〓〓〓〓〓〓
;對話履歷
;〓〓〓〓〓〓〓〓〓〓〓〓〓
*start
[history output=false]
[rclick enabled=false]
[layopt layer=message0 page=fore visible=false]
[layopt layer=message1 page=fore visible=true]
[current layer=message1]

*history
[er]
[history output=false]
[emb exp="kag.historyLayer.data[kag.historyLayer.dataPos-5]"][r]
[emb exp="kag.historyLayer.data[kag.historyLayer.dataPos-4]"][r]
[emb exp="kag.historyLayer.data[kag.historyLayer.dataPos-3]"][r]
[emb exp="kag.historyLayer.data[kag.historyLayer.dataPos-2]"][r]
[emb exp="kag.historyLayer.data[kag.historyLayer.dataPos-1]"][r][r]
[link storage=rclick.ks target=*start]返回[endlink]


修改后顯示的情況較之前有所好轉
不過還是有問題
比如説在運行了第一段文字、單擊右鍵選擇"對話履歷"后,
顯示的内容如下所示:


我感覺主要問題是在於history.ks文件中沒有對kag.historyLayer.data這個變量作判斷。
比如説第一段文字一共只有3小節
我在history.ks裏設定一個頁面顯示5小節的話
這樣勢必會發生問題
是否有什麽辦法判斷kag.historyLayer.data是否為空
黨它為空時就不做操作。。。
回复 支持 反对

使用道具 举报

36

主题

996

帖子

350万

积分

⑧专业

积分
3507413
发表于 2008-2-5 02:34:28 | 显示全部楼层
用cond或者if判断kag.historyLayer.data[xx]是不是void,另外履历的显示可以用循环……

*history
[er]
[history output=false]
[eval exp="tf.temp=5"]
;假如一页显示5段
*history_1
[emb exp="kag.historyLayer.data[kag.historyLayer.dataPos-tf.temp]" cond="kag.historyLayer.data[kag.historyLayer.dataPos-tf.temp != void"][r cond="kag.historyLayer.data[kag.historyLayer.dataPos-tf.temp != void"]
[eval exp="tf.temp=tf.temp-1"]
[jump target=*history_1 cond="tf.temp > 0"]
[link storage=rclick.ks target=*start]返回[endlink]
回复 支持 反对

使用道具 举报

4

主题

22

帖子

123

积分

③业余

积分
123
 楼主| 发表于 2008-2-5 10:38:02 | 显示全部楼层
感謝sarah不厭其煩地回復,
不過還是有問題。

顯示圖片如下:


它最上行多顯示了1次"段落1_2",
也就是說系統把POS-1的記錄顯示了兩次
這種顯示狀況是在first.ks代碼為
  1. *|
  2. [cm]
  3. [font color=0x666666]【段落1】[resetfont][r]
  4. 段落1_1[r]
  5. 段落1_2[p]
复制代码
時發生的。

然後我多事把那個[p]改成了[l]
結果發現它的顯示更爲不正常了
顯示圖片如下


可以發現它沒有顯示"段落1_2"這個小節
並且它重復顯示了1次
"【段落1】
段落1_1"


於是我想看看系統自帶的那個履歷囘放界面是否也有這種問題
然而它是正常顯示的

代碼到底是哪裏出問題了?
回复 支持 反对

使用道具 举报

36

主题

996

帖子

350万

积分

⑧专业

积分
3507413
发表于 2008-2-5 12:36:33 | 显示全部楼层
每行后边用点击等待,shift+f3打开即时刷新变量显示看一下kag.historyLayer.dataPos的数字究竟是怎么变化的,还有如果怕这个数字一直变来变去就直接把它赋值在一个变量上用那个变量来进行之后的计算和显示
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-5-3 03:57 , Processed in 0.026049 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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