Macro Mods

Forum closed. All further discussion to be discussed at https://github.com/OpenKore/

Moderator: Moderators

Message
Author
Click
Human
Human
Posts: 39
Joined: 15 Apr 2008, 06:08
Noob?: Yes
Location: Russia, Velikiy Novgorod
Contact:

Re: Macro Mods

#11 Post by Click »

Oops, :) Prompt development

Technology
Super Moderators
Super Moderators
Posts: 801
Joined: 06 May 2008, 12:47
Noob?: No

Re: Macro Mods

#12 Post by Technology »

Someone linked me to this on IRC:
Can someone please take a look at it?

original source
For Macro v. 2.0.3-svn (27/7/52)

- add @ Npc(</regexp/i or "name">) for find npc by name (return binID)
becuz some server random position [can't find by @npc(xx yy)]




file ../plugins/Macro/Data.pm
find:

Code: Select all

	"npc"	   . "|" .
replace with:

Code: Select all

	"[Nn]pc"	   . "|" .

file ../plugins/Macro/Data.pm
find:

Code: Select all

use Macro::Utilities qw(refreshGlobal getnpcID getItemIDs getItemPrice getStorageIDs getInventoryIDs
	getPlayerID getVenderID getRandom getRandomRange getInventoryAmount getCartAmount getShopAmount
	getStorageAmount getVendAmount getConfig getWord q4rx q4rx2 getArgFromList getListLenght);
replace with:

Code: Select all

use Macro::Utilities qw(refreshGlobal getnpcID getnpcIDfromName getItemIDs getItemPrice getStorageIDs getInventoryIDs
	getPlayerID getVenderID getRandom getRandomRange getInventoryAmount getCartAmount getShopAmount
	getStorageAmount getVendAmount getConfig getWord q4rx q4rx2 getArgFromList getListLenght);
find:

Code: Select all

	if ($kw eq 'npc')		   {$ret = getnpcID($arg)}
		elsif ($kw eq 'cart')	   {($ret) = getItemIDs($arg, $::cart{'inventory'})}
replace with:

Code: Select all

		if ($kw eq 'npc')		   {$ret = getnpcID($arg)}
		elsif ($kw eq 'Npc')		{$ret = getnpcIDfromName($arg)}
		elsif ($kw eq 'cart')	   {($ret) = getItemIDs($arg, $::cart{'inventory'})}
file ../plugins/Macro/Utilities.pm
find:

Code: Select all

our @EXPORT_OK = qw(ai_isIdle q4rx q4rx2 between cmpr match getArgs refreshGlobal getnpcID getPlayerID
	getVenderID getItemIDs getItemPrice getInventoryIDs getStorageIDs getSoldOut getInventoryAmount
	getCartAmount getShopAmount getStorageAmount getVendAmount getRandom getRandomRange getConfig
	getWord callMacro getArgFromList getListLenght sameParty);
replace with:

Code: Select all

our @EXPORT_OK = qw(ai_isIdle q4rx q4rx2 between cmpr match getArgs refreshGlobal getnpcID getnpcIDfromName getPlayerID
	getVenderID getItemIDs getItemPrice getInventoryIDs getStorageIDs getSoldOut getInventoryAmount
	getCartAmount getShopAmount getStorageAmount getVendAmount getRandom getRandomRange getConfig
	getWord callMacro getArgFromList getListLenght sameParty);
find:

Code: Select all

use Macro::Data
add after:

Code: Select all

use Network;
find:

Code: Select all

sub getnpcID {
	my ($tmpx, $tmpy) = split(/ /,$_[0]);
	foreach my $npc (@{$npcsList->getItems()}) {
		return $npc->{binID} if ($npc->{pos}{x} == $tmpx && $npc->{pos}{y} == $tmpy)
	}
	return -1
}
add after:

Code: Select all

sub getnpcIDfromName {
	my $nameNPC = $_[0];
	foreach my $npc (@{$npcsList->getItems()}) {
	  if(my($re, $ci) = $nameNPC =~ /^\/(.+?)\/(i?)$/){
		if(($ci && $npc->{name} =~ /$re/i) || (!$ci && $npc->{name} =~ /$re/)){
		  return $npc->{binID}
		}
	  }elsif($nameNPC =~ /^"(.*?)"$/){
		  return $npc->{binID} if $npc->{name} eq $1
	  }
	}
	return -1
}
One ST0 to rule them all? One PE viewer to find them!
One ST_kRO to bring them all and in the darkness bind them...

Mount Doom awaits us, fellowship of OpenKore!

ezza
Developers
Developers
Posts: 109
Joined: 04 Apr 2008, 09:50

Re: Macro Mods

#13 Post by ezza »

Done it already with different approach. http://forums.openkore.com/viewtopic.php?f=32&t=6784

Locked