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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 18.03.2009, 01:50   #1
Местный
 
Аватар для 8tomat8
 
Регистрация: 17.01.2009
Сообщений: 282
Сказал Спасибо: 64
Имеет 81 спасибок в 63 сообщенях
8tomat8 пока неопределено
Печаль Проблема с l2phx и L2

когда я на ночь ставлю работать скрипт на заточку то утром обнаруживаю ошибку о недостатке виртуальной памяти. Память увеличил(с другого диска добавил 4Гб памяти) всеравно при загружености на все 2гб(стандартной с диска С) вылетает ошибка подскажите может кто то сталкивался
__________________
помог?СКАЖИ СПАСИБО!)

Мастерство программиста не в том, чтобы писать программы, работающие без ошибок, а в том, чтобы писать программы, работающие при любом количестве ошибок.
Цитата:
[10-06, 14:15] efreet Заплачу за настройку l2px
[11-06, 09:25] xkor не плач)
Цитата:
Сообщение от Psih Посмотреть сообщение
Вот еще один вопрос:Вот вчера было све нормально
8tomat8 вне форума   Ответить с цитированием
Старый 18.03.2009, 15:01   #2
Местный
 
Регистрация: 18.02.2008
Сообщений: 141
Сказал Спасибо: 16
Имеет 66 спасибок в 30 сообщенях
ratvier
По умолчанию

А если просто клиент на ночь оставить в том месте?
ratvier вне форума   Ответить с цитированием
Старый 18.03.2009, 18:03   #3
Пользователь
 
Регистрация: 05.02.2009
Сообщений: 62
Сказал Спасибо: 1
Имеет 18 спасибок в 9 сообщенях
lexayar пока неопределено
По умолчанию

Сколько же у тебя заточек, у меня обычно минут через 10 все заканчиваются
Возможно скрипт с утечкой написан. А может в Пакетхаке утечка.
Выложи хоть скрипт посмотреть.
lexayar вне форума   Ответить с цитированием
Старый 20.03.2009, 22:08   #4
Местный
 
Аватар для 8tomat8
 
Регистрация: 17.01.2009
Сообщений: 282
Сказал Спасибо: 64
Имеет 81 спасибок в 63 сообщенях
8tomat8 пока неопределено
По умолчанию

Цитата:
Сообщение от ratvier Посмотреть сообщение
А если просто клиент на ночь оставить в том месте?
Да все великолепно пашит


Цитата:
Сообщение от lexayar Посмотреть сообщение
Сколько же у тебя заточек, у меня обычно минут через 10 все заканчиваются
Возможно скрипт с утечкой написан. А может в Пакетхаке утечка.
Выложи хоть скрипт посмотреть.
Заточок - 10шт каждий раз как заканчиваются)

А скрипт от NLObP, только старый, поскольку на сервере при поломке оружия оно сбрасивается не на 0 а на 10) и новый скрипт подвисает((

Код:
program zatochka_IL;


const
  Name='To4uJIa'; //Вписать сюда имя чара
  ScrollID=6577;     //957 ScrollID скролла заточки
  ItemID=6598;    //129 ItemIDID затачиваемого предмета
  MaxEnchLvl=100;//уровень заточки который требуется достич
  max=130;     //количество слотов в инвентаре чара, максимально - 250

var
  ItemBase:  array[1..2,1..max] of integer;    //ItemID ObjID, lvl
  ScrollBase:  array[1..max] of integer;    //Scroll
  add: boolean; //прошла заточка?
  timer: TTimer;
  CurEnchLvl, ColvoItem, ColvoScrl, CurItem, CurScrl: integer;
  SocialID:integer; // вспомогательная

procedure Init; //Вызывается при включении скрипта
var
  i:integer;
begin
  //Enchant:=false;
  CurEnchLvl:=0;
  timer:=TTimer.Create(nil);
  timer.OnTimer:=@OnTimerHP;
  timer.enabled:=false;
  timer.interval:=350; //время задержки
  add:=false;
  for i:=1 to max do begin
    //очищаем масив
    //Say('очищаем масив');
    ItemBase[1,i]:=0;
    ItemBase[2,i]:=0;
  end;

  //Пакет RequestItemList
  buf:=hstr('0F');
  SendToServerEx(Name);
end;

//******************************************************************************
procedure Free; //Вызывается при выключении скрипта
begin
  ItemBase:=nil;
  ScrollBase:=nil;
  timer.Free;
end;

//******************************************************************************
procedure Say(msg:string);
begin
  buf:=hstr('4A 00 00 00 00');
  WriteD(2);
  WriteS(Name);
  WriteS(msg);
  SendToClientEx(Name);
end;

//******************************************************************************
procedure CreateItemBase; //пакет 1B, Создает базу ObjectID по ItemID
var
  i, ss, ww, j, ObjID, ItmID, lvl, ListCount: integer;
begin
  ss:=1; //индекс в массиве скроллов
  ww:=1; //индекс в массиве предметов
  j:=4; //смещение для ListCount
  ListCount:=ReadH(j); //количество итемов не должно превышать max!
  if ListCount>max then ListCount:=max;
  j:=8; //смещение для ObjectID
  //Пробегаем по Инвентарю и сохраняем ObjectID соответствующие необходимым ItemID
  for i:=1 to ListCount do begin
     ObjID:=ReadD(j);      //ObjectID
     ItmID:=ReadD(j);    //ItemID
     j:=j+14;
     Lvl:=ReadD(j);    //Level
     case ItmID of
        ScrollID: begin
            ScrollBase[ss]:=ObjID;
            inc(ss);
           ////// !!!!!!!!!!! Say('ColvoScrl='+IntToStr(ss));    !!!!!!!!!!!!!!!!!!   ////
        end;
        ItemID: begin
            ItemBase[1,ww]:=ObjID;
            ItemBase[2,ww]:=lvl;
            inc(ww);
           ///// !!!!!!!!!!!!!!! Say('ColvoItem='+IntToStr(ww));  !!!!!!!!!!!!!!!! /////
        end;
     end;
    j:=j+10;
  end;
  ColvoItem:=ww-1;
  ColvoScrl:=ss-1;
  Say('>ColvoItem='+IntToStr(ColvoItem)+' ColvoScrl='+IntToStr(ColvoScrl)+' CurEnchLvl='+IntToStr(CurEnchLvl));
end;

//******************************************************************************
procedure UpdateItemBase; //пакет 27, Создает базу ObjectID по ItemID
var
  i, ii, j, ss, ww, ObjID, ItmID, Lvl, ListCount, UpdType: integer;
begin
  ListCount:=ReadH(2); //количество итемов
  //Пробегаем по Инвентарю и сохраняем пары ObjectID - Lvl
  j:=4; //смещение для действия с предметом 1-добавлен 2-изменен 3-удален
//  Say('Апдейт базы!');
  for i:=1 to ListCount do begin
    UpdType:=ReadH(j);
    j:=j+2;
    ObjID:=ReadD(j);
    ItmID:=ReadD(j);
    j:=j+14;
    Lvl:=ReadH(j);
    Say('Предмет! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(ItemID));
    case UpdType of
      1:case ItmID of
          ItemID: begin
            ColvoItem:=ColvoItem+1;
            Say('Добавили предмет! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(ItemID));
            for ii:=1 to max do
              if ItemBase[1,ii]=0 then begin ItemBase[1,ii]:=ObjID; ItemBase[2,ii]:=lvl; end;
          end;
          ScrollID: begin
            ss:=ss+1;
            Say('Добавили скролл! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(ScrollID));
            for ii:=1 to max do if ScrollBase[ii]=0 then ScrollBase[ii]:=ObjID;
          end;
      end;
      2:case ItmID of
        ItemID:
          for ii:=1 to max do
            if ItemBase[1,ii]=ObjID then ItemBase[2,ii]:=lvl;
        ScrollID:
          Say('Внимание! Изменения в скролле!?');
      end;
      //удален
      3:case ItmID of
        ItemID: begin
          ColvoItem:=ColvoItem-1;
          for ii:=1 to max do
            if ItemBase[1,ii]=ObjID then begin ItemBase[1,ii]:=0; ItemBase[2,ii]:=0; end;
              Say('Удаляем предмет! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(ItemID));
        end;
        ScrollID: begin
          ColvoScrl:=ColvoScrl-1;
          for ii:=1 to max do
            if ScrollBase[ii]=ObjID then ScrollBase[ii]:=0;
            Say('Удаляем скролл! ObjectID='+IntToStr(ObjID)+' ItemID='+IntToStr(ScrollID));
        end;
      end;
    end;
    j:=j+10; //следующее смещение для действия с предметом 1-добавлен 2-изменен 3-удален
  end;
  Say('>>ColvoItem='+IntToStr(ColvoItem)+' ColvoScrl='+IntToStr(ColvoScrl)+' CurEnchLvl='+IntToStr(CurEnchLvl));
end;

//******************************************************************************
function GetNextItemID: integer;
//Выдает ObjID предмета, если не найден в базе, выдает -1,
//достигли макс уровня заточки -2, подбираем минимальный текущий уровень заточки -3
var
  i: integer;
begin
  Result:=-1;
  if CurEnchLvl>=MaxEnchLvl then begin
    Result:=-2;
    exit;
  end;
  for i:=1 to max do begin
    //находим первый подходящий предмет
    if (ItemBase[1,i]<>0) and (ItemBase[2,i]<=CurEnchLvl) then begin
      Result:=ItemBase[1,i];
      exit;
    end;
  end;
  inc(CurEnchLvl);
  Result:=-3;
end;

//******************************************************************************
function GetNextScroll: integer;
//Выдает ObjID скролла, если предмет не найден в базе, выдает -1
var
  i: integer;
begin
  Result:=-1;
  for i:=1 to max do begin
    //находим первый подходящий предмет
    if (ScrollBase[i]<>0) then begin
      Result:=ScrollBase[i];
      exit;
    end;
  end;
end;

//******************************************************************************
procedure UseItem(ObjectID: integer);
begin
  buf:=#$14;
  WriteD(ObjectID);
  WriteD(0);
  SendToServerEx(Name);
end;

//******************************************************************************
procedure RequestEnchantItem(ObjectID: integer);
begin
  buf:=#$58;
  WriteD(ObjectID);
  SendToServerEx(Name);
end;

//******************************************************************************
procedure OnTimerHP(Sender: TObject);
var
  Item, scrl:integer;
begin
 if ColvoScrl=0 then begin
      timer.enabled:=false;
      Say('Покупаю скролы');
      delay(500);
      ///buf:=HStr('A7 CD A4 08 00 A0 86 01 00 01 00 00 00 00 00 00 00 00 00 00 00');
      ///SendToServer;
      buf:=HStr('A7 B1 02 00 00 A0 86 01 00 0A 00 00 00 00 00 00 00 00 00 00 00');
      SendToServer;
      delay(500);
      timer.enabled:=true;
      exit;
    end;
    ///if ColvoItem=1 then begin
     /// Say('Остался последний предмет! Прервано!');
     /// timer.enabled:=false;
     /// exit;
    ///end;
    Scrl:=GetNextScroll;
    if scrl=-1 then begin
      Say('Нет такой заточки! Прервано!');
      timer.enabled:=false;
      exit;
    end;
    Item:=GetNextItemID;
    case Item of
      -1: begin
          Say('Нет такого предмета! Прервано!');
          timer.enabled:=false;
          exit;
      end;
      -2: begin
          Say('Достигли максимальный уровень заточки! Прервано!');
          timer.enabled:=false;
          exit;
      end;
      -3: begin
          Say('Подбираем текущий уровень заточки!');
          timer.enabled:=true;
          exit;
      end;
    end;
    //************************************************

    UseItem(Scrl);
    RequestEnchantItem(Item);
    //************************************************
    ///Say('Заточили предмет! ItemID='+IntToStr(Item));
end;

//******************************************************************************
// вызывается при приходе каждого пакета, если скрипт включен
//******************************************************************************
begin
  //****************************************************************************
  //не обрабатываем пустые пакеты
  if pck='' then exit;

  //****************************************************************************
  if FromClient and (ConnectName=Name) and (pck[1]=#$1B) then begin
    SocialID:=ReadD(2);
    case SocialID of
      //социальное действие Yes для начала затачивания
      6: begin
        CurEnchLvl:=0;
        Say('Команда Старт!!!');
        timer.enabled:=true;
        exit;
      end;
      //социальное действие No для окончания
      5: begin
        Say('Команда Стоп!!!');
        timer.enabled:=false;
        exit;
      end;
    end;
  end;

  //****************************************************************************
  if FromServer then
  case pck[1] of
    //Пакет ItemList
    #$1B: CreateItemBase; //создание базы предметов
    //если удалили предметы, стираем в базе предметов пары ObjectID - ItemID
    #$27: UpdateItemBase; //Обновление базы, если принят пакет на удаление предмета
  end;

end.
__________________
помог?СКАЖИ СПАСИБО!)

Мастерство программиста не в том, чтобы писать программы, работающие без ошибок, а в том, чтобы писать программы, работающие при любом количестве ошибок.
Цитата:
[10-06, 14:15] efreet Заплачу за настройку l2px
[11-06, 09:25] xkor не плач)
Цитата:
Сообщение от Psih Посмотреть сообщение
Вот еще один вопрос:Вот вчера было све нормально
8tomat8 вне форума   Ответить с цитированием
Старый 22.03.2009, 23:14   #5
Местный
 
Аватар для 8tomat8
 
Регистрация: 17.01.2009
Сообщений: 282
Сказал Спасибо: 64
Имеет 81 спасибок в 63 сообщенях
8tomat8 пока неопределено
По умолчанию

АП!!!!
__________________
помог?СКАЖИ СПАСИБО!)

Мастерство программиста не в том, чтобы писать программы, работающие без ошибок, а в том, чтобы писать программы, работающие при любом количестве ошибок.
Цитата:
[10-06, 14:15] efreet Заплачу за настройку l2px
[11-06, 09:25] xkor не плач)
Цитата:
Сообщение от Psih Посмотреть сообщение
Вот еще один вопрос:Вот вчера было све нормально
8tomat8 вне форума   Ответить с цитированием
Старый 28.03.2009, 23:50   #6
Местный
 
Регистрация: 05.11.2008
Сообщений: 168
Сказал Спасибо: 35
Имеет 139 спасибок в 66 сообщенях
Fer123 пока неопределено
По умолчанию

Попробуй убрать "Запоминать пакеты"
Fer123 вне форума   Ответить с цитированием
За это сообщение Fer123 нажился спасибкой от:
Старый 28.03.2009, 23:56   #7
Местный
 
Аватар для 8tomat8
 
Регистрация: 17.01.2009
Сообщений: 282
Сказал Спасибо: 64
Имеет 81 спасибок в 63 сообщенях
8tomat8 пока неопределено
По умолчанию

Цитата:
Сообщение от Fer123 Посмотреть сообщение
Попробуй убрать "Запоминать пакеты"
Попробую, спс
__________________
помог?СКАЖИ СПАСИБО!)

Мастерство программиста не в том, чтобы писать программы, работающие без ошибок, а в том, чтобы писать программы, работающие при любом количестве ошибок.
Цитата:
[10-06, 14:15] efreet Заплачу за настройку l2px
[11-06, 09:25] xkor не плач)
Цитата:
Сообщение от Psih Посмотреть сообщение
Вот еще один вопрос:Вот вчера было све нормально
8tomat8 вне форума   Ответить с цитированием
Ответ

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



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

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


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

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

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