Additional botting resources. Addons may be either for the game itself or for the RoM bot.
Forum rules
Only post additional bot resources here. Please do not ask unrelated questions.
-
weirdo69
- Posts: 7
- Joined: Fri Jul 22, 2011 11:39 am
#181
Post
by weirdo69 » Fri Aug 05, 2011 9:14 pm
I am also getting an error at line 214 with the string vs. table....
Code: Select all
<!-- # 13 --><waypoint x="5220" z="-2178" y="103">
for i = 1, 17 do
sendMacro("EquipItem("..i..")");
yrest(1000)
end
player:target_Object("Mailbox",2000);
yrest(1000)
if player.Name == "toon1" then
UMM_SendByNameOrId("toon2", {"Flannel Gloves","Double Welt Soft Boots","Staff of Witchery"}); yrest (2000);
end
yrest(5000);
sendMacro("}LoginNextToon=true;a={");
sendMacro("Logout();"); yrest(60*1000);
player = CPlayer.new();
settings.load();
yrest (4000)
loadPaths("CoOStart");
</waypoint>
When I ran this code:
Code: Select all
<!-- # 13 --><waypoint x="5220" z="-2178" y="103">
for i = 1, 17 do
sendMacro("EquipItem("..i..")");
yrest(1000)
end
player:target_Object("Mailbox",2000);
yrest(1000)
if player.Name == "toon1" then
UMM_SendByStatNumber("toon2", 4); yrest (2000);
end
yrest(5000);
sendMacro("}LoginNextToon=true;a={");
sendMacro("Logout();"); yrest(60*1000);
player = CPlayer.new();
settings.load();
yrest (4000)
loadPaths("CoOStart");
</waypoint>
I always got an error saying "please close the mailbox interface...", toon1 sends first bag slot item or gives bound error if it is bound. Then it logs off swaps characters and next character "toon2" logs on but mailbox won't open get "Please close mailbox interface..." WTF?
It worked fine when I clean booted in other words if I had accessed the mailbox with "toon1" and got mailbox error couldn't open it with "toon2" but if I restarted ROM and MM the "toon1" would send items correctly. I think this indicates 2 problems one is the mail box interface error and the other is the UMM_SendByNameOrId line 214 error. Hope this helps with the problem, just rolling manually for now
-
rock5
- Posts: 12173
- Joined: Tue Jan 05, 2010 3:30 am
- Location: Australia
#182
Post
by rock5 » Fri Aug 05, 2011 10:02 pm
There is a bug in the game that if you change character without closing the mailbox then the next character will think it's still open. When this happens the only way I've found to open the mailbox is to use the following command,
The old mail interface will open. Close that, then you will be able to click the mailbox to open the UMM interface.
This could be avoided if you close the UMM interface before relogging.
So just add that to your script before relogging and it should work.
The reason I never added it to my mail userfunctions is so that, if you want to use more than one of the functions, you don't need to open the mail box between each one.
Maybe I could add a "CloseAllWindows()" command to the player:logout() function? Of course a lot of people don't use that function but instead use the ingame logout function instead like yourself.
- Please consider making a small donation to me to support my continued contributions to the bot and this forum. Thank you. Donate
- I check all posts before reading PMs. So if you want a fast reply, don't PM me but post a topic instead. PM me for private or personal topics only.
- How to: copy and paste in micromacro
________________________
Quote:
- “They say hard work never hurt anybody, but I figure, why take the chance.”
-
nokirk
- Posts: 73
- Joined: Sat Jul 03, 2010 2:26 pm
#183
Post
by nokirk » Sun Aug 07, 2011 2:31 am
rock5 wrote:
I guess we could redo the first test but this time properly. Maybe it will shed some light on the matter. This time insert these lines.
Code: Select all
if type(nam) == "table" then print("nam equals") table.print(nam)
elseif typee(slotitem.Name) == "table" then print("slotitem.Name equals") table.print(slotitem) end
I've got the same problem with line 214,
Code: Select all
UMM_SendByNameOrId ("xxx", {202917,202916,203033,203450,206697,206695,206696});
doesn' t work so I tried to insert those 2 lines.
They are supposed to go into the addon file, right? I tried to insert it after
Code: Select all
-- place item in table if not already
if type(_itemTable) ~= "number" or type(_itemTable) ~= "string" then
_itemTable = {_itemTable}
end
in line 197 but error was
[string " ..."]:6: attempt to index global 'slotitem' (a nil value
)
-
rock5
- Posts: 12173
- Joined: Tue Jan 05, 2010 3:30 am
- Location: Australia
#184
Post
by rock5 » Sun Aug 07, 2011 3:28 am
Does your waypoint file open the mailbox, do stuff, change character then try to open the mailbox again?
- Please consider making a small donation to me to support my continued contributions to the bot and this forum. Thank you. Donate
- I check all posts before reading PMs. So if you want a fast reply, don't PM me but post a topic instead. PM me for private or personal topics only.
- How to: copy and paste in micromacro
________________________
Quote:
- “They say hard work never hurt anybody, but I figure, why take the chance.”
-
nokirk
- Posts: 73
- Joined: Sat Jul 03, 2010 2:26 pm
#185
Post
by nokirk » Sun Aug 07, 2011 3:55 am
rock5 wrote:Does your waypoint file open the mailbox, do stuff, change character then try to open the mailbox again?
no, no character changing envolved
the whole script looks like this, it's for collecting guild runes:
Code: Select all
<?xml version="1.0" encoding="utf-8"?><waypoints type="TRAVEL">
<onLoad>
for i, skill in pairs(settings.profile.skills) do
if skill.Type == STYPE_BUFF then
settings.profile.skills[i].AutoUse = false
end
end
local platz = player:findNearestNameOrId(110726)
if platz then player:target_NPC(110726); sendMacro("ChoiceOption(4);"); waitForLoadingScreen(); end
__WPL:setWaypointIndex(15);
</onLoad>
<!-- # 1 --> <waypoint x="2748" z="934" y="71">
</waypoint>
<!-- # 2 --> <waypoint x="2917" z="628" y="89"> </waypoint>
<!-- # 3 --> <waypoint x="3286" z="74" y="60"> </waypoint>
<!-- # 4 --> <waypoint x="3748" z="-569" y="60"> </waypoint>
<!-- # 5 --> <waypoint x="3856" z="-720" y="61">
player:rest(10);
player:target_NPC(115810);
sendMacro("ChoiceOption(1);");
</waypoint>
<!-- # 6 --> <waypoint x="3856" z="-720" y="61">
player:target_NPC(116067); sendMacro("ChoiceOption(1);"); yrest(100);
player:target_NPC(116067); sendMacro("ChoiceOption(1);"); yrest(100);
player:target_NPC(116067); sendMacro("ChoiceOption(1);"); yrest(100);
</waypoint>
<!-- # 7 --> <waypoint x="3821" z="-670" y="60">
while ( inventory:itemTotalCount(206774) ~= 0 ) do inventory:useItem(206774); end -- oeffnen
</waypoint>
<!-- # 8 --> <waypoint x="3675" z="-456" y="60"> </waypoint>
<!-- # 9 --> <waypoint x="3436" z="-134" y="61"> </waypoint>
<!-- # 10 --> <waypoint x="3245" z="132" y="62"> </waypoint>
<!-- # 11 --> <waypoint x="3063" z="389" y="72"> </waypoint>
<!-- # 12 --> <waypoint x="2789" z="927" y="58">
player:target_NPC("Lieve");
sendMacro("ChoiceOption(2);");
waitForLoadingScreen();
</waypoint>
<!-- # 13 --> <waypoint x="4673" z="-2005" y="109"> </waypoint>
<!-- # 14 --> <waypoint x="4620" z="-2034" y="103"> </waypoint>
<!-- # 15 --> <waypoint x="4598" z="-2065" y="103"> </waypoint>
<!-- # 16 --> <waypoint x="4566" z="-2182" y="103">
player:target_Object(110538);yrest(50);sendMacro("ChoiceOption(1);");player:rest(2);
UMM_TakeMail();
yrest(500);
UMM_SendByNameOrId ("xxx", {202917,202916,203033,203450,206697,206695,206696});yrest(500); -- gildenstein, gilderune, rubin, pferdemiet,kraeuteressen, er essen, hol essen
RoMScript("CloseAllWindows()");
</waypoint>
<!-- # 17 --> <waypoint x="4582" z="-2140" y="103"> </waypoint>
<!-- # 18 --> <waypoint x="4606" z="-2065" y="103"> </waypoint>
<!-- # 19 --> <waypoint x="4638" z="-1976" y="103"> </waypoint>
<!-- # 20 --> <waypoint x="4670" z="-1948" y="103"> </waypoint>
<!-- # 21 --> <waypoint x="4750" z="-1903" y="106"> </waypoint>
<!-- # 22 --> <waypoint x="4798" z="-1888" y="104">
sendMacro("Logout();"); error("Bot finished", 0);
</waypoint>
</waypoints>
-
rock5
- Posts: 12173
- Joined: Tue Jan 05, 2010 3:30 am
- Location: Australia
#186
Post
by rock5 » Sun Aug 07, 2011 4:19 am
nokirk wrote: I tried to insert those 2 lines.
They are supposed to go into the addon file, right? I tried to insert it after
Code: Select all
-- place item in table if not already
if type(_itemTable) ~= "number" or type(_itemTable) ~= "string" then
_itemTable = {_itemTable}
end
in line 197 but error was
[string " ..."]:6: attempt to index global 'slotitem' (a nil value
)
No, put them where I said to put them, between line 213 and 214 so it looks like this,
Code: Select all
for __, nam in pairs(_itemTable) do
if type(nam) == "table" then print("nam equals") table.print(nam)
elseif typee(slotitem.Name) == "table" then print("slotitem.Name equals") table.print(slotitem) end
if string.find(string.lower(slotitem.Name),string.lower(nam)) or (slotitem.Id == nam) then -- mark to send
- Please consider making a small donation to me to support my continued contributions to the bot and this forum. Thank you. Donate
- I check all posts before reading PMs. So if you want a fast reply, don't PM me but post a topic instead. PM me for private or personal topics only.
- How to: copy and paste in micromacro
________________________
Quote:
- “They say hard work never hurt anybody, but I figure, why take the chance.”
-
nokirk
- Posts: 73
- Joined: Sat Jul 03, 2010 2:26 pm
#187
Post
by nokirk » Sun Aug 07, 2011 4:26 am
output was
nam equals
table: 0245ECA0
1: 202917
2: 202916
3: 203033
4: 203450
5: 206697
6: 206695
7: 206696
...ts/rom/userfunctions/addon_Rock5s_Mail_Functions.lua:217: bad argument #1 to
'lower' (string expected, got table)
-
rock5
- Posts: 12173
- Joined: Tue Jan 05, 2010 3:30 am
- Location: Australia
#188
Post
by rock5 » Sun Aug 07, 2011 4:43 am
I just had a look ad that bit of code you posted.
Code: Select all
-- place item in table if not already
if type(_itemTable) ~= "number" or type(_itemTable) ~= "string" then
_itemTable = {_itemTable}
end
They are supposed to be == not ~=. I must have fixed it on my computer but never got around to posting it.
I'll double check it and post it.
- Please consider making a small donation to me to support my continued contributions to the bot and this forum. Thank you. Donate
- I check all posts before reading PMs. So if you want a fast reply, don't PM me but post a topic instead. PM me for private or personal topics only.
- How to: copy and paste in micromacro
________________________
Quote:
- “They say hard work never hurt anybody, but I figure, why take the chance.”
-
nokirk
- Posts: 73
- Joined: Sat Jul 03, 2010 2:26 pm
#189
Post
by nokirk » Sun Aug 07, 2011 4:49 am
working perfectly now =) Thanks a lot !
-
rock5
- Posts: 12173
- Joined: Tue Jan 05, 2010 3:30 am
- Location: Australia
#190
Post
by rock5 » Sun Aug 07, 2011 5:02 am
I updated it with just that small change to version 1.62.
- Please consider making a small donation to me to support my continued contributions to the bot and this forum. Thank you. Donate
- I check all posts before reading PMs. So if you want a fast reply, don't PM me but post a topic instead. PM me for private or personal topics only.
- How to: copy and paste in micromacro
________________________
Quote:
- “They say hard work never hurt anybody, but I figure, why take the chance.”
-
weirdo69
- Posts: 7
- Joined: Fri Jul 22, 2011 11:39 am
#191
Post
by weirdo69 » Sun Aug 07, 2011 3:46 pm
Still having a slight problem...Here is my current code:
Code: Select all
<!-- # 5 --><waypoint x="2759" z="968" y="53">
player:target_NPC("Lieve");
sendMacro("ChoiceOption(2);");yrest(1000);
sendMacro("ChoiceOption(2);");
waitForLoadingScreen(15)
</waypoint>
<!-- # 9 --><waypoint x="4916" z="-1994" y="115"> </waypoint>
<!-- # 10 --><waypoint x="4959" z="-2014" y="113">
player:target_NPC("Kerby");
sendMacro("ChoiceOption(1);");
RoMScript("CloseAllWindows()");
</waypoint>
<!-- # 13 --><waypoint x="5220" z="-2178" y="103">
for i = 1, 17 do
sendMacro("EquipItem("..i..")");
yrest(1000);
end
RoMScript("CloseAllWindows()");
</waypoint>
<!-- # 14 --><waypoint x="5220" z="-2178" y="103">
player:target_Object("Mailbox",2000);
if player.Name == "toon1" then
UMM_SendByNameOrId ("toon2", {221306,221305,220098});yrest(500);
end
RoMScript("UMMFrame:Hide()")
yrest(2000);
sendMacro("}LoginNextToon=true;a={");
sendMacro("Logout();"); yrest(60*1000);
player = CPlayer.new();
settings.load();
yrest (4000)
loadPaths("NextStart");
</waypoint>
</waypoints>
Opens vendor window and repairs then walks to mailbox and removes all equipment then opens mailbox says it is sending mail but sends nothing. If I restart the script with the gear in the bag it accurately sends everything... I re-equiped everything and boom same problem nothing gets sent. Is there some function I need to use to analyze the bags following equipment removal. I noticed when it is scanning bags it always stops at last item before recently removed gear almost as if it doesn't recognize those bag slots are full now.
Posted too soon found the
inserted it and now everything works great.
-
sdude13
- Posts: 76
- Joined: Thu Aug 19, 2010 9:36 am
#192
Post
by sdude13 » Sun Aug 14, 2011 4:24 am
Is there a way to use the umm function to select all mail in inbox and hit the "send them back" button ?
-
rock5
- Posts: 12173
- Joined: Tue Jan 05, 2010 3:30 am
- Location: Australia
#193
Post
by rock5 » Sun Aug 14, 2011 5:46 am
Under what circumstance would you want to do that?
- Please consider making a small donation to me to support my continued contributions to the bot and this forum. Thank you. Donate
- I check all posts before reading PMs. So if you want a fast reply, don't PM me but post a topic instead. PM me for private or personal topics only.
- How to: copy and paste in micromacro
________________________
Quote:
- “They say hard work never hurt anybody, but I figure, why take the chance.”
-
sdude13
- Posts: 76
- Joined: Thu Aug 19, 2010 9:36 am
#194
Post
by sdude13 » Sun Aug 14, 2011 6:51 am
Assume i have some characters for fusion.
I send a bunch t4 to the first. It then creates t8. If the character runs out of charges, i want to return
all t4 to the original sender, so he can send it to next character...
-
rock5
- Posts: 12173
- Joined: Tue Jan 05, 2010 3:30 am
- Location: Australia
#195
Post
by rock5 » Sun Aug 14, 2011 8:34 am
Wouldn't it make more sense to collect the stones and pass them on to the next character instead of having to login to the first one again to send it to the third?
Anyway, there is no "Select All" button but if one of the existing buttons works, you can use its underlying function.
Example, if the "char" option works then this should work from the bot after opening the mailbox
Code: Select all
RoMScript("UMMMailManager:MassTagMails('chars')")
RoMScript("UMMFrameTab1Tools:ButtonClick('return')")
You would also have to add a wait time for it to finish.
If this doesn't work we would need to get more elements from the UMM_TakeMail() function.
- Please consider making a small donation to me to support my continued contributions to the bot and this forum. Thank you. Donate
- I check all posts before reading PMs. So if you want a fast reply, don't PM me but post a topic instead. PM me for private or personal topics only.
- How to: copy and paste in micromacro
________________________
Quote:
- “They say hard work never hurt anybody, but I figure, why take the chance.”
-
sdude13
- Posts: 76
- Joined: Thu Aug 19, 2010 9:36 am
#196
Post
by sdude13 » Sun Aug 14, 2011 9:47 am
sending to next character would be nice, BUT that way i have to do
a check which char is active and then for each char one "if char...", and hardcode
the names in.
Plus if i send many stones directly, the mail funtion breaks up. returning mail however does
not breake.
i'll try it tomorrow
thank you for the hint.
-
Bot_romka
- Posts: 96
- Joined: Tue Apr 05, 2011 2:59 am
- Location: Russia
#197
Post
by Bot_romka » Thu Aug 25, 2011 5:26 pm
UMM_SendAmountByNameOrId(_recipient, _item, _amount)
I create function for sends amount bag item by name or id. Attention stackable items in BagSlot sent like one item, split theirs first.
example: UMM_SendAmountByNameOrId ("Botromka", "Excellent Belt", 9);
_sory for my bad inglish. i am from Russia
Code: Select all
function UMM_SendAmountByNameOrId(_recipient, _item, _amount)
---------------------------------
-- Sends Amount bag items by name or id.
-- Error checks
repeat UMMOpen = RoMScript("UMMFrame:IsVisible()") until UMMOpen ~= nil
if UMMOpen ~= true then
error("The UMM mail interface needs to be open first before using the UMM_SendAmountByNameOrId() function.")
elseif _recipient == nil or _item == nil then
error("You must specify a recipient and item table when using UMM_SendAmountByNameOrId()")
elseif type(_item) == "table" and type(_item) ~= "number" and type(_item) ~= "string" then
error("Argument #2 to UMM_SendAmountByNameOrId(): Expected type 'string' or 'number', got '" .. type(_item) .. "'")
elseif type(_amount) ~= "number" then
error("Argument #3 to UMM_SendAmountByNameOrId(): Expected type 'number', got '" .. type(_amount) .. "'")
end
-- place item in table if not already
if type(_item) == "number" or type(_item) == "string" then
_item = {_item}
end
printf("Sending amount items to ".._recipient.."...\n")
-- Open correct tab
RoMScript("UMMFrameTab1:Hide()") yrest(50)
RoMScript("UMMFrameTab2:Hide()") yrest(50)
RoMScript("UMMFrameTab3:Show();") yrest(50)
yrest(1000)
-- Selecting items
local counter = 0
for item = UMM_FromSlot, UMM_ToSlot, 1 do -- for each inventory
local amount = _amount
local slotitem = inventory.BagSlot[item];
local slotNumber = slotitem.SlotNumber - 60
if slotitem.Available and not slotitem.Empty and (amount > counter) then
-- Check the name or id
for __, nam in pairs(_item) do
if string.find(string.lower(slotitem.Name),string.lower(nam)) or (slotitem.Id == nam) then -- mark to send
bagid = math.floor((slotNumber-1)/30+1)
slotid = slotNumber - (bagid * 30 - 30)
RoMScript("UMMMassSendItemsSlotTemplate_OnClick(_G['UMMFrameTab3BagsBag"..bagid.."Slot"..slotid.."'])")
yrest(250)
counter = counter + 1
break
end
end
end
end
yrest(1000)
-- Enter recipients name
RoMScript("UMMFrameTab3RecipientRecipient:SetText('".._recipient.."');")
-- Sending
RoMScript("UMMFrameTab3Action:Send()")
-- Waiting until finished
repeat
yrest(2000)
until RoMScript("UMMFrameTab3Status:IsVisible()") == false
printf("Items sent.\n")
end
Last edited by
Bot_romka on Fri Aug 26, 2011 12:34 am, edited 1 time in total.
-
rock5
- Posts: 12173
- Joined: Tue Jan 05, 2010 3:30 am
- Location: Australia
#198
Post
by rock5 » Thu Aug 25, 2011 10:23 pm
At first I thought this wasn't really necessary but as I looked at my functions I realised there was a need for it. The current sendbynameorid sends all matching items. I can see there might be a need to send a set number.
That said, I have 2 observations to make.
1. Making a "send by ammount" function that can't handle stacked items is only doing half the job.
2. When you really come down to it, there's really no need for another function. Sending a specific amount should be an option for UMM_SendByNameOrId.
Otherwise, good idea.
If you can't make those changes, let me know. I'll do it.
- Please consider making a small donation to me to support my continued contributions to the bot and this forum. Thank you. Donate
- I check all posts before reading PMs. So if you want a fast reply, don't PM me but post a topic instead. PM me for private or personal topics only.
- How to: copy and paste in micromacro
________________________
Quote:
- “They say hard work never hurt anybody, but I figure, why take the chance.”
-
Bot_romka
- Posts: 96
- Joined: Tue Apr 05, 2011 2:59 am
- Location: Russia
#199
Post
by Bot_romka » Fri Aug 26, 2011 12:33 am
UMM_SendByNameOrId(_recipient, _itemTable, _amount)
I modifed UMM_SendByNameOrId() function. Now you can sends amount bag items if you need it.
You can sent amount only 1 item of specific names or ids not a Table items. Attention stackable items in BagSlot sent like one item, split theirs first.
If you not specify a number of amount then UMM_SendByNameOrId() function sent all available items by Name or ID.
example: UMM_SendByNameOrId ("Botromka", "Excellent Belt", 9); --- 9 is number of amount item you want to sent.
_sory for my bad inglish. i am from Russia
Code: Select all
function UMM_SendByNameOrId(_recipient, _itemTable, _amount)
---------------------------------
-- Sends bag items or by name or id. Sends Amount bag items by name or id.
-- Error checks
repeat UMMOpen = RoMScript("UMMFrame:IsVisible()") until UMMOpen ~= nil
if UMMOpen ~= true then
error("The UMM mail interface needs to be open first before using the UMM_SendByNameOrId() function.")
elseif _recipient == nil or _itemTable == nil then
error("You must specify a recipient and item table when using UMM_SendByNameOrId()")
elseif type(_amount) == "number" and type(_itemTable) == "table" then
error("You must specify only one item for sends amount bag items when using UMM_SendByNameOrId()")
elseif type(_itemTable) ~= "table" and type(_itemTable) ~= "number" and type(_itemTable) ~= "string" then
error("Argument #2 to UMM_SendByNameOrId(): Expected type 'table' or 'string' or 'number', got '" .. type(_itemTable) .. "'")
elseif type(_amount) == "table" or type(_amount) == "string" then
error("Argument #3 to UMM_SendAmountByNameOrId(): Expected type 'number', got '" .. type(_amount) .. "'")
end
-- for backward compatibility. Amount set to all.
if type(_amount) == "nil" then
_amount = 240
end
-- place item in table if not already
if type(_itemTable) == "number" or type(_itemTable) == "string" then
_itemTable = {_itemTable}
end
printf("Sending items to ".._recipient.."...\n")
-- Open correct tab
RoMScript("UMMFrameTab1:Hide()") yrest(50)
RoMScript("UMMFrameTab2:Hide()") yrest(50)
RoMScript("UMMFrameTab3:Show();") yrest(50)
yrest(1000)
-- Selecting items
local counter = 0
for item = UMM_FromSlot, UMM_ToSlot, 1 do -- for each inventory
local slotitem = inventory.BagSlot[item];
local slotNumber = slotitem.SlotNumber - 60
if slotitem.Available and not slotitem.Empty and (_amount > counter) then -- Check amount of item
-- Check the name or id
for __, nam in pairs(_itemTable) do
if string.find(string.lower(slotitem.Name),string.lower(nam)) or (slotitem.Id == nam) then -- mark to send
bagid = math.floor((slotNumber-1)/30+1)
slotid = slotNumber - (bagid * 30 - 30)
RoMScript("UMMMassSendItemsSlotTemplate_OnClick(_G['UMMFrameTab3BagsBag"..bagid.."Slot"..slotid.."'])")
yrest(250)
counter = counter + 1
break
end
end
end
end
yrest(1000)
-- Enter recipients name
RoMScript("UMMFrameTab3RecipientRecipient:SetText('".._recipient.."');")
-- Sending
RoMScript("UMMFrameTab3Action:Send()")
-- Waiting until finished
repeat
yrest(2000)
until RoMScript("UMMFrameTab3Status:IsVisible()") == false
printf("Items sent.\n")
end
Last edited by
Bot_romka on Fri Aug 26, 2011 1:21 am, edited 1 time in total.
-
rock5
- Posts: 12173
- Joined: Tue Jan 05, 2010 3:30 am
- Location: Australia
#200
Post
by rock5 » Fri Aug 26, 2011 1:13 am
Hm.... I've been thinking about stacks and how to handle them. I think I might have to do a whole rewrite. Sorry if I'm hijacking this from you.
- Please consider making a small donation to me to support my continued contributions to the bot and this forum. Thank you. Donate
- I check all posts before reading PMs. So if you want a fast reply, don't PM me but post a topic instead. PM me for private or personal topics only.
- How to: copy and paste in micromacro
________________________
Quote:
- “They say hard work never hurt anybody, but I figure, why take the chance.”
Who is online
Users browsing this forum: No registered users and 5 guests