Мда , спасибо за код к размышлению, но он как дремучий лес, чтобы понять не один час с мачете прорубаться нужно.Imibion писал(а):работающий вариант на заточку одежки.
написано под @storage.
кому надо - переделает под себя.
поддержку по нему не предоставляю.
[/size]Код: Выделить всё
########################################## ######## REFINE ARMOR ################## ########################################## .................... .................... ....................
Вот моя реализация заточки.
запускать так:
macro refine -- weapon_lvl weapon_name
например:
macro refine -- 1 Knife [1]
overrefine - контролирует количество переточки
Макрос точит оружие 1 и 2 лвл, для заточки оружия 3 лвл вставьте код или макрос вместо строки
#here write сod for getting ori
на свое усмотрение. Можно с кафры достать или купить у вендеров, кому как больше нравиться.
Если интересует точка шмота, то макрос нужо слегка доработать.
Мне пока дорого точить шмот и оружие 3 лвл макросом.

Есть вопрос!
вещь в макрос передается параметром
сейчас в макрос можно передать вещь с названием из 2 слов, это само имя вещи и количесво дырок.
Например для заточки Main Gauche [3] придется изменять макрос в строке
$itemname = $.param2 $.param3 $.Param4
Это можно исправить если знать команду возвращающую количество переданных параметров макросу. В описании макро плагина такой команды нет.
Код: Выделить всё
macro refine {
do move prt_in
$x0 = @rand (60,62)
$y0 = @rand (60,65)
$pos = $x0 $y0
$posrefiner = 63 60
$posseller = 56 68
$lvl = $.param1
$overrefine = 3
$maxrefine = @eval(8 - $lvl + $overrefine)
$itemname = $.param2 $.param3
$refineitem = $itemname
$talkresps = c r3 c r0 c c w1 r0 c
do move $pos
pause @rand (1,2)
$currentrefine = 0
if ($lvl > 2) goto ori
if ($lvl < 2 ) goto phra
$material = Emveretarcon
goto letsgo
:ori
$material = Oridecon
goto letsgo
:phra
$material = Phracon
:letsgo
while ($currentrefine < $maxrefine) as refiner
if (@invamount($refineitem) > 0) goto go
$refineitem = +@eval($currentrefine + 1) $itemname
$currentrefine++
goto next
:go
if ( @invamount($material) > 0 ) goto gogogo
if ($lvl > 3) goto getori
do talknpc $posseller c r@eval($lvl-1) c d10 w2 c n
goto gogogo
:getori
#here write сod for getting ori
goto gogogo
:gogogo
do eq $refineitem
do talknpc $posrefiner $talkresps
:next
end refiner
:end
}