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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 27.05.2008, 21:12   #21
Новичок
 
Регистрация: 30.11.2007
Сообщений: 3
Сказал Спасибо: 0
Имеет 1 спасибку в 1 сообщении
Mavr
По умолчанию

В перечне функций, доступных в скриптах, очень сильно не хватает функции на блокировку пакета. Например, BlockPacket в WP PPC Саурона. Xkor подумай может стоит ее добавить.
Хотя если выполнить команду pck:=''; то пакет дальше не пойдет, но всеже хотелось бы иметь отдельную функцию.

Кто захочет может и сам сделать. Для этого в function TL2PacketHackMain.CallMethod добавляем

if MethodName = 'BLOCKPACKET' then begin
TfsScript(Integer(Params[0])).Variables['pck']:='';
end else

И в procedure TL2PacketHackMain.RefreshPrecompile добавляем

fsScript.AddMethod('procedure BlockPacket('+fss+')',CallMethod);

Ну с топик может и промахнулса, а заменить BlockPacket на просто Block ничего не мешает. Вобщем посты можете потереть, а добавлять функцию в релиз или нет решать автору.
Ну топик привёл в читабельный вид (с) Grinch

Последний раз редактировалось Grinch, 28.05.2008 в 16:48.
Mavr вне форума   Ответить с цитированием
За это сообщение Mavr нажился спасибкой от:
Старый 27.05.2008, 22:38   #22
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

А просто добавить процедуру в скрипте
Код:
procedure Block;
begin
  pck:='';
end;
NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился спасибкой от:
Старый 28.05.2008, 05:45   #23
Рыцарь
 
Аватар для Grinch
 
Регистрация: 29.02.2008
Сообщений: 928
Сказал Спасибо: 127
Имеет 130 спасибок в 93 сообщенях
Grinch пока неопределено
По умолчанию

3.20 это последняя версия этой программы насколько мне известнотак что каждый правит как ему хочиться только вот одно но сколько человек сделают также, ещё вопросы есть?

или как написал
NLObP, добаляет процедуру сами прям в скрипт, но вот это на любителя.

Последний раз редактировалось Grinch, 28.05.2008 в 16:51. Причина: Добавлено сообщение
Grinch вне форума   Ответить с цитированием
Старый 20.07.2008, 15:33   #24
Новичок
 
Аватар для Alan
 
Регистрация: 11.10.2007
Адрес: Питер
Сообщений: 13
Сказал Спасибо: 261
Имеет 0 спасибок в 0 сообщенях
Alan
По умолчанию

[quote=NLObP;2599][code]// copyright (c) 2006, 2007 Puella
//модифицировано by NLObP
//Может работать одновременно несколько скриптов.
//Необходимо изменить константу MyNAME!!!

Сообщение от Shnaider
Может кто то,кому нетрудно переделать Юлин скрипт,так чтобы он

NLObP сломал уже мозг, как переделать Юлькин скрипт что бы на покупку тоже анеки рассказывал? Пошел опять крутить его........ ааааааааааааааааааа(звук падующего тела 8) )
Alan вне форума   Ответить с цитированием
Старый 31.08.2008, 19:39   #25
Новичок
 
Регистрация: 03.08.2008
Сообщений: 5
Сказал Спасибо: 1
Имеет 1 спасибку в 1 сообщении
}{@KeR пока неопределено
По умолчанию

Цитата:
Сообщение от QaK Посмотреть сообщение
Мой вариант "инвентаризации", описание атрибутов объектов и действий над ними взял у Shura1oplot'a
При запуске этого скрипта в l2phx321 показывает ошыбкув месте гле я выделили.

Код:
{Delete}if Action=3 then begin for ij:=1 to ItemCount-1 do //Ищем удаляемый предмет
                                   begin If Inventory[iji,2]=ReadD((j-1)*30+8) then k:=true; //Если нашли,фиксируем это
                                         If k then //если найден удаляемы объект
                                            for ijk:=1 to 10 do //то сдвигаем элементы массива-инвентаря
                                            Inventory[ij,ijk]:=Inventory[ij+1,ijk];
                                   end;
                               Dec(ItemCount);//Уменьшаем количество занятых слотов
                         end;
  end;
end;
Не сваркайте меня за глупый вопрос но всётаки, пробовал запускать оба скрипта на инвентаризацию и некакой реакции, как он вобще должен работать с инвентарём обьясните нубу???????

Последний раз редактировалось }{@KeR, 31.08.2008 в 21:15.
}{@KeR вне форума   Ответить с цитированием
Старый 01.09.2008, 10:16   #26
Рыцарь
 
Аватар для QaK
 
Регистрация: 28.09.2007
Сообщений: 1,558
Сказал Спасибо: 71
Имеет 351 спасибок в 244 сообщенях
QaK пока неопределено
По умолчанию

Цитата:
Сообщение от }{@KeR Посмотреть сообщение
Не сваркайте меня за глупый вопрос но всётаки, пробовал запускать оба скрипта на инвентаризацию и некакой реакции, как он вобще должен работать с инвентарём обьясните нубу???????
там ijk должно быть, очепятка =) Скрипт ведет мониторинг инвентаря.

Добавлено через 2 минуты
ItemCount:integer; //количество занятых слотов/количество вещей
Inventory: array[1..250,1..10]of integer; //массив инвентаря
//инвентарь
//1 - ItemType1
//2 - ObjectID
//3 - ItemID
//4 - ItemCount
//5 - ItemType2
//6 - CustType1
//7 - IsEquipped
//8 - BodyPart
//9 - EnchantLevel
//10 - CustType2

описание массива инвентаря, если для тебя непонятно, что это означает, тогда исчи учебники по дельфе.

Последний раз редактировалось QaK, 01.09.2008 в 10:16. Причина: Добавлено сообщение
QaK вне форума   Ответить с цитированием
Старый 12.12.2008, 17:33   #27
Новичок
 
Регистрация: 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   #28
Местный
 
Аватар для wanick
 
Регистрация: 20.09.2008
Сообщений: 133
Сказал Спасибо: 32
Имеет 54 спасибок в 22 сообщенях
wanick пока неопределено
По умолчанию

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

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

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

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

wanick,
обьясни плиз как определить это число из структуры пакета?
другими словами что надо сделать?
Lelee вне форума   Ответить с цитированием
Старый 12.12.2008, 18:20   #30
Рыцарь
 
Аватар для 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 спасибками от:
Ответ

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


Опции темы
Опции просмотра

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

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


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

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

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