Показать сообщение отдельно
Старый 13.01.2013, 11:16   #732
Новичок
 
Регистрация: 15.12.2012
Сообщений: 16
Сказал Спасибо: 2
Имеет 1 спасибку в 1 сообщении
zevsloy пока неопределено
По умолчанию

Alexxxxx как ты преодолел в корректоре правильное отображение инвентаря для Бота 10.9.3, файлом L2InfoB.dat созданного от своего клиента проблема не решается.
Протокол клиента был 152, в боте пробовал все протоколы 146,148,152.

Хотел бы узнать есть ли решение для бота 10.9.3 ,сервер Эпилог, чтобы питомцы не определялись в как NPC , а то когда они начинают бафать их начинают атаковать члены пати.
Искал на просторах интернета решение, нашел вот такой скрипт, но что то он у меня не подошел, может кто знает в чем дело?
Код:
//Fix_PartyListPet.fsc Фикс отображения списка пати (сайманеры) для Gracia Final & Epiloge
//скрипт для WP PPC
Const Title = 'Title: Фикс отображения списка пати для Gracia+ by Be3geBJIa3';
Var
  ID,iSID,iPckL: Integer;
  iPos,iPos1,iCol,i,i1: Integer;
  PObjectID,PMaxHP,PCurHP,PMaxMP,PCurMP,PMaxCP,PCurCP : Integer;
  buf,StatusPacket,PName,: string;
begin
  if not( gSys.isGS > 0 ) then exit;
  if length(_gBuff) < 3 then begin
    gBlockPacket;
    exit;
  end;
   ID := gInt(_gBuff,3,1);
   iPckL := length(_gBuff);
   if (ID = $FE) or (ID = $D0) then begin
   iSID := gInt(_gBuff,4,2);
  end;
  //
  if _gFromServ then begin//пакеты от сервера
    case ID of
      //Начало блока если нужно перенести в свой скрипт, если используете case
      $4E://PartySmallWindowAll
        if (iPckL>62) and (gInt(_gBuff, $0C, 4)>=1) then begin
          _gOutBuff := _gBuff;
          iCol := gInt(_gBuff, $0C, 4);
          i := 1;
          iPos := 16;
          while (i<=iCol) and (iPos<iPckL) do begin
            iPos := ScanPck5(_gOutBuff, iPos+4,'s', buf, null, null, null, null);
            iPos := iPos+44;
            iPos1 := iPos;
            if (iPos+8<=iPckL) then begin
              if gInt(_gOutBuff, iPos+4, 4)>0 then begin//значит идет пет
                //обнаружено 2 варианта, подбор методом проб
                iPos := ScanPck5(_gOutBuff, iPos+16,'s', buf, null, null, null, null);
                //iPos := ScanPck5(_gOutBuff, iPos+12,'s', buf, null, null, null, null);
                inc(iPos,20);
              end else begin
                inc(iPos,8);
              end;
              i1 := iPos-iPos1;
              iPos := iPos1;
              delete(_gOutBuff,iPos,i1);
              dec(iPckL,i1);
            end;
            inc(i);
          end;
          delete(_gOutBuff,1,2);
          _gOutBuff := SetPckSize(_gOutBuff);
        end;
      $52://fix PartySmallWindowUpdate
        begin
          ScanPck5(_gbuff,ScanPck5(_gbuff,4,'dsddd',PObjectID,PName,PCurCP,PMaxCP,PCurHP),'ddd',PMaxHP,PCurMP,PMaxMP,null,null);
          StatusPacket := FormatPck('%cdddddddddddddd',[$18,PObjectID,6,$09,PCurHP,$0A,PMaxHP,$0B,PCurMP,$0C,PMaxMP,$21,PCurCP,$22,PMaxCP]);
          gSys.EnSendC(StatusPacket);
          gSys.Sleep(10);
        end;
        //конец блока
    end;
  end else begin//пакеты от клиента
  end;
end.

Последний раз редактировалось zevsloy, 13.01.2013 в 11:23.
zevsloy вне форума   Ответить с цитированием