This commit is contained in:
Andrew6810
2022-11-05 21:19:42 -07:00
parent b79f4bd588
commit f3e579cb57
386 changed files with 93729 additions and 2 deletions
+102
View File
@@ -0,0 +1,102 @@
v2.2.1
*No change, just fixed missing item in v2.2 changelog.
v2.2
*Fixed bug with cancels button not collecting canceled auction mail in some situations.
*Added auto-complete functionality to target box in Quick Send tab and Mailing operations.
*Cleaned up a bit of code.
*Fixed bug with restock option of operations always being applied, regardless of the value of the setting.
*Moved excess gold options from per-factionrealm to per-character.
*Time left on mails will now be in yellow for non-returnable mails instead of green.
v2.1.5
*Added an option to keep free space in bags when looting mail (only applicable to bags that can hold any item like backpack etc). NB mailing autoloots all the attachments of a mail so if looting the whole mail doesn't leave enough free slots then the whole mail will be skipped.
v2.1.4
*No update. Trying to fix issue with curse.
v2.1.3
*Fixed bug with gold collected message counting mails which weren't opened.
v2.1.2
*Updating group tree creation API call.
v2.1.1
*Fixed bug with expired mail.
v2.1
*Fixed bug with automatic restarting of sending groups continuing after the mailbox is closed.
*Fixed error related to closing the mail frame without visiting TSM tab.
*Fixed bug in group mailing code.
*Replaced button to open gold mail with multiple AH-related buttons.
*Added option for changing the default page of the Mailing tab.
*Added option for showing the reload UI button (enabled by default).
*Setting the max quantity to 0 in the quick send page will now send all items.
*Added a chat message for when mailing of groups is finished.
*Fixed various bugs related to the Mailing tab not being the default.
*Updated TOC for patch 5.4.
v2.0.3
*Bug fix with v2.0.2 and TSM2.1.
v2.0.2
*Fixed issue with detecting disenchantable items on non-enUS clients.
*Moved operation management to its own tab.
v2.0.1
*Fix for bug with opening mailbox.
*Updated scrolling tables.
v2.0
*First 2.0 Version!
\\
v1.1
*Updated for patch 5.2.
*Added sorting for groups being sent to a target.
*Added support for ElvUI skinning of open mail / auto mail buttons.
*Added option to automatically mail disenchantable greens to a player.
*Many other minor bug fixes and improvements.
v1.0
*First Release Version!
**Beta Versions:**
v0.2.4
*Fixed a bug with the Auto-Mail not working after the first time it's used in a session.
*Many other minor bug fixes and improvements.
v0.2.3
*Fixed a bug where the Auto-Mail feature was getting stuck if there was nothing to mail.
*Added an option to send only one unique item per mail.
*Updated TOC for patch 4.2.
*Many other minor bug fixes and improvements.
v0.2.2
*Added better detection for Postal's "Open All" button.
*Added a confirmation box for deleting mail targets.
*Many other minor bug fixes and improvements.
v0.2.1
*Mailing should no longer try and mail soulbound items.
*Added a frame that overlays the message part of the send tab that'll show when auto-send is working.
*Many other minor bug fixes and improvements.
v0.2
*Fixed a few localization issues.
*Mailing should now coexist with MailOpener and Beancounter nicely.
*Fixed a bug with items not showing as being part of a Mailing group if not currently in the player's bags.
*Fixed a bug with how the ungrouped items / groups were sorted
*Optimized auto-mailing code to prevent client lag.
*Added a "Mail Finished" print-out.
*Many other minor bug fixes and improvements.
v0.1.1
*The total gold collected from the mail is now printed out.
*Fixed the .toc file.
v0.1
*First version!
+21
View File
@@ -0,0 +1,21 @@
All rights are reserved unless explicitly stated below. The "license
holder" is the manager of this project, Sapu94 (sapu94@gmail.com).
Exceptions:
1) The use of this addon in accordance with all applicable terms set by
Blizzard Entertainment for addon use and game play is permitted.
2) Modifications for personal use or submission to license holder are
permitted. Modified versions of the works, derivative works, modified
sections of the works, and instructions for how to modify the works are
all prohibited unless the express consent of the license holder is
granted.
Comments:
1) Permission to use sections of the works in your own work is very
likely to be granted upon contacting the license holder.
2) The right to distribute the works is reserved by the license holder.
In no way or form may a person other than the license holder distribute
the works.
3) Please contact the license holder if you have any questions at all
regarding this license at the following email address: sapu94@gmail.com
+131
View File
@@ -0,0 +1,131 @@
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Mailing --
-- http://www.curse.com/addons/wow/tradeskillmaster_mailing --
-- --
-- A TradeSkillMaster Addon (http://tradeskillmaster.com) --
-- All Rights Reserved* - Detailed license information included with addon. --
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Mailing Locale - deDE
-- Please use the localization app on CurseForge to update this
-- http://wow.curseforge.com/addons/tradeskillmaster_mailing/localization/
local L = LibStub("AceLocale-3.0"):NewLocale("TradeSkillMaster_Mailing", "deDE")
if not L then return end
L[ [=[Automatically rechecks mail every 60 seconds when you have too much mail.
If you loot all mail with this enabled, it will wait and recheck then keep auto looting.]=] ] = [=[Ruft die Post automatisch alle 60 Sekunden ab wenn zu viel Post im Briefkasten ist.
Wenn diese Option aktiviert ist und das automatische Plündern läuft, wird die Entnahme nach den 60 Sekunden fortgesetzt.]=]
L["Auto Recheck Mail"] = "Post automatisch aktualisieren"
L["BE SURE TO SPELL THE NAME CORRECTLY!"] = "VERSICHERE DICH, DASS DER NAME RICHTIG GESCHRIEBEN IST!"
L["Buy: %s (%d) | %s | %s"] = "Kauf: %s (%d) | %s | %s" -- Needs review
L["Cannot finish auto looting, inventory is full or too many unique items."] = "Automatisches Plündern kann nicht beendet werden. Inventar ist voll oder zu viele \"einzigartige\" Gegenstände vorhanden."
L["Chat Message Options"] = "Chatnachricht Optionen" -- Needs review
L["Clear"] = "Löschen" -- Needs review
L["Clears the item box."] = "Löscht Boxinhalt" -- Needs review
L["Click this button to send all disenchantable greens in your bags to the specified character."] = "Klicke diesen Button um alle entzauberbaren grüne Gegenstände an den genannten Charakter zu schicken." -- Needs review
L["Click this button to send excess gold to the specified character."] = "Klicke diesen Button um überschüssiges Gold an den angegeben Charakter zu schicken." -- Needs review
L["Click this button to send off the item to the specified character."] = "Klicke diesen Button um den Gegenstand an den angegenen Charakter zu schicken." -- Needs review
L["COD Amount (per Item):"] = "Nachnahmegebühr (je Gegenstand):" -- Needs review
L["COD: %s | %s | %s | %s"] = "Nachnahme: %s | %s | %s | %s" -- Needs review
L["Collected COD of %s from %s for %s."] = "Nachnahmegebühr in Höhe von %s an %s für %s eingesammelt." -- Needs review
L["Collected expired auction of %s"] = "Abgelaufene Auktion von %s abgeholt." -- Needs review
L["Collected mail from %s with a subject of '%s'."] = "Post von %s mit Betreff '%s' abgeholt." -- Needs review
L["Collected purchase of %s (%d) for %s."] = "Einkauf von %s (%d) für %s abgeholt." -- Needs review
L["Collected sale of %s (%d) for %s."] = "Verkauf von %s (%d) für %s abgeholt." -- Needs review
L["Collected %s and %s from %s."] = "Hole %s und %s von %s ab." -- Needs review
L["Collected %s from %s."] = "%s von %s abgeholt." -- Needs review
L["Collect Gold"] = "Gold Einsammeln" -- Needs review
L["Could not loot item from mail because your bags are full."] = "Kann Gegenstand nicht aus der Post entnehmen weil deine Taschen voll sind." -- Needs review
L["Could not send mail due to not having free bag space available to split a stack of items."] = "Kann keine Post verschicken, da kein freier Taschenplatz vorhanden ist um Gegenstandstapel aufzuteilen." -- Needs review
L["Display Total Money Received"] = "Zeige Gesamtsumme Erhaltenes Gold" -- Needs review
L["Drag (or place) the item that you want to send into this editbox."] = "Ziehe (oder platziere) den Gegenstand den du verschicken möchstest in die Box." -- Needs review
L["Enable Inbox Chat Messages"] = "Erlaube Posteingangsmitteilungen im Chat" -- Needs review
L["Enable Sending Chat Messages"] = "Erlaube Postversandmitteilungen im Chat" -- Needs review
L["Enter name of the character disenchantable greens should be sent to."] = "Gib den Namen des Charakters an den entzauberbare grüne Gegenstände geschickt werden sollen." -- Needs review
L["Enter the desired COD amount (per item) to send this item with. Setting this to '0c' will result in no COD being set."] = "Gib die gewünschte Nachnahmegebühr (je Gegenstand) ein mit der du den Gegenstand verschicken willst. Bei einem Betrag von '0c' wird der Gegenstand ohne Nachnahmegebühr verschickt." -- Needs review
L["Enter the name of the player you want to send excess gold to."] = "Gib den Charakternamen ein an den überschüssiges Gold geschickt werden soll." -- Needs review
L["Enter the name of the player you want to send this item to."] = "Gib den Charakternamen ein an den der Gegenstand geschickt werden soll." -- Needs review
L["Error creating operation. Operation with name '%s' already exists."] = "Fehler beim Erstellen der Operation. Operation mit Namen '%s' existiert bereits." -- Needs review
L["Expired: %s | %s"] = "Abgelaufen: %s | %s" -- Needs review
L["General"] = "Allgemein" -- Needs review
L["General Settings"] = "Allgemeine Einstellungen" -- Needs review
L["Give the new operation a name. A descriptive name will help you find this operation later."] = "Gib der neuen Operation einen Namen. Ein beschreibender Name hilft dir diese später wieder zu finden." -- Needs review
L["If checked, a maxium quantity to send to the target can be set. Otherwise, Mailing will send as many as it can."] = "Wenn markiert wird eine maximale Anzahl an das Ziel gesendet. Andernfalls schickt Mailing so viel wie es kann." -- Needs review
L["If checked, information on mails collected by TSM_Mailing will be printed out to chat."] = "Wenn markiert werden Informationen zu abgeholter Post durch TSM_Mailing im Chat ausgegeben." -- Needs review
L["If checked, information on mails sent by TSM_Mailing will be printed out to chat."] = "Wenn markiert werden Informationen von per TSM_Mailing versendeter Post im Chat ausgegebebn." -- Needs review
L["If checked, the Mailing tab of the mailbox will be the default tab."] = "Wenn markiert wird Mailing zum Standardreiter der Mailbox gemacht." -- Needs review
L["If checked, the 'Open All' button will leave any mail containing gold."] = "Wenn markiert öffnet 'Alle Öffnen' keine Nachrichten, die Gold enthalten." -- Needs review
L["If checked, the target's current inventory will be taken into account when determing how many to send. For example, if the max quantity is set to 10, and the target already has 3, Mailing will send at most 7 items."] = "Wenn markiert wird das aktuelle Inventar des Ziels für die zu schickende Anzahl berücksichtigt. Zum Beispiel wenn die maximale Anzahl auf 10 gesetzt ist und das Ziel bereits 3 Einheiten hat wird Mailing maximal 7 Einheiten verschicken." -- Needs review
L["If checked, the target's guild bank will be included in their inventory for the 'Restock Target to Max Quantity' option."] = "Wenn markiert wird die Gildenbank des Ziels berücksichtigt für die 'Fülle auf maximale Anzahl auf' Option." -- Needs review
L["If checked, the total amount of gold received will be shown at the end of automatically collecting mail."] = "Wenn markiert wird der gesamte erhaltene Goldbetrag anzegeigt nachdem alle Nachrichten automatisch eingesammelt wurden." -- Needs review
L["Inbox"] = "Posteingang" -- Needs review
L["Include Guild Bank in Restock"] = "Gildenbank beim Auffüllen berücksichtigen" -- Needs review
L["Item (Drag Into Box):"] = "Gegenstand (in Box ziehen):" -- Needs review
L["Keep Quantity"] = "Zu behaltende Menge" -- Needs review
L["Leave Gold with Open All"] = "Gold mit alle Öffnen nicht abholen" -- Needs review
L["Limit (In Gold):"] = "Limit (in Gold):" -- Needs review
L["Mail Disenchantables:"] = "Entzauberbares Verschicken:" -- Needs review
L["Mailing all to %s."] = "Alles an %s geschickt." -- Needs review
L["Mailing operations contain settings for easy mailing of items to other characters."] = "Post-Operationen enthalten Einstellungen um einfach Gegenstände an andere Charakter zu verschicken." -- Needs review
L["Mailing up to %d to %s."] = "Schicke maximal %d an %s." -- Needs review
L["Mailing will keep this number of items in the current player's bags and not mail them to the target."] = "Mailing behält diese Anzahl Gegenstände in den Taschen des gegenwärtigen Charakters ohne sie ans Ziel zu schicken." -- Needs review
L["Mail Selected Groups"] = "Ausgewählte Gruppen versenden" -- Needs review
L["Mail Send Delay"] = "Post Sendeverzögerung" -- Needs review
L["Make Mailing Default Mail Tab"] = "Mache Mailing zum Standard Post Tab" -- Needs review
L["Maxium Quantity"] = "Maximale Anzahl:" -- Needs review
L["Max Quantity:"] = "Max. Anzahl:" -- Needs review
L["Multiple Items"] = "Mehrere Gegenstände" -- Needs review
L["New Operation"] = "Neue Operation" -- Needs review
L["Next inbox update in %d seconds."] = "Nächste Aktualisierung des Posteingangs in %d Sekunden." -- Needs review
L["No Item Specified"] = "Kein Gegenstand angegeben" -- Needs review
L["No Quantity Specified"] = "Keine Anzahl angegeben" -- Needs review
L["No Target Player"] = "Kein Zielcharakter" -- Needs review
L["No Target Specified"] = "Kein Ziel angegeben" -- Needs review
L["Not sending any gold as you have less than the specified limit."] = "Gold wird nicht gesendet weil du weniger als den angegebenen Betrag besitzt." -- Needs review
L["Not Target Specified"] = "Kein Ziel angegeben" -- Needs review
L["Open All"] = "Alle öffnen"
L["Operation Name"] = "Name der Operation" -- Needs review
L["Operations"] = "Operationen" -- Needs review
L["Operation Settings"] = "Operationseinstellungen" -- Needs review
L["Options"] = "Einstellungen"
L["Other"] = "Andere" -- Needs review
L["Quick Send"] = "Schnell Senden" -- Needs review
-- L["Relationships"] = ""
L["Reload UI"] = "UI neu laden" -- Needs review
L["Restart Delay (minutes)"] = "Neustart Verzögerung (Minuten)" -- Needs review
L["Restock Target to Max Quantity"] = "Fülle Ziel auf maximale Anzahl auf" -- Needs review
L["Sale: %s (%d) | %s | %s"] = "Verkauf: %s (%d) | %s | %s" -- Needs review
L["Send Disenchantable Greens to %s"] = "Sende entzauberbare grüne Gegenstände an %s" -- Needs review
L["Send Excess Gold to Banker:"] = "Sende überschüssiges Gold an Banker:" -- Needs review
L["Send Excess Gold to %s"] = "Sende überschüssiges Gold an %s." -- Needs review
L["Sending..."] = "Verschicken..." -- Needs review
L["Send Items Individually"] = "Sende Gegenstände individuell." -- Needs review
L["Sends each unique item in a seperate mail."] = "Sende jeden einzigartigen Gegenstand in einem separaten Brief." -- Needs review
L["Send %sx%d to %s - No COD"] = "Sende %sx%d an %s - Keine Nachnahme" -- Needs review
L["Send %sx%d to %s - %s per Item COD"] = "Sende %sx%d an %s - %s Nachnahme je Gegenstand" -- Needs review
L["Sent all disenchantable greens to %s."] = "Verschicke alle entzauberbaren grünen Gegenstände an %s." -- Needs review
L["Sent %s to %s."] = "%s an %s verschickt." -- Needs review
L["Sent %s to %s with a COD of %s."] = "%s an %s mit Nachnahme von %s verschickt." -- Needs review
L["Set Max Quantity"] = "Maximale Anzahl setzen" -- Needs review
L["Sets the maximum quantity of each unique item to send to the target at a time."] = "Setzt die maximal Anzahl eines einzigartigen Gegenstand an das Ziel mit einem Mal." -- Needs review
-- L["Shift-Click to automatically re-send after the amount of time specified in the TSM_Mailing options."] = ""
L["Showing all %d mail."] = "Zeige alle %d Nachrichten." -- Needs review
L["Showing %d of %d mail."] = "Zeige %d von %d Nachrichten." -- Needs review
L["Skipping operation '%s' because there is no target."] = "Überspringe Operation '%s' weil es kein Ziel gibt." -- Needs review
L["%s to collect."] = "%s einzusammeln."
L["%s total gold collected!"] = "%s Gold insgesamt eingesammelt."
L["Target:"] = "Ziel:" -- Needs review
L["Target is Current Player"] = "Ziel ist aktueller Charakter" -- Needs review
L["Target Player"] = "Zielcharakter" -- Needs review
L["Target Player:"] = "Zielcharakter:" -- Needs review
L["The name of the player you want to mail items to."] = "Name des Charakters an den du Gegenstände schicken willst." -- Needs review
L["This is maximum amount of gold you want to keep on the current player. Any amount over this limit will be send to the specified character."] = "Dies ist der maximale Goldbetrag den der aktuelle Charakter behalten soll. Alles Gold darüber wird an den angegebenen Charakter geschickt." -- Needs review
L["This is the maximum number of the specified item to send when you click the button below."] = "Dies ist die maximale Anzahl eines bestimmten Gegenstands der verschickt wird wenn du den Button unten anklickst." -- Needs review
L["This slider controls how long the mail sending code waits between consecutive mails. If this is set too low, you will run into internal mailbox errors."] = "Dieser Regler kontrolliert wie lange zwischen dem Versenden von aufeinanderfolgenden Nachrichten gewartet werden soll. Wenn der Wert zu niedrig ist können interne Mailboxfehler auftreten." -- Needs review
L["This tab allows you to quickly send any quantity of an item to another character. You can also specify a COD to set on the mail (per item)."] = "Dieser Reiter erlaubt es schnell jede beliebige Anzahl an Gegenständen an einen anderen Charakter zu senden. Du kannst auch einen Nachnahmegebühr (je Gegenstand) angeben." -- Needs review
L["TSM Groups"] = "TSM-Gruppen" -- Needs review
L["TSM_Mailing Excess Gold"] = "TSM_Mailing überschüssiges Gold" -- Needs review
-- L["When you shift-click a send mail button, after the initial send, it will check for new items to send at this interval."] = ""
+142
View File
@@ -0,0 +1,142 @@
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Mailing --
-- http://www.curse.com/addons/wow/tradeskillmaster_mailing --
-- --
-- A TradeSkillMaster Addon (http://tradeskillmaster.com) --
-- All Rights Reserved* - Detailed license information included with addon. --
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Mailing Locale - enUS
-- Please use the localization app on CurseForge to update this
-- http://wow.curseforge.com/addons/TradeSkill-Master/localization/
local L = LibStub("AceLocale-3.0"):NewLocale("TradeSkillMaster_Mailing", "enUS", true)
if not L then return end
L["%s to collect."] = true
L["%s total gold collected!"] = true
L["AH Mail:"] = true
L["Auto Recheck Mail"] = true
L["Automatically rechecks mail every 60 seconds when you have too much mail.\n\nIf you loot all mail with this enabled, it will wait and recheck then keep auto looting."] = true
L["BE SURE TO SPELL THE NAME CORRECTLY!"] = true
L["Buys"] = true
L["Buy: %s (%d) | %s | %s"] = true
L["Cancels"] = true
L["COD Amount (per Item):"] = true
L["COD: %s | %s | %s | %s"] = true
L["Cannot finish auto looting, keeping %s slots free."] = true
L["Cannot finish auto looting, inventory is full or too many unique items."] = true
L["Chat Message Options"] = true
L["Clear"] = true
L["Clears the item box."] = true
L["Click this button to send all disenchantable greens in your bags to the specified character."] = true
L["Click this button to send excess gold to the specified character."] = true
L["Click this button to send off the item to the specified character."] = true
L["Collected %s and %s from %s."] = true
L["Collected %s from %s."] = true
L["Collected COD of %s from %s for %s."] = true
L["Collected expired auction of %s"] = true
L["Collected mail from %s with a subject of '%s'."] = true
L["Collected purchase of %s (%d) for %s."] = true
L["Collected sale of %s (%d) for %s."] = true
L["Could not loot item from mail because your bags are full."] = true
L["Could not send mail due to not having free bag space available to split a stack of items."] = true
L["Default Mailing Page"] = true
L["Display Total Money Received"] = true
L["Done sending mail."] = true
L["Drag (or place) the item that you want to send into this editbox."] = true
L["Enable Inbox Chat Messages"] = true
L["Enable Sending Chat Messages"] = true
L["Enter name of the character disenchantable greens should be sent to."] = true
L["Enter the desired COD amount (per item) to send this item with. Setting this to '0c' will result in no COD being set."] = true
L["Enter the name of the player you want to send excess gold to."] = true
L["Enter the name of the player you want to send this item to."] = true
L["Error creating operation. Operation with name '%s' already exists."] = true
L["Expired: %s | %s"] = true
L["Expires"] = true
L["General Settings"] = true
L["General"] = true
L["Give the new operation a name. A descriptive name will help you find this operation later."] = true
L["If checked, a maximum quantity to send to the target can be set. Otherwise, Mailing will send as many as it can."] = true
L["If checked, a 'Reload UI' button will be shown while waiting for the inbox to refresh. Reloading will cause the mailbox to refresh and may be faster than waiting for the next refresh."] = true
L["If checked, information on mails collected by TSM_Mailing will be printed out to chat."] = true
L["If checked, information on mails sent by TSM_Mailing will be printed out to chat."] = true
L["If checked, the 'Open All' button will leave any mail containing gold."] = true
L["If checked, the Mailing tab of the mailbox will be the default tab."] = true
L["If checked, the target's current inventory will be taken into account when determing how many to send. For example, if the max quantity is set to 10, and the target already has 3, Mailing will send at most 7 items."] = true
L["If checked, the target's guild bank will be included in their inventory for the 'Restock Target to Max Quantity' option."] = true
L["If checked, the total amount of gold received will be shown at the end of automatically collecting mail."] = true
L["Inbox"] = true
L["Include Guild Bank in Restock"] = true
L["Item (Drag Into Box):"] = true
L["Keep Free Bag Space"] = true
L["Keep Quantity"] = true
L["Leave Gold with Open All"] = true
L["Limit (In Gold):"] = true
L["Mail Disenchantables:"] = true
L["Mail Selected Groups"] = true
L["Mail Send Delay"] = true
L["Mailing all to %s."] = true
L["Mailing operations contain settings for easy mailing of items to other characters."] = true
L["Mailing up to %d to %s."] = true
L["Mailing will keep this number of items in the current player's bags and not mail them to the target."] = true
L["Make Mailing Default Mail Tab"] = true
L["Management"] = true
L["Max Quantity:"] = true
L["Maximum Quantity"] = true
L["Multiple Items"] = true
L["New Operation"] = true
L["Next inbox update in %d seconds."] = true
L["No Item Specified"] = true
L["No Target Player"] = true
L["No Target Specified"] = true
L["Not Target Specified"] = true
L["Not sending any gold as you have less than the specified limit."] = true
L["Open All Mail"] = true
L["Operation Name"] = true
L["Operation Settings"] = true
L["Operations"] = true
L["Options"] = true
L["Other"] = true
L["Quick Send"] = true
L["Relationships"] = true
L["Reload UI"] = true
L["Restart Delay (minutes)"] = true
L["Restock Target to Max Quantity"] = true
L["Sales"] = true
L["Sale: %s (%d) | %s | %s"] = true
L["Send all %s to %s - %s per Item COD"] = true
L["Send %sx%d to %s - %s per Item COD"] = true
L["Send all %s to %s - No COD"] = true
L["Send %sx%d to %s - No COD"] = true
L["Send Disenchantable Greens to %s"] = true
L["Send Excess Gold to %s"] = true
L["Send Excess Gold to Banker:"] = true
L["Send Items Individually"] = true
L["Sending..."] = true
L["Sends each unique item in a seperate mail."] = true
L["Sent %s to %s with a COD of %s."] = true
L["Sent %s to %s."] = true
L["Sent %s to %s."] = true
L["Sent all disenchantable greens to %s."] = true
L["Set Max Quantity"] = true
L["Sets the maximum quantity of each unique item to send to the target at a time."] = true
L["Shift-Click to automatically re-send after the amount of time specified in the TSM_Mailing options."] = true
L["Show Reload UI Button"] = true
L["Showing %d of %d mail."] = true
L["Showing all %d mail."] = true
L["Skipping operation '%s' because there is no target."] = true
L["Specifies the default page that'll show when you select the TSM_Mailing tab."] = true
L["TSM Groups"] = true
L["TSM_Mailing Excess Gold"] = true
L["Target Player"] = true
L["Target Player:"] = true
L["Target is Current Player"] = true
L["Target:"] = true
L["The name of the player you want to mail items to."] = true
L["This is maximum amount of gold you want to keep on the current player. Any amount over this limit will be send to the specified character."] = true
L["This is the maximum number of the specified item to send when you click the button below. Setting this to 0 will send ALL items."] = true
L["This slider controls how long the mail sending code waits between consecutive mails. If this is set too low, you will run into internal mailbox errors."] = true
L["This slider controls how much free space to keep in your bags when looting from the mailbox. This only applies to bags that any item can go in."] = true
L["This tab allows you to quickly send any quantity of an item to another character. You can also specify a COD to set on the mail (per item)."] = true
L["When you shift-click a send mail button, after the initial send, it will check for new items to send at this interval."] = true
+131
View File
@@ -0,0 +1,131 @@
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Mailing --
-- http://www.curse.com/addons/wow/tradeskillmaster_mailing --
-- --
-- A TradeSkillMaster Addon (http://tradeskillmaster.com) --
-- All Rights Reserved* - Detailed license information included with addon. --
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Mailing Locale - esES
-- Please use the localization app on CurseForge to update this
-- http://wow.curseforge.com/addons/tradeskillmaster_mailing/localization/
local L = LibStub("AceLocale-3.0"):NewLocale("TradeSkillMaster_Mailing", "esES")
if not L then return end
L[ [=[Automatically rechecks mail every 60 seconds when you have too much mail.
If you loot all mail with this enabled, it will wait and recheck then keep auto looting.]=] ] = [=[Comprobar los correos automáticamente cada 60 segundos cuando tiene demasiados correos
Si despojas todos los correos con esta opción activada, se esperará y comprobará guardando los despojos automáticamente.]=] -- Needs review
L["Auto Recheck Mail"] = "Comprobar automáticamente los correos" -- Needs review
-- L["BE SURE TO SPELL THE NAME CORRECTLY!"] = ""
-- L["Buy: %s (%d) | %s | %s"] = ""
-- L["Cannot finish auto looting, inventory is full or too many unique items."] = ""
-- L["Chat Message Options"] = ""
-- L["Clear"] = ""
-- L["Clears the item box."] = ""
-- L["Click this button to send all disenchantable greens in your bags to the specified character."] = ""
-- L["Click this button to send excess gold to the specified character."] = ""
-- L["Click this button to send off the item to the specified character."] = ""
-- L["COD Amount (per Item):"] = ""
-- L["COD: %s | %s | %s | %s"] = ""
-- L["Collected COD of %s from %s for %s."] = ""
-- L["Collected expired auction of %s"] = ""
-- L["Collected mail from %s with a subject of '%s'."] = ""
-- L["Collected purchase of %s (%d) for %s."] = ""
-- L["Collected sale of %s (%d) for %s."] = ""
-- L["Collected %s and %s from %s."] = ""
-- L["Collected %s from %s."] = ""
-- L["Collect Gold"] = ""
-- L["Could not loot item from mail because your bags are full."] = ""
-- L["Could not send mail due to not having free bag space available to split a stack of items."] = ""
-- L["Display Total Money Received"] = ""
-- L["Drag (or place) the item that you want to send into this editbox."] = ""
-- L["Enable Inbox Chat Messages"] = ""
-- L["Enable Sending Chat Messages"] = ""
-- L["Enter name of the character disenchantable greens should be sent to."] = ""
-- L["Enter the desired COD amount (per item) to send this item with. Setting this to '0c' will result in no COD being set."] = ""
-- L["Enter the name of the player you want to send excess gold to."] = ""
-- L["Enter the name of the player you want to send this item to."] = ""
-- L["Error creating operation. Operation with name '%s' already exists."] = ""
-- L["Expired: %s | %s"] = ""
-- L["General"] = ""
-- L["General Settings"] = ""
-- L["Give the new operation a name. A descriptive name will help you find this operation later."] = ""
-- L["If checked, a maxium quantity to send to the target can be set. Otherwise, Mailing will send as many as it can."] = ""
-- L["If checked, information on mails collected by TSM_Mailing will be printed out to chat."] = ""
-- L["If checked, information on mails sent by TSM_Mailing will be printed out to chat."] = ""
-- L["If checked, the Mailing tab of the mailbox will be the default tab."] = ""
-- L["If checked, the 'Open All' button will leave any mail containing gold."] = ""
-- L["If checked, the target's current inventory will be taken into account when determing how many to send. For example, if the max quantity is set to 10, and the target already has 3, Mailing will send at most 7 items."] = ""
-- L["If checked, the target's guild bank will be included in their inventory for the 'Restock Target to Max Quantity' option."] = ""
-- L["If checked, the total amount of gold received will be shown at the end of automatically collecting mail."] = ""
-- L["Inbox"] = ""
-- L["Include Guild Bank in Restock"] = ""
-- L["Item (Drag Into Box):"] = ""
-- L["Keep Quantity"] = ""
-- L["Leave Gold with Open All"] = ""
-- L["Limit (In Gold):"] = ""
-- L["Mail Disenchantables:"] = ""
-- L["Mailing all to %s."] = ""
-- L["Mailing operations contain settings for easy mailing of items to other characters."] = ""
-- L["Mailing up to %d to %s."] = ""
-- L["Mailing will keep this number of items in the current player's bags and not mail them to the target."] = ""
-- L["Mail Selected Groups"] = ""
-- L["Mail Send Delay"] = ""
-- L["Make Mailing Default Mail Tab"] = ""
-- L["Maxium Quantity"] = ""
-- L["Max Quantity:"] = ""
-- L["Multiple Items"] = ""
-- L["New Operation"] = ""
-- L["Next inbox update in %d seconds."] = ""
-- L["No Item Specified"] = ""
-- L["No Quantity Specified"] = ""
-- L["No Target Player"] = ""
-- L["No Target Specified"] = ""
-- L["Not sending any gold as you have less than the specified limit."] = ""
-- L["Not Target Specified"] = ""
-- L["Open All"] = ""
-- L["Operation Name"] = ""
-- L["Operations"] = ""
-- L["Operation Settings"] = ""
-- L["Options"] = ""
-- L["Other"] = ""
-- L["Quick Send"] = ""
-- L["Relationships"] = ""
-- L["Reload UI"] = ""
-- L["Restart Delay (minutes)"] = ""
-- L["Restock Target to Max Quantity"] = ""
-- L["Sale: %s (%d) | %s | %s"] = ""
-- L["Send Disenchantable Greens to %s"] = ""
-- L["Send Excess Gold to Banker:"] = ""
-- L["Send Excess Gold to %s"] = ""
-- L["Sending..."] = ""
-- L["Send Items Individually"] = ""
-- L["Sends each unique item in a seperate mail."] = ""
-- L["Send %sx%d to %s - No COD"] = ""
-- L["Send %sx%d to %s - %s per Item COD"] = ""
-- L["Sent all disenchantable greens to %s."] = ""
-- L["Sent %s to %s."] = ""
-- L["Sent %s to %s with a COD of %s."] = ""
-- L["Set Max Quantity"] = ""
-- L["Sets the maximum quantity of each unique item to send to the target at a time."] = ""
-- L["Shift-Click to automatically re-send after the amount of time specified in the TSM_Mailing options."] = ""
-- L["Showing all %d mail."] = ""
-- L["Showing %d of %d mail."] = ""
-- L["Skipping operation '%s' because there is no target."] = ""
-- L["%s to collect."] = ""
-- L["%s total gold collected!"] = ""
-- L["Target:"] = ""
-- L["Target is Current Player"] = ""
-- L["Target Player"] = ""
-- L["Target Player:"] = ""
-- L["The name of the player you want to mail items to."] = ""
-- L["This is maximum amount of gold you want to keep on the current player. Any amount over this limit will be send to the specified character."] = ""
-- L["This is the maximum number of the specified item to send when you click the button below."] = ""
-- L["This slider controls how long the mail sending code waits between consecutive mails. If this is set too low, you will run into internal mailbox errors."] = ""
-- L["This tab allows you to quickly send any quantity of an item to another character. You can also specify a COD to set on the mail (per item)."] = ""
-- L["TSM Groups"] = ""
-- L["TSM_Mailing Excess Gold"] = ""
-- L["When you shift-click a send mail button, after the initial send, it will check for new items to send at this interval."] = ""
+129
View File
@@ -0,0 +1,129 @@
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Mailing --
-- http://www.curse.com/addons/wow/tradeskillmaster_mailing --
-- --
-- A TradeSkillMaster Addon (http://tradeskillmaster.com) --
-- All Rights Reserved* - Detailed license information included with addon. --
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Mailing Locale - esMX
-- Please use the localization app on CurseForge to update this
-- http://wow.curseforge.com/addons/tradeskillmaster_mailing/localization/
local L = LibStub("AceLocale-3.0"):NewLocale("TradeSkillMaster_Mailing", "esMX")
if not L then return end
--[==[ L[ [=[Automatically rechecks mail every 60 seconds when you have too much mail.
If you loot all mail with this enabled, it will wait and recheck then keep auto looting.]=] ] = "" ]==]
-- L["Auto Recheck Mail"] = ""
-- L["BE SURE TO SPELL THE NAME CORRECTLY!"] = ""
-- L["Buy: %s (%d) | %s | %s"] = ""
-- L["Cannot finish auto looting, inventory is full or too many unique items."] = ""
-- L["Chat Message Options"] = ""
-- L["Clear"] = ""
-- L["Clears the item box."] = ""
-- L["Click this button to send all disenchantable greens in your bags to the specified character."] = ""
-- L["Click this button to send excess gold to the specified character."] = ""
-- L["Click this button to send off the item to the specified character."] = ""
-- L["COD Amount (per Item):"] = ""
-- L["COD: %s | %s | %s | %s"] = ""
-- L["Collected COD of %s from %s for %s."] = ""
-- L["Collected expired auction of %s"] = ""
-- L["Collected mail from %s with a subject of '%s'."] = ""
-- L["Collected purchase of %s (%d) for %s."] = ""
-- L["Collected sale of %s (%d) for %s."] = ""
-- L["Collected %s and %s from %s."] = ""
-- L["Collected %s from %s."] = ""
-- L["Collect Gold"] = ""
-- L["Could not loot item from mail because your bags are full."] = ""
-- L["Could not send mail due to not having free bag space available to split a stack of items."] = ""
-- L["Display Total Money Received"] = ""
-- L["Drag (or place) the item that you want to send into this editbox."] = ""
-- L["Enable Inbox Chat Messages"] = ""
-- L["Enable Sending Chat Messages"] = ""
-- L["Enter name of the character disenchantable greens should be sent to."] = ""
-- L["Enter the desired COD amount (per item) to send this item with. Setting this to '0c' will result in no COD being set."] = ""
-- L["Enter the name of the player you want to send excess gold to."] = ""
-- L["Enter the name of the player you want to send this item to."] = ""
-- L["Error creating operation. Operation with name '%s' already exists."] = ""
-- L["Expired: %s | %s"] = ""
-- L["General"] = ""
-- L["General Settings"] = ""
-- L["Give the new operation a name. A descriptive name will help you find this operation later."] = ""
-- L["If checked, a maxium quantity to send to the target can be set. Otherwise, Mailing will send as many as it can."] = ""
-- L["If checked, information on mails collected by TSM_Mailing will be printed out to chat."] = ""
-- L["If checked, information on mails sent by TSM_Mailing will be printed out to chat."] = ""
-- L["If checked, the Mailing tab of the mailbox will be the default tab."] = ""
-- L["If checked, the 'Open All' button will leave any mail containing gold."] = ""
-- L["If checked, the target's current inventory will be taken into account when determing how many to send. For example, if the max quantity is set to 10, and the target already has 3, Mailing will send at most 7 items."] = ""
-- L["If checked, the target's guild bank will be included in their inventory for the 'Restock Target to Max Quantity' option."] = ""
-- L["If checked, the total amount of gold received will be shown at the end of automatically collecting mail."] = ""
-- L["Inbox"] = ""
-- L["Include Guild Bank in Restock"] = ""
-- L["Item (Drag Into Box):"] = ""
-- L["Keep Quantity"] = ""
-- L["Leave Gold with Open All"] = ""
-- L["Limit (In Gold):"] = ""
-- L["Mail Disenchantables:"] = ""
-- L["Mailing all to %s."] = ""
-- L["Mailing operations contain settings for easy mailing of items to other characters."] = ""
-- L["Mailing up to %d to %s."] = ""
-- L["Mailing will keep this number of items in the current player's bags and not mail them to the target."] = ""
-- L["Mail Selected Groups"] = ""
-- L["Mail Send Delay"] = ""
-- L["Make Mailing Default Mail Tab"] = ""
-- L["Maxium Quantity"] = ""
-- L["Max Quantity:"] = ""
-- L["Multiple Items"] = ""
-- L["New Operation"] = ""
-- L["Next inbox update in %d seconds."] = ""
-- L["No Item Specified"] = ""
-- L["No Quantity Specified"] = ""
-- L["No Target Player"] = ""
-- L["No Target Specified"] = ""
-- L["Not sending any gold as you have less than the specified limit."] = ""
-- L["Not Target Specified"] = ""
-- L["Open All"] = ""
-- L["Operation Name"] = ""
-- L["Operations"] = ""
-- L["Operation Settings"] = ""
-- L["Options"] = ""
-- L["Other"] = ""
-- L["Quick Send"] = ""
-- L["Relationships"] = ""
-- L["Reload UI"] = ""
-- L["Restart Delay (minutes)"] = ""
-- L["Restock Target to Max Quantity"] = ""
-- L["Sale: %s (%d) | %s | %s"] = ""
-- L["Send Disenchantable Greens to %s"] = ""
-- L["Send Excess Gold to Banker:"] = ""
-- L["Send Excess Gold to %s"] = ""
-- L["Sending..."] = ""
-- L["Send Items Individually"] = ""
-- L["Sends each unique item in a seperate mail."] = ""
-- L["Send %sx%d to %s - No COD"] = ""
-- L["Send %sx%d to %s - %s per Item COD"] = ""
-- L["Sent all disenchantable greens to %s."] = ""
-- L["Sent %s to %s."] = ""
-- L["Sent %s to %s with a COD of %s."] = ""
-- L["Set Max Quantity"] = ""
-- L["Sets the maximum quantity of each unique item to send to the target at a time."] = ""
-- L["Shift-Click to automatically re-send after the amount of time specified in the TSM_Mailing options."] = ""
-- L["Showing all %d mail."] = ""
-- L["Showing %d of %d mail."] = ""
-- L["Skipping operation '%s' because there is no target."] = ""
-- L["%s to collect."] = ""
-- L["%s total gold collected!"] = ""
-- L["Target:"] = ""
-- L["Target is Current Player"] = ""
-- L["Target Player"] = ""
-- L["Target Player:"] = ""
-- L["The name of the player you want to mail items to."] = ""
-- L["This is maximum amount of gold you want to keep on the current player. Any amount over this limit will be send to the specified character."] = ""
-- L["This is the maximum number of the specified item to send when you click the button below."] = ""
-- L["This slider controls how long the mail sending code waits between consecutive mails. If this is set too low, you will run into internal mailbox errors."] = ""
-- L["This tab allows you to quickly send any quantity of an item to another character. You can also specify a COD to set on the mail (per item)."] = ""
-- L["TSM Groups"] = ""
-- L["TSM_Mailing Excess Gold"] = ""
-- L["When you shift-click a send mail button, after the initial send, it will check for new items to send at this interval."] = ""
+131
View File
@@ -0,0 +1,131 @@
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Mailing --
-- http://www.curse.com/addons/wow/tradeskillmaster_mailing --
-- --
-- A TradeSkillMaster Addon (http://tradeskillmaster.com) --
-- All Rights Reserved* - Detailed license information included with addon. --
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Mailing Locale - frFR
-- Please use the localization app on CurseForge to update this
-- http://wow.curseforge.com/addons/tradeskillmaster_mailing/localization/
local L = LibStub("AceLocale-3.0"):NewLocale("TradeSkillMaster_Mailing", "frFR")
if not L then return end
L[ [=[Automatically rechecks mail every 60 seconds when you have too much mail.
If you loot all mail with this enabled, it will wait and recheck then keep auto looting.]=] ] = [=[Vérifie automatiquement les courriers toute les 60secondes lorsque vous avez trop de courriers.
Si vous récupérer tout les courriers avec ceci d'activé, l'auto-récupération des courriers continuera après l'actualisation.]=]
L["Auto Recheck Mail"] = "Vérifier auto. les courriers"
-- L["BE SURE TO SPELL THE NAME CORRECTLY!"] = ""
-- L["Buy: %s (%d) | %s | %s"] = ""
L["Cannot finish auto looting, inventory is full or too many unique items."] = "Impossible de finir de récupérer le courriers, l'inventaire est plein où vous avez trop d'objets unique."
-- L["Chat Message Options"] = ""
-- L["Clear"] = ""
-- L["Clears the item box."] = ""
-- L["Click this button to send all disenchantable greens in your bags to the specified character."] = ""
-- L["Click this button to send excess gold to the specified character."] = ""
-- L["Click this button to send off the item to the specified character."] = ""
-- L["COD Amount (per Item):"] = ""
-- L["COD: %s | %s | %s | %s"] = ""
-- L["Collected COD of %s from %s for %s."] = ""
-- L["Collected expired auction of %s"] = ""
-- L["Collected mail from %s with a subject of '%s'."] = ""
-- L["Collected purchase of %s (%d) for %s."] = ""
-- L["Collected sale of %s (%d) for %s."] = ""
-- L["Collected %s and %s from %s."] = ""
-- L["Collected %s from %s."] = ""
-- L["Collect Gold"] = ""
-- L["Could not loot item from mail because your bags are full."] = ""
-- L["Could not send mail due to not having free bag space available to split a stack of items."] = ""
-- L["Display Total Money Received"] = ""
-- L["Drag (or place) the item that you want to send into this editbox."] = ""
-- L["Enable Inbox Chat Messages"] = ""
-- L["Enable Sending Chat Messages"] = ""
-- L["Enter name of the character disenchantable greens should be sent to."] = ""
-- L["Enter the desired COD amount (per item) to send this item with. Setting this to '0c' will result in no COD being set."] = ""
-- L["Enter the name of the player you want to send excess gold to."] = ""
-- L["Enter the name of the player you want to send this item to."] = ""
-- L["Error creating operation. Operation with name '%s' already exists."] = ""
-- L["Expired: %s | %s"] = ""
-- L["General"] = ""
-- L["General Settings"] = ""
-- L["Give the new operation a name. A descriptive name will help you find this operation later."] = ""
-- L["If checked, a maxium quantity to send to the target can be set. Otherwise, Mailing will send as many as it can."] = ""
-- L["If checked, information on mails collected by TSM_Mailing will be printed out to chat."] = ""
-- L["If checked, information on mails sent by TSM_Mailing will be printed out to chat."] = ""
-- L["If checked, the Mailing tab of the mailbox will be the default tab."] = ""
-- L["If checked, the 'Open All' button will leave any mail containing gold."] = ""
-- L["If checked, the target's current inventory will be taken into account when determing how many to send. For example, if the max quantity is set to 10, and the target already has 3, Mailing will send at most 7 items."] = ""
-- L["If checked, the target's guild bank will be included in their inventory for the 'Restock Target to Max Quantity' option."] = ""
-- L["If checked, the total amount of gold received will be shown at the end of automatically collecting mail."] = ""
-- L["Inbox"] = ""
-- L["Include Guild Bank in Restock"] = ""
-- L["Item (Drag Into Box):"] = ""
-- L["Keep Quantity"] = ""
-- L["Leave Gold with Open All"] = ""
-- L["Limit (In Gold):"] = ""
-- L["Mail Disenchantables:"] = ""
-- L["Mailing all to %s."] = ""
-- L["Mailing operations contain settings for easy mailing of items to other characters."] = ""
-- L["Mailing up to %d to %s."] = ""
-- L["Mailing will keep this number of items in the current player's bags and not mail them to the target."] = ""
-- L["Mail Selected Groups"] = ""
-- L["Mail Send Delay"] = ""
-- L["Make Mailing Default Mail Tab"] = ""
-- L["Maxium Quantity"] = ""
-- L["Max Quantity:"] = ""
-- L["Multiple Items"] = ""
-- L["New Operation"] = ""
-- L["Next inbox update in %d seconds."] = ""
-- L["No Item Specified"] = ""
-- L["No Quantity Specified"] = ""
-- L["No Target Player"] = ""
-- L["No Target Specified"] = ""
-- L["Not sending any gold as you have less than the specified limit."] = ""
-- L["Not Target Specified"] = ""
L["Open All"] = "Tout ouvrir"
-- L["Operation Name"] = ""
-- L["Operations"] = ""
-- L["Operation Settings"] = ""
L["Options"] = "Options"
-- L["Other"] = ""
-- L["Quick Send"] = ""
-- L["Relationships"] = ""
-- L["Reload UI"] = ""
-- L["Restart Delay (minutes)"] = ""
-- L["Restock Target to Max Quantity"] = ""
-- L["Sale: %s (%d) | %s | %s"] = ""
-- L["Send Disenchantable Greens to %s"] = ""
-- L["Send Excess Gold to Banker:"] = ""
-- L["Send Excess Gold to %s"] = ""
-- L["Sending..."] = ""
L["Send Items Individually"] = "Envoyer les objets individuelement."
-- L["Sends each unique item in a seperate mail."] = ""
-- L["Send %sx%d to %s - No COD"] = ""
-- L["Send %sx%d to %s - %s per Item COD"] = ""
-- L["Sent all disenchantable greens to %s."] = ""
-- L["Sent %s to %s."] = ""
-- L["Sent %s to %s with a COD of %s."] = ""
-- L["Set Max Quantity"] = ""
-- L["Sets the maximum quantity of each unique item to send to the target at a time."] = ""
-- L["Shift-Click to automatically re-send after the amount of time specified in the TSM_Mailing options."] = ""
-- L["Showing all %d mail."] = ""
-- L["Showing %d of %d mail."] = ""
-- L["Skipping operation '%s' because there is no target."] = ""
-- L["%s to collect."] = ""
-- L["%s total gold collected!"] = ""
-- L["Target:"] = ""
-- L["Target is Current Player"] = ""
-- L["Target Player"] = ""
-- L["Target Player:"] = ""
-- L["The name of the player you want to mail items to."] = ""
-- L["This is maximum amount of gold you want to keep on the current player. Any amount over this limit will be send to the specified character."] = ""
-- L["This is the maximum number of the specified item to send when you click the button below."] = ""
-- L["This slider controls how long the mail sending code waits between consecutive mails. If this is set too low, you will run into internal mailbox errors."] = ""
-- L["This tab allows you to quickly send any quantity of an item to another character. You can also specify a COD to set on the mail (per item)."] = ""
-- L["TSM Groups"] = ""
-- L["TSM_Mailing Excess Gold"] = ""
-- L["When you shift-click a send mail button, after the initial send, it will check for new items to send at this interval."] = ""
+129
View File
@@ -0,0 +1,129 @@
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Mailing --
-- http://www.curse.com/addons/wow/tradeskillmaster_mailing --
-- --
-- A TradeSkillMaster Addon (http://tradeskillmaster.com) --
-- All Rights Reserved* - Detailed license information included with addon. --
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Mailing Locale - koKR
-- Please use the localization app on CurseForge to update this
-- http://wow.curseforge.com/addons/tradeskillmaster_mailing/localization/
local L = LibStub("AceLocale-3.0"):NewLocale("TradeSkillMaster_Mailing", "koKR")
if not L then return end
L[ [=[Automatically rechecks mail every 60 seconds when you have too much mail.
If you loot all mail with this enabled, it will wait and recheck then keep auto looting.]=] ] = "보유 한도를 초과해 메일을 받았을 때 60초 주기로 메일을 재검색합니다.\\n\\n이 기능이 활성화되어 있으면 60초 대기후 초과한 메일을 재검색해 자동으로 모두 받을 수 있습니다." -- Needs review
L["Auto Recheck Mail"] = "메일 자동 재검색"
L["BE SURE TO SPELL THE NAME CORRECTLY!"] = "이름의 철자가 맞는지 다시 한 번 확인하세요!" -- Needs review
L["Buy: %s (%d) | %s | %s"] = "구매: %s (%d) | %s | %s" -- Needs review
L["Cannot finish auto looting, inventory is full or too many unique items."] = "자동 메일 받기를 완료할 수 없습니다. 가방이 다 찼거나 고유아이템이 너무 많습니다."
L["Chat Message Options"] = "채팅 메시지 옵션" -- Needs review
L["Clear"] = "지우기" -- Needs review
L["Clears the item box."] = "이 아이템 상자을 지웁니다." -- Needs review
L["Click this button to send all disenchantable greens in your bags to the specified character."] = "이 버튼을 클릭하면 가방에 있는 모든 마력추출용 녹템을 지정된 캐릭터에게 발송합니다." -- Needs review
L["Click this button to send excess gold to the specified character."] = "이 버튼을 클릭하면 지정된 캐릭터에게 초과 골드를 발송합니다." -- Needs review
L["Click this button to send off the item to the specified character."] = "이 버튼을 클릭하면 지정된 캐릭터에게 아이템을 발송합니다." -- Needs review
L["COD Amount (per Item):"] = "대금 청구 금액 (개당)" -- Needs review
L["COD: %s | %s | %s | %s"] = "대금 청구: %s | %s | %s | %s" -- Needs review
L["Collected COD of %s from %s for %s."] = "대금 청구 : %s from %s for %s" -- Needs review
L["Collected expired auction of %s"] = "경매 만료 : %s" -- Needs review
L["Collected mail from %s with a subject of '%s'."] = "발신인 : %s, 제목 : '%s'의 우편 받음" -- Needs review
L["Collected purchase of %s (%d) for %s."] = "구매 : %s (%d) for %s" -- Needs review
L["Collected sale of %s (%d) for %s."] = "판매 : %s (%d) for %s" -- Needs review
L["Collected %s and %s from %s."] = "회수 : %s와(과) %s을(를) %s로부터 받았습니다." -- Needs review
L["Collected %s from %s."] = "회수 : %s개를 %s로부터 받았습니다." -- Needs review
L["Collect Gold"] = "골드 수집" -- Needs review
L["Could not loot item from mail because your bags are full."] = "가방이 가득 차 있어서 우편함으로부터 아이템을 루팅할 수 없습니다." -- Needs review
L["Could not send mail due to not having free bag space available to split a stack of items."] = "묶음 아이템을 분할 할 수 있는 가방 공간이 부족하여 아이템을 발송하지 못했습니다." -- Needs review
L["Display Total Money Received"] = "받은 총 금액 표시" -- Needs review
L["Drag (or place) the item that you want to send into this editbox."] = "발송할 아이템을 이 상자 안으로 드래그하세요." -- Needs review
L["Enable Inbox Chat Messages"] = "받은 우편 메시지 표시" -- Needs review
L["Enable Sending Chat Messages"] = "보낸 우편 메시지 표시" -- Needs review
L["Enter name of the character disenchantable greens should be sent to."] = "마력추출용 녹템을 받을 캐릭터의 이름을 입력하세요." -- Needs review
L["Enter the desired COD amount (per item) to send this item with. Setting this to '0c' will result in no COD being set."] = "원하는 대금 청구 금액(개당)을 입력하세요. '0c'로 설정하면 대금 청구를 하지 않습니다." -- Needs review
L["Enter the name of the player you want to send excess gold to."] = "초과 골드를 보낼 플레이어의 이름을 입력하세요." -- Needs review
L["Enter the name of the player you want to send this item to."] = "아이템을 보낼 플레이어의 이름을 입력하세요." -- Needs review
L["Error creating operation. Operation with name '%s' already exists."] = "작업 생성 에러. 이름이 '%s'인 작업은 이미 존재합니다." -- Needs review
L["Expired: %s | %s"] = "만료: %s | %s" -- Needs review
L["General"] = "일반" -- Needs review
L["General Settings"] = "일반 설정" -- Needs review
L["Give the new operation a name. A descriptive name will help you find this operation later."] = "새 작업의 이름을 지정하세요. 설명이 포함된 이름은 나중에 이 작업을 찾는 데 도움이 됩니다." -- Needs review
L["If checked, a maxium quantity to send to the target can be set. Otherwise, Mailing will send as many as it can."] = "선택하면, 대상에게 발송할 최대 수량을 설정할 수 있습니다. 그렇지 않으면, 가능한 모든 수량을 발송합니다." -- Needs review
L["If checked, information on mails collected by TSM_Mailing will be printed out to chat."] = "선택하면, TSM 우편에 의해 수집된 우편에 대한 정보를 채팅창에 출력합니다." -- Needs review
L["If checked, information on mails sent by TSM_Mailing will be printed out to chat."] = "선택하면, TSM 우편에 의해 발송된 우편에 대한 정보를 채팅창에 출력합니다." -- Needs review
L["If checked, the Mailing tab of the mailbox will be the default tab."] = "선택하면, TSM 우편탭을 우편함의 기본 탭으로 지정합니다." -- Needs review
L["If checked, the 'Open All' button will leave any mail containing gold."] = "선택하면, '모두 열기'시에 골드가 첨부된 우편은 남겨둡니다." -- Needs review
L["If checked, the target's current inventory will be taken into account when determing how many to send. For example, if the max quantity is set to 10, and the target already has 3, Mailing will send at most 7 items."] = "선택하면, 발송할 수량을 결정할 때 수신자의 현재 인벤토리 수량이 고려됩니다. 예를 들면, 최대 수량이 10으로 설정되어있고 수신자가 이미 3개를 가지고 있다면 최대 7개의 아이템만 발송합니다." -- Needs review
L["If checked, the target's guild bank will be included in their inventory for the 'Restock Target to Max Quantity' option."] = "선택하면, '재보충 대상 최대 수량' 옵션에 대상의 길드 은행이 포함됩니다." -- Needs review
L["If checked, the total amount of gold received will be shown at the end of automatically collecting mail."] = "선택하면, 자동으로 받은 우편을 통해 수집된 총 골드 량을 표시합니다." -- Needs review
L["Inbox"] = "우편함" -- Needs review
L["Include Guild Bank in Restock"] = "재보충에 길드 은행 포함" -- Needs review
L["Item (Drag Into Box):"] = "아이템:" -- Needs review
L["Keep Quantity"] = "수량 유지" -- Needs review
L["Leave Gold with Open All"] = "모두 열기 시에 골드 남겨두기" -- Needs review
L["Limit (In Gold):"] = "한도 (골드):" -- Needs review
L["Mail Disenchantables:"] = "마력추출용 발송:" -- Needs review
L["Mailing all to %s."] = "모두 %s에게 발송합니다." -- Needs review
L["Mailing operations contain settings for easy mailing of items to other characters."] = "우편 작업은 다른 캐릭터에서 쉽게 아이템을 발송할 수 있도록 하는 설정을 가지고 있습니다." -- Needs review
L["Mailing up to %d to %s."] = "최대 %d개를 %s에게 발송합니다." -- Needs review
L["Mailing will keep this number of items in the current player's bags and not mail them to the target."] = "대상에게 우편을 발송하지 않고 현재 플레이어 가방 안의 아이템 개수를 유지합니다." -- Needs review
L["Mail Selected Groups"] = "선택된 그룹 메일 발송" -- Needs review
L["Mail Send Delay"] = "우편 발송 지연" -- Needs review
L["Make Mailing Default Mail Tab"] = "TSM 우편을 기본 탭으로 지정" -- Needs review
L["Maxium Quantity"] = "최대 수량" -- Needs review
L["Max Quantity:"] = "최대 수량:" -- Needs review
L["Multiple Items"] = "다중 아이템" -- Needs review
L["New Operation"] = "새 작업" -- Needs review
L["Next inbox update in %d seconds."] = "%d초 후 우편함이 업데이트됩니다." -- Needs review
L["No Item Specified"] = "지정된 아이템 없음" -- Needs review
L["No Quantity Specified"] = "지정된 수량 없음" -- Needs review
L["No Target Player"] = "대상 없음" -- Needs review
L["No Target Specified"] = "지정된 대상 없음" -- Needs review
L["Not sending any gold as you have less than the specified limit."] = "보유량이 지정된 제한보다 적으므로 골드를 발송하지 않습니다." -- Needs review
L["Not Target Specified"] = "지정된 대상 없음" -- Needs review
L["Open All"] = "모두 열기"
L["Operation Name"] = "작업 이름" -- Needs review
L["Operations"] = "작업" -- Needs review
L["Operation Settings"] = "작업 설정" -- Needs review
L["Options"] = "옵션" -- Needs review
L["Other"] = "기타" -- Needs review
L["Quick Send"] = "빠른 발송" -- Needs review
L["Relationships"] = "관계" -- Needs review
L["Reload UI"] = "UI 재시작" -- Needs review
L["Restart Delay (minutes)"] = "재시작 지연 (분)" -- Needs review
L["Restock Target to Max Quantity"] = "재보충 대상 최대 수량" -- Needs review
L["Sale: %s (%d) | %s | %s"] = "판매: %s (%d) | %s | %s" -- Needs review
L["Send Disenchantable Greens to %s"] = "마력추출용 녹템을 %s에게 발송" -- Needs review
L["Send Excess Gold to Banker:"] = "초과 골드를 창고 캐릭에게 보냄" -- Needs review
L["Send Excess Gold to %s"] = "초과 골드를 %s에게 발송" -- Needs review
L["Sending..."] = "발송 중..." -- Needs review
L["Send Items Individually"] = "아이템 개별 발송"
L["Sends each unique item in a seperate mail."] = "한 개의 메일에 여러 종류의 아이템을 첨부하지 않고, 아이템별로 별도의 메일로 발송합니다."
L["Send %sx%d to %s - No COD"] = "%sx%d개를 %s에게 발송 - 대금 청구 없음" -- Needs review
L["Send %sx%d to %s - %s per Item COD"] = "%sx%d개를 %s에게 발송 - 개당 %s 청구" -- Needs review
L["Sent all disenchantable greens to %s."] = "모든 마력추출용 녹템을 %s에게 보냈습니다." -- Needs review
L["Sent %s to %s."] = "%s개를 %s에게 보냈습니다." -- Needs review
L["Sent %s to %s with a COD of %s."] = "%s개를 %s에게 %s의 대금 청구 우편으로 보냈습니다." -- Needs review
L["Set Max Quantity"] = "최대 수량 설정" -- Needs review
L["Sets the maximum quantity of each unique item to send to the target at a time."] = "한번에 대상에게 보낼 수 있는 고유 아이템의 최대 수량을 설정합니다." -- Needs review
L["Shift-Click to automatically re-send after the amount of time specified in the TSM_Mailing options."] = "Shift-Click 하면 TSM 우편 옵션에서 지정한 시간이 지난 후 자동으로 재발송합니다." -- Needs review
L["Showing all %d mail."] = "모든 %d 우편 표시" -- Needs review
L["Showing %d of %d mail."] = "%d of %d 우편 표시" -- Needs review
L["Skipping operation '%s' because there is no target."] = "대상이 없으므로 '%s' 작업을 건너뜁니다." -- Needs review
L["%s to collect."] = "%s을(를) 회수하였습니다." -- Needs review
L["%s total gold collected!"] = "총 %s의 금화 획득!" -- Needs review
L["Target:"] = "대상:" -- Needs review
L["Target is Current Player"] = "대상은 현재 플레이어입니다." -- Needs review
L["Target Player"] = "대상 플레이어" -- Needs review
L["Target Player:"] = "대상 플레이어:" -- Needs review
L["The name of the player you want to mail items to."] = "아이템을 보낼 플레이어의 이름." -- Needs review
L["This is maximum amount of gold you want to keep on the current player. Any amount over this limit will be send to the specified character."] = "현재 플레이어가 보유할 최대 골드입니다. 이 한도를 초과하는 골드는 지정된 캐릭터에게 보냅니다." -- Needs review
L["This is the maximum number of the specified item to send when you click the button below."] = "아래의 버튼을 클릭하면 발송할 지정된 아이템의 최대 수량입니다." -- Needs review
L["This slider controls how long the mail sending code waits between consecutive mails. If this is set too low, you will run into internal mailbox errors."] = "여러 개의 메일을 연속해서 보낼 때 개별메일 발송 후 다음 메일을 보내기 전 대기하는 시간을 설정합니다. 만일 너무 짧은 시간으로 설정하면 에러가 발생할 수 있습니다." -- Needs review
L["This tab allows you to quickly send any quantity of an item to another character. You can also specify a COD to set on the mail (per item)."] = "이 탭에서는 다른 캐릭터에게 원하는 수량의 아이템을 빠르게 발송할 수 있습니다. 또한, 대금 청구 우편도 지정할 수 있습니다. (아이템별)" -- Needs review
L["TSM Groups"] = "TSM 그룹" -- Needs review
L["TSM_Mailing Excess Gold"] = "TSM 우편 초과 골드" -- Needs review
L["When you shift-click a send mail button, after the initial send, it will check for new items to send at this interval."] = "우편 발송 버튼을 Shift-Click 하면, 초기 발송 후 여기서 지정한 지연시간이 지난 후 발송할 새 아이템을 확인합니다." -- Needs review
+130
View File
@@ -0,0 +1,130 @@
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Mailing --
-- http://www.curse.com/addons/wow/tradeskillmaster_mailing --
-- --
-- A TradeSkillMaster Addon (http://tradeskillmaster.com) --
-- All Rights Reserved* - Detailed license information included with addon. --
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Mailing Locale - ptBR
-- Please use the localization app on CurseForge to update this
-- http://wow.curseforge.com/addons/TradeSkillMaster_Mailing/localization/
local L = LibStub("AceLocale-3.0"):NewLocale("TradeSkillMaster_Mailing", "ptBR")
if not L then return end
L[ [=[Automatically rechecks mail every 60 seconds when you have too much mail.
If you loot all mail with this enabled, it will wait and recheck then keep auto looting.]=] ] = "Automaticamente checa o correio a cada 60 segundos quando você tem cartas demais." -- Needs review
L["Auto Recheck Mail"] = "Auto-Checar Correio" -- Needs review
-- L["BE SURE TO SPELL THE NAME CORRECTLY!"] = ""
-- L["Buy: %s (%d) | %s | %s"] = ""
L["Cannot finish auto looting, inventory is full or too many unique items."] = "Não foi possível pegar os itens. Inventório está cheio ou existem itens únicos demais." -- Needs review
-- L["Chat Message Options"] = ""
-- L["Clear"] = ""
-- L["Clears the item box."] = ""
-- L["Click this button to send all disenchantable greens in your bags to the specified character."] = ""
-- L["Click this button to send excess gold to the specified character."] = ""
-- L["Click this button to send off the item to the specified character."] = ""
-- L["COD Amount (per Item):"] = ""
-- L["COD: %s | %s | %s | %s"] = ""
-- L["Collected COD of %s from %s for %s."] = ""
-- L["Collected expired auction of %s"] = ""
-- L["Collected mail from %s with a subject of '%s'."] = ""
-- L["Collected purchase of %s (%d) for %s."] = ""
-- L["Collected sale of %s (%d) for %s."] = ""
-- L["Collected %s and %s from %s."] = ""
-- L["Collected %s from %s."] = ""
-- L["Collect Gold"] = ""
-- L["Could not loot item from mail because your bags are full."] = ""
-- L["Could not send mail due to not having free bag space available to split a stack of items."] = ""
-- L["Display Total Money Received"] = ""
-- L["Drag (or place) the item that you want to send into this editbox."] = ""
-- L["Enable Inbox Chat Messages"] = ""
-- L["Enable Sending Chat Messages"] = ""
-- L["Enter name of the character disenchantable greens should be sent to."] = ""
-- L["Enter the desired COD amount (per item) to send this item with. Setting this to '0c' will result in no COD being set."] = ""
-- L["Enter the name of the player you want to send excess gold to."] = ""
-- L["Enter the name of the player you want to send this item to."] = ""
-- L["Error creating operation. Operation with name '%s' already exists."] = ""
-- L["Expired: %s | %s"] = ""
-- L["General"] = ""
-- L["General Settings"] = ""
-- L["Give the new operation a name. A descriptive name will help you find this operation later."] = ""
-- L["If checked, a maxium quantity to send to the target can be set. Otherwise, Mailing will send as many as it can."] = ""
-- L["If checked, information on mails collected by TSM_Mailing will be printed out to chat."] = ""
-- L["If checked, information on mails sent by TSM_Mailing will be printed out to chat."] = ""
-- L["If checked, the Mailing tab of the mailbox will be the default tab."] = ""
-- L["If checked, the 'Open All' button will leave any mail containing gold."] = ""
-- L["If checked, the target's current inventory will be taken into account when determing how many to send. For example, if the max quantity is set to 10, and the target already has 3, Mailing will send at most 7 items."] = ""
-- L["If checked, the target's guild bank will be included in their inventory for the 'Restock Target to Max Quantity' option."] = ""
-- L["If checked, the total amount of gold received will be shown at the end of automatically collecting mail."] = ""
-- L["Inbox"] = ""
-- L["Include Guild Bank in Restock"] = ""
-- L["Item (Drag Into Box):"] = ""
-- L["Keep Quantity"] = ""
-- L["Leave Gold with Open All"] = ""
-- L["Limit (In Gold):"] = ""
-- L["Mail Disenchantables:"] = ""
-- L["Mailing all to %s."] = ""
-- L["Mailing operations contain settings for easy mailing of items to other characters."] = ""
-- L["Mailing up to %d to %s."] = ""
-- L["Mailing will keep this number of items in the current player's bags and not mail them to the target."] = ""
-- L["Mail Selected Groups"] = ""
-- L["Mail Send Delay"] = ""
-- L["Make Mailing Default Mail Tab"] = ""
-- L["Maxium Quantity"] = ""
-- L["Max Quantity:"] = ""
-- L["Multiple Items"] = ""
-- L["New Operation"] = ""
-- L["Next inbox update in %d seconds."] = ""
-- L["No Item Specified"] = ""
-- L["No Quantity Specified"] = ""
-- L["No Target Player"] = ""
-- L["No Target Specified"] = ""
-- L["Not sending any gold as you have less than the specified limit."] = ""
-- L["Not Target Specified"] = ""
L["Open All"] = "Abrir Todas" -- Needs review
-- L["Operation Name"] = ""
-- L["Operations"] = ""
-- L["Operation Settings"] = ""
L["Options"] = "Opções" -- Needs review
-- L["Other"] = ""
-- L["Quick Send"] = ""
-- L["Relationships"] = ""
-- L["Reload UI"] = ""
-- L["Restart Delay (minutes)"] = ""
-- L["Restock Target to Max Quantity"] = ""
-- L["Sale: %s (%d) | %s | %s"] = ""
-- L["Send Disenchantable Greens to %s"] = ""
-- L["Send Excess Gold to Banker:"] = ""
-- L["Send Excess Gold to %s"] = ""
-- L["Sending..."] = ""
L["Send Items Individually"] = "Enviar itens individualmente" -- Needs review
L["Sends each unique item in a seperate mail."] = "Enviar cada item em uma carta separada." -- Needs review
-- L["Send %sx%d to %s - No COD"] = ""
-- L["Send %sx%d to %s - %s per Item COD"] = ""
-- L["Sent all disenchantable greens to %s."] = ""
-- L["Sent %s to %s."] = ""
-- L["Sent %s to %s with a COD of %s."] = ""
-- L["Set Max Quantity"] = ""
-- L["Sets the maximum quantity of each unique item to send to the target at a time."] = ""
-- L["Shift-Click to automatically re-send after the amount of time specified in the TSM_Mailing options."] = ""
-- L["Showing all %d mail."] = ""
-- L["Showing %d of %d mail."] = ""
-- L["Skipping operation '%s' because there is no target."] = ""
-- L["%s to collect."] = ""
-- L["%s total gold collected!"] = ""
-- L["Target:"] = ""
-- L["Target is Current Player"] = ""
-- L["Target Player"] = ""
-- L["Target Player:"] = ""
-- L["The name of the player you want to mail items to."] = ""
-- L["This is maximum amount of gold you want to keep on the current player. Any amount over this limit will be send to the specified character."] = ""
-- L["This is the maximum number of the specified item to send when you click the button below."] = ""
-- L["This slider controls how long the mail sending code waits between consecutive mails. If this is set too low, you will run into internal mailbox errors."] = ""
-- L["This tab allows you to quickly send any quantity of an item to another character. You can also specify a COD to set on the mail (per item)."] = ""
-- L["TSM Groups"] = ""
-- L["TSM_Mailing Excess Gold"] = ""
-- L["When you shift-click a send mail button, after the initial send, it will check for new items to send at this interval."] = ""
+130
View File
@@ -0,0 +1,130 @@
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Mailing --
-- http://www.curse.com/addons/wow/tradeskillmaster_mailing --
-- --
-- A TradeSkillMaster Addon (http://tradeskillmaster.com) --
-- All Rights Reserved* - Detailed license information included with addon. --
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Mailing Locale - ruRU
-- Please use the localization app on CurseForge to update this
-- http://wow.curseforge.com/addons/tradeskillmaster_mailing/localization/
local L = LibStub("AceLocale-3.0"):NewLocale("TradeSkillMaster_Mailing", "ruRU")
if not L then return end
L[ [=[Automatically rechecks mail every 60 seconds when you have too much mail.
If you loot all mail with this enabled, it will wait and recheck then keep auto looting.]=] ] = "Автоматически проверяет почтовый ящик каждые 60 секунд, если у вас больше 50 писем. Если включить эту опцию, то при нажатии на кнопку \"Получить всё\" модуль заберет все письма из почтового ящика, обновит его и продолжит получение писем."
L["Auto Recheck Mail"] = "Автопроверка почты"
L["BE SURE TO SPELL THE NAME CORRECTLY!"] = "УБЕДИТЕСЬ, ЧТО ЗАПИСАЛИ ИМЯ ПРАВИЛЬНО!"
L["Buy: %s (%d) | %s | %s"] = "Купить: %s (%d) | %s | %s"
L["Cannot finish auto looting, inventory is full or too many unique items."] = "Невозможно завершить получение почты. Ваши сумки заполнены, или у вас слишком много уникальных предметов."
L["Chat Message Options"] = "Настройки чата"
L["Clear"] = "Очистить"
L["Clears the item box."] = "Очистить поле."
L["Click this button to send all disenchantable greens in your bags to the specified character."] = "Нажмите, чтобы отправить все предметы для распыления."
L["Click this button to send excess gold to the specified character."] = "Нажмите, чтобы отправить избыток золота."
L["Click this button to send off the item to the specified character."] = "Нажмите, чтобы отправить товар."
L["COD Amount (per Item):"] = "Сумма наложенного платежа (за единицу):"
L["COD: %s | %s | %s | %s"] = "Наложенный платеж: %s | %s | %s | %s"
L["Collected COD of %s from %s for %s."] = "Получен наложенный платеж %s от %s за %s."
L["Collected expired auction of %s"] = "Получены истекшие лоты"
L["Collected mail from %s with a subject of '%s'."] = "Получена почта от %s с темой '%s'."
L["Collected purchase of %s (%d) for %s."] = "Получена плата за %s (%d) за %s."
-- L["Collected sale of %s (%d) for %s."] = ""
L["Collected %s and %s from %s."] = "Получено %s и %s от %s."
L["Collected %s from %s."] = "Получено %s от %s."
L["Collect Gold"] = "Получить золото"
L["Could not loot item from mail because your bags are full."] = "Не могу получить почту, сумки заполнены."
L["Could not send mail due to not having free bag space available to split a stack of items."] = "Не могу отправить почту, не хватает свободного места в сумках для перегруппировки предметов и их последующей отправки."
L["Display Total Money Received"] = "Отображать все полученное золото"
L["Drag (or place) the item that you want to send into this editbox."] = "Перенесите сюда предмет, который вы хотите отправить."
L["Enable Inbox Chat Messages"] = "Включить сообщения в чат о входящих"
L["Enable Sending Chat Messages"] = "Включить отправку сообщений в чат"
L["Enter name of the character disenchantable greens should be sent to."] = "Введите имя персонажа, которому отправлять предметы для распыления."
L["Enter the desired COD amount (per item) to send this item with. Setting this to '0c' will result in no COD being set."] = "Введите желаемую сумму выкупа (за предмет). Значение '0c' приведет к отсутствию выкупа."
L["Enter the name of the player you want to send excess gold to."] = "Введите имя персонажа которому вы хотите отправить избыток золота."
L["Enter the name of the player you want to send this item to."] = "Введите имя персонажа, которому вы хотите отправить этот предмет."
L["Error creating operation. Operation with name '%s' already exists."] = "Ошибка при создании операции. Операция с именем '%s' уже существует."
L["Expired: %s | %s"] = "Истекший: %s | %s"
L["General"] = "Общие"
L["General Settings"] = "Общие настройки"
L["Give the new operation a name. A descriptive name will help you find this operation later."] = "Задайте новое имя операции. Информативное название позволит вам легче ориентироваться в дальнейшем."
L["If checked, a maxium quantity to send to the target can be set. Otherwise, Mailing will send as many as it can."] = "Если выбрано, будет задано максимальное кол-во для отправки. Иначе, будет отправлено максимально имеющееся кол-во."
L["If checked, information on mails collected by TSM_Mailing will be printed out to chat."] = "Если выбрано, информация о полученной почте будет выводиться в чат."
L["If checked, information on mails sent by TSM_Mailing will be printed out to chat."] = "Если выбрано, информация об отправленной почте будет выводиться в чат."
L["If checked, the Mailing tab of the mailbox will be the default tab."] = "Использовать вкладку почты для почтового ящика по умолчанию."
L["If checked, the 'Open All' button will leave any mail containing gold."] = "Кнопка 'Открыть все' получит всю почту не содержащую золото."
L["If checked, the target's current inventory will be taken into account when determing how many to send. For example, if the max quantity is set to 10, and the target already has 3, Mailing will send at most 7 items."] = "Если выбрано, инвентарь получателя будет учитываться при определении кол-ва отправляемых предметов. Например, если макс. кол-во 10 и получатель уже имеет 3, будет отправлено 7 предметов."
L["If checked, the target's guild bank will be included in their inventory for the 'Restock Target to Max Quantity' option."] = "Если выбрано, содержимое банка гильдии получателя будет учитываться для действия \"Пополнить выбранное до максимального количества\"."
L["If checked, the total amount of gold received will be shown at the end of automatically collecting mail."] = "Если выбрано, после окончания сбора почты будет показана общая сумма полученного золота."
L["Inbox"] = "Почта"
L["Include Guild Bank in Restock"] = "Использовать банк гильдии для пополнения"
L["Item (Drag Into Box):"] = "Предмет (перетащить):"
L["Keep Quantity"] = "Сохранить количество"
L["Leave Gold with Open All"] = "Оставлять золото при \"Открыть все\""
L["Limit (In Gold):"] = "Лимит (в золотых):"
L["Mail Disenchantables:"] = "Отправить на распыление:"
L["Mailing all to %s."] = "Отправить все %s."
L["Mailing operations contain settings for easy mailing of items to other characters."] = "Почтовые операции содержат настройки для упрощения отправки почты другим персонажам."
L["Mailing up to %d to %s."] = "Отправка от %d до %s."
L["Mailing will keep this number of items in the current player's bags and not mail them to the target."] = "Это количество предметов будет зарезервировано в сумках и не будет отправлено."
L["Mail Selected Groups"] = "Отправить выбранные группы"
L["Mail Send Delay"] = "Задержка отправки"
L["Make Mailing Default Mail Tab"] = "Использовать вкладку TSM для почты по умолчанию"
L["Maxium Quantity"] = "Максимальное количество"
L["Max Quantity:"] = "Макс. кол-во:"
L["Multiple Items"] = "Несколько предметов"
L["New Operation"] = "Новая операция"
L["Next inbox update in %d seconds."] = "Обновление списка писем через %d сек."
L["No Item Specified"] = "Предмет не указан"
L["No Quantity Specified"] = "Не задано количество"
L["No Target Player"] = "Нет получателя"
L["No Target Specified"] = "Получатель не задан"
L["Not sending any gold as you have less than the specified limit."] = "Не посылать золото, если вы имеете меньше заданного лимита."
L["Not Target Specified"] = "Получатель не задан"
L["Open All"] = "Получить всё"
L["Operation Name"] = "Имя операции"
L["Operations"] = "Операции"
L["Operation Settings"] = "Настройки операции"
L["Options"] = "Настройки"
L["Other"] = [=[Другое
]=]
L["Quick Send"] = "Отправить"
L["Relationships"] = "Связи"
L["Reload UI"] = "Перезагрузить интерфейс"
L["Restart Delay (minutes)"] = "Задержка перезапуска (минуты)"
L["Restock Target to Max Quantity"] = "Пополнить выбранное до максимального количества"
L["Sale: %s (%d) | %s | %s"] = "Продано: %s (%d) | %s | %s"
L["Send Disenchantable Greens to %s"] = "Отправлять предметы для распыления %s"
L["Send Excess Gold to Banker:"] = "Послать избыток золота банкиру"
L["Send Excess Gold to %s"] = "Отправлять избыток золота %s"
L["Sending..."] = "Отправка..."
L["Send Items Individually"] = "Отправлять предметы по отдельности"
L["Sends each unique item in a seperate mail."] = "Отправляет каждый отдельный предмет в отдельном письме."
L["Send %sx%d to %s - No COD"] = "Послано %sx%d персонажу %s - %s без выкупа"
L["Send %sx%d to %s - %s per Item COD"] = "Послано %sx%d персонажу %s - %s наложенным платежом"
L["Sent all disenchantable greens to %s."] = "Все предметы для распыления отправлены персонажу %s."
L["Sent %s to %s."] = "Отправлено %s персонажу %s."
L["Sent %s to %s with a COD of %s."] = "Отправлено %s персонажу %s наложенным платежом %s."
L["Set Max Quantity"] = "Задать максимальное количество"
L["Sets the maximum quantity of each unique item to send to the target at a time."] = "Задать максимальное количество уникальных предметов для отправки за один раз."
L["Shift-Click to automatically re-send after the amount of time specified in the TSM_Mailing options."] = "Shift-клик для автоматической отправки через определенное время, заданное в настройках модуля."
L["Showing all %d mail."] = "Показаны все %d сообщения."
L["Showing %d of %d mail."] = "Показаны %d из %d сообщений."
L["Skipping operation '%s' because there is no target."] = "Операция '%s' пропущена по причине отсутствия получателя."
L["%s to collect."] = "%s для получения."
L["%s total gold collected!"] = "Получено %s золота!"
L["Target:"] = "Цель:"
L["Target is Current Player"] = "Цель - текущий персонаж"
L["Target Player"] = "Получатель"
L["Target Player:"] = "Получатель:"
L["The name of the player you want to mail items to."] = "Имя персонажа, которому вы хотите отправить предметы."
L["This is maximum amount of gold you want to keep on the current player. Any amount over this limit will be send to the specified character."] = "Максимальное количество золота, которое вы хотите сохранить на текущем персонаже. Все золото, превышающее это значение, будет отправлено вашему банкиру."
L["This is the maximum number of the specified item to send when you click the button below."] = "Максимальное количество предметов, которое будет отправлено."
L["This slider controls how long the mail sending code waits between consecutive mails. If this is set too low, you will run into internal mailbox errors."] = "Регулятор, контролирующий время между отправкой почтовых сообщений. Использование низкого значения может привести к проблемам с отправкой почты."
L["This tab allows you to quickly send any quantity of an item to another character. You can also specify a COD to set on the mail (per item)."] = "Эта вкладка позволяет быстро отправить любое количество предметов другому персонажу. Вы также можете установить цену наложенного платежа (за каждый предмет)."
L["TSM Groups"] = "Группы"
L["TSM_Mailing Excess Gold"] = "TSM_Mailing избыток золота"
L["When you shift-click a send mail button, after the initial send, it will check for new items to send at this interval."] = "При нажатии shift-клик по кнопке отправки почты после начала отправки, проверка новых предметов для отправки будет осуществлена через данный интервал времени."
+131
View File
@@ -0,0 +1,131 @@
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Mailing --
-- http://www.curse.com/addons/wow/tradeskillmaster_mailing --
-- --
-- A TradeSkillMaster Addon (http://tradeskillmaster.com) --
-- All Rights Reserved* - Detailed license information included with addon. --
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Mailing Locale - zhCN
-- Please use the localization app on CurseForge to update this
-- http://wow.curseforge.com/addons/tradeskillmaster_mailing/localization/
local L = LibStub("AceLocale-3.0"):NewLocale("TradeSkillMaster_Mailing", "zhCN")
if not L then return end
L[ [=[Automatically rechecks mail every 60 seconds when you have too much mail.
If you loot all mail with this enabled, it will wait and recheck then keep auto looting.]=] ] = [=[当你有过多邮件时,每60秒自动重新检查邮件。
若你启用此功能时打开所有邮件,插件将等待并重新检查以保持自动拾取。]=]
L["Auto Recheck Mail"] = "自动复查邮件"
L["BE SURE TO SPELL THE NAME CORRECTLY!"] = "请务必保证收件人姓名拼写的正确性!!!"
L["Buy: %s (%d) | %s | %s"] = "竞拍获胜: %s (%d) | %s | %s"
L["Cannot finish auto looting, inventory is full or too many unique items."] = "自动打开邮件无法完成,背包已满或者拥有过多唯一物品。"
L["Chat Message Options"] = "聊天框消息选项"
L["Clear"] = "清除"
L["Clears the item box."] = "清空项目列表"
L["Click this button to send all disenchantable greens in your bags to the specified character."] = "点击此按钮将您背包中所有能分解的绿装发送给指定角色。"
L["Click this button to send excess gold to the specified character."] = "点击此按钮将发送超额的金币给指定角色。"
L["Click this button to send off the item to the specified character."] = "点击此按钮将物品邮寄给指定角色。"
L["COD Amount (per Item):"] = "邮件收费金额(每件):"
L["COD: %s | %s | %s | %s"] = "付款取信: %s | %s | %s | %s"
L["Collected COD of %s from %s for %s."] = "收取付费邮件%s, 从%s处, 花费%s。"
L["Collected expired auction of %s"] = "收取过期拍卖品 %s"
L["Collected mail from %s with a subject of '%s'."] = "从%s处收到主题为'%s'的邮件。"
L["Collected purchase of %s (%d) for %s."] = "收取购买的 %s (%d), 花费%s。"
L["Collected sale of %s (%d) for %s."] = "收取出售的 %s (%d), 收入%s。"
L["Collected %s and %s from %s."] = "收取%s和%s,从%s处。"
L["Collected %s from %s."] = "收取%s, 从%s处。"
L["Collect Gold"] = "收取金币"
L["Could not loot item from mail because your bags are full."] = "由于您的背包已满,无法再收取邮件。"
L["Could not send mail due to not having free bag space available to split a stack of items."] = "由于您的背包没有拆开堆叠的空间,无法发送出邮件。"
L["Display Total Money Received"] = "显示收取金币总额"
L["Drag (or place) the item that you want to send into this editbox."] = "将您想要邮寄的物品拖进编辑框。"
L["Enable Inbox Chat Messages"] = "开启对话框收件信息"
L["Enable Sending Chat Messages"] = "开启对话框发件信息"
L["Enter name of the character disenchantable greens should be sent to."] = "输入收取分解绿装的收件人姓名。"
L["Enter the desired COD amount (per item) to send this item with. Setting this to '0c' will result in no COD being set."] = "输入您希望的该物品邮寄时收取的费用(每件)。设置为 '0c' 将不会收取费用。"
L["Enter the name of the player you want to send excess gold to."] = "输入收取额外金币的收件人姓名。"
L["Enter the name of the player you want to send this item to."] = "输入收取这件物品的收件人姓名。"
L["Error creating operation. Operation with name '%s' already exists."] = "操作创建失败。操作名 '%s' 已经存在。"
L["Expired: %s | %s"] = "拍卖已到期: %s | %s"
L["General"] = "常规"
L["General Settings"] = "常规设置"
L["Give the new operation a name. A descriptive name will help you find this operation later."] = "给新操作命名, 一个描述性的名称将方便您找到它。"
L["If checked, a maxium quantity to send to the target can be set. Otherwise, Mailing will send as many as it can."] = "如果勾选,可以设置发送给目标的最大数量。不勾选,将会尽可能地发送(无限制发送)。"
L["If checked, information on mails collected by TSM_Mailing will be printed out to chat."] = "如果勾选,通过TSM_Mailing收取的邮件信息将会在聊天框里显示。"
L["If checked, information on mails sent by TSM_Mailing will be printed out to chat."] = "如果勾选,通过TSM_Mailing发送的邮件信息将会在聊天框里显示。"
L["If checked, the Mailing tab of the mailbox will be the default tab."] = "如果勾选,Mailing标签的将被设定为邮箱的默认标签。"
L["If checked, the 'Open All' button will leave any mail containing gold."] = "如果勾选,按钮“全部打开”将不再会收取含有金币的邮件。"
L["If checked, the target's current inventory will be taken into account when determing how many to send. For example, if the max quantity is set to 10, and the target already has 3, Mailing will send at most 7 items."] = "如果勾选,当决定发送多少时,收件人当前的库存将被考虑进来。例如,如果最大的数量设置为10件,目标已经有3件,邮件将发送最多7件。"
L["If checked, the target's guild bank will be included in their inventory for the 'Restock Target to Max Quantity' option."] = "如果勾选, '对目标最大量补货' 时会包括其公会银行库存。"
L["If checked, the total amount of gold received will be shown at the end of automatically collecting mail."] = "如果勾选,收取的总金币数会显示在自动收件的最后。"
L["Inbox"] = "收信箱"
L["Include Guild Bank in Restock"] = "补充库存里包括公会银行"
L["Item (Drag Into Box):"] = "物品(拖进列表):"
L["Keep Quantity"] = "保持数量"
L["Leave Gold with Open All"] = "全部打开(不取金币)"
L["Limit (In Gold):"] = "限制(金):"
L["Mail Disenchantables:"] = "邮寄分解绿装:"
L["Mailing all to %s."] = "全部邮寄至 %s。"
L["Mailing operations contain settings for easy mailing of items to other characters."] = "Mailing操作的设置邮寄使邮寄更加便捷。"
L["Mailing up to %d to %s."] = "邮寄%d给%s。"
L["Mailing will keep this number of items in the current player's bags and not mail them to the target."] = "这是该物品的背包内最低保有量, 保有的物品不会被邮寄出去。"
L["Mail Selected Groups"] = "邮寄选定分组"
L["Mail Send Delay"] = "邮寄时间间隔"
L["Make Mailing Default Mail Tab"] = "将Mailing设置为默认标签"
L["Maxium Quantity"] = "最大数量"
L["Max Quantity:"] = "最大数量:"
L["Multiple Items"] = "多件物品"
L["New Operation"] = "新操作"
L["Next inbox update in %d seconds."] = "邮箱将在%d秒后刷新。"
L["No Item Specified"] = "没有指定物品"
L["No Quantity Specified"] = "没有指定数量"
L["No Target Player"] = "没有目标角色"
L["No Target Specified"] = "无指定目标"
L["Not sending any gold as you have less than the specified limit."] = "没有邮寄金币,因为您的金币数量低于金币保有量。"
L["Not Target Specified"] = "没有指定目标"
L["Open All"] = "全部打开"
L["Operation Name"] = "操作名"
L["Operations"] = "操作"
L["Operation Settings"] = "操作设置"
L["Options"] = "选项"
L["Other"] = "其他"
L["Quick Send"] = "快速发送"
L["Relationships"] = "关联"
L["Reload UI"] = "重载界面"
L["Restart Delay (minutes)"] = "自动邮件重启延迟(分钟)"
L["Restock Target to Max Quantity"] = "对目标最大数量补货"
L["Sale: %s (%d) | %s | %s"] = "拍卖成功: %s (%d) | %s | %s"
L["Send Disenchantable Greens to %s"] = "邮寄分解绿装给 %s"
L["Send Excess Gold to Banker:"] = "邮寄超额金币给金库角色:"
L["Send Excess Gold to %s"] = "邮寄超额金币给 %s"
L["Sending..."] = "发送中..."
L["Send Items Individually"] = "单独发送每种物品"
L["Sends each unique item in a seperate mail."] = "使用单独的邮件发送每个唯一物品"
L["Send %sx%d to %s - No COD"] = "邮寄 %sx%d 给 %s - 不收费"
L["Send %sx%d to %s - %s per Item COD"] = "邮寄 %sx%d 给 %s - 单件收费 %s"
L["Sent all disenchantable greens to %s."] = "邮寄全部分解绿件给 %s。"
L["Sent %s to %s."] = "邮寄%s给%s。"
L["Sent %s to %s with a COD of %s."] = "邮寄%s给%s附带收费%s。"
L["Set Max Quantity"] = "设置最大数量"
L["Sets the maximum quantity of each unique item to send to the target at a time."] = "设置单次邮寄的每种物品的最大邮寄量。"
L["Shift-Click to automatically re-send after the amount of time specified in the TSM_Mailing options."] = "Shift+右键点击 自动重发(在TSM_Mailing选项里设定的指定时间后)。"
L["Showing all %d mail."] = "显示全部%d封邮件。"
L["Showing %d of %d mail."] = "显示 %d / %d 封邮件。"
L["Skipping operation '%s' because there is no target."] = "由于没有目标,跳过操作 '%s' 。"
L["%s to collect."] = "%s等待收取。"
L["%s total gold collected!"] = "共收取金币 %s!"
L["Target:"] = "收件人:"
L["Target is Current Player"] = "收件人是当前玩家"
L["Target Player"] = "收件人"
L["Target Player:"] = "收件人:"
L["The name of the player you want to mail items to."] = "您所希望的收件角色的姓名。"
L["This is maximum amount of gold you want to keep on the current player. Any amount over this limit will be send to the specified character."] = "这是您希望的当前角色金币保有量。多余的金币会被邮寄到指定角色(金库角色)。"
L["This is the maximum number of the specified item to send when you click the button below."] = "这是当您点击下面的按钮时邮寄指定物品的最大邮寄量。"
L["This slider controls how long the mail sending code waits between consecutive mails. If this is set too low, you will run into internal mailbox errors."] = "此滑动条控制着连续发送邮件的间隔时间。若设置数值太低,会出现内部邮箱错误。"
L["This tab allows you to quickly send any quantity of an item to another character. You can also specify a COD to set on the mail (per item)."] = "此标签允许您快速发送任何数量的物品给另一个角色。您也可以通过设置发送收费邮件(单件计费)。"
L["TSM Groups"] = "TSM分组"
L["TSM_Mailing Excess Gold"] = "TSM_Mailing 超额金币"
L["When you shift-click a send mail button, after the initial send, it will check for new items to send at this interval."] = "当你shift+左键点击发送按钮, 初次邮寄后,将在设置的分钟数后检查新物品。"
+131
View File
@@ -0,0 +1,131 @@
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Mailing --
-- http://www.curse.com/addons/wow/tradeskillmaster_mailing --
-- --
-- A TradeSkillMaster Addon (http://tradeskillmaster.com) --
-- All Rights Reserved* - Detailed license information included with addon. --
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Mailing Locale - zhTW
-- Please use the localization app on CurseForge to update this
-- http://wow.curseforge.com/addons/tradeskillmaster_mailing/localization/
local L = LibStub("AceLocale-3.0"):NewLocale("TradeSkillMaster_Mailing", "zhTW")
if not L then return end
L[ [=[Automatically rechecks mail every 60 seconds when you have too much mail.
If you loot all mail with this enabled, it will wait and recheck then keep auto looting.]=] ] = [=[當你有過多郵件時,將每60秒複查郵件.
當開啟此項時若你正在拾取全部郵件,程式將等待並複查郵件但保持自動拾取。]=]
L["Auto Recheck Mail"] = "自動重新檢查郵件"
L["BE SURE TO SPELL THE NAME CORRECTLY!"] = "請務必保證收件人姓名拼寫的正確性!"
L["Buy: %s (%d) | %s | %s"] = "購買: %s (%d) | %s | %s"
L["Cannot finish auto looting, inventory is full or too many unique items."] = "無法完成自動拾取郵件,行囊已滿或者擁有過多唯一物品."
L["Chat Message Options"] = "聊天框消息选项"
L["Clear"] = "清除"
L["Clears the item box."] = "清除項目列表"
L["Click this button to send all disenchantable greens in your bags to the specified character."] = "點擊此按鈕將您背包中所有能分解的綠裝發送給指定角色。"
L["Click this button to send excess gold to the specified character."] = "點擊此按鈕將發送超額的金幣給指定的角色。"
L["Click this button to send off the item to the specified character."] = "點擊此按鈕將物品郵寄給指定角色。"
L["COD Amount (per Item):"] = "貨到付款金額(每件):"
L["COD: %s | %s | %s | %s"] = "貨到付款: %s | %s | %s | %s"
L["Collected COD of %s from %s for %s."] = "收取付費郵件 %s 從 %s 處 ( 給%s )。"
L["Collected expired auction of %s"] = "收取過期拍賣品 %s"
L["Collected mail from %s with a subject of '%s'."] = "收取 %s 郵件 ( 主題: '%s' )。"
L["Collected purchase of %s (%d) for %s."] = "收取購買的 %s (%d), →給 %s。"
L["Collected sale of %s (%d) for %s."] = "收取出售的 %s (%d), →給 %s。"
L["Collected %s and %s from %s."] = "收取 %s 和 %s ( 从 %s )。"
L["Collected %s from %s."] = "收取 %s ( 从 %s )。"
L["Collect Gold"] = "拾取金幣"
L["Could not loot item from mail because your bags are full."] = "由於你的背包已滿,無法再收取郵件。"
L["Could not send mail due to not having free bag space available to split a stack of items."] = "由於你的背包沒有拆開堆疊的空間,無法發送出郵件。"
L["Display Total Money Received"] = "顯示收取金幣總額"
L["Drag (or place) the item that you want to send into this editbox."] = "將你想要郵寄物品拖進編輯框。"
L["Enable Inbox Chat Messages"] = "開啟對話框收件信息"
L["Enable Sending Chat Messages"] = "開啟對話框發件信息"
L["Enter name of the character disenchantable greens should be sent to."] = "輸入收取綠裝的收件人姓名。"
L["Enter the desired COD amount (per item) to send this item with. Setting this to '0c' will result in no COD being set."] = "輸入你希望的該物品郵寄時收取的費用(單件)。設置為‘0c’將不會收取費用。"
L["Enter the name of the player you want to send excess gold to."] = "輸入收取額外金幣的收件人姓名。"
L["Enter the name of the player you want to send this item to."] = "輸入收取這個件物品的收件人姓名。"
L["Error creating operation. Operation with name '%s' already exists."] = "操作創建錯誤。操作名 '%s' 已經存在"
L["Expired: %s | %s"] = "過期的: %s | %s"
L["General"] = "綜述"
L["General Settings"] = "常規設置"
L["Give the new operation a name. A descriptive name will help you find this operation later."] = "給新操作命名,一個描述性的命名會幫助您在以後更容易找到它。"
L["If checked, a maxium quantity to send to the target can be set. Otherwise, Mailing will send as many as it can."] = "如果勾選此項,可以設置發送給目標的最大數量。否則,將會盡可能的發送(無限制發送)。"
L["If checked, information on mails collected by TSM_Mailing will be printed out to chat."] = "如果勾選此項,通過TSM_Mailing收取的郵件信息將會在聊天框裡顯示。"
L["If checked, information on mails sent by TSM_Mailing will be printed out to chat."] = "如果勾選此項,通過TSM_Mailing發送的郵件信息將會在聊天框裡顯示。"
L["If checked, the Mailing tab of the mailbox will be the default tab."] = "如果勾選此項,郵寄標籤的將被設定為郵箱的默認標籤。"
L["If checked, the 'Open All' button will leave any mail containing gold."] = "如果勾選此項,按鈕“全部打開”將不再會收取含有金幣的郵件。"
L["If checked, the target's current inventory will be taken into account when determing how many to send. For example, if the max quantity is set to 10, and the target already has 3, Mailing will send at most 7 items."] = "如果勾選此項,當決定發送多少時,收件人當前的庫存將被考慮進來。例如,如果最大的數量設置為10件,目標已經有3件,郵件將發送最多7件。"
L["If checked, the target's guild bank will be included in their inventory for the 'Restock Target to Max Quantity' option."] = "如果勾選此項,‘對目標最大量補貨’時會包括其工會銀行庫存。"
L["If checked, the total amount of gold received will be shown at the end of automatically collecting mail."] = "如果勾選此項,收取的金幣總數會顯示在自動收件的最後。"
L["Inbox"] = "收件箱"
L["Include Guild Bank in Restock"] = "補充庫存里包括工會銀行"
L["Item (Drag Into Box):"] = "物品(拖進列表):"
L["Keep Quantity"] = "保持數量"
L["Leave Gold with Open All"] = "全部打開(不取金幣)"
L["Limit (In Gold):"] = "限制(金):"
L["Mail Disenchantables:"] = "郵寄分解綠裝:"
L["Mailing all to %s."] = "全部郵寄至 %s。"
L["Mailing operations contain settings for easy mailing of items to other characters."] = "Mailing操作的設置郵寄使郵寄更加便捷。"
L["Mailing up to %d to %s."] = "郵寄了 %d 給 %s。"
L["Mailing will keep this number of items in the current player's bags and not mail them to the target."] = "這是該物品的背包內最低保有量, 保有的物品不會被郵寄出去。"
L["Mail Selected Groups"] = "郵寄選定分組"
L["Mail Send Delay"] = "郵寄時間間隔"
L["Make Mailing Default Mail Tab"] = "將Mailing設置為默認標籤"
L["Maxium Quantity"] = "最大數量"
L["Max Quantity:"] = "最大數量:"
L["Multiple Items"] = "多件物品"
L["New Operation"] = "新操作"
L["Next inbox update in %d seconds."] = "郵箱在 %d 秒後刷新。"
L["No Item Specified"] = "没有指定物品"
L["No Quantity Specified"] = "沒有指定數量"
L["No Target Player"] = "沒有目標角色"
L["No Target Specified"] = "無指定目標"
L["Not sending any gold as you have less than the specified limit."] = "沒有郵寄金幣,因為您的金幣數量低於最低設定值。"
L["Not Target Specified"] = "沒有指定目標"
L["Open All"] = "全部打開"
L["Operation Name"] = "操作名"
L["Operations"] = "操作"
L["Operation Settings"] = "操作設置"
L["Options"] = "選項"
L["Other"] = "其他"
L["Quick Send"] = "快速發送"
L["Relationships"] = "關聯"
L["Reload UI"] = "重載介面"
L["Restart Delay (minutes)"] = "自動郵件重啟延遲(分鐘)"
L["Restock Target to Max Quantity"] = "對目標最大數量補貨"
L["Sale: %s (%d) | %s | %s"] = "出售: %s (%d) | %s | %s"
L["Send Disenchantable Greens to %s"] = "郵寄分解綠裝給 %s"
L["Send Excess Gold to Banker:"] = "郵寄超額金幣給金庫角色:"
L["Send Excess Gold to %s"] = "郵寄超額金幣給 %s"
L["Sending..."] = "發送中..."
L["Send Items Individually"] = "單獨郵寄物品"
L["Sends each unique item in a seperate mail."] = "使用單獨的郵件發送每個唯一物品"
L["Send %sx%d to %s - No COD"] = "郵寄 %sx%d 給 %s - 不收費"
L["Send %sx%d to %s - %s per Item COD"] = "郵寄 %sx%d 給 %s - 單件收費 %s"
L["Sent all disenchantable greens to %s."] = "郵寄全部分解綠件給 %s。"
L["Sent %s to %s."] = "郵寄 %s 至 %s."
L["Sent %s to %s with a COD of %s."] = "郵寄 %s 給 %s 附帶收費 %s。"
L["Set Max Quantity"] = "設置最大數量"
L["Sets the maximum quantity of each unique item to send to the target at a time."] = "設置單次郵寄的每種物品的最大郵寄量。"
L["Shift-Click to automatically re-send after the amount of time specified in the TSM_Mailing options."] = "Shift+右鍵點擊 自動重發(在TSM_Mailing選項裏設定的指定時間後)。"
L["Showing all %d mail."] = "顯示所有%d郵件。"
L["Showing %d of %d mail."] = "顯示 %d of %d 郵件。"
L["Skipping operation '%s' because there is no target."] = "由於沒有目標,跳過操作 '%s' 。"
L["%s to collect."] = "%s 收取"
L["%s total gold collected!"] = "%s 金幣收取總數!"
L["Target:"] = "收件人:"
L["Target is Current Player"] = "收件人是當前玩家"
L["Target Player"] = "收件人"
L["Target Player:"] = "收件人:"
L["The name of the player you want to mail items to."] = "您所希望的收件角色的姓名。"
L["This is maximum amount of gold you want to keep on the current player. Any amount over this limit will be send to the specified character."] = "這是您希望的當前角色金幣最大持有量。多餘的金幣會被郵寄到指定角色(金庫角色)。"
L["This is the maximum number of the specified item to send when you click the button below."] = "這是當您點擊下麵的按鈕時郵寄指定物品的最大郵寄量。"
L["This slider controls how long the mail sending code waits between consecutive mails. If this is set too low, you will run into internal mailbox errors."] = "此滑動條控制著連續發送郵件的間隔時間。若設置數值太低,會出現內部郵箱錯誤。"
L["This tab allows you to quickly send any quantity of an item to another character. You can also specify a COD to set on the mail (per item)."] = "此標籤允許您快速發送任何數量的物品給另一個角色。您也可以通過設置發送收費郵件(單件計費)。"
L["TSM Groups"] = "TSM分組"
L["TSM_Mailing Excess Gold"] = "TSM_Mailing 超額金幣"
L["When you shift-click a send mail button, after the initial send, it will check for new items to send at this interval."] = "當你shift+左鍵點擊發送按鈕, 初次郵寄後,將在設置的分鐘數後檢查新專案。"
@@ -0,0 +1,234 @@
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Mailing --
-- http://www.curse.com/addons/wow/tradeskillmaster_mailing --
-- --
-- A TradeSkillMaster Addon (http://tradeskillmaster.com) --
-- All Rights Reserved* - Detailed license information included with addon. --
-- ------------------------------------------------------------------------------ --
local TSM = select(2, ...)
local AutoMail = TSM:NewModule("AutoMail", "AceEvent-3.0")
local L = LibStub("AceLocale-3.0"):GetLocale("TradeSkillMaster_Mailing") -- loads the localization table
local private = {}
function AutoMail:OnEnable()
AutoMail:RegisterEvent("MAIL_CLOSED", private.StopSending)
end
function AutoMail:SendItems(items, target, callback, codPerItem)
if private.isSending or TSMAPI:IsPlayer(target) or not MailFrame:IsVisible() then return end
private.isSending = true
private.items = items
private.target = target
private.callback = callback
private.codPerItem = codPerItem
private.waitingLocations = {}
TSMAPI:CreateTimeDelay("mailingSendDelay", 0, private.SendNextMail, TSM.db.global.sendDelay)
return true
end
-- returns the number of items currently attached to the mail
function private:GetNumPendingAttachments()
local totalAttached = 0
for i=1, ATTACHMENTS_MAX_SEND do
if GetSendMailItem(i) then
totalAttached = totalAttached + 1
end
end
return totalAttached
end
function private:SendNextMail()
for _, info in ipairs(private.waitingLocations) do
if not GetContainerItemInfo(info.bag, info.slot) then
return
end
end
-- send off any pending items
private:SendOffMail()
-- fill the mail with the next batch of items
local bagsFull = private:FillMail()
if #private.waitingLocations > 0 then return end
-- check if anything was actually put in the mail to be sent
if private:GetNumPendingAttachments() == 0 then
-- we're done
if bagsFull then
TSM:Printf(L["Could not send mail due to not having free bag space available to split a stack of items."])
end
private:StopSending()
return
end
-- send off this mail
private:SendOffMail()
end
function private:SendOffMail()
local attachments = private:GetNumPendingAttachments()
if attachments == 0 or not private.target then return end
SendMailNameEditBox:SetText(private.target)
SetSendMailMoney(0)
if private.codPerItem then
local numItems = 0
for i=1, ATTACHMENTS_MAX_SEND do
local count = select(3, GetSendMailItem(i))
numItems = numItems + count
end
SetSendMailCOD(private.codPerItem*numItems)
else
SetSendMailCOD(0)
end
SendMail(private.target, SendMailSubjectEditBox:GetText() or "TSM_Mailing", "")
if TSM.db.global.sendMessages then
local items = {}
for i=1, attachments do
local num = select(3, GetSendMailItem(i))
local link = GetSendMailItemLink(i)
local itemString = TSMAPI:GetItemString(link)
if itemString then
items[itemString] = items[itemString] or {num=0, link=link}
items[itemString].num = items[itemString].num + num
end
end
local temp = {}
for itemString, info in pairs(items) do
tinsert(temp, format("%sx%d", info.link, info.num))
end
local msg = ""
local cod = GetSendMailCOD()
if cod and cod > 0 then
msg = format(L["Sent %s to %s with a COD of %s."], table.concat(temp, ", "), private.target, TSMAPI:FormatTextMoney(cod))
else
msg = format(L["Sent %s to %s."], table.concat(temp, ", "), private.target)
end
local function DoPrint()
if private:GetNumPendingAttachments() > 0 then return end
TSMAPI:CancelFrame("sendMailPrintDelay")
TSM:Printf(msg)
end
TSMAPI:CreateTimeDelay("sendMailPrintDelay", 0, DoPrint, 0.1)
end
end
-- fills the current mail with items to be sent to the target
function private:FillMail()
if private:GetNumPendingAttachments() ~= 0 then return end
local locationInfo = {}
for bag, slot, itemString, quantity, locked in TSMAPI:GetBagIterator(true) do
if not locked then
locationInfo[itemString] = locationInfo[itemString] or {}
tinsert(locationInfo[itemString], {bag=bag, slot=slot, quantity=quantity})
end
end
local emptySlots = {}
for bag=0, NUM_BAG_SLOTS do
for slot=1, GetContainerNumSlots(bag) do
if not GetContainerItemInfo(bag, slot) then
local family = bag == 0 and 0 or GetItemFamily(GetInventoryItemLink("player", ContainerIDToInventoryID(bag)))
tinsert(emptySlots, {bag=bag, slot=slot, family=family})
end
end
end
private.waitingLocations = {}
for itemString, quantity in pairs(private.items) do
if locationInfo[itemString] and quantity > 0 then
-- use stack sizes which match exactly first, followed by the smallest stacks
local sameSize = {}
for i=#locationInfo[itemString], 1, -1 do
if locationInfo[itemString][i].quantity == quantity then
tinsert(sameSize, locationInfo[itemString][i])
tremove(locationInfo[itemString], i)
end
end
sort(locationInfo[itemString], function(a,b) return a.quantity < b.quantity end)
for _, info in ipairs(sameSize) do
tinsert(locationInfo[itemString], 1, info)
end
for _, info in ipairs(locationInfo[itemString]) do
if quantity == 0 then break end
if quantity >= info.quantity then
PickupContainerItem(info.bag, info.slot)
quantity = quantity - info.quantity
private.items[itemString] = quantity
ClickSendMailItemButton()
if private:GetNumPendingAttachments() == ATTACHMENTS_MAX_SEND then
return
end
else
-- sort the empty slots such that we'll use special bags first if possible
local family = GetItemFamily(itemString)
local splitTarget
if family > 0 then
local specialBags = {}
for bag=1, NUM_BAG_SLOTS do
local bagFamily = GetItemFamily(GetInventoryItemLink("player", ContainerIDToInventoryID(bag)))
if bagFamily and bagFamily > 0 and bit.band(family, bagFamily) > 0 then
specialBags[bag] = true
end
end
sort(emptySlots, function(a, b)
if specialBags[a.bag] and specialBags[b.bag] then
if a.bag == b.bag then
return a.slot < b.slot
end
return a.bag < b.bag
end
if a.bag == b.bag then
return a.slot < b.slot
end
if specialBags[a.bag] then return true end
if specialBags[b.bag] then return false end
return a.bag < b.bag
end)
else
sort(emptySlots, function(a, b)
if a.bag == b.bag then
return a.slot < b.slot
end
return a.bag < b.bag
end)
end
for i=1, #emptySlots do
if emptySlots[i].family == 0 or bit.band(family, emptySlots[i].family) > 0 then
splitTarget = emptySlots[i]
tremove(emptySlots, i)
break
end
end
if not splitTarget then return true end
SplitContainerItem(info.bag, info.slot, quantity)
PickupContainerItem(splitTarget.bag, splitTarget.slot)
tinsert(private.waitingLocations, splitTarget)
break
end
end
-- check if we want to send only one type of item per mail
if TSM.db.global.sendItemsIndividually then
return
end
end
end
end
-- stops sending mail and calls the callback
function private:StopSending()
if not private.isSending then return end
TSMAPI:CancelFrame("mailingSendDelay")
private.isSending = nil
private.items = nil
private.target = nil
private.waitingLocations = {}
private.callback()
end
+147
View File
@@ -0,0 +1,147 @@
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Mailing --
-- http://www.curse.com/addons/wow/tradeskillmaster_mailing --
-- --
-- A TradeSkillMaster Addon (http://tradeskillmaster.com) --
-- All Rights Reserved* - Detailed license information included with addon. --
-- ------------------------------------------------------------------------------ --
local TSM = select(2, ...)
local Groups = TSM:NewModule("Groups", "AceEvent-3.0")
local L = LibStub("AceLocale-3.0"):GetLocale("TradeSkillMaster_Mailing") -- loads the localization table
local private = {}
function Groups:CreateTab(parent)
local frame = CreateFrame("Frame", nil, parent)
frame:Hide()
frame:SetAllPoints()
frame:SetScript("OnHide", function()
TSMAPI:CancelFrame("mailingGroupsRepeat")
end)
local stContainer = CreateFrame("Frame", nil, frame)
stContainer:SetPoint("TOPLEFT", 5, -5)
stContainer:SetPoint("BOTTOMRIGHT", -5, 35)
TSMAPI.Design:SetFrameColor(stContainer)
frame.groupTree = TSMAPI:CreateGroupTree(stContainer, "Mailing", "Mailing_Send")
local function OnButtonClick(self)
if IsShiftKeyDown() then
TSMAPI:CreateTimeDelay("mailingResendDelay", 0.1, private.StartSending, TSM.db.global.resendDelay * 60)
else
private:StartSending()
end
end
Groups:RegisterEvent("MAIL_CLOSED", function() TSMAPI:CancelFrame("mailingResendDelay") end)
local button = TSMAPI.GUI:CreateButton(frame, 15)
button:SetPoint("BOTTOMLEFT", 5, 5)
button:SetPoint("BOTTOMRIGHT", -5, 5)
button:SetHeight(25)
button:SetText(L["Mail Selected Groups"])
button:SetScript("OnClick", OnButtonClick)
button.tooltip = L["Shift-Click to automatically re-send after the amount of time specified in the TSM_Mailing options."]
frame.button = button
private.frame = frame
return frame
end
local badOperations = {}
function private:ValidateOperation(operation, operationName)
if not operation then return end
if operation.target == "" then
-- operation is invalid (no target)
if not badOperations[operationName] then
TSM:Printf(L["Skipping operation '%s' because there is no target."], operationName)
badOperations[operationName] = true
end
return
end
return true
end
function private:StartSending()
if private.isSending then return end
-- get a table of how many of each item we have in our bags
local inventoryItems = {}
for bag, slot, itemString, quantity, locked in TSMAPI:GetBagIterator(true) do
inventoryItems[itemString] = (inventoryItems[itemString] or 0) + quantity
end
local badOperations = {}
local targets = {}
for _, data in pairs(private.frame.groupTree:GetSelectedGroupInfo()) do
for _, operationName in ipairs(data.operations) do
TSMAPI:UpdateOperation("Mailing", operationName)
local operation = TSM.operations[operationName]
if private:ValidateOperation(operation, operationName) then
-- operation is valid
for itemString in pairs(data.items) do
local numAvailable = (inventoryItems[itemString] or 0) - operation.keepQty
if numAvailable > 0 then
local quantity = 0
if operation.maxQtyEnabled then
if TSMAPI:IsPlayer(operation.target) or not operation.restock then
quantity = min(numAvailable, operation.maxQty)
else
local targetQty = private:GetTargetQuantity(operation.target, itemString, operation.restockGBank)
quantity = min(numAvailable, operation.maxQty - targetQty)
end
else
quantity = numAvailable
end
if quantity > 0 then
inventoryItems[itemString] = inventoryItems[itemString] - quantity
targets[operation.target] = targets[operation.target] or {}
targets[operation.target][itemString] = quantity
end
end
end
end
end
end
for target in pairs(targets) do
if TSMAPI:IsPlayer(target) then
targets[target] = nil
end
end
private.targets = targets
private:SendNextTarget()
end
function private:GetTargetQuantity(player, itemString, includeGBank)
local num = 0
num = num + ((TSMAPI:ModuleAPI("ItemTracker", "playerbags", player, true) or {})[itemString] or 0)
num = num + ((TSMAPI:ModuleAPI("ItemTracker", "playerbank", player, true) or {})[itemString] or 0)
num = num + ((TSMAPI:ModuleAPI("ItemTracker", "playermail", player, true) or {})[itemString] or 0)
num = num + ((TSMAPI:ModuleAPI("ItemTracker", "playerauctions", player, true) or {})[itemString] or 0)
if includeGBank then
num = num + (TSMAPI:ModuleAPI("ItemTracker", "playerguildtotal", itemString, player) or 0)
end
return num
end
function private:SendNextTarget()
local target, items = next(private.targets)
if not target then
private.frame.button:SetText(L["Mail Selected Groups"])
private.frame.button:Enable()
private.isSending = nil
TSM:Print(L["Done sending mail."])
return
end
private.isSending = true
private.targets[target] = nil
private.frame.button:SetText(L["Sending..."])
private.frame.button:Disable()
if not TSM.AutoMail:SendItems(items, target, private.SendNextTarget) then
private:SendNextTarget()
end
end
+715
View File
@@ -0,0 +1,715 @@
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Mailing --
-- http://www.curse.com/addons/wow/tradeskillmaster_mailing --
-- --
-- A TradeSkillMaster Addon (http://tradeskillmaster.com) --
-- All Rights Reserved* - Detailed license information included with addon. --
-- ------------------------------------------------------------------------------ --
local TSM = select(2, ...)
local Inbox = TSM:NewModule("Inbox", "AceEvent-3.0", "AceHook-3.0")
local L = LibStub("AceLocale-3.0"):GetLocale("TradeSkillMaster_Mailing") -- loads the localization table
local private = { recheckTime = 1, allowTimerStart = true, lootIndex = 1, freeSlots = true }
function Inbox:OnEnable()
Inbox:RegisterEvent("MAIL_SHOW")
TSMAPI:CreateEventBucket("MAIL_INBOX_UPDATE", private.InboxUpdate, 0.3)
Inbox:RegisterEvent("MAIL_CLOSED")
end
function Inbox:CreateTab(parent)
local frame = CreateFrame("Frame", nil, parent)
frame:Hide()
frame:SetAllPoints()
frame:SetScript("OnHide", function() private:StopAutoLooting() end)
frame:SetScript("OnShow", private.InboxUpdate)
local label = TSMAPI.GUI:CreateLabel(frame, "small")
label:SetPoint("TOPLEFT", 5, -5)
label:SetPoint("TOPRIGHT", -5, -5)
label:SetHeight(15)
label:SetJustifyH("CENTER")
label:SetJustifyV("CENTER")
frame.topLabel = label
TSMAPI.GUI:CreateHorizontalLine(frame, -25)
local stContainer = CreateFrame("Frame", nil, frame)
stContainer:SetPoint("TOPLEFT", 5, -35)
stContainer:SetPoint("BOTTOMRIGHT", -5, 55)
TSMAPI.Design:SetFrameColor(stContainer)
local handlers = {
OnClick = function(_, data)
if IsShiftKeyDown() and select(6, GetInboxHeaderInfo(data.index)) <= 0 then
if private:CanLootMailIndex(data.index) then
private:LootMailItem(data.index)
else
TSM:Print(L["Could not loot item from mail because your bags are full."])
end
end
if InboxFrame.openMailID ~= data.index then
InboxFrame.openMailID = data.index
OpenMailFrame.updateButtonPositions = true
OpenMail_Update()
ShowUIPanel(OpenMailFrame)
OpenMailFrame:SetPoint("TOPLEFT", InboxFrame, "TOPRIGHT", 32, 0)
PlaySound("igSpellBookOpen")
else
InboxFrame.openMailID = 0
HideUIPanel(OpenMailFrame)
end
InboxFrame_Update()
end,
OnEnter = function(_, data, self)
end,
OnLeave = function()
end,
}
local st = TSMAPI:CreateScrollingTable(stContainer, nil, handlers)
st:SetData({})
frame.st = st
local btn = TSMAPI.GUI:CreateButton(frame, 18)
btn:SetPoint("BOTTOMLEFT", 5, 30)
btn:SetPoint("BOTTOMRIGHT", -5, 30)
btn:SetHeight(20)
btn:SetText(L["Open All Mail"])
btn:SetScript("OnClick", function() private:StartAutoLooting("all") end)
frame.allBtn = btn
local label = TSMAPI.GUI:CreateLabel(frame, "normal")
label:SetPoint("BOTTOMLEFT", 5, 5)
label:SetHeight(20)
label:SetJustifyH("LEFT")
label:SetJustifyV("CENTER")
label:SetText(L["AH Mail:"])
local btnWidth = (frame:GetWidth() - label:GetWidth() - 25) / 5
local btn = TSMAPI.GUI:CreateButton(frame, 18)
btn:SetPoint("BOTTOMLEFT", label, "BOTTOMRIGHT", 5, 0)
btn:SetWidth(btnWidth)
btn:SetHeight(20)
btn:SetText(L["Sales"])
btn:SetScript("OnClick", function() private:StartAutoLooting("sales") end)
frame.salesBtn = btn
local btn = TSMAPI.GUI:CreateButton(frame, 18)
btn:SetPoint("BOTTOMLEFT", frame.salesBtn, "BOTTOMRIGHT", 5, 0)
btn:SetWidth(btnWidth)
btn:SetHeight(20)
btn:SetText(L["Buys"])
btn:SetScript("OnClick", function() private:StartAutoLooting("buys") end)
frame.buysBtn = btn
local btn = TSMAPI.GUI:CreateButton(frame, 18)
btn:SetPoint("BOTTOMLEFT", frame.buysBtn, "BOTTOMRIGHT", 5, 0)
btn:SetWidth(btnWidth)
btn:SetHeight(20)
btn:SetText(L["Cancels"])
btn:SetScript("OnClick", function() private:StartAutoLooting("cancels") end)
frame.cancelsBtn = btn
local btn = TSMAPI.GUI:CreateButton(frame, 18)
btn:SetPoint("BOTTOMLEFT", frame.cancelsBtn, "BOTTOMRIGHT", 5, 0)
btn:SetWidth(btnWidth)
btn:SetHeight(20)
btn:SetText(L["Expires"])
btn:SetScript("OnClick", function() private:StartAutoLooting("expires") end)
frame.expiresBtn = btn
local btn = TSMAPI.GUI:CreateButton(frame, 18)
btn:SetPoint("BOTTOMLEFT", frame.expiresBtn, "BOTTOMRIGHT", 5, 0)
btn:SetPoint("BOTTOMRIGHT", -5, 5)
btn:SetHeight(20)
btn:SetText("Pending")
btn:SetScript("OnClick", function() private:StartAutoLooting("pendings") end)
frame.expiresBtn = btn
local btn = TSMAPI.GUI:CreateButton(frame, 16)
btn:SetFrameStrata("HIGH")
btn:SetPoint("CENTER")
btn:SetHeight(30)
btn:SetWidth(150)
btn:SetText(L["Reload UI"])
btn:SetScript("OnClick", ReloadUI)
btn:Hide()
frame.reloadBtn = btn
frame.EnableButtons = function(self)
self.allBtn:Enable()
self.salesBtn:Enable()
self.buysBtn:Enable()
self.cancelsBtn:Enable()
self.expiresBtn:Enable()
self.buttonsEnabled = true
end
frame.DisableButtons = function(self)
self.allBtn:Disable()
self.salesBtn:Disable()
self.buysBtn:Disable()
self.cancelsBtn:Disable()
self.expiresBtn:Disable()
self.buttonsEnabled = nil
end
frame.buttonsEnabled = true
private.frame = frame
return frame
end
local function CacheFrameOnUpdate(self, elapsed)
if not private.waitingForData then
local seconds = self.endTime - GetTime()
if seconds <= 0 then
-- Look for new mail
-- Sometimes it fails and isn't available at exactly 60-61 seconds, and more like 62-64, will keep rechecking every 1 second
-- until data becomes available
if TSM.db.global.autoCheck then
private.waitingForData = true
self.timeLeft = private.recheckTime
private.lootIndex = 1
private.resetIndex = nil
CheckInbox()
private.frame.reloadBtn:Hide()
else
self:Hide()
end
return
end
private:UpdateTopLabel()
else
self.timeLeft = self.timeLeft - elapsed
if self.timeLeft <= 0 then
self.timeLeft = private.recheckTime
private.lootIndex = 1
private.resetIndex = nil
CheckInbox()
private.frame.reloadBtn:Hide()
end
end
end
function Inbox:MAIL_SHOW()
if not private.cacheFrame then
-- Timer for mailbox cache updates
private.cacheFrame = CreateFrame("Frame", nil, MailFrame)
private.cacheFrame:Hide()
private.cacheFrame:SetScript("OnUpdate", CacheFrameOnUpdate)
end
end
local function FormatDaysLeft(daysLeft, index)
-- code taken from Blizzard MailFrame.lua code
if daysLeft >= 1 then
if InboxItemCanDelete(index) then
daysLeft = YELLOW_FONT_COLOR_CODE .. format(DAYS_ABBR, floor(daysLeft)) .. " " .. FONT_COLOR_CODE_CLOSE;
else
daysLeft = GREEN_FONT_COLOR_CODE .. format(DAYS_ABBR, floor(daysLeft)) .. " " .. FONT_COLOR_CODE_CLOSE;
end
else
daysLeft = RED_FONT_COLOR_CODE .. SecondsToTime(floor(daysLeft * 24 * 60 * 60)) .. FONT_COLOR_CODE_CLOSE;
end
return daysLeft
end
function private:UpdateTopLabel()
local parts = {}
local numMail, totalMail = GetInboxNumItems()
if totalMail == numMail then
tinsert(parts, format(L["Showing all %d mail."], numMail))
else
tinsert(parts, format(L["Showing %d of %d mail."], numMail, totalMail))
end
local collectGold = private.collectGold or 0
if collectGold > 0 then
tinsert(parts, format(L["%s to collect."], TSMAPI:FormatTextMoney(collectGold)))
end
local nextRefresh = private.cacheFrame:IsVisible() and private.cacheFrame.endTime
if nextRefresh then
if numMail == 0 and TSM.db.global.showReloadBtn then
private.frame.reloadBtn:Show()
end
tinsert(parts, format(L["Next inbox update in %d seconds."], max(ceil(nextRefresh - GetTime()), 0)))
end
private.frame.topLabel:SetText(table.concat(parts, " "))
end
function private:InboxUpdate()
if not private.frame or not private.frame:IsVisible() then return end
TSMAPI:CancelFrame("inboxLootTextDelay")
local numMail, totalMail = GetInboxNumItems()
local greenColor, redColor, yellowColor = "|cff00ff00", "|cffff0000", "|cffeeff00"
local mailInfo = {}
local collectGold = 0
for i = 1, numMail do
mailInfo[i] = ""
local isInvoice = select(4, GetInboxText(i))
--local _, _, sender, subject, money, cod, _, hasItem = GetInboxHeaderInfo(index)
local _, _, sender, subject, money, cod, daysLeft, hasItem, _, _, _, _, _, itemQuantity = GetInboxHeaderInfo(i)
if isInvoice then
local invoiceType, itemName, playerName, bid, buyout, deposit, ahcut, _, _, _, quantity = GetInboxInvoiceInfo(i)
-- fix MoP difference
if (quantity == nil) then quantity = itemQuantity end
if invoiceType == "buyer" then
local itemLink = GetInboxItemLink(i, 1) or itemName
mailInfo[i] = format(L["Buy: %s (%d) | %s | %s"], itemLink, quantity or 0, TSMAPI:FormatTextMoney(bid, redColor), FormatDaysLeft(daysLeft, i))
elseif invoiceType == "seller" then
collectGold = collectGold + bid - ahcut
--mailInfo[i] = format(L["Sale: %s (%d) | %s | %s"], itemName, quantity, TSMAPI:FormatTextMoney(bid - ahcut, greenColor), FormatDaysLeft(daysLeft, i))
mailInfo[i] = format("Sale: %s | %s | %s", itemName, TSMAPI:FormatTextMoney(bid - ahcut, greenColor), FormatDaysLeft(daysLeft, i))
elseif invoiceType == "seller_temp_invoice" then
mailInfo[i] = format("Pending Sale: %s | %s | %s", itemName, TSMAPI:FormatTextMoney(bid - ahcut, yellowColor), FormatDaysLeft(daysLeft, i))
end
elseif hasItem then
local itemLink
local quantity = 0
for j = 1, hasItem do
local link = GetInboxItemLink(i, j)
itemLink = itemLink or link
quantity = quantity + select(3, GetInboxItem(i, j))
if TSMAPI:GetItemString(itemLink) ~= TSMAPI:GetItemString(link) then
itemLink = L["Multiple Items"]
quantity = -1
break
end
end
local itemDesc = (quantity > 0 and format("%s (%d)", itemLink, quantity)) or (quantity == -1 and L["Multiple Items"]) or "---"
if hasItem == 1 and itemLink and strfind(subject, "^" .. TSMAPI:StrEscape(format(AUCTION_EXPIRED_MAIL_SUBJECT, TSMAPI:GetSafeItemInfo(itemLink)))) then
mailInfo[i] = format(L["Expired: %s | %s"], itemDesc, FormatDaysLeft(daysLeft, i))
elseif cod > 0 then
mailInfo[i] = format(L["COD: %s | %s | %s | %s"], itemDesc, TSMAPI:FormatTextMoney(cod, redColor), sender or "---", FormatDaysLeft(daysLeft, i))
elseif money > 0 then
collectGold = collectGold + money
mailInfo[i] = format("%s + %s | %s | %s", itemDesc, TSMAPI:FormatTextMoney(money, greenColor), sender or "---", FormatDaysLeft(daysLeft, i))
else
mailInfo[i] = format("%s | %s | %s", itemDesc, sender or "---", FormatDaysLeft(daysLeft, i))
end
elseif money > 0 then
mailInfo[i] = format("%s | %s | %s | %s", subject, TSMAPI:FormatTextMoney(money, greenColor), sender or "---", FormatDaysLeft(daysLeft, i))
else
mailInfo[i] = format("%s | %s | %s", subject, sender or "---", FormatDaysLeft(daysLeft, i))
end
end
private.collectGold = collectGold
local stData = {}
for i, info in ipairs(mailInfo) do
tinsert(stData, { cols = { { value = info } }, index = i })
end
private.frame.st:SetData(stData)
private:UpdateTopLabel()
-- Yay nothing else to loot, so nothing else to update the cache for!
if private.cacheFrame.endTime and numMail == totalMail and private.lastTotal ~= totalMail then
private.cacheFrame.endTime = nil
private.cacheFrame:Hide()
-- Start a timer since we're over the limit of 50 items before waiting for it to recache
elseif (private.cacheFrame.endTime and numMail >= 50 and private.lastTotal ~= totalMail) or (numMail >= 50 and private.allowTimerStart) then
private.resetIndex = nil
private.allowTimerStart = nil
private.waitingForData = nil
private.lastTotal = totalMail
private.cacheFrame.endTime = GetTime() + 60
private.cacheFrame:Show()
end
-- The last item we setup to auto loot is finished, time for the next one
if not private.frame.buttonsEnabled then
if private.autoLootTotal ~= numMail then
private.autoLootTotal = GetInboxNumItems()
-- If we're auto checking mail when new data is available, will wait and continue auto looting, otherwise we just stop now
if numMail == 0 and (not TSM.db.global.autoCheck or totalMail == 0) then
private:StopAutoLooting()
else
private:AutoLoot()
end
else
TSMAPI:CreateTimeDelay("mailSkipDelay", 1, function()
local money, _, _, hasItem, _, _, _, canReply = select(5, GetInboxHeaderInfo(private.lootIndex))
if not hasItem and money == 0 then
private.lootIndex = private.lootIndex + 1
return private:AutoLoot()
end
end)
end
end
end
function private:ShouldOpenMail(index)
local shouldOpen
if private.mode == "all" then
return true
elseif private.mode == "sales" then
local money = select(5, GetInboxHeaderInfo(index))
if money > 0 and GetInboxInvoiceInfo(index) == "seller" then
return true
end
elseif private.mode == "buys" then
local hasItem = select(8, GetInboxHeaderInfo(index))
if hasItem and GetInboxInvoiceInfo(index) == "buyer" then
return true
end
elseif private.mode == "cancels" then
local isInvoice = select(4, GetInboxText(index))
local subject, _, _, _, hasItem = select(4, GetInboxHeaderInfo(index))
if not isInvoice and hasItem == 1 then
local itemLink = GetInboxItemLink(index, 1)
if itemLink then
local itemName = TSMAPI:GetSafeItemInfo(itemLink)
local quantity = select(3, GetInboxItem(index, 1))
if quantity and quantity > 0 and (subject == format(AUCTION_REMOVED_MAIL_SUBJECT.." (%d)", itemName, quantity) or subject == format(AUCTION_REMOVED_MAIL_SUBJECT, itemName)) then
return true
end
end
end
elseif private.mode == "pendings" then
local isInvoice = select(4, GetInboxText(index))
if isInvoice then
invoiceType = GetInboxInvoiceInfo(index)
if invoiceType == "seller_temp_invoice" then
return true
end
end
elseif private.mode == "expires" then
local isInvoice = select(4, GetInboxText(index))
local subject, _, _, _, hasItem = select(4, GetInboxHeaderInfo(index))
if not isInvoice and hasItem == 1 then
local itemLink = GetInboxItemLink(index, 1)
if itemLink and strfind(subject, "^" .. TSMAPI:StrEscape(format(AUCTION_EXPIRED_MAIL_SUBJECT, TSMAPI:GetSafeItemInfo(itemLink)))) then
return true
end
end
end
end
-- Deals with auto looting of mail!
function private:StartAutoLooting(mode)
private.mode = mode
local canCollectMail
if private.mode == "all" then
local total
private.autoLootTotal, total = GetInboxNumItems()
canCollectMail = not (private.autoLootTotal == 0 and total == 0)
else
for i = 1, GetInboxNumItems() do
if private:ShouldOpenMail(i) then
canCollectMail = true
break
end
end
end
if not canCollectMail then
private.mode = nil
return
end
Inbox:RegisterEvent("UI_ERROR_MESSAGE")
private.frame:DisableButtons()
private.moneyCollected = 0
private.mode = mode
private.lootIndex = 1
private:AutoLoot()
end
function private:AutoLoot()
TSMAPI:CancelFrame("mailSkipDelay")
-- Already looted everything after the invalid indexes we had, so fail it
if private.lootIndex > 1 and private.lootIndex > GetInboxNumItems() then
if private.resetIndex then
private:StopAutoLooting()
else
private.resetIndex = true
private.lootIndex = 1
private:AutoLoot()
end
return
end
local money, cod, _, items, _, _, _, _, isGM = select(5, GetInboxHeaderInfo(private.lootIndex))
if not isGM and (not cod or cod <= 0) and ((money and money > 0) or (items and items > 0)) or GetInboxInvoiceInfo(private.lootIndex) == "seller_temp_invoice" then
TSMAPI:CancelFrame("mailWaitDelay")
if private.mode == "all" then
if money > 0 then
if TSM.db.global.openAllLeaveGold then
private.lootIndex = private.lootIndex + 1
return private:AutoLoot()
end
end
if private:CanLootMailIndex(private.lootIndex) then
if money > 0 then
private.moneyCollected = private.moneyCollected + money
end
private:LootMailItem(private.lootIndex)
else
private.lootIndex = private.lootIndex + 1
return private:AutoLoot()
end
else
if private:CanLootMailIndex(private.lootIndex) and private:ShouldOpenMail(private.lootIndex) then
if money > 0 then
private.moneyCollected = private.moneyCollected + money
end
private:LootMailItem(private.lootIndex)
else
private.lootIndex = private.lootIndex + 1
return private:AutoLoot()
end
end
-- Can't grab the first mail, so increase it and try again
elseif GetInboxNumItems() >= private.lootIndex then
private.lootIndex = private.lootIndex + 1
private:AutoLoot()
end
end
function private:LootMailItem(index)
if TSM.db.global.inboxMessages then
--local _, _, sender, subject, money, cod, _, hasItem = GetInboxHeaderInfo(index)
local _, _, sender, subject, money, cod, _, hasItem, _, _, _, _, _, itemQuantity = GetInboxHeaderInfo(index)
sender = sender or "?"
if select(4, GetInboxText(index)) then
-- it's an invoice
local invoiceType, itemName, playerName, bid, _, _, ahcut, _, _, _, quantity = GetInboxInvoiceInfo(index)
-- fix MoP difference
if (quantity == nil) then quantity = itemQuantity end
local redColor = "|cffFF0000"
local greenColor = "|cff00FF00"
local yellowColor = "|cffFFFF00"
if invoiceType == "buyer" then
local itemLink = GetInboxItemLink(index, 1) or itemName
TSM:Printf(L["Collected purchase of %s (%d) for %s."], itemLink, quantity, TSMAPI:FormatTextMoney(bid, redColor))
elseif invoiceType == "seller" then
--TSM:Printf(L["Collected sale of %s (%d) for %s."], itemName, quantity, TSMAPI:FormatTextMoney(bid - ahcut, greenColor))
TSM:Printf("Collected sale of %s for %s.", itemName, TSMAPI:FormatTextMoney(bid - ahcut, greenColor))
elseif invoiceType == "seller_temp_invoice" then
TSM:Printf("Removing pending sale: %s (%s)", itemName, TSMAPI:FormatTextMoney(bid - ahcut, yellowColor))
DeleteInboxItem(index)
return
end
elseif hasItem then
local itemLink
local quantity = 0
for i = 1, hasItem do
local link = GetInboxItemLink(index, i)
itemLink = itemLink or link
quantity = quantity + select(3, GetInboxItem(index, i))
if TSMAPI:GetItemString(itemLink) ~= TSMAPI:GetItemString(link) then
itemLink = L["Multiple Items"]
quantity = -1
break
end
end
local itemDesc = (quantity > 0 and format("%s (%d)", itemLink, quantity)) or (quantity == -1 and "Multiple Items") or "?"
if hasItem == 1 and itemLink and strfind(subject, "^" .. TSMAPI:StrEscape(format(AUCTION_EXPIRED_MAIL_SUBJECT, TSMAPI:GetSafeItemInfo(itemLink)))) then
TSM:Printf(L["Collected expired auction of %s"], itemDesc)
elseif cod > 0 then
TSM:Printf(L["Collected COD of %s from %s for %s."], itemDesc, sender, TSMAPI:FormatTextMoney(cod, redColor))
elseif money > 0 then
TSM:Printf(L["Collected %s and %s from %s."], itemDesc, TSMAPI:FormatTextMoney(money, greenColor), sender)
else
TSM:Printf(L["Collected %s from %s."], itemDesc, sender)
end
elseif money > 0 then
TSM:Printf(L["Collected %s from %s."], TSMAPI:FormatTextMoney(money, greenColor), sender)
else
TSM:Printf(L["Collected mail from %s with a subject of '%s'."], sender, subject)
end
end
AutoLootMailItem(index)
end
function private:CanLootMailIndex(index)
local hasItem = select(8, GetInboxHeaderInfo(index))
if not hasItem or hasItem == 0 then return true end
if not TSM.db.global.keepMailSpace or TSM.db.global.keepMailSpace == 0 then
for j = 1, ATTACHMENTS_MAX_RECEIVE do
local itemString = TSMAPI:GetItemString(GetInboxItemLink(index, j))
local quantity = select(3, GetInboxItem(index, j))
local space = 0
if itemString then
for bag = 0, NUM_BAG_SLOTS do
if TSMAPI:ItemWillGoInBag(itemString, bag) then
for slot = 1, GetContainerNumSlots(bag) do
local iString = TSMAPI:GetItemString(GetContainerItemLink(bag, slot))
if iString == itemString then
local stackSize = select(2, GetContainerItemInfo(bag, slot))
local maxStackSize = select(8, TSMAPI:GetSafeItemInfo(itemString))
if (maxStackSize - stackSize) >= quantity then
return true
end
elseif not iString then
return true
end
end
end
end
end
end
else
-- get number of free slots per generic / special bags and partial slots by bag
local genericSpace, uniqueSpace, partSlots = private:GetBagSlots()
local usedSlots = {}
for j = 1, ATTACHMENTS_MAX_RECEIVE do
local itemString = TSMAPI:GetItemString(GetInboxItemLink(index, j))
local quantity = select(3, GetInboxItem(index, j))
local isDone = false
if itemString then
for bag = 0, NUM_BAG_SLOTS do
if TSMAPI:ItemWillGoInBag(itemString, bag) then
for slot = 1, GetContainerNumSlots(bag) do
local iString = TSMAPI:GetItemString(GetContainerItemLink(bag, slot))
if iString == itemString and (partSlots[bag] and partSlots[bag][slot]) then
local stackSize = select(2, GetContainerItemInfo(bag, slot))
local maxStackSize = select(8, TSMAPI:GetSafeItemInfo(itemString))
if (maxStackSize - stackSize - (usedSlots[bag] and usedSlots[bag][slot] or 0)) >= quantity then
if stackSize + quantity == maxStackSize then
if partSlots[bag] and partSlots[bag][slot] then
partSlots[bag][slot] = nil -- this partial slot would be filled so remove it from available part slots
end
else
if not usedSlots[bag] then
usedSlots[bag] = {}
end
usedSlots[bag][slot] = (usedSlots[bag][slot] or 0) + stackSize -- store the stacksize for this slot after adding this item
end
isDone = true
break
end
else
local itemFamily = GetItemFamily(itemString)
local bagFamily = GetItemFamily(GetBagName(bag)) or 0
if itemFamily and bagFamily and bagFamily > 0 and bit.band(itemFamily, bagFamily) > 0 and (uniqueSpace[bag] and uniqueSpace[bag] > 0) then
uniqueSpace[bag] = uniqueSpace[bag] - 1 -- remove one empty slot from the bag
isDone = true
break
else
if genericSpace[bag] and genericSpace[bag] > 0 then
genericSpace[bag] = genericSpace[bag] - 1 -- remove one empty slot from the bag
if genericSpace[bag] <= 0 then
genericSpace[bag] = nil
end
isDone = true
break
end
end
end
end
if isDone then break end
end
end
end
end
--calculate the total remaining empty slots in generic bags after looting this mail
local remainingSpace = 0
for bag, space in pairs(genericSpace) do
remainingSpace = remainingSpace + space
end
if remainingSpace >= TSM.db.global.keepMailSpace then
return true -- either not using keepMailSpace option or we can loot all of this mail
else
private.keepFreeSlots = true -- can't loot the whole of this mail and leave enough free slots so set the flag that displays the chat message
end
end
end
function private:StopAutoLooting(failed)
if failed and (not private.frame or not private.frame:IsVisible()) then
TSM:Print(L["Cannot finish auto looting, inventory is full or too many unique items."])
end
if private.keepFreeSlots then
TSM:Printf(L["Cannot finish auto looting, keeping %s slots free."], TSM.db.global.keepMailSpace)
private.keepFreeSlots = false
end
private.mode = nil
private.resetIndex = nil
private.autoLootTotal = nil
if not private.frame then return end
private.frame:EnableButtons()
--Tell user how much money has been collected if they don't have it turned off in TradeSkillMaster_Mailing options
if private.moneyCollected and private.moneyCollected > 0 and TSM.db.global.displayMoneyCollected then
TSM:Printf(L["%s total gold collected!"], TSMAPI:FormatTextMoney(private.moneyCollected))
private.moneyCollected = 0
end
end
function private:GetBagSlots()
local genericSpace, uniqueSpace, partSlots = {}, {}, {}
for bag = 0, NUM_BAG_SLOTS do
if (GetItemFamily(GetBagName(bag)) or 0) > 0 then
uniqueSpace[bag] = GetContainerNumFreeSlots(bag) or 0
else
genericSpace[bag] = GetContainerNumFreeSlots(bag) or 0
end
for slot = 1, GetContainerNumSlots(bag) do
local iLink = GetContainerItemLink(bag, slot)
if iLink then
if not partSlots[bag] then
partSlots[bag] = {}
end
table.insert(partSlots[bag], slot)
end
end
end
return genericSpace, uniqueSpace, partSlots
end
function Inbox:UI_ERROR_MESSAGE(event, msg)
if msg == ERR_MAIL_DATABASE_ERROR then
-- recover from internal mail error
TSMAPI:CreateTimeDelay("mailWaitDelay", 1, private.AutoLoot)
elseif msg == ERR_INV_FULL or msg == ERR_ITEM_MAX_COUNT then
-- Try the next index in case we can still loot more such as in the case of glyphs
private.lootIndex = private.lootIndex + 1
-- If we've exhausted all slots, but we still have <50 and more mail pending, wait until new data comes and keep looting it
local current, total = GetInboxNumItems()
if private.lootIndex > current then
if private.lootIndex > total and total <= 50 then
private:StopAutoLooting(true)
end
return
end
TSMAPI:CreateTimeDelay("mailWaitDelay", 0.3, private.AutoLoot)
end
end
function Inbox:MAIL_CLOSED()
private.resetIndex = nil
private.allowTimerStart = true
private.waitingForData = nil
private:StopAutoLooting()
TSMAPI:CancelFrame("inboxLootTextDelay")
TSMAPI:CancelFrame("mailSkipDelay")
Inbox:UnregisterEvent("UI_ERROR_MESSAGE") --sometimes shows error messages even when closed, so unregister that event.
end
@@ -0,0 +1,225 @@
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Mailing --
-- http://www.curse.com/addons/wow/tradeskillmaster_mailing --
-- --
-- A TradeSkillMaster Addon (http://tradeskillmaster.com) --
-- All Rights Reserved* - Detailed license information included with addon. --
-- ------------------------------------------------------------------------------ --
local TSM = select(2, ...)
local MailTab = TSM:NewModule("MailTab", "AceEvent-3.0", "AceHook-3.0")
local L = LibStub("AceLocale-3.0"):GetLocale("TradeSkillMaster_Mailing") -- loads the localization table
local private = {tabs = {}}
function MailTab:OnEnable()
MailTab:RegisterEvent("MAIL_SHOW", function() TSMAPI:CreateTimeDelay("mailShowDelay", 0, private.OnMailShow) end)
end
function private:OnMailShow()
private.frame = private.frame or private:CreateMailTab()
if TSM.db.global.defaultMailTab then
for i=1, MailFrame.numTabs do
if _G["MailFrameTab"..i].isTSMTab then
_G["MailFrameTab"..i]:Click()
break
end
end
end
-- make sure the second tab gets loaded so we can send mail
local currentTab = PanelTemplates_GetSelectedTab(MailFrame)
MailFrameTab2:Click()
_G["MailFrameTab"..currentTab]:Click()
end
function private:CreateMailTab()
local frame = CreateFrame("Frame", nil, MailFrame)
TSMAPI.Design:SetFrameBackdropColor(frame)
frame:Hide()
frame:SetPoint("TOPLEFT")
frame:SetPoint("BOTTOMRIGHT", 40, 0)
frame:EnableMouse(true)
local function OnTabClick(self)
PanelTemplates_SetTab(MailFrame, self:GetID())
--ButtonFrameTemplate_HideButtonBar(MailFrame)
InboxFrame:Hide()
OpenMailFrame:Hide()
StationeryPopupFrame:Hide()
SendMailFrame:Hide()
SetSendMailShowing(false)
MailFrameTab1:Hide()
MailFrameTab2:Hide()
MailFrameTab3:Hide()
InboxCloseButton:Hide()
private.frame:Show()
if TSM.db.global.defaultPage == 1 then
private.frame.inboxBtn:Click()
elseif TSM.db.global.defaultPage == 2 then
private.frame.groupsBtn:Click()
elseif TSM.db.global.defaultPage == 3 then
private.frame.quickSendBtn:Click()
elseif TSM.db.global.defaultPage == 4 then
private.frame.otherBtn:Click()
end
end
local function OnOtherTabClick()
if not private.frame then return end
private.frame:Hide()
InboxFrame:Show()
MailFrameTab1:Show()
MailFrameTab2:Show()
MailFrameTab3:Show()
InboxCloseButton:Show()
PanelTemplates_SetTab(MailFrame, 1)
end
--MailTab:Hook("MailFrameTab_OnClick", OnOtherTabClick, true)
local n = MailFrame.numTabs + 1
local tab = CreateFrame("Button", "MailFrameTab"..n, MailFrame, "FriendsFrameTabTemplate")
tab:Hide()
tab:SetID(n)
tab:SetText(TSMAPI.Design:GetInlineColor("link2").."TSM_Mailing|r")
tab:SetNormalFontObject(GameFontHighlightSmall)
tab.isTSMTab = true
tab:SetPoint("LEFT", _G["MailFrameTab"..n-1], "RIGHT", -8, 0)
tab:Show()
tab:SetScript("OnClick", OnTabClick)
PanelTemplates_SetNumTabs(MailFrame, n)
PanelTemplates_EnableTab(MailFrame, n)
frame.tab = tab
local iconFrame = CreateFrame("Frame", nil, frame)
iconFrame:SetPoint("CENTER", frame, "TOPLEFT", 25, -25)
iconFrame:SetHeight(80)
iconFrame:SetWidth(80)
local icon = iconFrame:CreateTexture(nil, "ARTWORK")
icon:SetAllPoints()
icon:SetTexture("Interface\\Addons\\TradeSkillMaster\\Media\\TSM_Icon_Big")
local ag = iconFrame:CreateAnimationGroup()
local spin = ag:CreateAnimation("Rotation")
spin:SetOrder(1)
spin:SetDuration(2)
spin:SetDegrees(90)
local spin = ag:CreateAnimation("Rotation")
spin:SetOrder(2)
spin:SetDuration(4)
spin:SetDegrees(-180)
local spin = ag:CreateAnimation("Rotation")
spin:SetOrder(3)
spin:SetDuration(2)
spin:SetDegrees(90)
ag:SetLooping("REPEAT")
iconFrame:SetScript("OnEnter", function() ag:Play() end)
iconFrame:SetScript("OnLeave", function() ag:Stop() end)
local title = TSMAPI.GUI:CreateLabel(frame)
title:SetPoint("TOPLEFT", 40, -5)
title:SetPoint("BOTTOMRIGHT", frame, "TOPRIGHT", -5, -25)
title:SetJustifyH("CENTER")
title:SetJustifyV("CENTER")
title:SetText("TSM_Mailing - "..TSM._version)
local closeBtn = TSMAPI.GUI:CreateButton(frame, 19)
closeBtn:SetPoint("TOPRIGHT", -5, -5)
closeBtn:SetWidth(20)
closeBtn:SetHeight(20)
closeBtn:SetText("X")
closeBtn:SetScript("OnClick", CloseMail)
local switchBtn = TSMAPI.GUI:CreateButton(frame, 15)
switchBtn:SetPoint("TOPRIGHT", closeBtn, "TOPLEFT", -4, 0)
switchBtn:SetHeight(20)
switchBtn:SetWidth(85)
switchBtn:SetText("Default UI")
switchBtn:SetScript("OnClick", OnOtherTabClick)
frame.switchBtn = switchBtn
local line = TSMAPI.GUI:CreateVerticalLine(frame, 0)
line:ClearAllPoints()
line:SetPoint("TOPRIGHT", -30, -1)
line:SetWidth(2)
line:SetHeight(30)
TSMAPI.GUI:CreateHorizontalLine(frame, -30)
private:CreateTabs(frame)
return frame
end
function private:CreateTabs(frame)
local function OnButtonClick(self)
frame.inboxTab:Hide()
frame.groupsTab:Hide()
frame.otherTab:Hide()
frame.quickSendTab:Hide()
frame.inboxBtn:UnlockHighlight()
frame.groupsBtn:UnlockHighlight()
frame.otherBtn:UnlockHighlight()
frame.quickSendBtn:UnlockHighlight()
self:LockHighlight()
if self == frame.inboxBtn then
frame.inboxTab:Show()
elseif self == frame.groupsBtn then
frame.groupsTab:Show()
elseif self == frame.otherBtn then
frame.otherTab:Show()
elseif self == frame.quickSendBtn then
frame.quickSendTab:Show()
end
end
local button = TSMAPI.GUI:CreateButton(frame, 15)
button:SetPoint("TOPLEFT", 70, -40)
button:SetHeight(20)
button:SetWidth(55)
button:SetText(L["Inbox"])
button:SetScript("OnClick", OnButtonClick)
frame.inboxBtn = button
local button = TSMAPI.GUI:CreateButton(frame, 15)
button:SetPoint("TOPLEFT", frame.inboxBtn, "TOPRIGHT", 5, 0)
button:SetHeight(20)
button:SetWidth(95)
button:SetText(L["TSM Groups"])
button:SetScript("OnClick", OnButtonClick)
frame.groupsBtn = button
local button = TSMAPI.GUI:CreateButton(frame, 15)
button:SetPoint("TOPLEFT", frame.groupsBtn, "TOPRIGHT", 5, 0)
button:SetHeight(20)
button:SetWidth(85)
button:SetText(L["Quick Send"])
button:SetScript("OnClick", OnButtonClick)
frame.quickSendBtn = button
local button = TSMAPI.GUI:CreateButton(frame, 15)
button:SetPoint("TOPLEFT", frame.quickSendBtn, "TOPRIGHT", 5, 0)
button:SetPoint("TOPRIGHT", -5, -40)
button:SetHeight(20)
button:SetText(L["Other"])
button:SetScript("OnClick", OnButtonClick)
frame.otherBtn = button
TSMAPI.GUI:CreateHorizontalLine(frame, -70)
local content = CreateFrame("Frame", nil, frame)
content:SetPoint("TOPLEFT", 0, -70)
content:SetPoint("BOTTOMRIGHT")
frame.inboxTab = TSM.Inbox:CreateTab(content)
frame.inboxTab:Hide()
frame.groupsTab = TSM.Groups:CreateTab(content)
frame.groupsTab:Hide()
frame.otherTab = TSM.Other:CreateTab(content)
frame.otherTab:Hide()
frame.quickSendTab = TSM.QuickSend:CreateTab(content)
frame.quickSendTab:Hide()
end
@@ -0,0 +1,352 @@
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Mailing --
-- http://www.curse.com/addons/wow/tradeskillmaster_mailing --
-- --
-- A TradeSkillMaster Addon (http://tradeskillmaster.com) --
-- All Rights Reserved* - Detailed license information included with addon. --
-- ------------------------------------------------------------------------------ --
local TSM = select(2, ...)
local Options = TSM:NewModule("Options", "AceEvent-3.0")
local AceGUI = LibStub("AceGUI-3.0")
local L = LibStub("AceLocale-3.0"):GetLocale("TradeSkillMaster_Mailing") -- loads the localization table
function Options:Load(parent, operation, group)
Options.treeGroup = AceGUI:Create("TSMTreeGroup")
Options.treeGroup:SetLayout("Fill")
Options.treeGroup:SetCallback("OnGroupSelected", function(...) Options:SelectTree(...) end)
Options.treeGroup:SetStatusTable(TSM.db.global.optionsTreeStatus)
parent:AddChild(Options.treeGroup)
Options:UpdateTree()
if operation then
if operation == "" then
Options.currentGroup = group
Options.treeGroup:SelectByPath(2)
Options.currentGroup = nil
else
Options.treeGroup:SelectByPath(2, operation)
end
else
Options.treeGroup:SelectByPath(1)
end
end
function Options:UpdateTree()
local operationTreeChildren = {}
for name in pairs(TSM.operations) do
tinsert(operationTreeChildren, { value = name, text = name })
end
sort(operationTreeChildren, function(a, b) return a.value < b.value end)
Options.treeGroup:SetTree({ { value = 1, text = L["Options"] }, { value = 2, text = L["Operations"], children = operationTreeChildren } })
end
function Options:SelectTree(treeGroup, _, selection)
treeGroup:ReleaseChildren()
local major, minor = ("\001"):split(selection)
major = tonumber(major)
if major == 1 then
Options:LoadGeneralSettings(treeGroup)
elseif minor then
Options:DrawOperationSettings(treeGroup, minor)
else
Options:DrawNewOperation(treeGroup)
end
end
function Options:DrawNewOperation(container)
local currentGroup = Options.currentGroup
local page = {
{
-- scroll frame to contain everything
type = "ScrollFrame",
layout = "List",
children = {
{
type = "InlineGroup",
layout = "flow",
title = L["New Operation"],
children = {
{
type = "Label",
text = L["Mailing operations contain settings for easy mailing of items to other characters."],
relativeWidth = 1,
},
{
type = "EditBox",
label = L["Operation Name"],
relativeWidth = 0.8,
callback = function(self, _, name)
name = (name or ""):trim()
if name == "" then return end
if TSM.operations[name] then
self:SetText("")
return TSM:Printf(L["Error creating operation. Operation with name '%s' already exists."], name)
end
TSM.operations[name] = CopyTable(TSM.operationDefaults)
Options:UpdateTree()
Options.treeGroup:SelectByPath(2, name)
TSMAPI:NewOperationCallback("Mailing", currentGroup, name)
end,
tooltip = L["Give the new operation a name. A descriptive name will help you find this operation later."],
},
},
},
},
},
}
TSMAPI:BuildPage(container, page)
end
function Options:DrawOperationSettings(container, operationName)
local tg = AceGUI:Create("TSMTabGroup")
tg:SetLayout("Fill")
tg:SetFullHeight(true)
tg:SetFullWidth(true)
tg:SetTabs({{value=1, text=L["General"]}, {value=2, text=L["Relationships"]}, {value=3, text=L["Management"]}})
tg:SetCallback("OnGroupSelected", function(self,_,value)
tg:ReleaseChildren()
TSMAPI:UpdateOperation("Mailing", operationName)
if value == 1 then
Options:DrawOperationGeneral(self, operationName)
elseif value == 2 then
Options:DrawOperationRelationships(self, operationName)
elseif value == 3 then
TSMAPI:DrawOperationManagement(TSM, self, operationName)
end
end)
container:AddChild(tg)
tg:SelectTab(1)
end
function Options:DrawOperationGeneral(container, operationName)
local operationSettings = TSM.operations[operationName]
local page = {
{
-- scroll frame to contain everything
type = "ScrollFrame",
layout = "List",
children = {
{
type = "InlineGroup",
layout = "flow",
title = L["Operation Settings"],
children = {
{
type = "EditBox",
label = L["Target Player"],
settingInfo = {operationSettings, "target"},
autoComplete = AUTOCOMPLETE_LIST.MAIL,
relativeWidth = 0.5,
disabled = operationSettings.relationships.target,
tooltip = L["The name of the player you want to mail items to."].."\n\n"..TSM.SPELLING_WARNING,
},
{
type = "Slider",
label = L["Keep Quantity"],
settingInfo = {operationSettings, "keepQty"},
relativeWidth = 0.5,
disabled = operationSettings.relationships.keepQty,
min = 0,
max = 500,
step = 1,
tooltip = L["Mailing will keep this number of items in the current player's bags and not mail them to the target."],
},
{
type = "HeadingLine"
},
{ -- first line of text
type = "CheckBox",
label = L["Set Max Quantity"],
settingInfo = {operationSettings, "maxQtyEnabled"},
disabled = operationSettings.relationships.maxQtyEnabled,
callback = function() Options.treeGroup:SelectByPath(2, operationName) end,
tooltip = L["If checked, a maximum quantity to send to the target can be set. Otherwise, Mailing will send as many as it can."],
},
{
type = "Slider",
label = L["Maximum Quantity"],
settingInfo = {operationSettings, "maxQty"},
disabled = not operationSettings.maxQtyEnabled or operationSettings.relationships.maxQty,
relativeWidth = 0.5,
min = 1,
max = 500,
step = 1,
tooltip = L["Sets the maximum quantity of each unique item to send to the target at a time."],
},
{
type = "CheckBox",
label = L["Restock Target to Max Quantity"],
settingInfo = {operationSettings, "restock"},
disabled = not operationSettings.maxQtyEnabled or operationSettings.relationships.restock,
callback = function() Options.treeGroup:SelectByPath(2, operationName) end,
tooltip = L["If checked, the target's current inventory will be taken into account when determing how many to send. For example, if the max quantity is set to 10, and the target already has 3, Mailing will send at most 7 items."],
},
{
type = "CheckBox",
label = L["Include Guild Bank in Restock"],
settingInfo = {operationSettings, "restockGBank"},
disabled = not operationSettings.restock or operationSettings.relationships.restockGBank,
tooltip = L["If checked, the target's guild bank will be included in their inventory for the 'Restock Target to Max Quantity' option."],
},
},
},
},
},
}
TSMAPI:BuildPage(container, page)
end
function Options:DrawOperationRelationships(container, operationName)
local settingInfo = {
{
label = L["General Settings"],
{key="target", label=L["Target Player"]},
{key="keepQty", label=L["Keep Quantity"]},
{key="maxQtyEnabled", label=L["Set Max Quantity"]},
{key="maxQty", label=L["Maximum Quantity"]},
{key="restock", label=L["Restock Target to Max Quantity"]},
{key="restockGBank", label=L["Include Guild Bank in Restock"]},
},
}
TSMAPI:ShowOperationRelationshipTab(TSM, container, TSM.operations[operationName], settingInfo)
end
function Options:LoadGeneralSettings(container)
local page = {
{
-- scroll frame to contain everything
type = "ScrollFrame",
layout = "List",
children = {
{
type = "InlineGroup",
layout = "flow",
title = L["General Settings"],
relativeWidth = 1,
children = {
{
type = "CheckBox",
label = L["Make Mailing Default Mail Tab"],
settingInfo = {TSM.db.global, "defaultMailTab"},
tooltip = L["If checked, the Mailing tab of the mailbox will be the default tab."],
},
{
type = "Dropdown",
label = L["Default Mailing Page"],
relativeWidth = 0.49,
list = {L["Inbox"], L["TSM Groups"], L["Quick Send"], L["Other"]},
settingInfo = {TSM.db.global, "defaultPage"},
tooltip = L["Specifies the default page that'll show when you select the TSM_Mailing tab."],
},
{
type = "CheckBox",
label = L["Auto Recheck Mail"],
settingInfo = {TSM.db.global, "autoCheck"},
tooltip = L["Automatically rechecks mail every 60 seconds when you have too much mail.\n\nIf you loot all mail with this enabled, it will wait and recheck then keep auto looting."],
},
{
type = "CheckBox",
label = L["Show Reload UI Button"],
settingInfo = {TSM.db.global, "showReloadBtn"},
tooltip = L["If checked, a 'Reload UI' button will be shown while waiting for the inbox to refresh. Reloading will cause the mailbox to refresh and may be faster than waiting for the next refresh."],
},
{
type = "CheckBox",
label = L["Leave Gold with Open All"],
settingInfo = {TSM.db.global, "openAllLeaveGold"},
tooltip = L["If checked, the 'Open All' button will leave any mail containing gold."],
},
{
type = "CheckBox",
label = L["Send Items Individually"],
settingInfo = {TSM.db.global, "sendItemsIndividually"},
tooltip = L["Sends each unique item in a seperate mail."],
},
{
type = "Slider",
value = TSM.db.global.sendDelay,
label = L["Mail Send Delay"],
min = 0.1,
max = 2,
step = 0.1,
relativeWidth = 0.49,
disabled = not TSM.db.global.sendDelay,
callback = function(self,_,value)
if value < 0.1 then value = 0.1 end
if value > 2 then value = 2 end
self:SetValue(value)
TSM.db.global.sendDelay = value
end,
tooltip = L["This slider controls how long the mail sending code waits between consecutive mails. If this is set too low, you will run into internal mailbox errors."],
},
{
type = "Slider",
value = TSM.db.global.resendDelay,
label = L["Restart Delay (minutes)"],
min = 0.5,
max = 10,
step = 0.5,
relativeWidth = 0.49,
disabled = not TSM.db.global.resendDelay,
callback = function(self,_,value)
if value < 0.5 then value = 0.5 end
if value > 10 then value = 10 end
self:SetValue(value)
TSM.db.global.resendDelay = value
end,
tooltip = L["When you shift-click a send mail button, after the initial send, it will check for new items to send at this interval."],
},
{
type = "Slider",
value = TSM.db.global.keepMailSpace,
label = L["Keep Free Bag Space"],
min = 0,
max = 20,
step = 1,
relativeWidth = 0.49,
callback = function(self,_,value)
TSM.db.global.keepMailSpace = value
end,
tooltip = L["This slider controls how much free space to keep in your bags when looting from the mailbox. This only applies to bags that any item can go in."],
},
},
},
{
type = "InlineGroup",
layout = "flow",
title = L["Chat Message Options"],
relativeWidth = 1,
children = {
{
type = "CheckBox",
label = L["Enable Inbox Chat Messages"],
settingInfo = {TSM.db.global, "inboxMessages"},
tooltip = L["If checked, information on mails collected by TSM_Mailing will be printed out to chat."],
},
{
type = "CheckBox",
label = L["Display Total Money Received"],
settingInfo = {TSM.db.global, "displayMoneyCollected"},
tooltip = L["If checked, the total amount of gold received will be shown at the end of automatically collecting mail."],
},
{
type = "CheckBox",
label = L["Enable Sending Chat Messages"],
settingInfo = {TSM.db.global, "sendMessages"},
tooltip = L["If checked, information on mails sent by TSM_Mailing will be printed out to chat."],
},
},
},
},
},
}
TSMAPI:BuildPage(container, page)
end
+198
View File
@@ -0,0 +1,198 @@
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Mailing --
-- http://www.curse.com/addons/wow/tradeskillmaster_mailing --
-- --
-- A TradeSkillMaster Addon (http://tradeskillmaster.com) --
-- All Rights Reserved* - Detailed license information included with addon. --
-- ------------------------------------------------------------------------------ --
local TSM = select(2, ...)
local Other = TSM:NewModule("Other", "AceEvent-3.0")
local L = LibStub("AceLocale-3.0"):GetLocale("TradeSkillMaster_Mailing") -- loads the localization table
local private = {}
function Other:CreateTab(parent)
local frame = CreateFrame("Frame", nil, parent)
frame:Hide()
frame:SetAllPoints()
local deBox = CreateFrame("Frame", nil, frame)
TSMAPI.Design:SetFrameColor(deBox)
deBox:SetPoint("TOPLEFT", 5, -5)
deBox:SetPoint("TOPRIGHT", -5, -5)
deBox:SetHeight(80)
private:CreateDisenchantBox(deBox)
TSMAPI.GUI:CreateHorizontalLine(frame, -103)
local sendGoldBox = CreateFrame("Frame", nil, frame)
TSMAPI.Design:SetFrameColor(sendGoldBox)
sendGoldBox:SetPoint("TOPLEFT", deBox, "BOTTOMLEFT", 0, -50)
sendGoldBox:SetPoint("TOPRIGHT", deBox, "BOTTOMRIGHT", 0, -50)
sendGoldBox:SetHeight(80)
private:CreateSendGoldBox(sendGoldBox)
return frame
end
function private:CreateDisenchantBox(frame)
local label = TSMAPI.GUI:CreateLabel(frame, "normal")
label:SetPoint("TOPLEFT", 5, -5)
label:SetPoint("TOPRIGHT", -5, -5)
label:SetHeight(20)
label:SetJustifyV("TOP")
label:SetJustifyH("LEFT")
label:SetText(L["Mail Disenchantables:"])
local targetBoxLabel = TSMAPI.GUI:CreateLabel(frame, "small")
targetBoxLabel:SetPoint("TOPLEFT", 5, -30)
targetBoxLabel:SetHeight(20)
targetBoxLabel:SetJustifyV("CENTER")
targetBoxLabel:SetJustifyH("LEFT")
targetBoxLabel:SetText(L["Target Player:"])
local targetBox = TSMAPI.GUI:CreateInputBox(frame)
targetBox:SetPoint("TOPLEFT", targetBoxLabel, "TOPRIGHT", 5, 0)
targetBox:SetPoint("TOPRIGHT", -5, -30)
targetBox:SetHeight(20)
targetBox:SetText(TSM.db.factionrealm.deMailTarget)
targetBox:SetScript("OnEnterPressed", function(self)
TSM.db.factionrealm.deMailTarget = self:GetText():trim()
self:ClearFocus()
frame.btn:Update()
end)
targetBox.tooltip = L["Enter name of the character disenchantable greens should be sent to."].."\n\n"..TSM.SPELLING_WARNING
local function OnClick()
local target = TSM.db.factionrealm.deMailTarget
if target == "" then return end
local items = {}
local hasItems
for bag, slot, itemString, quantity in TSMAPI:GetBagIterator() do
if private:IsDisenchantable(itemString) and not TSMAPI:GetGroupPath(TSMAPI:GetBaseItemString(itemString, true)) and not TSMAPI:IsSoulbound(bag, slot) then
items[itemString] = (items[itemString] or 0) + quantity
hasItems = true
end
end
if hasItems then
local function callback()
TSM:Printf(L["Sent all disenchantable greens to %s."], target)
frame.btn:Update()
end
frame.btn:Disable()
frame.btn:SetText(L["Sending..."])
TSM.AutoMail:SendItems(items, target, callback)
end
end
local btn = TSMAPI.GUI:CreateButton(frame, 15)
btn:SetPoint("TOPLEFT", 5, -55)
btn:SetPoint("TOPRIGHT", -5, -55)
btn:SetHeight(20)
btn:SetScript("OnClick", OnClick)
btn.tooltip = L["Click this button to send all disenchantable greens in your bags to the specified character."]
btn.Update = function(self)
if TSM.db.factionrealm.deMailTarget ~= "" then
self:Enable()
self:SetText(format(L["Send Disenchantable Greens to %s"], TSM.db.factionrealm.deMailTarget))
else
self:Disable()
self:SetText(L["No Target Player"])
end
end
btn:Update()
frame.btn = btn
end
function private:CreateSendGoldBox(frame)
local label = TSMAPI.GUI:CreateLabel(frame, "normal")
label:SetPoint("TOPLEFT", 5, -5)
label:SetPoint("TOPRIGHT", -5, -5)
label:SetHeight(20)
label:SetJustifyV("TOP")
label:SetJustifyH("LEFT")
label:SetText(L["Send Excess Gold to Banker:"])
local targetBoxLabel = TSMAPI.GUI:CreateLabel(frame, "small")
targetBoxLabel:SetPoint("TOPLEFT", 5, -30)
targetBoxLabel:SetHeight(20)
targetBoxLabel:SetJustifyV("CENTER")
targetBoxLabel:SetJustifyH("LEFT")
targetBoxLabel:SetText(L["Target Player:"])
local targetBox = TSMAPI.GUI:CreateInputBox(frame)
targetBox:SetPoint("TOPLEFT", targetBoxLabel, "TOPRIGHT", 5, 0)
targetBox:SetWidth(80)
targetBox:SetHeight(20)
targetBox:SetText(TSM.db.char.goldMailTarget)
targetBox:SetScript("OnEnterPressed", function(self)
TSM.db.char.goldMailTarget = self:GetText():trim()
self:ClearFocus()
frame.btn:Update()
end)
targetBox.tooltip = L["Enter the name of the player you want to send excess gold to."].."\n\n"..TSM.SPELLING_WARNING
local goldBoxLabel = TSMAPI.GUI:CreateLabel(frame, "small")
goldBoxLabel:SetPoint("TOPLEFT", targetBox, "TOPRIGHT", 15, 0)
goldBoxLabel:SetHeight(20)
goldBoxLabel:SetJustifyV("CENTER")
goldBoxLabel:SetJustifyH("LEFT")
goldBoxLabel:SetText(L["Limit (In Gold):"])
local goldBox = TSMAPI.GUI:CreateInputBox(frame)
goldBox:SetPoint("TOPLEFT", goldBoxLabel, "TOPRIGHT", 5, 0)
goldBox:SetPoint("TOPRIGHT", -5, -30)
goldBox:SetHeight(20)
goldBox:SetNumeric(true)
goldBox:SetNumber(TSM.db.char.goldKeepAmount)
goldBox:SetScript("OnTextChanged", function(self)
TSM.db.char.goldKeepAmount = self:GetNumber()
frame.btn:Update()
end)
goldBox:SetScript("OnEnterPressed", function(self) self:ClearFocus() end)
goldBox.tooltip = L["This is maximum amount of gold you want to keep on the current player. Any amount over this limit will be send to the specified character."]
local function OnClick()
local extra = (GetMoney() - 30) - (TSM.db.char.goldKeepAmount * COPPER_PER_GOLD)
if extra <= 0 then
TSM:Print(L["Not sending any gold as you have less than the specified limit."])
return
end
SetSendMailMoney(extra)
SendMail(TSM.db.char.goldMailTarget, L["TSM_Mailing Excess Gold"], "")
TSM:Printf(L["Sent %s to %s."], TSMAPI:FormatTextMoney(extra), TSM.db.char.goldMailTarget)
end
local btn = TSMAPI.GUI:CreateButton(frame, 15)
btn:SetPoint("TOPLEFT", 5, -55)
btn:SetPoint("TOPRIGHT", -5, -55)
btn:SetHeight(20)
btn:SetScript("OnClick", OnClick)
btn.tooltip = L["Click this button to send excess gold to the specified character."]
btn.Update = function(self)
if TSM.db.char.goldMailTarget == "" then
self:Disable()
self:SetText(L["Not Target Specified"])
elseif TSMAPI:IsPlayer(TSM.db.char.goldMailTarget) then
self:Disable()
self:SetText(L["Target is Current Player"])
else
self:Enable()
self:SetText(format(L["Send Excess Gold to %s"], TSM.db.char.goldMailTarget))
end
end
btn:Update()
frame.btn = btn
end
function private:IsDisenchantable(itemString)
local _, link, quality, _, _, iType = TSMAPI:GetSafeItemInfo(itemString)
local WEAPON, ARMOR = GetAuctionItemClasses()
if itemString and not TSMAPI.DisenchantingData.notDisenchantable[itemString] and (iType == ARMOR or iType == WEAPON) and quality == ITEM_QUALITY_UNCOMMON then
return true
end
end
@@ -0,0 +1,221 @@
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Mailing --
-- http://www.curse.com/addons/wow/tradeskillmaster_mailing --
-- --
-- A TradeSkillMaster Addon (http://tradeskillmaster.com) --
-- All Rights Reserved* - Detailed license information included with addon. --
-- ------------------------------------------------------------------------------ --
local TSM = select(2, ...)
local QuickSend = TSM:NewModule("QuickSend", "AceEvent-3.0")
local L = LibStub("AceLocale-3.0"):GetLocale("TradeSkillMaster_Mailing") -- loads the localization table
local private = {itemLink=nil, quantity=0, target="", cod=0}
function QuickSend:CreateTab(parent)
local frame = CreateFrame("Frame", nil, parent)
frame:Hide()
frame:SetPoint("TOPLEFT", 5, -5)
frame:SetPoint("BOTTOMRIGHT", -5, 5)
frame:SetAllPoints()
TSMAPI.Design:SetFrameColor(frame)
local label = TSMAPI.GUI:CreateLabel(frame, "normal")
label:SetPoint("TOPLEFT", 5, -5)
label:SetPoint("TOPRIGHT", -5, -5)
label:SetHeight(50)
label:SetJustifyV("TOP")
label:SetJustifyH("LEFT")
label:SetText(L["This tab allows you to quickly send any quantity of an item to another character. You can also specify a COD to set on the mail (per item)."])
TSMAPI.GUI:CreateHorizontalLine(frame, -55)
local itemBoxLabel = TSMAPI.GUI:CreateLabel(frame, "small")
itemBoxLabel:SetPoint("TOPLEFT", 5, -65)
itemBoxLabel:SetHeight(20)
itemBoxLabel:SetJustifyV("CENTER")
itemBoxLabel:SetJustifyH("LEFT")
itemBoxLabel:SetText(L["Item (Drag Into Box):"])
local function OnItemDrag(self)
local cType, _, link = GetCursorInfo()
if cType == "item" then
self:SetText(link)
private.itemLink = link
ClearCursor()
private.btn:Update()
end
end
local itemBox = TSMAPI.GUI:CreateInputBox(frame)
itemBox:SetPoint("TOPLEFT", itemBoxLabel, "TOPRIGHT", 5, 0)
itemBox:SetPoint("TOPRIGHT", -95, -65)
itemBox:SetHeight(20)
itemBox:SetText(private.itemLink or "")
itemBox:SetScript("OnEditFocusGained", function(self) self:ClearFocus() end)
itemBox:SetScript("OnReceiveDrag", OnItemDrag)
itemBox:SetScript("OnMouseDown", OnItemDrag)
itemBox.tooltip = L["Drag (or place) the item that you want to send into this editbox."]
local itemClearBtn = TSMAPI.GUI:CreateButton(frame, 15)
itemClearBtn:SetPoint("TOPLEFT", itemBox, "TOPRIGHT", 5, 0)
itemClearBtn:SetPoint("TOPRIGHT", -5, -65)
itemClearBtn:SetHeight(20)
itemClearBtn:SetText(L["Clear"])
itemClearBtn:SetScript("OnClick", function()
private.itemLink = nil
itemBox:SetText("")
private.btn:Update()
end)
itemClearBtn.tooltip = L["Clears the item box."]
local targetBoxLabel = TSMAPI.GUI:CreateLabel(frame, "small")
targetBoxLabel:SetPoint("TOPLEFT", 5, -95)
targetBoxLabel:SetHeight(20)
targetBoxLabel:SetJustifyV("CENTER")
targetBoxLabel:SetJustifyH("LEFT")
targetBoxLabel:SetText(L["Target:"])
local targetBox = TSMAPI.GUI:CreateInputBox(frame)
targetBox:SetPoint("TOPLEFT", targetBoxLabel, "TOPRIGHT", 5, 0)
targetBox:SetWidth(100)
targetBox:SetHeight(20)
targetBox:SetText(private.target)
targetBox:SetScript("OnEnterPressed", function(self)
self:ClearFocus()
end)
targetBox:SetScript("OnEditFocusLost", function(self)
self:HighlightText(0, 0)
private.target = self:GetText():trim()
private.btn:Update()
end)
targetBox:SetScript("OnTabPressed", function(self)
self:ClearFocus()
frame.qtyBox:SetFocus()
frame.qtyBox:HighlightText()
end)
TSMAPI.GUI:SetAutoComplete(targetBox, AUTOCOMPLETE_LIST.MAIL)
targetBox.tooltip = L["Enter the name of the player you want to send this item to."].."\n\n"..TSM.SPELLING_WARNING
local qtyBoxLabel = TSMAPI.GUI:CreateLabel(frame, "small")
qtyBoxLabel:SetPoint("TOPLEFT", targetBox, "TOPRIGHT", 20, 0)
qtyBoxLabel:SetHeight(20)
qtyBoxLabel:SetJustifyV("CENTER")
qtyBoxLabel:SetJustifyH("LEFT")
qtyBoxLabel:SetText(L["Max Quantity:"])
local qtyBox = TSMAPI.GUI:CreateInputBox(frame)
qtyBox:SetPoint("TOPLEFT", qtyBoxLabel, "TOPRIGHT", 5, 0)
qtyBox:SetPoint("TOPRIGHT", -5, -95)
qtyBox:SetHeight(20)
qtyBox:SetNumeric(true)
qtyBox:SetNumber(private.quantity)
qtyBox:SetScript("OnEnterPressed", function(self)
self:ClearFocus()
end)
qtyBox:SetScript("OnEditFocusLost", function(self)
self:HighlightText(0, 0)
private.quantity = self:GetNumber()
private.btn:Update()
end)
qtyBox:SetScript("OnTabPressed", function(self)
self:ClearFocus()
frame.codBox:SetFocus()
frame.codBox:HighlightText()
end)
qtyBox.tooltip = L["This is the maximum number of the specified item to send when you click the button below. Setting this to 0 will send ALL items."]
frame.qtyBox = qtyBox
local codBoxLabel = TSMAPI.GUI:CreateLabel(frame, "small")
codBoxLabel:SetPoint("TOPLEFT", 5, -125)
codBoxLabel:SetHeight(20)
codBoxLabel:SetJustifyV("CENTER")
codBoxLabel:SetJustifyH("LEFT")
codBoxLabel:SetText(L["COD Amount (per Item):"])
local codBox = TSMAPI.GUI:CreateInputBox(frame)
codBox:SetPoint("TOPLEFT", codBoxLabel, "TOPRIGHT", 5, 0)
codBox:SetPoint("TOPRIGHT", -5, -125)
codBox:SetHeight(20)
codBox:SetText(TSMAPI:FormatTextMoney(private.cod))
codBox:SetScript("OnEnterPressed", function(self)
local copper = TSMAPI:UnformatTextMoney(self:GetText():trim())
if copper then
private.cod = copper
self:SetText(TSMAPI:FormatTextMoney(copper))
self:ClearFocus()
private.btn:Update()
else
self:SetFocus()
end
end)
codBox.tooltip = L["Enter the desired COD amount (per item) to send this item with. Setting this to '0c' will result in no COD being set."]
frame.codBox = codBox
local function OnClick()
local itemString = TSMAPI:GetItemString(private.itemLink)
local numHave = 0
for _, _, iString, quantity in TSMAPI:GetBagIterator() do
if iString == itemString then
numHave = numHave + quantity
end
end
local quantity
if private.quantity == 0 then
quantity = numHave
else
quantity = min(private.quantity, numHave)
end
TSM.AutoMail:SendItems({[itemString]=quantity}, private.target, private.SendCallback, private.cod > 0 and private.cod)
private.btn:SetText(L["Sending..."])
private.btn:Disable()
end
local btn = TSMAPI.GUI:CreateButton(frame, 15)
btn:SetPoint("TOPLEFT", 5, -155)
btn:SetPoint("TOPRIGHT", -5, -155)
btn:SetHeight(40)
btn:GetFontString():SetWidth(btn:GetWidth())
btn:GetFontString():SetHeight(btn:GetHeight())
btn:SetScript("OnClick", OnClick)
btn.tooltip = L["Click this button to send off the item to the specified character."]
btn.Update = function(self)
if not private.itemLink then
self:Disable()
self:SetText(L["No Item Specified"])
elseif private.target == "" then
self:Disable()
self:SetText(L["No Target Specified"])
else
self:Enable()
if private.cod > 0 then
if private.quantity == 0 then
self:SetText(format(L["Send all %s to %s - %s per Item COD"], private.itemLink, private.target, TSMAPI:FormatTextMoney(private.cod)))
else
self:SetText(format(L["Send %sx%d to %s - %s per Item COD"], private.itemLink, private.quantity, private.target, TSMAPI:FormatTextMoney(private.cod)))
end
else
if private.quantity == 0 then
self:SetText(format(L["Send all %s to %s - No COD"], private.itemLink, private.target))
else
self:SetText(format(L["Send %sx%d to %s - No COD"], private.itemLink, private.quantity, private.target))
end
end
end
end
btn:Update()
private.btn = btn
return frame
end
function private:SendCallback()
private.btn:Update()
end
@@ -0,0 +1,92 @@
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Mailing --
-- http://www.curse.com/addons/wow/tradeskillmaster_mailing --
-- --
-- A TradeSkillMaster Addon (http://tradeskillmaster.com) --
-- All Rights Reserved* - Detailed license information included with addon. --
-- ------------------------------------------------------------------------------ --
-- register this file with Ace Libraries
local TSM = select(2, ...)
TSM = LibStub("AceAddon-3.0"):NewAddon(TSM, "TSM_Mailing", "AceEvent-3.0", "AceConsole-3.0")
local AceGUI = LibStub("AceGUI-3.0") -- load the AceGUI libraries
local L = LibStub("AceLocale-3.0"):GetLocale("TradeSkillMaster_Mailing") -- loads the localization table
TSM.SPELLING_WARNING = "|cffff0000"..L["BE SURE TO SPELL THE NAME CORRECTLY!"].."|r"
local private = {lootIndex=1, recheckTime=1, allowTimerStart=true}
local savedDBDefaults = {
global = {
defaultMailTab = true,
autoCheck = true,
displayMoneyCollected = true,
sendItemsIndividually = false,
resendDelay = 1,
sendDelay = 0.5,
optionsTreeStatus = {},
openAllLeaveGold = false,
inboxMessages = true,
sendMessages = true,
defaultPage = 1,
showReloadBtn = true,
keepMailSpace = 0,
},
factionrealm = {
deMailTarget = "",
mailTargets = {},
mailItems = {},
},
char = {
goldMailTarget = "",
goldKeepAmount = 1000000,
},
}
function TSM:OnEnable()
-- load the savedDB into TSM.db
TSM.db = LibStub:GetLibrary("AceDB-3.0"):New("TradeSkillMaster_MailingDB", savedDBDefaults, true)
for moduleName, module in pairs(TSM.modules) do
TSM[moduleName] = module
end
-- register this module with TSM
TSM:RegisterModule()
-- temporary check
TSMAPI:Verify(TSMAPI.IsPlayer, "You need to update your TradeSkillMaster addon. Otherwise, you may see lua errors!")
end
-- registers this module with TSM by first setting all fields and then calling TSMAPI:NewModule().
function TSM:RegisterModule()
TSM.operations = {maxOperations=12, callbackOptions="Options:Load", callbackInfo="GetOperationInfo"}
TSM.moduleAPIs = {
{key="mailItems", callback="AutoMail:SendItems"},
}
TSMAPI:NewModule(TSM)
end
TSM.operationDefaults = {
maxQtyEnabled = nil,
maxQty = 10,
target = "",
restock = nil, -- take into account how many the target already has
restockGBank = nil,
keepQty = 0,
ignorePlayer = {},
ignoreFactionrealm = {},
relationships = {},
}
function TSM:GetOperationInfo(operationName)
local operation = TSM.operations[operationName]
if not operation then return end
if operation.target == "" then return end
if operation.maxQtyEnabled then
return format(L["Mailing up to %d to %s."], operation.maxQty, operation.target)
else
return format(L["Mailing all to %s."], operation.target)
end
end
@@ -0,0 +1,31 @@
## Interface: 30300
## Title: |cff00ff00TradeSkillMaster_Mailing|r
## Notes: Provides Auto-Opening and Auto-Sending features to the mailbox.
## Author: Sapu94, Bart39
## Version: v2.2.1
## SavedVariables: TradeSkillMaster_MailingDB
## Dependency: TradeSkillMaster
## X-Curse-Packaged-Version: v2.2.1
## X-Curse-Project-Name: TradeSkillMaster_Mailing
## X-Curse-Project-ID: tradeskillmaster_mailing
## X-Curse-Repository-ID: wow/tradeskillmaster_mailing/mainline
Locale\enUS.lua
Locale\frFR.lua
Locale\deDE.lua
Locale\koKR.lua
Locale\esMX.lua
Locale\ruRU.lua
Locale\zhCN.lua
Locale\esES.lua
Locale\zhTW.lua
Locale\ptBR.lua
TradeSkillMaster_Mailing.lua
Modules\MailTab.lua
Modules\Inbox.lua
Modules\Groups.lua
Modules\QuickSend.lua
Modules\Other.lua
Modules\Options.lua
Modules\AutoMail.lua