Вопрос по onDisplayGameText(style, time, text)

_ex$tanOr_

Участник
Автор темы
125
19
Версия MoonLoader
.026-beta
Ребят, какие клавиши нужно вставить в sendKey, чтобы срабатывало нажатие в onDisplayGameText. PS эти не работают

Lua:
function sampev.onDisplayGameText(style, time, text)
    if active == true then
        if text == "~w~Press ~g~~k~~PED_LOCK_TARGET" then
           lua_thread.create(function() 
            wait(700)
            sendKey(6)
           end)
        end
        if text == "~w~Press ~g~~k~~PED_FIREWEAPON" then
         lua_thread.create(function() 
            wait(700)
            sendKey(17)
         end)
        end
    end
end


function sendKey(key)
    local _, myId = sampGetPlayerIdByCharHandle(PLAYER_PED)
    local data = allocateMemory(68)
    sampStorePlayerOnfootData(myId, data)
    setStructElement(data, 36, 1, key, false)
    sampSendOnfootData(data)
    freeMemory(data)
end
iaJBUFCCAAk.jpg
 
Решение
Вопрос решён.
Проблема была в другом отображаемом тексте для ЛКМ, а именно в место ~g~ отображалось ~r~, из-за этого не выполнялось условие сравнения.
~w~Press ~r~~k~~PED_FIREWEAPON~ -для ЛКМ
~w~Press ~g~~k~~PED_LOCK_TARGET~ - для ПКМ

Hatiko

Известный
Проверенный
1,471
612
Это два нормально рабочих способов. У меня на автосбор шара приблизительно аналогично сделано. Где-то накосячено значит.
У тебя вообще условие выполняется на сравнивание текста? Пробовал отдебажить принтом/сообщением в чат?
 

_ex$tanOr_

Участник
Автор темы
125
19
Это два нормально рабочих способов. У меня на автосбор шара приблизительно аналогично сделано. Где-то накосячено значит.
У тебя вообще условие выполняется на сравнивание текста? Пробовал отдебажить принтом/сообщением в чат?
Lua:
script_name('fish')
script_authors('Simon Mitchell')
script_version_number(1)

start_game = true

sampev = require("lib.samp.events")
require "lib.sampfuncs"
require "lib.moonloader"
lastnumber = nil
check_number_status = false
send_sms_message = nil
local state = false
local bNotf, notf = pcall(import, "resource/imgui_notf.lua")
local active = false
local keys = require "vkeys"
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local res_effil, effil = pcall(require, 'effil')

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    print("Simon Mitchell - avtor")
  if start_game then sampAddChatMessage("{FF8C00}[Fish] {FF0000}Разработчик: {20B2AA}Simon Mitchell", -1) end
   sampRegisterChatCommand("fishh", cmd_posad)

   while true do
    wait(0)

   end

end

function sampev.onDisplayGameText(style, time, text)
    if active == true then
        if text == "~w~Press ~g~~k~~PED_LOCK_TARGET~" then
           lua_thread.create(function() 
            wait(700)
            setGameKeyState(6,128)
           end)
        end
        if text == "~w~Press ~g~~k~~PED_FIREWEAPON~" then
         lua_thread.create(function() 
            wait(700)
            setGameKeyState(17,0)
         end)
        end
    end
end


function sendKey(key)
    local _, myId = sampGetPlayerIdByCharHandle(PLAYER_PED)
    local data = allocateMemory(68)
    sampStorePlayerOnfootData(myId, data)
    setStructElement(data, 36, 1, key, false)
    sampSendOnfootData(data)
    freeMemory(data)
end

function cmd_posad()
    active = not active
      notf.addNotification(active and "[Fish] Скрипт успешно запустился" or "[Fish] Скрипт был остановлен, затем выключен", 6, 3)


end
 

_ex$tanOr_

Участник
Автор темы
125
19
Это два нормально рабочих способов. У меня на автосбор шара приблизительно аналогично сделано. Где-то накосячено значит.
У тебя вообще условие выполняется на сравнивание текста? Пробовал отдебажить принтом/сообщением в чат?
Хэлпанешь?
 

_ex$tanOr_

Участник
Автор темы
125
19
Посмотреть вложение 85785
Посмотреть вложение 85786
Я конечно не на что не намекаю, но похоже код клавиши неверный.
У меня теперь пкм нажимается, а лкм нет
Lua:
script_name('fish')
script_authors('Simon Mitchell')
script_version_number(1)

start_game = true

sampev = require("lib.samp.events")
require "lib.sampfuncs"
require "lib.moonloader"
lastnumber = nil
check_number_status = false
send_sms_message = nil
local state = false
local bNotf, notf = pcall(import, "resource/imgui_notf.lua")
local active = false
local keys = require "vkeys"
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local res_effil, effil = pcall(require, 'effil')

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    print("Simon Mitchell - avtor")
  if start_game then sampAddChatMessage("{FF8C00}[Fish] {FF0000}Разработчик: {20B2AA}Simon Mitchell", -1) end
   sampRegisterChatCommand("fishh", cmd_posad)

   while true do
    wait(0)

   end

end

function sampev.onDisplayGameText(style, time, text)
    if active == true then
        if text == "~w~Press ~g~~k~~PED_LOCK_TARGET~" then
           lua_thread.create(function() 
            wait(1000)
            setVirtualKeyDown(VK_RBUTTON, true)
            wait(600)
            setVirtualKeyDown(VK_RBUTTON, false)
           end)
        end
        if text == "~w~Press ~g~~k~~PED_FIREWEAPON~" then
         lua_thread.create(function() 
            wait(1000)
            setVirtualKeyDown(VK_LBUTTON, true)
            wait(600)
            setVirtualKeyDown(VK_LBUTTON, false)
         end)
        end
    end
end



function cmd_posad()
    active = not active
      notf.addNotification(active and "[Fish] Скрипт успешно запустился" or "[Fish] Скрипт был остановлен, затем выключен", 6, 3)
end
 
Последнее редактирование:

Hatiko

Известный
Проверенный
1,471
612
Вопрос решён.
Проблема была в другом отображаемом тексте для ЛКМ, а именно в место ~g~ отображалось ~r~, из-за этого не выполнялось условие сравнения.
~w~Press ~r~~k~~PED_FIREWEAPON~ -для ЛКМ
~w~Press ~g~~k~~PED_LOCK_TARGET~ - для ПКМ