Пользователь
- Регистрация
- 11 Май 2025
- Сообщения
- 18
- Автор темы
- #1
Многие говорят что я работаю по GPT. Но это не так , долгое время уже я работаю над такими языками программирования как Java и Pawn , изучение новых языков таких как Lua. У меня есть отзывы , все мои работы начинаются с 2020 года. Я участвовал в разработке такого самп проекта как Ru State. Многое время общался с Ильей программистом крутым. Занимаюсь айпи ченжем , на данный момент я Владимир Жириновский это мой псевдоним в вк, я являюсь известным ddos ченжером который смог взломать множество сайтов из команды nova344. Все вопросы которые вы хотите задать мы можем обсудить в моей личке. Ну а сегодня я хочу поделиться с вами скриптом NPC продавца. Именно Npc написан на самой той системе LUA , код снизу пощну
Серверная часть ( setcer.lua)-- Создание NPC-продавца
function createSellerNPC()
local skinID = 20 -- ID скина продавца (например, 20 - обычный NPC)
local x, y, z = 123.45, -456.78, 901.23 -- Координаты спавна
local seller = createPed(skinID, x, y, z)
setPedRotation(seller, 90.0) -- Поворот NPC
setElementData(seller, "isSeller", true) -- Метка для идентификации
end
-- Список товаров
local shopItems = {
{ id = 1, name = "Бургер", price = 10 },
{ id = 2, name = "Вода", price = 5 },
{ id = 3, name = "Аптечка", price = 50 }
}
-- Обработка покупки
addEvent("onPlayerBuyItem", true)
addEventHandler("onPlayerBuyItem", root, function(itemID)
local playerMoney = getPlayerMoney(client)
local item = shopItems[itemID]
if not item then return end
if playerMoney >= item.price then
takePlayerMoney(client, item.price)
-- Выдача предмета (пример для оружия/предметов)
if item.id == 3 then
givePlayerHealth(client, 100) -- Аптечка восстанавливает здоровье
else
givePlayerWeapon(client, item.id, 1) -- Пример для других предметов
end
outputChatBox("[Магазин] Вы купили: " .. item.name, client, 0, 255, 0)
else
outputChatBox("[Магазин] Недостаточно денег!", client, 255, 0, 0)
end
end)
-- Создать NPC при старте ресурса
addEventHandler("onResourceStart", resourceRoot, createSellerNPC)
Клиентская часть ( client.lua)
-- Открыть GUI магазина
function showShopGUI()
local screenW, screenH = guiGetScreenSize()
local window = guiCreateWindow(screenW/2 - 150, screenH/2 - 200, 300, 400, "Магазин", false)
guiWindowSetSizable(window, false)
local grid = guiCreateGridList(10, 30, 280, 300, false, window)
guiGridListAddColumn(grid, "Товар", 0.6)
guiGridListAddColumn(grid, "Цена", 0.3)
for _, item in ipairs(shopItems) do
local row = guiGridListAddRow(grid)
guiGridListSetItemText(grid, row, 1, item.name, false, false)
guiGridListSetItemText(grid, row, 2, "$" .. item.price, false, false)
guiGridListSetItemData(grid, row, 1, item.id)
end
local buyButton = guiCreateButton(10, 340, 280, 30, "Купить", false, window)
addEventHandler("onClientGUIClick", buyButton, function()
local selectedRow = guiGridListGetSelectedItem(grid)
if selectedRow ~= -1 then
local itemID = guiGridListGetItemData(grid, selectedRow, 1)
triggerServerEvent("onPlayerBuyItem", localPlayer, itemID)
guiSetVisible(window, false)
destroyElement(window)
end
end)
end
-- Взаимодействие с NPC
addEventHandler("onClientClickPed", root, function(button, state, _, _, _, _, ped)
if button == "left" and state == "down" then
if getElementData(ped, "isSeller") then
if getDistanceBetween(localPlayer, ped) < 3 then
showShopGUI()
else
outputChatBox("Подойдите ближе к продавцу!", 255, 0, 0)
end
end
end
end)