|
WalkMode - Общение разработчиков - Программирование для Perfect World, общение и обсуждене разработок |
27.01.2012, 09:35
|
#1
|
|
|
|
Сержант
|
Регистрация: 18.12.2009
Сообщений: 152
Популярность: 1075
Сказал(а) спасибо: 45
Поблагодарили 204 раз(а) в 67 сообщениях
|
WalkMode
Подскажите пожайлуста, если не трудно и известно, есть ли флаг подобный флагу WalkMode в структуре персонажа, но для игрока пати? Такой флаг есть для структуры игроков находящихся рядом, но не хотелось бы нагружать бота ненужным сканированием.
Заранее спасибо.
|
|
|
27.01.2012, 14:01
|
#2
|
|
|
|
Капитан
|
Регистрация: 24.09.2010
Сообщений: 262
Популярность: 6723
Сказал(а) спасибо: 118
Поблагодарили 346 раз(а) в 104 сообщениях
|
Re: WalkMode
|
|
|
27.01.2012, 14:10
|
#3
|
|
|
|
Сержант
|
Регистрация: 18.12.2009
Сообщений: 152
Популярность: 1075
Сказал(а) спасибо: 45
Поблагодарили 204 раз(а) в 67 сообщениях
|
Re: WalkMode
|
|
|
27.01.2012, 23:44
|
#4
|
|
|
|
Капитан
|
Регистрация: 24.09.2010
Сообщений: 262
Популярность: 6723
Сказал(а) спасибо: 118
Поблагодарили 346 раз(а) в 104 сообщениях
|
Re: WalkMode
|
|
|
28.01.2012, 12:47
|
#5
|
|
|
|
Сержант
|
Регистрация: 18.12.2009
Сообщений: 152
Популярность: 1075
Сказал(а) спасибо: 45
Поблагодарили 204 раз(а) в 67 сообщениях
|
Re: WalkMode
|
|
|
28.01.2012, 22:46
|
#6
|
|
|
|
Разведчик
|
Регистрация: 01.07.2009
Сообщений: 21
Популярность: 83
Сказал(а) спасибо: 30
Поблагодарили 14 раз(а) в 11 сообщениях
|
Re: WalkMode
Код:
function IfMob:boolean;
var
ptr_,ptr2_,hash,
listBase,index,
mobBase:dword;
temp,tt:dword;
_targetWid, type_: DWord;
begin
ptr_:=getDword(pers.hProc,GAME_ADD);
ptr_:=getdword(pers.hproc,ptr_+ofpers);
_targetWid:=getdword(pers.hproc,ptr_+ofpersTargetWid);
ptr2_:=getdword(pers.hproc,GAME_ADD);
hash:=getdword(pers.hproc,ptr2_+HashPtr);
hash:=getdword(pers.hproc,hash+HashMobs);
hash:=getdword(pers.hproc,hash+HashKey);
listBase:=getdword(pers.hproc,ptr2_+hashptr);
listBase:=getdword(pers.hproc,listBase+HashMobs);
listBase:=getdword(pers.hproc,listBase+HashList);
index:=listBase+(_TargetWID mod hash)*4;
while(index <> 0) and (getdword(pers.hproc,index+$8) <> _TargetWID) do
begin
index:=getdword(pers.hproc,index+$0);
end;
if index <> 0 then
begin
mobBase:= getdword(pers.hproc,index+$4);
type_:=GetDWord(pers.hproc,mobBase+OfMobType);
end;
if type_=6 then
Result:=true; //если моб
end;
_targetWid - может быть WID перса, или моба, не важно, я брас с таргета перса.
А по нужным смещениям читаем их данные.
Так я получаю инфу моб ли в таргете.
Заметьте, - без перебора. Было уже (на пв лабе)
Читаем инфу с хэш по seed (семечку)
Дабы не смущало.
адреса с этой функции:
Код:
//Hash Tables
HashPtr= $1c;
HashPlayers= $20;
HashMobs= $24;
HashItems= $28;
HashKey= $24;
HashList= $18;
Последний раз редактировалось krysun; 28.01.2012 в 22:49.
|
|
|
Пользователь сказал cпасибо:
|
|
29.01.2012, 10:31
|
#7
|
|
|
|
Сержант
|
Регистрация: 18.12.2009
Сообщений: 152
Популярность: 1075
Сказал(а) спасибо: 45
Поблагодарили 204 раз(а) в 67 сообщениях
|
Re: WalkMode
перебор всё-таки есть
Код:
while(index <> 0) and (getdword(pers.hproc,index+$8) <> _TargetWID) do
begin
index:=getdword(pers.hproc,index+$0);
end;
но всё равно, спасибо, с хэш-таблицами еще не пробовал работать
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 01:49.
|
|