Автоматизация заточки предметов до необходимого уровня by NLObP
Возможности скрипта
--------------------
+ Панель управления;
+ Затачиваем по очереди все предметы с ItemID пока не переломаем
или не заточим. Один предмет всегда остаётся.
Необходимо затариться оружием, заточками и валерьянкой.
Name='NLObP'; //Вписать сюда имя чара
//установить константу в зависимости от типа игры (С4 или Интерлюд)
interlude=true; //Interlude - true, C4 - false
Внимание!
Из комбобокса обязательно надо выбрать вещь, чтобы скрипт узнал
ID и количество, только потом ставить напротив галочку.
Галочки снимать не надо, если кончились заточки/вещи - можно сразу идти
покупать и продолжать заточку.
В инвентаре должно быть не менее двух одинаковых затачиваемых вещей, степень заточки значения не имеет
Скрипт распространяется как есть, и я не несу ответственности за то, что ВЫ натворили у себя, его используя.
и чем там секс? тоже самое... только всего 2 варианта:
точка ушла, шмотка точнулась(сломалась)
шмотка точнулась(сломалась), точка ушла
поэтому можно даже не гонять цикл, а просто проверять эти два момента на айди предмета двумя if.
Да это то ясно секс будет со структурой пакета ее не хило потрепали)
NLObP, где в скрипте enchant_by_NLObP_09.rar строка отвечающая за распознавание предметов инвентаря? ItemsID.ini обновил под сервер и прописал к нему путь в скрипте, но всего 2 предмета из списка реально есть в инвентаре. Или в чём может быть проблема? Видит правильно первый предмет из списка и ещё пару.
Кусок из ItemList:
Код:
Type:0x11 (ItemList)
Size: 4485+2
Recive time: 14:42:32:831
0002 h ShowWindow: 1 (0x0001)
0004 h ItemCount: 70 (0x0046)
[begin of repeat block 1/70]
0006 h ItemTypeID: 4 (0x0004)
0008 d ObjectID: 1075161562 (0x4015A9DA)
000C d ItemID: Blessed Scroll: Enchant Armor (S) ID:6578 (0x19B2)
0010 d LocationSlot: 50 (0x00000032)
0014 q Amount: 1161
001C h ItemType2: 5 (0x0005)
001E h CustomType1: 0 (0x0000)
0020 h isEquipped: 0 (0x0000)
0022 d BodyPart: 0 (0x00000000)
0026 h EnchantLevel: 0 (0x0000)
0028 h CustType2: 0 (0x0000)
002A d AugmentID: 0
002E d Mana: -1 (0xFFFFFFFF)
0032 h AttackElement: 65534 (0xFFFE)
0034 h AttackElementPower: 0 (0x0000)
0036 h FireDefElementPower: 0 (0x0000)
0038 h WaterDefElementPower: 0 (0x0000)
003A h WindDefElementPower: 0 (0x0000)
003C h EarthDefElementPower: 0 (0x0000)
003E h HolyDefElementPower: 0 (0x0000)
0040 h UnholyDefElementPower: 0 (0x0000)
0042 d RemainingTime: -9999 (0xFFFFD8F1)
[End of repeat block 1/70]
[begin of repeat block 2/70]
0046 h ItemTypeID: 4 (0x0004)
0048 d ObjectID: 1075161561 (0x4015A9D9)
004C d ItemID: Soulshot: S-Grade ID:1467 (0x05BB)
0050 d LocationSlot: 41 (0x00000029)
0054 q Amount: 9800
005C h ItemType2: 5 (0x0005)
005E h CustomType1: 0 (0x0000)
0060 h isEquipped: 0 (0x0000)
0062 d BodyPart: 0 (0x00000000)
0066 h EnchantLevel: 0 (0x0000)
0068 h CustType2: 0 (0x0000)
006A d AugmentID: 0
006E d Mana: -1 (0xFFFFFFFF)
0072 h AttackElement: 65534 (0xFFFE)
0074 h AttackElementPower: 0 (0x0000)
0076 h FireDefElementPower: 0 (0x0000)
0078 h WaterDefElementPower: 0 (0x0000)
007A h WindDefElementPower: 0 (0x0000)
007C h EarthDefElementPower: 0 (0x0000)
007E h HolyDefElementPower: 0 (0x0000)
0080 h UnholyDefElementPower: 0 (0x0000)
0082 d RemainingTime: -9999 (0xFFFFD8F1)
[End of repeat block 2/70]
[begin of repeat block 3/70]
0086 h ItemTypeID: 4 (0x0004)
0088 d ObjectID: 1075161560 (0x4015A9D8)
008C d ItemID: Charm of Courage: S-Grade ID:8520 (0x2148)
0090 d LocationSlot: 42 (0x0000002A)
0094 q Amount: 3
009C h ItemType2: 5 (0x0005)
009E h CustomType1: 0 (0x0000)
00A0 h isEquipped: 0 (0x0000)
00A2 d BodyPart: 0 (0x00000000)
00A6 h EnchantLevel: 0 (0x0000)
00A8 h CustType2: 0 (0x0000)
00AA d AugmentID: 0
00AE d Mana: -1 (0xFFFFFFFF)
00B2 h AttackElement: 65534 (0xFFFE)
00B4 h AttackElementPower: 0 (0x0000)
00B6 h FireDefElementPower: 0 (0x0000)
00B8 h WaterDefElementPower: 0 (0x0000)
00BA h WindDefElementPower: 0 (0x0000)
00BC h EarthDefElementPower: 0 (0x0000)
00BE h HolyDefElementPower: 0 (0x0000)
00C0 h UnholyDefElementPower: 0 (0x0000)
00C2 d RemainingTime: -9999 (0xFFFFD8F1)
[End of repeat block 3/70]
Смещение поменял на 48 тут:
Код:
begin
j:=4; //смещение для ListCount
ListCount:=ReadH(j); //количество итемов не должно превышать max!
for i:=1 to maxitems do
if (i<=ListCount) then begin
BaseItems[i,1]:=ReadH(j); //ItemType1
BaseItems[i,2]:=ReadD(j); //ObjectID
BaseItems[i,3]:=ReadD(j); //ItemID
BaseItems[i,4]:=ReadD(j); //LocationSlot
BaseItems[i,5]:=ReadD(j); //Count
BaseItems[i,6]:=ReadH(j); //ItemType2
BaseItems[i,7]:=ReadH(j); //CustomType1
BaseItems[i,8]:=ReadH(j); //isEquipped
BaseItems[i,9]:=ReadD(j); //BodyPart
BaseItems[i,10]:=ReadH(j); //EnchantLevel
BaseItems[i,11]:=ReadH(j); //CustType2
BaseItems[i,12]:=ReadD(j); //AugmentationID
//debugmsg('OID='+inttostr(BaseItems[i,2])+' ID='+inttostr(BaseItems[i,3]));
inc(j,48);
end else for k:=1 to 12 do BaseItems[i,k]:=0; // забиваем нулями
InventoryUpdate заменил на 46
Последний раз редактировалось lodek, 26.04.2015 в 17:23.
дело как минимум в этом -> BaseItems[i,5]:=ReadQ(j); //Count
И насколько помню - аналогично правится функция апдейта итемлиста.
__________________ На фразы в аську типа "слух карочь 1)как точить 2)как раскачаться за 5 мин" - игнор. ИМХО идиотизм
Дай голодному рыбу - он будет один день сыт. Покажи ему, как удить рыбу - он пошлёт тебя и скажет, что у него есть более интересные занятия, чем забрасывать снасти в воду
David Kastrup @ de.comp.text.tex.
"Приобретенные навыки общения с маленькими детьми - сильно упрощают взаимопонимание на форумах..."
А вы знаете, что для качественной сварки - место шва нужно протереть спиртом?
дело как минимум в этом -> BaseItems[i,5]:=ReadQ(j); //Count
И насколько помню - аналогично правится функция апдейта итемлиста.
Оставил в инвентаре 5 предметов (адена, заточки и 3 разных вещи, чтоб точить). Комбибокс видел правильно только заточки, они первые в списке и ещё 4 белых поля.
Попробывал заменить в нескольких местах -
BaseItems[i,5]:=ReadD(j); //Count
на
BaseItems[i,5]:=ReadQ(j); //Count
не помогло, стало показывать вещей 40 случайных, в разброс с пустями полями.
Последний раз редактировалось lodek, 27.04.2015 в 00:00.
На твоем примере:
0002 h ShowWindow: 1 (0x0001)
0004 h ItemCount: 70 (0x0046)
[begin of repeat block 1/70]
0006 h ItemTypeID: 4 (0x0004) // отсюда начинается перебор
0008 d ObjectID: 1075161562 (0x4015A9DA)
000C d ItemID: Blessed Scroll: Enchant Armor (S) ID:6578 (0x19B2)
0010 d LocationSlot: 50 (0x00000032)
0014 q Amount: 1161
001C h ItemType2: 5 (0x0005)
001E h CustomType1: 0 (0x0000)
0020 h isEquipped: 0 (0x0000)
0022 d BodyPart: 0 (0x00000000)
0026 h EnchantLevel: 0 (0x0000)
0028 h CustType2: 0 (0x0000)
002A d AugmentID: 0 <<-- вплоть досюда считываются параметры. После ReadD(j) - j должен указывать на ItemTypeID следующего итема. И идет приращивание j (inc(j,X)), чтобы оказаться на следующем итеме. Т.е. к j надо прибавить:
002E d Mana: -1 (0xFFFFFFFF) +4
0032 h AttackElement: 65534 (0xFFFE) +2
0034 h AttackElementPower: 0 (0x0000) +2
0036 h FireDefElementPower: 0 (0x0000) +2
0038 h WaterDefElementPower: 0 (0x0000) +2
003A h WindDefElementPower: 0 (0x0000) +2
003C h EarthDefElementPower: 0 (0x0000) +2
003E h HolyDefElementPower: 0 (0x0000) +2
0040 h UnholyDefElementPower: 0 (0x0000) +2
0042 d RemainingTime: -9999 (0xFFFFD8F1) +4
[End of repeat block 1/70]
[begin of repeat block 2/70]
0046 h ItemTypeID: 4 (0x0004)
0048 d ObjectID: 1075161561 (0x4015A9D9)
004C d ItemID: Soulshot: S-Grade ID:1467 (0x05BB)
0050 d LocationSlot: 41 (0x00000029)
(или иначе $0046 - $002E = $18 = 24)
по-моему получилось - 24, если не ошибаюсь. Это для ItemList. Для апдейтитемлист там несложно пересчитать, по аналогии.
__________________ На фразы в аську типа "слух карочь 1)как точить 2)как раскачаться за 5 мин" - игнор. ИМХО идиотизм
Дай голодному рыбу - он будет один день сыт. Покажи ему, как удить рыбу - он пошлёт тебя и скажет, что у него есть более интересные занятия, чем забрасывать снасти в воду
David Kastrup @ de.comp.text.tex.
"Приобретенные навыки общения с маленькими детьми - сильно упрощают взаимопонимание на форумах..."
А вы знаете, что для качественной сварки - место шва нужно протереть спиртом?
Последний раз редактировалось Breadfan, 27.04.2015 в 02:28.
Не знаю, почему и как, в InventoryUpdate высчитал по методу NLObP 46 и для итемлист также считал вначале 48, но потом в ItemList методом научного перебора правильным оказалось 28, всё видит.
1. А что убрать в скрипте, чтоб надо была 1 вещь, а не 2 одинаковых для начала заточки?
2. Оставил в инвентаре 4 вещи: адена, заточки, 2 одинаковые вещи, выбираю желаемый уровень заточки 6, начинает точить и пишет, что достигнул желаемый уровень 32768 (это проблема InventoryUpdate или другая?).
Последний раз редактировалось lodek, 27.04.2015 в 01:42.
инфа 100% что указав +28 ты оставил там как есть ReadD(j)
(все рассуждения из расшифрованого куска ItemList приведенного выше)
__________________ На фразы в аську типа "слух карочь 1)как точить 2)как раскачаться за 5 мин" - игнор. ИМХО идиотизм
Дай голодному рыбу - он будет один день сыт. Покажи ему, как удить рыбу - он пошлёт тебя и скажет, что у него есть более интересные занятия, чем забрасывать снасти в воду
David Kastrup @ de.comp.text.tex.
"Приобретенные навыки общения с маленькими детьми - сильно упрощают взаимопонимание на форумах..."
А вы знаете, что для качественной сварки - место шва нужно протереть спиртом?
Последний раз редактировалось Breadfan, 27.04.2015 в 03:45.