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

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

написал я кстати... вот только что закончил свой мега корявый перебор инвентаря находит у меня свиток - радости полные штаны.
вот положу тебе его, ну скопируешь, ну будешь пользоватся - так ведь все равно не поймешь как он работает, и опять при возникновении какой-либо проблемы пойдешь на форум, чтобы тебе опять сделали все готовое. и ник это не отмазка... все когда-то начинали...
PHP код:
  if FromServer and (pck[1]=#$1B)  //разбор инвентаря
  
then begin
     countitem
:= readh(4); //количество всех итемов
     
it1:=12;
     
it2:=13;
     
it3:=14;
     
it4:=15;
     
base1item:=it1+(28*countitem);
     
iditema:=pck[it1]+pck[it2]+pck[it3]+pck[it4];

    
repeat
    
       
if (iditema=HStr('95 17 00 00'))  //свиток пробуждения
       
then begin 
          idsvitka
:= pck[it1-4]+pck[it2-4]+pck[it3-4]+pck[it4-4];
       
end;
       
       
it1:= it1 28;
       
it2:= it2 28;
       
it3:= it3 28;
       
it4:= it4 28;
       
iditema:=pck[it1]+pck[it2]+pck[it3]+pck[it4];

    
until it1 base1item;
    
    if (
idsvitka <> '1')
    
then begin 
     buf
:=#$4A;
     
WriteD(0);
     
WriteD(10);
     
WriteS('');
     
WriteS('айди свитка определен: ' idsvitka);
     
SendToClient;       
    
end
    
else begin
     buf
:=#$4A;
     
WriteD(0);
     
WriteD(10);
     
WriteS('');
     
WriteS('свиток в инвентаре не обнаружен. пробуждение от слипа в данном случае не возможно.');
     
SendToClient;    
    
end
     
  
end
нужно открыть инвентарь - и он найдет игровое айди предмета по айди по базе. если не найдет - то напишет, что не нашел. если что открывать инвентарь автоматом можно так:
PHP код:
 buf:=HStr('0F');   //открытие инвентаря для поиска свитка в инвенторе
 
SendToServer
Добавлено через 8 минут
зато у меня теперь вопрос. значит у меня авто помошник на пвп воротах, мини ангел хранитель, проверяет значения хп сопати, если = 0, то пытается заюзать скил резурект.
в случае если пока он бежит до мертвого сопати, он жмет в город и его хп становица больше 0, идет команда на возврат на стартовую точку.
ну и возникла идея, в случае, если он всетаки реснул сопати, а этот самый сопати тупанул и нажал отмена реса и продолжает лежать - так вот для такого случая решил сделать реакцию на слово "рес" в пати чате.
в пакете Say2 удобно - есть айди персонажа. по нему буду строить таргет. но вот ник персонажа все портит. ники ведь бывают разной длинны. вот пример:
PHP код:
1 пакет:
4A 07 E5 90 48 03 00 00 00 45 00 6C 00 66 00 69 00 65 00 63 00 00 00 40 04 35 04 41 04 00 00 

2 пакет
:
4A 39 8E 90 48 03 00 00 00 42 00 61 00 74 00 61 00 72 00 65 00 79 00 6B 00 61 00 00 00 40 04 35 04 41 04 00 00 
ну не догоняю я как боротся с масками пакетов, и оттуда получать данные вот как мне в этом случае - проверять пакет с конца. то есть конец то у обоих пакетов одинаковый слово "рес" - 40 04 35 04 41 04 00 00

Последний раз редактировалось SeregaZ, 23.01.2010 в 23:33. Причина: Добавлено сообщение
SeregaZ вне форума   Ответить с цитированием