Jump to content


Toggle shoutbox Chat Open the Shoutbox in a popup

@  Artemy Shan : (04 July 2025 - 03:34) Перезапуск проекта: https://forum.oldp.n...howtopic=106329
@  Costesti : (10 June 2025 - 22:26) Артём закрой сервер толку от него ноль так как лаги бешеные ничего не сделать
@  Costesti : (10 June 2025 - 21:03) бля это у меня сервер только логает или у всех?
@  papasha : (10 June 2025 - 15:13) @Costesti da kanesna vvodit, uze dohuja obnov vishlo za 7 let poslednix!!
@  Costesti : (09 June 2025 - 18:34) Артём ты там нововведения водишь?
@  Costesti : (09 June 2025 - 18:31) Сервер работает?
@  Costesti : (31 May 2025 - 23:46) Шан комп меняй уже игру не тянет
@  Costesti : (31 May 2025 - 20:02) мда никому не нужен этот сервер
@  fr33 : (29 May 2025 - 14:07) shenahnan gnom
@  fr33 : (29 May 2025 - 14:07) gm zb!!!1 lagi ept
@  Costesti : (28 May 2025 - 22:43) и это опять и за сейвы
@  Costesti : (28 May 2025 - 22:43) Народ да у кого там номер Шана пускай чинит сервер
@  Costesti : (27 May 2025 - 21:38) Вопрос Крафтить молоко можно?
@  fr33 : (26 May 2025 - 17:33) gm blad chini lag
@  Costesti : (23 May 2025 - 22:37) Бешеные лаги
@  Costesti : (17 May 2025 - 22:54) Опять лаги на Сервере
@  fr33 : (12 May 2025 - 15:21) ble daite mne gm i zdelaju pvp vam
@  Mokasin : (12 May 2025 - 09:04) Puišiem nav garlaicīgi xDDD
@  Egoons : (10 May 2025 - 18:48) lanc 2025 gads jau, ara silts atkal. tas taa, infai
@  beatiful : (10 May 2025 - 10:14) griga pidar

Photo

Хорошие скрипты


  • Please log in to reply
14 replies to this topic

#1 Dustman

Dustman

    Novice

  • Members
  • 48 posts

Posted 17 February 2010 - 12:30

Вот решил поделиться своими скриптами. Для начала хочу представить вашему вниманию скрипт на починку армора. Выкладываю 2 версии. Одна с АСМом другая без.

sub repairarmASM()

	var i, name, y, itemnum, reptool, item

	var dblhand = 	UO.asmInputList("Выберите тип оружия","Одноручное;Двуручное")			

	var armor = UO.asmInputList("Выберите тип доспехов","Металл;Кожа")			

	var necklace = UO.asmInputList("Что у Вас на шее?","Ожерелье;Горжетка") 	

	Dim ar[8]

	ar[0] = 'Hat'

	ar[1] = 'Lhand'

	ar[2] = 'Torso'

	ar[3] = 'Arms'

	ar[4] = 'Gloves'

	ar[5] = 'Legs'

	ar[6] = 'Pants'

	ar[7] = 'Neck'

	if armor == 1 then

		reptool = '0x1865'  ;reptool for metall stuff

	else

		reptool = '0x0F9D'   ;reptool for tailored stuff

	endif

	if uo.count(reptool) then

		uo.print('Repair tool is avaliable. Starting to repair your armor')

	else

		uo.print('Repair tool not found! Terminating..')

		return

	endif

	

	if necklace == 1 then

		itemnum = 6

	else

		itemnum = 7

	endif

	for i = 0 to itemnum

		if uo.objatlayer(ar[i])<>'' then

			if i==1 and dblhand==2 then

				goto skip

			endif

			item = uo.getserial(uo.objatlayer(ar[i]))

			uo.moveitem(uo.objatlayer(ar[i]),-1,'backpack')	

			wait(300)

			deletejournal('fully repaired|must have|Target weapon or armor to repair|Target leather armor to repair')

			uo.waittargetobject(item)

			uo.usetype(reptool)

			repeat

				wait(100)

			until uo.injournal('fully repaired|must have|Target weapon or armor to repair|Target leather armor to repair')

			if uo.injournal('must have') then

				uo.print('No resourses to repair the weapon')

			endif

			if uo.injournal('fully repaired') then

				uo.print('Succesfully repaired')

			endif

			if uo.injournal('Target weapon or armor to repair|Target leather armor to repair') then

				uo.useobject(item)

				uo.print('False settings. Terminating...')

				return

			endif

			uo.useobject(item)

			while uo.objatlayer(ar[i])<>item

				wait(100)

			wend

			skip:

		endif

	next

	uo.print('-=Done=-')

endsub

Это вариант починки армора с использованием АСМа. Тут никаких настроек самому не надо делать. Просто запускаешь скрипт и отвечаешь на вопросы, которые скрипт задает в начале.
1.Тип оружия. Влияет на то, будет ли скрипт скрипт чинить щит или нет. При использовании двуручного оружия оно находиться на том же слое, что и щит и для инжекта разница между двуручным оружием и щитом просто отсутствует
2.Выберите тип доспехов. Тут все просто. Кожа или металл. Если ошиблись, то скрипт после первой попытки починить кожаную вещь рептулой для айрона остановиться и скажет об этом.
3.Что у Вас на шее?. Очень важный момент. Если вы не используйте армор горжетку, а предпочитаете реген ожерелье, то скрипт не будет пытаться чинить его и заряды бижутерии не будут расходоваться.

Для корректной работы необходимо иметь в паке нужные рептулсы и ресурсы для починки. Если их не будет, скрипт хоть и не выдаст ошибку, но задачу свою не выполнит.

#2 Dustman

Dustman

    Novice

  • Members
  • 48 posts

Posted 17 February 2010 - 12:42

Вот вариант без АСМа. Он больше подойдет тем, кто постоянно бегает в одном и том же комплекте и не нуждается в постоянных изменениях настроек скрипта.

sub repairarm()

	var i, name, y, itemnum, reptool, item

			##################SETTINGS########################

	var dblhand = 1; 1 - dvuruchnoe; 0 - odnoruchnoe oruzhie

	var armor = 1; 0 - esli metal, 1 - esli kozha

	var necklace = 1; если используешь реген ожерелье то ставим 0, если используешь армор горжетку, то 1 

			################################################

			Dim ar[8]

	ar[0] = 'Hat'

	ar[1] = 'Lhand'

	ar[2] = 'Torso'

	ar[3] = 'Arms'

	ar[4] = 'Gloves'

	ar[5] = 'Legs'

	ar[6] = 'Pants'

	ar[7] = 'Neck'

	if armor == 0 then

		reptool = '0x1865'

	else

		reptool = '0x0F9D'

	endif

	if uo.count(reptool) then

		uo.print('Repair tool is avaliable. Starting to repair your armor')

	else

		uo.print('Repair tool not found! Terminating..')

		return

	endif

	

	if necklace == 0 then

		itemnum = 6

	else

		itemnum = 7

	endif

	for i = 0 to itemnum

		if uo.objatlayer(ar[i])<>'' then

			if i==1 and dblhand==1 then

				goto skip

			endif

			item = uo.getserial(uo.objatlayer(ar[i]))

			uo.moveitem(uo.objatlayer(ar[i]),-1,'backpack')	

			wait(300)

			deletejournal('fully repaired|must have|Target weapon or armor to repair|Target leather armor to repair')

			uo.waittargetobject(item)

			uo.usetype(reptool)

			repeat

				wait(100)

			until uo.injournal('fully repaired|must have|Target weapon or armor to repair|Target leather armor to repair')

			if uo.injournal('must have') then

				uo.print('No resourses to repair the weapon')

			endif

			if uo.injournal('fully repaired') then

				uo.print('Succesfully repaired')

			endif

			if uo.injournal('Target weapon or armor to repair|Target leather armor to repair') then

				uo.useobject(item)

				uo.print('False settings. Terminating...')

				return

			endif

			uo.useobject(item)

			while uo.objatlayer(ar[i])<>item

				wait(100)

			wend

			skip:

		endif

	next

	uo.print('-=Done=-')

endsub

В начале три переменных, которые надо настроить под себя.
1. var dblhand. Если используете одноручное оружие то ставьте 0, если двуручное - ставьте 1
2. var armor. Если на вас армор из металла то значение переменной должно равняться 0, если на вас кожа - ставьте 1
3. var necklace. Если вы используете реген ожерелье, то ставьте 0, если на вас армор горжетка - ставьте 1

Преимущество данного скрипта в том, что его один раз настроил и бегаешь пока не сменишь комплект вооружения...

#3 Dustman

Dustman

    Novice

  • Members
  • 48 posts

Posted 17 February 2010 - 12:46

Так же скрипт на починку армора использует некоторые функции которые так же должны быть в файле со скриптами.

DeleteJournal
Sub DeleteJournal(msg); 

   var nom=UO.InJournal(msg); ищем сообщение и в переменную его

   if nom>0 then 

	  UO.SetJournalLine(Nom - 1,"deleted"); подменим сообщение

	  DeleteJournal(msg); вызов функцией самой себя, рекурсия

   endif 

endsub

CheckLag
Sub CheckLag()

   DeleteJournal("backpack"); вытрим ТОЛЬКО нужные нам сообщения в журнале

   UO.Click('backpack'); одиночный клик по вашему backpack

   repeat

	  wait(100)

   until UO.InJournal("backpack")

end sub


#4 Dustman

Dustman

    Novice

  • Members
  • 48 posts

Posted 17 February 2010 - 13:29

Вот скрипт на починку оружия. Нужно только задать переменной dblhand соответствующее значение.

sub repair()

	var reptool = '0x1865'

	var dblhand = 0; 0 - onehand. 1 - 2hand weapon

	var wep, hand 

	if uo.count(reptool) then

		uo.print('Repair tool is avaliable. Starting to repair your weapon')

	else

		uo.print('Repair tool not found! Terminating..')

		return

	endif

	if dblhand == 0 then

		wep = uo.getserial(uo.objatlayer('Rhand'))

		hand = 'Rhand'

	else

		wep = uo.getserial(uo.objatlayer('Lhand'))

		hand = 'Lhand'

	endif

	uo.unequip(hand)

	CheckLag()

	deletejournal('fully repaired|must have')

	uo.waittargetobject(wep)

	uo.usetype(reptool)

	repeat

		wait(100)

	until uo.injournal('fully repaired|must have')

	if uo.injournal('must have') then

		uo.print('No resourses to repair the weapon')

	endif

	wait(50)

	if uo.injournal('fully repaired') then

		uo.print('Succesfully repaired')

	endif

	uo.useobject(wep)

end sub

я также пользовался еще одной функцией для проверку текущей прочности оружия. Этот скрипт будет работать только если максимальная прочность оружия является двухзначным числом (20/40/50/99). За ненадобностью я не делал проверку для оружия с дурабилити 100 и больше. Тут точно такая же история с настройкой переменной dblhand. Также появляется еще одна настраиваемая переменная MinDur. Переменная указывает минимально допустимый уровень прочности оружия. Если прочность оружия ниже уровня указанного в переменной, то будет запущен скрипт ремонта оружия.

sub checkdurability()

	var MinDur = 10, name, y, hand

	var dblhand = 0

	if dblhand == 0 then

		hand = 'Rhand'

	else

		hand = 'Lhand'

	endif

	deletejournal('Durability')

	uo.click(uo.objatlayer(hand))

	repeat

		wait(100)

	until UO.InJournal("Durability")

	name=uo.Journal(uo.InJournal("Durability")-1)

	if len(onlynumbers( name )) == 4 then

		y = val(Left(onlynumbers( name ),2))

	endif

	if len(onlynumbers( name )) == 3 then

		y = val(Left(onlynumbers( name ),1))

	endif

	if y < MinDur then 

		uo.print('Nachinau pochinku')

		repair()

	else

		uo.print('Pochinka ne nuzhna. Tekushaya prochnost: ' + str(y))

	endif

endsub

Как видите тут появляется необходимость добавить в файл со скриптами еще одну функцию onlynumbers.

Sub onlynumbers(string)

var i, j

var text=''

for i=0 to len(string)

for j=0 to 9

if mid(string,i,1)==str(j) then

text = text + mid(string,i,1)

end if

next

next

return text

end sub


#5 Dustman

Dustman

    Novice

  • Members
  • 48 posts

Posted 17 February 2010 - 13:32

Собственно вставив ссылку на функцию checkdurability() в какой либо скрипт вы получаете постоянную проверку на прочность... и даже если вы напрочь забыли про то, что ваше оружие ломается... скрипт напомнит и сам починит (при наличии рептула и ресурсов в паке)

Вот пример использования.

sub fullavtoloot()

	deletejournal('Body of')

	while not false

		if uo.injournal('Body of') then

			deletejournal('Body of')

			Looting()

			checkdurability()

		else

			wait(100)

		endif

	wend

endsub


#6 Dustman

Dustman

    Novice

  • Members
  • 48 posts

Posted 19 February 2010 - 01:28

Скрипт на рекол по рунбуке. Ставим АйДи своей буки и пользуемся. Вводим номер руны руками и выбераем необходимый способ. Так же можно перезаряжать, выбрав соответствующий пункт. Не стоит использовать для побега от ПК.

sub recallASMstring()

	var runebook = '0x40044c23'; ID Runebook. Use ,info

	var where = uo.asminputstring("Введите порядковый номер руны от 1 до 16:")

	var how = uo.asminputlist("Укажите задачу","Реколл_по_зарядам;Реколл_по_регам;Реколл_гейтом;Перезарядка_рунбуки")

	var oldX=uo.getX()

	var oldY=uo.getY()

	var number, num=val(where)

	if how == 1 then

		number = num+1

	endif

	if how == 2 then

		number = num*2+18

	endif

	if how == 3 then 

		number = num*2+19

	endif

	if how == 4 then

		deletejournal('You have no scrolls')

		uo.recall(runebook, 1)

		if uo.injournal('You have no scrolls') then

			uo.print('You have no scrolls. Terminating.')

			return

		else

			return

		endif

	endif

	if how == 0 then

		uo.print('Wrong choise of recall method. Terminating.')

		return

	endif

	if num>16 or num<1 then

		uo.print('Wrong rune number. Terminating.')

		return

	endif

	repeat

		uo.warmode(false)

		deleteJournal('Insufficient mana for this spell|You lack the reagents for this spell')

		uo.recall(runebook, number)

		uo.useskill('Hiding')

		var k=0

		repeat

			wait(500)

			k=k+500

		until oldX<>uo.getX() or oldY<>uo.getY() or uo.InJournal('Insufficient mana for this spell|You lack the reagents for this spell') or k>15000

		if uo.injournal('Insufficient mana for this spell') then

			uo.print('You need more mana. Terminating')

			return

		endif

		if uo.injournal('You lack the reagents for this spell') then

			uo.print('You need more reagents. Terminating')

			return

		endif

	until oldX<>uo.getX() or oldY<>uo.getY()

end sub


#7 Dustman

Dustman

    Novice

  • Members
  • 48 posts

Posted 19 February 2010 - 01:31

Отличие от предыдущего скрипта в том, что номер руны не руками вводим, а выбираем из меню...

sub recallASMcombo()

	var runebook = '0x40044c23'; ID Runebook. Use ,info

	var where = uo.asminputcombo("Укажите порядковый номер руны","1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16")

	var how = uo.asminputlist("Укажите задачу","Реколл_по_зарядам;Реколл_по_регам;Реколл_гейтом;Перезарядка_рунбуки")

	var oldX=uo.getX()

	var oldY=uo.getY()

	var number

	if how == 1 then

		number = where+1

	endif

	if how == 2 then

		number = where*2+18

	endif

	if how == 3 then 

		number = where*2+19

	endif

	if how == 4 then

		deletejournal('You have no scrolls')

		uo.recall(runebook, 1)

		if uo.injournal('You have no scrolls') then

			uo.print('You have no scrolls. Terminating.')

			return

		else

			return

		endif

	endif

	if how == 0 then

		uo.print('Wrong choise of recall method. Terminating.')

		return

	endif

	if where>16 or where<1 then

		uo.print('Wrong rune number. Terminating.')

		return

	endif

	repeat

		uo.warmode(false)

		deleteJournal('Insufficient mana for this spell|You lack the reagents for this spell')

		uo.recall(runebook, number)

		uo.useskill('Hiding')

		var k=0

		repeat

			wait(500)

			k=k+500

		until oldX<>uo.getX() or oldY<>uo.getY() or uo.InJournal('Insufficient mana for this spell|You lack the reagents for this spell') or k>15000

		if uo.injournal('Insufficient mana for this spell') then

			uo.print('You need more mana. Terminating')

			return

		endif

		if uo.injournal('You lack the reagents for this spell') then

			uo.print('You need more reagents. Terminating')

			return

		endif

	until oldX<>uo.getX() or oldY<>uo.getY()

end sub


#8 Dustman

Dustman

    Novice

  • Members
  • 48 posts

Posted 19 February 2010 - 01:33

Третий вариант рекола. Задает только один вопрос - номер руны. Переменную вар меняет под себя в соответствии с комментариями.


sub recallASMmini()

	var runebook = '0x40044c23'; ID Runebook. Use ,info

	var where = uo.asminputstring("Введите порядковый номер руны от 1 до 16:")

	var how = 2				#### 1 = Реколл_по_зарядам; 2 = Реколл_по_регам; 3 = Реколл_гейтом; 4 = Перезарядка_рунбуки

	var oldX=uo.getX()

	var oldY=uo.getY()

	var number, num=val(where)

	if how == 1 then

		number = num+1

	endif

	if how == 2 then

		number = num*2+18

	endif

	if how == 3 then 

		number = num*2+19

	endif

	if how == 4 then

		deletejournal('You have no scrolls')

		uo.recall(runebook, 1)

		if uo.injournal('You have no scrolls') then

			uo.print('You have no scrolls. Terminating.')

			return

		else

			return

		endif

	endif

	if num>16 or num<1 then

		uo.print('Wrong rune number. Terminating.')

		return

	endif

	repeat

		uo.warmode(false)

		deleteJournal('Insufficient mana for this spell|You lack the reagents for this spell')

		uo.recall(runebook, number)

		uo.useskill('Hiding')

		var k=0

		repeat

			wait(500)

			k=k+500

		until oldX<>uo.getX() or oldY<>uo.getY() or uo.InJournal('Insufficient mana for this spell|You lack the reagents for this spell') or k>15000

		if uo.injournal('Insufficient mana for this spell') then

			uo.print('You need more mana. Terminating')

			return

		endif

		if uo.injournal('You lack the reagents for this spell') then

			uo.print('You need more reagents. Terminating')

			return

		endif

	until oldX<>uo.getX() or oldY<>uo.getY()

end sub


#9 Ji0s

Ji0s

    Advanced Player

  • Members
  • 393 posts
  • Gender:Male

Posted 19 February 2010 - 02:11

Хорошие скрипты, добавлю ещё вариант для рекола
sub recall()

uo.recall('ID', Number)

end sub
Пример:
sub recall()

uo.recall('0x400BDAC3', 2);- Первая рунка в рун буке имеет цифру 2 и , 3 цифу 4 и т.д.

end sub

Skype (minmal2)

Verdata eGames style (beta)

#10 marakoris

marakoris

    Newbie

  • Members
  • 18 posts

Posted 19 February 2010 - 15:48

Спасибо за скрипты. =)

#11 npo100

npo100

    Player

  • Members
  • 154 posts

Posted 10 April 2011 - 23:16

Проблемма в sub repair() выдает ошибку Line 43: Function not Found - CHECKLAG
и sub checkdurability() а тут Line 70: Function not Found - DELETEJOURNAL

Подскажите че тут н так?!

#12 ..Sermulis..

..Sermulis..

    Advanced Player

  • Members
  • 406 posts
  • Gender:Male

Posted 11 April 2011 - 12:31

Tolko neponjal odno - pocemu nazvanie temi horoshie skripi esli tam neodin normalnij skript neimeetsa :blink:

:damaged beyond repair:

 

skype - sermuli

 


#13 Ganjakur

Ganjakur

    Guru

  • Members
  • 2552 posts
  • Gender:Male
  • Location:Pakistan

Posted 11 April 2011 - 12:50

Nhttp://forum.egames.lv/index.php?act=post&do=reply_post&f=25&t=41588# ;) ekad arī nesapratīsi!

#14 Kensaku

Kensaku

    Novice Player

  • Members
  • 144 posts
  • Gender:Male
  • Location:Рига

Posted 14 April 2011 - 14:59

..Sermulis.., on Apr 11 2011, 13:31, said:

Tolko neponjal odno - pocemu nazvanie temi horoshie skripi esli tam neodin normalnij skript neimeetsa :blink:

Потому, что скрипты и впрямь хорошие. если кто не видит, они легко встраиваются в любой другой массив. Жаль только в основном теле скриптов, автор свой "чеклаг" не вставил.

Ну а жалуются, те кому хочется что бы скрипт за них всё делал сам, и снял и одел и починил и перебрал. И при этом еще бил всех вокруг и на вопросы отвечал. Это вам господа не Windows который думает вместо вас, еще и спорит с вашим выбором.
Я не из тех, кого любят. Но я из тех, кого помнят. Proffesion: Archer [Kensaku] Level: Zero Enlightment: Chaotic Evil

#15 Kensaku

Kensaku

    Novice Player

  • Members
  • 144 posts
  • Gender:Male
  • Location:Рига

Posted 14 April 2011 - 15:01

npo100, on Apr 11 2011, 00:16, said:

Проблемма в sub repair() выдает ошибку Line 43: Function not Found - CHECKLAG
и sub checkdurability() а тут Line 70: Function not Found - DELETEJOURNAL

Подскажите че тут н так?!

Скопируй те маленькие скрипты что автор выложил чуть ниже с названиями Checklag и Deletejournal в тот же лоуд где и само тело скрипта. И будет тебе счастье.
Я не из тех, кого любят. Но я из тех, кого помнят. Proffesion: Archer [Kensaku] Level: Zero Enlightment: Chaotic Evil




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users