#Макро для тотализатора ruRO.
#Версия от 17.10.2008
automacro Initial {
map hugel
exclusive 1
run-once 1
priority 0
delay 2
call {
release notInRaceArea
release singleAnnouncement
release doubleAnnouncement
do eval message("\n------ OpenKore с макросом для игры на тотализаторе ruRO --------\n\tПомните, что если ваш персонаж ниже 80-ого базового уровня, то\n\tвы не сможете получить награду за ваши жетоны!\n-----------------------------------------------------------------\n");
pause 3
do eval $::Macro::Data::varStack{tuned} = "1" if(-e $::Settings::logs_folder."/tuned.txt");
if ($tuned == 1) goto done
do eval message("Сейчас будет произведена автоматическая настройка control/config.txt\n");
do conf ignoreAll 1
do conf dealAuto 1
do conf squelchDomains emotion,skill,publicchat,drop
do conf cachePlayerNames_maxSize 300
do conf sleepTime 20000
do conf allowedMaps hugel,p_track01,p_track02
do conf allowedMaps_reaction 0
do conf route_randomWalk 0
do conf route_randomWalk_inTown 0
do conf route_escape_randomWalk 0
do conf route_avoidWalls 0
do conf autoTalkCont 0
do conf sitAuto_idle 0
do conf sitAuto_hp_lower 0
do conf sitAuto_sp_lower 0
do conf sitAuto_over_50 0
do eval open(TUNE, ">", $::Settings::logs_folder."/tuned.txt");print TUNE "true";close(TUNE);
do eval message("Настройка завершена!\n");
goto end
:done
do eval message("Ваш control/config.txt уже был настроен, перенастройка не требуется.\nДля принудительной перенастройки удалите файл logs/tuned.txt\n");
:end
}
}
automacro dcOnFullMedal {
inventory "Prize Medal" > 1000
run-once 1
exclusive 1
timeout 10
call {
log Я собрал слишком много жетонов и не хочу попасть в бан.
pause 3
do quit
}
}
automacro dcOnZeny {
zeny < 2000
run-once 1
exclusive 1
timeout 10
call {
log У меня закончились деньги!
pause 3
do quit
}
}
automacro dropTicketInHugel {
map hugel
inventory "Monster Ticket" == 1
run-once 1
call {
do drop @inventory(Monster Ticket)
}
}
automacro notInRaceArea {
location hugel
location not hugel 50 80 70 65
zeny > 2000
run-once 1
exclusive 1
call {
do move @rand(59,69) @rand(74,79) hugel
release notInRaceArea
}
}
automacro singleAnnouncement {
location hugel 50 80 70 65
zeny > 2000
console /^Арена одиночных забегов открывается.|^Арена одиночных забегов открыта.|^Участники, поторопитесь пройти на Арену.|^Вход на арену одиночных забегов закрывается.|^Участники, пройдите на арену.|^Вход на Арену Одиночных забегов закрывается.|^Участники, пройдите на арену./
call singleRace
}
automacro doubleAnnouncement {
location hugel 50 80 70 65
zeny > 2000
console /^Двойной забег начинается.|^Двойной забег начинается. Участники, поторопитесь пройти на арену.|^Вход на двойной забег скоро будет закрыт. Участники, пройдите на арену.|^Вход на двойной забег скоро будет закрыт.|^Участники, пройдите на арену./
call doubleRace
}
macro singleRace {
lock singleAnnouncement
lock doubleAnnouncement
$betNumber = @rand(1,6)
pause @rand(1,15)
do talknpc 58 72 c r1 c c r0 n
pause @rand(1,5)
do move @rand(70,76) @rand(26,35) p_track01
pause @rand(1,10)
do talknpc 72 22 c r$betNumber n
release singleAnnouncement
release doubleAnnouncement
log Я поставил на $betNumber монстра
pause @rand(1,5)
do sit
do look 2
}
macro doubleRace {
$betNumber1 = @rand(1,6)
$betNumber2 = @rand(1,6)
while ($betNumber2 == $betNumber1) as chooseAgain
$betNumber2 = @rand(1,6)
end chooseAgain
$betNumber1Temp = $betNumber1
$betNumber2Temp = $betNumber2
$betNumber1Temp--
$betNumber2Temp--
do eval if ($::Macro::Data::varStack{betNumber1Temp} < $::Macro::Data::varStack{betNumber2Temp}) {$::Macro::Data::varStack{betNumber2Temp}--}
lock singleAnnouncement
lock doubleAnnouncement
pause @rand(1,15)
do talknpc 62 69 c r1 c c r0 n
pause @rand(1,5)
do move @rand(70,76) @rand(26,35) p_track02
pause @rand(1,15)
do talknpc 72 22 c r1 c c r$betNumber1Temp c r0 c r$betNumber2Temp c r0 n
release singleAnnouncement
release doubleAnnouncement
log Я поставил на $betNumber1 и $betNumber2 монстра.
pause @rand(1,5)
do sit
do look 2
}
automacro singleBetResult {
location p_track01
inventory "Monster Ticket" == 1
console /^В этом забеге победил Монстр-(\d)!/
call singleResultProcessing
}
automacro doubleBetResult1 {
location p_track02
inventory "Monster Ticket" == 1
console /^Монстр-(\d) пришел к финишу./
call doubleResultProcessing1
}
automacro doubleBetResult2 {
location p_track02
inventory "Monster Ticket" == 1
console /^Забег закончен, так как Монстр-(\d) прибыл к финишу./
call doubleResultProcessing2
}
automacro lookupTicket {
console /^Кассир#(single|medal): билета - (\d+)./
call continueRedemption
}
macro singleResultProcessing {
$resultNumber = $.lastMatch1
do eval if (open(FILE, ">>:utf8", $::Settings::logs_folder . "/raceResultSingle.txt")) {$::Macro::Data::varStack{datetime} = "[".getFormattedDate(int(time))."]";print FILE "\n$::Macro::Data::varStack{datetime} Ставка на: $::Macro::Data::varStack{betNumber}; Выиграл: $::Macro::Data::varStack{resultNumber}.";close FILE;}
if ($resultNumber == $betNumber) goto win
log Я проиграл.
call Exit
goto end
:win
log Я выиграл 4 жетона!
call Redemption
:end
}
macro doubleResultProcessing1 {
$resultNumber1 = $.lastMatch1
if ($resultNumber1 == $betNumber1) goto wait
if ($resultNumber1 == $betNumber2) goto wait
do eval if (open(FILE, ">>:utf8", $::Settings::logs_folder . "/raceResultDouble.txt")) {$::Macro::Data::varStack{datetime} = "[".getFormattedDate(int(time))."]";print FILE "\n$::Macro::Data::varStack{datetime} Ставка на: $::Macro::Data::varStack{betNumber1}, $::Macro::Data::varStack{betNumber2}; Выиграл: $::Macro::Data::varStack{resultNumber1}.";close FILE;}
log Я не угадал первого монстра, дальше сидеть тут бессмысленно..
call Exit
goto end
:wait
log Возможно я выиграю, ждем..
:end
}
macro doubleResultProcessing2 {
$resultNumber2 = $.lastMatch1
do eval if (open(FILE, ">>:utf8", $::Settings::logs_folder . "/raceResultDouble.txt")) {$::Macro::Data::varStack{datetime} = "[".getFormattedDate(int(time))."]";print FILE "\n$::Macro::Data::varStack{datetime} Ставка на: $::Macro::Data::varStack{betNumber1}, $::Macro::Data::varStack{betNumber2}; Выиграли: $::Macro::Data::varStack{resultNumber1}, $::Macro::Data::varStack{resultNumber2}.";close FILE;}
if ($resultNumber1 == $betNumber1) goto halfWin
if ($resultNumber2 == $betNumber1) goto halfWin
log Я проиграл.
call Exit
goto end
:halfWin
if ($resultNumber2 == $betNumber2) goto totallyWin
if ($resultNumber1 == $betNumber2) goto totallyWin
log Я проиграл.
call Exit
goto end
:totallyWin
log Я выиграл 15 жетонов!
call Redemption
:end
}
macro Redemption {
pause @rand(1,20)
do move @rand(68,76) @rand(37,45)
do eval $::Macro::Data::varStack{'name'} = $::Globals::char->{'name'};
do talk @npc (67 45)
do talk cont
do talk cont
do talk cont
do talk resp 0
do talk cont
do talk text $name
}
macro continueRedemption {
do talk cont
do talk num $.lastMatch2
do talk cont
call Exit
}
macro Exit {
release singleAnnouncement
release doubleAnnouncement
release singleBetResult
release doubleBetResult1
release doubleBetResult2
pause @rand(1,15)
if ($.map == p_track01) goto track1
do talknpc 76 38 c c r0 n
goto end
:track1
do talknpc 76 36 c c r0 n
:end
pause @rand(1,5)
do move @rand(56,67) @rand(76,79) hugel
do sit
do look 4
}