- Версия MoonLoader
- .026-beta
Мой скрипт:
script_name('Dialog lesson') -- название скрипта
script_description('Dialog samp') -- описание скрипта
require "lib.moonloader" -- подключение библиотеки
local sampev = require 'lib.samp.events'
------------------ COLOR ------------------
local color = 0xFFFFFF
local color_dialog = 0xDEB887
local main_color_text = "{5A90CE}"
local waite_color = "{FFFFFF}"
local red_color = "{FF0000}"
local purple_color = "{FF00FF}"
-------------------------------------------
local statushead = true
local statuseat = true
local statushome = true
local message = false
local status = "{00FF00}On" or "{FF0000}Off"
------------ Для диалога с ID 15 ------------
local dialogTabHeaderArr = {"Скрипт\tЗначение\n", "Auto{FF0000}head\t" .. (statushead and status), "Auto{FF0000}eat\t" .. (statuseat and status), "\nAuto{FF0000}home\t"..(statushome and status)}
local dialogTabHeaderStr = ""
for _, str in ipairs(dialogTabHeaderArr) do
dialogTabHeaderStr = dialogTabHeaderStr .. str .. "\n"
end
---------------------------------------------
function main()
if not isSampLoaded() or not isSampfuncsLoaded() then return end
while not isSampAvailable() do wait(100) end
sampAddChatMessage('{FFFFFF}Скрипт {00BFFF}DIALOG ', 0xFFFFFF)
-- sampRegisterChatCommand("dialog", cmd_dialog)
sampRegisterChatCommand('dialog',function()
sampShowDialog(15, 'Script', "Скрипт\tЗначение\nAuto{FF0000}head\t"..(statushead and status).."\nAuto{FF0000}eat\t"..(statuseat and status).."\nAuto{FF0000}home\t"..(statushome and status), "Выбрать", "Закрыть", 5)
end)
_, id = sampGetPlayerIdByCharHandle(PLAYER_PED)
nick = sampGetPlayerNickname(id)
while true do
wait(0)
local result, button, list, input = sampHasDialogRespond(15) -- /dialog5 (TabListHeaderBox)
if result then -- если диалог открыт
if button == 1 then -- если нажата первая кнопка (Выбрать)
if list == 0 then
statushead = not statushead
sampAddChatMessage(statushead and "{00FF00}On" or "{FF0000}Off", -1)
sampShowDialog(15, 'Script', "Скрипт\tЗначение\nAuto{FF0000}head\t"..(statushead and "{00FF00}On" or "{FF0000}Off").."\nAuto{FF0000}eat\t"..(statuseat and "{00FF00}On" or "{FF0000}Off").."\nAuto{FF0000}home\t"..(statushome and "{00FF00}On" or "{FF0000}Off"), "Выбрать", "Закрыть", 5)
elseif list == 1 then
statuseat = not statuseat
sampAddChatMessage(statuseat and "{00FF00}On" or "{FF0000}Off", -1)
sampShowDialog(15, 'Script', "Скрипт\tЗначение\nAuto{FF0000}head\t"..(statushead and "{00FF00}On" or "{FF0000}Off").."\nAuto{FF0000}eat\t"..(statuseat and "{00FF00}On" or "{FF0000}Off").."\nAuto{FF0000}home\t"..(statushome and "{00FF00}On" or "{FF0000}Off"), "Выбрать", "Закрыть", 5)
elseif list == 2 then
statushome = not statushome
sampAddChatMessage(statushome and "{00FF00}On" or "{FF0000}Off", -1)
sampShowDialog(15, 'Script', "Скрипт\tЗначение\nAuto{FF0000}head\t"..(statushead and "{00FF00}On" or "{FF0000}Off").."\nAuto{FF0000}eat\t"..(statuseat and "{00FF00}On" or "{FF0000}Off").."\nAuto{FF0000}home\t"..(statushome and "{00FF00}On" or "{FF0000}Off"), "Выбрать", "Закрыть", 5)
elseif list == 3 then
sampAddChatMessage("В диалоге с ID 15 выбран пункт {FFFFFF}" .. list, color_dialog)
end
else -- если нажата вторая кнопка (Закрыть)
sampAddChatMessage("Вы закрыли диалог", color_dialog)
end
end
end
end
function sampev.onShowDialog(did, style, title, b1, b2, text) -- функция в самп.евентс (диалогид, стиль, титры*то что вверху диалога*, первая кнопка, вторая кнопка, текст)
---------- AUTOBPMVD ----------
if did == 175 then
sampSendDialogResponse(did, 1, 1, nil)
sampSendDialogResponse(did, 1, 3, nil)
sampSendDialogResponse(did, 1, 4, nil)
sampSendDialogResponse(did, 1, 5, nil)
sampSendDialogResponse(did, 1, 6, nil)
sampSendDialogResponse(did, 1, 7, nil)
sampSendDialogResponse(did, 1, 10, nil)
sampSendDialogResponse(did, 0, nil, nil)
sampCloseCurrentDialogWithButton(1)
return false
end
---------- AUTOCLOSEHOME ----------
if message and title:find("Параметры дома") then
message = false
homes = true
sampSendDialogResponse(did, 1, 1, nil)
sampSendDialogResponse(did, 0, 1, nil)
sampCloseCurrentDialogWithButton(1)
--sampAddChatMessage("Нажимаю на вторую строку диалога", -1)
return false
end
---------- AUTOCLOSEHOME ----------
if homes and message == false and title:find("Параметры дома") then
sampSendDialogResponse(did, 0, 1, nil)
sampCloseCurrentDialogWithButton(0)
return false
end
-------------------------------------
end
function sampev.onServerMessage(color, text) -- Этот хук ловит сообщения в чате
---------- AUTOCLOSEHOME ----------
if statushome then
if text:find("hack") then --Сотрудники ФБР взломали дверь Вашего дома!
sampSendChat("/home")
message = true
end
end
-------------------------------------
lua_thread.create(function() -- создаем поток -- позволяет использовать wait
---------- AUTO HEAD ----------
if statushead then
if text:find("Чтобы убрать наушники, введите {FF9900}/head") then
sampSendChat("/head")
end
end
-------------------------------
---------- AUTO EAT ----------
if text:find("Используйте {6699FF}/eat {CECECE}чтобы поесть или {6699FF}/put {CECECE}чтобы положить поднос с едой") then
wait(300)
sampSendChat("/eat")
wait(200)
sampSendChat("Без соли не вкусно, без хлеба не сытно.")
end
-------------------------------------
if text:find(".*получили %{00cc99%}(%d+)%$ на каждого водителя%{3399FF%}.*") then
local vod = text:match(".*получили %{00cc99%}(%d+)%$ на каждого водителя%{3399FF%}.*")
wait(100)
sampAddChatMessage("Сумма " .. vod, -1)
wait(3000)
sampSendChat("/pay 60 " .. vod)
end
end)-- закрываем поток
end