PDA

Просмотр полной версии : Макрос: дух для всех классов (Soul Linker)


Pikavel
01.11.2007, 04:38
хочется поставить суллинкера, который бы по просьбе согильдийца давал ему линк на его профессию, например на сообщение в гильдчате "линк" :) (естественно тому кто в зоне досягаемости)

поискал на форуме - не нашел, может плохо искал.. помогите плиз

4epT
01.11.2007, 12:57
должно получиться что-то типо того:
automacro spirit {
pubm "линк"
call buff
run-once 1
}
macro buff {
$id = @player ($.lastpub)
if ($id = -1) goto stop
$g = @eval (exists $::players{$::playersID[$id]}->{guild} ? $::players{$::playersID[$id]}->{guild}{name} : 'null')
$guild = гилда1, гилда2
if ($g ~ $guild) goto ok
stop
:ok
$jobID = @eval ($::players{$::playersID[$id]}->{jobID})
$spirit = 4010,4011,4013,4019
if ($jobID ~ $spirit) goto yes
goto stop
:yes
if ($jobID = 7) goto knight
if ($jobID = 13) goto knight
if ($jobID = 4008) goto knight
if ($jobID = 4014) goto knight
if ($jobID = 12) goto assassin
if ($jobID = 4013) goto assassin
if ($jobID = 10) goto smith
if ($jobID = 4011) goto smith
if ($jobID = 14) goto paladin
if ($jobID = 21) goto paladin
if ($jobID = 4015) goto paladin
if ($jobID = 4022) goto paladin
if ($jobID = 4012) goto sniper
if ($jobID = 11) goto sniper
if ($jobID = 16) goto professor
if ($jobID = 4017) goto professor
if ($jobID = 8) goto priest
if ($jobID = 4009) goto priest
if ($jobID = 15) goto champion
if ($jobID = 4016) goto champion
if ($jobID = 4010) goto wizard
if ($jobID = 4018) goto stalker
if ($jobID = 18) goto creator
if ($jobID = 4019) goto creator
if ($jobID = 4020) goto clown
if ($jobID = 4021) goto clown
if ($jobID = 19) goto clown
if ($jobID = 20) goto clown
if ($jobID = 4047) goto star
if ($jobID = 4049) goto soul
if ($jobID = 23) goto snoob
:knight
do sp 452 $id
goto stop
:assassin
do sp 457 $id
goto stop
:smith
do sp 458 $id
goto stop
:paladin
do sp 450 $id
goto stop
:sniper
do sp 460 $id
goto stop
:professor
do sp 449 $id
goto stop
:priest
do sp 454 $id
goto stop
:champion
do sp 447 $id
goto stop
:wizard
do sp 453 $id
goto stop
:stalker
do sp 456 $id
goto stop
:creator
do sp 445 $id
goto stop
:clown
do sp 455 $id
goto stop
:star
do sp 448 $id
goto stop
:soul
do sp 461 $id
goto stop
:snoob
do sp 451 $id
:stop
release spirit
}

$guild = гилда1, гилда2 <-- сюда вписываем имя гильдий которым хотим каст давать.
$spirit = 4010,4011,4013,4019 <- это профы для которых у линкера прокачен "Дух". Расшифровку можно найти в файле src\Globals.pm

Внимание, т.к в макросе используются русские слова (линк), то файл macros.txt необходимо сохранить в кодировке UTF-8 (http://ragbot.ru/forum/mini-chavo/597-gajd-po-macro-plugin-5.html#post11548)

Всё начиналось от сюда:
[Question] Soul Linker Spirits > 1 Script for all Classes (http://bibian.ath.cx/openkore/viewtopic.php?t=28708&start=0&postdays=0&postorder=asc&highlight=)

Духи
27.11.2007, 15:23
4epT как ты и говорил, на Kore версии 2.*.* данный макрос не работает :(
Можешь помочь с данной проблемой? У меня Линк с душами: убийцы, алхимика, мудреца и волшебника

Заранее благодарен

4epT
27.11.2007, 22:01
Духи, а какую ошибку выдаёт? на 2.0.5 вроде должно пахать..

Духи
27.11.2007, 23:41
Извеняюсь за своё так сказать "нубство", а где я могу ушидеть эту ошибку?
Вот мои дествия:
1. Установил Kore 2.0.5
2. Открыл файл Control\macros.txt
3. Копирую макрос
4. Закрываю, сохраняю как... с кодировкой utf-8
5. Запускаю бота и пишу ему в Общий чат, в приват, а он ни слухом и не духом :) (во завернул)

Ещё одно, Медиум у меня и персонажи которые просят Линк находятся в разных гильдиях.

Вот такой у меня расклад. Пожалуйста помогите найти ошибки и недочёты.
Заранее Благодарен.

4epT
28.11.2007, 01:09
Духи, тот чар, который просит каста он находится в гилде "Rеvolution"?

ЗЫ: для каста нужно писать в общий чат слово "линк" и ничего другого.

Если не катит, то попробуй заменить строчку на:
pubm /линк/

Духи
28.11.2007, 19:59
4epT вот что за ошибку пишет:
"[dist=2.2] СкороВаркин (0): линк
[macro] automacro spirit triggered.
[macro] buff error: error in 7: @eval ($::players{$::playersID[$i]}->{jobID}) failed
the line number may be incorrect if you called a sub-macro."

4epT
28.11.2007, 21:33
эгей, чувак, найди строчку:
$jobID = @eval ($::players{$::playersID[$i]}->{jobID})

и допиши буковку d:
$jobID = @eval ($::players{$::playersID[$id]}->{jobID})

Очепяточка

Духи
28.11.2007, 23:58
Спасибо 4epT

Теперь пишет вот это и всё равно ничего не делает :(

"[macro] automacro spirit triggered."

4epT
29.11.2007, 13:41
ну и отлично, значит макрос работает :) ищи где он у тебя зашивается,
советую почитать гайд по макросам и в это тмакрос напихать метки, типо:

if ($g ~ $guild) goto ok
log g ~ guild
stop
:ok
log ok

и посмотри на каком этапе он у тебя зашивается

344556
20.12.2007, 16:37
а некто не подскажит можно ли тут за место гильды писать ники или персов на которых накладывать линк после слова "линк" в общем чате как я понял это записывается в этой строчке $id = @player ($.lastpub)
тока что тут стирать я так и не понял подскажите плиз....

4epT
21.12.2007, 04:13
в смысле "писать ники или персов на которых накладывать линк" ??

344556, ну попробуй так:

1. замени строчку строчку строчку "$g = @eval (exists $..." на "$g = $.lastpub"
2. тут пиши ники друзей (советую сначало написать одного друга, если заработает, то писать остальных) "$guild = друг1, друг2"

344556
25.12.2007, 13:34
[macro] automacro spirit triggered.
[macro][log] ok ;первая метка
[macro][log] yes;вторая метка
Syntax error in function 'sp' (Use Skill on Player)
Usage: sp <skill #> <player #> [level] ;как я понял не праваельно прописано
количество сп ,изменил:
:smith
do sp 460 $.i
goto stop
но каста на сб всеравно нет так же прописывал вместо smith , Blacksmith таже самая ошибка

4epT
26.12.2007, 02:24
344556, скорее всего тут у тя ошибка в имени игрока который каст просит.. иногда бывает что кора хренова его определяет..

ты бы почитал в консольных командах, что действительно значит команда sp, и тогда бы ты не писал бы: "количество сп ,изменил"

в начале макроса впиндюрь:
log lastpub = $.lastpub
log id = $id

344556
26.12.2007, 17:43
[macro] automacro spirit triggered.
[macro][log] lastpub = крот
[macro][log] id =
[macro][log] ok
[macro][log] yes
Syntax error in function 'sp' (Use Skill on Player)
Usage: sp <skill #> <player #> [level]
всеравно не хочет работать и выдает туже ошибку может еще чем поможеш:-[

Quezacotl
27.12.2007, 02:19
Точно такаяже была когда то проблема,смог пройти,но там появилась еще одна трабла............
Вообщем вернулся к:
partySkill
notPartyOnly 1
поставил дистанцию,и тайм аут,на малых серверах это лучше чем просить линк в чаты...........

4epT
27.12.2007, 03:38
344556, лучше бы строчку "log id = $id" писать после: "$id = @player ($.lastpub)"

Quezacotl, ты напиши полностью что в конфиг запихал!

344556
27.12.2007, 23:40
control\macros.txt: ignoring 'log lastpub = $.lastpub' (munch, munch, unknown automacro keyword)
control\macros.txt: ignoring 'log id = $id' (munch, munch, unknown automacro keyword)
пишет при загрузки...
[macro] automacro spirit triggered.
[macro][log] lastpub = крот
[macro][log] id = 2
[macro][log] ok
[macro][log] yes
Syntax error in function 'sp' (Use Skill on Player)
Usage: sp <skill #> <player #> [level]
суть проблеммы не изменил хотя как я понял и не должна была....ну что это можно както исправить?:-[

4epT
28.12.2007, 20:10
control\macros.txt: ignoring 'log lastpub = $.lastpub' (munch, munch, unknown automacro keyword)
control\macros.txt: ignoring 'log id = $id' (munch, munch, unknown automacro keyword)

это означfет, что ты строчки "log lastpub = $.lastpub" и "log id = $id" поместил в тело автомакроса, а это нужно в макрос запихать

...

блин ну конешно же у тя написано "do sp 460 $.i"
что такое $.i ?? Херня это какая-то!

пиши: do sp 460 $id

кстати 460 - это обкаст ханта, а не БСа!


кароче это ещё один баг, исправил (http://ragbot.ru/forum/showpost.php?p=11974&postcount=2). Надаж было такой касяк выложить..

ironmind
25.03.2008, 23:27
И снова я удивлён.... Такая ошибка и никто не заметил или лень было хз.... Линк на линкера это sp 461 а не 448 а то написанно что на линкера и стар гладиатора один и тот же линк....

4epT
26.03.2008, 01:07
ironmind, сенк, исправил ;) заодно ещё раз проверил..остальные цифры точно соответствуют профам

ironmind
14.04.2008, 02:06
Что то у меня приста не линкует, пишет вот что:
Syntax error in function 'sp' (Use Skill on Player)
Usage: sp <skill #> <player #> [level]


Спс за помощь заранее

Constantin
06.05.2008, 19:04
Люди а мона сделать так, чтобы линк кастовал спирит не по команде "линк" в чат а проста когда видит чара, каторый находиться в той гильде каторая прописана в макросе соул линкера?

4epT
06.05.2008, 19:20
Constantin, можно, а кто мешает?? Вот схема:

partySkill *** {
lvl 5
target Ник
target_whenStatusInactive
notPartyOnly 1
}

Constantin
06.05.2008, 22:53
так это только на 1 чара будет делать спирит или на всех кто в ги?

я проста предпологал что можна вот в шапке начального макроса, вот этого:
automacro spirit {
pubm "линк"
call buff
run-once 1
}
macro buff {
$id = @player ($.lastpub)
if ($id = -1) goto stop
$g = @eval (exists $::players{$::playersID[$id]}->{guild} ? $::players{$::playersID[$id]}->{guild}{name} : 'null')
$guild = гилда1, гилда2
if ($g ~ $guild) goto ok
место pubm "линк" вписать команду что при видимости чара из прописаной ги сразу начать кастовать то что далее в макросе прописано.
Это вообще реально?

4epT
07.05.2008, 00:09
Constantin, ты хочешь чтобы макрос срабатывал на каждого игрока которого он вообще встретит??
Ну попробуй замени условие "pm" на:
player /.*/, 10

Constantin
07.05.2008, 14:51
да на каждого, но ток из гильдии каторая у него прописана.
да и кстати если нуна так была сделать pubm "player /.*/, 10" то эт не пашет и проста без pumb тож)

4epT
07.05.2008, 18:15
pubm "player /.*/, 10" то эт не пашет
так ты фигню-то не пиши такую! тут условие написано не правельно!

Guyver
07.05.2008, 18:21
Макрос работает, спасибо 4epT, но есть маленькая проблемка, даже тестил, id персов ники которых с пробелами не хочет определять поэтому не даёт линк, это баг самой коры или чтото гдето надо прописать?

4epT
07.05.2008, 20:48
скорее всего коры :(

Guyver
07.05.2008, 21:26
действительно, поставил кору 2.0.6 всё отлично работает, спасибо*beer*

sliim
10.07.2008, 23:08
а что прописать нада чтобы каманды не в публичный чат были pubm, в в приват?

alex600
11.07.2008, 04:37
c <сообщ> - общий чат
g <сообщ> - гильдчат
pm <player> <сообщ> - в приват

ЗЫ. мануалы для кого писаны••••••••

4epT
13.07.2008, 00:31
alex600, он вообще то про макросы..

читайте гайд по макросам сударь

lol2
03.01.2009, 22:19
у мня макрос неработает пишет
[macro] buff error: error in 10: cannot find label stop

из за чего это может быть?

jjozzy
28.01.2009, 22:13
А не подскажите, как выполнить похожую проверку, но только с членами партии?
Т.е. давать линк есть попросил только кто-то из партии бота

4epT
28.01.2009, 23:54
а ты попробуй "guild" заменить на "party"

Добавлено через 46 секунд
lol2, у тебя похоже старый бот?

jjozzy
29.01.2009, 21:33
а ты попробуй "guild" заменить на "party"

Пробовал... но каждый раз @eval возвращает 'null', Хотя персонаж и в партии.

4epT
30.01.2009, 00:06
эй товарищи, а чё мы паримся на счёт партии?? поменяйте условие pubm на party

jjozzy
30.01.2009, 10:04
эй товарищи, а чё мы паримся на счёт партии?? поменяйте условие pubm на party

=) Тоже не совсем мой вариант. У меня автомакра срабатывает когда сопартиец машет влажком. Ладно, попробую сам раскопать, если что выйдет - поделюсь.

kill_man
13.02.2009, 16:41
automacro soul {
guild "z"
call buff
run-once 1
}

macro buff {
$id = @player ($.lastguild)
$jobID = @eval ($::players{$::playersID[$id]}->{jobID})
$spirit = 4008,4010,4011,4012,4013,4015,4016,4017,4018,4019
if ($jobID ~ $spirit) goto yes
goto stop
:yes
if ($jobID = 4008) goto LordKnight
if ($jobID = 4010) goto HighWizard
if ($jobID = 4011) goto Whitesmith
if ($jobID = 4012) goto Sniper
if ($jobID = 4013) goto AssassinCross
if ($jobID = 4015) goto Paladin
if ($jobID = 4016) goto Champion
if ($jobID = 4017) goto Professor
if ($jobID = 4018) goto Stalker
if ($jobID = 4019) goto Creator
:LordKnight
do sp 452 $.lastguild
goto stop
:HighWizard
do sp 453 $.lastguild
goto stop
:Whitesmith
do sp 458 $.lastguild
goto stop
:Sniper
do sp 460 $.lastguild
goto stop
:AssassinCross
do sp 457 $.lastguild
goto stop
:Paladin
do sp 450 $.lastguild
goto stop
:Champion
do sp 447 $.lastguild
goto stop
:Professor
do sp 449 $.lastguild
goto stop
:Stalker
do sp 456 $.lastguild
goto stop
:Creator
do sp 445 $.lastguild
goto stop
:stop
release soul
stop
}
:cool: в строке " $jobID = @eval ($::№players{$::№playersID[$id]}->{jobID})" знаки № стереть просто смайлы появляются =))

учимся работать с форумом:

http://savepic.ru/503176.png

NoLiMiT
18.09.2009, 19:56
Что у меня не так??
automacro spirit {
pubm "линк"
call buff
run-once 1
}
macro buff {
$id = @player ($.lastpub)
if ($id = -1) goto stop
$g = $.lastpub
$guild = Holy Templar
if ($g ~ $guild) goto ok
stop
:ok
$jobID = @eval ($::players{$::playersID[$id]}->{jobID})
$spirit = 4010,4011,4013,4019,4009
if ($jobID ~ $spirit) goto yes
goto stop
:yes
if ($jobID = 7) goto knight
if ($jobID = 13) goto knight
if ($jobID = 4008) goto knight
if ($jobID = 4014) goto knight
if ($jobID = 12) goto assassin
if ($jobID = 4013) goto assassin
if ($jobID = 10) goto smith
if ($jobID = 4011) goto smith
if ($jobID = 14) goto paladin
if ($jobID = 21) goto paladin
if ($jobID = 4015) goto paladin
if ($jobID = 4022) goto paladin
if ($jobID = 4012) goto sniper
if ($jobID = 11) goto sniper
if ($jobID = 16) goto professor
if ($jobID = 4017) goto professor
if ($jobID = 8) goto priest
if ($jobID = 4009) goto priest
if ($jobID = 15) goto champion
if ($jobID = 4016) goto champion
if ($jobID = 4010) goto wizard
if ($jobID = 4018) goto stalker
if ($jobID = 18) goto creator
if ($jobID = 4019) goto creator
if ($jobID = 4020) goto clown
if ($jobID = 4021) goto clown
if ($jobID = 19) goto clown
if ($jobID = 20) goto clown
if ($jobID = 4047) goto star
if ($jobID = 4049) goto soul
if ($jobID = 23) goto snoob
:knight
do sp 452 $id
goto stop
:assassin
do sp 457 $id
goto stop
:smith
do sp 458 $id
goto stop
:paladin
do sp 450 $id
goto stop
:sniper
do sp 460 $id
goto stop
:professor
do sp 449 $id
goto stop
:priest
do sp 454 $id
goto stop
:champion
do sp 447 $id
goto stop
:wizard
do sp 453 $id
goto stop
:stalker
do sp 456 $id
goto stop
:creator
do sp 445 $id
goto stop
:clown
do sp 455 $id
goto stop
:star
do sp 448 $id
goto stop
:soul
do sp 461 $id
goto stop
:snoob
do sp 451 $id
:stop
release spirit
}

после он выдеёт:
[macro] automacro spirit triggered.

4epT
19.09.2009, 07:52
это хорошо что оно тебе пишет! Значит АМ сработал.. что не так?

NoLiMiT
20.09.2009, 23:12
это хорошо что оно тебе пишет! Значит АМ сработал.. что не так?

всё после этого он нечего не пишет..... и действий ноль

4epT
20.09.2009, 23:57
почитай гайд про макросы и напихай в этот макрос строчки:
log проверка

и посмотри на каком этапе у тебя макрос затыкается

yayaya
25.09.2009, 13:38
automacro link {
pm "soul"
call {
$id = @player ($.lastpm)
if ($id < 0) stop
$jobID = @eval ($::players{$::playersID[$id]}->{jobID})
if ($jobID = 7) goto knight
if ($jobID = goto priest
if ($jobID = 9) goto wizard
if ($jobID = 10) goto smith
if ($jobID = 11) goto sniper
if ($jobID = 12) goto assassin
if ($jobID = 13) goto knight
if ($jobID = 14) goto paladin
if ($jobID = 15) goto champion
if ($jobID = 16) goto professor
if ($jobID = 17) goto stalker
if ($jobID = 1 goto creator
if ($jobID = 19) goto clown
if ($jobID = 20) goto clown
if ($jobID = 21) goto paladin
if ($jobID = 23) goto supernovice
if ($jobID = 400 goto knight
if ($jobID = 4009) goto priest
if ($jobID = 4010) goto wizard
if ($jobID = 4011) goto smith
if ($jobID = 4012) goto sniper
if ($jobID = 4013) goto assassin
if ($jobID = 4014) goto knight
if ($jobID = 4015) goto paladin
if ($jobID = 4016) goto champion
if ($jobID = 4017) goto professor
if ($jobID = 401 goto stalker
if ($jobID = 4019) goto creator
if ($jobID = 4020) goto clown
if ($jobID = 4021) goto clown
if ($jobID = 4022) goto paladin
if ($jobID = 4047) goto star
if ($jobID = 4049) goto soul
:creator
do sp 445 $id
stop
release link
:champion
do sp 447 $id
stop
release link
:star
do sp 448 $id
stop
release link
:professor
do sp 449 $id
stop
release link
:paladin
do sp 450 $id
stop
release link
:supernovice
do sp 451 $id
stop
release link
:knight
do sp 452 $id
stop
release link
:wizard
do sp 453 $id
stop
release link
:priest
do sp 454 $id
stop
release link
:clown
do sp 455 $id
stop
release link
:stalker
do sp 456 $id
stop
release link
:assassin
do sp 457 $id
stop
release link
:smith
do sp 458 $id
stop
release link
:sniper
do sp 460 $id
stop
release link
:soul
do sp 461 $id
stop
release link
}
}

в итоге когда бот получает пм "soul" [macro] automacro link triggered.
[macro] tempMacro0 error: error in 4: syntax error in if statement
при етом бот невыполняет своих обязательств,вобщем кто сталкивался помогите подсказками,искать сейчас времени нету.

trouble
25.09.2009, 20:58
я пропиcал так, вариант кнайта
automacro link {
pubm "link"
call {
$id = @player ($.lastpub)
if ($id < 0) stop
$jobID = @eval ($::players{$::playersID[$id]}->{jobID})
if ($jobID = 4008) goto LordKnight
:LordKnight
do sp 452 $id 5
goto stop

yayaya
26.09.2009, 00:46
а на кроса как зделать? джоб айди изменить?

trouble
26.09.2009, 13:07
if ($jobID = 4013) goto AssassinCross
:AssassinCross
do sp 457 $id 5
goto stop

poiu
27.09.2009, 18:28
вот такой макрос, всем линк даёт но профессору нехочет( что не так?

automacro link {
pm "-"
run-once 1
call linktime
}

macro linktime {
release link
$id = @player ($.lastpm)
$jobID = @eval ($::players{$::playersID[$id]}->{jobID})
if ($jobID = 7) goto knight
if ($jobID = 13) goto knight
if ($jobID = 4008) goto knight
if ($jobID = 4014) goto knight
if ($jobID = 12) goto assassin
if ($jobID = 4013) goto assassin
if ($jobID = 10) goto smith
if ($jobID = 4011) goto smith
if ($jobID = 14) goto paladin
if ($jobID = 21) goto paladin
if ($jobID = 4015) goto paladin
if ($jobID = 4022) goto paladin
if ($jobID = 4012) goto sniper
if ($jobID = 11) goto sniper
if ($jobID = 16) goto professor
if ($jobID = 4017) goto professor
if ($jobID = 8) goto priest
if ($jobID = 4009) goto priest
if ($jobID = 15) goto champion
if ($jobID = 4016) goto champion
if ($jobID = 4010) goto wizard
if ($jobID = 4018) goto stalker
if ($jobID = 18) goto creator
if ($jobID = 4019) goto creator
if ($jobID = 4020) goto clown
if ($jobID = 4021) goto clown
if ($jobID = 19) goto clown
if ($jobID = 20) goto clown
if ($jobID = 4047) goto star
if ($jobID = 4049) goto soul
if ($jobID = 23) goto snoob
:snoob
do sp 451 $.lastpm 5
stop
release link
:star
do sp 448 $.lastpm 5
stop
release link
:soul
do sp 448 $.lastpm 5
stop
release link
:knight
do sp 452 $.lastpm 5
stop
release link
:priest
do sp 454 $.lastpm 5
stop
release link
:wizard
do sp 453 $.lastpm 5
stop
release link
:smith
do sp 458 $.lastpm 5
stop
release link
:sniper
do sp 460 $.lastpm 5
stop
release link
:assassin
do sp 457 $.lastpm 5
stop
release link
:paladin
do sp 450 $.lastpm 5
stop
release link
:champion
do sp 447 $.lastpm 5
stop
release link
:professor
do sp 449 $.lastpm 5
stop
release link
:creator
do sp 445 $.lastpm 5
stop
release link
:clown
do sp 455 $.lastpm 5
stop
release link
:stalker
do sp 456 $.lastpm 5
stop
release link

}

yayaya
28.09.2009, 15:40
poiu,ОТКЛЮЧИ СМАЙЛЫ в тексте.

Добавлено через 10 минут
покачто из етой темы неодин макрос у меня неработает))

poiu
28.09.2009, 21:15
у мня мой макрос работает как я говорил, но только профессору недаёт

trouble
29.09.2009, 08:54
может у тебя имя профа из 2х слов?
попробуй не $lastpm, возьми $id или $lastmatch1
в этмоместе
:Professor
do sp 449 $.lastpm
goto stop

4epT
29.09.2009, 23:15
trouble, не забывай про регистр!

poiu
30.09.2009, 17:07
ага ник из 2 слов, попробую что ты предлагаеш потом отпишусь