#include <a_samp>
enum E_PLAYER_STATE
{
PS_NONE,
PS_MENU_PICK
}
new PlayerState[MAX_PLAYERS];
public OnGameModeInit()
{
SetGameModeText("RP MENU EXAMPLE");
print("\n[INFO] RP Menu Mode loaded");
return 1;
}
public OnPlayerConnect(playerid)
{
PlayerState[playerid] = PS_MENU_PICK;
SendClientMessage(playerid, 0xFFFFFFAA, "Добро пожаловать! Выберите стартовую зону:");
ShowPlayerDialog(playerid, 1001, DIALOG_STYLE_LIST, "Выбор стартовой зоны",
"1. Собственный дом (спавн в интерьере дома)\n"
"2. Центральный рынок (площадь у больницы)\n"
"3. Спавн по умолчанию",
"Выбрать", "Отмена");
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if (dialogid != 1001) return 0;
if (!response)
{
// Игрок нажал «Отмена» — кик или спавн в собственном доме
Kick(playerid);
return 1;
}
switch (listitem)
{
case 0: // Центральный рынок
{
SetPlayerPos(playerid, 2560.45, -1670.12, 13.5);
SetPlayerFacingAngle(playerid, 90.0);
SendClientMessage(playerid, 0x00FF00AA, "Вы появились на центральном рынке.");
}
case 1: // Собственный дом
{
SetPlayerPos(playerid, 1958.37, -1916.09, 10.12);
SetPlayerFacingAngle(playerid, 270.0);
SendClientMessage(playerid, 0x00FF00AA, "Вы появились в в собственном доме.");
}
case 2: // Вокзал
{
// Можно оставить дефолтную точку или тоже задать координаты
SetPlayerPos(playerid, 1958.37, -1916.09, 10.12);
SendClientMessage(playerid, 0x00FF00AA, "Вокзал.");
}
}
TogglePlayerControllable(playerid, true);
PlayerState[playerid] = PS_NONE;
return 1;
}
#include <a_samp>
#include <streamer> // Обязательно для TextDraw
// --- Переменные игрока ---
new PlayerHunger[MAX_PLAYERS]; // Сытость: 0–100
new PlayerBalance[MAX_PLAYERS];// Баланс (деньги)
// --- TextDraw (статистика) ---
new Text:TD_Stats[MAX_PLAYERS];
// --- Константы (координаты и цвета) ---
#define COLOR_HEALTH 0xFF0000AA // Красный
#define COLOR_HUNGER 0xFFFF00AA // Жёлтый
#define COLOR_MONEY 0xFFFFFFAA // Белый
#define COLOR_ONLINE 0x00FF00AA // Зелёный
public OnGameModeInit()
{
SetGameModeText("RP STATS HUD");
// Инициализация: стартовые значения
for (new i = 0; i < MAX_PLAYERS; i++)
{
PlayerHunger[i] = 100;
PlayerBalance[i] = 500; // Стартовые деньги
}
print("[INFO] RP Stats HUD loaded");
return 1;
}
public OnPlayerConnect(playerid)
{
// Создаём TextDraw для каждого игрока при входе
CreatePlayerStatsTD(playerid);
SendClientMessage(playerid, 0xFFFFFFAA, "Статистика HUD активирована.");
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
// Удаляем TextDraw при выходе (чтобы не висели)
if (TD_Stats[playerid] != INVALID_TEXT_DRAW)
{
TextDrawDestroy(TD_Stats[playerid]);
TD_Stats[playerid] = INVALID_TEXT_DRAW;
}
return 1;
}