1

我正在搜索聊天中的某些单词,然后将它们发送到指定的聊天框它可以工作但随机导致错误并导致游戏崩溃的插件

此应用程序遇到严重错误:
错误 #132 (0x85100084) 致命异常
程序:C:\WoW\Wow.exe
例外:0023:00416DB0 处的 0xC0000005 (ACCESS_VIOLATION)

“0x00416DB0”处的指令引用了“0x1F97FFFE”处的内存。
无法“读取”内存。


崩溃后我打开作弊引擎浏览该区域,看看那里有什么

1F97FFFE:http://i.imgur.com/D7XKi2D.jpg
00416DB0:http://i.imgur.com/duTM315.jpg

和插件代码:

--事件 CHAT_MSG_CHANNEL
如果事件 == "CHAT_MSG_CHANNEL" 那么
    如果 TriggerEnabled 然后
        本地 arg1 = string.lower(arg1)
        本地找到,转储 = 假,假

        对于 k,v 成对(lsus.Triggers)做
            如果没有找到那么
                对于 k,v 成对 (lsus.NegTriggers) 做
                    如果 (string.find(arg1, v)) 那么
                        转储=真
                    结尾
                结尾

                if (string.find(arg1, v)) 并且不转储 then
                    本地输出 = " [\124Hplayer:" .. arg2 .. ":1:WHISPER\124h" .. arg2 .. "\124h\124r]: " .. arg1:gsub(v, "\124c0000FF00\124h" . . string.upper(v) .. "\124h\124r")
                    打印(输出,0.41,0.80,0.94)
                    找到=真
                结尾
            结尾
        结尾
    结尾
结尾


--打印功能
功能打印(味精,r,g,b)
    如果不是 r 那么
        ChatFrame1:添加消息(消息)
    别的
        ChatFrame1:AddMessage(msg, r, g, b)
    结尾
结尾

谁能帮我解释为什么这会导致游戏崩溃?

4

1 回答 1

0

可能不是您的情况,但请尝试使用string.find(arg1, v, 1, true)而不是string.find(arg1, v)避免由于模式中的魔术字符导致的意外行为。

-- Example:
local str = 'string.find hangs on this string'
string.find(str, '.*.*.*.*.*.*.*.*.*.*.*#')
于 2013-03-05T21:17:41.233 回答