Во первых, Mirage - ты не прав. Такого рода универсальные функции очень даже полезные для скриптов. Я сам регулярно использую функции вроде той что пишет автор. Т.к. в будущем - если вдруг какая проблема - ты сразу знаешь где её искать. Плюс к этому, если тебе нужна еще какая-то дополнительная проверка - нужно править только одно место а не 40+ функций которые делают то-же самое.
Во вторых, насчёт самой проблемы. Я бы сделал функцию именно как предложил Mirage. Правда у него ошибка в скрипте была, вот исправленная версия:
Code: Select all
#############################
sub gh()
If (NOT (UO.Dead())) Then
castBook('Greater Heal',11,'self',a,b,c,d)
Endif
Endsub
##############################
Sub castBook(Spell,ManaNeed,Target,a,b,c,d)
Var i
DIM Text[8]
Text[0] = 'гарлика'
Text[1] = 'найтшайда'
Text[2] = 'гинсенга'
Text[3] = 'блэкерла'
Text[4] = 'блудмоса'
Text[5] = 'спайдкрсилка'
Text[6] = 'мандрэйка'
Text[7] = 'сульфураш'
DIM Vars[8]
Vars[0] = UO.GA
Vars[1] = UO.NS
Vars[2] = UO.GS
Vars[3] = UO.BP
Vars[4] = UO.BM
Vars[5] = UO.SS
Vars[6] = UO.MA
Vars[7] = UO.SA
var status = 1
for i=0 to 7
if (Vars[i] == a) OR (Vars[i] == b) OR (Vars[i] == c) OR (Vars[i] == d) then
if UO.Count(Vars[i])==0 then
uo.print('Нет '+'Text[i]')
status = 0
Endif
endif
next
if (status == 0) then
return
endif
If UO.Mana<ManaNeed then
UO.Print("Маны нет лол!")
drink('тотлов маны','0x0F08')
wait(100)
Endif
UO.Cast(Spell,Target)
Endsub
Вот так будет и нормально проверять реги, и выводить все которых не хватает.
Не проверял код, нет игры. Но вероятно должно работать (чтобы точно работал - запускай в новолуние).