Page 1 of 1
Елем и цвет
Posted: 2010-07-23 20:44:46
by Irina E
есть такоЙ скрипт
Code: Select all
sub checkcolor(obj)
var n, c
Dim color[14]
color[1]='0x09DA' ; vulcan
color[2]='0x0060' ; aqua
color[3]='0x0BA7' ; eldar
color[4]='0x09E6' ; elvin
color[5]='0x09B9' ; acid
color[6]='0x09D3' ; steel
color[7]='0x008F' ; sand rock
color[8]='0x09EC' ; blood crest
color[9]='0x09F0' ; gorgan
color[10]='0x010F' ; krynite
color[11]='0x09A4' ; crystaline
color[12]='0x0085' ; dragon
color[13]='0x08AF' ; plutonium
color[14]='0x0028' ; obsidian
c=uo.getcolor(obj)
for n=1 to 14
if c == color[n] then
return 1
endif
next
endsub
можна из этого скрипта зделать так чтобы при поевления елема этиХ цветов чтобы заеграла музика.
и как поставить в этот скрипт чтобы он проверял когда они есть в радиусе 3 таилов
Code: Select all
sub mining()
var mx, my, mz, i, j, f
mx = UO.GetX('self')
my = UO.GetY('self')
mz = UO.GetZ('self')
for i = mx-4 to mx+4
for j = my -4 to my+4
BEGIN:
UO.Print('Êîïàåì â êîîðäèíàòàõ: '+str(mx-i)+' '+str(my-j))
for f=1 to 10
if uo.count('0x0F39')==0 and uo.count('0x0F3A')==0 and uo.count('0x0E86')==0 and uo.count('0x0E85')==0 then
return
endif
InfoOre()
UO.DeleteJournal()
Tohide()
if uo.waiting() then
uo.canceltarget()
endif
UO.Waittargettile('1341', str(i), str(j), str(mz))
DigAhole(i,j,mz)
if uo.InJournal('OOPS') or uo.InJournal('attacking you') then
pwav()
endif
uo.findtype('0x19B7','0x0750','backpack') # Òèï è öâåò àéðîíà
uo.drophere('finditem')
uo.findtype('0x19B7','0x0193','backpack') # Òèï è öâåò àéðîíà
uo.drophere('finditem')
uo.findtype('0x19B7','0x0590','backpack') # Òèï è öâåò àéðîíà
uo.drophere('finditem')
uo.findtype('0x19B7','0x060A','backpack') # Òèï è öâåò àéðîíà
uo.drophere('finditem')
uo.findtype('0x19B7','0x0088','backpack') # Òèï è öâåò àéðîíà
uo.drophere('finditem')
uo.findtype('0x19B7','0x0488','backpack') # Òèï è öâåò àéðîíà
uo.drophere('finditem')
uo.findtype('0x19B7','0x0482','backpack') # Òèï è öâåò àéðîíà
uo.drophere('finditem')
uo.findtype('0x19B7','0x096B','backpack') # Òèï è öâåò àéðîíà
uo.drophere('finditem')
uo.findtype('0x19B7','0x0014','backpack') # Òèï è öâåò àéðîíà
uo.drophere('finditem')
if waitforore()==1 then
f=10
endif
next
if uo.journal(0)==uo.getname('self')+': You loosen some rocks but fail to find any useable ore.' then
wait(10000)
goto BEGIN
endif
end if
next
next
endsub
да и если можите зделаите вес, в этом скрипте копает все 4 таила вокруг себя и останавливаеца а мне надо чтобы он копал пока не набереца 600 веса и чтобы скрипт остановился
Re: Елем и цвет
Posted: 2010-07-25 00:42:51
by Mirage
1) этот скрипт сам по себе не запустится. Это функция которую надо запусакть из другово скрипта. Чтобы проигрывался звук можно сделать вот так:
Code: Select all
sub checkcolor(obj)
var n, c
Dim color[14]
color[1]='0x09DA' ; vulcan
color[2]='0x0060' ; aqua
color[3]='0x0BA7' ; eldar
color[4]='0x09E6' ; elvin
color[5]='0x09B9' ; acid
color[6]='0x09D3' ; steel
color[7]='0x008F' ; sand rock
color[8]='0x09EC' ; blood crest
color[9]='0x09F0' ; gorgan
color[10]='0x010F' ; krynite
color[11]='0x09A4' ; crystaline
color[12]='0x0085' ; dragon
color[13]='0x08AF' ; plutonium
color[14]='0x0028' ; obsidian
c=uo.getcolor(obj)
for n=1 to 14
if c == color[n] then
UO.Sound(100)
return 1
endif
next
endsub
или добавить вниз скрипта вот такой кусок а в самом скрипте вместо uo.sound прописать Gong(3)
Code: Select all
sub Gong(times)
VAR i
for i=1 to times
UO.Exec("playwav D:\Games\Ultima\YokoInjection\ALARM"); тут ВНИМАТЕЛЬНО укажи путь к файлу БЕЗ расширения
wait(500) ; time to play sample at once
next
end sub
2)
Code: Select all
sub mining()
var mx, my, mz, i, j, f
mx = UO.GetX('self')
my = UO.GetY('self')
mz = UO.GetZ('self')
repeat
for i = mx-4 to mx+4
for j = my -4 to my+4
If UO.Weight > 600 Then ; число = максимальному весу чара
UO.Print('Перегруз!')
return 0
endif
бла бла бла
next
next
If UO.Weight > MaxVes Then
UO.Print('Перегруз!')
return 0
endif
until UO.Dead()
endsub
3)где ты откопал такие скрипты? На форуме полно более вменяемых аналогов.
Re: Елем и цвет
Posted: 2010-07-25 17:30:07
by Irina E
Code: Select all
sub mining()
var mx, my, mz, i, j, f
mx = UO.GetX('self')
my = UO.GetY('self')
mz = UO.GetZ('self')
while UO.Weight <= (UO.STR * 4)
for i = mx-4 to mx+4
for j = my -4 to my+4
BEGIN:
UO.Print('Копаем в координатах: '+str(mx-i)+' '+str(my-j))
for f=1 to 10
if uo.count('0x0F39')==0 and uo.count('0x0F3A')==0 and uo.count('0x0E86')==0 and uo.count('0x0E85')==0 then
return
endif
InfoOre()
UO.DeleteJournal()
Tohide()
if uo.waiting() then
uo.canceltarget()
endif
UO.Waittargettile('1341', str(i), str(j), str(mz))
DigAhole(i,j,mz)
if uo.InJournal('OOPS') or uo.InJournal('attacking you') then
pwav()
endif
uo.findtype('0x19B7','0x0750','backpack') # Тип и цвет айрона
uo.drophere('finditem')
uo.findtype('0x19B7','0x0193','backpack') # Тип и цвет айрона
uo.drophere('finditem')
uo.findtype('0x19B7','0x0590','backpack') # Тип и цвет айрона
uo.drophere('finditem')
uo.findtype('0x19B7','0x060A','backpack') # Тип и цвет айрона
uo.drophere('finditem')
uo.findtype('0x19B7','0x0088','backpack') # Тип и цвет айрона
uo.drophere('finditem')
uo.findtype('0x19B7','0x0488','backpack') # Тип и цвет айрона
uo.drophere('finditem')
uo.findtype('0x19B7','0x0482','backpack') # Тип и цвет айрона
uo.drophere('finditem')
uo.findtype('0x19B7','0x096B','backpack') # Тип и цвет айрона
uo.drophere('finditem')
uo.findtype('0x19B7','0x0014','backpack') # Тип и цвет айрона
uo.drophere('finditem')
if waitforore()==1 then
f=10
endif
next
if uo.journal(0)==uo.getname('self')+': You loosen some rocks but fail to find any useable ore.' then
wait(10000)
goto BEGIN
endif
if checkelem()==1 then
return
endif
next
next
wend
endsub
я вот так зделал если у него вес уже 600 то он не улетает сразу а токо после того как выкапает все таилы.
а на щот цветов и музаки то я вот так зделал
Code: Select all
sub checkelem()
var n
var Elemental
Dim color[215]
color[1]='0x09DA' ; vulcan
color[2]='0x0060' ; aqua
color[3]='0x0BA7' ; eldar
color[4]='0x09E6' ; elvin
color[5]='0x09B9' ; acid
color[6]='0x09D3' ; steel
color[7]='0x008F' ; sand rock
color[8]='0x09EC' ; blood crest
color[9]='0x09F0' ; gorgan
color[10]='0x010F' ; krynite
color[11]='0x09A4' ; crystaline
color[12]='0x0085' ; dragon
color[13]='0x08AF' ; plutonium
color[14]='0x0028' ; obsidian
color[15]='0x0455' ; blakrock
for n=1 to 15
uo.set('finddistance','3')
uo.findtype('0x0010',color[n],'ground')
if uo.findcount() then
Elemental=uo.getserial('finditem')
uo.textopen()
uo.textprint(uo.getname(Elemental)+' @ '+MakeTime())
pwav()
uo.findtype('0x0010',-1,'ground')
end if
end sub
Re: Елем и цвет
Posted: 2010-07-26 15:37:01
by Mirage
скрипте не улетает потому что проверка на вес стоит вне цикла for next
вставь
Code: Select all
If UO.Weight > 600 Then ; число = максимальному весу чара
UO.Print('Перегруз!')
return 0
endif
перед первым next
цикл лучше делать до смерти.
Code: Select all
sub checkelem()
var n
var Elemental
Dim color[16]
color[1]='0x09DA' ; vulcan
color[2]='0x0060' ; aqua
color[3]='0x0BA7' ; eldar
color[4]='0x09E6' ; elvin
color[5]='0x09B9' ; acid
color[6]='0x09D3' ; steel
color[7]='0x008F' ; sand rock
color[8]='0x09EC' ; blood crest
color[9]='0x09F0' ; gorgan
color[10]='0x010F' ; krynite
color[11]='0x09A4' ; crystaline
color[12]='0x0085' ; dragon
color[13]='0x08AF' ; plutonium
color[14]='0x0028' ; obsidian
color[15]='0x0455' ; blakrock
uo.set('finddistance','3')
for n=1 to 15
uo.findtype('0x0010',color[n],'ground')
if uo.findcount() then
Elemental=uo.getserial('finditem')
uo.textopen()
uo.textprint(uo.getname(Elemental)+' @ '+MakeTime())
pwav()
end if
next
end sub
Чем тебя не устроил первый вариант?
Re: Елем и цвет
Posted: 2010-07-26 20:30:02
by Irina E
Code: Select all
sub mining()
var mx, my, mz, i, j, f
mx = UO.GetX('self')
my = UO.GetY('self')
mz = UO.GetZ('self')
while UO.Weight <= (UO.STR * 4)
for i = mx-4 to mx+4
for j = my -4 to my+4
BEGIN:
UO.Print('Копаем в координатах: '+str(mx-i)+' '+str(my-j))
for f=1 to 10
if uo.count('0x0F39')==0 and uo.count('0x0F3A')==0 and uo.count('0x0E86')==0 and uo.count('0x0E85')==0 then
return
endif
InfoOre()
UO.DeleteJournal()
Tohide()
if uo.waiting() then
uo.canceltarget()
endif
UO.Waittargettile('1341', str(i), str(j), str(mz))
DigAhole(i,j,mz)
if uo.InJournal('OOPS') or uo.InJournal('attacking you') then
pwav()
endif
uo.findtype('0x19B7','0x0750','backpack') # Тип и цвет айрона
uo.drophere('finditem')
uo.findtype('0x19B7','0x0193','backpack') # Тип и цвет айрона
uo.drophere('finditem')
uo.findtype('0x19B7','0x0590','backpack') # Тип и цвет айрона
uo.drophere('finditem')
uo.findtype('0x19B7','0x060A','backpack') # Тип и цвет айрона
uo.drophere('finditem')
uo.findtype('0x19B7','0x0088','backpack') # Тип и цвет айрона
uo.drophere('finditem')
uo.findtype('0x19B7','0x0488','backpack') # Тип и цвет айрона
uo.drophere('finditem')
uo.findtype('0x19B7','0x0482','backpack') # Тип и цвет айрона
uo.drophere('finditem')
uo.findtype('0x19B7','0x096B','backpack') # Тип и цвет айрона
uo.drophere('finditem')
uo.findtype('0x19B7','0x0014','backpack') # Тип и цвет айрона
uo.drophere('finditem')
if waitforore()==1 then
f=10
endif
next
if uo.journal(0)==uo.getname('self')+': You loosen some rocks but fail to find any useable ore.' then
wait(10000)
goto BEGIN
endif
if checkelem()==1 then
return
endif
If UO.Weight > 600 Then ; число = максимальному весу чара
UO.Print('Перегруз!')
return 0
endif
next
next
wend
endsub
так или как у теба в предедущем посте
Re: Елем и цвет
Posted: 2010-09-27 06:20:07
by Irina E
Mirage wrote:1) этот скрипт сам по себе не запустится. Это функция которую надо запусакть из другово скрипта. Чтобы проигрывался звук можно сделать вот так:
Code: Select all
sub checkcolor(obj)
var n, c
Dim color[14]
color[1]='0x09DA' ; vulcan
color[2]='0x0060' ; aqua
color[3]='0x0BA7' ; eldar
color[4]='0x09E6' ; elvin
color[5]='0x09B9' ; acid
color[6]='0x09D3' ; steel
color[7]='0x008F' ; sand rock
color[8]='0x09EC' ; blood crest
color[9]='0x09F0' ; gorgan
color[10]='0x010F' ; krynite
color[11]='0x09A4' ; crystaline
color[12]='0x0085' ; dragon
color[13]='0x08AF' ; plutonium
color[14]='0x0028' ; obsidian
c=uo.getcolor(obj)
for n=1 to 14
if c == color[n] then
UO.Sound(100)
return 1
endif
next
endsub
или добавить вниз скрипта вот такой кусок а в самом скрипте вместо uo.sound прописать Gong(3)
Code: Select all
sub Gong(times)
VAR i
for i=1 to times
UO.Exec("playwav D:\Games\Ultima\YokoInjection\ALARM"); тут ВНИМАТЕЛЬНО укажи путь к файлу БЕЗ расширения
wait(500) ; time to play sample at once
next
end sub
Почемута не хочет играть музыка при поевления елема каторый в списке
Re: Елем и цвет
Posted: 2010-09-27 09:40:43
by Mirage
файл должен быть с расширением wav,
файл должен лежать там где прописан путь (или поменять на свой)
Gong(число звуков) должно стоять после обнаружения элементаля.
Колонки должны быть включены

Re: Елем и цвет
Posted: 2010-09-27 10:58:14
by Irina E
Mirage wrote:файл должен быть с расширением wav,
файл должен лежать там где прописан путь (или поменять на свой)
Gong(число звуков) должно стоять после обнаружения элементаля.
Колонки должны быть включены

Вот на копку
Code: Select all
Sub mining()
var mx, my, mz, i, j, f
var Elemental
mx = UO.GetX('self')
my = UO.GetY('self')
mz = UO.GetZ('self')
# while UO.Weight <= (UO.STR * 2)
sbroska()
for i = mx-4 to mx+4
for j = my -4 to my+4
BEGIN:
UO.Print('Êîïàåì â êîîðäèíàòàõ: '+str(mx-i)+' '+str(my-j))
for f=1 to 10
if uo.count('0x0F39')==0 and uo.count('0x0F3A')==0 and uo.count('0x0E86')==0 and uo.count('0x0E85')==0 then
return
endif
InfoOre()
UO.DeleteJournal()
Tohide()
if uo.waiting() then
uo.canceltarget()
endif
UO.Waittargettile('1341', str(i), str(j), str(mz))
DigAhole(i,j,mz)
# uo.InJournal('OOPS') or uo.InJournal('attacking you') then
# checkelem3()
#endif
if waitforore()==1 then
f=10
endif
next
if uo.journal(0)==uo.getname('self')+': You loosen some rocks but fail to find any useable ore.' then
wait(10000)
goto BEGIN
endif
if checkelem()==1 then ; ВОТ ТУТ ОН ПРОВЕРЯИТ
return
endif
next
next
#wend
endsub
вот кусок которы обнаруЖает елем
Code: Select all
Sub checkelem()
var Elemental
uo.set('finddistance','3')
uo.findtype('0x0010',-1,'ground')
if uo.findcount() then
Elemental=uo.getserial('finditem')
if checkcolor(Elemental)==1 then
uo.textopen()
uo.textprint(uo.getname(Elemental)+' @ '+MakeTime())
else
uo.ignore(Elemental)
endif
end if
endsub
а это я взял тут каторый ты мне дал
Code: Select all
sub checkcolor(obj)
var n, c
Dim color[14]
color[1]='0x09DA' ; vulcan
color[2]='0x0060' ; aqua
color[3]='0x0BA7' ; eldar
color[4]='0x09E6' ; elvin
color[5]='0x09B9' ; acid
color[6]='0x09D3' ; steel
color[7]='0x008F' ; sand rock
color[8]='0x09EC' ; blood crest
color[9]='0x09F0' ; gorgan
color[10]='0x010F' ; krynite
color[11]='0x09A4' ; crystaline
color[12]='0x0085' ; dragon
color[13]='0x08AF' ; plutonium
color[14]='0x0028' ; obsidian
c=uo.getcolor(obj)
for n=1 to 14
if c == color[n] then
Gong(3)
return 1
endif
next
endsub
sub Gong(times)
VAR i
for i=1 to times
UO.Exec("playwav C:\FlyinOff.wav"); òóò ÂÍÈÌÀÒÅËÜÍÎ óêàæè ïóòü ê ôàéëó ÁÅÇ ðàñøèðåíèÿ
wait(500) ; time to play sample at once
next
end sub
Re: Елем и цвет
Posted: 2010-09-27 14:09:38
by Mirage
тестируй так:
1) запускаешь функцию main() ЕСЛИ трынкнет то
2) копаешь руками пока не вызовешь элементаля.
запускаешь функцию checkelem()
Должен трынкать файл C:\FlyinOff.wav
Code: Select all
sub main()
Gong(3)
endsub
sub checkelem()
var Elemental
uo.set('finddistance','3')
uo.findtype('0x0010',-1,'ground')
if uo.findcount() then
Elemental=uo.getserial('finditem')
if checkcolor(Elemental)==1 then
uo.textopen()
uo.textprint(uo.getname(Elemental)+' @ '+MakeTime())
Gong(3)
else
uo.ignore(Elemental)
endif
end if
endsub
sub checkcolor(obj)
var n, c
Dim color[14]
color[1]='0x09DA' ; vulcan
color[2]='0x0060' ; aqua
color[3]='0x0BA7' ; eldar
color[4]='0x09E6' ; elvin
color[5]='0x09B9' ; acid
color[6]='0x09D3' ; steel
color[7]='0x008F' ; sand rock
color[8]='0x09EC' ; blood crest
color[9]='0x09F0' ; gorgan
color[10]='0x010F' ; krynite
color[11]='0x09A4' ; crystaline
color[12]='0x0085' ; dragon
color[13]='0x08AF' ; plutonium
color[14]='0x0028' ; obsidian
c=uo.getcolor(obj)
for n=1 to 14
if c == color[n] then
return 1
endif
next
endsub
sub Gong(times)
VAR i
for i=1 to times
UO.Exec("playwav C:\FlyinOff.wav")
wait(500) ; time to play sample at once
next
end sub
Re: Елем и цвет
Posted: 2010-09-29 09:27:01
by Irina E
а можна зделать чтобы он один раз показал в тексте какой елем а не постояно
Re: Елем и цвет
Posted: 2010-09-29 10:07:20
by Mirage
uo.textclear()
Очищает текстовое окно, открытое иcпользованием Injection или командой textopen.
uo.textclose()
Закрывает текстовое окно, открытое использованием Injection или командой textopen.
перед или после uo.textopen() добавь нужную.
Re: Елем и цвет
Posted: 2010-09-29 19:48:05
by Irina E
да но если будет елем выхи то он будет постояно его открывать если закрывать текст
я хотел чтобы видеть какие елемы были а так если закрывать это тоже самое как и сечас а чистеть список я не хачу толку от текста
Re: Елем и цвет
Posted: 2010-09-30 12:41:46
by Mirage
если правильно тебя понял попробуй вот так.
Re: Елем и цвет
Posted: 2010-09-30 15:28:06
by Irina E
если я уберу else то он типа тока раз покажет мне какой елем или постоянно?
как это проверка происходит да пустим я копаю таил -4 +4 потом идет проверка на елема и потом копает в -4 +3 если есть елем то играет музыка и показывает текстом какой елем я выкопал.
а се час у меня при проверки постоянно показывает в тексте тот же елем каторы я выкопал и он так будет показывать до того пока он не исчезнит.
Re: Елем и цвет
Posted: 2010-10-01 07:55:05
by Mirage
Code: Select all
sub checkelem()
var Elemental
uo.set('finddistance','3') ;дистанция 3 тайла от игрока
uo.findtype('0x0010',-1,'ground') ;ищем тип на земле
if uo.findcount() then ;если нашли то
Elemental=uo.getserial('finditem') ;присваиваем константу
if checkcolor(Elemental)==1 then ;если цвет удовлетворяет поиску
uo.textopen() ;открываем тектовое окошко
uo.textprint(uo.getname(Elemental)+' @ '+MakeTime()) ;записываем дату
Gong(3) ;играем сигнал
else ;В ПРОТИВНОМ СЛУЧАЕ( ЕСЛИ НЕ СОВПАДАЕТ СО СПИСКОМ)
uo.ignore(Elemental) ;игнорируем элементаля
endif ;
end if
endsub
У тебя не игнорируется найденный элементаль. С каждым поиском он будет находиться записываться и сигналить. else лишнее.
Re: Елем и цвет
Posted: 2010-10-04 09:47:08
by Irina E
спс будем тестить
Re: Елем и цвет
Posted: 2010-10-06 20:15:54
by Irina E
Code: Select all
sub mining()
var mx, my, mz, i, j, f
mx = UO.GetX('self')
my = UO.GetY('self')
mz = UO.GetZ('self')
repeat
for i = mx-4 to mx+4
for j = my -4 to my+4
If UO.Weight > 600 Then ; число = максимальному весу чара
UO.Print('Перегруз!')
return 0
endif
бла бла бла
next
next
If UO.Weight > MaxVes Then
UO.Print('Перегруз!')
return 0
endif
until UO.Dead()
endsub
вот интересна какая проверка на вес отвечает за то чтобы скрипт останавился
Re: Елем и цвет
Posted: 2010-10-07 15:24:56
by Mirage
в твоем примере обе проверки отвечают
Если верхний кусок поместить ниже бла бла бла но перед next то будет хватать одной проверки.
Re: Елем и цвет
Posted: 2010-10-09 16:03:00
by Irina E
я почему спросил у меня в скриптке на копку есть кусок скрипта на выброс трэш руды после того как выкапал всё вокруг себя в радиусе 4 -4 то он выкидавает трэш руду я бы хотел поставить в проверки на вес выбрас трэш руды тоесть набрал 390 веса он выкидавает трэш руды так до того пока не наберёт вес 400 и потом улетает дамой
Code: Select all
sub mining()
var mx, my, mz, i, j, f
mx = UO.GetX('self')
my = UO.GetY('self')
mz = UO.GetZ('self')
repeat
for i = mx-4 to mx+4
for j = my -4 to my+4
If UO.Weight > 300 Then ; ÷èñëî = ìàêñèìàëüíîìó âåñó ÷àðà
UO.Print('Ïåðåãðóç!')
return 0
endif
UO.Print('Êîïàåì â êîîðäèíàòàõ: '+str(mx-i)+' '+str(my-j))
for f=1 to 10
if uo.count('0x0F39')==0 and uo.count('0x0F3A')==0 and uo.count('0x0E86')==0 and uo.count('0x0E85')==0 then
return
endif
InfoOre()
UO.DeleteJournal()
Tohide()
if uo.waiting() then
uo.canceltarget()
endif
UO.Waittargettile('1341', str(i), str(j), str(mz))
DigAhole(i,j,mz)
if waitforore()==1 then
f=10
endif
if flagpk==1 then
return
endif
if uo.injournal('You have been revealed') and flaginvis==1 then
flaginvis=0
invis()
return
endif
next
if uo.journal(0)==uo.getname('self')+': You loosen some rocks but fail to find any useable ore.' then
wait(10000)
endif
if checkelem()==1 then
return
endif
next
next
If UO.Weight > 300 Then
UO.Print('Ïåðåãðóç!')
return 0
endif
until UO.Dead()
endsub
вот это куда вставлять
или так зделать и вставлять после как выкапал руду с таила
Code: Select all
If UO.Weight > 300 Then
UO.Print('Ïåðåãðóç!')
sbroska()
endif