Заказываем lua скрипты | Халява

Статус
В этой теме нельзя размещать новые ответы.

Issaychik

Известный
194
35
при словах "Добро пожаловать на Diamond Role Play!" перс килл себя ну и тем самым спавнился в больке,а ищё если не лень то добавь что при получении рульки менялся акк на второй,и в два окна если можно)
 

R4STIK

Новичок
3
0
всем ку, написал тут скрипт на вл, покупка пиццы, в общем не знаю одного, как сделать что-бы число, написанное после команды
пример: /pizza 10
Чтобы 10 раз повторялось:
sampSendDialogResponse(3389,1,3,false)
sampSendDialogResponse(3390,0,0,false)
Или /pizza 5, и 5 повторений представленного выше, прошу помощи
Говно-код:
Говно-код:
script_name("Pizza buy")
script_author("By r4")
local hook = require 'lib.samp.events'
function main()
while not isSampAvailable() do wait(228) end
sampRegisterChatCommand('pizza', matymret)
while true do
wait(0)
if pizza == true then
    if sampIsDialogActive(3389) then
        sampAddChatMessage('{07FFFF} [Pizza Lua]: {09FF23}Начинаем работу', -1)
         sampSendDialogResponse(3389,1,3,false)
         sampSendDialogResponse(3390,0,0,false)
        sampAddChatMessage('{07FFFF} [Pizza Lua]: {09FF23}Работа успешно завершена', -1)
    else
        sampAddChatMessage('{07FFFF} [Pizza Lua]: {FF0000}Работа окончена ', -1)
        sampAddChatMessage('{07FFFF} [Pizza Lua]: {FFFFFF}Возможные причины:', -1)
        sampAddChatMessage('{07FFFF} [Pizza Lua]: {FFFFFF}1 - Не открыт диалог покупки пиццы', -1)
        sampAddChatMessage('{07FFFF} [Pizza Lua]: {FFFFFF}2 - Да вроде всё o.O', -1)
    end
pizza = false
end
end
end

function matymret(id)
pizza = true
end

[Учусь Луа]
 

Oi Nikazum

Потрачен
182
232
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
всем ку, написал тут скрипт на вл, покупка пиццы, в общем не знаю одного, как сделать что-бы число, написанное после команды
пример: /pizza 10
Чтобы 10 раз повторялось:
sampSendDialogResponse(3389,1,3,false)
sampSendDialogResponse(3390,0,0,false)
Или /pizza 5, и 5 повторений представленного выше, прошу помощи
Говно-код:
Говно-код:
script_name("Pizza buy")
script_author("By r4")
local hook = require 'lib.samp.events'
function main()
while not isSampAvailable() do wait(228) end
sampRegisterChatCommand('pizza', matymret)
while true do
wait(0)
if pizza == true then
    if sampIsDialogActive(3389) then
        sampAddChatMessage('{07FFFF} [Pizza Lua]: {09FF23}Начинаем работу', -1)
         sampSendDialogResponse(3389,1,3,false)
         sampSendDialogResponse(3390,0,0,false)
        sampAddChatMessage('{07FFFF} [Pizza Lua]: {09FF23}Работа успешно завершена', -1)
    else
        sampAddChatMessage('{07FFFF} [Pizza Lua]: {FF0000}Работа окончена ', -1)
        sampAddChatMessage('{07FFFF} [Pizza Lua]: {FFFFFF}Возможные причины:', -1)
        sampAddChatMessage('{07FFFF} [Pizza Lua]: {FFFFFF}1 - Не открыт диалог покупки пиццы', -1)
        sampAddChatMessage('{07FFFF} [Pizza Lua]: {FFFFFF}2 - Да вроде всё o.O', -1)
    end
pizza = false
end
end
end

function matymret(id)
pizza = true
end

[Учусь Луа]
Немного все изменил:
script_name("Pizza buy")
script_author("By r4")

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

    sampRegisterChatCommand('pizza', function(colvo)
        pizza = true
        sampAddChatMessage('{07FFFF} [Pizza Lua]: {09FF23}Начинаем работу', -1)
            if colvo ~= nil and colvo > 0 then
                colvo = colvo
            else
            colvo = 1
        end
    end)
    
    while true do wait(0)
        if pizza == true and sampIsDialogActive(3389) then
            for i = 0, colvo do
                sampSendDialogResponse(3389,1,3,false)
                sampSendDialogResponse(3390,0,0,false)
                if i == colvo then
                    sampAddChatMessage('{07FFFF} [Pizza Lua]: {09FF23}Работа успешно завершена', -1)
                    pizza = false
                end
            end
        end
    end
end
 

AnWu

Guardian of Order
Автор темы
Всефорумный модератор
4,687
5,166
https://vk.com/hertzjeda заказал скрипт который на СРП при нажатии на U будет повышать ранг игрока в армии на одну ступень, на i понижать. Так же чтобы была отыгровка.
Код:
Lua:
local SE = require 'samp.events'
local vkeys = require 'vkeys'

local ck = false
local mData = {}
local assoc = {}

local rankData = {
   "рядового",
   "ефрейтора",
   "младшего сержанта",
   "сержанта",
   "старшего сержанта",
   "старшины",
   "прапорщика",
   "младшего лейтенанта",
   "лейтенанта",
   "старшего лейтенанта",
   "капитана",
   "майора",
   "подполковника",
   "полковника"
}

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
   while not isSampAvailable() do wait(0) end
   while true do
      wait(0)
      if not sampIsChatInputActive() and not sampIsDialogActive() and not isSampfuncsConsoleActive() and not ck then
         local result, ped = getCharPlayerIsTargeting(PlAYER_HANDLE)
         if result then
            local result_, id = sampGetPlayerIdByCharHandle(ped)
            if result_ then
               local mid = assoc[id]
               if mid then
                  if wasKeyPressed(vkeys.VK_U) or wasKeyPressed(vkeys.VK_I) then
                     lua_thread.create(function()
                        local newRank = wasKeyPressed(vkeys.VK_U) and mData[mid].rankNum + 1 or mData[mid].rankNum - 1
                        mData[mid].rankNum = newRank
                        sampSendChat(("/giverank %d %d"):format(id, newRank))
                        if rankData[newRank] then
                           wait(1200)
                           sampSendChat(("/me выдал %s %s"):format(newRank < 8 and "лычки" or "погоны", rankData[newRank]))
                        end
                     end)
                  end
               else
                  ck = true
                  sampSendChat("/members 1")
               end
            end
         end
      end
   end
end

function SE.onShowDialog(dialogid, style, title, btn1, btn2, text)
   if ck and title == "Состав онлайн" then
      local tstr = split(text, "\n")
      table.remove(tstr, 1)
      mData = {}
      for k, v in ipairs(tstr) do
         local id, nick, rank, rankNum = v:match("%[%d+%] %[(%d+)%] (%a+_%a+)    (.*) %[(%d+)%]")
         if id and nick then
            table.insert(mData, {
               id = id,
               nick = nick,
               rankNum = rankNum
            })
            assoc[tonumber(id)] = #mData
         end
      end
      ck = false
      return false
   end
end

function split(str, delim, plain) -- bh FYP
   local tokens, pos, plain = {}, 1, not (plain == false) --[[ delimiter is plain text by default ]]
   repeat
       local npos, epos = string.find(str, delim, pos, plain)
       table.insert(tokens, string.sub(str, pos, npos and npos - 1))
       pos = epos and epos + 1
   until not pos
   return tokens
end
 

Вложения

  • temp.lua
    2.7 KB · Просмотры: 16

P0M61K

Активный
264
54
Можешь сделать что-бы не работало как вх?

Lua:
ffi = require "ffi"
getBonePosition = ffi.cast("int (__thiscall*)(void*, float*, int, bool)", 0x5E4280)

DIST = 25.5 -- Дистанция отрисовки нужного тебе текста.
status = true -- при заходе в игру скрипт уже будет работать.

function main()
    
    font = renderCreateFont('Tahoma', 7, 13) -- создание шрифта
    
    sampRegisterChatCommand('headlvl', function()
        if status == true then
            status = false
            sampAddChatMessage('[HeadLvl] Показатель уровня был выключен', -1)
        else
            status = true
            sampAddChatMessage('[HeadLvl] Показатель уровня был включен', -1)
        end
    end)
    
    while true do wait(0)
        if status then
            for k, PED in pairs(getAllChars()) do -- перебор всех игроков в зоне стрима, где PED - хэндл
                local res, id = sampGetPlayerIdByCharHandle(PED) -- получение id этих игроков
                if res then -- если получение ид прошло успешно, то
                    if isCharOnScreen(PED) and PED ~= PLAYER_PED and not sampIsPlayerNpc(id) then -- если игрок на экране и этот игрок не наш и игрок не npc, то
                        local x, y, z = getCharCoordinates(PED) -- получаем координаты игрока
                        local x2, y2, z2 = getCharCoordinates(PLAYER_PED) -- получаем свои координаты
                        local distance = getDistanceBetweenCoords3d(x, y, z, x2, y2, z2) -- получаем расстояние от себя до игрока
                        if distance <= DIST and isPointOnScreen(x, y, z, 0.0) then -- если дистанция меньше или равна указанной в переменной DIST, то
                            local x6, y6, z6 = GetBodyPartCoordinates(6, PED) -- получение координатов кости под идом 6 (голова).
                            local x6, y6 = convert3DCoordsToScreen(x6, y6, z6) -- Конвертация 3д координаты в координаты экрана.
                            local color = sampGetPlayerColor(id) -- получение цвета игрока
                            local score = sampGetPlayerScore(id) -- получаем лвл игрока
                            renderFontDrawText(font, '[LVL: '..score..']', x6, y6 / 1.14, color) -- также если тебе нужно, чтобы было над головой, то делай небольшое смещение от координат головы,
                                -- в данном случае 1.14, если тебе нужно более высокое расположение, то увеличивай это значение.
                        end
                    end
                end
            end
        end
    end
end
    
    
function GetBodyPartCoordinates(id, handle)
  local pedptr = getCharPointer(handle)
  local vec = ffi.new("float[3]")
  getBonePosition(ffi.cast("void*", pedptr), vec, id, true)
  return vec[0], vec[1], vec[2]
end
 

AnWu

Guardian of Order
Автор темы
Всефорумный модератор
4,687
5,166
@DANIIL XPC просил написать чекер стрима по цвету ника который он укажет в команде /sx
Код:
Lua:
local color = 0xFFFFFFFF
function main()
   if not isSampfuncsLoaded() or not isSampLoaded() then return end
   while not isSampAvailable() do wait(0) end
   sampRegisterChatCommand("sx", function (param)
      if param and #param > 0 then
         color = tonumber(param)
      end
      for k, v in ipairs(getAllChars()) do
         local result, id = sampGetPlayerIdByCharHandle(v)
         if result and sampIsPlayerConnected(id) and sampGetPlayerColor(id) == color then
            sampAddChatMessage(("%s[%d] have color nickname {e7e7e7}%s"):format(sampGetPlayerNickname(id), id, tostring(color)))
         end
      end
   end)
   wait(-1)
end

rename file (переименуйте файл)
 

Вложения

  • temp.lua
    668 байт · Просмотры: 6

AnWu

Guardian of Order
Автор темы
Всефорумный модератор
4,687
5,166
@infinityx просил написать чекер онлайна банд на ДРП. команда /gonline
Код: (не проверял, не играю на дрп)
Lua:
local gangColor = {
   [2858837759] = "Rifa",
   [2852165888] = "Grove",
   [2868630528] = "Vagos",
   [2865496319] = "Ballas",
   [2852187886] = "Aztec"
}
local gangCount = {
   ["Rifa"] = 0,
   ["Grove"] = 0,
   ["Vagos"] = 0,
   ["Ballas"] = 0,
   ["Aztec"] = 0,
}
function main()
   if not isSampfuncsLoaded() or not isSampLoaded() then return end
   while not isSampAvailable() do wait(0) end
   sampRegisterChatCommand("gonline", function ()
      for i = 0, 999 do
         if sampIsPlayerConnected(i) then
            local color = sampGetPlayerColor(i)
            local gcolor = gangColor[color]
            if gcolor then
               gangCount[gcolor] = gangCount[gcolor] + 1
            end
         end
      end
      sampAddChatMessage(("Rifa: %d | Grove: %d | Vagos: %d | Ballas: %d | Aztec: %d"):format(gangCount["Rifa"], gangCount["Grove"], gangCount["Vagos"], gangCount["Ballas"], gangCount["Aztec"]))
   end)
   wait(-1)
end
 

Вложения

  • temp.lua
    981 байт · Просмотры: 10
Последнее редактирование:

infinityx

Известный
203
55
@infinityx просил написать чекер онлайна банд на ДРП. команда /gonline
Код: (не проверял, не играю на дрп)
Lua:
local gangColor = {
   [2858837759] = "Rifa",
   [2852165888] = "Grove",
   [2868630528] = "Vagos",
   [2865496319] = "Ballas",
   [2852187886] = "Aztec"
}

local gangCount = {
   ["Rifa"] = 0,
   ["Grove"] = 0,
   ["Vagos"] = 0,
   ["Ballas"] = 0,
   ["Aztec"] = 0,
}

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
   while not isSampAvailable() do wait(0) end
   sampRegisterChatCommand("gonline", function ()
      for i = 0, 999 do
         if sampIsPlayerConnected(i) then
            local color = sampGetPlayerColor(i)
            local gcolor = gangColor[color]
            if gcolor then
               gangCount[gcolor] = gangCount[gcolor] + 1
            end
         end
      end
      sampAddChatMessage(("Rifa: %d | Grove: %d | Vagos: %d | Ballas: %d | Aztec: %d"):format(gangColor["Rifa"], gangColor["Grove"], gangColor["Vagos"], gangColor["Ballas"], gangColor["Aztec"]))
   end)
   wait(-1)
end
[ML] (error) temp.lua: D:\SAMPPPPP\moonloader\temp.lua:30: bad argument #1 to 'format' (number expected, got nil)
stack traceback:
[C]: in function 'format'
D:\SAMPPPPP\moonloader\temp.lua:30: in function <D:\SAMPPPPP\moonloader\temp.lua:20>
[ML] (error) temp.lua: Script died due to an error. (06241C7C)
 

Vitali0

Известный
286
143
Я хз на сколько это сложно, но если не сложно замути чтобы при команде уберались ВСЕ скины сумпа
 

AnWu

Guardian of Order
Автор темы
Всефорумный модератор
4,687
5,166
Можешь сделать что-бы не работало как вх?

Lua:
ffi = require "ffi"
getBonePosition = ffi.cast("int (__thiscall*)(void*, float*, int, bool)", 0x5E4280)

DIST = 25.5 -- Дистанция отрисовки нужного тебе текста.
status = true -- при заходе в игру скрипт уже будет работать.

function main()
   
    font = renderCreateFont('Tahoma', 7, 13) -- создание шрифта
   
    sampRegisterChatCommand('headlvl', function()
        if status == true then
            status = false
            sampAddChatMessage('[HeadLvl] Показатель уровня был выключен', -1)
        else
            status = true
            sampAddChatMessage('[HeadLvl] Показатель уровня был включен', -1)
        end
    end)
   
    while true do wait(0)
        if status then
            for k, PED in pairs(getAllChars()) do -- перебор всех игроков в зоне стрима, где PED - хэндл
                local res, id = sampGetPlayerIdByCharHandle(PED) -- получение id этих игроков
                if res then -- если получение ид прошло успешно, то
                    if isCharOnScreen(PED) and PED ~= PLAYER_PED and not sampIsPlayerNpc(id) then -- если игрок на экране и этот игрок не наш и игрок не npc, то
                        local x, y, z = getCharCoordinates(PED) -- получаем координаты игрока
                        local x2, y2, z2 = getCharCoordinates(PLAYER_PED) -- получаем свои координаты
                        local distance = getDistanceBetweenCoords3d(x, y, z, x2, y2, z2) -- получаем расстояние от себя до игрока
                        if distance <= DIST and isPointOnScreen(x, y, z, 0.0) then -- если дистанция меньше или равна указанной в переменной DIST, то
                            local x6, y6, z6 = GetBodyPartCoordinates(6, PED) -- получение координатов кости под идом 6 (голова).
                            local x6, y6 = convert3DCoordsToScreen(x6, y6, z6) -- Конвертация 3д координаты в координаты экрана.
                            local color = sampGetPlayerColor(id) -- получение цвета игрока
                            local score = sampGetPlayerScore(id) -- получаем лвл игрока
                            renderFontDrawText(font, '[LVL: '..score..']', x6, y6 / 1.14, color) -- также если тебе нужно, чтобы было над головой, то делай небольшое смещение от координат головы,
                                -- в данном случае 1.14, если тебе нужно более высокое расположение, то увеличивай это значение.
                        end
                    end
                end
            end
        end
    end
end
   
   
function GetBodyPartCoordinates(id, handle)
  local pedptr = getCharPointer(handle)
  local vec = ffi.new("float[3]")
  getBonePosition(ffi.cast("void*", pedptr), vec, id, true)
  return vec[0], vec[1], vec[2]
end
Lua:
ffi = require "ffi"
getBonePosition = ffi.cast("int (__thiscall*)(void*, float*, int, bool)", 0x5E4280)

DIST = 25.5 -- Дистанция отрисовки нужного тебе текста.
status = true -- при заходе в игру скрипт уже будет работать.

function main()
   
    font = renderCreateFont('Tahoma', 7, 13) -- создание шрифта
   
    sampRegisterChatCommand('headlvl', function()
        if status == true then
            status = false
            sampAddChatMessage('[HeadLvl] Показатель уровня был выключен', -1)
        else
            status = true
            sampAddChatMessage('[HeadLvl] Показатель уровня был включен', -1)
        end
    end)
   
    while true do wait(0)
        if status then
            for k, PED in pairs(getAllChars()) do -- перебор всех игроков в зоне стрима, где PED - хэндл
                local res, id = sampGetPlayerIdByCharHandle(PED) -- получение id этих игроков
                if res then -- если получение ид прошло успешно, то
                    if isCharOnScreen(PED) and PED ~= PLAYER_PED and not sampIsPlayerNpc(id) then -- если игрок на экране и этот игрок не наш и игрок не npc, то
                        local x, y, z = getCharCoordinates(PED) -- получаем координаты игрока
                        local x2, y2, z2 = getCharCoordinates(PLAYER_PED) -- получаем свои координаты
                        local distance = getDistanceBetweenCoords3d(x, y, z, x2, y2, z2) -- получаем расстояние от себя до игрока
                        if distance <= DIST and isPointOnScreen(x, y, z, 0.0) and isCharOnScreen(PED) then -- если дистанция меньше или равна указанной в переменной DIST и виден на экране, то
                            local x6, y6, z6 = GetBodyPartCoordinates(6, PED) -- получение координатов кости под идом 6 (голова).
                            local x6, y6 = convert3DCoordsToScreen(x6, y6, z6) -- Конвертация 3д координаты в координаты экрана.
                            local color = sampGetPlayerColor(id) -- получение цвета игрока
                            local score = sampGetPlayerScore(id) -- получаем лвл игрока
                            renderFontDrawText(font, '[LVL: '..score..']', x6, y6 / 1.14, color) -- также если тебе нужно, чтобы было над головой, то делай небольшое смещение от координат головы,
                                -- в данном случае 1.14, если тебе нужно более высокое расположение, то увеличивай это значение.
                        end
                    end
                end
            end
        end
    end
end
   
   
function GetBodyPartCoordinates(id, handle)
  local pedptr = getCharPointer(handle)
  local vec = ffi.new("float[3]")
  getBonePosition(ffi.cast("void*", pedptr), vec, id, true)
  return vec[0], vec[1], vec[2]
end
Не тестил
 

AnWu

Guardian of Order
Автор темы
Всефорумный модератор
4,687
5,166
[ML] (error) temp.lua: D:\SAMPPPPP\moonloader\temp.lua:30: bad argument #1 to 'format' (number expected, got nil)
stack traceback:
[C]: in function 'format'
D:\SAMPPPPP\moonloader\temp.lua:30: in function <D:\SAMPPPPP\moonloader\temp.lua:20>
[ML] (error) temp.lua: Script died due to an error. (06241C7C)
 

Вложения

  • temp.lua
    981 байт · Просмотры: 10

Toskani1982

Новичок
1
0
Хотелось бы посмотреть код, который делал бы вот это:
"При активации команды открывалось бы диалоговое окно в которое нужно ввести определённое значение (пароль), далее если значение было бы правильным, то открывалось бы другое диалоговое окно с инфой (нулевой тип) или окно второго типа." Кто не понял о каких типах я, то вот -
DIALOG_STYLE_MSGBOX = 0 // С текстом
DIALOG_STYLE_INPUT = 1 // С полем для ввода текста
DIALOG_STYLE_LIST = 2 // Со списком
DIALOG_STYLE_PASSWORD = 3 // С полем для ввода текста, текст заменяется точками
DIALOG_STYLE_TABLIST = 4 // Похож на DIALOG_STYLE_LIST, но может быть разбит на несколько колонок
DIALOG_STYLE_TABLIST_HEADERS = 5 // Тот же, что и DIALOG_STYLE_TABLIST, но имеет заголовки для колонок
 

Howl1337

Известный
236
146
при словах "Добро пожаловать на Diamond Role Play!" перс килл себя ну и тем самым спавнился в больке,а ищё если не лень то добавь что при получении рульки менялся акк на второй,и в два окна если можно)
Умирает через несколько секунд после спавна и тпхается немного назад в больнице, чтобы не кикнули за помеху.
Активация: /sd перед вводом пароля

Второе требование бесплатно сомневаюсь что кто-то сделает.
 

Вложения

  • SpawnDeath.lua
    2 KB · Просмотры: 17
Последнее редактирование:
  • Нравится
Реакции: REMI99 и Issaychik
Статус
В этой теме нельзя размещать новые ответы.