скрипт на автозаточку!
[HIDE="35"]//Автоматизация заточки предметов до необходимого уровня by NLObP
//Затачиваем поочереди все предметы с Weapon ID пока не переломаем или не заточим //Работа проверена на L2C4 Protocol 660 LocalServer "L2J FORTRESS" //Необходимо затариться оружием, заточками и валерьянкой //Открываем инвентарь для инициализации скрипта //Социальное действие YES начать //Социальное действие NO остановиться //Enjoy! {Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.} //************************************************** **************************** const Name='DeVolf'; Scroll=959; // ItemID Scroll Enchant Weapon (Grade S) Weapon=6579; // ItemID Arcana Mace MaxEnchLvl=10; //max уровень заточки max=100; //max количество предметов в базе var // WpnObjID: array[1..maxwpn,1..maxwpn] of integer; //Weapon ObjID WpnBase: array[1..2,1..max] of integer; //Weapon ObjID,lvl ScrlBase: array[1..max] of integer; //Scroll ObjID add: boolean; //прошла заточка? timer: TTimer; CurEnchLvl, ColvoWpn, ColvoScrl, CurWpn, CurScrl: integer; //************************************************** **************************** procedure Init; //Вызывается при включении скрипта var i:integer; begin //Enchant:=false; CurEnchLvl:=0; timer:=TTimer.Create(nil); timer.OnTimer:=@OnTimerHP; timer.enabled:=false; timer.interval:=2500; //время задержки Say('Для инициализации скрипта, откройте инвентарь'); end; //************************************************** **************************** procedure Free; //Вызывается при выключении скрипта begin WpnBase:=nil; ScrlBase:=nil; timer.Free; end; //************************************************** **************************** procedure Say(msg:string); begin buf:=hstr('4A 00 00 00 00'); WriteD(2); WriteS(Name); WriteS(msg); SendToClientEx(Name); end; //************************************************** **************************** procedure CreateItemBase; //пакет 1B, Создает базу ObjectID по ItemID var i, ss, ww, j, ObjID, ItemID, lvl, ListCount: integer; begin ss:=1; //индекс в массиве скроллов ww:=1; //индекс в массиве предметов j:=4; //смещение для ListCount ListCount:=ReadH(j); //количество итемов не должно превышать max! if ListCount>max then ListCount:=max; j:=8; //смещение для ObjectID //Пробегаем по Инвентарю и сохраняем ObjectID соответствующие необходимым ItemID for i:=1 to ListCount do begin ObjID:=ReadD(j); //ObjectID ItemID:=ReadD(j); //ItemID j:=j+14; Lvl:=ReadD(j); //Level case ItemID of scroll: begin ScrlBase[ss]:=ObjID; ss:=ss+1; //Say('ColvoScrl='+IntToStr(ss)); end; weapon: begin WpnBase[1,ww]:=ObjID; WpnBase[2,ww]:=lvl; ww:=ww+1; //Say('ColvoWpn='+IntToStr(ww)); end; end; j:=j+2; end; ColvoWpn:=ww-1; ColvoScrl:=ss-1; Say('>ColvoWpn='+IntToStr(ColvoWpn)+' ColvoScrl='+IntToStr(ColvoScrl)+' CurEnchLvl='+IntToStr(CurEnchLvl)); end; //************************************************** **************************** procedure UpdateItemBase; //пакет 27, Создает базу ObjectID по ItemID var i, ii, j, ss, ww, ObjID, ItemID, Lvl, ListCount, UpdType: integer; begin ListCount:=ReadH(2); //количество итемов //Пробегаем по Инвентарю и сохраняем пары ObjectID - Lvl j:=4; //смещение для действия с предметом 1-добавлен 2-изменен 3-удален // Say('Апдейт базы!'); for i:=1 to ListCount do begin UpdType:=ReadH(j); j:=j+2; ObjID:=ReadD(j); ItemID:=ReadD(j); j:=j+14; Lvl:=ReadH(j); // Say('Предмет! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(ItemID)); case UpdType of 1:case ItemID of weapon: begin ColvoWpn:=ColvoWpn+1; //Say('Добавили предмет! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(weapon)); for ii:=1 to max do if WpnBase[1,ii]=0 then begin WpnBase[1,ii]:=ObjID; WpnBase[2,ii]:=lvl; end; end; scroll: begin ss:=ss+1; //Say('Добавили скролл! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(scroll)); for ii:=1 to max do if ScrlBase[ii]=0 then ScrlBase[ii]:=ObjID; end; end; 2:case ItemID of weapon: for ii:=1 to max do if WpnBase[1,ii]=ObjID then WpnBase[2,ii]:=lvl; scroll: //Say('Внимание! Изменения в скролле!?'); end; //удален 3:case ItemID of weapon: begin ColvoWpn:=ColvoWpn-1; for ii:=1 to max do if WpnBase[1,ii]=ObjID then begin WpnBase[1,ii]:=0; WpnBase[2,ii]:=0; end; //Say('Удаляем предмет! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(weapon)); end; scroll: begin ColvoScrl:=ColvoScrl-1; for ii:=1 to max do if ScrlBase[ii]=ObjID then ScrlBase[ii]:=0; //Say('Удаляем скролл! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(scroll)); end; end; end; j:=j+2; //следующее смещение для действия с предметом 1-добавлен 2-изменен 3-удален end; Say('>>ColvoWpn='+IntToStr(ColvoWpn)+' ColvoScrl='+IntToStr(ColvoScrl)+' CurEnchLvl='+IntToStr(CurEnchLvl)); end; //************************************************** **************************** function GetNextWeapon: integer; //Выдает ObjID предмета, если не найден в базе, выдает -1, //достигли макс уровня заточки -2, подбираем мин текущий уровень заточки -3 var i: integer; begin Result:=-1; if CurEnchLvl>=MaxEnchLvl then begin Result:=-2; exit; end; for i:=1 to max do begin //находим первый подходящий предмет if (WpnBase[1,i]<>0) and (WpnBase[2,i]<=CurEnchLvl) then begin Result:=WpnBase[1,i]; exit; end; end; CurEnchLvl:=CurEnchLvl+1; Result:=-3; end; //************************************************** **************************** function GetNextScroll: integer; //Выдает ObjID скролла, если не найден в базе, выдает -1 var i: integer; begin Result:=-1; for i:=1 to max do begin //находим первый подходящий предмет if (ScrlBase[i]<>0) then begin Result:=ScrlBase[i]; exit; end; end; end; //************************************************** **************************** procedure UseItem(ObjectID: integer); begin buf:=#$14; WriteD(ObjectID); WriteD(0); SendToServerEx(Name); end; //************************************************** **************************** procedure RequesEnchantItem(ObjectID: integer); begin buf:=#$58; WriteD(ObjectID); SendToServerEx(Name); end; //************************************************** **************************** procedure OnTimerHP(Sender: TObject); var wpn, scrl:integer; begin if ColvoScrl=0 then begin Say('Кончились скроллы! Прервано!'); timer.enabled:=false; exit; end; if ColvoWpn=1 then begin Say('Остался последний предмет! Прервано!'); timer.enabled:=false; exit; end; Scrl:=GetNextScroll; if scrl=-1 then begin Say('Нет такой заточки! Прервано!'); timer.enabled:=false; exit; end; Wpn:=GetNextWeapon; case wpn of -1: begin Say('Нет такого предмета! Прервано!'); timer.enabled:=false; exit; end; -2: begin Say('Достигли максимальный уровень заточки! Прервано!'); timer.enabled:=false; exit; end; -3: begin //Say('Подбираем текущий уровень заточки!'); timer.enabled:=true; exit; end; end; //************************************************ UseItem(Scrl); RequesEnchantItem(Wpn); //************************************************ Say('Заточили предмет! Weapon='+IntToStr(Wpn)); end; //************************************************** **************************** // вызывается при приходе каждого пакета, если скрипт включен //************************************************** **************************** begin //************************************************** ************************** //не обрабатываем пустые пакеты if pck='' then exit; //************************************************** ************************** //социальное действие yes для начало точки if FromClient and (ConnectName=Name) and (pck=HStr('1B 06 00 00 00')) then begin CurEnchLvl:=0; Say('Команда Старт!!!'); timer.enabled:=true; end; //************************************************** ************************** //социальное действие no для начало точки if FromClient and (ConnectName=Name) and (pck=HStr('1B 05 00 00 00')) then begin Say('Команда Стоп!!!'); timer.enabled:=false; end; //************************************************** ************************** //ItemList if FromServer and (ConnectName=Name) and (pck[1]=#$1B) then CreateItemBase; //создание базы предметов // if (ColvoWpn=0) or (ColvoScrl=0) then exit; //если нет базы итемов, скрипт дальше не пустит //************************************************** ************************** //если удалились предметы, стираем в базе предметов пары ObjectID - ItemID if FromServer and (ConnectName=Name) and (pck[1]=#$27) then UpdateItemBase; //Обновление базы, если принят пакет на удаление предмета end. [/HIDE] |
Ответ: скрипт на автозаточку!
Цитата:
Цитата:
|
Ответ: скрипт на автозаточку!
подскажите, что значит "автозаточка"?
|
Ответ: скрипт на автозаточку!
Автозаточка значит - что ты ничего не делаеш а оружие которе у тя в руках точится с помощью тех точек которые у тебя в иневентаре.
|
Ответ: скрипт на автозаточку!
не помогает...
|
Re: скрипт на автозаточку!
................
|
Re: скрипт на автозаточку!
точите определенное оружие - ловите пакет и ставьте его в посылку 100 мс. и кликайте по точкам - оружие будет точиться само , не нужно будет выбирать.
|
Re: скрипт на автозаточку!
ето на l2packethack скрипты??
|
Текущее время: 21:12. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot