OK論壇

 找回密碼
 註冊
查看: 905|回復: 9

MapServer在OnBuyItem後持續停頓

[複製鏈接]
  • TA的每日心情
    開心
    2018-1-18 03:10 PM
  • 簽到天數: 189 天

    連續簽到: 1 天

    [LV.7]常住居民III

    發表於 2014-5-26 00:20:23 | 顯示全部樓層 |閱讀模式
    本帖最後由 盧卡斯 於 2014-5-26 09:02 PM 編輯

    發現問題在於script.c,的max_arraysize不能超出一定的值, 我之前設定了256就出現了以下的情況, 然後我改了做168問題就解決了.
    1. -        shop        test        -1,501:-1.
    2. prontera,50,50,5        script        test        847,{
    3. callshop "test",0;
    4. npcshopattach "test";
    5. end;
    6. OnBuyItem:
    7. if(@bought_nameid[@i] == 502){ mes "test";close;}
    8. mes "error";
    9. end;
    10. OnInit:
    11.         npcshopitem "test", 502,10;
    12.         end;
    13. }
    複製代碼
    就以上如此簡單的動態商店腳本,我的地圖服務器在我買了物品502後停著了。

    地圖服務器沒有任何錯誤信息,但它只是停頓了。
    客戶端似乎從服務器斷開連接,但它沒有彈出斷開的提示。
    當我關閉遊戲並重新登錄到我的帳戶,我無法進入地圖服務器(可以選角色)。
    由於我無法在地圖服務器中查找錯誤,我也沒有辦法追查出了什麼問題。
    此外,我改過一些源碼。
    首先,我改變最大物品項目到65536。
    第二,我添加了onpcuseskill標籤。
    第三,我添加了三個自定義的技能與自定義狀態。
    第四,只是一些簡單的配置修改。
    除了OnBuyItem外,其他都正常運作。

    我已經找到npc.c.下面的源碼 它與RA最新的git沒有什麼不同。
    1. //npc_buylist for script-controlled shops.
    2. static int npc_buylist_sub(struct map_session_data* sd, int n, unsigned short* item_list, struct npc_data* nd)
    3. {
    4.         char npc_ev[EVENT_NAME_LENGTH];
    5.         int i;
    6.         int key_nameid = 0;
    7.         int key_amount = 0;

    8.         // discard old contents
    9.         script_cleararray_pc(sd, "@bought_nameid", (void*)0);
    10.         script_cleararray_pc(sd, "@bought_quantity", (void*)0);

    11.         // save list of bought items
    12.         for( i = 0; i < n; i++ )
    13.         {
    14.                 script_setarray_pc(sd, "@bought_nameid", i, (void*)(intptr_t)item_list[i*2+1], &key_nameid);
    15.                 script_setarray_pc(sd, "@bought_quantity", i, (void*)(intptr_t)item_list[i*2], &key_amount);
    16.         }

    17.         // invoke event
    18.         snprintf(npc_ev, ARRAYLENGTH(npc_ev), "%s::OnBuyItem", nd->exname);
    19.         npc_event(sd, npc_ev, 0);

    20.         return 0;
    21. }
    複製代碼
    不知道有沒有人可以跟我說一下找出問題的方法。
    或者,有沒有人也遇到過以上的情況且又能解決?
    回復

    使用道具 舉報

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

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2014-5-26 08:46:37 | 顯示全部樓層
    本帖最後由 kira1122 於 2014-5-26 09:19 AM 編輯

    講了這麼一推,其實就是你沒有給@i的值而已 .....
    1. -        shop        test        -1,501:-1
    2. prontera,50,50,5        script        test_test        847,{
    3.         set @i,0;
    4.         callshop "test",0;
    5.         npcshopattach "test";
    6.         end;
    7. OnBuyItem:
    8.         if(@bought_nameid[@i] == 502){ mes "test";close;}
    9.         mes "error";
    10.         end;
    11. OnInit:
    12.         npcshopitem "test", 502,10;
    13.         end;
    14. }
    複製代碼
    我測試沒問題,你試試看 ,順便提醒一下 NPC的名稱不要重複
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2018-1-18 03:10 PM
  • 簽到天數: 189 天

    連續簽到: 1 天

    [LV.7]常住居民III

     樓主| 發表於 2014-5-26 12:35:31 | 顯示全部樓層
    本帖最後由 盧卡斯 於 2014-5-26 12:39 PM 編輯
    kira1122 發表於 2014-5-26 08:46 AM
    講了這麼一推,其實就是你沒有給@i的值而已 .....我測試沒問題,你試試看 ,順便提醒一下 NPC的名稱不要重複

    謝謝你的回覆,
    由於我弄那個商店腳本時非常急,所以沒有注意到名字重覆的問題.
    @i的問題其實不影響測試, 因為第一次開啟時就算沒有設定@i 也會是0.
    當然之後我也有試過加入@i=0來測試, 可是問題還是預期地沒有解決.
    我那個情況是買道具後當觸發了onbuyitem, mapserver會完全停著, 且無法重新登入,也無法使用任何指令.

    重點是, 問題跟本不在於那個腳本, 而是源碼, 還有追尋問題的方法.
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2023-9-25 11:37 PM
  • 簽到天數: 1686 天

    連續簽到: 1 天

    [LV.Master]伴壇終老

    發表於 2014-5-26 12:48:38 | 顯示全部樓層
    盧卡斯 發表於 2014-5-26 12:35 PM
    謝謝你的回覆,
    由於我弄那個商店腳本時非常急,所以沒有注意到名字重覆的問題.
    @i的問題其實不影響測試, ...

    last git版 使用上無問題
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2018-1-18 03:10 PM
  • 簽到天數: 189 天

    連續簽到: 1 天

    [LV.7]常住居民III

     樓主| 發表於 2014-5-26 12:59:36 | 顯示全部樓層
    a91323 發表於 2014-5-26 12:48 PM
    last git版 使用上無問題

    我知道啊. 所以我覺得應該是我改源碼時並到它. 但是complie時沒有任何錯誤. Mapserver 又沒有任何錯誤. 所以想看看有沒有人有方法找到問題.
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2023-9-25 11:37 PM
  • 簽到天數: 1686 天

    連續簽到: 1 天

    [LV.Master]伴壇終老

    發表於 2014-5-26 13:11:08 | 顯示全部樓層
    盧卡斯 發表於 2014-5-26 12:59 PM
    我知道啊. 所以我覺得應該是我改源碼時並到它. 但是complie時沒有任何錯誤. Mapserver 又沒有任何錯誤. 所 ...

    那你該給的資訊是你更改過的patch
    不然你在這裡問幾百年也沒人知道

    ----------------------------------------------------------------------
    純屬推測
    首先,我改變最大物品項目到65536。
    有地方沒改好

    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2018-1-18 03:10 PM
  • 簽到天數: 189 天

    連續簽到: 1 天

    [LV.7]常住居民III

     樓主| 發表於 2014-5-26 13:27:12 | 顯示全部樓層
    本帖最後由 盧卡斯 於 2014-5-26 01:29 PM 編輯
    a91323 發表於 2014-5-26 01:11 PM
    那你該給的資訊是你更改過的patch
    不然你在這裡問幾百年也沒人知道

    所有的patch加起來真的有點太長了, 還有那個頭飾服裝化的SOURCE溜了說. 而且改了那麼多我都沒有做紀錄.

    MAXITEM 那個嫌疑的確最大, 不過網上都沒有完整的教學來改, 所以只好只是改. 只是改成一般情況下都得用, 重登不會消失, mapserver又沒有錯誤. 你有完整的patch嗎?


    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2023-9-25 11:37 PM
  • 簽到天數: 1686 天

    連續簽到: 1 天

    [LV.Master]伴壇終老

    發表於 2014-5-26 13:32:42 | 顯示全部樓層
    本帖最後由 a91323 於 2014-5-26 01:36 PM 編輯
    盧卡斯 發表於 2014-5-26 01:27 PM
    所有的patch加起來真的有點太長了, 還有那個頭飾服裝化的SOURCE溜了說. 而且改了那麼多我都沒有做紀錄.
    ...

    沒更改過,所以沒有patch
    問sinay看看吧
    如果想知道哪個環節出錯,就自己把更改的地方一一改回去原本的測試
    就可以抓出是哪邊的關係

    compiler沒有錯誤 != 沒有問題
    有些時候是在觸發時才會出現問題
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2018-1-18 03:10 PM
  • 簽到天數: 189 天

    連續簽到: 1 天

    [LV.7]常住居民III

     樓主| 發表於 2014-5-26 13:50:36 | 顯示全部樓層
    a91323 發表於 2014-5-26 01:32 PM
    沒更改過,所以沒有patch
    問sinay看看吧
    如果想知道哪個環節出錯,就自己把更改的地方一一改回去原本的 ...

    我有看過他在hercules的改max item回帖. 可是光改那2個其實是不夠的啦. 還有其他的要改, 前陣子我也有QQ他.
    我先試試改回max item32768看看...
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2018-1-18 03:10 PM
  • 簽到天數: 189 天

    連續簽到: 1 天

    [LV.7]常住居民III

     樓主| 發表於 2014-5-26 21:04:43 | 顯示全部樓層
    a91323 發表於 2014-5-26 01:32 PM
    沒更改過,所以沒有patch
    問sinay看看吧
    如果想知道哪個環節出錯,就自己把更改的地方一一改回去原本的 ...

    原來跟改max name_id 沒有關係. 但跟max_arraysize有關係... 我也不知道為什麼... 只是一個個改過的源碼檔套回最新git去試它出來. 後只發現只要改了那個數字就解決了...

    回復 支持 反對

    使用道具 舉報

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

    本版積分規則

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

    GMT+8, 2024-5-4 07:12 AM , Processed in 0.054068 second(s), 19 queries , Gzip On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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