infinityx
Известный
- 203
- 55
Rifa - 2858837759Ща бы wiat забыть
Grove - 2852165888
Vagos - 2868630528
Ballas - 2865496319
Aztec - 2852187886
Rifa - 2858837759Ща бы wiat забыть
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
всем ку, написал тут скрипт на вл, покупка пиццы, в общем не знаю одного, как сделать что-бы число, написанное после команды
пример: /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
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
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
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
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
[ML] (error) temp.lua: D:\SAMPPPPP\moonloader\temp.lua:30: bad argument #1 to 'format' (number expected, got nil)@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
Можешь сделать что-бы не работало как вх?
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
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
[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)
Умирает через несколько секунд после спавна и тпхается немного назад в больнице, чтобы не кикнули за помеху.при словах "Добро пожаловать на Diamond Role Play!" перс килл себя ну и тем самым спавнился в больке,а ищё если не лень то добавь что при получении рульки менялся акк на второй,и в два окна если можно)