opcode 068C

copypaste_scripter

Известный
Автор темы
1,218
223
Версия MoonLoader
Другое
[ML] (error) myhud.lua: opcode '068C' call caused an unhandled exception
stack traceback:
[C]: in function 'isPlayerTargettingAnything'
C:\Games\ARIZONA GAMES\bin\Arizona\moonloader\myhud.lua:96: in function <C:\Games\ARIZONA GAMES\bin\Arizona\moonloader\myhud.lua:70>
[ML] (error) myhud.lua: Script died due to an error. (289E964C)

96 line:
amitargeting = isPlayerTargettingAnything(PLAYER_PED)

хочу как то убрать прицел и поставить свой с рендером
 

#Northn

Police Helper «Reborn» — уже ШЕСТЬ лет!
Всефорумный модератор
2,634
2,483
  • Bug
Реакции: kin4stat

copypaste_scripter

Известный
Автор темы
1,218
223
Функция isPlayerTargettingAnything принимает не PLAYER_PED, а PLAYER_HANDLE.
больше не крашит но не работает, не знаешь в чем дело?

ложь
он принимает айдишник игрока самой гташки вероятнее всего, достаточно указать туда -1
-1 опять крашить начал
 

Hatiko

Известный
Проверенный
1,472
611
больше не крашит но не работает, не знаешь в чем дело?
Покажи участок кода или скрипт если есть возможность.
Глобальная переменная на то и есть, что она возвращает индентификатор локального игрока, только он не -1, а 0.
 

copypaste_scripter

Известный
Автор темы
1,218
223
Покажи участок кода или скрипт если есть возможность.

Глобальная переменная на то и есть, что она возвращает индентификатор локального игрока, только он не -1, а 0.
да 0 работает, -1 крашил

вот скрипт
Lua:
local memory = require 'memory'
local sampev = require "lib.samp.events"
local crosshair = renderLoadTextureFromFile("C:\\Games\\ARIZONA GAMES\\bin\\Arizona\\moonloader\\resource\\myhud\\crosshair.png")

function main()
   while not isSampAvailable() do wait(100) end

    displayHud(false)
    drawCrosshair(false) -- не работает...
 
    while true do
    wait(0)

        local _, myid = sampGetPlayerIdByCharHandle(playerPed)
        amitargeting = isPlayerTargettingAnything(0)
     
        if amitargeting==true then
            renderDrawTexture(crosshair, 1008, 390, 20, 20, 0, 0xFFFFFFFF)
        end
    end
end

edit:
https://www.blast.hk/threads/116686/ вот такая проблема, по этому решил сделать свой прицел

edit2:
drawCrosshair(false) это можно тупо решить заменой самой текстуры прицела в файле худа прозрачным фоном просто, но новый не рисуется

edit3:
добавил вывод значения переменной в чат, пишет всегда FALSE хотя я целюсь, может надо просто другая переменная чтобы хукать "прицеливаюсь ли я"
 
Последнее редактирование:

Hatiko

Известный
Проверенный
1,472
611
Функция isPlayerTargettingAnything как-ток ривовато работает, используйте getCharPlayerIsTargeting, она корректно работает. Касаемо drawCrosshair(false), я пока не понял в чем ее смысл, т.к. она не работает, и в не и в цикле она ничего не изменяет, не убирает, возможно структура в SF битая как было с LocalSpawn, либо я что-то не до понимаю.
Lua:
local isTargeting, tPed = getCharPlayerIsTargeting(0)
if isTargeting then
    -- draw
end

UPD: есть сниппет для скрытия:
 
Последнее редактирование:

copypaste_scripter

Известный
Автор темы
1,218
223
Функция isPlayerTargettingAnything как-ток ривовато работает, используйте sampGetPlayerIdByCharHandle, она корректно работает. Касаемо drawCrosshair(false), я пока не понял в чем ее смысл, т.к. она не работает, и в не и в цикле она ничего не изменяет, не убирает, возможно структура в SF битая как было с LocalSpawn, либо я что-то не до понимаю.
Lua:
local isTargeting, tPed = sampGetPlayerIdByCharHandle(0)
if isTargeting then
    -- draw
end

UPD: есть сниппет для скрытия:
хм все равно нет

edit:
может надо isTargeTTing? с двумя Т
 
Последнее редактирование:

copypaste_scripter

Известный
Автор темы
1,218
223
Я перепутал функции, когда копировал. Используй local isTargeting, tPed = getCharPlayerIsTargeting(0)
цитирую вики: Проверяет, целится ли игрок в другого персонажа, и возвращает его хэндл.

мне надо чтобы когда я зажимаю кнопку (т.к. целиваюсь) чтобы рисовался мой прицел, а не когда наводил прицел на игрока
 

Hatiko

Известный
Проверенный
1,472
611
мне надо чтобы когда я зажимаю кнопку (т.к. целиваюсь) чтобы рисовался мой прицел
А, тогда намного проще задача: проверяем нажатие кнопки мыши и отсутствие побочных элементов интерфейсов (диалог, чат и т.п. сам допишешь), а также что у нас в руках какое-то оружие (IDweapon не равен 0, тут конечно не все подойдут) и рисуем свой прицел.

Lua:
require("moonloader")
local memory = require 'memory'
local sampev = require "lib.samp.events"
local crosshair = renderLoadTextureFromFile("C:\\Games\\ARIZONA GAMES\\bin\\Arizona\\moonloader\\resource\\myhud\\crosshair.png")


crosshair = {5825260,5825281,5825270,5825265,5825471,5825498,5825489,5825480,5825568,5825587,5825578,5825573,5825633,5825660,5825651,5825638,5825638,5825159,5825180,5825175,5825170}

function main()
   while not isSampAvailable() do wait(100) end
    for i, val in ipairs(crosshair) do
        memory.write(val, false and 255 or 0, 1, true)
    end
    displayHud(false)
 
    while true do
    wait(0)

         if isKeyDown(VK_RBUTTON) and getCurrentCharWeapon(PLAYER_PED) ~= 0 and not sampIsDialogActive() and not sampIsChatInputActive() then
            renderDrawTexture(crosshair, 1008, 390, 20, 20, 0, 0xFFFFFFFF)
        end
    end
end
 
  • Нравится
Реакции: copypaste_scripter