Цитата:
Сообщение от Druids
l2phx наезжает на строчку в этой строке:
ListCount:=ReadH(j); //количество итемов не должно превышать max!
И что это значит?это он выделяет когда ещё неподключился к клиенту,а когда подключается,то постоянно выдаёт ошибки
|
У тебя какие хроники? Для С4 и Интерлюдии отличается скрипт.
Скопируй в свой скрипт взамен своего, и расскоментируй нужную часть, закоменти ненужную:
Код:
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; //если больше, то игнорируем и используем значение из 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;
inc(ss);
end;
weapon: begin
WpnBase[1,ww]:=ObjID;
WpnBase[2,ww]:=lvl;
inc(ww);
end;
end;
//для С4
j:=j+2;
//для Интерлюдии
//j:=j+10;
end;
dec(ColvoWpn);
dec(ColvoScrl);
end;
Замени у себя еще проедуру INIT на эту, здесь сразу запрашивается список предметов:
Код:
procedure Init; //Вызывается при включении скрипта
var
i:integer;
begin
CurEnchLvl:=0;
timer:=TTimer.Create(nil);
timer.OnTimer:=@OnTimerHP;
timer.enabled:=false;
timer.interval:=5000; //время задержки
add:=false;
//RequestItemList запрашиваем пакет списка предметов
buf:=hstr('0F');
SendToServerEx(Name);
end;
Добавлено спустя 17 минут 25 секунд:
Цитата:
Сообщение от Druids
l2phx наезжает на строчку в этой строке:
ListCount:=ReadH(j); //количество итемов не должно превышать max!
И что это значит?это он выделяет когда ещё неподключился к клиенту,а когда подключается,то постоянно выдаёт ошибки
|
Не забудь поправить под себя вот эти константы:
Код:
const
Name='NLObP'; //заменить на имя своего чара
Scroll=957; // чем будем точить, например 957 - ItemID Crystall Scroll Enchant Weapon (Grade D)
Weapon=129; //что будем точить, например 129 - ItemID Sword of Revolution
MaxEnchLvl=21; //поставить максимальный желаемый уровень заточки, не факт что доточится =)
Добавлено спустя 7 минут 56 секунд:
Re: Re:
Цитата:
Сообщение от PunkRediska
я разабрался в чём там праблема.....там кагда хп моба=0 вылетают паакеты нескалько из каторых дроп айтим причём они идут падрят с интервалам в t причём t стремиться к нулю и t> чем время обработки скрипта вобшем праблема в движке он запускает скрипт для первого пакета а, пака скрипт выпалняеться приходят несколко других пакетав.Вот и палучяеться что кагда скрипт атправляет пакет паднять кол-во пришедших на клиент паетав дроп айтим>1ого,но следуйший абрабатываемый пакет это не тот пакет каторый был после 1ого дроп айтима а тот пакет каторый идёт за пакетам каторый атаслал скрипт.
|
Все верно пишешь. Только надо учесть, что сама прога успевает посмотреть все пакеты, так как она их шифрует/дешифрует. Не успевает клиент за скриптом. Для этого пакетики мы в базу складываем, а потом заставляем клиента все пакетики исполнить. У меня лично, все предметы собирает, но бывает и подглючивает.