扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2122|回复: 3
收起左侧

[脚本教学] 从零开始学脚本 - 4.迴圈

[复制链接]

一米阳光商人

贡献:2803

金钱:9554

威望:1495

589

主题

680

帖子

2万

积分

优秀版主荣誉管理RO骑士

RO精灵 RO精灵

RO侏儒 RO侏儒

RO巨人 RO巨人

RO诸神 RO诸神

RO创世 RO创世

发表于 2016-3-23 16:34:10 | 显示全部楼层 |阅读模式
什麼是迴圈 就是循环,像是 for while 這些都是迴圈指令
迴圈是用來做重複的事情 幫助我們省下很多時間
常見的例子就是計算總和 如: 1+2+3+4+5 (因為重複用到加法)
等等會寫幾個範例 接下來介紹指令的用法

for:
使用方法

  1. for (  起始值 ; 判斷式 ; 更新值 ) { 腳本內容 }
复制代码
基本寫法

  1. for ( set .@n , 0 ; .@n < 5 ; set .@n , .@n + 1 ) { mes .@n; }
复制代码
變數 .@n 起始值為 0 , 終止判斷為小於 5 , 更新值為每次 +1 , 每次執行 mes 出該變數的值
一開始可能會比較不好了解 在這邊說明一下
上面腳本的 for 迴圈是由 0 開始往上 +1 一直到小於 5 ( 所以跑了 0 , 1 , 2 , 3 , 4 共  5 次 )
假如我要跑 9 次 我只需再判斷式改成 .@n < 9 即可
起始值也可以做修改哦 假如 起始值為 3 判斷式為 < 5 更新值不變 ( 結果從 3 , 4 共 2次 )
值可由個人需求做變化 接下來要舉幾個範例

範例:

  1. prontera,152,94,4        script        迴圈測試        98,{
  2.         // .@sum 總和初始值為 0
  3.         set .@sum , 0 ;
  4.         // .@n 初始值為 1 , 判斷為 <= 5 , 更新值 + 1 , 總共 1~5 跑 5 次
  5.         for ( set .@n , 1 ; .@n <= 5 ; set .@n , .@n + 1 ){
  6.                 // .@sum(總和) 為 .@sum(目前總和) + .@n(N值)
  7.                 set .@sum , .@sum + .@n ;
  8.         }
  9.         // mes 出結果 .@sum
  10.         mes " 總和為: " + .@sum ;
  11.         close;
  12. }
复制代码
實際圖片:

01.png

( 結果為 1 + 2 + 3 + 4 + 5 = 15 )

while:
使用方法

  1. while ( 條件式 ){ 腳本內容 }
复制代码
當條件式成立時 重複執行腳本內容 直到條件不成立
跟 for 的用法差別在於 for 可以指定迴圈次數
而 while 是一直重複執行迴圈直到條件不成立
範例:

  1. prontera,152,94,4        script        迴圈測試        98,{
  2.         // 倒數 5 秒
  3.         set .@n , 5 ;
  4.         // 當 .@n 大於 0 就繼續執行迴圈(倒數)
  5.         while ( .@n > 0 ) {
  6.                 // mes 秒數
  7.                 mes .@n + " ...";
  8.                 // .@n (秒數) - 1
  9.                 set .@n , .@n - 1 ;
  10.                 // sleep2 用來延遲腳本(單位是微秒) , 1000 = 1 秒
  11.                 sleep2(1000);
  12.         }
  13.         close;
  14. }
复制代码
實際圖片:
02.gif

進階教学

前面二節是最難懂的部分 但是只要熟悉陣列和迴圈的運作
可以把二者結合在一起 寫出更多功能的腳本哦
以下為進階範例 給大家參考學習

顯示陣列清單:

  1. prontera,152,94,4        script        陣列迴圈測試        98,{
  2.         // 波利清單陣列 ( 9 個 )
  3.         setarray .@list$ ,
  4.                                                 "波利" , "土波利" , "波波利" ,
  5.                                                 "波利之王" , "天使波利" , "惡魔波利" ,
  6.                                                 "幽靈波利" , "聖天使波利" , "魔王波利";
  7.         mes " ^ff0000波利列表:^000000";
  8.         // 用迴圈重複執行 mes 陣列中每一筆資料 ( 因為 9 個所以 .@i 要跑 9 次 )
  9.         for ( set .@i , 0 ; .@i < 9 ; set .@i , .@i + 1 ) {
  10.                 mes .@list$[ .@i ];
  11.         }
  12.         close;
  13. }
复制代码
範例圖片:

03.gif

清單式選單:



  1. prontera,152,94,4        script        陣列迴圈測試        98,{
  2.         // 清單式選單陣列
  3.         setarray .@list$ , "劍士" , "弓箭手" , "法師" , "服事" , "盜" , "商人" ;
  4.         mes " [ 職業選擇 ] ";
  5.         mes " 請選擇你想要的職業即可轉職";
  6.         // 陣列轉成選單清單
  7.         for ( set .@i , 0 ; .@i < 6 ; set .@i , .@i + 1 ){
  8.                 // 在 select 指令中 用 : 可以分隔選項
  9.                 set .@s$ , .@s$ + .@list$[ .@i ] + ":" ;
  10.         }
  11.         // 選單顯示
  12.         select(.@s$);
  13.         close;
  14. }
复制代码
範例圖片:

04.gif


贡献:66

金钱:28

威望:48

0

主题

38

帖子

332

积分

Rank: 3Rank: 3

发表于 2016-11-1 16:15:35 | 显示全部楼层
好系统,一一学习,希望以后还有类似系统学习

贡献:583

金钱:232

威望:332

0

主题

89

帖子

2245

积分

Rank: 5Rank: 5

发表于 2017-1-13 13:29:32 | 显示全部楼层
好文章 就是要頂

贡献:648

金钱:504

威望:609

0

主题

572

帖子

4167

积分

Rank: 6Rank: 6

发表于 2020-4-23 12:41:58 | 显示全部楼层

这个太棒了。。。!!!省了很多事儿啊 不用一个一个去找了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为兴趣而生…… 立即登录 立即注册
TOP

从零开始学脚本 - 4.迴圈

什麼是迴圈 就是循环,像是 for while 這些都是迴圈指令 迴圈是 ...

温馨提示:手机扫描二维码继续浏览

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