From c0904a85b577f726e259ffa983fa1b0ab1f4c5d8 Mon Sep 17 00:00:00 2001 From: rubin Date: Mon, 2 Jan 2023 01:04:00 +0300 Subject: [PATCH] fix load/unload & add update button menu --- corn-hud.lua | 160 +++++++++++++++++++++++++++++---------------------- 1 file changed, 90 insertions(+), 70 deletions(-) diff --git a/corn-hud.lua b/corn-hud.lua index c1599a3..ad0bda2 100644 --- a/corn-hud.lua +++ b/corn-hud.lua @@ -14,7 +14,7 @@ local coord = { ['Farm 4'] = {x = 1912.754150, y = 176.559540, z = 37.375542 }, ['Narko'] = {x = 2182.483887, y = -1657.505615, z = 15.201279 }, ['Zerno'] = {x = 2206.272949, y = -2245.668457, z = 13.661810 }, - ['Urojai'] = {x = 1622.458374, y = 2327.077881, z = 10.934480 } + ['Urojai'] = {x = 972.86, y = 2105.53, z = 10.94 } } function main() @@ -39,41 +39,36 @@ function main() ['Farm 0'] = { corn = 0, cornPrice = 0, - cornuct = 0, - cornuctPrice = 0, - cornName = '', + product = 0, + productPrice = 0, bank = 0 }, ['Farm 1'] = { corn = 0, cornPrice = 0, - cornuct = 0, - cornuctPrice = 0, - cornName = '', + product = 0, + productPrice = 0, bank = 0 }, ['Farm 2'] = { corn = 0, cornPrice = 0, - cornuct = 0, - cornuctPrice = 0, - cornName = '', + product = 0, + productPrice = 0, bank = 0 }, ['Farm 3'] = { corn = 0, cornPrice = 0, - cornuct = 0, - cornuctPrice = 0, - cornName = '', + product = 0, + productPrice = 0, bank = 0 }, ['Farm 4'] = { corn = 0, cornPrice = 0, - cornuct = 0, - cornuctPrice = 0, - cornName = '', + product = 0, + productPrice = 0, bank = 0 }, price = { @@ -98,6 +93,11 @@ function main() inicfg.save(ini, iniName) sampfuncsLog(' {FFFFFF}corn-hud by Serhiy_Rubin loaded. CMD: /corn | /corn hud. | Key combo: '..ini.Settings.Key1:gsub("VK_", '')..' + '..ini.Settings.Key2:gsub("VK_", '')) font = renderCreateFont(ini.Render.FontName, ini.Render.FontSize, ini.Render.FontFlag) + sampRegisterChatCommand('getcoord', function(param) + local x, y, z = getCharCoordinates(PLAYER_PED) + string = string.format("%0.2f, %0.2f, %0.2f", x, y, z) + setClipboardText(string) + end) sampRegisterChatCommand('corn', function(param) if render and param:lower():find('pos') then SetPos() @@ -129,11 +129,11 @@ function main() [1] = '{00D900}Цена покупки зерна: '..ini.price.zerno..'$', [2] = '{00D900}Цена продажи урожая: '..ini.price.urojai..'$', [3] = '{00D900} ', - [4] = string.format('{00D900}Ферма №0 | Баланс: %d$ | Зерно: %d [%d$] | %s: %d [%d$]', ini['Farm 0'].bank, ini['Farm 0'].corn, ini['Farm 0'].cornPrice, ini['Farm 0'].cornName, ini['Farm 0'].cornuct, ini['Farm 0'].cornuctPrice), - [5] = string.format('{00D900}Ферма №1 | Баланс: %d$ | Зерно: %s [%s$] | %s: %s [%s$]', ini['Farm 1'].bank, ini['Farm 1'].corn, ini['Farm 1'].cornPrice, ini['Farm 1'].cornName, ini['Farm 1'].cornuct, ini['Farm 1'].cornuctPrice), - [6] = string.format('{00D900}Ферма №2 | Баланс: %d$ | Зерно: %s [%s$] | %s: %s [%s$]', ini['Farm 2'].bank, ini['Farm 2'].corn, ini['Farm 2'].cornPrice, ini['Farm 2'].cornName, ini['Farm 2'].cornuct, ini['Farm 2'].cornuctPrice), - [7] = string.format('{00D900}Ферма №3 | Баланс: %d$ | Зерно: %s [%s$] | %s: %s [%s$]', ini['Farm 3'].bank, ini['Farm 3'].corn, ini['Farm 3'].cornPrice, ini['Farm 3'].cornName, ini['Farm 3'].cornuct, ini['Farm 3'].cornuctPrice), - [8] = string.format('{00D900}Ферма №4 | Баланс: %d$ | Зерно: %s [%s$] | %s: %s [%s$]', ini['Farm 4'].bank, ini['Farm 4'].corn, ini['Farm 4'].cornPrice, ini['Farm 4'].cornName, ini['Farm 4'].cornuct, ini['Farm 4'].cornuctPrice), + [4] = string.format('{00D900}Ферма №0 | Баланс: %d$ | Зерно: %d [%d$] | Урожай: %d [%d$]', ini['Farm 0'].bank, ini['Farm 0'].corn, ini['Farm 0'].cornPrice, ini['Farm 0'].product, ini['Farm 0'].productPrice), + [5] = string.format('{00D900}Ферма №1 | Баланс: %d$ | Зерно: %s [%s$] | Урожай: %s [%s$]', ini['Farm 1'].bank, ini['Farm 1'].corn, ini['Farm 1'].cornPrice, ini['Farm 1'].product, ini['Farm 1'].productPrice), + [6] = string.format('{00D900}Ферма №2 | Баланс: %d$ | Зерно: %s [%s$] | Урожай: %s [%s$]', ini['Farm 2'].bank, ini['Farm 2'].corn, ini['Farm 2'].cornPrice, ini['Farm 2'].product, ini['Farm 2'].productPrice), + [7] = string.format('{00D900}Ферма №3 | Баланс: %d$ | Зерно: %s [%s$] | Урожай: %s [%s$]', ini['Farm 3'].bank, ini['Farm 3'].corn, ini['Farm 3'].cornPrice, ini['Farm 3'].product, ini['Farm 3'].productPrice), + [8] = string.format('{00D900}Ферма №4 | Баланс: %d$ | Зерно: %s [%s$] | Урожай: %s [%s$]', ini['Farm 4'].bank, ini['Farm 4'].corn, ini['Farm 4'].cornPrice, ini['Farm 4'].product, ini['Farm 4'].productPrice), } local X, Y = ini.Settings.X, ini.Settings.Y for i = 1, #renderText do @@ -157,51 +157,48 @@ function main() [2] = 'Загрузить', [3] = 'Разгрузить', [4] = 'Информация о ферме', + [5] = 'Обновить информацию о ферме' } for i = 1, #renderText do - renderFontDrawText(font, renderText[i], posX - (renderGetFontDrawTextLength(font, renderText[i]) / 2), posY, 0xFF00D900) - local textLenght = renderGetFontDrawTextLength(font, renderText[i]) - local textHeight = renderGetFontDrawHeight(font) - local curX, curY = getCursorPos() - if curX >= posX and curX <= posX + textLenght and curY >= posY and curY <= posY + textHeight then - renderFontDrawText(font, renderText[i], posX - (renderGetFontDrawTextLength(font, renderText[i]) / 2), posY, -1) - if isKeyJustPressed(1) then - if i == 1 then - render = not render - end - if i == 2 then - if points ~= '' then - if points:find('Farm') then - local warecorn = (ini[points].cornName == 'Картофель' and urojai or narko ) - local corn = ( (1000 - warecorn) < tonumber(ini[points].cornuct) and (1000 - warecorn) or tonumber(ini[points].cornuct) ) - sampAddChatMessage(corn, -1 ) - sampSendChat('/cornmenu 2 '..corn) - finfoCheck = 1 - end - if points:find('Zerno') then - sampSendChat('/cornmenu 0 '..(1000 - zerno)) - end - end - end - if i == 3 then - if points ~= '' then - if points:find('Farm') then - sampSendChat('/cornmenu 1 '..zerno) - finfoCheck = 1 - end - if points:find('Narko') then - sampSendChat('/cornmenu 3 '..narko) - end - if points:find('Urojai') then - sampSendChat('/cornmenu 3 '..urojai) - end - end - end - if i == 4 then - sampSendChat('/finfo') - end - end + if drawClickableText(renderText[i], posX - (renderGetFontDrawTextLength(font, renderText[i]) / 2), posY, 0xFF00D900, 0xFFFFFFFF) then + if i == 1 then + render = not render + end + if i == 2 then + if points ~= '' then + if points:find('Farm') then + local warecorn = urojai + local corn = ( (1500 - warecorn) < tonumber(ini[points].product) and (1500 - warecorn) or tonumber(ini[points].product) ) + sampSendChat('/cornmenu 2 '..corn) + finfoCheck = 1 + end + if points:find('Zerno') then + sampSendChat('/cornmenu 0 '..(1500 - zerno)) + end + end + end + if i == 3 then + if points ~= '' then + if points:find('Farm') then + sampSendChat('/cornmenu 1 '..(zerno > (10000 - ini[points].corn) and (10000 - ini[points].corn) or zerno)) + finfoCheck = 1 + end + if points:find('Narko') then + sampSendChat('/cornmenu 4 '..narko) + end + if points:find('Urojai') then + sampSendChat('/cornmenu 4 '..urojai) + end + end + end + if i == 4 then + sampSendChat('/finfo') + end + if i == 5 then + finfoCheck = 1 + end end + posY = posY + plus end else @@ -214,14 +211,14 @@ function main() end function sampev.onServerMessage(color, message) - if message:find(' Зерно: (%d+) / 1000') then - zerno = message:match(' Зерно: (%d+) / 1000') + if message:find(' Зерно: (%d+) / 1500') then + zerno = tonumber(message:match(' Зерно: (%d+) / 1500')) end - if message:find(' Урожай: (%d+) / 1000') then - urojai = message:match(' Урожай: (%d+) / 1000') + if message:find(' Урожай: (%d+) / 1500') then + urojai = tonumber(message:match(' Урожай: (%d+) / 1500')) end - if message:find(' Наркотики: (%d+) / 1000') then - narko = message:match(' Наркотики: (%d+) / 1000') + if message:find(' Наркотики: (%d+) / 1500') then + narko = tonumber(message:match(' Наркотики: (%d+) / 1500')) end end @@ -244,7 +241,7 @@ function sampev.onShowDialog(dialogId, style, title, button1, button2, text) if text:find(".FBDD7E.Баланс фермы:.FFFFFF.\t\t\t(%d+).+FBDD7E.Семена в амбаре:.FFFFFF.\t\t\t(%d+) / %d+.+FBDD7E.Урожая на поле:{FFFFFF}\t\t\t(%d+) / %d+.+FBDD7E.Продукции в амбаре:.FFFFFF.\t\t\t(%d+) / %d+.+FBDD7E.Цена за семена:.FFFFFF.\t\t\t(%d+).+FBDD7E.Цена на продукцию:.FFFFFF.\t\t\t(%d+)") then local S0 = CheckCoord() if S0 ~= '' then - ini[S0].bank, ini[S0].corn, ini[S0].cornuct, ini[S0].cornPrice, ini[S0].cornuctPrice = text:match(".FBDD7E.Баланс фермы:.FFFFFF.\t\t\t(%d+).+FBDD7E.Семена в амбаре:.FFFFFF.\t\t\t(%d+) / %d+.+FBDD7E.Урожая на поле:{FFFFFF}\t\t\t%d+ / %d+.+FBDD7E.Продукции в амбаре:.FFFFFF.\t\t\t(%d+) / %d+.+FBDD7E.Цена за семена:.FFFFFF.\t\t\t(%d+).+FBDD7E.Цена на продукцию:.FFFFFF.\t\t\t(%d+)") + ini[S0].bank, ini[S0].corn, ini[S0].product, ini[S0].cornPrice, ini[S0].productPrice = text:match(".FBDD7E.Баланс фермы:.FFFFFF.\t\t\t(%d+).+FBDD7E.Семена в амбаре:.FFFFFF.\t\t\t(%d+) / %d+.+FBDD7E.Урожая на поле:{FFFFFF}\t\t\t%d+ / %d+.+FBDD7E.Продукции в амбаре:.FFFFFF.\t\t\t(%d+) / %d+.+FBDD7E.Цена за семена:.FFFFFF.\t\t\t(%d+).+FBDD7E.Цена на продукцию:.FFFFFF.\t\t\t(%d+)") inicfg.save(ini, iniName) if finfoCheck ~= 0 then finfoCheck = 0 @@ -254,15 +251,19 @@ function sampev.onShowDialog(dialogId, style, title, button1, button2, text) end if text:find('{FFFFFF}Зерна куплено: {0289CC}(%d+).*{FFFFFF}Цена: {0289CC}%d+ вирт.*{FFFFFF}Скидка: {0289CC}%d+ вирт') then zerno = zerno + tonumber(text:match('{FFFFFF}Зерна куплено: {0289CC}(%d+).*{FFFFFF}Цена: {0289CC}%d+ вирт.*{FFFFFF}Скидка: {0289CC}%d+ вирт')) + print(zerno) end if text:find('{FFFFFF}Зерна продано: {0289CC}(%d+).*{FFFFFF}Цена: {0289CC}%d+ вирт.*{FFFFFF}Добавлено к ЗП: {0289CC}%d+ вирт') then zerno = zerno - tonumber(text:match('{FFFFFF}Зерна продано: {0289CC}(%d+).*{FFFFFF}Цена: {0289CC}%d+ вирт.*{FFFFFF}Добавлено к ЗП: {0289CC}%d+ вирт')) + print(zerno) end if text:find('{FFFFFF}Урожая куплено: {0289CC}(%d+).*{FFFFFF}Цена: {0289CC}%d+ вирт') then urojai = urojai + tonumber(text:match('{FFFFFF}Урожая куплено: {0289CC}(%d+).*{FFFFFF}Цена: {0289CC}%d+ вирт')) + print(urojai) end if text:find('Урожая продано: {0289CC}(%d+).*{FFFFFF}Цена: {0289CC}%d+ вирт') then urojai = urojai - tonumber(text:match('Урожая продано: {0289CC}(%d+).*{FFFFFF}Цена: {0289CC}%d+ вирт')) + print(urojai) end if text:find('{FFFFFF}Наркотиков куплено: {0289CC}(%d+).*{FFFFFF}Цена: {0289CC}%d+ вирт') then narko = narko + tonumber(text:match('{FFFFFF}Наркотиков куплено: {0289CC}(%d+).*{FFFFFF}Цена: {0289CC}%d+ вирт')) @@ -301,4 +302,23 @@ function SetPos() wait(100) pos = false end) +end + +function drawClickableText(text, posX, posY, Color1, Color2) + if text ~= nil and posX ~= nil and posY ~= nil then + renderFontDrawText(font, text, posX, posY, Color1) + local textLenght = renderGetFontDrawTextLength(font, text) + local textHeight = renderGetFontDrawHeight(font) + local curX, curY = getCursorPos() + if curX >= posX and curX <= posX + textLenght and curY >= posY and curY <= posY + textHeight then + renderFontDrawText(font, text, posX, posY, Color2) + if isKeyJustPressed(1) then + return true + else + return false + end + end + else + return false + end end \ No newline at end of file