OK論壇

 找回密碼
 註冊
查看: 4324|回復: 19

OX益智問答選擇題BUG (SEAR、SQL)

[複製鏈接]
  • TA的每日心情
    慵懶
    2013-4-30 08:54 AM
  • 簽到天數: 75 天

    連續簽到: 1 天

    [LV.6]常住居民II

    發表於 2013-3-27 10:51:14 | 顯示全部樓層 |閱讀模式
    EA
    私服版號: SeAr 1.9.81 big5
    問題內容: 腳本問題
    本帖最後由 modoki 於 2013-3-29 11:10 PM 編輯

    我使用了這篇的OX益智問答腳本
    http://okayro.com/thread-164627-1-4.html
    使用SQL的
    SQL我是使用Appsever 2.5.10安裝

    是非題都正常運作,但是選擇題常常出現正確選項讀取不到的問題
    有時又正常,試過重新安裝資料庫
    還是會出現這種狀況
    如圖,選項二


    如圖,公布正確答案時也一樣


    不知道有沒有人遇過一樣的問題?

    回復

    使用道具 舉報

  • TA的每日心情

    2017-1-18 12:17 AM
  • 簽到天數: 512 天

    連續簽到: 1 天

    [LV.9]以壇為家II

    發表於 2013-3-27 11:38:39 | 顯示全部樓層
    稍微看了一下,

    別被 "選項四" 給騙了,

    他本身是亂數產生,

    所以實際問題仍為腳本對SQL下指令 SELECT 不到資料 (他很大膽使用SQL中的rand的函數...負面後果蠻多的),

    你可以再出現該問題的時候看一下 小黑窗的錯誤訊息,

    應該是會有的, 再貼上來吧。

    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    慵懶
    2013-4-30 08:54 AM
  • 簽到天數: 75 天

    連續簽到: 1 天

    [LV.6]常住居民II

     樓主| 發表於 2013-3-27 11:42:00 | 顯示全部樓層
    grass0916 發表於 2013-3-27 11:38 AM
    稍微看了一下,

    別被 "選項四" 給騙了,

    我知道他選項是rand出來的
    rand到的那格指定為AnswerR (正確
    其他就丟進錯誤選項
    我在想是否為讀取SQL資料庫時出錯,但是想不到如何解決
    我再多注意一下小黑窗!!

    回復 支持 反對

    使用道具 舉報

  • TA的每日心情

    2017-1-18 12:17 AM
  • 簽到天數: 512 天

    連續簽到: 1 天

    [LV.9]以壇為家II

    發表於 2013-3-27 12:06:05 | 顯示全部樓層
    modoki 發表於 2013-3-27 11:42 AM
    我知道他選項是rand出來的
    rand到的那格指定為AnswerR (正確
    其他就丟進錯誤選項

    先試問 SQL 中, 選擇題的題目有確定存在 database 當中嗎 ?
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    慵懶
    2013-4-30 08:54 AM
  • 簽到天數: 75 天

    連續簽到: 1 天

    [LV.6]常住居民II

     樓主| 發表於 2013-3-27 12:17:51 | 顯示全部樓層
    grass0916 發表於 2013-3-27 12:06 PM
    先試問 SQL 中, 選擇題的題目有確定存在 database 當中嗎 ?

    有,我進SQL裡面去看過
    AnswerR那一格有資料

    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    慵懶
    2013-4-30 08:54 AM
  • 簽到天數: 75 天

    連續簽到: 1 天

    [LV.6]常住居民II

     樓主| 發表於 2013-3-27 15:27:00 | 顯示全部樓層
    本帖最後由 modoki 於 2013-3-27 03:28 PM 編輯
    grass0916 發表於 2013-3-27 11:38 AM
    稍微看了一下,

    別被 "選項四" 給騙了,

    附上小黑窗畫面




    回復 支持 反對

    使用道具 舉報

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

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2013-3-27 18:05:33 | 顯示全部樓層
    modoki 發表於 2013-3-27 03:27 PM
    附上小黑窗畫面

    在確認 .@OXAnsR$ 可以正確印出情況下

    依照debugmes來看 問題大概可以縮小至
    set $OXAnsNumber,rand(4)+1;

    set $OXAns$[$OXAnsNumber],.@OXAnsR$;
    這裡推斷是沒有存入 導致在公告顯示上會變成空

    但是又有進入switch($OXAnsNumber)
    所以有點不合理的情況發生,作者腳本大致上沒有錯誤

    可以試著把 $OXAnsNumber 印出來看看
    然後把
    set $OXAns$[$OXAnsNumber],.@OXAnsR$;
    移到switch結束之後 做測試



    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    慵懶
    2013-4-30 08:54 AM
  • 簽到天數: 75 天

    連續簽到: 1 天

    [LV.6]常住居民II

     樓主| 發表於 2013-3-27 23:22:08 | 顯示全部樓層
    o03126 發表於 2013-3-27 06:05 PM
    在確認 .@OXAnsR$ 可以正確印出情況下

    依照debugmes來看 問題大概可以縮小至

    感謝,我參考你的方法改了一次
    無法解決
    之後我把腳本改成

    set $OXAnsNumber,rand(1,4);
    然後在每個 case 中強制指定正確選項,比如說:
        switch($OXAnsNumber)
        {
            case 1:
                switch(rand(6))
                {
                        case 0:
                        set $OXAns$[1],.@OXAnsR$;
                        set $OXAns$[2],.@OXAnsN1$;
                        set $OXAns$[3],.@OXAnsN2$;
                        set $OXAns$[4],.@OXAnsN3$;
    ........................................}}

    結果出來小黑窗依然有讀到,但顯示一樣,正確選項還是只有句號出現
    不知道有沒有其他比較好的改法?

    回復 支持 反對

    使用道具 舉報

  • TA的每日心情

    2016-12-15 11:58 PM
  • 簽到天數: 379 天

    連續簽到: 1 天

    [LV.9]以壇為家II

    發表於 2013-3-28 01:12:26 | 顯示全部樓層
    1. set $OXAns$[$OXAnsNumber],.@OXAnsR$;
    2. ->
    3. set getelementofarray($OXAns$,$OXAnsNumber),.@OXAnsR$;
    複製代碼
    試試?
    回復 支持 反對

    使用道具 舉報

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

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2013-3-28 01:51:07 | 顯示全部樓層
    modoki 發表於 2013-3-27 11:22 PM
    感謝,我參考你的方法改了一次
    無法解決
    之後我把腳本改成

    我測試結果是把每個選項都補上
    的確是可以正常顯示=.=

    這感覺是服務端本身的問題了
    嘗試各種建置array的方式都會有吃字的問題 即便debugmes沒錯
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    慵懶
    2013-4-30 08:54 AM
  • 簽到天數: 75 天

    連續簽到: 1 天

    [LV.6]常住居民II

     樓主| 發表於 2013-3-28 15:44:16 | 顯示全部樓層
    球魁 發表於 2013-3-28 01:12 AM
    試試?

    您好

    我不太懂這個 function 的功用?
    getelementofarray
    是用來檢查陣列內的錯誤嗎?
    實際使用起來怎麼操作

    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    慵懶
    2013-4-30 08:54 AM
  • 簽到天數: 75 天

    連續簽到: 1 天

    [LV.6]常住居民II

     樓主| 發表於 2013-3-28 15:46:33 | 顯示全部樓層
    o03126 發表於 2013-3-28 01:51 AM
    我測試結果是把每個選項都補上
    的確是可以正常顯示=.=

    我找到問題點在哪裡了

    我把腳本後方全部註解起來強制改成

        debugmes .@OXAnsR$;
        debugmes .@OXAnsN1$;
        debugmes .@OXAnsN2$;
        debugmes .@OXAnsN3$;

        set $OXAns$[4],.@OXAnsR$;
        set $OXAns$[1],.@OXAnsN3$;
        set $OXAns$[2],.@OXAnsN2$;
        set $OXAns$[3],.@OXAnsN1$;
        debugmes $OXAns$[1];
        debugmes $OXAns$[2];
        debugmes $OXAns$[3];
        debugmes $OXAns$[4];



    所以是 .@OXAnsR$ 有東西存在,但是存不進$OXAns$[4]
    但是我不知道怎麼去解決這個問題........

    回復 支持 反對

    使用道具 舉報

  • TA的每日心情

    2017-1-18 12:17 AM
  • 簽到天數: 512 天

    連續簽到: 1 天

    [LV.9]以壇為家II

    發表於 2013-3-28 16:12:24 | 顯示全部樓層
    本帖最後由 grass0916 於 2013-3-28 04:52 PM 編輯
    o03126 發表於 2013-3-28 01:51 AM
    我測試結果是把每個選項都補上
    的確是可以正常顯示=.=

    EA 的 array 只允許 index 2^8 (256)

    ↑ 可以看看 SQL 中 global_reg_value 的 value 其 type 為 varchar( 255 )

    但實際可用似乎是 -127 ~ 128 (儲存也只存 0~ 128, -127~ -1 被浪費了)

    字串也只是字元的陣列表現形式,

    結論就是只能 key 129 個字元 (中文64個字.吧)

    -

    有錯再補。

    回復 支持 反對

    使用道具 舉報

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

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2013-3-28 17:56:43 | 顯示全部樓層
    modoki 發表於 2013-3-28 03:46 PM
    我找到問題點在哪裡了

    我把腳本後方全部註解起來強制改成

    我測試過了 只要在sear的環境底下
    以這種switch 方式 非排序的情況下放入陣列值
    必定會導致這樣的情況
    而且是機率性內容會被吃掉

    但如果你在announce前方加入其他顯示字 他就能正常顯示



    回復 支持 反對

    使用道具 舉報

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

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2013-3-28 17:58:36 | 顯示全部樓層
    grass0916 發表於 2013-3-28 04:12 PM
    EA 的 array 只允許 index 2^8 (256)

    ↑ 可以看看 SQL 中 global_reg_value 的 value 其 type 為 varc ...

    這跟array可放的大小沒關係..
    純粹是sear的問題
    至於其他版本我就不清楚了

    你可以試著把他那段switch+上方放入陣列的方式
    直接mes出來不加入其他字串
    就能明白了 Orz
    回復 支持 反對

    使用道具 舉報

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

    本版積分規則

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

    GMT+8, 2024-5-31 12:07 AM , Processed in 0.058269 second(s), 21 queries , Gzip On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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