z0202520 發表於 2016-3-12 01:25:31

rAthena 的 unittalk cmd 修改

本帖最後由 z0202520 於 2016-3-12 02:31 AM 編輯

因為 unititalk 會顯示 npc 全名。
所以我想把它改成只顯示 npc 的前名不顯示 npc 的 hidden name。
有參考論壇版上的教學
http://okayro.com/thread-256280-1-3.html

該教學的該段程式是有問題的,char 無法直接等於 const char
talker = status_get_name(bl);

因此我自己稍微修改一下成
BUILDIN_FUNC(unittalk)
{
        int unit_id, i;
        char* talker;
        const char* message;
        struct block_list* bl;

        unit_id = script_getnum(st,2);
        message = script_getstr(st,3);

        bl = map_id2bl(unit_id);

        if (bl != NULL) {
                struct StringBuf sbuf;
                strcpy(talker, status_get_name(bl));
                for (i=0; i<strlen(talker); i++ )
                        if ( talker == '#' )
                                talker = '\0';

                StringBuf_Init(&sbuf);
                StringBuf_Printf(&sbuf, "%s : %s", talker, message);
                clif_disp_overhead(bl, StringBuf_Value(&sbuf));
                StringBuf_Destroy(&sbuf);
        }

        return SCRIPT_CMD_SUCCESS;
}

在未修改前的原始版本是可以正常使用的
但是在修改完後出現了異常的錯誤,如下圖 (火狐瀏覽器無法開啟鑲嵌圖片視窗,因此直接貼圖片網址)
http://i.imgur.com/FoGMJwe.jpg
當對話到小麥•傑克時就會在小黑窗出現錯誤
script : run_script_main : unknown command : 1241513984 @ 1840

照程式碼看起來應該是沒有問題才對
有勞高手幫忙了,謝謝。

sinya 發表於 2016-3-13 18:12:24

本帖最後由 sinya 於 2016-3-14 07:06 PM 編輯

talker 不要用指標 就沒警告了 用這樣
char talker;
頁: [1]
查看完整版本: rAthena 的 unittalk cmd 修改