зона прорисовки луа

L.Rockefelller

Участник
Автор темы
33
0
Версия SA-MP
  1. Любая
Как допустим игрокам в зоне прорисовки отправлять сообщение? Можно фулл код
 
Решение
т.е допустим мне надо написать /pm привет"..id и тогда всем в зоне прорисовки будет отправлятся?
Тебе нужно написать в SAMP чат "/cmd", после этого всем игрокам в зоне стрима будет отправлено сообщение. В моём случае он отправит "/pm ID", добавь строчку для текста. В 13-ой строке:
Lua:
sampSendChat("/pm "..id.." привет") -- пример: "/pm 134 привет"
Продолжили диалог в личных сообщениях. Вот более корректный код (первый вариант не работает, т.к я не учёл при проверки на собственного педа, что функция sampGetPlayerIdByCharHandle(handle) вовзвращает 2 переменных: результат и ID игрока.

Lua:
function main()
  if not isSampLoaded() or not isSampfuncsLoaded() then return end -- проверка на загрузку SF и SAMP
  while not...

DolgorukovGTA

Известный
Проверенный
652
345
Приведу пример для команды /pm (личное сообщение, реализовано на многих SAMP серверах):
Lua:
local peds = getAllChars() -- объявляем массив с хэндлами всех созданных персонажей, включая персонажа игрока.
for _, v in pairs(peds) do -- организуем перебор элементов массива через цикл for
    local result, id = sampGetPlayerIdByCharHandle(v) -- получаем ID игрока через хэндл-элемент массива
    if result and id ~= sampGetPlayerIdByCharHandle(PLAYER_PED) then -- проверяем успешность; не является ли ID твоим (чтобы не отправить сообщение самому себе)
        sampSendChat("/pm "..id) -- выполняем конкантенсацию и отправляем строку в чат
    end -- закрываем блок условного оператора
end -- закрываем цикл for
 
  • Нравится
Реакции: Joni Scripts

L.Rockefelller

Участник
Автор темы
33
0
Приведу пример для команды /pm (личное сообщение, реализовано на многих SAMP серверах):
Lua:
local peds = getAllChars() -- объявляем массив с хэндлами всех созданных персонажей, включая персонажа игрока.
for _, v in pairs(peds) do -- организуем перебор элементов массива через цикл for
    local result, id = sampGetPlayerIdByCharHandle(v) -- получаем ID игрока через хэндл-элемент массива
    if result and id ~= sampGetPlayerIdByCharHandle(PLAYER_PED) then -- проверяем успешность; не является ли ID твоим (чтобы не отправить сообщение самому себе)
        sampSendChat("/pm "..id) -- выполняем конкантенсацию и отправляем строку в чат
    end -- закрываем блок условного оператора
end -- закрываем цикл for
а можешь на активацию сделать?
 

DolgorukovGTA

Известный
Проверенный
652
345
а можешь на активацию сделать?
Lua:
function main()
  if not isSampLoaded() or not isSampfuncsLoaded() then return end -- проверка на загрузку SF и SAMP
  while not isSampAvailable() do wait(100) end -- проверка на инициализацию структур SAMP
  sampRegisterChatCommand("cmd", sendPM) -- регистрируем команду "cmd" с функией "sendPM"
  wait(-1) -- ставим функцию "main" в режим ожидания
end

function sendPM() -- объявляем функцию, которая "прикреплена" к команде
    local peds = getAllChars() -- объявляем массив с хэндлами всех созданных персонажей, включая персонажа игрока.
    for _, v in pairs(peds) do -- организуем перебор элементов массива через цикл for
        local result, id = sampGetPlayerIdByCharHandle(v) -- получаем ID игрока через хэндл-элемент массива
        if result and id ~= sampGetPlayerIdByCharHandle(PLAYER_PED) then -- проверяем успешность; не является ли ID твоим (чтобы не отправить сообщение самому себе)
            sampSendChat("/pm "..id) -- выполняем конкантенсацию и отправляем строку в чат
        end -- закрываем блок условного оператора
    end -- закрываем цикл for
end
 

L.Rockefelller

Участник
Автор темы
33
0
Lua:
function main()
  if not isSampLoaded() or not isSampfuncsLoaded() then return end -- проверка на загрузку SF и SAMP
  while not isSampAvailable() do wait(100) end -- проверка на инициализацию структур SAMP
  sampRegisterChatCommand("cmd", sendPM) -- регистрируем команду "cmd" с функией "sendPM"
  wait(-1) -- ставим функцию "main" в режим ожидания
end

function sendPM() -- объявляем функцию, которая "прикреплена" к команде
    local peds = getAllChars() -- объявляем массив с хэндлами всех созданных персонажей, включая персонажа игрока.
    for _, v in pairs(peds) do -- организуем перебор элементов массива через цикл for
        local result, id = sampGetPlayerIdByCharHandle(v) -- получаем ID игрока через хэндл-элемент массива
        if result and id ~= sampGetPlayerIdByCharHandle(PLAYER_PED) then -- проверяем успешность; не является ли ID твоим (чтобы не отправить сообщение самому себе)
            sampSendChat("/pm "..id) -- выполняем конкантенсацию и отправляем строку в чат
        end -- закрываем блок условного оператора
    end -- закрываем цикл for
end
т.е допустим мне надо написать /pm привет"..id и тогда всем в зоне прорисовки будет отправлятся?
 

DolgorukovGTA

Известный
Проверенный
652
345
т.е допустим мне надо написать /pm привет"..id и тогда всем в зоне прорисовки будет отправлятся?
Тебе нужно написать в SAMP чат "/cmd", после этого всем игрокам в зоне стрима будет отправлено сообщение. В моём случае он отправит "/pm ID", добавь строчку для текста. В 13-ой строке:
Lua:
sampSendChat("/pm "..id.." привет") -- пример: "/pm 134 привет"
Продолжили диалог в личных сообщениях. Вот более корректный код (первый вариант не работает, т.к я не учёл при проверки на собственного педа, что функция sampGetPlayerIdByCharHandle(handle) вовзвращает 2 переменных: результат и ID игрока.

Lua:
function main()
  if not isSampLoaded() or not isSampfuncsLoaded() then return end -- проверка на загрузку SF и SAMP
  while not isSampAvailable() do wait(100) end -- проверка на инициализацию структур SAMP
  sampRegisterChatCommand("cmd", sendPM) -- регистрируем команду "cmd" с функией "sendPM"
  wait(-1) -- ставим функцию "main" в режим ожидания
end

function sendPM() -- объявляем функцию, которая "прикреплена" к команде
    local peds = getAllChars() -- объявляем массив с хэндлами всех созданных персонажей, включая персонажа игрока.
    for _, v in pairs(peds) do -- организуем перебор элементов массива через цикл for
        local result, id = sampGetPlayerIdByCharHandle(v) -- получаем ID игрока через хэндл-элемент массива
        local _, my_id = sampGetPlayerIdByCharHandle(PLAYER_PED) -- отводим отдельную переменную конкретно под собственный ID
        if result and id ~= my_id sampGetPlayerIdByCharHandle(PLAYER_PED) then -- проверяем успешность; не является ли ID твоим (чтобы не отправить сообщение самому себе)
            sampSendChat("/pm "..id.." привет") -- выполняем конкантенсацию и отправляем строку в чат
        end -- закрываем блок условного оператора
    end -- закрываем цикл for
end
 
Последнее редактирование:
  • Нравится
Реакции: L.Rockefelller

_ex$tanOr_

Участник
125
19
Тебе нужно написать в SAMP чат "/cmd", после этого всем игрокам в зоне стрима будет отправлено сообщение. В моём случае он отправит "/pm ID", добавь строчку для текста. В 13-ой строке:
Lua:
sampSendChat("/pm "..id.." привет") -- пример: "/pm 134 привет"
Продолжили диалог в личных сообщениях. Вот более корректный код (первый вариант не работает, т.к я не учёл при проверки на собственного педа, что функция sampGetPlayerIdByCharHandle(handle) вовзвращает 2 переменных: результат и ID игрока.

Lua:
function main()
  if not isSampLoaded() or not isSampfuncsLoaded() then return end -- проверка на загрузку SF и SAMP
  while not isSampAvailable() do wait(100) end -- проверка на инициализацию структур SAMP
  sampRegisterChatCommand("cmd", sendPM) -- регистрируем команду "cmd" с функией "sendPM"
  wait(-1) -- ставим функцию "main" в режим ожидания
end

function sendPM() -- объявляем функцию, которая "прикреплена" к команде
    local peds = getAllChars() -- объявляем массив с хэндлами всех созданных персонажей, включая персонажа игрока.
    for _, v in pairs(peds) do -- организуем перебор элементов массива через цикл for
        local result, id = sampGetPlayerIdByCharHandle(v) -- получаем ID игрока через хэндл-элемент массива
        local _, my_id = sampGetPlayerIdByCharHandle(PLAYER_PED) -- отводим отдельную переменную конкретно под собственный ID
        if result and id ~= my_id sampGetPlayerIdByCharHandle(PLAYER_PED) then -- проверяем успешность; не является ли ID твоим (чтобы не отправить сообщение самому себе)
            sampSendChat("/pm "..id.." привет") -- выполняем конкантенсацию и отправляем строку в чат
        end -- закрываем блок условного оператора
    end -- закрываем цикл for
end
саму функцию можно писать в main while true do? тобишь без function, начиная со строки local peds. Просто у меня там showDialog, с которым идет взаимодействие