Ивент для вашего проекта “чёрная сделка„

Добро пожаловать!

Зарегистрировавшись у нас, вы сможете обсуждать, делиться и отправлять личные сообщения другим участникам нашего сообщества.

Зарегистрироваться!
  • Если Вы желаете помогать развитию проекта, готовы заполнять раздел(-ы) и подсказывать другим пользователям на портале, есть возможность попасть в команду редакторов. Для этого следует обратиться в техническую поддержку
Пользователь
Регистрация
11 Май 2025
Сообщения
15

Основные дефайны и переменные -​

// Настройки ивента
#define EVENT_NAME "Тёмная_сделка"
#define MAX_TEAM_PLAYERS 8
#define PRICE_MINE 5000

// Команды
enum {
TEAM_NONE = -1,
TEAM_NAEMNIKI, // Наёмники
TEAM_OHRANA, // Охрана
TEAM_WILDCARD // Дикие карты
};

// Переменные
new bool:EventActive = false;
new PlayerTeam[MAX_PLAYERS];
new ConvoyVehicles[4]; // Массив для транспорта конвоя
new MineObject; // Объект мины

Тригер старта ивента ( /event_start)​


CMD:event_start(playerid) {
if (!IsPlayerAdmin(playerid)) return SendErrorMessage(playerid, "Нет прав.");
if (EventActive) return SendErrorMessage(playerid, "Ивент уже идет.");

EventActive = true;
SendClientMessageToAll(COLOR_RED, "[ИВЕНТ] Тёмная сделка активирована! /event_join для участия.");

// Спавн NPC-торговца (x, y, z для вашей локации)
CreateNPC("Dealer", 123.45, -456.78, 789.01, 270.0);
return 1;
}

Присоединение к Ивенту -​

CMD:event_join(playerid) {
if (!EventActive) return SendErrorMessage(playerid, "Ивент не активен.");
if (GetPlayerReputation(playerid) < 50) return SendErrorMessage(playerid, "Нужна репутация бандита.");

ShowPlayerDialog(playerid, DIALOG_EVENT_TEAM, DIALOG_STYLE_LIST,
"Выбор команды",
"Наёмники (атака)\nОхрана (защита)\nДикие карты (предатели)",
"Выбрать", "Отмена"
);
return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
if (dialogid == DIALOG_EVENT_TEAM) {
if (!response) return 1;

switch(listitem) {
case 0: PlayerTeam[playerid] = TEAM_NAEMNIKI;
case 1: PlayerTeam[playerid] = TEAM_OHRANA;
case 2: PlayerTeam[playerid] = TEAM_WILDCARD;
}

SetPlayerPos(playerid, GetEventSpawn(PlayerTeam[playerid])); // Кастомная функция для спавна
SendTeamMessage(PlayerTeam[playerid], "Вы присоединились к команде!");
}
return 1;
}

Механика , установка мины -​

CMD:plant_mine(playerid) {
if (PlayerTeam[playerid] != TEAM_NAEMNIKI) return 0;
if (GetPlayerMoney(playerid) < PRICE_MINE) return SendErrorMessage(playerid, "Нужно $5,000.");

new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
MineObject = CreateDynamicObject(363, x, y, z-0.9, 0.0, 0.0, 0.0); // Модель мины
ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.1, 0, 0, 0, 0, 0);
SendClientMessage(playerid, COLOR_GREEN, "Мина установлена! Конвой будет подорван.");
return 1;
}
Спавн конвоя и NPC
StartConvoy() {
// Создание транспорта (ID моделей для грузовиков/джипов)
ConvoyVehicles[0] = CreateVehicle(403, 0.0, 0.0, 5.0, 0.0, -1, -1, 60000); // Бронированный грузовик
ConvoyVehicles[1] = CreateVehicle(468, 5.0, 0.0, 5.0, 0.0, -1, -1, 60000); // Внедорожник

// Спавн NPC-охранников
for(new i; i < 4; i++) {
CreateNPC("Guard", 0.0 + i*2, 0.0, 5.0, 0.0);
SetNPCWeapon(i, WEAPON_SHOTGUN); // Дробовики
}
}
Обработка взрыва мины -
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ) {
if (hittype == BULLET_HIT_TYPE_OBJECT && IsValidDynamicObject(MineObject)) {
DestroyDynamicObject(MineObject);
CreateExplosion(fX, fY, fZ, 7, 5.0); // Взрыв
SendClientMessageToAll(COLOR_RED, "[ИВЕНТ] Конвой подорван! Началась перестрелка!");
StartFirefight(); // Запуск фазы перестрелки
}
return 1;
}
Финал ивента -
EndEvent(winner_team) {
EventActive = false;
foreach(new i : Player) {
if (PlayerTeam == winner_team) {
GiveMoney(i, 50000);
SendClientMessage(i, COLOR_GOLD, "Вы победили! +$50,000.");
} else {
SetPlayerWantedLevel(i, 6); // Арест за провал
}
PlayerTeam = TEAM_NONE;
}
DestroyConvoy(); // Удалить транспорт и NPC
}

Моя самая долгая работа которую я писал более 4 дней , думал как делать ее и все обдумывал, кто хочет объяснить ее принцип напишите мне в телеграмм @owerplazm​

 
Wagner Group's
Профессионал
Регистрация
26 Сен 2022
Сообщения
276
кнопка "Код" для слабаков
 
Wagner Group's
Профессионал
Регистрация
26 Сен 2022
Сообщения
276
Код:
[HEADING=1]Основные дефайны и переменные -[/HEADING]
// Настройки ивента
#define EVENT_NAME "Тёмная_сделка"
#define MAX_TEAM_PLAYERS 8
#define PRICE_MINE 5000

// Команды
enum {
TEAM_NONE = -1,
TEAM_NAEMNIKI, // Наёмники
TEAM_OHRANA, // Охрана
TEAM_WILDCARD // Дикие карты
};

// Переменные
new bool:EventActive = false;
new PlayerTeam[MAX_PLAYERS];
new ConvoyVehicles[4]; // Массив для транспорта конвоя
new MineObject; // Объект мины
[HEADING=2]Тригер старта ивента ( /event_start)[/HEADING]

CMD:event_start(playerid) {
if (!IsPlayerAdmin(playerid)) return SendErrorMessage(playerid, "Нет прав.");
if (EventActive) return SendErrorMessage(playerid, "Ивент уже идет.");

EventActive = true;
SendClientMessageToAll(COLOR_RED, "[ИВЕНТ] Тёмная сделка активирована! /event_join для участия.");

// Спавн NPC-торговца (x, y, z для вашей локации)
CreateNPC("Dealer", 123.45, -456.78, 789.01, 270.0);
return 1;
}

[HEADING=1]Присоединение к Ивенту -[/HEADING]
CMD:event_join(playerid) {
if (!EventActive) return SendErrorMessage(playerid, "Ивент не активен.");
if (GetPlayerReputation(playerid) < 50) return SendErrorMessage(playerid, "Нужна репутация бандита.");

ShowPlayerDialog(playerid, DIALOG_EVENT_TEAM, DIALOG_STYLE_LIST,
"Выбор команды",
"Наёмники (атака)\nОхрана (защита)\nДикие карты (предатели)",
"Выбрать", "Отмена"
);
return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
if (dialogid == DIALOG_EVENT_TEAM) {
if (!response) return 1;

switch(listitem) {
case 0: PlayerTeam[playerid] = TEAM_NAEMNIKI;
case 1: PlayerTeam[playerid] = TEAM_OHRANA;
case 2: PlayerTeam[playerid] = TEAM_WILDCARD;
}

SetPlayerPos(playerid, GetEventSpawn(PlayerTeam[playerid])); // Кастомная функция для спавна
SendTeamMessage(PlayerTeam[playerid], "Вы присоединились к команде!");
}
return 1;
}
[HEADING=2]Механика , установка мины -[/HEADING]
CMD:plant_mine(playerid) {
if (PlayerTeam[playerid] != TEAM_NAEMNIKI) return 0;
if (GetPlayerMoney(playerid) < PRICE_MINE) return SendErrorMessage(playerid, "Нужно $5,000.");

new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
MineObject = CreateDynamicObject(363, x, y, z-0.9, 0.0, 0.0, 0.0); // Модель мины
ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.1, 0, 0, 0, 0, 0);
SendClientMessage(playerid, COLOR_GREEN, "Мина установлена! Конвой будет подорван.");
return 1;
}
Спавн конвоя и NPC
StartConvoy() {
// Создание транспорта (ID моделей для грузовиков/джипов)
ConvoyVehicles[0] = CreateVehicle(403, 0.0, 0.0, 5.0, 0.0, -1, -1, 60000); // Бронированный грузовик
ConvoyVehicles[1] = CreateVehicle(468, 5.0, 0.0, 5.0, 0.0, -1, -1, 60000); // Внедорожник

// Спавн NPC-охранников
for(new i; i < 4; i++) {
CreateNPC("Guard", 0.0 + i*2, 0.0, 5.0, 0.0);
SetNPCWeapon(i, WEAPON_SHOTGUN); // Дробовики
}
}
Обработка взрыва мины -
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ) {
if (hittype == BULLET_HIT_TYPE_OBJECT && IsValidDynamicObject(MineObject)) {
DestroyDynamicObject(MineObject);
CreateExplosion(fX, fY, fZ, 7, 5.0); // Взрыв
SendClientMessageToAll(COLOR_RED, "[ИВЕНТ] Конвой подорван! Началась перестрелка!");
StartFirefight(); // Запуск фазы перестрелки
}
return 1;
}
Финал ивента -
EndEvent(winner_team) {
EventActive = false;
foreach(new i : Player) {
if (PlayerTeam == winner_team) {
GiveMoney(i, 50000);
SendClientMessage(i, COLOR_GOLD, "Вы победили! +$50,000.");
} else {
SetPlayerWantedLevel(i, 6); // Арест за провал
}
PlayerTeam = TEAM_NONE;
}
DestroyConvoy(); // Удалить транспорт и NPC
}
 
Пользователь
Регистрация
11 Май 2025
Сообщения
15
Код:
[HEADING=1]Основные дефайны и переменные -[/HEADING]
// Настройки ивента
#define EVENT_NAME "Тёмная_сделка"
#define MAX_TEAM_PLAYERS 8
#define PRICE_MINE 5000

// Команды
enum {
TEAM_NONE = -1,
TEAM_NAEMNIKI, // Наёмники
TEAM_OHRANA, // Охрана
TEAM_WILDCARD // Дикие карты
};

// Переменные
new bool:EventActive = false;
new PlayerTeam[MAX_PLAYERS];
new ConvoyVehicles[4]; // Массив для транспорта конвоя
new MineObject; // Объект мины
[HEADING=2]Тригер старта ивента ( /event_start)[/HEADING]

CMD:event_start(playerid) {
if (!IsPlayerAdmin(playerid)) return SendErrorMessage(playerid, "Нет прав.");
if (EventActive) return SendErrorMessage(playerid, "Ивент уже идет.");

EventActive = true;
SendClientMessageToAll(COLOR_RED, "[ИВЕНТ] Тёмная сделка активирована! /event_join для участия.");

// Спавн NPC-торговца (x, y, z для вашей локации)
CreateNPC("Dealer", 123.45, -456.78, 789.01, 270.0);
return 1;
}

[HEADING=1]Присоединение к Ивенту -[/HEADING]
CMD:event_join(playerid) {
if (!EventActive) return SendErrorMessage(playerid, "Ивент не активен.");
if (GetPlayerReputation(playerid) < 50) return SendErrorMessage(playerid, "Нужна репутация бандита.");

ShowPlayerDialog(playerid, DIALOG_EVENT_TEAM, DIALOG_STYLE_LIST,
"Выбор команды",
"Наёмники (атака)\nОхрана (защита)\nДикие карты (предатели)",
"Выбрать", "Отмена"
);
return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
if (dialogid == DIALOG_EVENT_TEAM) {
if (!response) return 1;

switch(listitem) {
case 0: PlayerTeam[playerid] = TEAM_NAEMNIKI;
case 1: PlayerTeam[playerid] = TEAM_OHRANA;
case 2: PlayerTeam[playerid] = TEAM_WILDCARD;
}

SetPlayerPos(playerid, GetEventSpawn(PlayerTeam[playerid])); // Кастомная функция для спавна
SendTeamMessage(PlayerTeam[playerid], "Вы присоединились к команде!");
}
return 1;
}
[HEADING=2]Механика , установка мины -[/HEADING]
CMD:plant_mine(playerid) {
if (PlayerTeam[playerid] != TEAM_NAEMNIKI) return 0;
if (GetPlayerMoney(playerid) < PRICE_MINE) return SendErrorMessage(playerid, "Нужно $5,000.");

new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
MineObject = CreateDynamicObject(363, x, y, z-0.9, 0.0, 0.0, 0.0); // Модель мины
ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.1, 0, 0, 0, 0, 0);
SendClientMessage(playerid, COLOR_GREEN, "Мина установлена! Конвой будет подорван.");
return 1;
}
Спавн конвоя и NPC
StartConvoy() {
// Создание транспорта (ID моделей для грузовиков/джипов)
ConvoyVehicles[0] = CreateVehicle(403, 0.0, 0.0, 5.0, 0.0, -1, -1, 60000); // Бронированный грузовик
ConvoyVehicles[1] = CreateVehicle(468, 5.0, 0.0, 5.0, 0.0, -1, -1, 60000); // Внедорожник

// Спавн NPC-охранников
for(new i; i < 4; i++) {
CreateNPC("Guard", 0.0 + i*2, 0.0, 5.0, 0.0);
SetNPCWeapon(i, WEAPON_SHOTGUN); // Дробовики
}
}
Обработка взрыва мины -
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ) {
if (hittype == BULLET_HIT_TYPE_OBJECT && IsValidDynamicObject(MineObject)) {
DestroyDynamicObject(MineObject);
CreateExplosion(fX, fY, fZ, 7, 5.0); // Взрыв
SendClientMessageToAll(COLOR_RED, "[ИВЕНТ] Конвой подорван! Началась перестрелка!");
StartFirefight(); // Запуск фазы перестрелки
}
return 1;
}
Финал ивента -
EndEvent(winner_team) {
EventActive = false;
foreach(new i : Player) {
if (PlayerTeam == winner_team) {
GiveMoney(i, 50000);
SendClientMessage(i, COLOR_GOLD, "Вы победили! +$50,000.");
} else {
SetPlayerWantedLevel(i, 6); // Арест за провал
}
PlayerTeam = TEAM_NONE;
}
DestroyConvoy(); // Удалить транспорт и NPC
}
sxcвсм
 
Сверху