Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Зацикливаюсь в циклах =_=

-

Общение разработчиков

- Программирование для Perfect World, общение и обсуждене разработок

Ответ
 
Опции темы
Старый 03.10.2013, 18:46   #1
 Пехотинец
Аватар для sedrik1992
 
sedrik1992 никому не известный тип
Регистрация: 03.02.2013
Сообщений: 60
Популярность: 10
Сказал(а) спасибо: 12
Поблагодарили 25 раз(а) в 12 сообщениях
 
По умолчанию Зацикливаюсь в циклах =_=

Доброго времени суток.
Пытаюсь читать данные по структуре моба.
алгоритм ясен, но просидел целый день и безрезультатно..
в общем часть кода:
Код:
  ReadProcessMemory(hProcess,Ptr(ba), @buf, 4,PF);
  ReadProcessMemory(hProcess,Ptr(buf+$1C), @buf, 4,PF);
  ReadProcessMemory(hProcess,Ptr(buf+$34), @WID, 4,PF);
  ReadProcessMemory(hProcess,Ptr(WID+$C88), @WID, 4,PF);  //Считываем Target ID

  ReadProcessMemory(hProcess,Ptr(buf+$1C), @buf, 4,PF);
  ReadProcessMemory(hProcess,Ptr(buf+$24), @buf1, 4,PF);
  ReadProcessMemory(hProcess,Ptr(buf1+$1C), @buf2, 4,PF);	//Добрались до структуры моба
  ReadProcessMemory(hProcess,Ptr(buf1+$14), @buf3, 4,PF);	//Счетчик мобов вокруг

	// Теперь нужно запустить цикл по ближайшим мобам:

For i:=1 to buf3 do
begin
  ReadProcessMemory(hProcess,Ptr(buf2+i*p), @buf4, 4,PF); // p=0x4 (const)
  IF buf4<>0 then
  begin
    ReadProcessMemory(hProcess,Ptr(buf2+$120), @mwid, 4,PF); //World ID
    ReadProcessMemory(hProcess,Ptr(buf2+$124), @mid, 4,PF);	// ID
    If  WID=mwid then
      begin
	RealID:=IntToStr(mid);
	здесь нужно закончить цикл по i
      end;
    end;
end;
Подскажите, как правильно остановить цикл и считать допустим RealID
________________
World ID | Кубометр
  Ответить с цитированием
Старый 03.10.2013, 19:41   #2
 Пехотинец
Аватар для tianddu
 
tianddu на правильном путиtianddu на правильном пути
Регистрация: 20.08.2009
Сообщений: 90
Популярность: 173
Сказал(а) спасибо: 14
Поблагодарили 26 раз(а) в 8 сообщениях
 
По умолчанию Re: Зацикливаюсь в циклах =_=

впиши
exit;
или переведи все на цикл repeat until
  Ответить с цитированием
Старый 03.10.2013, 19:44   #3
 Разведчик
Аватар для Dasp
 
Dasp никому не известный тип
Регистрация: 01.02.2011
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Зацикливаюсь в циклах =_=

в делфи нет оператора Break?
  Ответить с цитированием
Старый 03.10.2013, 19:51   #4
 Пехотинец
Аватар для tianddu
 
tianddu на правильном путиtianddu на правильном пути
Регистрация: 20.08.2009
Сообщений: 90
Популярность: 173
Сказал(а) спасибо: 14
Поблагодарили 26 раз(а) в 8 сообщениях
 
По умолчанию Re: Зацикливаюсь в циклах =_=

[Ссылки могут видеть только зарегистрированные пользователи. ] основные операторы функции расписаны очень хорошо и понятно) и примеры
  Ответить с цитированием
Старый 03.10.2013, 20:33   #5
-= Мастер Света =-
 Рыцарь-капитан
Аватар для Ginrey
 
Ginrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака Норриса
Регистрация: 14.06.2012
Сообщений: 511
Популярность: 7566
Сказал(а) спасибо: 4
Поблагодарили 181 раз(а) в 88 сообщениях
 
По умолчанию Re: Зацикливаюсь в циклах =_=

функция Exit у нас завершает данную процедуру полностью, но вам нужно только выйти из цикла , в случае совпадения, в этом поможет break . который прерывает текущий цикл и переходит на следующую процедуру. И так ради интереса зачем задавать переменную "p" если можно просто умножить на 4
________________
Хотите как то отблагодарить за помощь?
Не стесняйтесь нажимайте "Спасибо"

Делаю программы на заказ, по всем вопросам в скайп: Ginrey2

Последний раз редактировалось Ginrey; 03.10.2013 в 20:35.
  Ответить с цитированием
Старый 03.10.2013, 23:06   #6
-= Мастер Света =-
 Рыцарь-лейтенант
Аватар для Smertig
 
Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(
Регистрация: 31.01.2011
Сообщений: 413
Популярность: 14489
Золото Zhyk.Ru: 300
Сказал(а) спасибо: 77
Поблагодарили 361 раз(а) в 145 сообщениях
Отправить сообщение для Smertig с помощью ICQ Отправить сообщение для Smertig с помощью Skype™
 
По умолчанию Re: Зацикливаюсь в циклах =_=

Цитата:
Сообщение от sedrik1992Посмотреть сообщение
ReadProcessMemory(hProcess,Ptr(buf1+$14), @buf3, 4,PF);

Это количество мобов? Тогда спешу огорчить, цикл не будет правильно считывать. Массив мобов имеет вид не:
Код:
array[1] - моб 1-й 
array[2] - моб 2-й
....
array[n] - моб n-й
Он имеет вид
Код:
array[3] - моб 1-й 
array[7] - моб 2-й
array[87] - моб 3-й
array[182] - моб 4-й
....
П.с. числа рандомные брал
Структуры отдельных мобов разбросаны по всему массиву. Поэтому цикл меняем на
Код:
repeat
бла бла
..
if WID <> 0 Then i += 1;
until i >= buf3
(хз, как в дельфи)
перед циклом счетчик i = 0

Так, стоп. Я понял, что ТСу весь массив не нужен. Тогда
Код:
i = -1;
repeat
i := i+1;
wid = trololo // *считываем айди моба по структуре i*4*
until (i >= $300) OR (wid = needed_id) // ждем нужного айди, либо конца массива мобов (768 мобов)
На выходе получаем i - значение итератора, смотрим структуру i*4 - там и лежит инфа о нужном мобе
________________
Больше не занимаюсь читами, ушёл в серверную часть. Новый ник - int 3.
P.S. Но я всё такой же добрый модератор раздела PW.

Последний раз редактировалось Smertig; 03.10.2013 в 23:08.
  Ответить с цитированием
Пользователь сказал cпасибо:
sedrik1992 (04.10.2013)
Старый 03.10.2013, 23:46   #7
 Разведчик
Аватар для fds255
 
fds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известен
Регистрация: 23.06.2012
Сообщений: 43
Популярность: 427
Сказал(а) спасибо: 18
Поблагодарили 59 раз(а) в 35 сообщениях
 
По умолчанию Re: Зацикливаюсь в циклах =_=

Цитата:
Сообщение от sedrik1992Посмотреть сообщение
ReadProcessMemory(hProcess,Ptr(buf2+$120), @mwid, 4,PF); //World ID

Судя по твоему коду, сильно сомневаюсь, что здесь buf2 должно быть.

а по теме, вместо слов :

"здесь нужно закончить цикл по i"

поставь

break;
________________
MultiXBot
MultiX_POT
  Ответить с цитированием
Старый 04.10.2013, 02:59   #8
 Пехотинец
Аватар для sedrik1992
 
sedrik1992 никому не известный тип
Регистрация: 03.02.2013
Сообщений: 60
Популярность: 10
Сказал(а) спасибо: 12
Поблагодарили 25 раз(а) в 12 сообщениях
 
По умолчанию Re: Зацикливаюсь в циклах =_=

Вот так работает:
Код:
i:=$56;           //Высчитал через CE под конкретного моба
          ReadProcessMemory(hProcess,Ptr(buf2+i*$4), @buf2, 4,PF);
          ReadProcessMemory(hProcess,Ptr(buf2+$4), @buf2, 4,PF);
          ReadProcessMemory(hProcess,Ptr(buf2+$120), @mwid, 4,PF);
          ReadProcessMemory(hProcess,Ptr(buf2+$124), @mid, 4,PF);
          edit3.Text:=inttostr(mwid);    //Вывожу значение, совпадает с ID таргета
а с циклом выдает всегда ноль, почему я в 1м посте и написал, что не знаю как закончить цикл, что б сохранить значение.
Код:
i:=-1;
repeat
i:=i+1;
          ReadProcessMemory(hProcess,Ptr(buf2+i*$4), @buf2, 4,PF);
          ReadProcessMemory(hProcess,Ptr(buf2+$4), @buf2, 4,PF);
          ReadProcessMemory(hProcess,Ptr(buf2+$120), @mwid, 4,PF);


until (i >= $300) OR (mwid = WID);

          edit3.Text:=inttostr(i); // i выдает 768, т.е. цикл не остановился на mwid=WID
У меня появляется подозрение, что в цикле не сравниdаются mwid и WID, почему - не могу понять

Добавлено через 32 минуты
Разобрался, я в самом начале затупил... считал Таргет ID не в основном цикле (от i=0 до i=768).
как только перенес, всё заработало.
________________
World ID | Кубометр

Последний раз редактировалось sedrik1992; 04.10.2013 в 03:32. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 04.10.2013, 08:12   #9
-= Мастер Света =-
 Рыцарь-капитан
Аватар для Ginrey
 
Ginrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака Норриса
Регистрация: 14.06.2012
Сообщений: 511
Популярность: 7566
Сказал(а) спасибо: 4
Поблагодарили 181 раз(а) в 88 сообщениях
 
По умолчанию Re: Зацикливаюсь в циклах =_=

а ты попробуй выводить сообщение на каждом мобе и проверить работоспособность своего цикла. засунь все в один и не разделяй, вот тебе пример
Код:
for i:=0 to $300 do
begin
ReadProcessMemory(hProcess,ptr(baseadress),@buf,4,BytesCount);
ReadProcessMemory(hProcess,ptr(buf+$1C),@buf,4,BytesCount);
ReadProcessMemory(hProcess,ptr(buf+$1C),@buf,4,BytesCount);
ReadProcessMemory(hProcess,ptr(buf+$20),@buf,4,BytesCount);
ReadProcessMemory(hProcess,ptr(buf+$18),@value,4,BytesCount);
ReadProcessMemory(hProcess,ptr(buf+i*4),@buf,4,BytesCount);
ReadProcessMemory(hProcess,ptr(buf+$4),@value,4,BytesCount);
ReadProcessMemory(hProcess,ptr(value+offhp),@hp,4,BytesCount);
ReadProcessMemory(hProcess,ptr(value+offmaxhp),@Maxhp,4,BytesCount);
ReadProcessMemory(hProcess,ptr(value+offmp),@mp,4,BytesCount);
ReadProcessMemory(hProcess,ptr(value+offmaxmp),@maxmp,4,BytesCount);
ReadProcessMemory(hProcess,ptr(value+offlvl),@lvl,4,BytesCount);
ReadProcessMemory(hProcess,ptr(value+OffWID),@MobWId,sizeof(MobWId),BytesCount);
if MobWId=TargetWid then Break;
Оффсеты разумеется свои
________________
Хотите как то отблагодарить за помощь?
Не стесняйтесь нажимайте "Спасибо"

Делаю программы на заказ, по всем вопросам в скайп: Ginrey2
  Ответить с цитированием
Ответ


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

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

Быстрый переход

Заявление об ответственности / Список мошенников

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

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net