OK論壇

 找回密碼
 註冊
查看: 2384|回復: 18

變數長度的疑問

 關閉 [複製鏈接]
  • TA的每日心情
    擦汗
    2021-1-3 02:46 PM
  • 簽到天數: 360 天

    連續簽到: 1 天

    [LV.8]以壇為家I

    發表於 2014-7-16 15:39:33 | 顯示全部樓層 |閱讀模式
    EA
    私服版號: SeAr1.10.132
    問題內容: 腳本問題
    本帖最後由 z0202520 於 2014-7-18 09:49 PM 編輯

    最近有寫一個小的NPC,主要是拿來紀錄玩家所獲得的Exp
    但是怪物的經驗量隨著設定的倍率有所成長。
    在紀錄方面,打低等的怪物或Mvp都沒問題....
    但是,當擊殺經驗較多怪物後,因為經驗太多
    變數的長度(Byte)不夠,所以無法紀錄進去...

    在這裡要提問的是
    具我瞭解的部分,SeAr的變數只有區分型態
    1.   name  - permanent character integer variable
    2.   name$ - permanent character string variable
    3. @name  - temporary character integer variable
    4. @name$ - temporary character string variable
    5. $name  - permanent global integer variable
    6. $name$ - permanent global string variable
    7. $@name  - temporary global integer variable
    8. $@name$ - temporary global string variable
    9. .name  - NPC integer variable
    10. .name$ - NPC string variable
    11. .@name  - scope integer variable
    12. .@name$ - scope string variable
    13. #name  - permanent local account integer variable
    14. #name$ - permanent local account string variable
    15. ##name  - permanent global account integer variable
    16. ##name$ - permanent global account string variable
    複製代碼
    好像沒提及變數的長度..
    包含單精度(Single)的計算跟長整數這些...
    因此我要做小數運算好像沒辦法記錄
    長度太長的數字也沒辦法記錄

    不知道各位大哥大姊有沒有清楚哪些變數或方法可以使用?
    回復

    使用道具 舉報

  • TA的每日心情
    擦汗
    2018-9-15 03:18 PM
  • 簽到天數: 842 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2014-7-16 15:43:51 | 顯示全部樓層
    用字串來記錄 沒有長度問題
    雖然也是有limit但是基本上應該不會超過了
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2021-1-3 02:46 PM
  • 簽到天數: 360 天

    連續簽到: 1 天

    [LV.8]以壇為家I

     樓主| 發表於 2014-7-16 15:45:41 | 顯示全部樓層
    o03126 發表於 2014-7-16 03:43 PM
    用字串來記錄 沒有長度問題
    雖然也是有limit但是基本上應該不會超過了

    但是我記錄起來的經驗值還要做運算耶..
    用字串就沒辦法運算了~~
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2018-9-15 03:18 PM
  • 簽到天數: 842 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2014-7-16 15:46:44 | 顯示全部樓層
    z0202520 發表於 2014-7-16 03:45 PM
    但是我記錄起來的經驗值還要做運算耶..
    用字串就沒辦法運算了~~

    字串轉數字 -> atoi(.@abc$)
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2021-1-3 02:46 PM
  • 簽到天數: 360 天

    連續簽到: 1 天

    [LV.8]以壇為家I

     樓主| 發表於 2014-7-16 16:49:49 | 顯示全部樓層
    o03126 發表於 2014-7-16 03:46 PM
    字串轉數字 -> atoi(.@abc$)

    經過.@name$變數儲存後再轉換為數值
    一樣沒辦法,他數字長度過長。
    我將數值顯示出來時,會顯示 -1..


    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    無聊
    2023-11-5 12:14 PM
  • 簽到天數: 2233 天

    連續簽到: 1 天

    [LV.Master]伴壇終老

    發表於 2014-7-16 17:40:57 | 顯示全部樓層
    z0202520 發表於 2014-7-16 04:49 PM
    經過.@name$變數儲存後再轉換為數值
    一樣沒辦法,他數字長度過長。
    我將數值顯示出來時,會顯示 -1..

    你需要這個
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2018-9-15 03:18 PM
  • 簽到天數: 842 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2014-7-16 19:13:15 | 顯示全部樓層
    z0202520 發表於 2014-7-16 04:49 PM
    經過.@name$變數儲存後再轉換為數值
    一樣沒辦法,他數字長度過長。
    我將數值顯示出來時,會顯示 -1..

    我方法已經告訴你了
    這概念就是類似大數運算

    可以把字串切割再運算返存回字串
    至於方法就多想想吧
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2021-1-3 02:46 PM
  • 簽到天數: 360 天

    連續簽到: 1 天

    [LV.8]以壇為家I

     樓主| 發表於 2014-7-17 01:51:13 | 顯示全部樓層
    o03126 發表於 2014-7-16 07:13 PM
    我方法已經告訴你了
    這概念就是類似大數運算

    OK,已瞭解,那麼在請問您一個問題..
    他變數的Integer長度到底支援到多少?
    有明確的數字嗎
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2019-8-18 04:57 PM
  • 簽到天數: 2148 天

    連續簽到: 1 天

    [LV.Master]伴壇終老

    發表於 2014-7-17 09:18:24 | 顯示全部樓層
    z0202520 發表於 2014-7-17 01:51 AM
    OK,已瞭解,那麼在請問您一個問題..
    他變數的Integer長度到底支援到多少?
    有明確的數字嗎

    http://rathena.org/wiki/Variables#Minima_and_Maxima_of_Variables

    Maximum Values
    • Integer: Can contain a value from -2147483648 to 2147483647 (Signed integer)

    都是同一家模擬器來的, 應該都一樣
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2021-1-3 02:46 PM
  • 簽到天數: 360 天

    連續簽到: 1 天

    [LV.8]以壇為家I

     樓主| 發表於 2014-7-17 11:02:25 | 顯示全部樓層
    goddameit 發表於 2014-7-17 09:18 AM
    http://rathena.org/wiki/Variables#Minima_and_Maxima_of_Variables

    OK。謝謝你
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2021-1-3 02:46 PM
  • 簽到天數: 360 天

    連續簽到: 1 天

    [LV.8]以壇為家I

     樓主| 發表於 2014-7-17 11:03:39 | 顯示全部樓層
    o03126 發表於 2014-7-16 07:13 PM
    我方法已經告訴你了
    這概念就是類似大數運算

    不好意思,請問您一下= ="
    我在doc裡面的 6.- 其他指令. 確實有找到分割str的語法
    但是沒有找到判斷字串數字的語法耶... 不知道開發端那邊有沒有寫
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2018-9-15 03:18 PM
  • 簽到天數: 842 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2014-7-17 19:16:52 | 顯示全部樓層
    z0202520 發表於 2014-7-17 11:03 AM
    不好意思,請問您一下= ="
    我在doc裡面的 6.- 其他指令. 確實有找到分割str的語法
    但是沒有找到判斷字串 ...

    ?

    1. *atoi ("<字符串>")
    2. *axtoi ("<字符串>")

    3. 此類命令用來轉換字符串為數字
    4. atoi 轉換十進制數字而 axtoi 轉換十六進制.
    複製代碼
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2021-1-3 02:46 PM
  • 簽到天數: 360 天

    連續簽到: 1 天

    [LV.8]以壇為家I

     樓主| 發表於 2014-7-17 23:36:31 | 顯示全部樓層
    o03126 發表於 2014-7-17 07:16 PM
    ?

    不是,是字數判斷Len()
    只是我不知道在這個模擬器上是什麼...
    剛剛看了一下其他指令區好像沒有
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2018-9-15 03:18 PM
  • 簽到天數: 842 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2014-7-17 23:57:52 | 顯示全部樓層
    z0202520 發表於 2014-7-17 11:36 PM
    不是,是字數判斷Len()
    只是我不知道在這個模擬器上是什麼...
    剛剛看了一下其他指令區好像沒有

    *getstrlen("<string>")
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2021-1-3 02:46 PM
  • 簽到天數: 360 天

    連續簽到: 1 天

    [LV.8]以壇為家I

     樓主| 發表於 2014-7-18 16:13:10 | 顯示全部樓層
    本帖最後由 z0202520 於 2014-7-18 04:15 PM 編輯
    o03126 發表於 2014-7-17 11:57 PM
    *getstrlen("")

    經過一些測試後.. 仍然不行
    好像是她模擬器支援的長度會直接溢位

    這是我實測的結果..
    波利經驗200萬x1000倍率=20E經驗
    在聊天室顯示的內容 第一個數字是實際經驗(字串型態)
    而 第二個數字則是除以1萬後的經驗(數字型態)
    而這個比較沒問題,因為沒超過上限長度


    第二個實測則是 波利經驗400萬x1000倍率=40E
    好像就突破 2147483647 了,所以直接破表變成負數


    第三個測試 波利經驗1000萬x1000倍率=100E
    直接變為-1,沒辦法做運算
    1. if(getstrlen(.@Peak_Exp$) >= 9)
    2.                 set .@Peak_Exp,atoi(substr(.@Peak_Exp$,0,getstrlen(.@Peak_Exp$)-5));
    3.         else
    4.                 set .@Peak_Exp,(atoi(.@Peak_Exp$)/10000);
    5.         set #Peak_Exp,#Peak_Exp + .@Peak_Exp;
    複製代碼
    小弟不才,這是我轉換經驗的寫法
    不知道是我寫法有問題,還是模擬器長度上限關係
    回復 支持 反對

    使用道具 舉報

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

    本版積分規則

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

    GMT+8, 2024-4-26 12:20 AM , Processed in 0.061890 second(s), 21 queries , Gzip On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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