MONSER DM

Легендарный проект сетевой

игры GTA San Andreas, зарекомендовавший себя с

2014 года, как №1 в жанре DeathMatch

Персонаж Monser

В обработке Предложение по улучшению для Monser DeathMatch

bagger

Игровой администратор
Сообщения
29
Реакции
1

0

Months of Service

Предложение по улучшению: «Monser DeathMatch»


Игровой ник-нейм: bagger
Номер аккаунта: 172972327
Суть предложения: Я предлагаю сделать Пвп сценарии в /ts, вместо того чтобы просто бегать по пустой локации, игрок заходит в режим, где сервер спавнит его в конкретную игровую ситуацию, которая реально случается на каптах.



Примеры ситуаций:
1. Тебя спавнят в тупике, а противника — перед тобой. Твоя задача — выжить и убить его, используя быстрые перекаты.
2. Противник спавнится на крыше дома, а ты — внизу. Нужно научиться фастить по тем, кто выше тебя.
3. Вас спавнят по разные стороны сетки, где проходит только часть урона или нужно ловить тайминг прыжка.

Суть: Добавить локацию, где игроки не просто бегают, а спавнятся в фиксированных боевых ситуациях (забор, крыша, узкий проход).
Плюсы: Это лучший тренажер для каптов. Это привлечет игроков, которые хотят отработать конкретные позиции.
Я предлагаю еще сделать менюшку с вариациями отыгровок:
Классика: Перестрелка через укрытие.
Высота: Отработка стрельбы вверх/вниз.
Ближний бой: Спавн в 2 метрах друг от друга для тренировки фаста.
Слайд-тренинг: Открытое поле без укрытий, где важен только мувмент.

А так-же мини статистику, и еще можно добавить приписку над головой по типу: "Мастер зажима" если лучшая статистика в режиме "Ближний Бой".



На этом все, надеюсь вы сделаете это в игре и я внесу свой вклад в развитие проекта.
Скриншот/видео:
 
Ожидаем фидбека от игроков.
 
--[[]
Monser PvP Scenario (Stand-alone SAMP version)
Команды:
/mscen - Включить/выключить сценарий
/setweap [ID] - Выбрать оружие (24 - Deagle, 25 - Shotgun, 31 - M4)
]]

local samp = require 'lib.samp.events'
local vkeys = require 'vkeys'

-- Настройки
local active = false
local weaponId = 24
local kills = 0
local deaths = 0
local streak = 0
local font = renderCreateFont("Arial", 12, 5) -- Стандартный шрифт (без лаунчера)

function main()
while not isSampAvailable() do wait(100) end

sampAddChatMessage("{FFA500}[Monser Scen] {FFFFFF}Скрипт загружен. Используйте {FFA500}/mscen", -1)

sampRegisterChatCommand("mscen", function()
active = not active
if active then
kills, deaths, streak = 0, 0, 0
sampAddChatMessage("{00FF00}[Scen] Активен. Режим: Хил за килл + бесконечные патроны.", -1)
else
sampAddChatMessage("{FF0000}[Scen] Выключен.", -1)
end
end)

sampRegisterChatCommand("setweap", function(arg)
if tonumber(arg) then
weaponId = tonumber(arg)
sampAddChatMessage("{FFA500}[Scen] Оружие изменено на ID: " .. arg, -1)
end
end)

while true do
wait(0)
if active and not isSampMenuVisible() then
-- 1. Рендер статистики
local sw, sh = getScreenResolution()
renderFontDrawText(font, "{FFFFFF}Kills: {00FF00}"..kills, sw-150, sh/2, 0xFFFFFFFF)
renderFontDrawText(font, "{FFFFFF}Deaths: {FF0000}"..deaths, sw-150, sh/2 + 20, 0xFFFFFFFF)
renderFontDrawText(font, "{FFFFFF}Streak: {FFFF00}"..streak, sw-150, sh/2 + 40, 0xFFFFFFFF)

-- 2. Механика бесконечных патрон
if isCharShooting(PLAYER_PED) then
local ammo = getAmmoInCharWeapon(PLAYER_PED, weaponId)
if ammo < 10 then
giveWeaponToChar(PLAYER_PED, weaponId, 100)
end
end

-- 3. Авто-хил (если ХП упало ниже 20, имитация быстрой реакции или тренировки)
-- Но по правилам лучше делать ХИЛ ЗА КИЛЛ (ниже в событиях)
end
end
end

-- Обработка смерти
function samp.onPlayerDeath(playerId)
local _, myId = sampGetPlayerIdByCharHandle(PLAYER_PED)
if playerId == myId and active then
deaths = deaths + 1
streak = 0
end
end

function samp.onShowDeathMessage(killerId, victimId, weapon)
if not active then return end

local _, myId = sampGetPlayerIdByCharHandle(PLAYER_PED)

if killerId == myId and victimId ~= myId then
kills = kills + 1
streak = streak + 1


-- Визуальный эффект убийства (Screen Flash)
lua_thread.create(function()
-- Короткая вспышка на экране при килле
printStringNow("~g~+1 KILL", 1000)
end)
end
end

-- Анти-вылет: проверка оружия при спавне
function samp.onSendSpawn()
if active then
lua_thread.create(function()
wait(500)
giveWeaponToChar(PLAYER_PED, weaponId, 500)
end)
end
end



Вот примерный код. Его 100 процентов нужно будет доработать.
 
Код написан на Lua, запустить можно в vscode например.
 
Назад