[Разработка] SAMP UDF | Дорабатываем вместе! | От 04.02.2018
|
|
aknqkzxlcs_4 |
Дата: Воскресенье, 12.03.2017, 20:51 | Сообщение # 151
|
Любитель
Сообщений: 40
Статус: Offline
|
getKillStat() - возвращает киллстат в виде массива из 5 строк в каждом массиве прячется еще один: [killer, victim, killerColor, victimColor, weapontype] в первый параметр будет занесено состояние киллстата: включен(1) / выключен(0)
пример
Код 1:: a := getKillStat() ; двумерный массив for k, v in a { ; v[1] - киллер, v[2] - убитый, v[3] - цвет киллера, v[4] - цвет убийцы, v[5] - тип убийства / ид оружия killerColor := SubStr(v[3], 5) victimColor := SubStr(v[4], 5) addChatMessageEx(0xffffff, "{" killerColor "}" v[1] " {ffffff}-> {" victimColor "}" v[2] " {ffffff}[weap: " v[5]"]") } return
2:: getKillStat(isEnabled) addChatMessageEx(0xffffff, "киллстат сейчас " (isEnabled ? "активен" : "выключен")) return
func
Код getKillStat(ByRef IsEnabled := "") { if(!checkHandles()) return false a := [] klist := readDWORD(hGTA, dwSAMP + 0x21A0EC) isEnabled := readMem(hGTA, klist, 4, "int") klist += 4 loop 5 { szKiller := readString(hGTA, klist, 25) szVictim := readString(hGTA, (klist += 25), 25) clKillerColor := inttohex(readMem(hGTA, (klist += 25), 4, "uint")) clVictimColor := inttohex(readMem(hGTA, (klist += 4), 4, "uint")) byteType := Memory_ReadByte(hGTA, (klist += 4)) klist++ a.Insert([szKiller, szVictim, clKillerColor, clVictimColor, byteType]) } return a }
Добавлено (12.03.2017, 18:31) --------------------------------------------- еще чуть-чуть
Код setFireImmunity(state) { if(!checkHandles()) return writeMemory(hGTA, 0xB7CEE6, (state ? 1 : 0), 1, "byte") }
setInfiniteRun(state) { if(!checkHandles()) return writeMemory(hGTA, 0xB7CEE4, (state ? 1 : 0), 1, "byte") }
isMarkerSetup() { if(!checkHandles()) return -1 return readMem(hGTA, 0xBA6774, 1, "byte") }
global multVehicleSpeed_tick := 0 multVehicleSpeed(MultValue := 1.01, SleepTime := 10, MaxSpeedX := 2.0, MaxSpeedY := 2.0) { if(multVehicleSpeed_tick + SleepTime > A_TickCount) return false multVehicleSpeed_tick := A_TickCount if(!checkHandles()) return false if(!dwAddr := readDWORD(hGTA, ADDR_VEHICLE_PTR)) return false if(!MultValue) { writeFloat(hGTA, dwAddr + ADDR_VEHICLE_X, 0.0) writeFloat(hGTA, dwAddr + ADDR_VEHICLE_Y, 0.0) return true } fSpeedX := readMem(hGTA, dwAddr + ADDR_VEHICLE_X, 4, "float") fSpeedY := readMem(hGTA, dwAddr + ADDR_VEHICLE_Y, 4, "float") if(abs(fSpeedX) <= MaxSpeedX) writeFloat(hGTA, dwAddr + ADDR_VEHICLE_X, fSpeedX * MultValue) if(abs(fSpeedY) <= MaxSpeedY) writeFloat(hGTA, dwAddr + ADDR_VEHICLE_Y, fSpeedY * MultValue) return true }
Добавлено (12.03.2017, 20:51) --------------------------------------------- getLastDamagePed(playerid, weapon) ; возвращает ид игрока, который последний раз стрелял в вас и с какого оружия
пример
Код death := false Loop { if(!getPlayerHealth() && !death) { death := true getLastDamagePed(playerid, weap) dist := getDist(getCoordinates(), getPlayerPosById(playerid)) addChatMessageEx(0xdd0000, "Тебя убил " getPlayerNameById(playerid) " [" playerid "] с оружия " oWeaponNames[weap+1] " с расстояния " dist) } if(getPlayerHealth()) death := false }
Код getLastDamagePed(ByRef Ped := "", ByRef Weapon := "") { if(!checkHandles()) return -1 if(!CPed := readDWORD(hGTA, ADDR_CPED_PTR)) return -1 if(!dwPed := readDWORD(hGTA, CPed + 0x764)) return -1 Ped := getIdByPed(dwPed) Weapon := readMem(hGTA, CPed + 0x760, 4, "int") return Ped }
Сообщение отредактировал aknqkzxlcs_4 - Понедельник, 13.03.2017, 10:39 |
|
|
|
[CM]MurKotik |
Дата: Понедельник, 13.03.2017, 18:39 | Сообщение # 152
|
Murkot Develop
Сообщений: 252
Статус: Offline
|
Усё добавил )
-------------------
Ушёл в себя, вернусь поздно и пьяный!
|
|
|
|
ProgMaster90 |
Дата: Вторник, 14.03.2017, 07:21 | Сообщение # 153
|
Новичок
Сообщений: 2
Статус: Offline
|
всем привет! имеется адрес: 0xb6f980 cvehicle +0x4a8 статус бомбы (byte)
как правильно записать значение 5? пробовал методом замены в уже имеющихся функциях, не дало результатов, только зависание игры. короче работа с памятью пока для меня в недосягаемости.
проводил эксперименты с cheat engine, и в ручную изменял значение. значение 5 устанавливает бомбу на машину, которая взрывается при зажигании двигателя. хорошее средство от угона личного автомобиля
|
|
|
|
aknqkzxlcs_4 |
Дата: Вторник, 14.03.2017, 16:14 | Сообщение # 154
|
Любитель
Сообщений: 40
Статус: Offline
|
Цитата ProgMaster90 ( ) хорошее средство от угона личного автомобиля лол, только если в сингле
|
|
|
|
ProgMaster90 |
Дата: Среда, 15.03.2017, 13:06 | Сообщение # 155
|
Новичок
Сообщений: 2
Статус: Offline
|
Цитата aknqkzxlcs_4 ( ) лол, только если в сингле пожалуй да, уже проверил
|
|
|
|
aknqkzxlcs_4 |
Дата: Четверг, 16.03.2017, 22:24 | Сообщение # 156
|
Любитель
Сообщений: 40
Статус: Offline
|
исправлены getVehicleLightState (+ById&ByPed, только не пиши об этом плес в топике, зафлудишь всё) теперь состояние фар всегда отображается корректно (но это не точно)
Код getVehicleLightState() { if(!checkHandles()) return -1 dwAddr := readDWORD(hGTA, ADDR_VEHICLE_PTR) if(ErrorLevel) { ErrorLevel := ERROR_READ_MEMORY return -1 } if(!dwAddr) return -1 dwVal := readMem(hGTA, dwAddr + ADDR_VEHICLE_LIGHTSTATE, 1, "byte") if(ErrorLevel) { ErrorLevel := ERROR_READ_MEMORY return -1 } ErrorLevel := ERROR_OK return (dwVal>0) }
getTargetVehicleLightStateByPed(dwPED) { if(!checkHandles()) return -1 dwAddr := getVehiclePointerByPed(dwPED) if(!dwAddr) return -1 dwVal := readMem(hGTA, dwAddr + ADDR_VEHICLE_LIGHTSTATE, 1, "byte") if(ErrorLevel) { ErrorLevel := ERROR_READ_MEMORY return -1 } ErrorLevel := ERROR_OK return (dwVal>0) }
getTargetVehicleLightStateById(dwId) { if(!checkHandles()) return -1 dwAddr := getVehiclePointerById(dwId) if(!dwAddr) return -1 dwVal := readMem(hGTA, dwAddr + ADDR_VEHICLE_LIGHTSTATE, 1, "byte") if(ErrorLevel) { ErrorLevel := ERROR_READ_MEMORY return -1 } ErrorLevel := ERROR_OK return (dwVal>0) }
Добавлено (16.03.2017, 22:24) --------------------------------------------- getVehicleMaxPassengers() - максимальное количество пассажирских мест в текущем транспорте getVehiclePassenger(место) - возвращает CPed pointer пассажира/водителя getVehiclePassengerId(место) - возвращает id пассажира/водителя места: 0 водительское, 1-8 пассажирские
Код getVehicleMaxPassengers() { if(!checkHandles()) return -1 if(!CVeh := readDWORD(hGTA, ADDR_VEHICLE_PTR)) return -1 return readMem(hGTA, CVeh + 0x488, 1, "byte") }
getVehiclePassenger(place) { ; возвращает указатель на игрока ; 0 - водитель, от 1 до 8 - пассажирские места if(!checkHandles()) return -1 if(!CVeh := readDWORD(hGTA, ADDR_VEHICLE_PTR)) return -1 return readDWORD(hGTA, CVeh + 0x460 + (place * 4)) }
getVehiclePassengerId(place) { CPed := getVehiclePassenger(place) return getIdByPed(CPed) }
Сообщение отредактировал aknqkzxlcs_4 - Пятница, 17.03.2017, 17:29 |
|
|
|
ktp3000 |
Дата: Суббота, 18.03.2017, 18:08 | Сообщение # 157
|
Новичок
Сообщений: 1
Статус: Offline
|
Возможно ли реализовать данную pawn функцию GetPlayerTargetPlayer?
Prive
|
|
|
|
|
slavawar |
Дата: Суббота, 18.03.2017, 20:33 | Сообщение # 159
|
Проверенный
Сообщений: 172
Статус: Offline
|
ktp3000
Код getTargetPed() { if(!checkHandles()) return 0 dwAddress := readDWORD(hGTA, 0xB6F3B8) if(ErrorLevel) { ErrorLevel := ERROR_READ_MEMORY return 0 } if(!dwAddress) return 0 dwAddress := readDWORD(hGTA, dwAddress+0x79C) if(ErrorLevel) { ErrorLevel := ERROR_READ_MEMORY return 0 } ErrorLevel := ERROR_OK return dwAddress }
Мои темы: [AHK] Шифратор текста [AHK] Акцент 3 в 1 [C#] Генератор RP ников
|
|
|
|
Richard_Montgomery |
Дата: Вторник, 21.03.2017, 09:04 | Сообщение # 160
|
Боец
Сообщений: 287
Статус: Offline
|
Уважаемые разрабочики SAMP UDF.
Пожалуйста найдите обход для SA-MP Addon Дело в том, что не давно он был обновлен и там улучшили какой то "АЧ"... Я в этом не разбираюсь, но это сказал разработчик. До этого обновление SAMP UDF работал замечательно и все скрипты. Найдите способ обхода и чтобы все скрипт работали.... Вот например есть скрипт, который просто должен показывать в чате текст. Если текст высветился, то скрипт работает и UDF подключен, а сейчас не высвечивается.
|
|
|
|
aknqkzxlcs_4 |
Дата: Вторник, 21.03.2017, 12:06 | Сообщение # 161
|
Любитель
Сообщений: 40
Статус: Offline
|
Цитата Richard_Montgomery ( ) Пожалуйста найдите обход для SA-MP Addon Дело в том, что не давно он был обновлен и там улучшили какой то "АЧ"... Я в этом не разбираюсь, но это сказал разработчик. До этого обновление SAMP UDF работал замечательно и все скрипты. Найдите способ обхода и чтобы все скрипт работали.... Вот например есть скрипт, который просто должен показывать в чате текст. Если текст высветился, то скрипт работает и UDF подключен, а сейчас не высвечивается.
https://yadi.sk/d/GZd54_Id3FtFf8 Это Process Hacker. Открываешь его, двойным щелчком тыкаешь по gta_sa.exe, во вкладке General давишь на Permissions, отмечаешь разрешенным "Full control" и сохраняешь только после этого запускать скрипт (либо перезапустить, если запущен) скрипт придется запустить от имени админа, иначе не будет работать
// игра должна быть запущена
Сообщение отредактировал aknqkzxlcs_4 - Вторник, 21.03.2017, 12:07 |
|
|
|
Richard_Montgomery |
Дата: Вторник, 21.03.2017, 12:15 | Сообщение # 162
|
Боец
Сообщений: 287
Статус: Offline
|
Цитата aknqkzxlcs_4 ( ) https://yadi.sk/d/GZd54_Id3FtFf8 Это Process Hacker. Открываешь его, двойным щелчком тыкаешь по gta_sa.exe, во вкладке General давишь на Permissions, отмечаешь разрешенным "Full control" и сохраняешь только после этого запускать скрипт (либо перезапустить, если запущен) скрипт придется запустить от имени админа, иначе не будет работать
Этот способ работает, но когда это всё сделал по твоей инструкцией, то GTA вылетает.
|
|
|
|
aknqkzxlcs_4 |
Дата: Вторник, 21.03.2017, 13:52 | Сообщение # 163
|
Любитель
Сообщений: 40
Статус: Offline
|
Цитата Richard_Montgomery ( ) Этот способ работает, но когда это всё сделал по твоей инструкцией, то GTA вылетает. так работает или вылетает? почему у нас работает, а у тебя нет?
Сообщение отредактировал aknqkzxlcs_4 - Вторник, 21.03.2017, 13:59 |
|
|
|
Richard_Montgomery |
Дата: Вторник, 21.03.2017, 22:29 | Сообщение # 164
|
Боец
Сообщений: 287
Статус: Offline
|
Цитата aknqkzxlcs_4 ( ) так работает или вылетает? почему у нас работает, а у тебя нет?
Всё одновременно. Вот я всё сделал запускаю. ALT+1 нажимаю высветился текст и через 1-3 секунд вылетает.
P.S. Есть ли способ более легкий + автоматическое сохранение.
|
|
|
|
Godarck |
Дата: Среда, 22.03.2017, 01:28 | Сообщение # 165
|
AHK Скриптер
Сообщений: 252
Статус: Offline
|
Цитата aknqkzxlcs_4 ( ) getLastDamagePed(playerid, weapon) ; возвращает ид игрока, который последний раз стрелял в вас и с какого оружия
пример Код death := false Loop { if(!getPlayerHealth() && !death) { death := true getLastDamagePed(playerid, weap) dist := getDist(getCoordinates(), getPlayerPosById(playerid)) addChatMessageEx(0xdd0000, "Тебя убил " getPlayerNameById(playerid) " [" playerid "] с оружия " oWeaponNames[weap+1] " с расстояния " dist) } if(getPlayerHealth()) death := false }
Код getLastDamagePed(ByRef Ped := "", ByRef Weapon := "") { if(!checkHandles()) return -1 if(!CPed := readDWORD(hGTA, ADDR_CPED_PTR)) return -1 if(!dwPed := readDWORD(hGTA, CPed + 0x764)) return -1 Ped := getIdByPed(dwPed) Weapon := readMem(hGTA, CPed + 0x760, 4, "int") return Ped }
У меня -1 выдает строка if(!dwPed := readDWORD(hGTA, CPed + 0x764)) return -1 То бишь значение dwPed всегда равно 0. В чем может быть причина?
А Weapon := readMem(hGTA, CPed + 0x760, 4, "int") всегда выдает 255
Бесплатный и новый бот рыбалки для GTA V RP GunList для GTA V RP - писать в ЛС Fake Time для GTA V RP
Сообщение отредактировал Godarck - Среда, 22.03.2017, 02:28 |
|
|
|