|
[Разработка] SAMP UDF | Дорабатываем вместе! | От 04.02.2018
|
|
| LuntikElita |
Дата: Суббота, 10.02.2018, 19:42 | Сообщение # 391
|
Новичок
Сообщений: 1
Статус: Offline
|
Код global ADDR_LPANGLE := 0xB7CD98 ;Player Angle global ADDR_LPANGLE_OFFSET := 0x558 ;Player Angle
getPlayerAngle(ByRef pAngle) { dwaddressp := readDWORD(hGTA, ADDR_LPANGLE) if(ErrorLevel) { ErrorLevel := ERROR_READ_MEMORY return "" } pAngle := readFloat(hGTA, dwaddressp + ADDR_LPANGLE_OFFSET) if(ErrorLevel) { ErrorLevel := ERROR_READ_MEMORY return "" }
Использую этот код на airbreak, выдаёт какое то число от -1,5 до 1,5 (вроде так), которое отвечает за угол разворота локального персонажа, странно, но если подогнать к getPlayerAngle это вот так, то всё работает:
Код myX := myX + 10*cos(myAngle + 1.70000) myY := myY + 10*sin(myAngle + 1.55000) выдаёт координаты точки на 10 метров напротив тебя попробуйте подлатать код, просто я не умею находить адреса.Добавлено (10.02.2018, 19:42) --------------------------------------------- И кстате, люди, которые шарят, вы не могли бы сделать функцию, чтобы типа когда локальный игрок падает, я делаю setPlayerFreeze(2), тогда анимация падения прекращалась и игрок был бы в стандартой анимации (когда просто стоит)
|
|
|
|
|
| trenisk |
Дата: Пятница, 16.02.2018, 22:10 | Сообщение # 392
|
Любитель
Сообщений: 42
Статус: Offline
|
Привет! Тут такой вопрос, через Самп-удф можно узнать код операционной системы? Хочу сделать чтобы бинд работал только у определенных пацыков.
|
|
|
|
|
| Rinat_Namazov |
Дата: Воскресенье, 18.02.2018, 00:59 | Сообщение # 393
|
Боец
Сообщений: 122
Статус: Offline
|
Цитата trenisk (  ) код операционной системы Не просветишь нас, что это ещё такое?
Цитата trenisk (  ) через Самп-удф Как самп и ОС вообще связаны?
|
|
|
|
|
| Toopie |
Дата: Воскресенье, 18.02.2018, 10:08 | Сообщение # 394
|
Боец
Сообщений: 122
Статус: Offline
|
Rinat_Namazov, он про серийный номер.
лучший в мире самп сервер 185.159.129.71:7777 лидерки админки да
|
|
|
|
|
| Rinat_Namazov |
Дата: Воскресенье, 18.02.2018, 21:15 | Сообщение # 395
|
Боец
Сообщений: 122
Статус: Offline
|
Цитата Toopie (  ) Rinat_Namazov, он про серийный номер. Это был сарказм.
Код [code] strComputer := "." objWMIService := ComObjGet("winmgmts:{impersonationLevel=impersonate}!\\" . strComputer . "\root\cimv2") colSettings := objWMIService.ExecQuery("Select * from Win32_OperatingSystem")._NewEnum While colSettings[objOSItem] { Key := objOSItem.SerialNumber }
trenisk, Надеюсь разберешься в какой переменой ключ.
|
|
|
|
|
| Toopie |
Дата: Понедельник, 19.02.2018, 22:00 | Сообщение # 396
|
Боец
Сообщений: 122
Статус: Offline
|
Rinat_Namazov, или кто-то просто решил набить пост.
лучший в мире самп сервер 185.159.129.71:7777 лидерки админки да
|
|
|
|
|
| Fedy_GO |
Дата: Четверг, 22.02.2018, 17:51 | Сообщение # 397
|
Новичок
Сообщений: 7
Статус: Offline
|
getCoordinates() - не работает, всё время выдаёт пустое значение
|
|
|
|
|
| Toopie |
Дата: Пятница, 23.02.2018, 18:38 | Сообщение # 398
|
Боец
Сообщений: 122
Статус: Offline
|
Fedy_GO, эта функция возвращает массив
лучший в мире самп сервер 185.159.129.71:7777 лидерки админки да
|
|
|
|
|
| [CM]MurKotik |
Дата: Суббота, 03.03.2018, 19:29 | Сообщение # 399
|
Murkot Develop
Сообщений: 252
Статус: Offline
|
ROCK$TAR, Возможно не в той кодировк ахк поставили, нужно АНСИ. А ваще нужно больше деталей, тут ванги есть но они мало чем помогут
-------------------
Ушёл в себя, вернусь поздно и пьяный!
|
|
|
|
|
| Chikko_Five |
Дата: Суббота, 17.03.2018, 20:14 | Сообщение # 400
|
Новичок
Сообщений: 3
Статус: Offline
|
Как сделать кавычки в кавычках? Ну типа чтобы кавычки считались не частью команды, а выводимым символом.
Код F2:: SendChat("Я никогда не пробовал работать в компании "Atlantic".") Return
|
|
|
|
|
| [CM]MurKotik |
Дата: Среда, 21.03.2018, 02:03 | Сообщение # 401
|
Murkot Develop
Сообщений: 252
Статус: Offline
|
Chikko_Five, две одинарные поставь '' azaza ''
-------------------
Ушёл в себя, вернусь поздно и пьяный!
|
|
|
|
|
| SGray |
Дата: Суббота, 24.03.2018, 01:33 | Сообщение # 402
|
Новичок
Сообщений: 14
Статус: Offline
|
Цитата Phoenixxx_Czar (  ) !1:: ; бинд на alt + 1 check := isPlayerInStreamById(30) if (check) ; Если функция выдала 1 addChatMessage("Ид 30 находится в зоне стрима") else if (!check) ; Если выдала 0 addChatMessage("Ид 30 НЕ находится в зоне стрима") return
помоги пж с /find advance делал столбы так
В строю сейчас: Nick[ID] | В строю | AFK или не AFK
Не в строю сейчас: Nick[ID] | Не в строю | AFK или не AFK
|
|
|
|
|
| Gromar |
Дата: Понедельник, 26.03.2018, 17:56 | Сообщение # 403
|
Любитель
Сообщений: 33
Статус: Offline
|
Как сделать чтобы считывалась какая строка в диалоге была нажата?
|
|
|
|
|
| nekpro |
Дата: Суббота, 31.03.2018, 14:49 | Сообщение # 404
|
Новичок
Сообщений: 15
Статус: Offline
|
[CM]MurKotik, ahk call to nonexistent function, Вот такая ошибка вылазит когда запускаю ахк. Что делать подскажи пожалуйста.
|
|
|
|
|
| Dworkin |
Дата: Четверг, 05.04.2018, 17:47 | Сообщение # 405
|
Боец
Сообщений: 110
Статус: Offline
|
Решил поделиться. Функции определяют только сам факт пересечения. Они не находят точки пересечения. isIntersect_LineSegment_and_Circle(start1x,start1y,start2x,start2y, centerx, centery, radius) - факт пересечения отрезка и окружности. Если пересекает возвращает 1, если нет 0, если отрезок касается круга то выдает 0. Думаю объяснять параметры не нужно и так понятно.
Код isIntersect_LineSegment_and_Circle(start1x,start1y,start2x,start2y, centerx, centery, radius) { x01 := start1x - centerx y01 := start1y - centery x02 := start2x - centerx y02 := start2y - centery
dx := x02 - x01 dy := y02 - y01
a := dx*dx + dy*dy b := 2*(x01*dx + y01*dy) c := x01*x01 + y01*y01 - radius*radius
if (-b<0) return (c<0) if (-b<(2*a)) return (4*a*c-b*b<0) return (a+b+c<0) }
isIntersect_2LineSegments(start1x, start1y, end1x, end1y, start2x, start2y, end2x, end2y) - факт пересечения двух отрезков. Если пересекаются возвращает 1, если нет 0, если один конец отрезка лежит на линии другого отрезка то возвращает 0.
Код isIntersect_2LineSegments(start1x, start1y, end1x, end1y, start2x, start2y, end2x, end2y) { dir1x := end1x - start1x dir1y := end1y - start1y dir2x := end2x - start2x dir2y := end2y - start2y
;считаем уравнения прямых проходящих через отрезки a1 := -dir1y b1 := +dir1x d1 := -(a1*start1x + b1*start1y)
a2 := -dir2y b2 := +dir2x d2 := -(a2*start2x + b2*start2y)
;подставляем концы отрезков, для выяснения в каких полуплоскотях они seg1_line2_start := a2*start1x + b2*start1y + d2 seg1_line2_end := a2*end1x + b2*end1y + d2
seg2_line1_start := a1*start2x + b1*start2y + d1 seg2_line1_end := a1*end2x + b1*end2y + d1
;если концы одного отрезка имеют один знак, значит он в одной полуплоскости и пересечения нет. if (seg1_line2_start * seg1_line2_end >= 0 || seg2_line1_start * seg2_line1_end >= 0) return false return true } Добавлено (05.04.2018, 17:47) --------------------------------------------- isInAFKbyID(ID) - проверяет игрока на афк по иду. 1 - стоит в афк, 0 - не афк.
ТОЧНО РАБОТАЕТ В R1! В R2 не знаю! При афк изменяются такие оффсеты как 462, 463, 464. Я выбрал один из них.
Код isInAFKbyID(ID) { if(!checkHandles()) return -1 dwAddress := readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET) dwAddress := readDWORD(hGTA, dwAddress + SAMP_PPOOLS_OFFSET) dwPlayers := readDWORD(hGTA, dwAddress + SAMP_PPOOL_PLAYER_OFFSET) dwRemoteplayer := readDWORD(hGTA, dwPlayers+SAMP_PREMOTEPLAYER_OFFSET+ID*4) ;pRemotePlayer dwRemoteplayerData := readDWORD(hGTA, dwRemoteplayer + 0x0) ;pPlayerData isAFK := readDWORD(hGTA, dwRemoteplayerData + 462) if (isAFK != 0) return true else return false }
Сообщение отредактировал Dworkin - Четверг, 05.04.2018, 17:47 |
|
|
|
|