If I understand correctly it sounds like you want to activate an item to spawn in an npc merchant and the merchant would depend on the item that you activated?
The way I would do it would be to use 1 tag based script for mutlitple items. So lets say for example you have 6 of these items. Give them all the same tag. When activated they will all fire the same script. But the script will check a string variable on the item and spawn in an NPC which has that res ref. So you would need 6 merchant blue prints and give each item a string variable that has a matching merchant res ref.
The script would just be something like so:
#include "x2_inc_switches"
void main()
{
if (GetUserDefinedItemEventNumber() != X2_ITEM_EVENT_ACTIVATE) return;
object oItem = GetItemActivated();
object oPC = GetItemActivator();
location lLoc = GetLocation(oPC);
string sResRef = GetLocalString(oItem, "MY_MERCHANT");
//if you want just a store but no NPC then use these lines.
//object oStore = CreateObject(OBJECT_TYPE_STORE, sResRef, lLoc);
//OpenStore(oStore, oPC);
//if you want to spawn an NPC merchant who has a store then use this.
object oNPC = CreateObject(OBJECT_TYPE_CREATURE, sResRef, lLoc);
}
You of course would still need to set up your merchants and what not. But with the script above you could also just bypass the NPC all together and just open a store right there. And you would just do that the same way you'd do with the merchant NPCs above.
Hope that makes sense.