PDA

Просмотр полной версии : После смерти рандомно сесть


Seo2Up
10.01.2010, 03:28
Всем привет. Заинтересовал макрос, чтобы после смерти бот немного смещался с точки воскрешения и садился до накомления определенного количества HP. Вот только как это сделать рандомно ? Знаю, что можно в конфиге прописать, но интересует именно случайная точка.

Спасибо.

4epT
10.01.2010, 22:55
ну макросом можно написать

Seo2Up
11.01.2010, 00:42
Это я понял. Вот только не пойму как прописать ...

automacro rip {
console /You have die/
call randomove
run-once 1
}
macro randomove {
$chislo = @random("1","2","3")
if (1 == $chislo) goto one
if (2 == $chislo) goto two
if (3 == $chislo) goto three
goto end
:one
do conf lockMap "лока и координата"
goto end
:two
do conf lockMap "лока и координата"
goto end
:three
do conf lockMap "лока и координата"
:end
release rip
}
}

Не знаю, насколько правильно ... Так же не знаю, как правильно прописать точку и действие, чтобы он садился и до какого количества HP сидел, а после вставал и снова в бой (((

4epT
11.01.2010, 01:21
я бы тебе посоветовал менять значения в конфиге:
autoMoveOnDeath_x
autoMoveOnDeath_y

Seo2Up
11.01.2010, 01:27
Т.е. в макросе это будет выглядеть так:
:one
do conf lockMap prontera
autoMoveOnDeath 151
autoMoveOnDeath 29
goto end

И таких условий наделать кучу ?

А можно минимизировать через move @rand(x,y) ? Если да, то как это корректно прописать ?

Садиться и вставить как я понял можно сделать слудующим методомdo sit
HP > 90%
do standПравильно ?

4epT
12.01.2010, 00:18
вообще-то я имел в виду что-то типо:

automacro rip {
console /You have die/
call randomove
}
macro randomove {
do conf autoMoveOnDeath_x @rand(150,160)
do conf autoMoveOnDeath_y @rand(150,160)
}
}

Садиться и вставить как я понял можно сделать слудующим методом
Код:

do sit
HP > 90%
do stand

Правильно ?
совсем не правильно!!!
я не знаю такой команды: "HP > 90%", это условие АВТОМАКРОСА! не стоит их путать!

Seo2Up
12.01.2010, 02:13
Эмммм ... Т.е уровень НР надо засовывать в автомакрос ?

automacro rip {
console /You have die/
do sit
HP > 90%
do stand
call randomove}Чую пятой точкой, что бред написал.

Так же по поводу локации, допустим меня интересует не только пронта, тогда можно прописать вот такdo conf lockMap prontera
do conf autoMoveOnDeath_x @rand(150,160)
do conf autoMoveOnDeath_y @rand(150,160) и прикрутить рандомный выбор локи через число ••••••

4epT
12.01.2010, 02:36
automacro rip {
console /You have die/
do sit
HP > 90%
do stand
call randomove}

это опять бред, теперь у тебя команды макроса зачем-то запихнуты в условия АМ!
иди как ты почитай гайд по макро-плагину, обрати внимание на синтаксис макросов и АМ

Seo2Up
12.01.2010, 14:06
Ушел учиться, но я еще вернусь :)

Seo2Up
13.01.2010, 17:52
4epT, сильно не пинай, но нихрена не понял из мануала ((( Когда впиндюривал в автомакрос ориентировался вот на твой макрос (http://ragbot.ru/forum/showpost.php?p=2534&postcount=1)

4epT
13.01.2010, 21:08
ну всё же понятно, условия АМ отдельно:
sp < 10%
delay 5
run-once 1

команды макроса отдельно:
do e e7
release sp

Seo2Up
14.01.2010, 08:41
Т.е. условия я засовываю в АМ, а что делает в macro ?

automacro rip {
console /You have die/
HP < 90%
call randomove
run-once 1
}
macro randomove {
$chislo = @random("1","2","3")
if (1 == $chislo) goto one
if (2 == $chislo) goto two
if (3 == $chislo) goto three
goto end
:one
do conf lockMap prontera
do conf autoMoveOnDeath_x @rand(150,160)
do conf autoMoveOnDeath_y @rand(150,160)
do sit
pause 10
do stand
goto end
:two
do conf lockMap prontera
do conf autoMoveOnDeath_x @rand(150,160)
do conf autoMoveOnDeath_y @rand(150,160)
do sit
pause 10
do stand
goto end
:three
do conf lockMap prontera
do conf autoMoveOnDeath_x @rand(150,160)
do conf autoMoveOnDeath_y @rand(150,160)
do sit
pause 10
do stand
:end
release rip
}
}Оно ? Но как избавиться от паузы и привязать к точному значению ?

4epT
14.01.2010, 23:43
не понимаю зачем тебе one, two, three они же у тебя абсолютно идентичны

от какой паузы и ты вообще про какое значение? выражайся яснее

Seo2Up
14.01.2010, 23:51
Идентичны это пока. Потом буду несколько локаций. Это пока так, абстрактный пример.

от какой паузы и ты вообще про какое значение? выражайся яснее
Подожди, получается, что я правильно написал макрос ?

do sit
pause 10
do stand
Вот про эти паузы. Мне нужно точное значение жизни, при котором он будет вставать. Допустим 92%

Или эту часть я могу заменить
do sit
HP >= 92%
do stand

4epT
15.01.2010, 02:19
а что такое "HP"??

4epT
15.01.2010, 02:20
я бы на твоём месте отсидку регулировал параметрами конфига:
sitAuto_hp_lower
sitAuto_hp_upper
sitAuto_sp_lower
sitAuto_sp_upper

Seo2Up
15.01.2010, 11:56
И так, вот, что у меня получилось

automacro rip {
console /You have die/
HP < 90%
call randomove
run-once 1
}
macro randomove {
$chislo = @random("1","2","3")
if (1 == $chislo) goto one
if (2 == $chislo) goto two
if (3 == $chislo) goto three
goto end
:one
do conf lockMap prontera
do conf autoMoveOnDeath_x @rand(150,160)
do conf autoMoveOnDeath_y @rand(150,160)
do conf sitAuto_hp_lower < 90%
do conf sitAuto_hp_upper >= 92%
goto end
:two
do conf lockMap prontera
do conf autoMoveOnDeath_x @rand(150,160)
do conf autoMoveOnDeath_y @rand(150,160)
do conf sitAuto_hp_lower < 90%
do conf sitAuto_hp_upper >= 92%
goto end
:three
do conf lockMap prontera
do conf autoMoveOnDeath_x @rand(150,160)
do conf autoMoveOnDeath_y @rand(150,160)
do conf sitAuto_hp_lower < 90%
do conf sitAuto_hp_upper >= 92%
:end
release rip
}
}

Не уверен в связке
do conf sitAuto_hp_lower < 90%
do conf sitAuto_hp_upper >= 92%

Пишу первый макрос, поэтому прошу пожалуйста указать все возможные баги ...

4epT
18.01.2010, 19:14
1. не где не видел условие АМ "HP" везде оно указано как "hp"
2. почитай мануал по конфигу про параметры "sitAuto_hp_lower", в них не приемлемы значение вида: "< 90%"

Seo2Up
19.01.2010, 15:53
По пунктам:
1. Можно поподробнее
2. Т.е. я должен использовать точное значение
do conf sitAuto_hp_lower 1
do conf sitAuto_hp_upper 92
так ? Но как тогда быть, если hp допустим уже 5% ? Или он в любом случае, пока не наберет необходимое количество жизни сядит ?

4epT
19.01.2010, 23:43
1. в мануале (http://wiki.openkore.com/index.php?title=Macro) всё написано
2. это уже ближе к теме

Seo2Up
20.01.2010, 11:01
Ну хоть убей, никак не могу понять про первый пункт, посмотрел в мануале, что ты дал, посмотрел вот в этом (http://ragbot.ru/forum/showthread.php?p=3296) мануале ... Так и не понял, что ты подразумевал под словами:
не где не видел условие АМ "HP" везде оно указано как "hp":(

4epT
20.01.2010, 19:00
про регистр букв слыхал?

Seo2Up
21.01.2010, 12:48
Вот тогда что у меня получилось:
automacro rip {
console /You have die/
hp < 90%
call randomove
run-once 1
}
macro randomove {
$chislo = @random("1","2","3")
if (1 == $chislo) goto one
if (2 == $chislo) goto two
if (3 == $chislo) goto three
goto end
:one
do conf lockMap prontera
do conf autoMoveOnDeath_x @rand(150,160)
do conf autoMoveOnDeath_y @rand(150,160)
do conf sitAuto_hp_lower 1
do conf sitAuto_hp_upper 92
goto end
:two
do conf lockMap prontera
do conf autoMoveOnDeath_x @rand(150,160)
do conf autoMoveOnDeath_y @rand(150,160)
do conf sitAuto_hp_lower 1
do conf sitAuto_hp_upper 92
goto end
:three
do conf lockMap prontera
do conf autoMoveOnDeath_x @rand(150,160)
do conf autoMoveOnDeath_y @rand(150,160)
do conf sitAuto_hp_lower 1
do conf sitAuto_hp_upper 92
:end
release rip
}
}
Само собой, локации и координаты будут разные + для разнообразия параметры, при которых встает бот можно сделать разными. Что еще можно доработать, чтобы сделать бота более человекоподобным ?

Ну и само собой, прошу посмотреть на допущеные ошибки. Думаю, что они есть. ]:->

Так же буду оч признателен за советы по минимизации кода и внесению рандомности *ok*

P.S. Макрос еще не тестировал, т.к. дома временно проблемы с компом, а на работе запуск сторонних программ ограничен ((( Если кто-то тестировал - отпишитесь пожалуйста ...

4epT, большое спасибо за помощь и за то, что выдержал мой вынос мозга. *beer*

manticora
26.01.2010, 13:36
Приветствую,
немного подправил, чисто косметически. Сам не проверял весь макрос, но выглядит работоспособным.
automacro rip {
console /You have die/
hp < 90%
call randomove
}
macro randomove {
$chislo = @rand(1,3)
if (2 == $chislo) goto two
if (3 == $chislo) goto three
:one
do conf lockMap prontera
do conf autoMoveOnDeath_x @rand(150,160)
do conf autoMoveOnDeath_y @rand(150,160)
do conf sitAuto_hp_lower 1
do conf sitAuto_hp_upper 92
goto end
:two
do conf lockMap prontera
do conf autoMoveOnDeath_x @rand(150,160)
do conf autoMoveOnDeath_y @rand(150,160)
do conf sitAuto_hp_lower 1
do conf sitAuto_hp_upper 92
goto end
:three
do conf lockMap prontera
do conf autoMoveOnDeath_x @rand(150,160)
do conf autoMoveOnDeath_y @rand(150,160)
do conf sitAuto_hp_lower 1
do conf sitAuto_hp_upper 92
:end
}

Seo2Up
30.01.2010, 00:13
Итак, занялся тестом и вот первая ошибка
Loading control\config.txt...
Loading control\mon_control.txt...
Loading control\items_control.txt...
Loading control\shop.txt...
Loading control\overallAuth.txt...
Loading control\pickupitems.txt...
Loading control\responses.txt...
Loading control\timeouts.txt...
Loading control\chat_resp.txt...
Loading control\avoid.txt...
Loading control\priority.txt...
Loading control\consolecolors.txt...
Loading control\routeweights.txt...
Loading control\arrowcraft.txt...
Loading tables\recvpackets-rro.txt...
Loading tables\cities.txt...
Loading tables\commanddescriptions.txt...
Loading tables\directions.txt...
Loading tables\elements.txt...
Loading tables\emotions.txt...
Loading tables\equiptypes.txt...
Loading tables\haircolors.txt...
Loading tables\headgears.txt...
Loading tables\items.txt...
Loading tables\itemsdescriptions.txt...
Loading tables\itemslots.txt...
Loading tables\itemslotcounttable.txt...
Loading tables\itemtypes.txt...
Loading tables\maps.txt...
Loading tables\monsters.txt...
Loading tables\npcs.txt...
Loading tables\packetdescriptions.txt...
Loading tables\portals.txt...
Loading tables\portalsLOS.txt...
Loading tables\servers.txt...
Loading tables\sex.txt...
Loading tables\skills.txt...
Loading tables\spells.txt...
Loading tables\skillsdescriptions.txt...
Loading tables\skillssp.txt...
Loading tables\skillssp.txt...
Loading tables\skillsstatus.txt...
Loading tables\skillsailments.txt...
Loading tables\skillsstate.txt...
Loading tables\skillslooks.txt...
Loading tables\skillsarea.txt...
Loading tables\skillsencore.txt...
Loading control\macros.txt...
control\macros.txt: ignoring '}' (munch, munch, strange food)
[macro] hooking to packet_privMsg
[macro] hooking to packet_pubMsg
[macro] hooking to AI_pre
[macro] hooking to log
Attacking: Monster Poporing (0)
Exp gained: 80/44 (0.00%/0.00%)

Подскажите, что за ошибка ? Как исправить ?

Продолжаю тест.

manticora
30.01.2010, 01:14
Убери лишнюю фигурную скобку

Seo2Up
30.01.2010, 13:29
manticora, спасибо. Новый касяк, после отсидки бот не идет валить мобов ... Где прописать, чтобы он шел на локацию, ведь в конфиге он меняет имя карты на ту, на которой сидит.

manticora
30.01.2010, 15:52
Просто не надо было ему менять локмапу на пронтеру, убери вообще эту строчку и все будет нормально.
Т.е. его убьют на локмапе, он улетит на кафру, отойдет в случайное место, отсидится, пойдет дальше кач на локмапу. Где-то там посередине будет автозакупка, автопродажа, автосклад и автобрание со склада, если оно у тебя прописано.

Seo2Up
31.01.2010, 13:35
Так в том-то и дело, что он гуляет не только по пронте, но и по соседним локациям ...

Добавлено через 15 часов 53 минуты
Прописал так:
:end
do conf lockMap prontera
release ripЭффекта ноль (((

Seo2Up
02.02.2010, 02:05
4epT, manticora, выручайте :(

manticora
02.02.2010, 02:18
Приложи к сообщению свой macros.txt и еще раз опиши, что ты хочешь, и что он делает на самом деле. Это чтобы не запутаться.

Seo2Up
02.02.2010, 02:30
К сожалению под рукой нет, т.к. сейчас у родителей дома.

Вот шаблон
automacro rip {
console /You have die/
hp < 90%
call randomove
run-once 1
}
macro randomove {
$chislo = @rand(1,3)
if (1 == $chislo) goto one
if (2 == $chislo) goto two
if (3 == $chislo) goto three
:one
do conf lockMap prontera
do conf autoMoveOnDeath_x @rand(150,160)
do conf autoMoveOnDeath_y @rand(150,160)
do conf sitAuto_hp_lower 1
do conf sitAuto_hp_upper 92
goto end
:two
do conf lockMap prontera
do conf autoMoveOnDeath_x @rand(150,160)
do conf autoMoveOnDeath_y @rand(150,160)
do conf sitAuto_hp_lower 1
do conf sitAuto_hp_upper 92
goto end
:three
do conf lockMap prontera
do conf autoMoveOnDeath_x @rand(150,160)
do conf autoMoveOnDeath_y @rand(150,160)
do conf sitAuto_hp_lower 1
do conf sitAuto_hp_upper 92
:end
release rip
}Макрос должен делать следующее, после того, как бот умер, макрос рандомно выбирает число, которому соответствует локация и координата. Бот переходит на нее и садиться. После того, как жизнь восстановилась до заданного уровня, он встает.

Но есть несколько загвоздок:
1. Бот ходит и садиться не по одной локации, а по нескольким, допустим пронта и ее окрестности, поэтому от строчкиdo conf lockMap prontera
не могу избавиться
2. Надо, чтобы после того, как он встал, он присвоил себе локацию и шел на нее. Сейчас же он просто встает и стоит. Если на окрестностях, то бьет мобов, за которых не получает опыт (((

Химичил и пытался прописать так:...
:end
do conf lockMap "лока на которую идти"
release rip
}но не работает (((

Seo2Up
09.02.2010, 02:03
Help !!! Можно конечно прописать

do conf lockMap prontera
do conf autoMoveOnDeath_x @rand(150,160)
do conf autoMoveOnDeath_y @rand(150,160)
do conf sitAuto_hp_lower 1
do conf sitAuto_hp_upper 92
do conf lockMap "Локация на которую идти"
:end
Но это же надо кучу строчек менять, если на новую локу ставим бота, а как можно универсально сделать ?

manticora
09.02.2010, 02:39
Чувак, терпи. А ты как хотел? Если новый город - то и новые точки респа, сколько городов - столько и вариантов. А еще надо настраивать автосклад, автопокупку и т.д.

4epT
09.02.2010, 19:04
Seo2Up, собственно говоря а какие варианты у тебя ещё есть? как бот узнает куда ему идти?

Seo2Up
09.02.2010, 20:17
4epT, manticora, да это я понял, что в макросе надо прописать локацию, на которую он встает и идет, но вариант
...
:end
do conf lockMap "лока на которую идти"
release rip
}Не работает, а вариант
do conf lockMap prontera
do conf autoMoveOnDeath_x @rand(150,160)
do conf autoMoveOnDeath_y @rand(150,160)
do conf sitAuto_hp_lower 1
do conf sitAuto_hp_upper 92
do conf lockMap "Локация на которую идти"
:endОчень муторный, т.к. бот качается лично у меня на одной локации. При смене локации надо менять кучу строк, а хотелось бы свести к одной. В программировании нет ничего невозможного, но я так и не могу понять, как это правильно прописать :(

4epT
09.02.2010, 22:36
не вижу причин не работать первому варианту.. пришли лог консоли где видно что бот отсиделся и его дальнейшие действия