- 16
- 3
- 3
1) Ваш ник: Claude Rockwell
2) Ваше предложение: Создание системы носилок для переноса/транспортировки раненых.
3) Описание и смысл вашего предложения: Это система добавляющая в игру механику переноса игроков. Игрок, находящийся в бессознательном состоянии (например, после получения большого урона), может быть поднят и перенесён другими игрокоми с помощью специальных носилок.
4) Чем ваше предложение поможет проекту:
Основная цель это улучшение ролевой игры. Медики или другие структуры могут эвакуировать раненых , доставлять их в больницу или безопасное место. Это добавляет реализма в игровой процесс.
Улучшение командной игры: Система носилок стимулирует командную работу. Один игрок не может эффективно использовать носилки в одиночку; требуется кооператив для переноски раненого.
Новые игровые возможности: Открывает новые игровые возможности, такие как создание медицинских/спасательных отрядов ASGH/SAFD и тактических операций NGSA/SWAT и др.
Интересный геймплей: Добавляет новый интересный элемент в игру, который может разнообразить геймплей и разбавить монотонность.
5) Примеры, наброски идеи (если имеются, для лучшего понимания в реализации вашей идеи):
В игре появляется новый объект носилки. Игрок может взять их, кооперируясь с другим игроком поднять раненого игрока и переносить его. Возможно добавление анимации для большей реалистичности.
Для использования носилок игрок должен быть в специальном состоянии "раненого" (например, после получения большого урона или использования специальной команды). В этом состоянии игрок не может двигаться.
2) Ваше предложение: Создание системы носилок для переноса/транспортировки раненых.
3) Описание и смысл вашего предложения: Это система добавляющая в игру механику переноса игроков. Игрок, находящийся в бессознательном состоянии (например, после получения большого урона), может быть поднят и перенесён другими игрокоми с помощью специальных носилок.
4) Чем ваше предложение поможет проекту:
Основная цель это улучшение ролевой игры. Медики или другие структуры могут эвакуировать раненых , доставлять их в больницу или безопасное место. Это добавляет реализма в игровой процесс.
Улучшение командной игры: Система носилок стимулирует командную работу. Один игрок не может эффективно использовать носилки в одиночку; требуется кооператив для переноски раненого.
Новые игровые возможности: Открывает новые игровые возможности, такие как создание медицинских/спасательных отрядов ASGH/SAFD и тактических операций NGSA/SWAT и др.
Интересный геймплей: Добавляет новый интересный элемент в игру, который может разнообразить геймплей и разбавить монотонность.
5) Примеры, наброски идеи (если имеются, для лучшего понимания в реализации вашей идеи):
В игре появляется новый объект носилки. Игрок может взять их, кооперируясь с другим игроком поднять раненого игрока и переносить его. Возможно добавление анимации для большей реалистичности.
Для использования носилок игрок должен быть в специальном состоянии "раненого" (например, после получения большого урона или использования специальной команды). В этом состоянии игрок не может двигаться.
#include <a_samp>
#define MAX_PLAYERS 100 // Максимальное количество игроков на сервере
new g_носилки[MAX_PLAYERS]; // Массив, хранящий ID игроков, несущих носилки
new g_носимые[MAX_PLAYERS]; // Массив, хранящий ID игроков, которых несут на носилках
// Функция создания носилок
CreateNosilki(playerid)
{
if(g_носилки[playerid] != 0) // Если игрок уже несёт носилки, то ничего не делать
{
return 1;
}
// Создание объекта носилок
new objectid = CreateObject(1234, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
if(objectid == INVALID_OBJECT_ID)
{
return 0;
}
g_носилки[playerid] = objectid;
return 1;
}
// Функция поднятия игрока на носилки
PodnyatNaNosilki(playerid, targetid)
{
if (g_носилки[playerid] == 0)
{
SendClientMessage(playerid, -1, "У Вас нет носилок!");
return 0;
}
if (g_носимые[targetid] != 0)
{
SendClientMessage(playerid, -1, "Этот игрок уже на носилках!");
return 0;
}
//Получаем координаты игрока
new Float:x, Float:y, Float:z;
GetPlayerPos(targetid,x,y,z);
//Устанавливаем игрока в положение на носилках
SetPlayerPos(targetid, x, y, z + 0.5); //Поднимаем немного вверх. Настройте по модели носилок.
SetPlayerInterior(targetid, 0); // устанавливаем интерьер в 0 (чтобы не было проблем с интерьером)
SetPlayerVirtualWorld(targetid,0); // устанавливаем виртуальный мир в 0
AttachPlayerToVehicle(targetid, g_носилки[playerid], 0); // Прикрепляем к объекту носилок
g_носимые[targetid] = playerid;
return 1;
}
// Функция сбросить игрока с носилок
SbrositSNosilok(playerid)
{
if (g_носимые[playerid] != 0)
{
new несущий = g_носимые[playerid];
DetachPlayerFromVehicle(playerid);
g_носимые[playerid] = 0;
SendClientMessage(несущий, -1, "Вы сбросили игрока с носилок.");
}
}
// Обработчик команд
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp(cmdtext, "/nosilki", true) == 0)
{
CreateNosilki(playerid);
return 1;
}
else if (startsWith(cmdtext, "/podnyat "))
{
new targetid;
targetid = strval(cmdtext[8]); //Извлекаем id игрока из текста команды
if(PlayerExists(targetid))
{
PodnyatNaNosilki(playerid, targetid);
return 1;
}
else
{
SendClientMessage(playerid, -1, "Игрок не найден.");
}
}
else if (strcmp(cmdtext, "/sbrosit", true) == 0)
{
SbrositSNosilok(playerid);
return 1;
}
return 0;
}
// Обработчик выхода игрока
public OnPlayerDisconnect(playerid, reason)
{
SbrositSNosilok(playerid); //Сбрасываем игрока с носилок при выходе
if(g_носилки[playerid] != 0) DestroyObject(g_носилки[playerid]); // Удаляем объект носилок, если игрок вышел
g_носилки[playerid] = 0;
return 1;
}
#define MAX_PLAYERS 100 // Максимальное количество игроков на сервере
new g_носилки[MAX_PLAYERS]; // Массив, хранящий ID игроков, несущих носилки
new g_носимые[MAX_PLAYERS]; // Массив, хранящий ID игроков, которых несут на носилках
// Функция создания носилок
CreateNosilki(playerid)
{
if(g_носилки[playerid] != 0) // Если игрок уже несёт носилки, то ничего не делать
{
return 1;
}
// Создание объекта носилок
new objectid = CreateObject(1234, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
if(objectid == INVALID_OBJECT_ID)
{
return 0;
}
g_носилки[playerid] = objectid;
return 1;
}
// Функция поднятия игрока на носилки
PodnyatNaNosilki(playerid, targetid)
{
if (g_носилки[playerid] == 0)
{
SendClientMessage(playerid, -1, "У Вас нет носилок!");
return 0;
}
if (g_носимые[targetid] != 0)
{
SendClientMessage(playerid, -1, "Этот игрок уже на носилках!");
return 0;
}
//Получаем координаты игрока
new Float:x, Float:y, Float:z;
GetPlayerPos(targetid,x,y,z);
//Устанавливаем игрока в положение на носилках
SetPlayerPos(targetid, x, y, z + 0.5); //Поднимаем немного вверх. Настройте по модели носилок.
SetPlayerInterior(targetid, 0); // устанавливаем интерьер в 0 (чтобы не было проблем с интерьером)
SetPlayerVirtualWorld(targetid,0); // устанавливаем виртуальный мир в 0
AttachPlayerToVehicle(targetid, g_носилки[playerid], 0); // Прикрепляем к объекту носилок
g_носимые[targetid] = playerid;
return 1;
}
// Функция сбросить игрока с носилок
SbrositSNosilok(playerid)
{
if (g_носимые[playerid] != 0)
{
new несущий = g_носимые[playerid];
DetachPlayerFromVehicle(playerid);
g_носимые[playerid] = 0;
SendClientMessage(несущий, -1, "Вы сбросили игрока с носилок.");
}
}
// Обработчик команд
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp(cmdtext, "/nosilki", true) == 0)
{
CreateNosilki(playerid);
return 1;
}
else if (startsWith(cmdtext, "/podnyat "))
{
new targetid;
targetid = strval(cmdtext[8]); //Извлекаем id игрока из текста команды
if(PlayerExists(targetid))
{
PodnyatNaNosilki(playerid, targetid);
return 1;
}
else
{
SendClientMessage(playerid, -1, "Игрок не найден.");
}
}
else if (strcmp(cmdtext, "/sbrosit", true) == 0)
{
SbrositSNosilok(playerid);
return 1;
}
return 0;
}
// Обработчик выхода игрока
public OnPlayerDisconnect(playerid, reason)
{
SbrositSNosilok(playerid); //Сбрасываем игрока с носилок при выходе
if(g_носилки[playerid] != 0) DestroyObject(g_носилки[playerid]); // Удаляем объект носилок, если игрок вышел
g_носилки[playerid] = 0;
return 1;
}
Последнее редактирование: