PDA

Просмотр полной версии : макрос: варп для указанной гилды


4epT
11.06.2007, 20:11
Описание:
Прист варпает в 1 точку (пока). Схема такая:
1. Рядом с пристом (в радиусе 10 клеток) в общий чат пишут слово варп (можно не переключать раскладку и написать dfhg, кстати можно написать и ВаРп - тоже поймёт. Макрос реагирует на 4 слова: варп, dfhg, порт, gjhn).
2. бот анализирует кто это, дальше:
а) если этот засранец (автор слов) не из наших гильдий, то молчим
б) если же - свой чувак, то открываем 1 варп (мало?)

Навтройка макроса:
$guild = гилда1,гилда2,...
сюда прописываем имена "своих в доску" гильдий. Имена не чувствительны к РеГиСтРу. После запятой пробела быть не должно!
$warp = 0
вместо '0' ставим тот портал который нужен (их всего четыре: 0, 1, 2, 3)

Достоинства макроса:
1. Прист не привязан к координатам, может стоять в любом городе, почти в любом месте.Почему почти? Читай далее.
2. Прист варпает в рандомные координаты. Причём всегда выше себя. Варпы могут быть левее и правее приста.
3. Если гемов нету, то макрос срабатывать не будет

Недостатки макроса:
А кто же о них пишет?
1. Нет оповещения о том, что кончились гемы (кому нада сами прикрутите, или настроете, чтоб бот сам брал гемы)
2. Прист не кидает санки (кому нада сам допишет)

Сам макрос:
##Варпаем гильдию##
automacro warp {
pubm /варп|порт|dfhg|gjhn/i,10
inventory "Blue Gemstone" > 0
run-once 1
call {
$guild = гилда1,гилда2,...
$warp = 0
$i = @player ($.lastpub)
if ($id = -1) goto stop
$g = @eval (exists $::players{$::playersID[$i]}->{guild} ? $::players{$::playersID[$i]}->{guild}{name} : 'null')
if ($g ~ $guild) goto ok
release warp
stop
:ok
if (@eval($::char->{sitting}) = 1) goto stand
do stand
:stand
$x = @eval($::char->{pos}{x})
$y = @eval($::char->{pos}{y})
do sl 27 @eval($x + @rand(-5, 5)) @eval($y + @rand(2, 7))
pause 2
do warp $warp
pause 5
release warp
}
}
#4epT©


Внимание, т.к в макросе исользуются русские слова (варп|порт), то файл macros.txt необходимо сохранить в кодировке UTF-8 (http://ragbot.ru/forum/showthread.php?p=11548##post11548)

reas0n
18.06.2007, 19:14
а как зделать тоже самое только если игрок не в гильдии?

4epT
18.06.2007, 19:25
1. принять его в гильдию
или
2 . Удалить:
$i = @player ($.lastpub)
if ($id = -1) goto stop
$g = @eval (exists $::players{$::playersID[$i]}->{guild} ? $::players{$::playersID[$i]}->{guild}{name} : 'null')
$guild = гилда1, гилда2, ... <<указываем имя гилды или несколько
if ($g ~ $guild) goto ok
release warp
stop
:ok
или
3. написать гильдию null $guild = null

Тогда бот будет включать варп всем

reas0n
18.06.2007, 23:28
спасибо работает...хотя на шёт куска макроса его убрать я давно догадалься,просто у меня бот сидел поэтому не варпал,вот такой йа нупко =/

хм теперь другая проблема он юзает 1 раз всего варп если бота не резетнуть он показывает ошибку и не варпает....есть какое нибуть решение?

P.S> ошибка "Skill Warp Portal failed (Basic) Casting failed: Basic (0)"

4epT
19.06.2007, 03:32
на счёт вставания (нету времени тестить, проверять) я подправил, теперь если бот сидит, то он встаёт :)
на счёт того что 1 раз юзает это ты брешиш :d когда я тестил он мне кучу варпов наоткрывал. может он у тебя пытается поставить варп на запрещённый участок (столб например)? место варпа радомное, поэтому вполне возможно. Приста лучше помещать так что бы сверху от него можно было варпы кидать.

endigro
27.06.2007, 10:19
а как сделать чтобы бот после варпа сам прыгл в него.
имеется ввиду что если напишишь какуюто хитрую команду то он сам прыгнет в варп после тебя.

4epT
27.06.2007, 11:25
endigro, чтобы точно после тебя - это запаришься, можно поставить через 7 сек после открытия.

а команду move x y ещё никто не отменял ;)

endigro
27.06.2007, 17:55
Я плохо понял что ты имел ввиду, поясни =-o

4epT
28.06.2007, 16:26
Убераешь:
$x = @eval($::char->{pos}{x})
$y = @eval($::char->{pos}{y})
do sl 27 @eval($x + @rand(-5, 5)) @eval($y + @rand(2, 7))
пишешь конкретные координаты, типо "do sl 27 x y"
потом паузу и "do move x y"

kumar
13.09.2007, 00:21
Обьясните нубу пожалуста что нужно изменить.
Настроил всё как указано в первом посте.
В итоге, при слове в общий чат "warp", прист встаёт, но варп не вскрывает... :(

do sl 27 @eval($x + @rand(-5, 5)) @eval($y + @rand(2, 7))

Что значит эта строка, может тут надо что-то менять? Извините зе глупые вопросы, просто ваще не понимаю тут ничего:D

4epT
13.09.2007, 13:34
kumar, неплохо было бы посмотреть на консоль бота (приста)

Эта строчка - команда открыть варп на рандомных координатах выше приста. Кстати посмотри, чтобы прист не стоял под стенкой, т.к. он всегда будет кидать вапр выше себя.

Кстати перс который пишет "warp" он находится в гилде "StormRaiders"?

kumar
13.09.2007, 14:13
да он находится в этой гильдии

консоль приста? не оч понимаю о чём речь...

можешь сделать конфиги или что-то что нужно вставить куда-то и это работало плиз. я бы сам сделал но скока не пытался разобраться не получается =(
только обкасты аги блес норм работают.

4epT
13.09.2007, 22:35
ты запускаешь бота (приста) там есть поле где постоянно бот пишет о том что с ним происходит, это и называется консоль..
так вот подойди к боту другим чаром и скажи warp потом перейди в окно с пристом (ботом) и скопирую сюда текст консоли (желательно после строки "такой-то чел сказал warp")

cabromen
16.09.2007, 17:32
отличный макрос спасибо черт..
все удобно особенно на гв!
тока я сделал чтобы на смайлик открывал)
показываешь ему свиит и все и он открывает

4epT
16.09.2007, 22:06
cabromen, если тебе это понравилось, то тебе сюда (http://ragbot.ru/forum/showthread.php?do=post_thanks_add&p=7933)
На свиит, так на свиит. Как пример можешь и сюда забацать что ты там наковырял.

cabromen
17.09.2007, 19:01
чето сегодня не пашет уже вот ошибка:
[macro] tempMacro0 error: error in 9: either '@eval($::char->{sitting})' or '1' has failed
the line number may be incorrect if you called a sub-macro.

4epT
17.09.2007, 20:01
cabromen, а чё ты с корой сделал, обновил?

FragMent
28.11.2007, 20:52
У меня вот что пишет
[macro] automacro warp triggered.

4epT
28.11.2007, 21:35
FragMent, поздравляю, это значит, что автомакрос у тебя запустился *bravo*

GumaNoiD
03.01.2008, 22:24
1.как сделать чтобы впрпал любого кто напишет определнное-тоесть не ориентируясь на гильду.
2.как чтоб после варпа делал чат

4epT
04.01.2008, 03:23
GumaNoiD
1. почитай повнимательнее первое и второе сообщение в этой теме.
2. почитай консольные команды и допиши их в конце макроса.

CaptainPetrov
04.02.2008, 21:34
а как сделать, чтобы прист открывал варп, если указанный игрок появился на экране?

4epT
04.02.2008, 22:41
а в автомакросах есть условие player ;)

CaptainPetrov
05.02.2008, 01:28
Вот так работает, но только один раз. Второй раз он не стал открывать варп :(

automacro warp {
player "ВасяНубов"
inventory "Blue Gemstone" > 0
run-once 1
call {
$guild = null
$warp = 1
$x = @eval($::char->{pos}{x})
$y = @eval($::char->{pos}{y})
do sl 27 @eval($x + @rand(-1, 0)) @eval($y + @rand(0, 0))
pause 2
do warp $warp
pause 5
release warp
}
}

4epT
05.02.2008, 02:00
вроде как должно пахать, только пауза убери последнюю (pause 5)

у меня работает, я проверил, у тя при загрузке коры никаких жёлтых ошибок не выскакивает?

CaptainPetrov
05.02.2008, 02:23
всё работает, спасибо)

4epT
05.02.2008, 02:57
так и в чом трабла была? в паузе? о_о

CaptainPetrov
05.02.2008, 04:17
трабла я так и не понял в чем, просто кору тупо перезапустил и заработало. щас иногда запускаю то работает то не работает, не пойму от чего зависит.

Вот тут тоже не пойму почему не варпает. На мой нубо-взгляд всё правильно, но бот ничего не делает и даже не пишет что ошибка. Я это впихал сразу после предыдущего макроса

##Варпаем в москву##
automacro warp {
pubm /мск|моск|msk|mosk/i,10
inventory "Blue Gemstone" > 0
run-once 1
call {
$guild = null
$warp = 1
$x = @eval($::char->{pos}{x})
$y = @eval($::char->{pos}{y})
do sl 27 @eval($x + @rand(-1, -1)) @eval($y + @rand(0, 0))
pause 2
do warp $warp
pause 5
release warp
}
}

Кстати, как сделать чтобы прист варпал не одного игрока а какой-то список игроков? Или лучше игроков с содержанием допустим буквы "a" грубо говоря


Ок. я разобрался


player /а/[i]


а если список игроков то вот так:

player "игрок1|игрок2|игрок50"

4epT
05.02.2008, 19:14
макросы у тебя не работают потому, что одинаковое имя у них.
тут i нужно писать без скобок (если ты конечно используешь это со смыслом): player /а/[i]
так не правельно: player "игрок1|игрок2|игрок50"

список игроков можно использовать, тока если макрос срабатывает на фразу.. или ждать пока я выложу ссылку на сборку в которой есть новый макро плагин (в нём есть новое условие eval ;))

FIRE4ell
22.02.2008, 03:15
######## Main configuration ########

automacro warp {
pubm /варп|порт|dfhg|gjhn/i,10
inventory "Blue Gemstone" > 0
run-once 1
call {
$guild =
Player = херасима
$warp = 2
$i = @player ($.lastpub)
if (@eval($::char->{sitting}) = 1) goto stand
$g = @eval (exists $::players{$::playersID[$i]}->{guild} ? $::players{$::playersID[$i]}->{guild}{name} : 'null')
if (@eval($::char->{sitting}) = 1) goto stand
release warp
stop
:ok
if (@eval($::char->{sitting}) = 1) goto stand
do warp $warp
:stand
$x = @eval($::char->{pos}{x})
$y = @eval($::char->{pos}{y})
do warp $warp
pause 5
do warp $warp
pause 5
release warp
}
Вот мой конфиг мой прист не в моей гильдии я бы хотел чтобы при слова варп он варпала моего чара,или чтото я не так сделал или обьясняте мне пожалуйста!!!!! черт не суди строга я новичек)) и как сохранить в этом формате который ты сказал?

vitt
24.02.2008, 22:47
Вот что я отсавил всвоем конфиге и все удалил,но почему при...
ЫЫЫ 5 баллов!!!:)):)):))
Советую тебе почитать темы в этом разделе:
http://ragbot.ru/forum/forumdisplay.php?f=21

Если кратко, то в конфиге удалять ничего не надо, это надо пихать в файл macros.txt...

FIRE4ell
26.02.2008, 08:25
))а в принцыпе если все это в макрос написан правильно?)спасиба за ответ)

Healper
27.03.2008, 23:34
Вот так работает, но только один раз. Второй раз он не стал открывать варп :(

имхо остальные он у тебя пытается открыть под себя

4epT
28.03.2008, 13:15
FIRE4ell, тебе бы почитать темку с раздела МИНИ ЧАВО про макросы.. ты макрос вставил в конфиг, а нужно в отдельный файл, про УТФ ищи!

Духи
15.04.2008, 22:24
1) Подскажите пожалустка, как сделать, чтобы прист открывал сразу 3 варпа
2) Возможно сделать так, чтобы при слове "излуд" он открывал варп в излуд, а при слове "пронта" он открывал пронту. То есть что бы он по словал распознавал куда вам варп открыть. Если возможно, то прошу напишите как это сделать.

Заранее спасибо.

Духи
16.04.2008, 12:30
Ребята, тут столько смыслящих в этих делах людей, неужели это не возможно осуществить? =-o

masterspirta
16.04.2008, 13:01
протестите
automacro warp {
pubm /<название города(слово на которое он туды будет варповать)>/i,10
inventory "Blue Gemstone" > 0
run-once 1
call {
$i = 0
if (@eval($::char->{sitting}) = 1) goto stand
do stand
:stand
while ($i <= <количество варпов>) as exampleloop
$x = @eval($::char->{pos}{x})
$y = @eval($::char->{pos}{y})
do sl 27 @eval($x + @rand(-5, 5)) @eval($y + @rand(2, 7))
pause 2
do warp <номер варпа >
$i++
end exampleloop
pause 5
release warp
}
}

Духи
16.04.2008, 17:34
Спасибо, работает, НО что с макросом в 1 посте, что в макросе в посте №37 у меня выдаёт такую ошибку : [macro] tempMacro0 error: error in 1: either '@eval($::char->{sitting})' or '1' has failed
От неё я избавился , удалив в макросе эти строки:
if (@eval($::char->{sitting}) = 1) goto stand
do stand
:stand

А Можно ещё придумать, чтобы бот мог открывать разные варпы, соответственно на разные слова?

masterspirta
16.04.2008, 18:00
А я как тебе сделал?
или не можеш копи пас 1-3 раза сделать?*bravo*

Лана даю подробное описание, делаешь один раз копи и 3 раза паст....
Потом в каждом отдельном случии изменяешь :
automacro warp {
pubm /<название города(слово на которое он туды будет варповать)>/i,10
inventory "Blue Gemstone" > 0
run-once 1
call {
$i = 0
if (@eval($::char->{sitting}) = 1) goto stand
do stand
:stand
while ($i <= <количество варпов>) as exampleloop
$x = @eval($::char->{pos}{x})
$y = @eval($::char->{pos}{y})
do sl 27 @eval($x + @rand(-5, 5)) @eval($y + @rand(2, 7))
pause 2
do warp <номер варпа >
$i++
end exampleloop
pause 5
release warp
}
}

Духи
16.04.2008, 19:38
Нее, я то могу, НО :stop:
Когда я пробовал на макросе, который в после №1, то у меня не работало, он распознавал только последний макрос :(

Сяс попробую на этом ;)

Духи
16.04.2008, 19:57
Большое спасибо, всё работает.
Понял свою ошибку, я не поменял вот тут: automacro warp { :-[

angino4ka
11.06.2008, 16:47
[macro] tempMacro0 error: error in 9: either '@eval($::char->{sitting})' or '1' has failed
the line number may be incorrect if you called a sub-macro.

пишет ошибка как заходит и все( ору варп итд не хочет( и еще он сидит если можно как то настроить сразу на 3 варпа я примена понила как . что тут непрвелно?


automacro warp {
pubm /варп|порт|dfhg|gjhn/i,10
inventory "Blue Gemstone" > 0
run-once 1
call {
$guild = InXocSigno
$warp = 2
$i = @player ($.lastpub)
if ($id = -1) goto stop
$g = @eval (exists $::players{$::playersID[$i]}->{guild} ? $::players{$::playersID[$i]}->{guild}{name} : 'null')
if ($g ~ $guild) goto ok
release warp
stop
:ok
if (@eval($::char->{sitting}) = 1) goto stand
do stand
:stand
$x = @eval($::char->{pos}{x})
$y = @eval($::char->{pos}{y})
do sl 27 @eval($x + @rand(-5, 5)) @eval($y + @rand(2, 7))
pause 2
do warp $warp
pause 5
release warp
}
}

macro] automacro warp triggered.
[macro] tempMacro0 error: error in 0: unrecognized assignment
the line number may be incorrect if you called a sub-macro.
You are sitting.
теперь вот что пишет

Master
08.07.2008, 18:54
изначальный макрос у мя щас вот в таком виде

automacro warp {
pubm /варп|порт|dfhg|gjhn/i,10
inventory "Blue Gemstone" > 0
run-once 1
call {
# $guild = null
$warp = 2
# $i = @player ($.lastpub)
# if ($id = -1) goto stop
# $g = @eval (exists $::players{$::playersID[$i]}->{guild} ? $::players{$::playersID[$i]}->{guild}{name} : 'null')
# if ($g ~ $guild) goto ok
# release warp
# stop
# :ok
if (@eval($::char->{sitting}) = 1) goto stand
do stand
:stand
$x = @eval($::char->{pos}{x})


$y = @eval($::char->{pos}{y})
do sl 27 @eval($x + @rand(-5, 5)) @eval($y + @rand(2, 7))
pause 2
do warp $warp
pause 5
release warp
}
}
Работает отлично, НО хотелось бы дополнить его, чтобы бот открывал варп не только на слово варп в общак но и на слово в приват а так же на какой нибудь смайлик, причем чтобы работали одновременно несколько условий на которые от открывает варп.

И еще, как добавить задержку 1 или 2 секунды перед тем как бот откроет варп?

4epT
08.07.2008, 19:31
Master, а кто тебе мешает макрос погрузить в отдельное тело и написать несколько АМ с разными условиями??

Master
08.07.2008, 19:34
4epT, это как? подскажи плиз лучше как написать я нешарю в таких языках и к тому же совершенно незнаю операторы.

Как написать реакцию на приват и на смайлик?

ЗЫ. с приватом получилось через pm а вот как на смайлик сделать так и недопер:(

MaKpo_MaH4
08.07.2008, 23:21
вот как на смайлик сделать так и недопер
пишем-с АМ

automacro warpsmile {
console /*<смайлик можно посмотреть через кору>*/
call portal
}
в портал выцепляем тело макроса
macro portal {
...
... <тело>
...
release warpsmile(ну или другое название АМ)
}

я нешарю в таких языках и к тому же совершенно незнаю операторы
а гайды для кого 4epT копипастил?

4epT
09.07.2008, 00:09
что значит копипастил••••••=-o

Lucifer58
11.09.2008, 15:54
почемуто неработает макрос вот что пишет:
[dist=7.1] фрося (0): варп
[macro] automacro warp triggered.
Syntax error in function 'sl' (Use Skill on Location)
Usage: sl <skill #> <x> <y> [level]
You didn't cast warp portal.

бот OpenKore_206SVN6462
помогите пожалусто

HukuLLI
20.11.2008, 18:33
Ну это или скилла нету или нельзя тут его кастовать))

Сусяка
24.05.2009, 15:57
[macro] tempMacro2 error: error in 1: either '@eval($::char->{sitting})' or '1' has failed
вот эта ошибка уже бесит)) ни как немогу с ней разобратцо

4epT
25.05.2009, 07:53
удали тогда вот этот кусок:
if (@eval($::char->{sitting}) = 1) goto stand
do stand
:stand

Сусяка
25.05.2009, 13:03
опаньки) спасибо) все пашет)