| Yoko http://forum.yoko.com.ua/ |
|
| Loot for DRW Shard http://forum.yoko.com.ua/viewtopic.php?f=20&t=4150 |
Page 1 of 1 |
| Author: | Dominator [ 2005-06-07 08:39:43 ] |
| Post subject: | Loot for DRW Shard |
Скрипт на лут под шард ДРВ. Спасибо Beyonder за его скрипт .Я его немного дописал и подправил под свои нужды ################################## ### AutoLoot v 3.2 by Beyonder , Edit Dominator # ################################## # ### Запускать auto_loot() ### Run the function auto_loot() # ### Нужна любая функция CheckLag() ### Any CheckLag() function is needed for script # ## Время достаточное для открытия контейнера ## Time enough for container to open var OpenContWait=400 ## Время между лутом вещей с трупов ## Delay after looting each item from corpses var LootItemWait=400 ## Время между лутом вещей с земли ## Delay after looting each item from ground var LootGroundWait=400 ## Нужно ли брать вещи без разбору? ## Taking items without specification var LootAllItems=1 # 1=true 0=false ## Сначала резать трупы? ## Carve corpses first var CutCorpse=true ## Тип вещи которой будем резать ## Type of the item we want to carve the corpses var CutItemType='0x0F52' ## Как далеко лежащие трупы можно лутить ## Distance to the corpse we can loot var maxlen=3 ## ID мешка куда будем складывать вещи ## ID of the bag we want to put the items to var BagID='0x40032183' ## Забирать вещи с земли? ## Do you want loot from the ground too? var LootGround=true ## Время достаточное на разрезание трупа ## Time enough for carving the corpse var CutTime=300 ## Отключить вывод системных сообщений в клиенте ## Disable verbosing in client var NoVerbose=true ### Основная функция лута # ContainerID - ID контейнера # BagID - ID мешка куда складывать вещи ### Main looting function # Container ID - ID of the container to loot # BagID - bag where to put sub loot_container(ContainerID,BagID) var ContCnt=3 #Количество указанных контейнеров # Container count var NeedCnt=21 #Количество указанных вещей для лута # Loot items count dim ContFr[4] #Массив контейнеров. Число в скобках должно быть больше ContCnt # Container array, value must be set >ContCnt dim ContTo[40] #То-же условие что и выше # Same as for ContFr dim NeedFr[40] #Массив вещей. Число в скобках должно быть больше NeedCnt # Item array # Value must be set > NeedCnt dim NeedTo[40] #То-же условие что и для NeedFr # Same as for NeedFr dim NeedTypes[40] #То-же условие что и для NeedFr # Same as for NeedFr var ItemGr var ItemID var FCnt var iItem var waittime if ContainerID==UO.GetSerial('ground') then waittime=LootGroundWait else waittime=LootItemWait end if ##### Настройка вещей ##### Item config #### Контейнеры #### Containers ContFr[0]='0x0E70' ContTo[0]='0x0E80' # ContFr[1]='0x09B0' ContTo[1]='0x09B0' #### Вещи #### Items #### Gold NeedFr[2]='0x0EED' NeedTo[2]='0x0EED' #### Dead Woods NeedFr[3]='0x0F90' NeedTo[3]='0x0F90' #### Skeleton Bones NeedFr[4]='0x0F7E' NeedTo[5]='0x0F7E' #### Eyes of newt NeedFr[5]='0x0F87' NeedTo[5]='0x0F87' #### Wyrm"s Hearts NeedFr[6]='0x0F91' NeedTo[6]='0x0F91' #### Mana (Total mana) NeedFr[7]='0x09DF' NeedTo[7]='0x09DF' #### GH NeedFr[8]='0x09BB' NeedTo[8]='0x09BB' #### FS NeedFr[9]='0x1F5F' NeedTo[9]='0x1F5F' #### Full_Platemail NeedFr[10]='0x1410' NeedTo[10]='0x1415' #### Heater NeedFr[11]='0x1B76' NeedTo[11]='0x1B76' #### VikingSword NeedFr[12]='0x13B9' NeedTo[12]='0x13B9' #### Halberd NeedFr[13]='0x143e' NeedTo[13]='0x143e' #### Bow NeedFr[14]='0x13b1' NeedTo[14]='0x13b1' #### GA ; GI ; MR NeedFr[15]='0x0F84' NeedTo[15]='0x0F86' #### BP NeedFr[16]='0x0F7A' NeedTo[16]='0x0F7A' #### NS NeedFr[17]='0x0F88' NeedTo[17]='0x0F88' #### SA NeedFr[18]='0x0F8C' NeedTo[18]='0x0F8C' #### SS NeedFr[19]='0x0F8D' NeedTo[19]='0x0F8D' #### Batwing NeedFr[20]='0x0F78' NeedTo[20]='0x0F78' #### Blank Scroll NeedFr[21]='0x0E34' NeedTo[21]='0x0E34' #### Какие из перечисленных типов нам нужны #### Which of the types we need NeedTypes[0]=1 NeedTypes[1]=1 NeedTypes[2]=1 NeedTypes[3]=1 NeedTypes[4]=1 NeedTypes[5]=1 NeedTypes[6]=1 NeedTypes[7]=1 NeedTypes[8]=1 NeedTypes[9]=1 NeedTypes[10]=1 NeedTypes[11]=1 NeedTypes[12]=1 NeedTypes[13]=1 NeedTypes[14]=1 NeedTypes[15]=1 NeedTypes[16]=1 NeedTypes[17]=1 NeedTypes[18]=1 NeedTypes[19]=1 NeedTypes[20]=1 NeedTypes[21]=1 #### Getting items up repeat UO.FindType(-1,-1,ContainerID) FCnt=UO.FindCount() if UO.FindCount()>0 then ItemGr=UO.GetGraphic('finditem') ItemID=UO.GetSerial('finditem') if LootAllItems==0 then ## Scanning for bags iItem=0 while iItem<ContCnt if IsDip(ItemGr,ContFr[iItem],ContTo[iItem]) then UO.UseObject(ItemID) ## Opening container wait(OpenContWait) loot_container(ItemID,BagID) UO.Hide(ItemID) ## Closing opened container iItem=ContCnt end if iItem=iItem+1 wend ## Scanning for items iItem=0 while iItem<NeedCnt if NeedTypes[iItem] AND IsDip(ItemGr,NeedFr[iItem],NeedTo[iItem]) then UO.MoveItem(ItemID,0,BagID) wait(waittime) iItem=NeedCnt end if iItem=iItem+1 wend else UO.MoveItem(ItemID,0,BagID) wait(waittime) end if UO.Ignore(ItemID) end if until FCnt==0 end sub ## Функция режет выбранный труп ## Function cuts selected corpse Sub CutCorpseID(CorpseID) var CutID var Dressed=true if UO.GetGraphic(UO.ObjAtLayer('Rhand'))==CutItemType then CutID=UO.GetSerial(UO.ObjAtLayer('Rhand')) else if UO.GetGraphic(UO.ObjAtLayer('Lhand'))==CutItemType then CutID=UO.GetSerial(UO.ObjAtLayer('Lhand')) else UO.FindType(CutItemType,-1,'my') CutID=UO.GetSerial('finditem') Dressed=false end if end if if not Dressed then UO.SetArm('cutting_start_arm') end if UO.WaitTargetObject(CorpseID) UO.UseObject(CutID) wait(CutTime) return Dressed end sub ### Функция возвращает следующий труп ### Function returns next corpse sub next_corpse() var CorpseID repeat UO.FindType('0x2006',-1,'ground') ### Finding corpse CorpseID=UO.GetSerial('finditem') if UO.FindCount()==0 then CorpseID=0 ## No more corpses else UO.Ignore(CorpseID) return CorpseID end if until CorpseID==0 return CorpseID end sub ### Проверка на принадлежность значения диапазону ### Check for a value being between bounds sub IsDip(x,f,t) var i_x=UO.Hex2Int(x) var i_f=UO.Hex2Int(f) var i_t=UO.Hex2Int(t) if (i_x>=i_f AND i_x<=i_t) OR (i_x<=i_f AND i_x>=i_t) then return true else return false end if end sub Sub CollectCorpses(Arr) var CorpseID=1 var CorpseCnt=0 UO.IgnoreReset() while CorpseID<>0 CorpseID=next_corpse() if CorpseID<>0 then Arr[CorpseCnt]=CorpseID UO.Ignore(CorpseID) CorpseCnt=CorpseCnt+1 end if wend return CorpseCnt end sub ### Функция лутящая все трупы вокруг ### All corpse looting function sub auto_loot() dim Corpses[50] var CorpseCnt=0 var CorpseNum var Dressed=true uo.set('quiet',NoVerbose) uo.set('finddistance',maxlen) ## Searching Corpses CorpseCnt=CollectCorpses(Corpses) ## Looting corpses if (CorpseCnt>0) then if CutCorpse then for CorpseNum=0 to CorpseCnt-1 UO.Print('Cutting') Dressed=Dressed*CutCorpseID(Corpses[CorpseNum]) next CorpseCnt=CollectCorpses(Corpses) end if end if if CorpseCnt>0 then if not Dressed then UO.Arm('cutting_start_arm') end if for CorpseNum=0 to CorpseCnt-1 UO.DeleteJournal() UO.UseObject(Corpses[CorpseNum]) wait(OpenContWait) loot_container(Corpses[CorpseNum],BagID) next end if if LootGround then loot_container('ground',BagID) # end if UO.IgnoreReset() uo.set('quiet',0) end sub |
|
| Author: | Sfagnum [ 2005-06-07 10:05:13 ] |
| Post subject: | |
хехе... ну ты и извращенец не пояснишь что это? Code: sub IsDip(x,f,t) зы а насчёт порезки... мб сделать массив типов которыми резать нельзя? их вроде не так и много в руки берётся... и если ни один из этих типов то берётся ножик... типа ньюби даггер |
|
| Author: | Beyonder [ 2005-06-07 12:07:35 ] |
| Post subject: | |
Это моя функция. Она возвращает труе если x принадлежит диапазону (f;t), false сли не принадлежит. В нее передаються 3 строки типа (например "0x1234"). Первая строка, тип текущего обьекта, вторая - начало диапазона типов, третья - конец. Тоесть IsDip('0x0044','0x0000','0x0100') == true так как 0x0044 находиться между 0x0000 и 0x100. |
|
| Author: | Beyonder [ 2005-06-07 12:09:57 ] |
| Post subject: | |
Да и кстати, этот скрипт лучше не разбирать так как буквально через неделю появиться гигант всех лутов С поддержкой отделбных цветов для отдельных типов, диапазонов, записей, и многого другого =). |
|
| Author: | Sfagnum [ 2005-06-07 13:01:59 ] |
| Post subject: | |
Beyonder wrote: Это моя функция. Она возвращает труе если x принадлежит диапазону (f;t), false сли не принадлежит. В нее передаються 3 строки типа (например "0x1234"). Первая строка, тип текущего обьекта, вторая - начало диапазона типов, третья - конец. ну в принципе на понимание процессов в ф-ии у меня мозгов хватило... вопрос поставим по другому - [но зачем? [Атата I'm]]
Тоесть IsDip('0x0044','0x0000','0x0100') == true так как 0x0044 находиться между 0x0000 и 0x100. вернее в чём смысл? |
|
| Author: | Askaneli [ 2005-06-07 14:37:40 ] |
| Post subject: | |
Надо Сфаги, надо. |
|
| Author: | Sfagnum [ 2005-06-07 15:06:25 ] |
| Post subject: | |
Askaneli wrote: Надо Сфаги, надо. в этом я не сомневаюсь... на зачем? не догоняю |
|
| Author: | Dominator [ 2005-06-08 02:04:58 ] |
| Post subject: | |
[quote="Beyonder"]Это моя функция. Она возвращает труе если x принадлежит диапазону (f;t), false сли не принадлежит. В нее передаються 3 строки типа (например "0x1234"). Первая строка, тип текущего обьекта, вторая - начало диапазона типов, третья - конец. Ето не только твоя функция ,я вообще взял полностью твой скрипт ,доделал итемы которые необходимо лутать под ДрВ шард (я просто вспомнил что полно народу постоянно ищет тподобные скрипты) |
|
| Author: | flake [ 2005-06-08 10:44:14 ] |
| Post subject: | |
Так почему это не только его функция? Автор ведь он. |
|
| Author: | Dominator [ 2005-06-08 14:36:56 ] |
| Post subject: | |
flake wrote: Так почему это не только его функция?
Автор ведь он. Собственно я почти так и выразился (правдо неочень получилось) А автор действительно Beyonder . Я просто его дописал немножко и всё |
|
| Author: | Beyonder [ 2005-06-08 14:45:50 ] |
| Post subject: | |
Я не имел ввиду что только эта функция моя, а имелось ввиду что не стоит задавать вопрос Dominator-у, так как функция моя. А функция нужна для основного сравнения предметов. Скрипт сделан так, что он перебирает не элементы массива, а элементы мешка сравнивая с каждым элементом массива. А зачем создавать список свитков типа: 0x0001 0x0002 0x0003 0x004... если можно просто записать 0x0001-0x0030. А эта функция какраз для проверки лежит ли число в указанном диапазоне. |
|
| Author: | Sfagnum [ 2005-06-08 15:28:11 ] |
| Post subject: | |
Beyonder wrote: Я не имел ввиду что только эта функция моя, а имелось ввиду что не стоит задавать вопрос Dominator-у, так как функция моя. ясн...
А функция нужна для основного сравнения предметов. Скрипт сделан так, что он перебирает не элементы массива, а элементы мешка сравнивая с каждым элементом массива. А зачем создавать список свитков типа: 0x0001 0x0002 0x0003 0x004... если можно просто записать 0x0001-0x0030. А эта функция какраз для проверки лежит ли число в указанном диапазоне. просто смутило название переменных передаваемых в ф-ю Code: ContFr[0]='0x0E70'типа на объявление контейнеров похоже |
|
| Author: | KTO nyKHyJI??? [ 2005-06-09 08:36:44 ] |
| Post subject: | |
Beyonder wrote: Да и кстати, этот скрипт лучше не разбирать так как буквально через неделю появиться гигант всех лутов
С поддержкой отделбных цветов для отдельных типов, диапазонов, записей, и многого другого =). Ждёммс это будет НЕЧТО? )) |
|
| Author: | NEf_ [ 2011-07-01 04:14:15 ] |
| Post subject: | Re: Loot for DRW Shard |
Доброго времени суток! При включении выборочного лута скрипт выдаёт ошибку "Line 175: Runtime error" Code: ## Нужно ли брать вещи без разбору? Attachment: inja_loot_er.JPG [ 4.75 KiB | Viewed 5314 times ] При чём, 175 строка - это условие выбора предмета из списка лута " if IsDip(ItemGr,ContFr[iItem],ContTo[iItem]) then " Сам же sub IsDip(x,f,t) не большой и явных ошибок в нём не вижу... Code: ### Проверка на принадлежность значения диапазону Впрочем, было бы чудесно, если бы сам Beyonder ответил на вопрос или может кто-то видел его "гигант всех лутов" и даст ссылку на тему? |
|
| Author: | Kynep [ 2011-07-20 09:08:47 ] |
| Post subject: | Re: Loot for DRW Shard |
МОгильщик... Такую тему откопал! 6 Лет прошло... |
|
| Page 1 of 1 | All times are UTC+02:00 |
| Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |
|