Тема: SA:MP: Оптимизация нагрузки или поиск другого решения.
Приветствую дорогие кодеры. Цель моего скрипта - чтение чата по шаблону и замеца цвета сообщения. Проблема такая - запускаю .ahk файл, работает, но медленно и не сразу меняет цвет сообщения (архетиктура сампа не позволяет обновить чат сразу). Конвертирую в .exe файл, работает быстро но создает отгромные для такого скрипта нагрузки на процессор.
Помогите советом. Как реализовать это лучше.
#NoEnv
#SingleInstance force
#InstallKeybdHook
#MaxThreads, 20
#MaxThreadsPerHotkey, 255
#ifWinActive GTA:SA:MP
SetBatchLines, -1
#Include SAMP.ahk
SetKeyDelay, 0
SetWinDelay, 0
settimer, cLoop, 1
return
cLoop:
settimer, cLoop, off
iLine := 0
while iLine < 99
{
tChat := GetChatLineEx(iLine)
if(!RegExMatch(tChat, "^(.*)\[(\d+)\] (.*)\[(\d+)\]", Res))
{
iLine++
continue
}
plID := getPlayerIdByName(Res1)
if(plID != Res2)
{
iLine++
continue
}
Color := HexToDec(ColorToStr2(GetPlayerColor(plID)))
tColor := GetChatLineColor(iLine)
if(tColor != 4278557651 || tColor = Color || !RegExMatch(GetChatLineEx(iLine),"^" Res1 "\[" plID "\]"))
{
iLine++
continue
}
setChatLineColor(iLine, Color)
; WriteRaw(hGTA, readDWORD(hGTA, dwSAMP + ADDR_SAMP_CHATMSG_PTR) + 0x226 + ( (99-iLine) * 0xFC), &data, 4)
iLine++
}
settimer, cLoop, 1
return
На while-loop не обращайте внимания, пробывал и с Loop, и с While. Нагрузки в скомпелированном файле воистину огромны.