PDA

Просмотр полной версии : Обнуление $.paramN


RiiD
16.09.2009, 16:09
Пример макроса:


macro test {

log $.param1

}


При вызове макроса: macro test -- test
Работает нормально но если вызвать его еще раз только без параметров он все равно выдает слово. Как можно заставить его забыть этот параметр после окончания макроса?

Добавлено через 56 минут
Пробовал так

macro test {

if ($.param == 0) goto end
log $.param1
call test2 -- 0
:end

}

macro test2 {

log param1 o6HylLeH

}

Не работает. Через call параметры не передаются.

4epT
16.09.2009, 19:25
а оно зачем надо? можно примерчик?

RiiD
16.09.2009, 21:23
Например я часто пользуюсь таким макросом:

macro getitem {

$item = $.param1
if ($.param2 == ) goto start
$item = $item $.param2
if ($.param3 == ) goto start
$item = $item $.param3

:start

$i = 1
while ($i <= 10) as get
do cart get $item
$i++
end get

}

При вызове macro getitem -- Chain Mail [1]
все нормально но если после этого вызвать macro getitem -- Boots [1]
то идут лаги

4epT
16.09.2009, 22:38
если ты вручную каждый раз набираешь "macro getitem -- Chain Mail [1]"
то проще набирать:
cart get Chain Mail [1] 101
или не катит?

RiiD
16.09.2009, 22:42
так передается только один шмот а не 10
я работаю с большим количеством шмота и меня уже бесит вручную все перекидывать.

4epT
16.09.2009, 23:01
надо смотреть где заканчивает работу макрос в самом макро-плагине.. а там чёрт ногу сломит :)

тогда используй:
macro getitem {
if ($.param1 == "cm" ) goto cm
if ($.param1 == "b" ) goto b
log Неизвестный предмет: $.param1
stop
:cm
$item = Chain Mail [1]
:b
$item = Boots [1]
:end
$i = 1
while ($i <= 10) as get
do cart get $item
$i++
end get
}

так и проще запускать будет..
macro getitem -- cm
macro getitem -- b

хотя так тебе придётся все возможные итемы прописывать..

а ещё идея есть оставить макросы по твоей системе, но допустим если вешь состоит из 3 слов, то юзать макрос "getitem3", если из 2-х то - "getitem3".. и т.д.

а твои потребности файл итемконтрол не решает?? для чего ты достаёшь вещи из телеги?