Вернуться   CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг
Войти через OpenID

Скриптинг Форум посвещенный созданию скриптов для L2PacketHack

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 20.09.2007, 00:07   #1
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
Злость Полезные функции

Некоторые полезные куски кода и функции для использования в своих скриптах:

Отправка сообщений в объявления:
Код:
// отправка сообщений в объявления
// видишь только ты

procedure SendMsg(msg:string);
begin 
  buf:=#$4A;
  WriteD(0);
  WriteD(10);
  WriteS('');
  WriteS(msg);
  SendToClient;
end;
для использования:
Код:
SendMsg('Панеслася!!!');
Таймер со сквозным проходом
Если ставить sleep() то скрипт останавливается на время, но и пакеты тоже не принимаются и не отправляются, так вот эта функция позваляет избежать этого
Код:
//(c)dmitry501 
var
 tick: Integer;

procedure Init;
begin
end;
function Pause(Timewait: Integer):Boolean;
// сквозная проверка без остановки скрипта (c)dmitry501
  var
    t : integer;
  begin
    result := false;
    t := Round(Time*86400);
    if  t > (tick + Timewait) then
      begin
        tick := t;
        result := true;
      end;
  end;
пример использования
Код:
  if   (NoEarned=1) and pause(2) then //+ 2 секунды ожидания 
          begin
                ...........
          end;
StrToHex преобразование
Код:
//(c) xkor
function StrToHex(packet: string):string;
var
  i:integer;
  tmp:byte;

  function ByteToHex(b: byte): Char;
  begin
    if b<10 then result:=chr(b+$30)
      else result:=chr(b+$37);
  end;

begin
  result:='';
  for i:=1 to length(packet) do begin
    tmp:=ord(packet[i]) div 16;
    result:=result+ByteToHex(tmp);
    tmp:=ord(packet[i]) - tmp*16;
    result:=result+ByteToHex(tmp)+' ';
  end;
end;
пример использования
Код:
    hextr2:=hextostr(pck);
    SHOWMESSAGE(hextr2);
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
За это сообщение xkor нажился 4 спасибками от:
Старый 27.05.2008, 22:38   #2
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

А просто добавить процедуру в скрипте
Код:
procedure Block;
begin
  pck:='';
end;
NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился спасибкой от:
Старый 12.12.2008, 17:33   #3
Новичок
 
Регистрация: 10.12.2008
Сообщений: 13
Сказал Спасибо: 1
Имеет 3 спасибок в 3 сообщенях
Lelee пока неопределено
По умолчанию

ребят подскажите что означают эти цифры в скрипте Shura1oplot
Код:
procedure InventoryCreate;
var
  i,k: integer;
begin
  for i:=0 to 79 do
    if (i<ReadH(4)) then begin
      Inventory[i,0]:=ReadH(i*28+6);  // itemType1
      Inventory[i,1]:=ReadD(i*28+8);  // ObjectId
      Inventory[i,2]:=ReadD(i*28+12); // ItemID
      Inventory[i,3]:=ReadD(i*28+16); // count
      Inventory[i,4]:=ReadH(i*28+20); // itemType2
      Inventory[i,5]:=ReadH(i*28+22); // CustType1
      Inventory[i,6]:=ReadH(i*28+24); // isEquipped
      Inventory[i,7]:=ReadD(i*28+26); // BodyPart
      Inventory[i,8]:=ReadH(i*28+30); // EnchantLevel
      Inventory[i,9]:=ReadH(i*28+32); // CustType2
число 28 а в скрипте ниже число 30 откуда это и что это?
Код:
procedure InventoryUpdate;
var
  i,j,k: integer;
begin
  for j:=0 to (ReadH(2)-1) do begin
    case pck[j*30+4] of
      #$01: k:=0; // add item, запишет на пустую ячейку
      #$02: k:=ReadD(j*30+8); // mod item
      #$03: begin // remove item, обнулит ячейки удаленного предмета
              k:=ReadD(j*30+8);
              for i:=0 to 79 do
                if (Inventory[i,0]=k) then begin
                  for k:=0 to 9 do Inventory[i,k]:=0;
                  exit;
                end;
            end;
      end;
      for i:=0 to 79 do
        if (Inventory[i,1]=k) then begin
          Inventory[i,0]:=ReadH(j*30+6);  // itemType1
          Inventory[i,1]:=ReadD(j*30+8);  // ObjectId
          Inventory[i,2]:=ReadD(j*30+12); // ItemID
          Inventory[i,3]:=ReadD(j*30+16); // count
          Inventory[i,4]:=ReadH(j*30+20); // itemType2
          Inventory[i,5]:=ReadH(j*30+22); // CustType1
          Inventory[i,6]:=ReadH(j*30+24); // isEquipped
          Inventory[i,7]:=ReadD(j*30+26); // BodyPart
          Inventory[i,8]:=ReadH(j*30+30); // EnchantLevel
          Inventory[i,9]:=ReadH(j*30+32); // CustType2
          break;
        end;
      end;
end;
просто хочу адаптировать этот скрипт под грация парт 2 вот возник вопрос )

склоняюсь, что это тип пакета. поэтому и спрашиваю, на грации парт 2 все другое, примеров с Интерлюда нету (

Последний раз редактировалось Lelee, 12.12.2008 в 17:36.
Lelee вне форума   Ответить с цитированием
Старый 12.12.2008, 17:56   #4
Местный
 
Аватар для wanick
 
Регистрация: 20.09.2008
Сообщений: 133
Сказал Спасибо: 32
Имеет 54 спасибок в 22 сообщенях
wanick пока неопределено
По умолчанию

не видишь в цикле написано, оно означает что каждые 28, во втором случае 30 блоков, значение определяют одно и тоже но для разных вещей

то есть другими словами что каждая вещь описана таким количеством блоков

это берется из структуры пакета.

Последний раз редактировалось wanick, 12.12.2008 в 17:59.
wanick вне форума   Ответить с цитированием
Старый 12.12.2008, 18:10   #5
Новичок
 
Регистрация: 10.12.2008
Сообщений: 13
Сказал Спасибо: 1
Имеет 3 спасибок в 3 сообщенях
Lelee пока неопределено
По умолчанию

wanick,
обьясни плиз как определить это число из структуры пакета?
другими словами что надо сделать?
Lelee вне форума   Ответить с цитированием
Старый 12.12.2008, 18:20   #6
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Цитата:
Сообщение от Lelee Посмотреть сообщение
обьясни плиз как определить это число из структуры пакета?
Два пакета (с4,с5) отвечающие за инвентарь:0x1B (ItemListPacket) и 0x27 (InventoryUpdate)

Код:
Tип: 0x1B (ItemListPacket)
Pазмер: 873+2
Время прихода: 00:02:57:611
0002 h window: 0 (0x0000)
0004 h ListCount: 31 (0x001F)
[Начало повторяющегося блока 1/31]
0006 h itemType1: 4
0008 d ObjectId: 1075665350
0012 d ItemID: Greater Healing Potion ID:1539 (0x0603)
0016 d count: 35
0020 h itemType2: 5
0022 h CustType1: 0
0024 h isEquipped: 0
0026 d BodyPart: 0
0030 h EnchantLevel: 0
0032 h CustType2: 0
[Конец повторяющегося блока  1/31]
[Начало повторяющегося блока 2/31]
0034 h itemType1: 4
...
[Конец повторяющегося блока  2/31]
первый предмет начинается со смещения 6, второй со смещения 34, разница между ними 28

Код:
Tип: 0x27 (InventoryUpdate)
Pазмер: 41+2
Время прихода: 00:35:54:781
0002 h count: 2 (0x0002)
[Начало повторяющегося блока 1/2]
0004 h 1add2mod3remove: 3
0006 h itemType1: 4
0008 d ObjectId: 269129013
0012 d ItemId: Blue Gemstone ID:6353 (0x18D1)
0016 d Count: 0
0020 h itemType2: 5
0022 h cusType1: 0
0024 h isEquipped: 0
0026 d BodyPart: 0
0030 h EnchantLevel: 0
0032 h cusType2: 0
[Конец повторяющегося блока  1/2]
[Начало повторяющегося блока 2/2]
0034 h 1add2mod3remove: 3
...
[Конец повторяющегося блока  2/2]
первый предмет начинается со смещения 4, второй со смещения 34, разница между ними 30

Для Т0 добавились
Код:
d(AugId)d(Shadowtime)
значит на 8 байт блок больше
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни



Последний раз редактировалось NLObP, 12.12.2008 в 18:29.
NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился 2 спасибками от:
Старый 12.12.2008, 18:22   #7
Местный
 
Аватар для wanick
 
Регистрация: 20.09.2008
Сообщений: 133
Сказал Спасибо: 32
Имеет 54 спасибок в 22 сообщенях
wanick пока неопределено
По умолчанию

вообще обсуждение не в теме, но все же в последних версиях вроде бы добавилась , еще расположение предмета в инвентаре попробуй увеличить это число
wanick вне форума   Ответить с цитированием
Старый 12.12.2008, 18:36   #8
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Это пакет для Т1 и выше от Саурона, если его чуть поправить(последнее d(?)), то станет подходить для Грации.

Код:
11=ItemList:h(psize)c(ID)h(ShowWindow)h(count:For.0022)h(ItemType1)d(ObjectID)d(ItemID:Get.Func01)d(LocationSlot)d(Count)h(ItemType2)h(CustomType1)h(isEquipped)d(BodyPart)h(EnchantLevel)h(CustType2)d(AugmentationID)d(Mana)d(AttackAttrElement)d(AttackAttrElementVal)d(DefAttrFire)d(DefAttrWater)d(DefAttrWind)d(DefAttrEarth)d(DefAttrHoly)d(DefAttrUnholy)d(?)
PS: Для того, чтобы быстро найти пакет в просмотре надо выбрать первый и быстро набрать первые 2-3 символа названия пакета, получается типа быстрый поиск первого подходящего.
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни



Последний раз редактировалось NLObP, 12.12.2008 в 18:45.
NLObP вне форума   Ответить с цитированием
Старый 23.02.2009, 18:13   #9
Новичок
 
Регистрация: 17.02.2009
Сообщений: 13
Сказал Спасибо: 10
Имеет 1 спасибку в 1 сообщении
Insane* пока неопределено
По умолчанию

QaK, методом тыка определил (взял другой скрипт), что проблема судя по всему в смещении. Как я понял, надо использовать формулу j*22+6 для определения ОИД.
Insane* вне форума   Ответить с цитированием
Старый 23.02.2009, 22:08   #10
Рыцарь
 
Аватар для QaK
 
Регистрация: 28.09.2007
Сообщений: 1,558
Сказал Спасибо: 71
Имеет 351 спасибок в 244 сообщенях
QaK пока неопределено
По умолчанию

Insane*, формулу сам подбери, я давно этот скрипт не юзал - поэтому не помню =) скорее всего ты прав - в смещении.
QaK вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 21:50.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!