#include <a_samp>
#include <a_mysql> // Используем для сохранения аккаунтов
#include <zcmd> // Удобный командный процессор (скачайте zcmd.inc, если его нет)
// Настройки подключения к вашей базе данных на хостинге
#define MYSQL_HOST "127.0.0.1" // Сюда впишите IP хостинга
#define MYSQL_USER "root" // Логин БД
#define MYSQL_PASS "" // Пароль БД
#define MYSQL_DB "samp_db" // Название базы данных
// Переменные для хранения данных игрока во время сессии
enum pInfo
{
pID,
pName[MAX_PLAYER_NAME],
pMoney,
pAdminLevel,
bool:pLoggedIn
}
new PlayerInfo[MAX_PLAYERS][pInfo];
new MySQL:dbHandle;
main()
{
print("----------------------------------");
print(" Мобильный SAMP Проект Успешно Запущен!");
print("----------------------------------");
}
// Срабатывает при старте сервера
public OnGameModeInit()
{
// Подключаемся к MySQL
dbHandle = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_DB);
if(mysql_errno(dbHandle) != 0) {
print("[MySQL] Ошибка подключения! Проверьте данные в коде.");
} else {
print("[MySQL] Успешное подключение к базе данных.");
}
SetGameModeText("Mobile RP v0.1");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // Спавн
return 1;
}
// Срабатывает, когда игрок заходит на сервер
public OnPlayerConnect(playerid)
{
// Сбрасываем данные игрока до нуля
GetPlayerName(playerid, PlayerInfo[playerid][pName], MAX_PLAYER_NAME);
PlayerInfo[playerid][pMoney] = 0;
PlayerInfo[playerid][pAdminLevel] = 0;
PlayerInfo[playerid][pLoggedIn] = false;
// Приветственное окно (Диалог)
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_MSGBOX, "Добро пожаловать!", "Приветствуем на нашем мобильном сервере!\nНажмите 'Далее' для входа.", "Далее", "Выход");
return 1;
}
// Срабатывает, когда игрок нажимает кнопки в диалоге
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 1) // Наш диалог приветствия
{
if(!response) return Kick(playerid); // Если нажал Выход — кикаем
// Тут должна быть проверка в БД, но для теста просто авторизуем
PlayerInfo[playerid][pLoggedIn] = true;
SendClientMessage(playerid, 0x00FF00FF, "[Сервер] Вы успешно вошли! Используйте /bonus");
SpawnPlayer(playerid);
}
return 1;
}
// Срабатывает при спавне игрока
public OnPlayerSpawn(playerid)
{
SetPlayerColor(playerid, 0xFFFFFFFF);
SetPlayerInterior(playerid, 0);
return 1;
}
// ==================== КОМАНДЫ (ZCMD) ====================
// Команда получения бонуса новичка
CMD:bonus(playerid, params[])
{
if(!PlayerInfo[playerid][pLoggedIn]) return SendClientMessage(playerid, 0xFF0000FF, "Вы не авторизованы!");
if(PlayerInfo[playerid][pMoney] > 0) {
return SendClientMessage(playerid, 0xFF0000FF, "[Ошибка] Вы уже получали бонус!");
}
PlayerInfo[playerid][pMoney] = 50000; // Выдаем 50к виртуальной валюты
GivePlayerMoney(playerid, 50000);
SendClientMessage(playerid, 0xFFFF00FF, "[Бонус] Вам выдано $50,000 на стартовое развитие!");
return 1;
}