WIM (WoW Instant Messenger) v3

WIM (WoW Instant Messenger) is a World of Warcraft addon which brings an instant messenger feel to communication in game.

I created WIM over 2 years ago with the curiosity of creating an addon. Since then, WIM has evolved into what it is today, however so many requests from the community were added into the addon which resulted in bulky and inefficient coding practices that took a toll on both CPU and Memory usage. To resolve this, I decided to rewrite WIM from scratch. Each feature is being reintroduced one at a time and being advanced upon. That being said, I welcome you to WIM 3.0.

Features

  • Whispers in their own windows.
  • Chat in their own windows.
  • Tabbed windows
    • Highly configurable.
  • History
    • Copy and paste as:
      • Raw Text
      • BBCode
  • Advanced, intellectual window behaviors & animations.
  • Skins
  • Emoticons
  • Clickable web URLS for easy viewing. No more retyping a long url a friend sends you.
  • Customizable sound options.
  • Expose - great way to clear your screen of windows when you are in combat.
  • Addon Compatibility: (Always make sure you are running the latest versions.
    • Prat
    • DBM

Video Demo

For more information WIM 3.0 and it's new features visit WIMAddon.com.

You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of LizMarr LizMarr May 01, 2013 at 21:49 UTC - 0 likes

    The other day I was texting a very helpful fellow hunter from a different realm. The hunter gave me a WoW address, I think (character name plus some numbers) I didn't take time to write it down thinking I would get it from the log later. I looked in the log after returning from a break. This player wasn't there. I looked more and no player from another realm was there. Have I installed something wrong or is there a solution? With the number of x-realm players there are some days I don't see one from my realm except for guild members.

  • Avatar of Andraste3 Andraste3 Apr 22, 2013 at 05:57 UTC - 0 likes

    This is a great addon, but there's one bug that's been, erm, bugging me: when I go back to look at my history, WIM incorrectly parses messages that were sent at the same time (think 2-3 WoW "paragraphs"). It doesn't seem to have a particular rhyme or reason, even though the log file will preserve the correct order of messages. Will it be possible to fix this?

  • Avatar of Krisshawnee Krisshawnee Apr 07, 2013 at 00:09 UTC - 0 likes

    I'm still getting a fading issue even though I'm up to date. I click on the window to type and it's staying faded (when it shouldn't be) then I click off (when it should fade) and it's brightening as though I'm typing.

    Last edited Apr 07, 2013 by Krisshawnee
  • Avatar of Dridzt Dridzt Mar 03, 2013 at 18:48 UTC - 0 likes

    @Rodriqo: Go

    Should be fixed in r366 alpha and later.

    Last edited Mar 03, 2013 by Dridzt
  • Avatar of Rodriqo Rodriqo Jan 20, 2013 at 15:54 UTC - 0 likes

    When I go to hit tab to cycle through whispers, I get the following error, and I apologize to the WIM staff in advanced if a work around has been posted that I had missed.

    Date: 2013-01-20 09:49:39
    ID: 1
    Error occured in: Global
    Count: 1
    Message: ..\FrameXML\ChatFrame.lua line 3946:
       bad argument #1 to 'strupper' (string expected, got nil)
    Debug:
       [C]: ?
       [C]: strupper()
       ..\FrameXML\ChatFrame.lua:3946: ChatEdit_GetNextTellTarget()
       WIM\Sources\WindowHandler.lua:1874: fun()
       WIM\Sources\WindowHandler.lua:390:
          WIM\Sources\WindowHandler.lua:382
       WIM\Sources\WindowHandler.lua:668:
          WIM\Sources\WindowHandler.lua:668
    Locals:
    (*temporary) = nil
    (*temporary) = "string expected, got nil"
    
    AddOns:
      Swatter, v4.0.1 (<%codename%>)
      Cursor, v5.0.0.1
      ACP, v3.4.1 
      Align, v
      ButtonFacade, v5.0.389
      clcppb, v
      CLCRet, v
      Clique, vv50100-1.0.0
      CTCore, v5.0004
      CTMailMod, v5.0003
      CTMapMod, v5.0004
      DBMCore, v
      Dominos, v5.1.1
      DominosConfig, v
      DominosRoll, v
      DominosXP, v
      ErrorFilter, v2.7
      Fatality, v2.3c
      FerousMedia, v1.6
      Grid, v5.1.0.1553
      gridautosizelayout, v
      GridConfigIcons, v50100-1
      GridIndicatorCornerIcons, v50100-1
      GridIndicatorCornerPlus, v50100-1
      GridIndicatorSideIcons, v50100-1
      GridIndicatorSidePlus, v50100-1
      GridIndicatorText3, v50100-1
      GridManaBars, v1.04
      GridStatusDungeonRole, v1.2.2
      GridStatusHealTrace, v5.1.0.32
      GridStatusHots, v4.3.1b
      GridStatusRaidDebuff, v5.1
      GridStatusRaidIcons, v50100-1
      GridStatusRDMoP, v1.2
      GridStatusThreat, v50100-1
      Masque, v5.1.389
      MasqueSleek, v4.3.0
      MoncaiHLI, v5.0.4
      NuttyRecruit, v6
      Omen, v3.1.7
      OmniCC, v5.1.2
      oRA3, v
      Quartz, v3.1.1
      Raven, v
      Recount, v
      sct, v6.62
      sctd, v6.61
      SexyMap, v2.4
      ShadowedUnitFrames, vv3.7.4
      SharedMedia, v3.0.5-183
      SharedMediaRenaitre, v4.3.3
      SharedMediaAdditionalFonts, v1.0.13
      SlideBar, v4.0.1 (<%codename%>)
      SuperGuildInvite, v6.3
      TidyPlates, v6.8.0 (R556)
      TidyPlatesGraphite, v
      TidyPlatesGrey, v
      TidyPlatesNeon, v
      TidyPlatesQuatre, v
      TidyPlatesHub, v
      TidyPlatesWidgets, v
      TipTac, v12.10.30
      TipTacItemRef, v12.08.30
      TipTacTalents, v12.09.05
      WeakAuras, v1.4.7.8
      WIM, v3.6.4
      XLoot, v0.91.7
      XLoot10, vz34-release
      XLootGroup, vz15-repack-release
      BlizRuntimeLib_enUS v5.1.0.50100 <us>
      (ck=638)
    
  • Avatar of mysticalos mysticalos Jan 18, 2013 at 21:29 UTC - 0 likes

    that's because wim uses staticpopupdialog and there is no elegent way to avoid that taint :\. Only fix is to probably rewrite a lot of popups in wim to not use it. then you're just gonna find ace3 or another mod also using staticpopupdialog will just taint it instead. ultimately i wish blizz would come up with a solution that makes staticpopupdialog work, or just block it and force authors to change it.

  • Avatar of MorticiaNoire MorticiaNoire Jan 05, 2013 at 11:38 UTC - 0 likes

    hi, i cant register on the other web page you have.it says registration is disabled.

    anyhow, my problem i am having is that, when i click on a quest item icon in the list of objectives next to a quest, i get a message saying wim has interfered and i have an option to disable wim.it doesnt generate a lua error. i can use the item in my bag still.this doesnt happen on all chars though so i am nto sure if another addon is interfering but it is hard to tell.

  • Avatar of mysticalos mysticalos Dec 27, 2012 at 21:58 UTC - 0 likes

    WoWEye, i seen that before. somehow your history got corrupt. clear history will fix that. no idea why that happens though.

  • Avatar of WoWEye WoWEye Dec 16, 2012 at 04:40 UTC - 0 likes

    I clicked on the button on the message window to view message history of a Real ID and got this error:
    Date: 2012-12-15 21:20:32
    ID: 1
    Error occured in: Global
    Count: 1
    Message: ..\AddOns\WIM\Modules\History.lua line 1041:
       attempt to get length of local 'tbl' (a nil value)
    Debug:
       WIM\Modules\History.lua:1041 UpdateConvoList()
       WIM\Modules\History.lua:1004 SelectConvo()
       WIM\Modules\History.lua:1363 ShowHistoryViewer()
       WIM\Modules\History.lua:115
          WIM\Modules\History.lua:113
    Locals:
    self = nil
    realm = "Borean Tundra"
    character = "Megapixel"
    tbl = nil
    (*temporary) = 1
    (*temporary) = "Megapixel"
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = "attempt to get length of local 'tbl' (a nil value)"
    win = WIM3_HistoryFrame {
     CONVO = "|Kf99|kWilliam Rice Jr|k"
     UpdateUserList = <function> defined @Interface\AddOns\WIM\Modules\History.lua:1058
     USERLIST = <table> {
     }
     UpdateDisplay = <function> defined @Interface\AddOns\WIM\Modules\History.lua:1009
     nav = <unnamed> {
     }
     progressBar = <unnamed> {
     }
     resize = <unnamed> {
     }
     USER = "Borean Tundra/Megapixel"
     FILTER = ""
     0 = <userdata>
     FILTERLIST = <table> {
     }
     SelectConvo = <function> defined @Interface\AddOns\WIM\Modules\History.lua:996
     search = <unnamed> {
     }
     TAB = 1
     UpdateConvoList = <function> defined @Interface\AddOns\WIM\Modules\History.lua:1034
     SEARCHLIST = <table> {
     }
     close = WIM3_HistoryFrameClose {
     }
     title = WIM3_HistoryFrameTitle {
     }
     filter = <table> {
     }
     CONVOLIST = <table> {
     }
     displayUpdate = <unnamed> {
     }
     content = <unnamed> {
     }
     UpdateFilterList = <function> defined @Interface\AddOns\WIM\Modules\History.lua:1015
    }
    string = <table> {
     split = <function> defined =[C]:-1
     match = <function> defined =[C]:-1
     gmatch = <function> defined =[C]:-1
     upper = <function> defined =[C]:-1
     gsub = <function> defined =[C]:-1
     format = <function> defined =[C]:-1
     lower = <function> defined =[C]:-1
     sub = <function> defined =[C]:-1
     gfind = <function> defined =[C]:-1
     rep = <function> defined =[C]:-1
     join = <function> defined =[C]:-1
     char = <function> defined =[C]:-1
     rtgsub = <function> defined @Interface\FrameXML\RestrictedInfrastructure.lua:610
     concat = <function> defined =[C]:-1
     reverse = <function> defined =[C]:-1
     byte = <function> defined =[C]:-1
     trim = <function> defined =[C]:-1
     len = <function> defined =[C]:-1
     find = <function> defined =[C]:-1
    }
    table = <table> {
     setn = <function> defined =[C]:-1
     insert = <function> defined =[C]:-1
     getn = <function> defined =[C]:-1
     foreachi = <function> defined =[C]:-1
     maxn = <function> defined =[C]:-1
     foreach = <function> defined =[C]:-1
     concat = <function> defined =[C]:-1
     removemulti = <function> defined =[C]:-1
     sort = <function> defined =[C]:-1
     wipe = <function> defined =[C]:-1
     remove = <function> defined =[C]:-1
    }
    pairs = <function> defined =[C]:-1

    AddOns:
      Swatter, v5.15.5380 (LikeableLyrebird)
      ACP, v3.4.1
      Altoholic, v5.1.001
      AraBrokerGuildFriends, vr55
      Auctionator, v3.1.0
      Babylonian, v5.1.DEV.332(/embedded)
      BlizzMove, vv1.2.5
      BrokerProfessionsMenu, v
      BrokerMounts, v5.04
      Configator, v5.1.DEV.344(/embedded)
      ControlFreak, v3.0.3.15
      CTBarMod, v5.0101
      CTBottomBar, v5.0101
      CTCore, v5.0101
      CTMailMod, v5.0101
      DataStore, v5.1.001
      DataStoreAchievements, v5.1.001
      DataStoreAgenda, v5.1.001
      DataStoreAuctions, v5.1.001
      DataStoreCharacters, v5.1.001
      DataStoreContainers, v5.1.001
      DataStoreCrafts, v5.1.001
      DataStoreCurrencies, v5.1.001
      DataStoreInventory, v5.1.001
      DataStoreMails, v5.1.001
      DataStorePets, v5.1.001
      DataStoreQuests, v5.1.001
      DataStoreReputations, v5.1.001
      DataStoreSpells, v5.1.001
      DataStoreStats, v5.1.001
      DataStoreTalents, v5.1.001
      DBMCore, v
      DBMLDB, v
      DBMWorldEvents, v
      DebugLib, v5.1.DEV.337(/embedded)
      DropTheCheapestThing, vv3.6.2
      Enchantrix, v5.15.5380 (LikeableLyrebird)
      FBTitan, v1.0.8
      FBTrackingFrame, v1.2d
      FishingBuddy, v1.2f
      FlightMap, v5.0.3
      Gatherer, v4.1.0
      GFWFactionFriend, v5.0
      GTFO, v4.18.1
      Informant, v5.15.5380 (LikeableLyrebird)
      LibExtraTip, v5.12.DEV.342(/embedded)
      LightHeaded, v356
      LightHeadedDataA, v356
      LightHeadedDataE, v356
      LightHeadedDataQIDNames, v356
      Mapster, v1.5.1
      Mendeleev, v3.0
      OneBag3, vv3.4.8
      Overachiever, v0.70
      OverachieverTabs, v0.70
      OverachieverTrade, v0.70
      QuestHubber, v
      QuestHubberAzeroth, v
      QuestHubberCataclysm, v
      QuestHubberDaily, v
      QuestHubberNorthrend, v
      QuestHubberOutland, v
      QuestHubberPandaria, v
      Recount, v
      SlideBar, v5.15.5380 (LikeableLyrebird)
      Stubby, v5.15.5380 (LikeableLyrebird)
      SwindlerPreventer, v5.0.1 (15799) BETA
      TipHelper, v5.12.DEV.343(/embedded)
      Titan, v5.1.10.50100
      TitanClock, v5.1.10.50100
      TitanGold, v5.1.10.50100
      TitanLootType, v5.1.10.50100
      TitanRepair, v5.1.10.50100
      TitanVolume, v5.1.10.50100
      URNotePad, v5.1.0
      WIM, vr357
      XLoot10, vz35-beta
      XPerl, v3.6.15
      XPerlArcaneBar, v
      XPerlParty, v
      XPerlPartyPet, v
      XPerlPlayer, v
      XPerlPlayerPet, v
      XPerlTarget, v
      XPerlTargetTarget, v
      BlizRuntimeLib_enUS v5.1.0.50100 <us>
      (ck=8a8)

  • Avatar of Dridzt Dridzt Dec 03, 2012 at 15:10 UTC - 1 like

    @Jockelino: Go

    Well I'm not going to keep posting the same info in 3 different places.
    You don't need a self-modified / fan modified / "any" modified version.

    Use the latest alpha and make sure you have "Instance Chat" module enabled.

    If you want WIM to capture all group chat, you need "Raid", "Party" and "Instance" chat modules enabled.

    That user modification suggested btw, you might as well just remove that whole block of code, it's not doing what you think it does.
    '=' is an assignment operator, meaning it takes what's on the right side of it and puts it on the left side.
    '==' is an equality operator, meaning it compares what's on the right side to what's on the left side and returns the result (true for isequal, false for not equal)
    The replacement suggested was:

    if UnitExists = nil and UnitExists("party"..i) or _G.UnitExists = nil and _G.UnitExists("party"..i) then
    

    What this says in plain English is:
    "nil the local UnitExists function then check if nil("party"..i)
    or nil the global UnitExists() function and then check if nil("party"..i)"

    Do I really need to explain how bad it is to nuke game functions like that?
    The side-effect of that line of code is that the whole 'if ... then' block is always nil and never runs, like I said if you want to modify it just delete it instead of breaking game API for all addons.

    Edit: I checked his original post a couple comment-pages back and he was actually testing for inequality ~= which is better but that modification is not needed for the latest alphas.
    The problem with the original code was that WIM uses its own environment space, meaning it needed to pickup the global function through _G. instead of relying on an implicit global lookup.
    If that's too technical to understand, that's ok, just keep that the original problem has been fixed.

    Last edited Dec 03, 2012 by Dridzt

Table of contents

  1. 1 Features
  2. 2 Video Demo

Facts

Date created
Jul 28, 2008
Category
Last update
Jun 30, 2014
Development stage
Release
Language
  • enUS
License
All Rights Reserved
Curse link
WIM (WoW Instant Messenger) v3
Downloads
5,810,092
Recent files
  • A: r426 for 5.4.8 Jun 30, 2014
  • A: r425 for 5.4.8 Jun 30, 2014
  • A: r423 for 5.4.8 Jun 30, 2014
  • A: r422 for 5.4.8 Jun 30, 2014
  • A: r421 for 5.4.8 Jun 17, 2014

Authors