• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver
GiveItems.mac

Release GiveItems.mac v2.7.2

No permission to download
Joined
Sep 20, 2005
RedCents
1,793¢
As suggested by teslatrader

Rich (BB code):
| giveitems.mac - Sym 8.26.2017 exclusively for RedGuides.com
|
| Gives all tradeskill items or one of each collection item to targeted pc or banker
| Usage: /mac giveitems
|
| Once running the following commands are available. Only first two characters of command are checked for ease of typing.
|
|/giveitem pc tradeskill
|/giveitem pc tr
|   Gives all tradeskill items to targeted pc, unless the item is on the exclude list
|
|/giveitem pc collection
|/giveitem pc co
|   Gives one of each collection item you have
|
|/giveitem exclude
|/giveitem ex
|   Add item on cursor to exclude list then autoinventory the item
|
|/giveitem banker tradeskill
|/giveitem ba tr
|   Opens targeted banker (if not already open) and /autobanks all tradeskill items you have, unless the item is on the exclude list
|
|/giveitem banker collection
|/giveitem ba co
|   Opens selected banker (if not already open) and /autobanks all collection items you have
|
| /giveitem dryrun
| /giveitem dr
|   Toggles dryrun mode. This just goes through the motions and tells you what would be given so you can make sure your exclude list is correct.
|
| /giveitem fullstacks
| /giveitem fu
|   Forces full stack pickups. Useful to bank all of your collection items.
|
| /giveitem cursor
| /giveitem cu
|   Uses MQ2Cursor command /cursor 1 stack on each collection item. If you don't use MQ2Cursor, ignore this.

Sub Main
    /declare IniFile string outer giveitems.ini
    /declare MaxInvSlots int outer 10
    /declare Bag int outer
    /declare Slot int outer
    /declare ItemType int outer 0
    /declare DryRun int outer 0
    /declare ItemName string outer
    /declare FullStack int outer 0
    /declare ForceFullStack int outer 0
    /declare Pickup int outer 0
    
    /echo \atGiveItems.mac :: v1.2 :: by Sym for RedGuides.com
    /echo \atGives tradeskill or collection items to another player or bank. All options can be shorted to the first two letters for ease of typing.
    /echo \at
    /echo \ag/giveitem pc tradeskill\ay - Gives all tradeskill items to targeted pc, unless the item is on the exclude list
    /echo \ag/giveitem pc collection\ay - Gives one of each collection item you have
    /echo \ag/giveitem exclude\ay - Add item on cursor to exclude list then autoinventory the item
    /echo \ag/giveitem banker tradeskill\ay - /autobanks all tradeskill items you have to targeted banker NPC, unless the item is on the exclude list
    /echo \ag/giveitem banker collection\ay - /autobanks all collection items you have to targeted banker NPC
    /echo \ag/giveitem dryrun\ay - Toggles dryrun mode. Notifies only, no actual item touching
    /echo \ag/giveitem fullstacks\ay - Forces full stack pickups. Used to bank or give all of your collection items instead of just one.
    /echo \ag/giveitem cursor\ay - Executes \at/cursor 1 stack\ay on each collection item. If you don't use MQ2Cursor, ignore this.
    
    :WaitForCommand
        /doevents
        /delay 1
    /goto :WaitForCommand

/return


#bind GiveCommand     /giveitem
Sub Bind_GiveCommand

    /if (${Param1.Left[2].Equal[co]}) /varset ItemType 0
    /if (${Param1.Left[2].Equal[tr]}) /varset ItemType 1
    
    /if (${Param0.Left[2].Equal[dr]}) {
        /if (${DryRun}) {
            /echo \atDryRun mode is \ar*OFF*
            /varset DryRun 0
        } else {
            /echo \atDryRun mode is \ag*ON*
            /varset DryRun 1
        }
    }       
    
    /if (${Param0.Left[2].Equal[fu]}) {
        /if (${ForceFullStack}) {
            /echo \atForceFullStack is \ar*OFF*
            /varset ForceFullStack 0
        } else {
            /echo \atForceFullStack is \ag*ON*
            /varset ForceFullStack 1
        }
    }

    /if (${Param0.Left[2].Equal[pc]}) /call GiveItemsToPC
    /if (${Param0.Left[2].Equal[ba]}) /call GiveItemsToBanker
    /if (${Param0.Left[2].Equal[ex]}) /call ExcludeItem
    /if (${Param0.Left[2].Equal[cu]}) /call SetCursor


/return


sub SetCursor
    /if (${Plugin[MQ2Cursor].Name.Equal[NULL]}) {
        /echo \arThis option only works if you have MQ2Cursor setup.
        /return
    }
    /varset ItemType 0
    /varset ForceFullStack 1
    /for Bag ${MaxInvSlots} downto 1
        /if (${InvSlot[pack${Bag}].Item.Container}) {
            /if (!${Window[Pack${Bag}].Open}) /itemnotify pack${Bag} rightmouseup
            /delay 5
            /delay 2s ${Window[Pack${Bag}].Open}

            /for Slot ${InvSlot[pack${Bag}].Item.Container} downto 1
                /call ProcessItem
                /if (${Cursor.ID}) {
                    /cursor 1 st
                    /delay 1s !${Cursor.ID}
                    /delay 5
                }
            /next Slot
        }
    /next Bag
    
    /echo \agFinished setting keep/destroy

/return

sub GiveItemsToPC

    /if (!${Target.ID} || ${Target.Type.NotEqual[PC]} || ${Target.Distance} > 24) {
        /echo \arYou must have a close player targeted.
        /return
    }
    /if (!${Window[InventoryWindow].Open}) /keypress i
    /echo \agGiving items to ${Target.CleanName}
    /for Bag 1 to ${MaxInvSlots}
        /if (${InvSlot[pack${Bag}].Item.Container}) {
            /if (!${Window[Pack${Bag}].Open}) /itemnotify pack${Bag} rightmouseup
            /delay 5
            /delay 2s ${Window[Pack${Bag}].Open}

            /for Slot 1 to ${InvSlot[pack${Bag}].Item.Container}
                /call ProcessItem

                /if (${Cursor.ID}) {                
                    /echo \awGiving \at${Cursor.Name}
                    /nomodkey /click left target
                    /delay 2s !${Cursor.ID}
                    /delay 1s
                    /if (${Window[TradeWnd].Child[TRDW_TradeSlot7].Tooltip.Length}) {
                        /echo \agClicking Trade
                        /notify TradeWnd TRDW_Trade_Button LeftMouseUp
                        :WaitWindow
                            /delay 1s
                        /if (${Window[TradeWnd].Open}) /goto :WaitWindow
                        /delay 5
                    }   
                }
                /if (${DryRun} && ${Pickup} && ${ItemName.NotEqual[NULL]}) {
                    /echo \awWould have given \at${ItemName}
                }
            /next Slot
        }
    /next Bag

    /if (${Window[TradeWnd].Open}) {
        /echo \agClicking Trade
        /notify TradeWnd TRDW_Trade_Button LeftMouseUp
    }

    /echo \agFinished giving items to ${Target.CleanName}
        
    
/return

sub GiveItemsToBanker
    /if (!${Target.ID} || ${Target.Type.NotEqual[NPC]} || ${Target.Distance} > 24) {
        /if (!${Window[BigBankWnd].Open}) {
            /echo \arYou must have a close banker targeted.
            /return
        }
    }
    
    /if (!${Window[BigBankWnd].Open}) {
        /nomodkey /click right target
        /delay 1s
        /delay 2s ${Window[BigBankWnd].Open}
    }
    /if (!${Window[BigBankWnd].Open}) {
        /echo \arBank window isn't opening. Please open it manually.
        /return
    }

    /if (!${Window[InventoryWindow].Open}) /keypress i
    /varset FullStack 1

    /echo \agDepositing items into bank
    /for Bag 1 to ${MaxInvSlots}
        /if (${InvSlot[pack${Bag}].Item.Container}) {
            /if (${Cursor.ID}) {
                /echo \arLooks like we are out of bank space
                /return
            }
            /if (!${Window[Pack${Bag}].Open}) /itemnotify pack${Bag} rightmouseup
            /delay 5
            /delay 2s ${Window[Pack${Bag}].Open}

            /for Slot 1 to ${InvSlot[pack${Bag}].Item.Container}
                /call ProcessItem
                /if (${Cursor.ID}) {                
                    /echo \awDeposting \at${Cursor.Name}
                    /autobank
                    /delay 2s !${Cursor.ID}
                    /delay 1s
                }
                /if (${DryRun} && ${Pickup} && ${ItemName.NotEqual[NULL]}) {
                    /echo \awWould have Deposited \at${ItemName}
                }
            /next Slot
        }
    /next Bag

    /echo \agFinished depositing items into bank.
        
    
/return

sub ProcessItem
    
    
    /varset Pickup 0
    /varset ItemName NULL
    /if (${ItemType} == 0 && ${InvSlot[pack${Bag}].Item.Item[${Slot}].Collectible}) {
        
        /if (${ForceFullStack}) {
            /varset FullStack 1
        } else {
            /varset FullStack 0
        }
        /varset Pickup 1
    }
    
    /if (${ItemType} == 1 && ${InvSlot[pack${Bag}].Item.Item[${Slot}].Tradeskills}) {
        /varset FullStack 1
        /varset Pickup 1
    }
    
    /if (${Pickup}) {
        /varset ItemName ${InvSlot[pack${Bag}].Item.Item[${Slot}].Name}
        /if (${Ini[${IniFile},ExcludedItems,${ItemName}]}) {
            /varset ItemName NULL
        } else {
            /if (!${DryRun}) {
                /if (${FullStack}) {
                    /nomodkey /shiftkey /itemnotify in pack${Bag} ${Slot} leftmouseup
                } else {
                    /nomodkey /ctrlkey /itemnotify in pack${Bag} ${Slot} leftmouseup
                }
                
                /delay 1s ${Cursor.ID}
            }
        }
    }
/return

sub ExcludeItem

    /if (!${Cursor.ID}) {
        /echo \arPut an item on your cursor first!
        /return
    }
    
    /ini ${IniFile} ExcludedItems "${Cursor.Name}" 1
    /echo \atAdded \ag${Cursor.Name}\at as excluded tradeskill item to ${IniFile}.
    /autoinv

/return

Let me know if any issues.
 
Last edited:
Just as an FYI, if you're using a tradeskill container (like the deluxe toolbox), even though the first toolbox opens in tradeskill UI mode, the macro still operates on items that it contains even though you can't see it happening visually. That was a pleasant surprise. (you can see the items on the cursor for an instant.) Also, the macro worked with a Collapsible Spit and my Trademaster's Component Satchel, (40-slot) thrown into the mix.
 
Is there anything I need to do for the PC receiving end? Ran this mac it just picks up item and says "Giving xxxx" and never opens up a trade window and just repeats the text.
 
Yes that is correct, is it working on your side?
What do I need to provide to help you see what is wrong?

Thank you!!
 
I see the problem. I have an alias setup that is used in the macro instead of the real command. Either run

/alias /give /nomodkey /click left target

or edit the macro and change line 154 to /nomodkey /click left target

or just download the macro again. I've fixed that now.
 
I am on an emu server and curious if this macro is what I am looking for. I have an NPC that wants a custom item turned into it. I can only turn in one at a time but need to turn in a LOT. Will this macro aid me in this? Or is this specifically for something else I am missing.
 
This won't work for turnins. It's only for giving items to another player or banking them. I can throw one for turnins together for you though.
 
been trying to get this one to run again, and i dont know why it wont go it complained bit about no defined variables when you did full stacks and dryrun i fixed that. but then when i remvoed my echos to let me know where it was, it just doesnt go

Rich (BB code):
    :WaitForCommand
		/doevents
		/delay 1s
    /goto :WaitForCommand

its this part here. that for some reason just halts it.

Rich (BB code):
    :WaitForCommand
		/doevents
		/delay 1s
		/echo .
    /goto :WaitForCommand

if i do it like that it works, but then its spammiong the window, i tried doing other operations in there but nothing worked. like math on variables etc.
 
Such a great idea, thx for the hard work you have done
 
Fixed the macro so it now works
added the ability to just sit to end the macro when you done giving things.

Rich (BB code):
| giveitems.mac - Sym 8.26.2017 exclusively for RedGuides.com
| kaen01 fixed some variables, fixed the command wait loop. 10.13.2017
|
| Gives all tradeskill items or one of each collection item to targeted pc or banker
| Usage: /mac giveitems
|
| Once running the following commands are available. Only first two characters of command are checked for ease of typing.
|
|/giveitem pc tradeskill
|/giveitem pc tr
|   Gives all tradeskill items to targeted pc, unless the item is on the exclude list
|
|/giveitem pc collection
|/giveitem pc co
|   Gives one of each collection item you have
|
|/giveitem exclude
|/giveitem ex
|   Add item on cursor to exclude list then autoinventory the item
|
|/giveitem banker tradeskill
|/giveitem ba tr
|   Opens targeted banker (if not already open) and /autobanks all tradeskill items you have, unless the item is on the exclude list
|
|/giveitem banker collection
|/giveitem ba co
|   Opens selected banker (if not already open) and /autobanks all collection items you have
|
| /giveitem dryrun
| /giveitem dr
|   Toggles dryrun mode. This just goes through the motions and tells you what would be given so you can make sure your exclude list is correct.
|
| /giveitem fullstacks
| /giveitem fu
|   Forces full stack pickups. Useful to bank all of your collection items.
|
| /giveitem cursor
| /giveitem cu
|   Uses MQ2Cursor command /cursor 1 stack on each collection item. If you don't use MQ2Cursor, ignore this.

|#warning
#bind GiveCommand	/giveitem

Sub Main
    /declare IniFile string outer giveitems.ini
    /declare MaxInvSlots int outer 10
    /declare Bag int outer
    /declare Slot int outer
    /declare ItemType int outer 0
    /declare DryRun int outer 0
    /declare ItemName string outer
    /declare FullStack int outer 0
    /declare ForceFullStack int outer 0
    /declare Pickup int outer 0
    
    /echo \atGiveItems.mac :: v1.2 :: by Sym for RedGuides.com
    /echo \atGives tradeskill or collection items to another player or bank. All options can be shorted to the first two letters for ease of typing.
    /echo \at
    /echo \ag/giveitem pc tradeskill\ay - Gives all tradeskill items to targeted pc, unless the item is on the exclude list
    /echo \ag/giveitem pc collection\ay - Gives one of each collection item you have
    /echo \ag/giveitem exclude\ay - Add item on cursor to exclude list then autoinventory the item
    /echo \ag/giveitem banker tradeskill\ay - /autobanks all tradeskill items you have to targeted banker NPC, unless the item is on the exclude list
    /echo \ag/giveitem banker collection\ay - /autobanks all collection items you have to targeted banker NPC
    /echo \ag/giveitem dryrun\ay - Toggles dryrun mode. Notifies only, no actual item touching
    /echo \ag/giveitem fullstacks\ay - Forces full stack pickups. Used to bank or give all of your collection items instead of just one.
    /echo \ag/giveitem cursor\ay - Executes \at/cursor 1 stack\ay on each collection item. If you don't use MQ2Cursor, ignore this.
	/echo \at
	/echo \ay Sitting will end the macro.
    
    /while (${Me.Standing}) {
		/call CommandSub
	}
/return

Sub CommandSub
	/doevents
	/delay 1s
/return


Sub Bind_GiveCommand(string pp0,string pp1)
			/if (${pp1.Left[2].Equal[co]}) /varset ItemType 0
		/if (${pp1.Left[2].Equal[tr]}) /varset ItemType 1
		
   
		/if (${pp0.Left[2].Equal[dr]}) {
			/if (${DryRun}) {
				/echo \atDryRun mode is \ar*OFF*
				/varset DryRun 0
			} else {
				/echo \atDryRun mode is \ag*ON*
				/varset DryRun 1
			}
		}       
    
		/if (${Defined[pp0]} && ${pp0.Left[2].Equal[fu]}) {
			/if (${ForceFullStack}) {
				/echo \atForceFullStack is \ar*OFF*
				/varset ForceFullStack 0
			} else {
				/echo \atForceFullStack is \ag*ON*
				/varset ForceFullStack 1
			}
		}

		/if (${pp0.Left[2].Equal[pc]}) /call GiveItemsToPC
		/if (${pp0.Left[2].Equal[ba]}) /call GiveItemsToBanker
		/if (${pp0.Left[2].Equal[ex]}) /call ExcludeItem
		/if (${pp0.Left[2].Equal[cu]}) /call SetCursor

/return


sub SetCursor
    /if (${Plugin[MQ2Cursor].Name.Equal[NULL]}) {
        /echo \arThis option only works if you have MQ2Cursor setup.
        /return
    }
    /varset ItemType 0
    /varset ForceFullStack 1
    /for Bag ${MaxInvSlots} downto 1
        /if (${InvSlot[pack${Bag}].Item.Container}) {
            /if (!${Window[Pack${Bag}].Open}) /itemnotify pack${Bag} rightmouseup
            /delay 5
            /delay 2s ${Window[Pack${Bag}].Open}

            /for Slot ${InvSlot[pack${Bag}].Item.Container} downto 1
                /call ProcessItem
                /if (${Cursor.ID}) {
                    /cursor 1 st
                    /delay 1s !${Cursor.ID}
                    /delay 5
                }
            /next Slot
        }
    /next Bag
    
    /echo \agFinished setting keep/destroy

/return

sub GiveItemsToPC

    /if (!${Target.ID} || ${Target.Type.NotEqual[PC]} || ${Target.Distance} > 24) {
        /echo \arYou must have a close player targeted.
        /return
    }
    /if (!${Window[InventoryWindow].Open}) /keypress i
    /echo \agGiving items to ${Target.CleanName}
    /for Bag 1 to ${MaxInvSlots}
        /if (${InvSlot[pack${Bag}].Item.Container}) {
            /if (!${Window[Pack${Bag}].Open}) /itemnotify pack${Bag} rightmouseup
            /delay 5
            /delay 2s ${Window[Pack${Bag}].Open}

            /for Slot 1 to ${InvSlot[pack${Bag}].Item.Container}
                /call ProcessItem

                /if (${Cursor.ID}) {                
                    /echo \awGiving \at${Cursor.Name}
                    /nomodkey /click left target
                    /delay 2s !${Cursor.ID}
                    /delay 1s
                    /if (${Window[TradeWnd].Child[TRDW_TradeSlot7].Tooltip.Length}) {
                        /echo \agClicking Trade
                        /notify TradeWnd TRDW_Trade_Button LeftMouseUp
                        :WaitWindow
                            /delay 1s
                        /if (${Window[TradeWnd].Open}) /goto :WaitWindow
                        /delay 5
                    }   
                }
                /if (${DryRun} && ${Pickup} && ${ItemName.NotEqual[NULL]}) {
                    /echo \awWould have given \at${ItemName}
                }
            /next Slot
        }
    /next Bag

    /if (${Window[TradeWnd].Open}) {
        /echo \agClicking Trade
        /notify TradeWnd TRDW_Trade_Button LeftMouseUp
    }

    /echo \agFinished giving items to ${Target.CleanName}
        
    
/return

sub GiveItemsToBanker
    /if (!${Target.ID} || ${Target.Type.NotEqual[NPC]} || ${Target.Distance} > 24) {
        /if (!${Window[BigBankWnd].Open}) {
            /echo \arYou must have a close banker targeted.
            /return
        }
    }
    
    /if (!${Window[BigBankWnd].Open}) {
        /nomodkey /click right target
        /delay 1s
        /delay 2s ${Window[BigBankWnd].Open}
    }
    /if (!${Window[BigBankWnd].Open}) {
        /echo \arBank window isn't opening. Please open it manually.
        /return
    }

    /if (!${Window[InventoryWindow].Open}) /keypress i
    /varset FullStack 1

    /echo \agDepositing items into bank
    /for Bag 1 to ${MaxInvSlots}
        /if (${InvSlot[pack${Bag}].Item.Container}) {
            /if (${Cursor.ID}) {
                /echo \arLooks like we are out of bank space
                /return
            }
            /if (!${Window[Pack${Bag}].Open}) /itemnotify pack${Bag} rightmouseup
            /delay 5
            /delay 2s ${Window[Pack${Bag}].Open}

            /for Slot 1 to ${InvSlot[pack${Bag}].Item.Container}
                /call ProcessItem
                /if (${Cursor.ID}) {                
                    /echo \awDeposting \at${Cursor.Name}
                    /autobank
                    /delay 2s !${Cursor.ID}
                    /delay 1s
                }
                /if (${DryRun} && ${Pickup} && ${ItemName.NotEqual[NULL]}) {
                    /echo \awWould have Deposited \at${ItemName}
                }
            /next Slot
        }
    /next Bag

    /echo \agFinished depositing items into bank.
        
    
/return

sub ProcessItem
    
    
    /varset Pickup 0
    /varset ItemName NULL
    /if (${ItemType} == 0 && ${InvSlot[pack${Bag}].Item.Item[${Slot}].Collectible}) {
        
        /if (${ForceFullStack}) {
            /varset FullStack 1
        } else {
            /varset FullStack 0
        }
        /varset Pickup 1
    }
    
    /if (${ItemType} == 1 && ${InvSlot[pack${Bag}].Item.Item[${Slot}].Tradeskills}) {
        /varset FullStack 1
        /varset Pickup 1
    }
    
    /if (${Pickup}) {
        /varset ItemName ${InvSlot[pack${Bag}].Item.Item[${Slot}].Name}
        /if (${Ini[${IniFile},ExcludedItems,${ItemName}]}) {
            /varset ItemName NULL
        } else {
            /if (!${DryRun}) {
                /if (${FullStack}) {
                    /nomodkey /shiftkey /itemnotify in pack${Bag} ${Slot} leftmouseup
                } else {
                    /nomodkey /ctrlkey /itemnotify in pack${Bag} ${Slot} leftmouseup
                }
                
                /delay 1s ${Cursor.ID}
            }
        }
    }
/return

sub ExcludeItem

    /if (!${Cursor.ID}) {
        /echo \arPut an item on your cursor first!
        /return
    }
    
    /ini ${IniFile} ExcludedItems "${Cursor.Name}" 1
    /echo \atAdded \ag${Cursor.Name}\at as excluded tradeskill item to ${IniFile}.
    /autoinv

/return
 
Sym no longer plays, and approved of me taking over and expanding upon his giveitems.mac, which I have done without removing existing functionality to my knowledge, please inform me if something works differently or erroneously.

Existing Functions:

  • /giveitem pc tr (/giveitem pc tradeskill)
  • /giveitem pc co (/giveitem pc collection)
  • /giveitem ex (/giveitem exclude)
  • /giveitem ba tr (/giveitem banker tradeskill)
  • /giveitem ba co (/giveitem banker collection)
  • /giveitem dr (/giveitem dryrun)
  • /giveitem fu (/giveitem fullstacks)
  • /giveitem cu (/giveitem cursor)
New Functions:

  • /giveitem pc gr poison (/giveitem pc group poison)
    • Looks in the giveitems.ini file and finds the header [Poison] and give all items listed under that header to your targeted PC
  • /giveitem np gr snakesacs (/giveitem npc group snakesacs)
    • Same as above, but looks in the ini file for the header [snakesacs] and gives that count of items to the targeted NPC
  • /giveitem gr poison (/giveitem group poison)
    • Takes the item on your cursor and adds that item name to the group [Poison] in the ini file with a default of -1, meaning all items by this name will be given when executed
  • /giveitem he gr (/giveitem help group)
    • Help files on the various commands
  • /giveitem de (/giveitem debug)
    • Added debug code for a lot of the echo information I used while programming, or felt was informative while executing to keep informed of what was being done.
The Ini file, I’ve also included as a starter template, with a debug flag, an excluded item list start, and a beginner transfer header for a tradeskill category and an armor category.
 
Last edited:
I am trying to give items to an npc but it is not picking them up and giving it to them.
I have item added to the ini--- on cursor then i type the following
/giveitem group 1
/giveitem np gr 1
It says starting to give to npc %t, but it never grabs anything or gives it to them. Inventory window/bags open fine. Confirmed item is in ini file

edit: using debug, it is skipping the items because they are no drop. That is the problem. Removing the if statement that checks for no drop in the macro lets it be added to a trade window but does not click okay
 
Last edited:
I'm assuming that means that the object actually IS nodrop. There's nothing I can do about that. The flag is an EQ flag that does not allow something to be dropped or traded. If that if statement didn't exist then the entire macro hangs at the nodrop item and never finishes. Give me some info on the item and I can verify, but I'm assuming that's the issue here.
 
Yes they are no drop - I was using this for quest turn ins. You are able to trade no drop items to an npc. A lot of quest items are no drop so should be able to find a quest to test it.
 
I would need to find something like that then. I do not have any nodrop quest items. notrade yes, but no nodrop. That may take some work though, because attuned gear is nodrop and you'd get into an infinite loop of trying to give a nodrop item to an NPC without that check. I may be able to check for quest and nodrop I suppose, but I need to find something to test it with in order to ensure it's working right.

Edit: Done. I added a check for nodrop and quest, and a targeted npc. It is assuming that the NPC you have targeted is the quest npc you're trying to give the item to. It will hand it back if they don't want the item though. This may introduce a bit of other flakiness and I'll need to test it more. let me know if there's still something odd you're seeing take place.
 
Last edited:
i think i might be dumb, cause i cant get this work at all, /giveitem pc tr does nothing, other than scan trhough my no drop items.
 
I cannot speculate as to your issues at this point then. Other than to ask, "have you verified that you actually have tradeskill flagged items that are tradeable in your inventory" and "Have you tried the debug option"? I just downloaded the latest copy to make sure I'm using it and not some other modified copy I have on my hdd, and when I target the toon I wish to give items to, and tried:

Code:
/mac giveitems

/giveitem pc tr

It trades all tradeable tradeskill items, it ignores the tradeskill flagged items that I've added to my INI file as "excluded", and it gives me a message on each nodrop item it comes across that it cannot trade. Nothing seems to be working incorrectly from my end that I can find.

Of note: I did discover yesterday that there is a situation where items will not necessarily trade properly if containers are mis-aligned. In the instance I encountered I had tradeskill bags in the top two slots, and one bag in the first of the second row slots. What happened, is that the tradeskill container in the top right slot was not parsed for some reason, until I put it into the left hand column of containers so that the tradeskill bags made up the first, second, and third slots going down the left side. Also of note, I know that if you have a Backpack* in your inventory it categorically will not parse anything inside that container, and that bug showed up with an update back in March.
 
Last edited:
scribe mac had a similar issue were sometimes a bag would not read at all, I think you have to slow it down, or open all windows to populate all bags
 
is there a way to pull items from the bank?
I want to get all tradeskill items from the bank.
 
Last edited:
Not presently with the public version of this. I have a mid-production version in the works, but it's not functional yet. And I've been sidetracked with a different project lately, so I dont have an ETA either, sorry.
 
A great macro I have been using it quite a bit lately. One thing that would be nice to have is the ability to put an ignore list of TS items that you don't want to transfer. I just got all the Tier 3 TOS items yesterday (all non-visible items are classified as tradeskill) they ran the macro on 6 toons and then noticed all my new stuff was transferred to the mules
 
@drawthow you can, here is an example, also put your casting reagents for pets and other stuff in there.

[CODE lang="ini" title="exclude items"][ExcludedItems]
Emerald=1
Malachite=1
Bone Chips=1[/CODE]

To do it from the command line/macro, have an item on your cursor then
INI:
/mac giveitems
/giveitem ex
 
Last edited:
@drawthow you can, here is an example, also put your casting reagents for pets and other stuff in there.

[CODE lang="ini" title="exclude items"][ExcludedItems]
Emerald=1
Malachite=1
Bone Chips=1[/CODE]

To do it from the command line/macro, have an item on your cursor then
INI:
/mac giveitems
/giveitem ex
Thank you very much!
 
Exactly^ Thanks Freeferli. That is what that's for. so I ignore things like my mage/chanter/necro/sk summoning items, even though they're TS items they won't trade while they're in the excludeditems list. Also ignore TS tools like your fletching planing tool, and your JC setting tool, smithing hammers etc.
 
Must be going blind I sware I looked through the overview multiple times never saw that switch. Now I can stop giving away my cheese and milk every time I trade stuff. Much rejoicing:)
 
getting the error message cannot give nodrop items to PC. I have confirmed there are no nodrop items in my first two bags which are the tradeskill bags.
 
Found and fixed we believe. was a sneaky `/return` that shouldn't have been in there. Added additional feedback to the user on what's not being traded as well.
 
Release GiveItems.mac

Users who are viewing this thread

Back
Top
Cart