- 396
- 106
Описание скрипта
ini файл создается в 'Документы > GTA San Andreas User Files > SAMP > AutoReplace.ini'. В нем примерно такие настройки:
Код:
[Text]
1=Ку
2=Рек1
[Replace]
1=Привет
2=[Реклама] Свободная строка объявлений на SAN NEWS
Если вы напишите в чат/диалог(1) слово 'Ку', то оно моментом заменится на слово 'Привет'
Так же если вы напишете 'Джон Ку', оно заменится на 'Джон Привет' (Чувствителен к регистру!)
Это можно использовать как вам угодно, даже для News чтобы быстро отправлять объявления с рекламой.
Или же для быстрой РП отыгровки. Примерно так - 'Арест1' > '/me достал наручники' и т.д.
Делал для себя такое клео, но оно жрало 30 фпс при открытом Чате/Диалоге
Я очень обрадовался что на Lua все работает идеально и не жрет ни одного ФПС.
Пользуйтесь!)
Код:
script_name('AutoReplace')
script_author("JackBanana")
script_dependencies("SAMPFUNCS, SAMP")
require "lib.moonloader"
local inicfg = require 'inicfg'
local mem = require "memory"
local dir = os.getenv('USERPROFILE') .. '\\Documents\\GTA San Andreas User Files\\SAMP\\AutoReplace.ini'
if not doesFileExist(dir) then
local text = "[Text]\n"
local replace = "[Replace]\n"
for i = 1, 100 do
text = text..i.."=Text\n"
replace = replace..i.."=Replace\n"
end
local file = io.open(dir, "a")
file:write(text..replace)
file:flush()
io.close(file)
end
function main()
if not isSampLoaded() or not isSampfuncsLoaded() then return end
while not isSampAvailable() do wait(100) end
while true do
wait(0)
if sampIsChatInputActive() then
local inifiles = inicfg.load(nil,dir)
for n = 1, 100 do
if string.find(sampGetChatInputText(), inifiles.Text[n]) then
local text1, text2 = string.match(sampGetChatInputText(), "(.*)"..inifiles.Text[n].."(.*)")
sampSetChatInputText(text1..inifiles.Replace[n])
local chatInfoPtr = sampGetInputInfoPtr()
local chatBoxInfo = getStructElement(chatInfoPtr, 0x8, 4)
local lastPos = mem.getint8(chatBoxInfo + 0x11E)
sampSetChatInputText(text1..inifiles.Replace[n]..text2)
mem.setint8(chatBoxInfo + 0x11E, lastPos)
mem.setint8(chatBoxInfo + 0x119, lastPos)
end
end
end
if sampIsDialogActive() and sampGetCurrentDialogType() == 1 then
local inifiles = inicfg.load(nil,dir)
for n = 1, 100 do
if string.find(sampGetCurrentDialogEditboxText(), inifiles.Text[n]) then
local text1, text2 = string.match(sampGetCurrentDialogEditboxText(), "(.*)"..inifiles.Text[n].."(.*)")
sampSetCurrentDialogEditboxText(text1..inifiles.Replace[n])
local chatInfoPtr = sampGetInputInfoPtr()
local chatBoxInfo = getStructElement(chatInfoPtr, 0x8, 4)
local lastPos = mem.getint8(chatBoxInfo + 0x11E)
sampSetCurrentDialogEditboxText(text1..inifiles.Replace[n]..text2)
mem.setint8(chatBoxInfo + 0x11E, lastPos)
mem.setint8(chatBoxInfo + 0x119, lastPos)
end
end
end
end
end
Вложения
Последнее редактирование: