Люди добрые!!! Как я понял вы уже далеко ушли в "разборке" на запчасти PW.
Поэтому хочу попросить, если не тяжело напишите смещения для текущего и максимального значения ХП питомца который сидит в 1 клетке.
А то я в програмировании совсем нуб.
Ребят..Смещения это хорошо, но как обстоят дела с ботом для ПВ на данный момент?
Просто не могу подцепить ни одного,сам GNU'шный клиент юзаю...обычные настройки того же зеворка под форточку не подходят.
Вылоите пожалуйста либо оффсет свежий,дабы прицепить бота , либо расскажите , какую часть перепаять.
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
Ну вот, нафлудился... Всем удачного фарма!
Тем, кто знает больше меня, над ответами не смеяться!!!
Спабо за ответ, но к сожалению не всё так просто. Если перевести это смежение в десятичную систему то получаеться 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. А здоровье пета зарыто на два указателя глубже. Вот и нестыковочка.
Спасибо всем за ответы, но это наверное моя вина что я сразу не сказал что я не програмист, и не пишу собственного бота, а хочу использовать уже существующего, и всё что мне нуно это цифирку которую нужно прописать в Custom_OffSets.ini (бот MHS-Bot-PW 2.3) чтобы выдавало значение ХП пета.
Если это возможно (а я уже начинаю сомневаться) напишите эту цифирку плиз.
Качай 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
Перед тем как начну "колдовать" сразу возник вопрос
If $PET_MAX_HP < $PET_HP[1] Then
Но ведь мы нигде не задали чему равно PET_MAX_HP.
Его наверное надо в начале прописать что PET_MAX_HP=0
Я правильно рассуждаю?
И вопрос: а как организовать вывод значений "на экран"? Ну типа $LABEL_HP_STATUS. Где этот лейбл задать?
Сори если вопросы "тупые", но последний раз я "колдовал" на турбо-паскале и было это лет 15 назад
Его наверное надо в начале прописать что 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