Breadfan, Ты наверное неправильно понял смысл сообщения) Я уже так сделал. Просто хотел другой скрипт найти, без интерфейса. Он удобнее для использования на нескольких аккаунтах.
И в процедуре Free как раз стоит уничтожение, так что там нужно именно выключение, а не обнуление.
Забродская, Я itemid.ini вообще не пользуюсь) Интуитивно ставлю галочку на пустой строке. Если итемов много - значит, все правильно выбрано. Заточку выбираю по такому же принципу. Она одна в количестве, и находится первой в списке, если ты покупал ее последней.
P.S. Скачал скрипт от Shadow. Нашел несколько недоработок.
В нем неправильно реализована авто покупка вещей. Тестировалось на С4. Процедура AutoBuy нигде не вызывается в скрипте.
Также, в одном из ByPass допущена ошибка, в строке 1620. Параметр "reply" статический, а должен зависеть от ScrollListID. На некоторых серверах это не имеет значения, но на том, где я запускал, при неправильном пакете кикает. Еще OID продавца неплохо было бы сделать константой, т.к. он не всегда определяется автоматически, и при старте заточки нужно добавить код, чтобы выделить NPC, чтобы ByPass уходил ему, а не в пустое место.
Далее, в процессе теста выяснилось, что пакет Multisell с покупкой предмета уходит на ByPass, в котором закупали заточки (нужно выполнять одно действие, либо покупку предмета, либо покупку заточки, в строке 2080. Либо выполнять покупку итема до конца, а не отсылать разные ByPass от покупки предмета и Multisell от покупки заточки). Нужно поставить условие, если начали закупать итемы, то выходим из процедуры заранее, перед покупкой заточек.
В самом конце, где стоит проверка на пакет MultiSellList, по ошибке стоит переменная ItemCount, а должна быть BuyItemCount. Поэтому при покупке покупает 0 предметов. И еще, в константы желательно добавить переменные BuyItemCount и ItemPrice.
При заточке интервал таймера всегда одинаковый, т.к. он выставляется один раз, в процедуре Init. Нужно перенести этот участок в процедуру нажатия кнопки "Начать".
Слежение за пакетами с информацией о персонаже и инвентаре происходит для любого соединения. Необходимо добавить проверку на имя соединения.
Я и так переделываю) Я не хотел ничего плохого сказать, просто пишу ошибки, которые нашел. Еще столкнулся с одной проблемой, которую никак не могу решить. После того, как скрипт заточил все предметы, начитает неправильно определяться OID заточки. При заточке клиент отключен и соединение висит на L2Phx. Перестает приходить пакет 6F (ChooseInventoryItem), и скрипт юзает одну и ту же заточку. При включенном клиенте вроде все работает как надо. Нет мыслей, почему такое может происходить?
оид всегда одинаков вроде...мб дело не в ней, а в оснновм заточки, на который сбрасывает при сломе?
Расчитано в скрипте что на +0 бьет
Добавлено через 2 минуты Забродская, а ты сделай строку считатить из итемсид и вывести в лог. тогда 100% уверен будешь
__________________ На фразы в аську типа "слух карочь 1)как точить 2)как раскачаться за 5 мин" - игнор. ИМХО идиотизм
Дай голодному рыбу - он будет один день сыт. Покажи ему, как удить рыбу - он пошлёт тебя и скажет, что у него есть более интересные занятия, чем забрасывать снасти в воду
David Kastrup @ de.comp.text.tex.
"Приобретенные навыки общения с маленькими детьми - сильно упрощают взаимопонимание на форумах..."
А вы знаете, что для качественной сварки - место шва нужно протереть спиртом?
Последний раз редактировалось Breadfan, 15.12.2012 в 22:11.
Причина: Добавлено сообщение
s:=4; ListCount:=ReadH(s); //количество итемов не должно превышать max! for i:=1 to maxitems do if (i<=ListCount) then begin BaseItems[i,1]:=ReadD(s); //(getObjectId()); BaseItems[i,2]:=ReadD(s); //(getItemId()); BaseItems[i,3]:=ReadD(s); //(getEquipSlot()); BaseItems[i,4]:=ReadQ(s); //(getCount); BaseItems[i,5]:=ReadH(s); //(getItem().getType2ForPackets()); BaseItems[i,6]:=ReadH(s); //(getCustomType1()); BaseItems[i,7]:=ReadH(s); //(isEquipped() ? 1 : 0); BaseItems[i,8]:=ReadD(s); //(getItem().getBodyPart()); BaseItems[i,9]:=ReadH(s); //(getEnchantLevel()); BaseItems[i,10]:=ReadH(s); //(getCustomType2()); BaseItems[i,11]:=ReadD(s); //(getAugmentationId()); BaseItems[i,12]:=ReadD(s); //(getShadowLifeTime()); BaseItems[i,13]:=ReadD(s); //(getTemporalLifeTime()); BaseItems[i,14]:=ReadH(s); //(0x01); BaseItems[i,15]:=ReadH(s); //(getAttackElement()); BaseItems[i,16]:=ReadH(s); //(getAttackElementValue()); BaseItems[i,17]:=ReadH(s); //(getDefenceFire()); BaseItems[i,18]:=ReadH(s); //(getDefenceWater()); BaseItems[i,19]:=ReadH(s); //(getDefenceWind()); BaseItems[i,20]:=ReadH(s); //(getDefenceEarth()); BaseItems[i,21]:=ReadH(s); //(getDefenceHoly()); BaseItems[i,22]:=ReadH(s); //(getDefenceUnholy()); BaseItems[i,23]:=ReadH(s); //(getEnchantOptions()[0]); BaseItems[i,24]:=ReadH(s); //(getEnchantOptions()[1]); BaseItems[i,25]:=ReadH(s); //(getEnchantOptions()[2]); BaseItems[i,26]:=ReadD(s); //(getVisualId());
Пытаюсь адаптировать данный скрипт под хроники lindvior)) Пока застрял в самом начале не пойму где сдвиг( Хавает правильно только 1й айтем) А дальше жуткие сдвиги