Показать сообщение отдельно
Старый 08.01.2010, 10:25   #1244
Местный
 
Аватар для SeregaZ
 
Регистрация: 16.08.2009
Сообщений: 1,224
Сказал Спасибо: 4
Имеет 229 спасибок в 182 сообщенях
SeregaZ пока неопределено
По умолчанию

так кто знал, что надо с точкой переименовывать я без точки переименовывал - ругалось: L2ololo.exe

теперь другой вопрос. при открытии инвентаря приходит довольно большой пакет с повторяющимися блоками. подскажите где взять процедуру обработки этих повторяющихся блоков для поиска ид обьекта по ид предмета по базе.
с заточкой там было все просто - инвентори апдейт присылал всего 2 повторяющихся блока - адена, и эта шмотка. бывало что наоборот сперва шмотка, потом адена - и я сделал два сравнения для обоих случаев. в случае же с перебором инвентаря - то там вариаций будет милион и мой способ не подойдет.
тоже самое касается и чтения бафоф у сопати. там тоже повторяющиеся блоки и их тоже надо перебрать. буду очень признателен за пример подобной процедуры перебора повторяющихся блоков

все. кажись придумал. обьясню на примере перебора бафоф - там блоки повторяются через 10 позиций. следовательно надо поставить все в рипит, прибавлять по 10 и проверять соответвует тому, чего мы ищем. но теперь другая проблема - как остановить рипит? я немогу поставить проверку типа:
если значения не существует, то конец проверки
until bufid = ''; или until bufid = '0'; непомогает.
какой синтаксис если мне надо проверить равно ли чему либо мой bufid?

и с этим вроди разобрался. теперь почемуто не проверяет последний баф. я для проверки сделал вв. и ложу 4 бафа - когда вв любой, но не последний четвертый - срабатывает. когда вв лежит последним - тогда не работает:
Код:
 if FromServer and (pck[1]=#$EE) //перебор бафоф
 then begin 
    baf1:=14;
    baf2:=15;
    baf3:=16;
    baf4:=17;
    idbafa:=pck[baf1]+pck[baf2]+pck[baf3]+pck[baf4];

    repeat
       
       if (idbafa=HStr('B4 04 00 00'))  //вв для проверки
       then begin  
        idtela:=pck[6]+pck[7]+pck[8]+pck[9];
        buf:=#$4A;
        WriteD(0);
        WriteD(10);
        WriteS('');
        WriteS('сработало');
        SendToClient; 
       end;

       baf1:= baf1 + 10;
       baf2:= baf2 + 10;
       baf3:= baf3 + 10;
       baf4:= baf4 + 10;
       idbafa:=pck[baf1]+pck[baf2]+pck[baf3]+pck[baf4];

    until idbafa < '0';
   
 end;

Последний раз редактировалось SeregaZ, 08.01.2010 в 12:41.
SeregaZ вне форума   Ответить с цитированием