Нужна помощь в доработке скрипта

#NeChiter

Участник
Автор темы
163
15
Версия SA-MP
  1. Любая
В общем, попалась мне данная тема https://www.blast.hk/threads/120364/ , где чел визуально изменял чат, чтобы перевестись в пд на высокий ранг
Мне нужно сделать нечто подобное, чтобы в чате визуально появился текст, будто я арестовал игрока
Порывшись немного на форуме выяснил, что должно писаться при аресте +
[Премия] Вы получили премию за Арест преступника в размере $280000
Вы посадили игрока *НИК ИГРОКА* в тюрьму на 5 минут
Преследование за *НИК ИГРОКА* было приостановлено, причина: игрок заспавнился. (эта строчка появляется не всегда, а только когда не убираешь местоположение преступника на карте /pursuit)

Не имея никакого опыта в создании читов/скриптов и прочего, воспользовался этой темой https://www.blast.hk/threads/120364/ и просто по аналогии вставил нужный мне текст
1706216988088.jpeg

К моему сожалению, весь текст был написан зеленым шрифтом (т.к автор подделывал только чат рации)
1706217083714.jpeg

Дальше я уже без понятия как меняется цвет текста, но должно быть так, как в первых двух скринах, а именно:
1706217258632.png

[Премия] Вы получили премию за Арест преступника в размере $280000 (если приглядеться, то слово [Премия] в первой строке написано светло-зелёным цветом, остальное былым)
Вы посадили игрока *НИК ИГРОКА* в тюрьму на 5 минут (зеленый, чуть темнее того зелёного, которым написано слово [Премия] в 1 строке)
Преследование за *НИК ИГРОКА* было приостановлено, причина: игрок заспавнился. (белый)

+ еще одная проблема (могут конечно не спалить, но рисковать не хочется), заключается в том, что в первой строке 'Арест преступника' выделяется при помощи двух апострофов ('), когда я пробовал так писать, то в игре скрипт не работал (выдавал как неизвестную команду), как я понимаю из-за того, что текст должен начинаться и заканчиваться этим знаком, но у меня же этот знак используется 4 раза, вместо 2 из-за словосочетания 'Арест преступника'. (как это обойти без понятия)
Буду благодарен тому, кто поможет допилить эту штуку (если уж я, не обладая никакими познаниями в этой области, почти смог её сделать, думаю опытным скриптёрам не составит труда поменять в нескольких местах цвет текста и добавить два апострофа)

P.s чтоб не писать вручную
require("lib.moonloader")
function main()
while not isSampAvailable() do wait(0) end
sampRegisterChatCommand('test', function(arg)
local _, id = sampGetPlayerIdByCharHandle(1)
local name = sampGetPlayerNickname(id)
lua_thread.create(function()
sampAddChatMessage('[Премия] Вы получили премию за Арест преступника в размере $280000',0x2DB043)
wait(2391)
sampAddChatMessage('>> Вы посадили игрока Vasya_Pupkin в тюрьму на 5 минут',0x2DB043)
wait(2391)
sampAddChatMessage('Преследование за Vasya_Pupkin было приостановлено, причина: игрок заспавнился.',0x2DB043)
end)
end)
hile true do
wait(0)
end
end
 
Последнее редактирование:
Решение
Готово! Измени Nick-name на ник преступника

Скрипт:
function main()
    while not isSampAvailable() do wait(100) end
    sampRegisterChatCommand('fake_arest', arest)
    wait(-1)
end

function arest()
        sampAddChatMessage('{73B461}[Премия]{FFFFFF} Вы получили премию за "Арест преступника" в размере $360000.', -1)
        sampAddChatMessage('{2DB043}>> Вы посадили игрока Nick-name в тюрьму на 5 минут.', -1)
        sampAddChatMessage('{FFFFFF}Преследование за Nick-name было приостановлено, причина: игрок заспавнился.', -1)
end

Если помог, выбери мой ответ как решение.

tiktokpay

Участник
84
81
Ты уже почти сам всё сделал.
По поводу апострофов в sampAddChatMessage, что бы их добавить, сначала их нужно экранировать ( \' )
Пример:
sampAddChatMessage('[Премия] Вы получили премию за \'Арест преступника\' в размере $280000',0x2DB043)

По поводу цвета текста, то нужно использовать специальные скобки с hex цветом
Пример:
sampAddChatMessage('{A2C4C9}Здарова', -1)

Что бы узнать какой цвет должен быть, можешь воспользоваться кодом ниже, он на всех серверных сообщений показывает коды цветов текста, а так же общий цвет строки, который нужно указывать в качестве 2 аргумента sampAddChatMessage
Lua:
require('samp.events').onServerMessage = function(color, text)
    color = string.upper(bit.tohex(bit.rshift(color, 8), 6))
    text = text:gsub('.', {['{'] = '[', ['}'] = ']'})
    text = string.format('%s Color: [0x%s]', text, color)
    sampAddChatMessage(text, -1)
    print(text)
end
 
Последнее редактирование:

#NeChiter

Участник
Автор темы
163
15
Ты уже почти сам всё сделал.
По поводу апострофов в sampAddChatMessage, что бы их добавить, сначала их нужно экранировать ( \' )
Пример:
sampAddChatMessage('[Премия] Вы получили премию за \'Арест преступника\' в размере $280000',0x2DB043)

По поводу цвета текста, то нужно использовать специальные скобки с hex цветом
Пример:
sampAddChatMessage('{A2C4C9}Здарова', -1)

Что бы узнать какой цвет должен быть, можешь воспользоваться кодом ниже, он на всех серверных сообщений показывает коды цветов текста, а так же общий цвет строки, который нужно указывать в качестве 2 аргумента sampAddChatMessage
Lua:
require('samp.events').onServerMessage = function(color, text)
    color = string.upper(bit.tohex(bit.rshift(color, 8), 6))
    text = text:gsub('.', {['{'] = '[', ['}'] = ']'})
    text = string.format('%s Color: [0x%s]', text, color)
    sampAddChatMessage(text, -1)
    print(text)
end

Короче у меня косяк в первой строке, где используются два цвета:
1706259626368.jpeg

Вот все, что выводится в чат:
1706259909423.jpeg

Со 2 и 3 строкой проблем нет, когда убираешь первую они спокойно работают
Пробовал еще добавить скобки, но тут вообще неизвестную команду выдает:
1706260237288.jpeg
 

cloused2

Активный
307
91
Короче у меня косяк в первой строке, где используются два цвета:
Посмотреть вложение 230114
Вот все, что выводится в чат:
Посмотреть вложение 230125
Со 2 и 3 строкой проблем нет, когда убираешь первую они спокойно работают
Пробовал еще добавить скобки, но тут вообще неизвестную команду выдает:
Посмотреть вложение 230127
Цвет пишем без "0x" ибо это деф функ сампа

Готовый скрипт:
require("lib.moonloader")

function main()
while not isSampAvailable() do wait(0) end
sampRegisterChatCommand('/fake_arest', function(arg)
local _, id = sampGetPlayerIdByCharHandle(1)
local name = sampGetPlayerNickname(id)
lua_thread.create(function()
sampAddChatMessage('{КОД ЦВЕТА}[Премия] {FFFFFF}Вы получили премию за Арест преступника в размере $280000',0x2DB043)
wait(2391)
sampAddChatMessage('{КОД ЦВЕТА}>> Вы посадили игрока Vasya_Pupkin в тюрьму на 5 минут',0x2DB043)
wait(2391)
sampAddChatMessage('{КОД ЦВЕТА} Преследование за Vasya_Pupkin было приостановлено, причина: игрок заспавнился.',0x2DB043)
end)
end)
hile true do
wait(0)
end
end
 

#NeChiter

Участник
Автор темы
163
15
Lua:
require("lib.moonloader")

function main()
while not isSampAvailable() do wait(0) end
sampRegisterChatCommand('/fake_arest', function(arg)
local _, id = sampGetPlayerIdByCharHandle(1)
local name = sampGetPlayerNickname(id)
lua_thread.create(function()
sampAddChatMessage('{73B461}[Премия] {FFFFFF}Вы получили премию за  \'Арест преступника \' в размере $280000', 0x2DB043)
wait(2391)
sampAddChatMessage('{2DB043}>> Вы посадили игрока Vasya_Pupkin в тюрьму на 5 минут', 0x2DB043)
wait(2391)
sampAddChatMessage('{FFFFFF} Преследование за Vasya_Pupkin было приостановлено, причина: игрок заспавнился.', 0x2DB043)
end)
end)
hile true do
wait(0)

Опять неизвестную команду выдаёт
UPD: в 16 строке hile вместо while, исправил, но опять неизвестная команда

Цвет пишем без "0x" ибо это деф функ сампа

Готовый скрипт:
require("lib.moonloader")

function main()
while not isSampAvailable() do wait(0) end
sampRegisterChatCommand('/fake_arest', function(arg)
local _, id = sampGetPlayerIdByCharHandle(1)
local name = sampGetPlayerNickname(id)
lua_thread.create(function()
sampAddChatMessage('{КОД ЦВЕТА}[Премия] {FFFFFF}Вы получили премию за Арест преступника в размере $280000',0x2DB043)
wait(2391)
sampAddChatMessage('{КОД ЦВЕТА}>> Вы посадили игрока Vasya_Pupkin в тюрьму на 5 минут',0x2DB043)
wait(2391)
sampAddChatMessage('{КОД ЦВЕТА} Преследование за Vasya_Pupkin было приостановлено, причина: игрок заспавнился.',0x2DB043)
end)
end)
hile true do
wait(0)
end
end

@cloused2 помоги плиз
 
Последнее редактирование:

cloused2

Активный
307
91
Готово! Измени Nick-name на ник преступника

Скрипт:
function main()
    while not isSampAvailable() do wait(100) end
    sampRegisterChatCommand('fake_arest', arest)
    wait(-1)
end

function arest()
        sampAddChatMessage('{73B461}[Премия]{FFFFFF} Вы получили премию за "Арест преступника" в размере $360000.', -1)
        sampAddChatMessage('{2DB043}>> Вы посадили игрока Nick-name в тюрьму на 5 минут.', -1)
        sampAddChatMessage('{FFFFFF}Преследование за Nick-name было приостановлено, причина: игрок заспавнился.', -1)
end

Если помог, выбери мой ответ как решение.
 
  • Нравится
Реакции: #NeChiter

#NeChiter

Участник
Автор темы
163
15
Готово! Измени Nick-name на ник преступника

Скрипт:
function main()
    while not isSampAvailable() do wait(100) end
    sampRegisterChatCommand('fake_arest', arest)
    wait(-1)
end

function arest()
        sampAddChatMessage('{73B461}[Премия]{FFFFFF} Вы получили премию за "Арест преступника" в размере $360000.', -1)
        sampAddChatMessage('{2DB043}>> Вы посадили игрока Nick-name в тюрьму на 5 минут.', -1)
        sampAddChatMessage('{FFFFFF}Преследование за Nick-name было приостановлено, причина: игрок заспавнился.', -1)
end

Если помог, выбери мой ответ как решение.
Благодарю, выручил. Отметил как решение
 
  • Влюблен
Реакции: cloused2