|
You last visited: Today at 22:31
Advertisement
Rus. server
Discussion on Rus. server within the Perfect World forum part of the MMORPGs category.
10/30/2009, 15:29
|
#541
|
elite*gold: 0
Join Date: Oct 2009
Posts: 18
Received Thanks: 0
|
Люди добрые!!! Как я понял вы уже далеко ушли в "разборке" на запчасти PW.
Поэтому хочу попросить, если не тяжело напишите смещения для текущего и максимального значения ХП питомца который сидит в 1 клетке.
А то я в програмировании совсем нуб.
|
|
|
10/31/2009, 03:09
|
#542
|
elite*gold: 0
Join Date: Aug 2008
Posts: 19
Received Thanks: 1
|
Ребят..Смещения это хорошо, но как обстоят дела с ботом для ПВ на данный момент?
Просто не могу подцепить ни одного,сам GNU'шный клиент юзаю...обычные настройки того же зеворка под форточку не подходят.
Вылоите пожалуйста либо оффсет свежий,дабы прицепить бота , либо расскажите , какую часть перепаять.
|
|
|
10/31/2009, 22:42
|
#543
|
elite*gold: 0
Join Date: Aug 2009
Posts: 70
Received Thanks: 18
|
Ну раз я первый зашел, мне и флудить...
drShtain Если текст вызывает улыбку - он не является флудом
Насчет умного поста есть один глупый вопрос - не могу придумать, каким способом можно обходить препятствия. Могу включить в умения перса проходить сквозь них, если возникнет ситуация, с которой бот не справится. Допустим, прыгнул - не помогло. Движение вправо - не помогло... Проходим. Но это не выход. Могу еще сирену включить, чтоб ботовода разбудить (системный бипер, например). Это вообще жестоко.
maxim31153 А вот тут есть несколько выходов. Первый - скачать Autoit и начать читать форум полностью. Если будут какие то вопросы - всегда помогут те, кто будет в сети. Но для этого нужны какие то начальные знания. Второй - есть платные боты довольно неплохого качества. Найти их в сети нетрудно. Главное - не накачать вирусов на "левых" сайтах. Третий - подождать, может, все таки кто нибудь напишет что нибудь более путевое и выложит хотя бы для теста. Я собирался выложить, но меня напрягает то обстоятельство, что за это привлекли ботописателей в китае. И, наверно, надолго. Да и не готов мой бот еще...
vies1812 HP первого питомца BaseAdress+$20+$c24+$10+$38
Максимального нет. Может, оно где то и есть - не нашли. Можно при каждом считывании HP сравнивать его с MaxHP. Если HP больше MaxHP, присваиваем значение MaxHP. Вроде работает. Автор идеи FunkU.
KOPC Напиши, какие смещения ему нужны - не пользовался я этим ботом. Или гугли, если до сих пор еще не нашел.
Добавил: Не это?
[Perfect_World_Base_Address_In_Decimal]
Application_Title=Element Client
Base_Address=9925052
[Custom_32_Offsets_In_Decimal]
Target_OffSet=2664
MaxMP_OffSet=1176
MaxHP_OffSet=1172
MP_OffSet=1128
HP_OffSet=1124
Ну вот, нафлудился... Всем удачного фарма!
Тем, кто знает больше меня, над ответами не смеяться!!!
|
|
|
11/01/2009, 13:42
|
#544
|
elite*gold: 0
Join Date: Aug 2009
Posts: 6
Received Thanks: 0
|
Люди а Рево бот реально так же переделать как MSH ?
|
|
|
11/02/2009, 00:15
|
#545
|
elite*gold: 0
Join Date: Jan 2009
Posts: 69
Received Thanks: 13
|
Если его исходники найдёшь. )
|
|
|
11/02/2009, 08:44
|
#546
|
elite*gold: 0
Join Date: Oct 2009
Posts: 18
Received Thanks: 0
|
To sumikot
Quote:
Originally Posted by sumikot
Ну раз я первый зашел, мне и флудить...
vies1812 HP первого питомца BaseAdress+$20+$c24+$10+$38
Максимального нет. Может, оно где то и есть - не нашли. Можно при каждом считывании HP сравнивать его с MaxHP. Если HP больше MaxHP, присваиваем значение MaxHP. Вроде работает. Автор идеи FunkU.
|
Спабо за ответ, но к сожалению не всё так просто. Если перевести это смежение в десятичную систему то получаеться 3212, теперь забиваю это число в MHS-Bot-PW 2.3 вместо своего текужего ХП (это потому что в качестве бота друля, а она получет удары редко и хватает раз в 3 мин бафнуться своим бафом на ХП. А вот пета бьют порядочно а хилю я его наугад т.к. не вижу его ХП).
Так вот, забив 3212 в офсет.ини мне показывает значение ХП - 0 !!!! И не имеет значения выпустил я пета или нет. Ради интереса я вручную перебрал смещения от 3000 до 3300 и всё равно не вижу ХП пета, ни того что в первой клетке ни того что во второй.
Что я делаю не так, подскажи плиз.
В читэнжайне я вижу ХП пета, оно точно совпадает с тем что есть в игре, синхронно растёт или падает, в зависимости от того бьют пета или нет, но я к сожалению не умею перевести тот адрес что вижу в читэнжайне в смещение для MHS-Bot-PW 2.3
|
|
|
11/02/2009, 10:33
|
#547
|
elite*gold: 0
Join Date: May 2009
Posts: 4
Received Thanks: 2
|
Quote:
Originally Posted by vies1812
Спабо за ответ, но к сожалению не всё так просто. Если перевести это смежение в десятичную систему то получаеться 3212, теперь забиваю это число в MHS-Bot-PW 2.3 вместо своего текужего ХП
Что я делаю не так, подскажи плиз.
|
Ленишься читать наверное. В этой теме уже несколько раз объяснялось что означают эти плюсики в смещениях.
BaseAdress+$20+$c24+$10+$38 читается так
adr1=[BaseAddr+$20]
adr2=[adr1+$c24]
adr3=[adr2+$10]
res0=[adr3+$38]
[xxx] - прочитать значение по адресу xxx.
Когда ты прописываешь в ini-файле смещение для HP перса, то оно нужно одно потому что BaseAdress+$20 общее для всех значений, связанных со структурой данных игрока и его смещение выглядит как BaseAdress+$20+$HPoffset. А здоровье пета зарыто на два указателя глубже. Вот и нестыковочка.
|
|
|
11/02/2009, 10:47
|
#548
|
elite*gold: 0
Join Date: Sep 2009
Posts: 9
Received Thanks: 1
|
vies1812, код должен быть примерно таким
Code:
global $pet[5]
$mob1[1]=20
$mob1[2]=c24
$mob1[3]=10
$mob1[4]=38
$PetHP= _MemoryPointerRead($APP_BASE_ADDRESS, $PROCESS_INFORMATION, $pet)
|
|
|
11/02/2009, 11:13
|
#549
|
elite*gold: 0
Join Date: Jan 2009
Posts: 69
Received Thanks: 13
|
А чтоб вместо здоровья персонажа его вывести можно заменить стандартный массив в MHS. )
Global $OFFSET_HP[5]
$OFFSET_HP[1] = 20
$OFFSET_HP[2] = c24
$OFFSET_HP[3] = 10
$OFFSET_HP[4] = 38
Но это не очень хороший выход. Лучше сделать отдельный массив и отдельную функцию для лечения питомца.
Вот мой упрощённый пример:
В область объявления глобальных переменных добавляем это:
Global $PET_HP
Global $PET_MAX_HP
Global $PET_HP_PERC
В функцию UpdateCharInfo:
$PET_HP = _MemoryPointerRead($APP_BASE_ADDRESS, $PROCESS_MEMORY, $OFFSET_PET_HP)
If $PET_MAX_HP < $PET_HP[1] Then
$PET_MAX_HP = $PET_HP[1]
EndIf
$PET_HP_PERC = $PET_HP[1] / $PET_MAX_HP * 100
If $PET_HP[1] == 0 Then
$PET_HP_PERC = 0
EndIf
Добавляем новую функцию:
Func PetAutoHealCheck()
While Int ($PET_HP_PERC) < 80 And $HP[1] > 0
ControlSend($APP_TITLE, "", "", "{F1}", 0)
Sleep(1000)
UpdateCharInfo()
HPMPAutoPotCheck()
WEnd
EndFunc
И добовляем вызов этой функции куда-нибудь в функцию KillTarget.
|
|
|
11/02/2009, 11:54
|
#550
|
elite*gold: 0
Join Date: Oct 2009
Posts: 18
Received Thanks: 0
|
Спасибо всем за ответы, но это наверное моя вина что я сразу не сказал что я не програмист, и не пишу собственного бота, а хочу использовать уже существующего, и всё что мне нуно это цифирку которую нужно прописать в Custom_OffSets.ini (бот MHS-Bot-PW 2.3) чтобы выдавало значение ХП пета.
Если это возможно (а я уже начинаю сомневаться) напишите эту цифирку плиз.
|
|
|
11/02/2009, 11:56
|
#551
|
elite*gold: 0
Join Date: Jan 2009
Posts: 69
Received Thanks: 13
|
В том то и дело, что это невозможно. Иначе тебе бы всё так не расписывали. )
|
|
|
11/02/2009, 12:19
|
#552
|
elite*gold: 0
Join Date: Oct 2009
Posts: 18
Received Thanks: 0
|
|
|
|
11/02/2009, 12:26
|
#553
|
elite*gold: 0
Join Date: Jan 2009
Posts: 69
Received Thanks: 13
|
Качай AutoIt и делай, что я написал выше, потом компилируй и проверяй. Всё это очень просто делается. Программистом быть не надо, чтобы вставить что-то в код. )
Только массив надо задать так, чтоб всё работало:
Global $OFFSET_PET_HP[5]
$OFFSET_PET_HP[1] = 20
$OFFSET_PET_HP[2] = c24
$OFFSET_PET_HP[3] = 10
$OFFSET_PET_HP[4] = 38
|
|
|
11/02/2009, 14:22
|
#554
|
elite*gold: 0
Join Date: Oct 2009
Posts: 18
Received Thanks: 0
|
Перед тем как начну "колдовать" сразу возник вопрос
If $PET_MAX_HP < $PET_HP[1] Then
Но ведь мы нигде не задали чему равно PET_MAX_HP.
Его наверное надо в начале прописать что PET_MAX_HP=0
Я правильно рассуждаю?
И вопрос: а как организовать вывод значений "на экран"? Ну типа $LABEL_HP_STATUS. Где этот лейбл задать?
Сори если вопросы "тупые", но последний раз я "колдовал" на турбо-паскале и было это лет 15 назад
|
|
|
11/02/2009, 15:44
|
#555
|
elite*gold: 0
Join Date: May 2009
Posts: 4
Received Thanks: 2
|
Quote:
Originally Posted by vies1812
Его наверное надо в начале прописать что PET_MAX_HP=0
Я правильно рассуждаю?
|
Верно, а говоришь 15 лет назад, на турбо паскале ;-)
Quote:
И вопрос: а как организовать вывод значений "на экран"? Ну типа $LABEL_HP_STATUS. Где этот лейбл задать?
|
Немного переделывал AutoPot под себя, вот там такую фигню с выводом инфы замутил на базе мелкого окошка, которое слева висит. Несколько страниц, Содержимое 0й страницы перетирает всё остальное. Смотрится код криво, ибо все значения забиты жёстко, но работает.
Где-нибудь в процедуре инициализации, чтобы только один раз выполнялось.
Code:
HotKeySet("{PGUP}","PgNext")
HotKeySet("{PgDn}","PgPrev")
Global $PageMax=2;
Global $PageActive=1;
Global $StatusInfo[3][13];
Global $StatusLine[13];
;$font="Comic Sans MS"
$font="Courier New"
Global $Status_GUI = GUICreate("AutoPot",160,212,0,220,-1,$WS_EX_TOOLWINDOW+$WS_EX_TOPMOST,$Launcher)
for $I=0 to 12
$StatusLine[$I]=GUICtrlCreateLabel("",2,16*$I+4,160,16)
GUICtrlSetFont($StatusLine[$I],9,0,0,$font)
next
Необходимые функции, чтобы работало. Чтобы вывести на экран используется только функция WriteStatus
Code:
Func WriteStatus($Page, $Line, $Text)
if $Line=0 then $Line=1
if $Line<0 then $Line=14+$Line
If $Page>$PageMax Then $Page=$PageMax
$StatusInfo[$Page][$Line-1]=$Text
if $Page=0 OR $Page=$PageActive Then GUICtrlSetData($StatusLine[$Line-1],$Text)
EndFunc
Func ShowPage($Page)
If $Page>$PageMax Then $Page=$PageMax
If $Page<0 Then $Page=1
for $i=1 to 12
if $StatusInfo[0][$i]<>"" then
GUICtrlSetData($StatusLine[$i],$StatusInfo[0][$i])
Else
GUICtrlSetData($StatusLine[$i],$StatusInfo[$Page][$i])
EndIf
Next
EndFunc
Func PgNext()
$PageActive+=1
if $PageActive>$PageMax then $PageActive=1
ShowPage($PageActive)
EndFunc
Func PgPrev()
$PageActive-=1
if $PageActive<=0 then $PageActive=$PageMax
ShowPage($PageActive)
EndFunc
|
|
|
All times are GMT +2. The time now is 22:31.
|
|