Thread Tools Display Modes
11-20-08, 04:31 AM   #1
berserke
A Kobold Labourer
Join Date: Nov 2008
Posts: 1
Please help with ChatFrame_OnEvent

Hi,

I use an addon (GuildBanker) to manage my guild bank (vault and bank reroll).

This addons wasn't updated since 2.10. He works until 2.4.3 but since 3.0.2 it's broken.

I never made an addon before, but I need it, so I try to debug it !

For now, my big problem is function ChatFrame_OnEvent

This is the code in the LUA :
Code:
function GuildBanker_ChatFrame_OnEvent(event)

        local lang = GetLanguageByIndex(1);

        local isQuery = false;

        local Cmd, qrCommand, qrSubCommand;

        Cmd, qrCommand = GuildBanker_GetCmd(arg1);

        if(Cmd == "GUILDBANKERQUERY") then

                isQuery = true;

                qrCommand,qrSubCommand = GuildBanker_GetCmd(qrCommand);

        end





        if (strsub(event,1,23) == "CHAT_MSG_WHISPER_INFORM") then

                if(not isQuery) then

                        gbOrgChatFrame_OnEvent(event);

                end

        elseif (strsub(event, 1, 16) == "CHAT_MSG_WHISPER") then

                if(isQuery) then

                        if(qrCommand == "broadcastoffer") then

                                if(gbBroadcasting > 0) then

                                        SendChatMessage("GUILDBANKERQUERY broadcastbusy", "WHISPER", lang, arg2);

                                else

                                        gbBroadcasting = GBBROADCAST_RECEIVEQUERY;

                                        gbBroadcastTarget = arg2;

                                        GuildBanker_DisplayYesOrNoQuestion(GUILDBANKERMSG_BROADCASTTITLE, gbBroadcastTarget.." is offering to broadcast GuildBanker data to you. This will replace your existing GuildBanker data and cannot be reversed. Do you want to accept?", GuildBanker_BroadcastAccept);

                                end

                        elseif(qrCommand == "broadcastbusy") then

                                local msg = arg2.." is already sending or receiving a GuildBanker broadcast.";

                                DEFAULT_CHAT_FRAME:AddMessage(msg);

                                UIErrorsFrame:AddMessage(msg, 1,0,0, 1, 5);

                                gbBroadcasting = 0;

                                GuildBankerOptionsBroadcastButton:Enable();

                                GuildBankerMessageFrame:Hide();

                        elseif(gbBroadcastTarget == arg2) then

                                if(qrCommand == "broadcastaccept") then

                                        GuildBanker_DisplayMessage(GUILDBANKERMSG_BROADCASTTITLE, "GuildBanker Broadcast Accepted By "..gbBroadcastTarget..".");

                                        gbTimeSinceLast = 0;

                                        gbBroadcasting = GBBROADCAST_SENDING;

                                        gbBroadcastStockExpected = table.getn(GUILDBANKER_STOCK[gbRealm]);

                                        gbBroadcastRosterExpected = table.getn(GUILDBANKER_ROSTER[gbRealm]);

                                        gbBroadcastStockSent = 0;

                                        gbBroadcastRosterSent = 0;

                                        SendChatMessage("GUILDBANKERQUERY broadcastcounts stockcount="..gbBroadcastStockExpected.." rostercount="..gbBroadcastRosterExpected, "WHISPER", lang, gbBroadcastTarget);

                                        GuildBanker_UpdateProgressMessage();

                                elseif(qrCommand == "broadcastoffertimeout") then

                                        gbBroadcasting = 0;

                                        GuildBankerYesOrNoFrame:Hide();

                                        GuildBankerMessageFrame:Hide();

                                elseif(qrCommand == "broadcastreject") then

                                        gbBroadcasting = 0;

                                        GuildBankerMessageFrame:Hide();

                                        local msg = gbBroadcastTarget.." did not accept GuildBanker broadcast.";

                                        DEFAULT_CHAT_FRAME:AddMessage(msg);

                                        UIErrorsFrame:AddMessage(msg, 1,0,0, 1, 5);

                                elseif(gbBroadcasting == GBBROADCAST_RECEIVEQUERY) then

                                        if(qrCommand == "broadcastcounts" and qrSubCommand) then

                                                gbTimeSinceLast = 0;

                                                qrCommand = qrSubCommand;

                                                repeat

                                                        qrCommand,qrSubCommand = GuildBanker_GetCmd(qrCommand);

                                                        local Argument, Answer = GuildBanker_GetArgument(qrCommand);

                                                        if(Argument == "stockcount") then

                                                                gbBroadcastStockExpected = Answer+0;

                                                        elseif(Argument == "rostercount") then

                                                                gbBroadcastRosterExpected = Answer+0;

                                                        end

                                                        qrCommand = qrSubCommand;

                                                until(not qrCommand)

                                                if(gbBroadcastStockExpected >= 0 and gbBroadcastRosterExpected >= 0) then

                                                        gbBroadcasting = GBBROADCAST_RECEIVING;

                                                        gbTimeSinceLast = 0;
GuildBankerMessageFrameTitle:SetText(GUILDBANKERMSG_BROADCASTTITLE);

                                                        GuildBanker_UpdateProgressMessage();

                                                end

                                        end

                                elseif(gbBroadcasting == GBBROADCAST_RECEIVING) then

                                        if(qrCommand == "stock" and qrSubCommand) then

                                                gbTimeSinceLast = 0;

                                                qrCommand,qrSubCommand = GuildBanker_GetCmd(qrSubCommand);

                                                local i = qrCommand+0;

                                                if(gbBroadcastStock == nil) then

                                                        gbBroadcastStock[i] = {};

                                                end

                                                qrCommand,qrSubCommand = GuildBanker_GetCmd(qrSubCommand);

                                                if(qrCommand == "id") then

                                                        gbBroadcastStock[i][GUILDSTOCKN_ID] = qrSubCommand+0;

                                                elseif(qrCommand == "link") then

                                                        gbBroadcastStock[i][GUILDSTOCKN_HYPERLINK] = qrSubCommand;

                                                elseif(qrCommand == "name") then

                                                        gbBroadcastStock[i][GUILDSTOCKN_NAME] = qrSubCommand;

                                                elseif(qrCommand == "value") then

                                                        gbBroadcastStock[i][GUILDSTOCKN_VALUE] = qrSubCommand+0;

                                                elseif(qrCommand == "quantity") then

                                                        gbBroadcastStock[i][GUILDSTOCKN_QUANTITY] = qrSubCommand+0;

                                                elseif(qrCommand == "location") then

                                                        gbBroadcastStock[i][GUILDSTOCKN_LOCATION] = qrSubCommand;

                                                elseif(qrCommand == "time") then

                                                        gbBroadcastStock[i][GUILDSTOCKN_TIME] = qrSubCommand+0;

                                                elseif(qrCommand == "category") then

                                                        gbBroadcastStock[i][GUILDSTOCKN_CATEGORY] = qrSubCommand;

                                                elseif(qrCommand == "textlink") then

                                                        gbBroadcastStock[i][GUILDSTOCKN_TEXTLINK] = qrSubCommand;

                                                end

                                                if(gbBroadcastStock[i][GUILDSTOCKN_ID] ~= nil and

                                                        gbBroadcastStock[i][GUILDSTOCKN_HYPERLINK] ~= nil and

                                                        gbBroadcastStock[i][GUILDSTOCKN_NAME] ~= nil and

                                                        gbBroadcastStock[i][GUILDSTOCKN_VALUE] ~= nil and

                                                        gbBroadcastStock[i][GUILDSTOCKN_QUANTITY] ~= nil and

                                                        gbBroadcastStock[i][GUILDSTOCKN_LOCATION] ~= nil and

                                                        gbBroadcastStock[i][GUILDSTOCKN_TIME] ~= nil and

                                                        gbBroadcastStock[i][GUILDSTOCKN_CATEGORY] ~= nil and

                                                        gbBroadcastStock[i][GUILDSTOCKN_TEXTLINK] ~= nil) then

                                                        gbBroadcastStockSent = i;

                                                        GuildBanker_UpdateProgressMessage();

                                                end

                                        elseif(qrCommand == "roster" and qrSubCommand) then

                                                gbTimeSinceLast = 0;

                                                qrCommand,qrSubCommand = GuildBanker_GetCmd(qrSubCommand);

                                                local i = qrCommand+0;

                                                if(gbBroadcastRoster[i] == nil) then

                                                        gbBroadcastRoster[i] = {};

                                                end

                                                qrCommand,qrSubCommand = GuildBanker_GetCmd(qrSubCommand);

                                                if(qrCommand == "name") then

                                                        gbBroadcastRoster[i][GUILDROSTERN_NAME] = qrSubCommand;

                                                        gbBroadcastRoster[i][GUILDROSTERN_NOTE] = "";

                                                elseif(qrCommand == "funds") then

                                                        gbBroadcastRoster[i][GUILDROSTERN_FUNDS] = qrSubCommand+0;

                                                end

                                                if(gbBroadcastRoster[i][GUILDROSTERN_NAME] ~= nil and

                                                        gbBroadcastRoster[i][GUILDROSTERN_FUNDS] ~= nil) then

                                                        gbBroadcastRosterSent = i;

                                                        GuildBanker_UpdateProgressMessage();

                                                end

                                        end

                                end

                        end

                else

                        gbOrgChatFrame_OnEvent(event);

                end

        else

                gbOrgChatFrame_OnEvent(event);

        end

end
I've got an lua error for the line if (strsub(event,1,23) == "CHAT_MSG_WHISPER_INFORM") then who said that function expected string, but got table.

I know that I must use what is explain here :http://www.wowwiki.com/API_ChatFrame...ageEventFilter but I don't understand how to implement it in my case.

Someone can help me ?

Thanks you
  Reply With Quote

WoWInterface » Developer Discussions » Lua/XML Help » Please help with ChatFrame_OnEvent


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off