Page 1 of 1

Моё скриптовое наследие.

Posted: 2006-12-01 02:09:44
by Destruction
Собственно нарыл у друга пачку своих скриптов, некоторые из них настолько старые, что не выдерживают никакой критики..

Буду вот потихоньку выкладывать, может кому пригодится.

Прокачка скилла Magery.

Code: Select all

; Функция для прокачки скилла Magery
; Все настройки описаны в скрипте
sub AdvancedMagery() 
	; Advanced magery script v1.0, (c) Destruction. 
	var i, spell = "Magic Arrow" ; спел который кастовать 
	var target = "self" ; куда прицеливаться - false если не требуется 
	var nmedit = true ; нужно ли медитировать? 
	var nheal = "0x0E21" ; тип бинтов или false, чтобы не лечиться 
	var b_ban = "0x0E20" ; тип кровавых бинтов 
	var water = "0x400524D2" ; water tub ID или false, чтобы не мыть бинты 
	var watertile = false ; tile type, tile x, tile y, tile z через зепятую или false чтобы не мыть 
	var bag = "0x40021A29" ; сумка откуда всё набирать или false 
	uo.useobject(bag) 
	checklag() 
	var nlen = 3 ; количество необходимых реагентов 
	DIM reagents[val(str(nlen))] 
	; реагенты 
	reagents[0] = "0x0F88" ; nightshade 
	reagents[1] = "0x0F7A" ; black pearls 
	reagents[2] = "0x0E21" ; bandages 
	while uo.skillval("Magery",1) < 1000 
		if bag then 
			for i=0 to nlen-1 
				GrabReag(reagents[i],bag) 
			next 
		endif 
		Cast(spell,target) 
		if nmedit then 
			Medit() 
		endif 
		if nheal then 
			Heal(nheal) 
		endif 
		if water then 
			CleanBTub(water,b_ban) 
		endif 
		if watertile then 
			CleantBTile(water,b_ban) 
		endif 
	wend 
endsub 

; Функция - добирает реагент r из сумки b до количества 30 шт.
Sub GrabReag(r,b) 
	uo.findtype(r,"-1","backpack") 
	var q = uo.getQuantity("finditem") 
	if q < 30 then 
		uo.findtype(r,"-1",b) 
		uo.moveitem("finditem",str(30-q),"backpack") 
	endif 
endsub 

; Функция - моет бинты в воде, t - координаты тайла, b - тип грязных бинтов
Sub CleantBTile(t,b) 
	while uo.count() 
		uo.exec("waittargettile "+t) 
		uo.usetype(b) 
		checklag() 
		wait(50) 
	wend 
endsub 

; Функция - моет бинты в тазике. w - тазик, b - тип грязных бинтов
Sub CleanBTub(w,b) 
	while uo.count(b) 
		uo.waittargetobject(w) 
		uo.usetype(b) 
		checklag() 
		wait(50) 
	wend 
endsub 

; Лечит персонаж до максимального количества жизней. b - тип бинтов
Sub Heal(b) 
	while uo.getHP() < uo.str 
		uo.waittargetobject("self") 
		uo.usetype(b) 
		checklag() 
		wait(750) 
	wend 
endsub 

; Медитирует до достижения максимального количества маны
Sub Medit() 
	while uo.mana < uo.int 
		uo.useskill("Meditation") 
		wait(300) 
	wend 
endsub 

; Функция кастует спелл p1 на объект p2.
Sub Cast(p1, p2) 
	var mana = uo.mana 
	if p2 then 
		uo.waittargetobject(p2) 
	endif 
	uo.cast(p1) 
	var timer = uo.timer() 
	repeat 
		wait(100) 
	until uo.mana < mana || uo.timer()-30 > timer 
endsub
Сбивание кастов противников.

Code: Select all

; Функция сбивает касты противников
sub AntiMagic()
	var tar, cast = "In Nox|Vas Flam|In Sanct Ylem|Des Sanct|Por Ort Grav|In Jux Hur Ylem|An Ex Por|An Ort|Corp Por|Vas Ort Flam|Kal Vas Flam|Ort Sanct|Vas Corp Po|Ort Rel" ; слова, на которые следует реагировать
	deljournal(cast)
	repeat
		tar = uo.injournal(cast)
		if tar then 
			if isCast(tar) then
				if not isFriend(tar) then
					killCast(tar)
				endif
			endif
			deljournal(cast)
		endif
		wait(100)
	until false
endsub

; Функция кидает Magic Arrow в объект tar
Sub killCast(tar)
	var mana = uo.mana
	uo.cast('Magic Arrow',uo.journalserial(tar-1))
	while mana==uo.mana
		wait(100)
	wend
endsub

; Функция проверяет объект tar на дружелюбность.
Sub isFriend(tar)
	var i
	DIM friends[1] ; массив с указание ID друзей
	friends[0] = uo.getSerial()
	if uo.GetNotoriety(tar)=="1" then
		return true
	endif
	for i=0 to 1
		if tar == friends[i] then
			return true
		endif
	next
	return false
endsub

; Функция - проверяет действительно ли строка в журнале tar вызвана чьим-либо кастом.
Sub isCast(tar)
	if uo.journalcolor(tar-1) == "0x03B2" then
		return true
	endif
	return false
endsub
Лут трупов.

Code: Select all

; Собственно непосредственно функция лута, описание внутри функции. Лутит из трупов то, что НЕ указано в списке.
sub looter() 
	var lc, lf, i, j, summ, ig, sp, st, tt 
	var sp_len = 8#Для спец паков 
	var db_len = 130#Для игнора 
	var ct_len = 4#Для контейнеров 
	DIM cont[val(str(ct_len))] 
	cont[0] = '0x0E76'#Bag 
	cont[1] = '0x0E75'#Backpack
	cont[2] = '0x0E40'#Metal Chest (Gold)
	cont[3] = '0x09AB'#Metal Chest (Metal)
	DIM sp_type[val(str(sp_len))] 
	sp_type[0] = '0x0F7A'#Black Pearl 
	sp_type[1] = '0x0F88'#Nightshade 
	sp_type[2] = '0x0F8D'#Spider's Silk 
	sp_type[3] = '0x0F85'#Ginseng 
	sp_type[4] = '0x0F84'#Garlic 
	sp_type[5] = '0x0F86'#Mandrake Root 
	sp_type[6] = '0x0F7B'#Blood Moss 
	sp_type[7] = '0x0F8C'#Sulphorous Ash 
	DIM sp_pack[val(str(sp_len))] 
	sp_pack[0] = '0x4001C74F' 
	sp_pack[1] = sp_pack[0] 
	sp_pack[2] = sp_pack[0] 
	sp_pack[3] = sp_pack[0] 
	sp_pack[4] = sp_pack[0] 
	sp_pack[5] = sp_pack[0] 
	sp_pack[6] = sp_pack[0] 
	sp_pack[7] = sp_pack[0] 
	DIM db[val(str(db_len))] 
	db[0] = '0x14EF'#Deed 
	db[1] = '0x13FE'#Katana 
	db[2] = '0x1057'#Sextant 
	db[3] = '0x1713'#Floppy Hat 
	db[4] = '0x1404'#War Fork 
	db[5] = '0x0F9E'#Scissors 
	db[6] = '0x0C7F'#Ear of corn 
	db[7] = '0x153B'#Half apron 
	db[8] = '0x13C7'#Leather Gorget 
	db[9] = '0x13D4'#Studded sleeves 
	db[10] = '0x0994'#Pear 
	db[11] = '0x1030'#Jointing plane 0 0x1030 
	db[12] = '0x0EB3'#Lute 
	db[13] = '#0x1EBC'#Tinker Tools 
	db[14] = '0x13E3'#Smith Hammer 
	db[15] = '0x1F7B'#Doublet 
	db[16] = '0x1B78'#Kite wooden shield 
	db[17] = '0x0C74'#Honeydew melon 
	db[18] = '0x1516'#Long skirt 
	db[19] = '0x1EFD'#Fancy shirt 
	db[20] = '0x0F39'#Showel 
	db[21] = '0x170F'#Shoes 
	db[22] = '0x170D'#Sandals 
	db[23] = '0x1539'#Long pants 
	db[24] = '0x13EE'#Ringmail sleeves 
	db[25] = '0x13EE'#Leather cap 
	db[26] = '0x171C'#Jester's cap 
	db[27] = '0x1517'#Plain shirt 
	db[28] = '0x0FBB'#Tongs 
	db[29] = '0x1541'#Body sash 
	db[30] = '0x0EC2'#Cleaver 
	db[31] = '0x1EFF'#Fancy dress 
	db[32] = '0x1FA1'#Tunic 
	db[33] = '0x0E87'#Pitchfork 
	db[34] = '0x0E9C'#Drum 
	db[35] = '0x0F9D'#Sewening kit 
	db[36] = '0x1C02'#Studded armor 
	db[37] = '0x1400'#Kryss 
	db[38] = '0x0F4B'#Double axe 
	db[39] = '0x1C08'#Leather skirt 
	db[40] = '0x1531'#Short skirt 
	db[41] = '0x1B7B'#Metal shield 
	db[42] = '0x172A'#Lime 
	db[43] = '0x1F01'#Plain dress 
	db[44] = '0x1F03'#Robe 
	db[45] = '0x1515'#Cloak 
	db[46] = '0x1B74'#Kite metal shield 
	db[47] = '0x1402'#Short spear 
	db[48] = '0x0EB2'#Lap Harp 
	db[49] = '0x1034'#Saw 
	db[50] = '0x0C70'#Head of lettuce 
	db[51] = '0x0E86'#Pickaxe 
	db[52] = '0x1B7B'#Metal shield 
	db[53] = '0x0C64'#Gourd 
	db[54] = '0x1711'#Thigh Boots 
	db[55] = '0x0EC4'#Skinning Knife 
	db[56] = '#0x0F43'#Hatchet 
	db[57] = '0x0F49'#Axe 
	db[58] = '0x171A'#Feather Hat 
	db[59] = '0x0F51'#Dagger 
	db[60] = '0x0F0D'#Explosion Bottle 
	db[61] = '0x0F0A'#Poison Bottle 
	db[62] = '0x0F0B'#Refresh Bottle 
	db[63] = '0x0F08'#Agility Bottle 
	db[64] = '0x0F07'#Cure Bottle 
	db[65] = '0x0F0C'#Heal Bottle 
	db[66] = '0x0F09'#Strength Bottle 
	db[67] = '0x0E9D'#Tambourine 
	db[68] = '0x13CB'#Leather Leggins 
	db[69] = '0x1716'#Straw Tall Hat 
	db[70] = '0x13CC'#Leather Tunic 
	db[71] = '0x13CC'#Ringmain Leggins 
	db[72] = '0x13D5'#Studded gloves 
	db[73] = '0x1442'#Two Handed Axe 
	db[74] = '0x13B9'#Viking Sword 
	db[75] = '0x1C06'#Leather Armor 
	db[76] = '0x1C00'#Leather Shorts 
	db[77] = '0x1715'#Cap 
	db[78] = '0x1714'#Brim Hat 
	db[79] = '0x13F6'#Butcher knife 
	db[80] = '0x1C00'#Leather Shorts 
	db[81] = '0x13F0'#Ringmail Leggins 
	db[82] = '0x1F9F'#Jester's Suit 
	db[83] = '0x13BE'#Chainmail Leggins 
	db[84] = '0x1718'#Wizards Hat 
	db[85] = '0x1406'#War Mace 
	db[86] = '0x0F60'#Long Sword 
	db[87] = '0x1537'#Kilt 
	db[88] = '0x1DB9'#Leather Cap 
	db[89] = '0x153F'#Bandana 
	db[90] = '0x0E9B'#Mortat and Pestle 
	db[91] = '0x13B3'#Club 
	db[92] = '0x0F06'#Nightsight Bottle 
	db[93] = '0x1543'#Scullcap 
	db[94] = '0x0F62'#Spear 
	db[95] = '0x0F5E'#Broadsword 
	db[96] = '0x170B'#Boots 
	db[97] = '0x1F49'#Short Pants 
	db[98] = '0x171B'#Tricone Hat 
	db[99] = '0x0C79'#Canteloupe 
	db[100] = '0x13DA'#Studded Leggins 
	db[101] = '0x13FA'#Large Battle Axe 
	db[102] = '0x1C0A'#Leather Bustier 
	db[103] = '0x152E'#Shrort Pants 
	db[104] = '0x13BB'#Chainmail Coif 
	db[105] = '0x13B5'#Scimitar 
	db[106] = '0x1B7A'#Wooden Shield 
	db[107] = '0x13DB'#Studded Tunic 
	db[108] = '0x13BF'#Ringmail Tunic 
	db[109] = '0x1438'#War Hammer 
	db[110] = '0x1C0C'#Studded Bustier 
	db[111] = '0x13EB'#Ringmail Gloves 
	db[112] = '0x13EC'#Ringmail Tunic 
	db[113] = '0x143E'#Halberd 
	db[114] = '0x13D6'#Studded Gorget 
	db[115] = '0x13C6'#Leather Gloves 
	db[116] = '0x1717'#Straw Hat 
	db[117] = '0x1B76'#Platemail Heater 
	db[118] = '0x1411'#Platemail Legs 
	db[119] = '0x1410'#Platemail Arms 
	db[120] = '0x1414'#Platemail Gloves 
	db[121] = '0x1415'#Platemail Chest 
	db[122] = '0x1412'#Platemail Helm 
	db[123] = '0x140E'#Nose Helm 
	db[124] = '0x140A'#Helmet 
	db[125] = '0x0F47'#Battle Axe 
	db[126] = '0x1413'#Platemail Gorget 
	db[127] = '0x0F4D'#Bardiche 
	db[128] = '0x1440'#Cutlass 
	db[129] = '0x1408'#Closed Helm 
	uo.exec('set injectecho 1') 
	uo.exec('set finddistance 2') 
	repeat 
		uo.findtype('0x2006','-1','ground') 
		if uo.findcount() && uo.getDistance('finditem') < 4 then 
			lc=uo.getSerial('finditem') 
			uo.useobject(lc) 
			checklag() 
			repeat 
				uo.findtype(-1,-1,lc) 
				if uo.findcount() then 
					ig = false 
					sp = false 
					st = false 
					lf = uo.getGraphic('finditem') 
					for i=0 to db_len-1 
						if lf == db[i] then 
							ig = true 
						endif 
					next 
					if ig then 
						uo.ignore('finditem') 
					else 
						for i=0 to sp_len-1 
							if lf == sp_type[i] then 
								sp = true 
								summ = i 
							endif 
						next 
						if sp then 
							repeat 
								uo.moveitem('finditem',0,sp_pack[i]) 
								wait(200) 
								uo.findtype(-1,-1,lc) 
							until not uo.getGraphic('finditem')==lf 
						else 
							if uo.getQuantity('finditem') > 1 then 
								repeat 
									uo.moveitem('finditem',0,'backpack') 
									wait(200) 
									uo.findtype(-1,-1,lc) 
								until not uo.getGraphic('finditem')==lf 
							else 
								repeat 
									uo.moveitem('finditem',0,'backpack',50,130,0) 
									wait(200) 
									uo.findtype(-1,-1,lc) 
								until not uo.getGraphic('finditem')==lf 
							endif 
						endif 
					endif 
				endif 
			until not uo.findcount() 
			uo.ignore(lc) 
			uo.hide(lc)
		endif 
		for j=0 to ct_len-1 
			uo.findtype(cont[j],-1,'backpack') 
			while uo.findcount() 
				lc = uo.getSerial('finditem') 
				uo.useobject(lc) 
				checklag() 
				uo.findtype(-1,-1,lc) 
				repeat 
					uo.findtype(-1,-1,lc) 
					if uo.findcount() then 
						ig = false 
						sp = false 
						st = false 
						lf = uo.getGraphic('finditem') 
						for i=0 to db_len-1 
							if lf == db[i] then 
								ig = true 
							endif 
						next 
						if ig then 
							uo.ignore('finditem') 
						else 
							for i=0 to sp_len-1 
								if lf == sp_type[i] then 
									sp = true 
									summ = i 
								endif 
							next 
							if sp then 
								repeat 
									uo.moveitem('finditem',0,sp_pack[i]) 
									wait(200) 
									uo.findtype(-1,-1,lc) 
								until not uo.getGraphic('finditem')==lf 
							else 
								if uo.getQuantity('finditem') > 1 then 
									repeat 
										uo.moveitem('finditem',0,'backpack') 
										wait(200) 
										uo.findtype(-1,-1,lc) 
									until not uo.getGraphic('finditem')==lf 
								else 
									repeat 
										uo.moveitem('finditem',0,'backpack',50,130,0) 
										wait(200) 
										uo.findtype(-1,-1,lc) 
									until not uo.getGraphic('finditem')==lf 
								endif 
							endif 
						endif 
					endif 
				until not uo.findcount() 
				while uo.containerOf(lc)==uo.getSerial('backpack') 
					uo.moveitem(lc,0,'ground') 
					wait(100) 
				wend 
				uo.findtype(cont[j],-1,'backpack') 
			wend 
		next 
		wait(100) 
	until false 
endsub
Прокачка скилла Forensic.

Code: Select all

; Собственно скрипт - включаем и он будет использовать скилл на ближайший труп.
sub forensic()
	uo.set('finddistance','3')
	repeat
		uo.deletejournal()
		uo.findtype('0x2006','-1','ground')
		uo.waittargetobject('finditem')
		uo.useskill('Forensic Evaluation')
		repeat
			wait(200)
		until uo.injournal('can tell nothing|been killed by|cannot|decide')
	until false
endsub
Лечение бинтами.

Code: Select all

; Функция полечит персонаж бинтами, если есть бинты и клиент не ожидает курсора.
sub selfbandage()
	if not uo.waiting() then
		uo.findtype('0x0E21',"-1",'backpack')
		if uo.findcount() then
			uo.waittargetself()
			uo.useobject('finditem')
		else
			uo.print('Бинты не найдены!')
		endif
	else
		uo.print('Ловушка на прицел уже установлена!')
	endif
endsub
Плавка.

Code: Select all

 ; Функция плавит всё, что указано в списке
sub smelt_all()
	uo.set('finddistance','2')
	var i, item
	DIM ore[11] ; список того, что нужно сплавить.
	ore[0] = '0x19B7'
	ore[1] = '0x19BA'
	ore[2] = '0x19B8'
	ore[3] = '0x19B9'
	ore[4] = '0x1415'
	ore[5] = '0x1411'
	ore[6] = '0x1410'
	ore[7] = '0x1412'
	ore[8] = '0x1414'
	ore[9] = '0x1413'
	ore[10] = '0x13B9'
	for i=0 to 10
		repeat
			uo.findtype(ore[i],"-1","backpack")
			if uo.findcount() then
				item = uo.getSerial('finditem')
				uo.findtype('0x1991',"-1",'ground')
				if not uo.findcount() then
					uo.findtype('0x19A3',"-1",'ground')
				endif
				uo.waittargetobject(item)
				uo.useobject('finditem')
				while uo.waiting()
					wait(100)
				wend
			endif
		until not uo.findcount()
	next
endsub
Прокачка скилла Bowcraft / Fletching.

Code: Select all

 ; Скрипт берёт по 1ому логу из контейнера и крафтит shaft'ы (заготовки стрел).
sub Bowcraft()
	var q
	uo.set("finddistance","1")
	uo.addObject("Container with logs")
	while uo.targeting()
		wait(100)
	wend
	repeat
		uo.findtype("0x1BDD","0x0000","Container with logs")
		uo.moveitem("finditem","2","backpack")
		while uo.count("0x1BDD","0x0000") < 1
			wait(200)
		wend
		q = uo.getQuantity("finditem")
		while uo.getQuantity("finditem") == q
			uo.moveitem("finditem","1","Container with logs")
			wait(100)
		wend
		repeat
			uo.deletejournal()
			uo.waittargettype("0x1BDD")
			uo.waitmenu('What do you want to carve the', 'Shaft')
			uo.usetype("0x0F51")
			repeat
				wait(100)
			until uo.injournal("pack|fail")
		until uo.count("0x1BDD","0x0000") == 0
		if uo.weight > 200 then
			uo.findtype("0x1BD4","-1","backpack")
			uo.moveitem("finditem","0","Container with logs")
			while uo.count("0x1BD4") > 0
				wait(700)
			wend
		endif
	until false
endsub
Прокачка скилла Stealth.

Code: Select all

 ; Функция прокачивает скилл Stealth посредством использования скилла и непосредственно хождения в скрытом режиме.
sub Stealth()
	repeat
		while not uo.hidden()
			uo.useskill('Stealth')
			wait(200)
		wend
		uo.press(36,2)
		while not uo.hidden()
			uo.useskill('Stealth')
			wait(200)
		wend
		uo.press(34,2)
	until false
endsub
Забивка банка.

Code: Select all

; Функция исользуя баг Sphere докладывает в банк любой предмет, не смотря на ограничения по весу. Так же может использоваться для складирования контейенров друг в друга.
sub InsertToBank()
	uo.print("Укажи объект который хочешь положить в банк")
	uo.addObject("To Bank")
	while uo.targeting()
		wait(50)
	wend
	uo.print("Укажи вещь в банке")
	uo.addObject("Into Bank")
	while uo.targeting()
		wait(50)
	wend
	uo.exec("moveitem "+uo.getSerial("To Bank")+" 0 "+uo.getSerial("Into Bank"))
endsub
ContOptimize

Code: Select all

 ; Уже не помню, что это, но кажется идеей было оптимально пересложить предметы в контейнере c.
sub contOptimize(c)
	var i, j, k, count
	uo.findtype("-1","-1",c)
	k = uo.findcount()
	DIM items[val(str(k))]
	for i=0 to k-1
		uo.findtype("-1","-1",c)
		items[i] = uo.getSerial("finditem")
		uo.ignore("finditem")
	next
	for i=0 to k-1
		uo.ignore(items[i])
	next
	for i=0 to k-1
		for j=0 to k-1
			if items[i] && (uo.getQuantity(items[i])>1 || uo.getQuantity(items[j])>1) && uo.getGraphic(items[i])==uo.getGraphic(items[j]) && uo.getColor(items[i])==uo.getColor(items[j]) then
				count = uo.getQuantity(items[i])
				uo.moveitem(items[j],0,items[i])
				items[i] = items[j]
				while count == uo.getQuantity(items[i])
					wait(200)
				wend
				items[j] = false
			endif
		next
	next
endsub
to be continued..

Posted: 2006-12-09 23:48:27
by $keR
Сбивание кастов противников.

с этим скриптом трабл:
кидает стрелку и в себя и в любого кто кастует рядом=( а надо чтоб по последней цели и + UO.Ignore("self") ток пробовал ниче не могу сделать.=(
надеюсь поможете


Code: Select all

Sub isFriend(tar) 

   var i 
   DIM friends[3] 
   friends[0] ='0x00xxxxxxx' ; ja
   friends[1] ='0x00xxxxxxx' 1drug
   friends[2] ='0x00xxxxxxx' 2 drug
   UO.Ignore("self")
   if uo.GetNotoriety(tar)=="1" then 
      return true 
   endif 
   for i=0 to 2 
      if tar == friends[i] then 
         return true 
      endif 
   next 
   return false 
endsub 

Posted: 2006-12-10 08:07:39
by Destruction

Code: Select all

Sub isFreind( tar )
if tar == uo.getSerial( "lasttarget" ) then
   return false;
endif
return true;
endsub
Нужно иногда мозг напрягать.

Posted: 2006-12-10 11:06:48
by $keR
Destruction wrote:

Code: Select all

Sub isFreind( tar )
if tar == uo.getSerial( "lasttarget" ) then
   return false;
endif
return true;
endsub
Нужно иногда мозг напрягать.
=) у мя со скриптингом неочень,
а подскажи плз куда друзей вписать?*
а то будет на всех кидать
друзей примерно 4-человека, это минимально

Posted: 2006-12-10 18:11:05
by Destruction
Этот вариант будет кидать только на lasttarget.

Posted: 2006-12-11 23:20:16
by $keR
оке спс, ласт таргет и ласт статус это не одно и то же?

Posted: 2006-12-12 17:24:05
by Destruction
$keR wrote:оке спс, ласт таргет и ласт статус это не одно и то же?
Нет.

Posted: 2006-12-12 19:27:38
by $keR
if not isFriend(tar) then
В ЭТОЙ СТРОКЕ ДАЕТ ОШИБКУ=(

Posted: 2006-12-12 19:36:26
by DerMeister =)
$keR wrote:if not isFriend(tar) then
В ЭТОЙ СТРОКЕ ДАЕТ ОШИБКУ=(
Если ты пытаешься непосредственно запустить этот "скрипт", то это не скрипт а "процедура"... её нельзя непосредственно вызывать на вкладки "Script" или через бинды...

Posted: 2006-12-12 21:17:56
by $keR
DerMeister =) wrote:
$keR wrote:if not isFriend(tar) then
В ЭТОЙ СТРОКЕ ДАЕТ ОШИБКУ=(
Если ты пытаешься непосредственно запустить этот "скрипт", то это не скрипт а "процедура"... её нельзя непосредственно вызывать на вкладки "Script" или через бинды...
pзапускаю во вкладке Скриптс:
sub AntiMagic()

в УО вторым чаро кастую ченить и вылазит ошибка в той строке

Posted: 2006-12-12 21:39:02
by DerMeister =)
Destruction wrote:Этот вариант будет кидать только на lasttarget.
Этот скрипт нивкого кидать не будет по определению,потому что:

Code: Select all

if tar == uo.getSerial( "lasttarget" ) then
tar у тебя, это номер строки... Надо:

Code: Select all

if uo.journalserial(tar-1) == uo.getSerial( "lasttarget" ) then
А прописывать друзей так:

Code: Select all

Sub isFriend(tar) 
   var i 
   DIM friends[100] ;Массив с ID друзей (100, чтобы не напрягатся, при перенастройке (если друзей больше ста, то поставь тогда большее число)
   friends[0] = uo.getSerial() 
   friends[1] = 0x00000000   #тут серийники френдов.
   friends[2] = 0x00000000
   friends[3] = 0x00000000   #и тп...

   if uo.GetNotoriety(uo.journalserial(tar-1))=="1" then 
      return true 
   endif 
   for i=0 to 3   # тут число друзей (включая себя) МИНУС ЕДИНИЦА, другими словами: номер последнего друга из массива friends[]
      if tar == friends[i] then 
         return true 
      endif 
   next 
   return false 
endsub
ЗЫ: Пока писал, появился вопрос: Destr, а ты скрипты то перед тем как выложить тестишь, или так же как Quest самонадеян??? :?

Posted: 2006-12-12 22:10:40
by $keR

Code: Select all



sub AntiMagic()

   var tar, cast = "Ort Sanct|Ort Rel|In Nox|Kal Ort Por|Por Ort Grav|An Ex Por|An Ort|Kal Vas Flam" ; слова, на которые следует реагировать 
uo.deletejournal(cast)
   repeat 

      tar =uo.injournal(cast) 
      
      if tar then 
         if isCast(tar) then 
            if not isFriend(tar) then 
               killCast(tar) 
            endif 
         endif 
      uo.deletejournal(cast)
      endif 
      wait(100) 
   until false 
endsub 

; Функция кидает Magic Arrow в объект tar 
Sub killCast(tar) 

   var mana = uo.mana 
   
   uo.cast('Magic Arrow',uo.journalserial(tar-1)) 
   
   while mana==uo.mana 
      wait(100) 
   wend 
end sub 

; Функция проверяет объект tar на дружелюбность. 
Sub isFriend(tar) 
   var i 
   DIM friends[100] ;Массив с ID друзей (100, чтобы не напрягатся, при перенастройке (если друзей больше ста, то поставь тогда большее число) 
   friends[0] = uo.getSerial()   (ВОТ ТУТ МЕНЯТЬ НИЧЕГО НЕ НАДО? В ЭТОЙ СТРОКЕ?)
   friends[1] = 0x016ACCA4  #тут серийники френдов.  
   friends[2] = 0x0031FB21 ; 
   friends[3] = 0x000CCB01   #и тп... 

   if uo.GetNotoriety(uo.journalserial(tar-1))=="1" then 
      return true 
   endif 
   for i=0 to 3   # тут число друзей (включая себя) МИНУС ЕДИНИЦА, другими словами: номер последнего друга из массива friends[] 
      if uo.journalserial(tar-1) == friends[i] then 
         return true 
      endif 
   next 
   return false 
endsub

; Функция - проверяет действительно ли строка в журнале tar вызвана чьим-либо кастом. 
Sub isCast(tar) 
   if uo.journalcolor(tar-1) == "0x03B2" then 
      return true 
   endif 
   return false 
endsub



блин чет фаще неврубаюсь нифига=(
не хочет игнорить френдом и меня, темболее! нельзя игнор селф поставить какнитЬ?

Исправил, проверяй. Вук.

Posted: 2006-12-12 22:48:50
by DerMeister =)
Кароч, я в ТВОЁМ предидущем посте исправил. Бери оттуда и проверяй:
ЗЫ: Это вопрос к Destr'u, почему он непровернные скрипты клаёдт.

ЗЗЫ: Поменял

Code: Select all

if tar == friends[i] then
на

Code: Select all

if uo.journalserial(tar-1) == friends[i] then
.

// -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- // -- //
Вообще, мне концепция скрипта не нравится. Пока пройдёт часть проверок, tar может перестать указыать на нужную строчку. Думаю, нужно привязатся не только к номеру строки (для проверки цвета), а еще и к ИД, так как номер строки не стратичен.

Posted: 2006-12-12 23:05:17
by $keR
ув. DerMeister
а по русски можно? 0_0
я ниче не понял=(
пробую вставить все что сказал)

Posted: 2006-12-13 01:13:17
by DerMeister =)
Кароч, берешь

Code: Select all

sub AntiMagic() 

   var tar, cast = "Ort Sanct|Ort Rel|In Nox|Kal Ort Por|Por Ort Grav|An Ex Por|An Ort|Kal Vas Flam" ; слова, на которые следует реагировать 
uo.deletejournal(cast) 
   repeat 

      tar =uo.injournal(cast) 
      
      if tar then 
         if isCast(tar) then 
            if not isFriend(tar) then 
               killCast(tar) 
            endif 
         endif 
      uo.deletejournal(cast) 
      endif 
      wait(100) 
   until false 
endsub 

; Функция кидает Magic Arrow в объект tar 
Sub killCast(tar) 

   var mana = uo.mana 
    
   uo.cast('Magic Arrow',uo.journalserial(tar-1)) 
    
   while mana==uo.mana 
      wait(100) 
   wend 
end sub 

; Функция проверяет объект tar на дружелюбность. 
Sub isFriend(tar) 
   var i 
   DIM friends[100] ;Массив с ID друзей (100, чтобы не напрягатся, при перенастройке (если друзей больше ста, то поставь тогда большее число) 
   friends[0] = uo.getSerial()   (ВОТ ТУТ МЕНЯТЬ НИЧЕГО НЕ НАДО? В ЭТОЙ СТРОКЕ?) 
   friends[1] = 0x016ACCA4  #тут серийники френдов.  
   friends[2] = 0x0031FB21 ; 
   friends[3] = 0x000CCB01   #и тп... 

   if uo.GetNotoriety(uo.journalserial(tar-1))=="1" then 
      return true 
   endif 
   for i=0 to 3   # тут число друзей (включая себя) МИНУС ЕДИНИЦА, другими словами: номер последнего друга из массива friends[] 
      if uo.journalserial(tar-1) == friends[i] then 
         return true 
      endif 
   next 
   return false 
endsub 

; Функция - проверяет действительно ли строка в журнале tar вызвана чьим-либо кастом. 
Sub isCast(tar) 
   if uo.journalcolor(tar-1) == "0x03B2" then 
      return true 
   endif 
   return false 
endsub
И не нужно квотить скрипты, из-за этого тема растёт как на дрожжях. Когда цитируешь, удаляй от туда код (или оставляй всего пару строк). Если нармально объянишь и так будет понятно к какому скрипту относится.

Posted: 2006-12-13 08:31:00
by $keR
ВСТАВИЛ скрипт, работает без Ошибки, уже порадовало=)
НО игнорит массив френдов, зато себя терь тож игнорит=)
может как нить можно сделать, чтоб френды были? или никак?

Posted: 2006-12-13 16:05:24
by DerMeister =)
А, хз... Попробуй серийники френдов в кавычки взять...