鐵之狂傲

 取回密碼
 註冊
搜尋

無名的勇者

天繾寶寶說你好

切換到指定樓層
1#
機翻整理自カーソルの実装,錯誤請指證。

閱讀建議 把下面前置點數點完
  1.Count D的
Nscripter全攻略 消化完畢
  2.偽聖書 有看沒全懂
  3.
中文不完全手冊擺手邊
  4.
NS自製系統入門1-textgosub
  5.
NS自製系統2-換行換頁的實裝

  目前為止,換行等候、換頁等候的游標並沒有顯示出來。
  當然也是要自行實裝!


翻譯按:
  這次的教學,原文中還有花一些篇幅講解rubyon(平假名注音模式)的用法,因為中文版不用。
  所以有關rubyon的部分,都予以刪除。


本回使用:
mode800              畫面尺寸變為800x600
transmode alpha   透明模式為遮罩透明
shadedistance       設定文字的的陰影寬度
ispage                   數字變量判斷結果收藏
                               使用textgosub時,呼叫理由是換頁用變數%1,
                               換行等候則是%0。
getcursorpos         獲得文字框游標的座標(游標圖片左上角)
print                      刷新畫面
vsp                        改變圖片的可見狀態
setwindow            設置對話框
bg                         設置背景
lsph                      預載物件並默認為不可見
humanz                立繪相對透明圖片遮擋的優先順序(前後順序),默認順位元是500
amsp                    圖片移動(絕對位置)


  在程式腳本製作前,先用ps製作素材。
素材一覽:

[ 本文最後由 發條人形紅舞鞋 於 08-1-30 01:07 PM 編輯 ]

[ 本文章最後由 發條人形紅舞鞋 於 08-7-2 18:47 編輯 ]

素材一覽

素材一覽

img.rar

22.01 KB, 下載次數: 496, 下載積分: 鐵幣 -5 元

素材下載

 
轉播0 分享0 收藏0

回覆 使用道具 檢舉

無名的勇者

天繾寶寶說你好

接上回程式碼更新


程式碼更新
  以【
NS自製系統2-換行換頁的實裝】一文的結果,進續進行以下的改裝。
**表示更動的地方。
  1. ;mode800;畫面尺寸變為800x600**
  2. *define;定義區
  3. transmode alpha;設定遮罩透明**
  4. shadedistance 1,2;設定文字陰影寬度**
  5. useescspc;允許使用esc鍵和空白鍵,esc鍵返回值-10,空白鍵返回值-11
  6. textgosub *custom;自定義系統設定(顯示於對話框附近的存讀鈕等等)

  7. game;執行區
  8. *start
  9. goto *game_start
  10. ;=================================
  11. ; 自製系統
  12. ;=================================
  13. *custom
  14. ispage %0;換頁等候、換行等候 取得**
  15. getcursorpos %1,%2;獲得對話框游標的座標(游標圖片左上角**
  16.   if %0 = 1        amsp 1,%1,%2:vsp 1,1:vsp 0,0        ;換行等候的處理**
  17. if %0 = 0        amsp 0,%1,%2:vsp 0,1:vsp 1,0        ;換頁等候的處理**
  18. print 1;顯示畫面效果1**

  19.   *btn_loop
  20.   btndef clear;清除按鈕定義
  21. textbtnwait %0;換行等候判別
  22. if %0 = 0        goto *text_end        ;按鈕以外的點擊
  23. if %0 = -1        goto *btn_loop        ;右鍵點擊
  24. if %0 = -10        end;ESC結束

  25.   goto *btn_loop;跳到*btn_loop標籤
  26. *text_end;游標消除
  27. vsp 0,0;0號物件為消失**
  28. vsp 1,0;1號物件為消失**
  29. print 1;畫面刷新1號效果**
  30. texec;換頁等候的情況消去對話框
  31. saveon; 重新開啟即時存檔功能(使用textgosub 情況下saveoff為預設狀態)
  32. return;返回
  33. ;=============================================================
  34. ; 遊戲開始
  35. ;=============================================================
  36. *game_start
  37. setwindow 44,428,24,5,26,28,2,10,50,1,1,"img\text_window.bmp",20,430;設置對話框**
  38. bg #525252,1;設置背景**
  39. rubyon機能解說請看原文。@
  40. NS全功略是好物,@
  41. 有志玩NS的人請務必詳讀\
  42. 多發發灌水文杯\
  43. end;結束
複製代碼



測試更新結果
更新結果
  沒有使用複雜的功能,那麼按照上面腳本一一解說。
  首先,
mode800是指定視窗為800*600模式。
transmode用alpha(遮罩)指定。
shadedistance,指定文字的影子。這裏用X座標1 ,Y座標2指定影子。
  先在實裝游標之前,用簡單的標籤,在定義區作了前述的東西。
  接下來要實裝游標。游標圖請到放入NScripter的資料夾。



[ 本文最後由 發條人形紅舞鞋 於 07-12-23 09:37 PM 編輯 ]
 

回覆 使用道具 檢舉

無名的勇者

天繾寶寶說你好

實裝游標

實裝游標1.放入游標圖片
  游標由
Sprite(透明圖像、雪碧、sp圖片)製作。
  
lsph 0,":l/3,60,2;img\cursor0.bmp",0,0                ;換行等候游標
  lsph 1,”:l/4,60,2;img\cursor1.bmp",0,0                ;換頁等候游標


  不用lsp,而是lsph讀入。
  因為每回讀入會導致效能變差,
  只要程式腳本的開始那次讀入就可以了。

  順序為~
  ・換行等候和換頁等候指令取得
  ↓
  ・取得程式腳本末尾的座標(游標to座標)
  ↓
  ・取得座標同時,顯示換行等候、換頁等候應對的透明圖像


實裝游標2.取得游標位置
  
ispage %0;換頁等候、換行等候 取得
  getcursorpos %1,%2;獲得對話框游標的座標(游標圖片左上角
  if %0 = 1        amsp 1,%1,%2:vsp 1,1:vsp 0,0        ;換行等候的處理
  if %0 = 0        amsp 0,%1,%2:vsp 0,1:vsp 1,0        ;換頁等候的處理
  print 1;顯示畫面效果1


  在此不另解說lsph,vsp,print等的基本的命令。
  請參照指令手冊。
  一般腳本的游標應該會被自定義游標所掩蓋。


進行游標實裝測試
  1. ;mode800;畫面尺寸變為800x600
  2.   *define;定義區
  3.   transmode alpha;設定遮罩透明
  4.   rubyon 10,10;平假名注音模式(中文不用)
  5.   shadedistance 1,2;設定文字陰影寬度
  6.   useescspc;允許使用esc鍵和空白鍵,esc鍵返回值-10,空白鍵返回值-11
  7.   textgosub *custom;自定義系統設定(顯示於對話框附近的存讀鈕等等)
  8.   game;執行區
  9.   *start
  10.   goto *game_start
  11.   ;========================================
  12.   ; 自製系統
  13.   ;========================================
  14.   *custom
  15.   ispage %0;換頁等候、換行等候 取得
  16.   getcursorpos %1,%2;獲得對話框游標的座標(游標圖片左上角
  17.   if %0 = 1        amsp 1,%1,%2:vsp 1,1:vsp 0,0        ;換行等候的處理
  18.   if %0 = 0        amsp 0,%1,%2:vsp 0,1:vsp 1,0        ;換頁等候的處理
  19.   print 1;顯示畫面效果1

  20.   *btn_loop
  21.   btndef clear;清除按鈕定義
  22.   textbtnwait %0;換行等候判別
  23.   if %0 = 0        goto *text_end        ;按鈕以外的點擊
  24.   if %0 = -1        goto *btn_loop        ;右鍵點擊
  25.   if %0 = -10        end;ESC結束
  26.   goto *btn_loop;跳到*btn_loop標籤

  27.   *text_end;游標消除
  28.   vsp 0,0;0號物件為消失
  29.   vsp 1,0;1號物件為消失
  30.   print 1;畫面刷新1號效果
  31.   texec;換頁等候的情況消去對話框
  32.   saveon; 重新開啟即時存檔功能(使用textgosub 情況下saveoff為預設狀態)
  33.   return;返回
  34.   ;==========================================
  35.   ; 遊戲開始
  36.   ;==========================================
  37.   *game_start
  38.   lsph 0,":l/3,60,2;img\cursor0.bmp",0,0;換行等候游標
  39.   lsph 1,":l/4,60,2;img\cursor1.bmp",0,0;換頁等候游標

  40.   setwindow 44,428,24,5,26,28,2,10,50,1,1,"img\text_window.bmp",20,430;設置對話框
  41.   bg #525252,1;設置背景
  42.   rubyon機能解說請看原文。@
  43.   NS全功略是好物,@
  44.   有志玩NS的人請務必詳讀\
  45.   多發發灌水文杯\
  46.   end;結束
複製代碼



測試結果-游標實裝
測試結果
  實行時一目了然,不過,上述的腳本並沒有成功。
  執行效果時對話框消失是NScripter默認狀態。
  為了在游標顯示的時不隱藏對話框。
  請依以下修正樣品腳本。

[ 本文最後由 發條人形紅舞鞋 於 07-12-23 09:55 PM 編輯 ]
 

回覆 使用道具 檢舉

無名的勇者

天繾寶寶說你好

最後修正

更新程式碼-效果執行時文字框不消失
  1. *game_start
  2.     lsph 0,":l/3,60,2;img\cursor0.bmp",0,0;換行等候游標
  3.     lsph 1,”:l/4,60,2;img\cursor1.bmp",0,0;換頁等候游標
  4.     erasetextwindow 0;執行其他效果時文字框不消失
  5.     setwindow 44,428,24,5,26,28,2,10,50,1,1,"img\text_window.bmp",20,430;設定對話框
  6.     bg #525252,1;設定背景
複製代碼



測試結果-文字框不消失 測試1
    游標顯示了。
    因為游標是透明圖像在對話框下出現。
    用降低對話框顯示位置的方法來解決。


更新程式碼-透明圖像與文字框位置更動
    定義區加入以下2行。
  1. humanz 100;立繪相對Sprite(透明圖像)遮擋的優先順序為100
  2.     windowback;使文字框與立繪位於同一遮擋順位
複製代碼


humanz 
    立繪相對SP圖片遮擋的優先順序(前後順序),默認順位元是500
    透明圖像號碼100以上,顯示於立繪之上。
    也就是說,游標的編號為0、1,所以會出現於立繪上面。

Windowback
    使文字框與立繪位於同一遮擋順位。
    應用於需要讓其他物件遮擋文字框的情況。
    但文字框中的文字是不可遮擋

    詳細請參考【
畫面表示的上下關係


測試結果-透明圖像與文字框位置更動
測試2
    完工!!
    以我個人來說,
    並不是很喜歡換頁/換行游標有所不同的設計。
    但是基於,也許有人很需要,所以也機翻+整理這篇教學。
    希望能給有需要的人一點參考。


成品-最後的程式碼
  1. mode800
  2.     *define
  3.     humanz 100
  4.     windowback
  5.     transmode alpha
  6.     rubyon 10,10
  7.     shadedistance 1,2
  8.     useescspc
  9.     textgosub *custom
  10.     game
  11.     *start
  12.     goto *game_start
  13.     ;=====================================================================
  14.     ;自製系統
  15.     ;======================================================================
  16.     *custom
  17.     ispage %0;換頁等候、換行等候 取得
  18.     getcursorpos %1,%2;獲得對話框游標的座標(游標圖片左上角
  19.     if %0 = 1        amsp 1,%1,%2:vsp 1,1:vsp 0,0        ;換行等候的處理
  20.     if %0 = 0        amsp 0,%1,%2:vsp 0,1:vsp 1,0        ;換頁等候的處理
  21.     print 1;顯示畫面效果1

  22.     *btn_loop
  23.     btndef clear; 清除按鈕定義
  24.     textbtnwait %0;換行等候判別
  25.     if %0 = 0         goto *text_end; 按鈕以外的點擊
  26.     if %0 = -1 goto *btn_loop; 右鍵點擊
  27.     if %0 = -10 end        ; ESC結束
  28.     goto *btn_loop;跳到*btn_loop標籤

  29.     *text_end; 游標消除
  30.     vsp 0,0;0號物件為消失
  31.     vsp 1,0;1號物件為消失
  32.     print 1;畫面刷新1號效果
  33.     texec;換頁等候的情況消去對話框
  34.     saveon; 重新開啟即時存檔功能(使用textgosub 情況下saveoff為預設狀態)
  35.     return;返回
  36.     ;=======================================================================
  37.     ; 遊戲開始
  38.     ;=========================================================================
  39.     *game_start
  40.     lsph 0,":l/3,60,2;img\cursor0.bmp",0,0;換行等候游標
  41.     lsph 1,":l/4,60,2;img\cursor1.bmp",0,0                ;換頁等候游標
  42.     erasetextwindow 0
  43.     setwindow 44,428,24,5,26,28,2,10,50,1,1,"img\text_window.bmp",20,430
  44.     bg #525252,1
  45.     rubyon機能解說請看原文。@
  46.     NS全功略是好物,@
  47.     有志玩NS的人請務必詳讀\
  48.     多發發灌水文杯\
  49.     end;結束
複製代碼



[ 本文最後由 發條人形紅舞鞋 於 07-12-23 10:12 PM 編輯 ]
 

回覆 使用道具 檢舉

你需要登入後才可以回覆 登入 | 註冊

存檔|手機版|聯絡我們|新聞提供|鐵之狂傲

GMT+8, 24-12-5 11:02 , Processed in 0.022391 second(s), 22 queries , Gzip On.

回頂部