[Разработка] SAMP UDF | Дорабатываем вместе! | От 04.02.2018
|
|
Dworkin |
Дата: Четверг, 05.04.2018, 17:47 | Сообщение # 406
|
Боец
Сообщений: 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 |
|
|
|
Ningaro |
Дата: Вторник, 17.04.2018, 21:02 | Сообщение # 407
|
Новичок
Сообщений: 7
Статус: Offline
|
Не работают переменные 5, 6, 7 строки, с чем это может быть связанно, и как это по фиксить?
UPDATE! нашел решение тут же на форуме
Цитата [CM]MurKotik ( ) Возможно не в той кодировк ахк поставили, нужно АНСИ мне кажется, стоит это инфу закрепить!
Сообщение отредактировал Ningaro - Вторник, 17.04.2018, 21:06 |
|
|
|
Chikko_Five |
Дата: Суббота, 21.04.2018, 15:35 | Сообщение # 408
|
Новичок
Сообщений: 3
Статус: Offline
|
Цитата [CM]MurKotik ( ) Chikko_Five, две одинарные поставь '' azaza '' Мне нужно, чтобы в чат выводилось: Я никогда не работал в компании "Atlantic". А если я делаю так:
Код SendChat("Я никогда не работал в компании "Atlantic".") Мне при запуске скрипта пишет The following variable name contains an illegal character: "Atlintic"" Как сделать чтобы кавычки были выводимым текстом в SAMP, а не частью команды?
|
|
|
|
[BMW]Motorsports |
Дата: Суббота, 21.04.2018, 19:18 | Сообщение # 409
|
Бывалый
Сообщений: 394
Статус: Offline
|
Chikko_Five, ("azaza")
Telegram: @BMW_Motorsports
|
|
|
|
Chikko_Five |
Дата: Суббота, 28.04.2018, 14:22 | Сообщение # 410
|
Новичок
Сообщений: 3
Статус: Offline
|
Цитата [BMW () Motorsports;4502970]Chikko_Five, ("azaza")
Так что ли?
Код SendChat("Я никогда не работал в компании ("Atlantic")") Добавлено (28.04.2018, 14:22) --------------------------------------------- Ещё я столкнулся с такой проблемой:
После перехода на версию SAMP R-2 у меня перестала работать функция getIdByPed()
Код addChatMessage(getIdByPed(getTargetPed())) После активации данной команды мне выводит в чат "-1", хотя по идее должно выводить ID игрока, на которого я нацелен.
При этом код ниже выводит мне нормальный PED игрока, на которого я нацелен
Код addChatMessage(getTargetPed())
Сообщение отредактировал Chikko_Five - Суббота, 28.04.2018, 14:22 |
|
|
|
123dfggdfg |
Дата: Суббота, 28.04.2018, 21:27 | Сообщение # 411
|
Новичок
Сообщений: 3
Статус: Offline
|
Никто не задавался вопросом чтения 3d текста? Мб подскажете адрес памяти где это хранится, если кто-то знает конечно)
|
|
|
|
Joni228 |
Дата: Суббота, 05.05.2018, 00:55 | Сообщение # 412
|
Бывалый
Сообщений: 314
Статус: Offline
|
Цитата Chikko_Five ( ) Мне при запуске скрипта пишет The following variable name contains an illegal character: "Atlintic"" Как сделать чтобы кавычки были выводимым текстом в SAMP, а не частью команды?
SendChat("Я никогда не работал в компании \"Atlantic\".") Добавлено (05.05.2018, 00:55) ---------------------------------------------
Цитата 123dfggdfg ( ) Никто не задавался вопросом чтения 3d текста? Мб подскажете адрес памяти где это хранится, если кто-то знает конечно)
3D текстов нету в GTA SA, есть GameText и TextDraw
|
|
|
|
|
123dfggdfg |
Дата: Воскресенье, 13.05.2018, 21:11 | Сообщение # 414
|
Новичок
Сообщений: 3
Статус: Offline
|
Цитата Joni228 ( ) 3D текстов нету в GTA SA, есть GameText и TextDraw
Я про вот такой текст.
|
|
|
|
qweqrk |
Дата: Четверг, 17.05.2018, 11:33 | Сообщение # 415
|
Новичок
Сообщений: 10
Статус: Offline
|
Поставил новый UDF вот такая ошибка: В самом ahk указал путь всё как надо #Include SAMP.ahk Помогите как тогда поставить новый UDF ?
qwe.
Сообщение отредактировал qweqrk - Четверг, 17.05.2018, 14:17 |
|
|
|
Toopie |
Дата: Четверг, 17.05.2018, 23:51 | Сообщение # 416
|
Боец
Сообщений: 122
Статус: Offline
|
qweqrk, в UDF нет функции getText()
лучший в мире самп сервер 185.159.129.71:7777 лидерки админки да
|
|
|
|
Mike_Cook |
Дата: Пятница, 25.05.2018, 16:39 | Сообщение # 417
|
Новичок
Сообщений: 14
Статус: Offline
|
Кто может написать этот ноп на ахк(
Сообщение отредактировал Mike_Cook - Пятница, 25.05.2018, 16:41 |
|
|
|
Benedict[CM] |
Дата: Суббота, 02.06.2018, 19:48 | Сообщение # 418
|
Боец
Сообщений: 132
Статус: Offline
|
Цитата [CM () MurKotik;3899679]06.12.2016 | New - getVehicleIdServer() | MrGPro Не работает данная функция. Вписывал в SAMP.ahk, под остальные. Использую самую новую вурсию UDF, что на GitHube.
Так же заинтересован в НОПе (Наверное, так называется) DisableOnFootData, для ухода в АФК и не "двиганья" у других во время того, как он включен.
Сообщение отредактировал Benedict[CM] - Суббота, 02.06.2018, 19:48 |
|
|
|
Drygok |
Дата: Четверг, 07.06.2018, 22:07 | Сообщение # 419
|
Любитель
Сообщений: 37
Статус: Offline
|
Не знаю, может кому понадобится. Скорость авто в режиме наблюдения.
Код SpecSpeed() { if(!checkHandles()) return -1 dwAddr := readDWORD(hGTA, getModuleBaseAddress("gta_sa.exe", 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 }
|
|
|
|
Kanris1488 |
Дата: Воскресенье, 10.06.2018, 22:44 | Сообщение # 420
|
Новичок
Сообщений: 15
Статус: Offline
|
кст, наверное в UDF можно добавить функцию SendMultibind:
Код SendMultiBind(bind) { Loop, Parse, bind,`n,`r { if (RegExMatch(A_LoopField, "Sleep (\d+)", delay)) { AddChatMessage("Включена задержка " Round(delay1 / 1000, 1) " секунд") Sleep, %delay1% } else { SendChat(A_LoopField) Sleep 2500 } } }
Где в строке "Sleep 2500" 2500 - задержка между строками. Пример:
Код "название бинда"= ( /me ... /do ... 123 ) и т.д
Использование: SendMultiBind("название бинда")
|
|
|
|