[Разработка] CRMP UDF | Дорабатываем вместе!
|
|
Rinat_Namazov |
Дата: Среда, 21.02.2018, 22:57 | Сообщение # 16
|
Боец
Сообщений: 122
Статус: Offline
|
Цитата DOBRO1 ( ) Из диалогового окна текст можно как то вытаскивать?) Правильно зачем что-то читать, если можно спросить. ; # - getDialogCaption() - Вывод названия диалога ; | Работает ; # - getDialogText() - Вывод текста из диалога ; | Работает ; # - getDialogLine(index) - Выводит текст из строки ; | Работает ; # - getDialogLines() - Возвращает массив строк с диалога ; | Не тестировал
|
|
|
|
Joni228 |
Дата: Четверг, 05.04.2018, 07:08 | Сообщение # 17
|
Бывалый
Сообщений: 314
Статус: Offline
|
Цитата DOBRO1 ( ) Из диалогового окна текст можно как то вытаскивать?)
Можно! getDialogText() Добавлено (05.04.2018, 07:08) --------------------------------------------- UP!
|
|
|
|
Drygok |
Дата: Четверг, 07.06.2018, 22:07 | Сообщение # 18
|
Любитель
Сообщений: 37
Статус: Offline
|
Не знаю, может кому понадобится. Скорость авто в режиме наблюдения.
Код SpecSpeed() { if(!checkHandles()) return -1 dwAddr := readDWORD(hGTA, getModuleBaseAddress("grand_theft_auto_san_andreas.dll", hGTA) + 0x76F3B8) fSpeedX := readMem(hGTA, dwAddr + ADDR_VEHICLE_X, 4, "float") fSpeedY := readMem(hGTA, dwAddr + ADDR_VEHICLE_Y, 4, "float") fSpeedZ := readMem(hGTA, dwAddr + ADDR_VEHICLE_Z, 4, "float") fVehicleSpeed := ((sqrt((fSpeedX * fSpeedX) + (fSpeedY * fSpeedY) + (fSpeedZ * fSpeedZ))) * 100) * 1.43 return fVehicleSpeed }
|
|
|
|
Yura105500 |
Дата: Вторник, 12.06.2018, 01:01 | Сообщение # 19
|
Cheat-Master
Сообщений: 37
Статус: Offline
|
Было бы полезно проверка на открытый чат )
|
|
|
|
Drygok |
Дата: Среда, 13.06.2018, 12:51 | Сообщение # 20
|
Любитель
Сообщений: 37
Статус: Offline
|
Yura105500,
Код global ADDR_SAMP_INCHAT_PTR := 0x20DFFC global ADDR_SAMP_INCHAT_PTR_OFF := 0x55
isInChat() { if(!checkHandles()) return -1 dwPtr := dwSAMP + ADDR_SAMP_INCHAT_PTR dwAddress := readDWORD(hGTA, dwPtr) + ADDR_SAMP_INCHAT_PTR_OFF if(ErrorLevel) { ErrorLevel := ERROR_READ_MEMORY return -1 } dwInChat := readDWORD(hGTA, dwAddress) if(ErrorLevel) { ErrorLevel := ERROR_READ_MEMORY return -1 } ErrorLevel := ERROR_OK if(dwInChat > 0) { return true } else { return false } }
Добавлено (13.06.2018, 12:51) --------------------------------------------- Может кому нужно будет.
Код global FUNC_SAMP_SHOWDIALOG := 0x668C0 global SAMP_DIALOG_STRUCT_PTR := 0x20DFAC
showDialog(style, caption, text, button1, button2 := "", id := 1) { style += 0 style := Floor(style) id += 0 id := Floor(id) caption := "" caption text := "" text button1 := "" button1 button2 := "" button2
if (id < 0 || id > 32767 || style < 0 || style > 5 || StrLen(caption) > 64 || StrLen(text) > 4096 || StrLen(button1) > 10 || StrLen(button2) > 10) return false
if (!checkHandles()) return false
dwFunc := dwSAMP + FUNC_SAMP_SHOWDIALOG sleep 200 dwAddress := readDWORD(hGTA, dwSAMP + SAMP_DIALOG_STRUCT_PTR) if (ErrorLevel || !dwAddress) { ErrorLevel := ERROR_READ_MEMORY return false }
writeString(hGTA, pParam5, caption) if (ErrorLevel) return false writeString(hGTA, pParam1, text) if (ErrorLevel) return false writeString(hGTA, pParam5 + 512, button1) if (ErrorLevel) return false writeString(hGTA, pParam5+StrLen(caption) + 1, button2) if (ErrorLevel) return false
;mov + 7 * push + call + retn dwLen := 5 + 7 * 5 + 5 + 1 VarSetCapacity(injectData, dwLen, 0)
NumPut(0xB9, injectData, 0, "UChar") ;0 + 1 ;mov ecx NumPut(dwAddress, injectData, 1, "UInt") ;1 + 4 NumPut(0x68, injectData, 5, "UChar") ;5 + 1 ;push send NumPut(1, injectData, 6, "UInt") ;6 + 4 NumPut(0x68, injectData, 10, "UChar") ;10 + 1 ;push button2 NumPut(pParam5 + StrLen(caption) + 1, injectData, 11, "UInt") ;11 + 4 NumPut(0x68, injectData, 15, "UChar") ;15 + 1 ;push button1 NumPut(pParam5 + 512, injectData, 16, "UInt") ;16 + 4 NumPut(0x68, injectData, 20, "UChar") ;20 + 1 ;push text NumPut(pParam1, injectData, 21, "UInt") ;21 + 4 NumPut(0x68, injectData, 25, "UChar") ;25 + 1 ;push caption NumPut(pParam5, injectData, 26, "UInt") ;26 + 4 NumPut(0x68, injectData, 30, "UChar") ;30 + 1 ;push style NumPut(style, injectData, 31, "UInt") ;31 + 4 NumPut(0x68, injectData, 35, "UChar") ;35 + 1 ;push id NumPut(id, injectData, 36, "UInt") ;36 + 4
NumPut(0xE8, injectData, 40, "UChar") ;40 + 1 ;call offset := dwFunc - (pInjectFunc + 45) NumPut(offset, injectData, 41, "Int") ;41 + 4 NumPut(0xC3, injectData, 45, "UChar") ;45 + 1 ;retn
writeRaw(hGTA, pInjectFunc, &injectData, dwLen) if (ErrorLevel) return false
hThread := createRemoteThread(hGTA, 0, 0, pInjectFunc, 0, 0, 0) if (ErrorLevel) return false
waitForSingleObject(hThread, 0xFFFFFFFF) closeProcess(hThread)
return true }
|
|
|
|
|
Joni228 |
Дата: Среда, 13.06.2018, 17:01 | Сообщение # 22
|
Бывалый
Сообщений: 314
Статус: Offline
|
Цитата Drygok ( ) Может кому нужно будет.
Добавил все!
|
|
|
|
Drygok |
Дата: Среда, 13.06.2018, 20:25 | Сообщение # 23
|
Любитель
Сообщений: 37
Статус: Offline
|
Phoenixxx_Czar, 0x122EF8 ?
|
|
|
|
Joni228 |
Дата: Среда, 13.06.2018, 21:59 | Сообщение # 24
|
Бывалый
Сообщений: 314
Статус: Offline
|
Цитата Drygok ( ) Phoenixxx_Czar, 0x122EF8 ?
Может тогда сразу все адреса напишешь? xD
|
|
|
|
DjSmash |
Дата: Четверг, 19.07.2018, 12:08 | Сообщение # 25
|
Новичок
Сообщений: 1
Статус: Offline
|
Хотелось бы getTagNameDistance() и setTagNameDistance перевести на CRMP UDF =)
Но я слишком тупой для этого
|
|
|
|
Yura105500 |
Дата: Пятница, 24.08.2018, 18:26 | Сообщение # 26
|
Cheat-Master
Сообщений: 37
Статус: Offline
|
Есть у кого функция "CoordsFromRedmarker" для CRMP?
|
|
|
|
KommandosNOD |
Дата: Пятница, 05.04.2019, 03:53 | Сообщение # 27
|
Новичок
Сообщений: 4
Статус: Offline
|
Приватные есть где? Не бесплатно ЛС.
Aequitas. Veritas.
|
|
|
|
FForest |
Дата: Пятница, 05.04.2019, 12:43 | Сообщение # 28
|
Местный Дурачок
Сообщений: 129
Статус: Offline
|
KommandosNOD, Я могу за платно
|
|
|
|
eduard8702 |
Дата: Вторник, 28.05.2019, 22:48 | Сообщение # 29
|
Новичок
Сообщений: 2
Статус: Offline
|
Помогите с АХК! Как сделать чтобы ники игроков показывались через стены в зоне стрима? Вот похожая тема: https://blast.hk/threads/15379/ Я знаю, что в upd есть 2 функции отвечающие за это: getTagNameDistance() { setTagNameDistance(status, distance) { ___________________________________________ ; <COMPILER: v1.1.24.04> #IfWinActive GTA:SA:MP #SingleInstance, force #NoEnv F1:: { getTagNameDistance() { if(!checkHandles()) return -1
dwSAMPInfo := readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET) if(ErrorLevel) { ErrorLevel := ERROR_READ_MEMORY return -1 }
dwSAMPInfoSettings := readDWORD(hGTA, dwSAMPInfo + SAMP_INFO_SETTINGS_OFFSET) if(ErrorLevel) { ErrorLevel := ERROR_READ_MEMORY return -1 }
distance := readFloat(hGTA, dwSAMPInfoSettings + 0x27) if(ErrorLevel) { ErrorLevel := ERROR_READ_MEMORY return -1 }
ErrorLevel := ERROR_OK return distance }
setTagNameDistance(0, (wh ? 1500.0 : def)) if(!checkHandles()) return -1
status := status ? 1 : 0
dwSAMPInfo := readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET) if(ErrorLevel) { ErrorLevel := ERROR_READ_MEMORY return -1 } ______________________________________________________________________ Кто может помочь преобразовать это в полноценный ахк? Просто мои знания ахк - очень маленькие. Еще раз говорю, что в игре при нажатие например, на F1, ники игроков должны показываться сквозь стены во всей зоне стрима. А также прилагаю скриншот.
asdfas
|
|
|
|
|