#Макро для тотализатора 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 }