OK論壇

 找回密碼
 註冊
查看: 2167|回復: 13

腳本指令編排順序...搞不懂腳本是怎麼跑的:(

 關閉 [複製鏈接]
  • TA的每日心情
    開心
    2012-8-8 05:00 AM
  • 簽到天數: 70 天

    連續簽到: 1 天

    [LV.6]常住居民II

    發表於 2010-5-14 17:44:25 | 顯示全部樓層 |閱讀模式
    本帖最後由 a080912345 於 2010-5-18 01:55 PM 編輯

    這兩天正在寫一個任務的腳本
    但是現在遇到一個大難題....

    先貼上腳本部分內容再說


    1. OnNPCKillEvent:
    2. if (QQAA == 20){
    3. if(killedrid == 1002){ set kill,kill+1;
    4. if(kill < 20){
    5. dispbottom "===============================================";
    6. dispbottom "任務進度 :";
    7. dispbottom "    目前殺死波利數量 : ["+kill+"/20]";}
    8. if(kill >= 20){
    9. announce "===============================================",bc_self;
    10. announce "    目前殺死波利數量 : ["+kill+"/20]",bc_self;
    11. announce "  ★任務完成,快回去領獎勵吧!!★",bc_self;}
    12. end;}}
    13. if (QQAA == 50){
    14. if(killedrid == 1271){ set kill2,kill2+1;
    15. if(killedrid == 1613){ set kill3,kill3+1;
    16. dispbottom "===============================================";
    17. dispbottom "任務進度 :";
    18. if(kill2 < 50){ dispbottom "    目前殺死[鱷魚人]數量 : ["+kill2+"/50]";}
    19. if(kill2 >= 50){ announce " (完成) 目前殺死[鱷魚人]數量 : ["+kill2+"/50]",bc_self;}
    20. if(kill3 < 50){ dispbottom "    目前殺死[金屬波利]數量 : ["+kill3+"/50]";}
    21. if(kill3 >= 50){ announce " (完成) 目前殺死[金屬波利]數量 : ["+kill3+"/50]",bc_self;}
    22. if(countitem(7003) < 50){ dispbottom "    目前[虎蜥皮]數量 : ["+countitem(7003)+"/50]";}
    23. if(countitem(7003) >= 50){ announce " (完成) 目前[虎蜥皮]數量 : ["+countitem(7003)+"/50]",bc_self;}
    24. if(countitem(7126) < 50){ dispbottom "    目前[巨大傑勒比結晶]數量 : ["+countitem(7126)+"/50]";}
    25. if(countitem(7126) >= 50){ announce " (完成) 目前[巨大傑勒比結晶]數量 : ["+countitem(7126)+"/50]",bc_self;}
    26. end;}}}
    複製代碼



    這只是腳本內的"部份"內容

    首先..
    跟任務NPC對話 會有一個

    1. set QQAA,20;
    複製代碼


    if (QQAA == 20)
    .
    .
    .
    .
    .
    end;}}
    到這邊都沒問題...

    但是任務到了下個階段
    QQAA  會從20  變成50
    也照我寫的..
    QQAA==20 那段都不會跑了...

    但是QQAA==50 那邊好像也都沒有跑= =
    請問為什麼會這樣呢

    我在想是這段的問題

    1. if(killedrid == 1271){ set kill2,kill2+1;
    2. if(killedrid == 1613){ set kill3,kill3+1;
    複製代碼


    難道他要分開寫嗎....
    這樣會變好長=3=




    抱歉... 還在努力學寫腳本中...

    我爬過好多文...
    載過一些腳本來看..
    自己試了好久.... 改來改去...
    還是弄不出來

    希望大大能給我指點指點囉
    回復

    使用道具 舉報

  • TA的每日心情
    開心
    2024-9-6 01:09 AM
  • 簽到天數: 1324 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2010-5-14 18:45:30 | 顯示全部樓層
    本帖最後由 sinya 於 2010-5-14 06:47 PM 編輯

    announce "  ★任務完成,快回去領獎勵吧!!★",bc_self;}
    end;} }

    應該是 }數量沒對稱 紅色那一個}拿掉應該可以
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2012-8-8 05:00 AM
  • 簽到天數: 70 天

    連續簽到: 1 天

    [LV.6]常住居民II

     樓主| 發表於 2010-5-14 19:03:19 | 顯示全部樓層
    本帖最後由 a080912345 於 2010-5-14 07:11 PM 編輯

    回復 2# sinya


       
    您可能沒算清楚哦...
    拿掉才不對稱說....
    因為可以確定的是...
    拿掉會跑錯誤...
    然後NPC會消失

    所以現在能確定的是.... 應該不是大大所說的 }問題





    從第一個表格來看
    if (QQAA == 50) 之前
    第3  4  5  8  9  12行  各有一個大括號  共計: 6
    第13行 end  後面有2個  共計 : 2
    總計 : 8
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2024-9-6 01:09 AM
  • 簽到天數: 1324 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2010-5-14 19:14:05 | 顯示全部樓層
    本帖最後由 sinya 於 2010-5-14 07:29 PM 編輯

    看錯了 ..建議你用 縮排 比較 容易看的出來


    你的 QQAA變 50 不是不會跑 20的了 ?
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2012-8-8 05:00 AM
  • 簽到天數: 70 天

    連續簽到: 1 天

    [LV.6]常住居民II

     樓主| 發表於 2010-5-14 20:09:07 | 顯示全部樓層
    本帖最後由 a080912345 於 2010-5-14 08:33 PM 編輯

    回復 4# sinya


    恩....是的...

    QQAA == 20 的時候是 任務1
    任務1 結束後  接著有任務2
    而QQAA == 50 是 任務2
    當然...
    在解任務2的時候...
    我就是不要讓他跑 QQAA == 20 的東西
    也就是說任務進行到 任務2的時候
    QQAA == 20
    的東西基本上是已經沒有用了-ˇ-
    可是現在重點就是...
    我現在這樣的寫法...
    在任務1的時候可以順利進行
    打死怪物後也會有那些任務提示出現


    但是進行到任務2時....
    殺死指定怪物 突然就沒有任務提示出現了...

    找不出原因



    在接到任務2的同時...
    我有添加
    set QQAA,50;
    進去
    也就是說...
    這時的 QQAA 20  是沒用的了..(這好像都不是重點.....




    我再重新整理一次問題好了...
    我自己看的也是霧煞煞= =



    我現在跟某NPC對話..
    會得到一個任務 這任務的變數是 QQAA  20
    而這個任務是要殺死波利20隻
    所以我寫了這個在腳本下面
    (跟第一帖的有點不一樣.. 我有加一些東西進去)
    1. OnNPCKillEvent:
    2. if (QQAA == 20){
    3. if(killedrid == 1002){ set kill,kill+1;
    4. if(kill > 0 && kill < 20){
    5. dispbottom "===============================================";
    6. dispbottom "任務進度 :";
    7. dispbottom "    目前殺死波利數量 : ["+kill+"/20]";}
    8. if(kill >= 20){
    9. set QANO,1;
    10. announce "===============================================",bc_self;
    11. announce " (完成) 目前殺死波利數量 : ["+kill+"/20]",bc_self;
    12. announce "  ★任務完成,快回去領獎勵吧!!★",bc_self;}
    13. end;}}
    14. if (QQAA == 50){
    15. if(killedrid == 1271){ set kill2,kill2+1;
    16. if(killedrid == 1613){ set kill3,kill3+1;
    17. dispbottom "===============================================";
    18. dispbottom "任務進度 :";
    19. if(kill2 < 50){ dispbottom "    目前殺死[鱷魚人]數量 : ["+kill2+"/50]";}
    20. if(kill2 >= 50){ announce " (完成) 目前殺死[鱷魚人]數量 : ["+kill2+"/50]",bc_self;}
    21. if(kill3 < 50){ dispbottom "    目前殺死[金屬波利]數量 : ["+kill3+"/50]";}
    22. if(kill3 >= 50){ announce " (完成) 目前殺死[金屬波利]數量 : ["+kill3+"/50]",bc_self;}
    23. if(countitem(7003) < 50){ dispbottom "    目前[虎蜥皮]數量 : ["+countitem(7003)+"/50]";}
    24. if(countitem(7003) >= 50){ announce " (完成) 目前[虎蜥皮]數量 : ["+countitem(7003)+"/50]",bc_self;}
    25. if(countitem(7126) < 50){ dispbottom "    目前[巨大傑勒比結晶]數量 : ["+countitem(7126)+"/50]";}
    26. if(countitem(7126) >= 50){ announce " (完成) 目前[巨大傑勒比結晶]數量 : ["+countitem(7126)+"/50]",bc_self;}
    27. if(kill2 >= 50 && kill3 >= 50 && countitem(7003) >= 50 && countitem(7126) >= 50){ announce "  ★任務完成,快回去領獎勵吧!!★",bc_self;}
    28. end;}}}
    複製代碼


    kill  是殺死波利的數量
    kill2 是殺死鱷魚人的數量
    kill3 是殺死金屬波利的數量

    set QANO,1;

    這段不用管它 這是讓NPC判斷任務是否完成之後的歸零動作  只是我把0提高成1而已-ˇ-


    波利每殺死一隻, kill 就增加1   (到目前應該都沒寫錯吧)
    直到 kill 到了 >=20
    可以點擊NPC 領取獎勵
    領獎同時  我有添加了
    set kill,0;

    將 kill 歸零(但我想這應該是沒有差別的- -)

    好 不管

    再次點擊NPC
    對話完後會接到任務2
    也就是QQAA  50

    接著進行到任務2



    我這樣寫...
    不就是QQAA  50的時候
    會從
    if (QQAA == 50) 這裡開始執行腳本嗎....
    但為什麼殺死怪物時
    那些任務提示都不會出現........
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2012-8-8 05:00 AM
  • 簽到天數: 70 天

    連續簽到: 1 天

    [LV.6]常住居民II

     樓主| 發表於 2010-5-14 20:36:03 | 顯示全部樓層
    本帖最後由 a080912345 於 2010-5-14 08:41 PM 編輯

    然後.........
    縮排...!!?
    什麼意思......
    抱歉...我這人比較死腦筋- -

    可惡....這腳本好難寫
    我先去吃飯....電腦換我妹玩....
    晚點再來看





    然後....
    還是我需要把整個腳本上傳上來呢....
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    慵懶
    2014-12-14 01:52 PM
  • 簽到天數: 164 天

    連續簽到: 1 天

    [LV.7]常住居民III

    發表於 2010-5-14 22:33:17 | 顯示全部樓層
    本帖最後由 xk78765 於 2010-5-14 10:58 PM 編輯

    因為,你只會跑到

    if (QQAA == 50){
                  if(killedrid == 1271){
                             set kill2,kill2+1;
                                     if(killedrid == 1613){ .........  }   
              }
    }

    所以當你QQAA==50,殺死1271魔物,kill2+1。
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2024-9-6 01:09 AM
  • 簽到天數: 1324 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2010-5-14 22:52:37 | 顯示全部樓層
    本帖最後由 sinya 於 2010-5-14 11:06 PM 編輯

    縮排讓程式更容易看 例

    1. if()
    2.   { if()
    3.        {
    4.   
    5.         }
    6.      if()
    7.        {

    8.         }

    9.    }

    複製代碼
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2012-8-8 05:00 AM
  • 簽到天數: 70 天

    連續簽到: 1 天

    [LV.6]常住居民II

     樓主| 發表於 2010-5-15 00:15:31 | 顯示全部樓層
    7#  
    但我的腳本不是像你說的那樣寫的阿

    8#
    縮排我大概懂了....
    但是我個人覺得....縮排似乎更難看-ˇ-
    然後....



    好吧....那...
    能不能直接請問
    依照我的需求... 到底該怎麼寫呢....
    到現在仍然搞不出來....
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2024-9-6 01:09 AM
  • 簽到天數: 1324 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2010-5-15 00:49:04 | 顯示全部樓層
    本帖最後由 sinya 於 2010-5-15 12:50 AM 編輯

    1. OnNPCKillEvent:
    2. if(kill2 >= 50 && kill3 >= 50 && countitem(7003) >= 50 && countitem(7126) >= 50)
    3.   { announce "  ★任務完成,快回去領獎勵吧!!★",bc_self; end;}
    4. if(killedrid == 1271)
    5.    { set kill2,kill2+1;
    6.       if(kill2 < 50){ dispbottom "    目前殺死[鱷魚人]數量 : ["+kill2+"/50]";}
    7.       if(kill2 >= 50){ announce " (完成) 目前殺死[鱷魚人]數量 : ["+kill2+"/50]",bc_self;}
    8.       if(countitem(7003) < 50){ dispbottom "    目前[虎蜥皮]數量:
    9.        ["+countitem(7003)+"/50]";}
    10.       if(countitem(7003) >= 50){ announce " (完成) 目前[虎蜥皮]數量 :
    11.        ["+countitem(7003)+"/50]",bc_self;}
    12.     }
    13. if(killedrid == 1613)
    14.   {
    15.      set kill3,kill3+1;
    16.      if(kill3 < 50){ dispbottom "    目前殺死[金屬波利]數量 : ["+kill3+"/50]";}
    17.      if(kill3 >= 50){ announce " (完成) 目前殺死[金屬波利]數量 : ["+kill3+"/50]",bc_self;}
    18.      if(countitem(7126) < 50){ dispbottom "    目前[巨大傑勒比結晶]數量 :
    19.       ["+countitem(7126)+"/50]";}
    20.      if(countitem(7126) >= 50){ announce " (完成) 目前[巨大傑勒比結晶]數量 :
    21.       ["+countitem(7126)+"/50]",bc_self;}

    22.    }
    23. end;

    複製代碼
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2012-8-8 05:00 AM
  • 簽到天數: 70 天

    連續簽到: 1 天

    [LV.6]常住居民II

     樓主| 發表於 2010-5-15 01:24:17 | 顯示全部樓層
    回復 10# sinya


    恩....真的很謝謝大大
    我懂您寫的
    但是似乎跟我想要的不太一樣

    依照您的寫法
    應該是
    殺死1271 怪物時 (鱷魚人)
    只會顯示殺死鱷魚人的數量以及虎蜥皮的數量吧

    但我的任務2是
    要殺死 鱷魚人、金屬波利
    並蒐集 虎蜥皮、巨大傑勒比結晶

    所以我希望的是
    不管是殺死鱷魚人還是金屬波利
    都能列出所有的進度

    不過還是很謝謝大大,因為這也是個能讓語法數量減少的辦法之一
    還是上了一課


    再來....
    不知是否有辦法做到
    隨著身上的某道具增加或減少
    也會顯示出任務進度

    意思就是說
    依照現在的寫法
    那些顯示道具數量的任務進度
    都只是隨著殺死怪物所觸發、顯示出來的
    所以不知是否有辦法可以做到
    讓即使是單純撿起道具(以此篇的虎蜥皮當例子)
    也能顯示任務進度  (不知道這樣是否有詳細說明問題)
    即顯示

    dispbottom "    目前[虎蜥皮]數量 : ["+countitem(7003)+"/50]"



    因為我試過 將身上的虎蜥皮丟地板 再撿起...
    不會顯示

    不知這問題是否需要再另開版
    如果需要
    我會馬上弄的
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2012-8-8 05:00 AM
  • 簽到天數: 70 天

    連續簽到: 1 天

    [LV.6]常住居民II

     樓主| 發表於 2010-5-15 01:31:39 | 顯示全部樓層
    另外....
    剛剛又繼續去研究這個腳本...

    稍微改了一下大括號的位置

    即 原本的
    1.   if (QQAA == 50){
    2. if(killedrid == 1271){ set kill2,kill2+1;
    3. if(killedrid == 1613){ set kill3,kill3+1;
    4. dispbottom "===============================================";
    5. dispbottom "任務進度 :";
    6. if(kill2 < 50){ dispbottom "    目前殺死[鱷魚人]數量 : ["+kill2+"/50]";}
    7. if(kill2 >= 50){ announce " (完成) 目前殺死[鱷魚人]數量 : ["+kill2+"/50]",bc_self;}
    8. if(kill3 < 50){ dispbottom "    目前殺死[金屬波利]數量 : ["+kill3+"/50]";}
    9. if(kill3 >= 50){ announce " (完成) 目前殺死[金屬波利]數量 : ["+kill3+"/50]",bc_self;}
    10. if(countitem(7003) < 50){ dispbottom "    目前[虎蜥皮]數量 : ["+countitem(7003)+"/50]";}
    11. if(countitem(7003) >= 50){ announce " (完成) 目前[虎蜥皮]數量 : ["+countitem(7003)+"/50]",bc_self;}
    12. if(countitem(7126) < 50){ dispbottom "    目前[巨大傑勒比結晶]數量 : ["+countitem(7126)+"/50]";}
    13. if(countitem(7126) >= 50){ announce " (完成) 目前[巨大傑勒比結晶]數量 : ["+countitem(7126)+"/50]",bc_self;}
    14. if(kill2 >= 50 && kill3 >= 50 && countitem(7003) >= 50 && countitem(7126) >= 50){ set QANO,1; announce "  ★任務完成,快回去領獎勵吧!!★",bc_self;}
    15. end;}}}
    複製代碼


    改成

    1.   if (QQAA == 50){
    2. if(killedrid == 1271){ set kill2,kill2+1;}
    3. if(killedrid == 1613){ set kill3,kill3+1;}
    4. dispbottom "===============================================";
    5. dispbottom "任務進度 :";
    6. if(kill2 < 50){ dispbottom "    目前殺死[鱷魚人]數量 : ["+kill2+"/50]";}
    7. if(kill2 >= 50){ announce " (完成) 目前殺死[鱷魚人]數量 : ["+kill2+"/50]",bc_self;}
    8. if(kill3 < 50){ dispbottom "    目前殺死[金屬波利]數量 : ["+kill3+"/50]";}
    9. if(kill3 >= 50){ announce " (完成) 目前殺死[金屬波利]數量 : ["+kill3+"/50]",bc_self;}
    10. if(countitem(7003) < 50){ dispbottom "    目前[虎蜥皮]數量 : ["+countitem(7003)+"/50]";}
    11. if(countitem(7003) >= 50){ announce " (完成) 目前[虎蜥皮]數量 : ["+countitem(7003)+"/50]",bc_self;}
    12. if(countitem(7126) < 50){ dispbottom "    目前[巨大傑勒比結晶]數量 : ["+countitem(7126)+"/50]";}
    13. if(countitem(7126) >= 50){ announce " (完成) 目前[巨大傑勒比結晶]數量 : ["+countitem(7126)+"/50]",bc_self;}
    14. if(kill2 >= 50 && kill3 >= 50 && countitem(7003) >= 50 && countitem(7126) >= 50){ set QANO,1; announce "  ★任務完成,快回去領獎勵吧!!★",bc_self;}
    15. end;}
    複製代碼



    腳本能順利運行
    也能順利顯示我想要的

    雖然我不知道為什麼....
    總之...是可以寫出我想要顯示的了


    現在就只差是否能讓 撿起物品時也會顯示任務進度 的問題而已了


    謝謝幾位大大的幫助、指導。
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2024-9-6 01:09 AM
  • 簽到天數: 1324 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2010-5-15 01:39:36 | 顯示全部樓層
    要全部列出來 就全部的指令(金屬波利和虎c人)都寫就好了 二邊都放一樣的 就全部列出來了

    ea好像沒有檢到東西就觸發的事件
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2012-8-8 05:00 AM
  • 簽到天數: 70 天

    連續簽到: 1 天

    [LV.6]常住居民II

     樓主| 發表於 2010-5-15 01:53:37 | 顯示全部樓層
    回復 13# sinya


    咦.....
    也是吼= =
    我在想什麼....
    果然...我比較死腦筋-.-

    所以這就變成了我一開始說的...
    殺死金屬波利和殺死鱷魚人 分開寫就是了


    謝謝大大,我懂了

    實在很感謝大大的教學...
    感激不盡
    回復 支持 反對

    使用道具 舉報

    您需要登錄後才可以回帖 登錄 | 註冊

    本版積分規則

    Archiver|手機版|小黑屋|OK討論區

    GMT+8, 2025-7-6 09:35 PM , Processed in 0.607320 second(s), 19 queries , Gzip On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回復 返回頂部 返回列表