OK論壇

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

隨機語法問題

[複製鏈接]
  • TA的每日心情
    奮斗
    2021-8-26 07:22 PM
  • 簽到天數: 150 天

    連續簽到: 1 天

    [LV.7]常住居民III

    發表於 2014-7-16 20:59:15 | 顯示全部樓層 |閱讀模式
    本帖最後由 bsexp102762 於 2014-7-17 03:48 PM 編輯

    這邊想問一下大大們..
    小弟看了函數用法及解釋 以及 rand與array
    仍然有個問題

    先附上腳本
    1. -        script        KillModGetItem        -1,{
    2. OnNPCkillEvent:
    3.         set @tS,rand(0,3);
    4.         if (@tS == 1){
    5.         getitem 670,1;
    6.         close;}
    7.         if (@tS == 2){
    8.         getitem 608,1;
    9.         close;}
    10. close;}
    複製代碼
    問題1 . 假使rand(A,D) 則它回傳的值是什麼 ?   A 或者 D   還是  A ~ C 不含D ?
    問題2 . 如果我想要達到例如以下這樣 該怎麼做修改
    $item = 物品A,物品B,物品C
    if (@ts == 1) {
    getitem $item
    }
    我想要將得到的物品存在變數$item中
    然後假使@ts等於1就隨機發一個$item中的物品

    上述的腳本可使用 但因想到如果我有一百個物品想隨機給 那麼我不就寫爆了....

    以及有爬過文是使用if > < 多少值去抉擇它的獎項
    可是仍覺得不妥
    因我只想要rand回傳1的值 只有1  才會觸發 並且給出我$item中隨機的一項獎勵

    評分

    參與人數 1積分 -50 現金 -50 積極性 -50 違規 +1 收起 理由
    goddameit -50 -50 -50 + 1 -凡標題含有[大大幫我][求助][拜託各位大大.

    查看全部評分

    回復

    使用道具 舉報

  • TA的每日心情
    擦汗
    2017-9-18 09:52 PM
  • 簽到天數: 771 天

    連續簽到: 2 天

    [LV.10]以壇為家III

    發表於 2014-7-16 21:20:03 | 顯示全部樓層
    1:
    rand(0,3)
    會出現0.1.2.3隨機
    2:
    if (@ts == 1) {
    $itemsize = getarraysize($item)-1;
    $itemrand = rand($itemsize);
    $getitem = $item[$itemrand];
    getitem $getitem,1;
    }
    應該是這樣吧
    好幾個月沒碰了
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    無聊
    2021-10-5 01:09 PM
  • 簽到天數: 938 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2014-7-16 21:30:01 | 顯示全部樓層
    問題一
    rand(5) = 0,1,2,3,4
    rand(1,5) = 1,2,3,4,5

    問題二
    1. setarray .@item[0],512,513,514,.......,612;

    2. if (rand(5) == 1) {
    3.         getitem .@item[rand(getarraysize(.@item))],1;
    4. }
    複製代碼
    有錯誤請指正XD
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    奮斗
    2021-8-26 07:22 PM
  • 簽到天數: 150 天

    連續簽到: 1 天

    [LV.7]常住居民III

     樓主| 發表於 2014-7-16 21:43:16 | 顯示全部樓層
    kira1122 發表於 2014-7-16 09:30 PM
    問題一
    rand(5) = 0,1,2,3,4
    rand(1,5) = 1,2,3,4,5

    這邊請教一下
    我目前理解的是不是正確的

    setarray .@item[0],512,513,514,.......,612;
    @item的[0] 是指從 512 開始對嗎?

    -------------------------------------------------------------------------

    則if (rand(5) == 1) {        getitem .@item[rand(getarraysize(.@item))],1;
    }

    這之中的rand(5)是呼應前面的宣告嗎?
    Ex . Set @st rand(5)
    if (@st == 1)

    是這個意思嗎?

    --------------------------------------------------------------------------

    以及後段的部份能請教一下
    假使用中文來解說該怎麼解讀呢?

    getitem .@item[rand(getarraysize(.@item))],1;  
    此段落




    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    無聊
    2021-10-5 01:09 PM
  • 簽到天數: 938 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2014-7-16 22:46:08 | 顯示全部樓層
    bsexp102762 發表於 2014-7-16 09:43 PM
    這邊請教一下
    我目前理解的是不是正確的

    這邊請教一下
    我目前理解的是不是正確的

    setarray .@item[0],512,513,514,.......,612;
    @item的[0] 是指從 512 開始對嗎?
    --------------------------------------------------------------------------
    0 = 512
    1 = 513
    2 = 514
      .
      .
      .
    x = xxx


    -------------------------------------------------------------------------

    則if (rand(5) == 1) {        getitem .@item[rand(getarraysize(.@item))],1;
    }

    這之中的rand(5)是呼應前面的宣告嗎?
    Ex . Set @st rand(5)
    if (@st == 1)

    是這個意思嗎?
    --------------------------------------------------------------------------
    如果 @st 沒有要用在別的地方
    可以簡化成 if (rand(5) == 1) 或 if (rand(5))


    --------------------------------------------------------------------------

    以及後段的部份能請教一下
    假使用中文來解說該怎麼解讀呢?

    getitem .@item[rand(getarraysize(.@item))],1;  
    此段落
    --------------------------------------------------------------------------
    getarraysize(.@item) = 101
    rand(101) = 0,1,2,3,4,....,100
    帶入問題一得解

    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    奮斗
    2021-8-26 07:22 PM
  • 簽到天數: 150 天

    連續簽到: 1 天

    [LV.7]常住居民III

     樓主| 發表於 2014-7-16 22:57:00 | 顯示全部樓層
    kira1122 發表於 2014-7-16 10:46 PM
    這邊請教一下
    我目前理解的是不是正確的

    好的那麼我在理解一下..
    有點無法吸收

    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2023-12-30 04:16 AM
  • 簽到天數: 1322 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2014-7-17 03:09:42 | 顯示全部樓層
    本帖最後由 sinya 於 2014-7-17 03:14 AM 編輯

    [strike]可以簡化成 if (rand(5) == 1) 或 if (rand(5))[/strike]

    if (rand(5) == 1)  跟  if (rand(5)) 是不一樣的東西

    一個 1/5 機率   一個 4/5 機率

    -------------------------------------------------------------------------
    doc 都有說明 例子 不用問別人吧
    為什不查 說明文件?

    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    奮斗
    2021-8-26 07:22 PM
  • 簽到天數: 150 天

    連續簽到: 1 天

    [LV.7]常住居民III

     樓主| 發表於 2014-7-17 09:54:55 | 顯示全部樓層
    sinya 發表於 2014-7-17 03:09 AM
    if (rand(5) == 1)  跟  if (rand(5)) 是不一樣的東西

    一個 1/5 機率   一個 4/5 機率

    十分的抱歉
    因這幾日開始學習
    但雖說壇上資源眾多
    可是也都沒個方向看..


    以及想問一下您說有說明文件?
    是指對函數的說明文件嗎? EX. 說明
    這個我真的看不懂
    所以才發上來賜教...
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    無聊
    2021-10-5 01:09 PM
  • 簽到天數: 938 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2014-7-17 10:25:47 | 顯示全部樓層
    bsexp102762 發表於 2014-7-17 09:54 AM
    十分的抱歉
    因這幾日開始學習
    但雖說壇上資源眾多

    模擬器內有個docs的資料夾 裡面有範例

    或者 Script Commands 但是你要自己翻譯XD
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    奮斗
    2021-8-26 07:22 PM
  • 簽到天數: 150 天

    連續簽到: 1 天

    [LV.7]常住居民III

     樓主| 發表於 2014-7-17 10:40:45 | 顯示全部樓層
    kira1122 發表於 2014-7-17 10:25 AM
    模擬器內有個docs的資料夾 裡面有範例

    或者 Script Commands 但是你要自己翻譯XD

    看見您的回覆後
    立馬查看自身的模擬器
    3CEAM[R720]
    CS_eA

    裡面的解說只有些微中文
    看來得GOOGLE翻譯..

    以及
    getitem .@item[rand(getarraysize(.@item))],1;  的解釋
    可以請您幫我看一下理解正確嗎
    假使setarray .@item[0],103,104,105,106;
    則getarraysize(.@item) = getarraysize(4) ? 如果正確接下來就是
    rand(4) -> 0,1,2,3
    則回傳的0,1,2,3 對應到我的 103,104,105,106
    是這樣嗎?
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    無聊
    2021-10-5 01:09 PM
  • 簽到天數: 938 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2014-7-17 10:46:10 | 顯示全部樓層
    bsexp102762 發表於 2014-7-17 10:40 AM
    看見您的回覆後
    立馬查看自身的模擬器
    3CEAM[R720]

    getarraysize(.@item) = 4

    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    奮斗
    2021-8-26 07:22 PM
  • 簽到天數: 150 天

    連續簽到: 1 天

    [LV.7]常住居民III

     樓主| 發表於 2014-7-17 10:53:44 | 顯示全部樓層
    kira1122 發表於 2014-7-17 10:46 AM
    getarraysize(.@item) = 4

    好的了解了
    不能直接套入.@item 因 這個是變數

    這樣做為理解
    應該行的通吧
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    無聊
    2021-10-5 01:09 PM
  • 簽到天數: 938 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2014-7-17 11:15:32 | 顯示全部樓層
    bsexp102762 發表於 2014-7-17 10:53 AM
    好的了解了
    不能直接套入.@item 因 這個是變數
    1. //紅色藥水,赤色藥水,黃色藥水,白色藥水
    2. setarray .@item[0],501,502,503,504;
    3. mes "總共有 "+getarraysize(.@item)+" 個物品";
    4. mes "物品列表:";
    5. for(set .@i,0; .@i<getarraysize(.@item); set .@i, .@i+1) {
    6.         mes "No."+.@i+" "+getitemname(.@item[.@i]);
    7. }
    8. next;
    9. getitem .@item[rand(getarraysize(.@item))],1;
    10. close;
    複製代碼
    一直問不如寫個腳本去測試一下更容易了解用法 .....

    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    奮斗
    2021-8-26 07:22 PM
  • 簽到天數: 150 天

    連續簽到: 1 天

    [LV.7]常住居民III

     樓主| 發表於 2014-7-17 11:37:09 | 顯示全部樓層
    kira1122 發表於 2014-7-17 11:15 AM
    一直問不如寫個腳本去測試一下更容易了解用法 .....

    好的了解..
    回復 支持 反對

    使用道具 舉報

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

    本版積分規則

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

    GMT+8, 2024-4-25 11:27 AM , Processed in 0.059452 second(s), 20 queries , Gzip On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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