Skip to content

Instantly share code, notes, and snippets.

@allanon
Created May 17, 2018 20:31
Show Gist options
  • Save allanon/337c8968335c1878e159dfbe49f86412 to your computer and use it in GitHub Desktop.
Save allanon/337c8968335c1878e159dfbe49f86412 to your computer and use it in GitHub Desktop.
!include eventMacro_quests.txt
macro test_wi {
$i = 0
while ($i < 3) {
log $i
$j = 0
if ($j < 3) {
log $i.$j +
}
if ($j > 3) {
log $i.$j -
}
$i++
pause 0.1
}
}
macro test_ww {
$i = 0
while ($i < 3) {
log $i
$j = 0
while ($j < 3) {
log $i.$j
$j++
pause 0.1
}
$i++
pause 0.1
}
}
macro rodex {
do conf debugPacket_sent 2
do rodex open
do rodex write CharName
do rodex settarget CharName
do rodex settitle test3
do rodex setbody test 3
do rodex setzeny 0
do rodex send
do conf debugPacket_sent 0
}
automacro auto_get_bwing {
timeout 10
InCity 1
StorageOpened 1
InStorage "Butterfly Wing" > 1
InInventory "Butterfly Wing" < 10
call {
[
do storage get Butterfly Wing &eval( 10 - $.InInventoryLastAmount )
]
}
}
automacro auto_quest_bounty_board_aldebaran {
disabled 1
InCity 1
InMap aldebaran
QuestInactive 62890, 62891, 62892, 62893, 62894
call quest_bounty_board_aldebaran
}
macro quest_bounty_board_aldebaran {
do move 143 129 aldebaran 10
do talknpc 143 129 r0 r0 r0 e
do talknpc 143 129 r0 r1 r0 e
do talknpc 143 129 r0 r2 r0 e
do talknpc 143 129 r0 r3 r0 e
do talknpc 143 129 r0 r4 r0 e
}
macro list_unidentified_inventory {
[
$i = 0
$unidentified = NONE
$unidentcount = 0
while ($i < 100) as loop
$identified = @eval ( $::q = Actor::Item::get($i); (!$::q || $::q->{identified}) ? 1 : 0 )
if ($identified == 0) then match
$unidentified = $unidentified,$i
$unidentcount = @eval($unidentcount + 1)
end match
$i = @eval($i + 1)
end loop
$junk = [$unidentified]
]
}
automacro auto_arrows_1 {
disabled 1
ConfigKey autoArrows 1
timeout 300
InCity 1
exclusive 1
call {
[
$follow = @config(follow)
do follow stop
do conf route_step 15
do conf spread_followerWaitDist 999
do conf spread_followerMoveDist 999
]
call repair
$opendelay = 2
call arrows_resupply
#do conf route_step 5
if ($follow != 1) goto nofollow
do conf follow $follow
:nofollow
[
do conf spread_followerWaitDist 10
do conf spread_followerMoveDist 45
]
}
}
automacro auto_arrows_2a {
disabled 1
ConfigKey autoArrows 1
timeout 20
delay 10
InInventory "Arrow" < 200
InInventory "Iron Arrow" < 200
InInventory "Fire Arrow" < 200
InInventory "Silver Arrow" < 200
InInventory "Hunting Arrow" < 200
InInventory "Elven Arrow" < 200
InInventory "Bullet" < 200
InLockMap 1
call {
[
# This macro triggers when we're not logged in and don't have any inventory info.
# Don't respawn if we actually have arrows!
if (@invamount(Arrow) > 199) goto done
if (@invamount(Iron Arrow) > 199) goto done
if (@invamount(Fire Arrow) > 199) goto done
if (@invamount(Silver Arrow) > 199) goto done
if (@invamount(Hunting Arrow) > 199) goto done
if (@invamount(Elven Arrow) > 199) goto done
if (@invamount(Bullet) > 199) goto done
$reason = low arrows
call arrows_reload
stop
:done
log Already have arrows! @invamount(Arrow) @invamount(Iron Arrow) @invamount(Fire Arrow) @invamount(Silver Arrow) @invamount(Elven Arrow) @invamount(Bullet)
]
}
}
automacro auto_arrows_2b {
disabled 1
ConfigKey autoArrows 1
timeout 30
InLockMap 1
CharCurrentWeight > 49%
call {
$reason = high weight
call arrows_reload
}
}
macro store_all {
call storage_open
do storage add 0-1000
}
macro storage_open {
[
$open = &eval( $::char->storage->isReady ? 1 : 0 )
if ($open == 1) stop
call find_kafra
if ($kafraidx == -1) stop
]
do move $kafrapos $kaframap $kafradist
do talknpc $kafrapos $kafrastor
[
# Wait up to six seconds for storage to open.
$openi = 0
while ($openi < 12) {
$open = &eval( $::char->storage->isReady ? 1 : 0 )
if ($open == 1) stop
pause 0.5
$openi = @eval($openi + 1)
}
]
}
macro save {
[
call find_kafra
if ($kafraidx == -1) stop
]
do move $kafrapos $kaframap $kafradist
do talknpc $kafrapos $kafrasave
}
macro goto_kafra {
call find_kafra
if ($kafraidx == -1) stop
do move $kafrapos $kaframap $kafradist
#do talknpc $kafrapos $kafrastor
#call quest_talk_dist "$kaframap,$kafrapos,$kafradist,$kafrapos,$kafrastor"
}
sub find_kafra {
# The task code is loaded on demand, and might not be loaded yet.
require Task::CalcMapRoute;
my $targets = [];
foreach ( 0 .. 200 ) {
last if !exists $config{"kafra_$_"};
next if $config{"kafra_${_}_disabled"};
next if !$config{"kafra_${_}_map"};
next if $config{"kafra_${_}_pos"} !~ /^\s*(\d+)\s+(\d+)\s*$/os;
push @$targets, { map => $config{"kafra_${_}_map"}, x => $1, y => $2, index => $_ };
}
my $task = Task::CalcMapRoute->new( targets => $targets );
$task->activate;
foreach ( 1 .. 5 ) {
$task->iterate if $task->getStatus < 2;
}
$task->{target}->{index} || -1;
}
macro find_kafra {
[
# Collect a list of all kafras and calculate the closest one.
$kafraidx = find_kafra()
$kaframap = &config(kafra_$kafraidx_map)
$kafrapos = &config(kafra_$kafraidx_pos)
$kafrastor = &config(kafra_$kafraidx_storage)
$kafrasave = &config(kafra_$kafraidx_save)
$kafradist = &config(kafra_$kafraidx_dist)
if (a$kafrastor == a) {
$kafrastor = &config(kafra_defaults_0_storage)
}
if (a$kafrasave == a) {
$kafrasave = &config(kafra_defaults_0_save)
}
if (a$kafradist == a) {
$kafradist = &config(kafra_defaults_0_dist)
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment