p.s: Keep-up the good work ^^ ... I'm watching

Moderator: Moderators
Code: Select all
automacro test {
player /(.*)/, 5
exclusive 1
call {
$i = $.lastMatch1
do eval my $_player = Match::player($_i); foreach my $_player (@{$::playersList->getItems()}) { $::Macro::Data::varStack{name} = $_player->{'name'}; $::Macro::Data::varStack{job} = $_player->job; $::Macro::Data::varStack{lvl} = $_player->{'lv'}; $::Macro::Data::varStack{sex} = $::sex_lut{$_player->{'sex'}}; $::Macro::Data::varStack{dist} = sprintf("%.1f", distance($::char->{pos_to}, $_player->{pos_to})); $::Macro::Data::varStack{guild} = $_player->{guild} ? $_player->{guild}{name} : ''; $::Macro::Data::varStack{id} = $_player->{'binID'}; }
log name=$name job=$job lvl=$lvl sex=$sex dist=$dist guild=$guild id=$id
if ($dist < 4) goto next
:next
do something with $name or $id
stop
}
}
Code: Select all
automacro test {
player /(.*)/, 5
timeout 5
call {
$n = $.lastMatch1
log $n
do eval foreach my $_player (@{$::playersList->getItems()}) { next if $_player->{'name'} eq "";if ($_player->{'name'} eq "$n") {$::Macro::Data::varStack{name} = $_player->{'name'}; $::Macro::Data::varStack{job} = $_player->job; $::Macro::Data::varStack{lvl} = $_player->{'lv'}; $::Macro::Data::varStack{sex} = $::sex_lut{$_player->{'sex'}}; $::Macro::Data::varStack{dist} = sprintf("%.1f", distance($::char->{pos_to}, $_player->{pos_to})); $::Macro::Data::varStack{guild} = $_player->{guild} ? $_player->{guild}{name} : ''; $::Macro::Data::varStack{id} = $_player->{'binID'}; }}
if ($name = Unknown || $name = "") stop
log name=$name job=$job lvl=$lvl sex=$sex dist=$dist guild=$guild id=$id
log do something with Name $name or ID $id
}
}
Code: Select all
automacro test {
player /(.*)/, 5
timeout 5
call {
$n = $.lastMatch1
log $n
do eval foreach my $_player (@{$::playersList->getItems()}) { next if $_player->{'name'} eq ""; next if $_player->{actorType} ne "Player"; if ($_player->{'name'} eq "$n") {$::Macro::Data::varStack{name} = $_player->{'name'}; $::Macro::Data::varStack{job} = $_player->job; $::Macro::Data::varStack{lvl} = $_player->{'lv'}; $::Macro::Data::varStack{sex} = $::sex_lut{$_player->{'sex'}}; $::Macro::Data::varStack{dist} = sprintf("%.1f", distance($::char->{pos_to}, $_player->{pos_to})); $::Macro::Data::varStack{guild} = $_player->{guild} ? $_player->{guild}{name} : ''; $::Macro::Data::varStack{id} = $_player->{'binID'}; }}
if ($name = Unknown || $name = "") stop
log name=$name job=$job lvl=$lvl sex=$sex dist=$dist guild=$guild id=$id
log do something with Name $name or ID $id
}
}
it also triggers when a homunculus is in sight thats why i put next if $_player->{actorType} ne "Player"ezza wrote:[edit] Becarefull on the actor type. Unknown #ID player also in the same type of actor Player when it still not in the mem cache.. so dont worry.. the player syntax in automacro just trigger only to players.. not the anything else.
Code: Select all
automacro test {
player /(.*)/, 5
timeout 5
call {
$n = $.lastMatch1
log $n
do eval foreach my Actor::Player $_player (@{$playersList->getItems()}) { next if $_player->{'name'} eq "";if ($_player->{'name'} eq "$n") {$::Macro::Data::varStack{name} = $_player->{'name'}; $::Macro::Data::varStack{job} = $_player->job; $::Macro::Data::varStack{lvl} = $_player->{'lv'}; $::Macro::Data::varStack{sex} = $::sex_lut{$_player->{'sex'}}; $::Macro::Data::varStack{dist} = sprintf("%.1f", distance($::char->{pos_to}, $_player->{pos_to})); $::Macro::Data::varStack{guild} = $_player->{guild} ? $_player->{guild}{name} : ''; $::Macro::Data::varStack{id} = $_player->{'binID'}; }}
if ($name = Unknown || $name = "") stop
log name=$name job=$job lvl=$lvl sex=$sex dist=$dist guild=$guild id=$id
log do something with Name $name or ID $id
}
}
it actually triggers the macro regardless if its a homunculus. i tried adding this partRBiN wrote:Discussion: 1st, player syntax in automacro only match players name ($n)... not the homun. Then, we match the name ($n) to the existing players name in the playersList (did homun really exist in this playersList?). So, its the players name that we try to match here... not the homun, unless got some stupid ppl with the same name to the homun
p.s: So, what say you?
Code: Select all
$::Macro::Data::varStack{type} = $_player->{actorType}
Code: Select all
automacro test {
player /^.*/, 5
timeout 10
call {
do eval my %_playersInfo;my @playersInformation;for (my $_i = 0; $_i < @playersID; $_i++) {next if ($::playersID[$_i] eq "");$_player = $::players{$::playersID[$_i]};$_playersInfo{$_i}{name} = ($_player->{'name'})?$_player->{'name'}:"Unknown";$_playersInfo{$_i}{job} = $::jobs_lut{$_player->{jobID}};$_playersInfo{$_i}{lvl} = $_player->{'lv'};$_playersInfo{$_i}{sex} = $::sex_lut{$_player->{'sex'}};$_playersInfo{$_i}{dist} = sprintf("%.1f", distance($::char->{pos_to}, $_player->{pos_to}));$_playersInfo{$_i}{guild} = $_player->{guild} ? $_player->{guild}{name} : 'None';$_playersInfo{$_i}{id} = $_player->{'binID'};$_playersInfo{$_i}{loc} = "$_player->{pos_to}{x}" . " $_player->{pos_to}{y}";push @playersInformation, \%_playersInfo;};$_i = 0;$_n = 1;message "-------------- Player List -----------------\nNo. Name (ID) Guild Sex Lvl Job Dist Loc\n--------------------------------------------\n";foreach (@playersInformation) {if ($_->{$_i}{dist} > 5) {$_i++;next} next if ($_->{$_i}{name} eq "");message "$_n\. $_->{$_i}{'name'} ($_->{$_i}{id}) [$_->{$_i}{'guild'}] $_->{$_i}{'sex'} $_->{$_i}{'lvl'} $_->{$_i}{job} Dist=$_->{$_i}{'dist'} ($_->{$_i}{loc})\n", "macro"; $_i++;$_n++}
}
}