- 0
![kekkomomek1941](https://pawno-rus.ru/uploads/n2a/a7ee38bb7be4fc44198cb2685d9601dcf2b9f569-avatars.png)
Настройка сервера через ini
Вопрос от
kekkomomek1941
,
Вопросы
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователя
-
Последние посетители 0 пользователей онлайн
Ни одного зарегистрированного пользователя не просматривает данную страницу
-
Похожий контент
-
От PoierDoras
Вот код мода (я немного странный я все для себя помечаю):
#include <a_samp>
#include <mysql>
#include <a_players>
#include <a_vehicles>
// Данные для подключения к БД
new MySQL:sqlHandle;
#define DB_HOST "localhost"
#define DB_USER "root"
#define DB_PASS "password"
#define DB_NAME "samp_db"
// Координаты спавна (ЖДЛС)
#define SPAWN_X 1741.41
#define SPAWN_Y -1861.38
#define SPAWN_Z 13.57
#define SPAWN_ANGLE 270.0
// ID транспортных средств (скутеров)
new scooter[3];
// Статус аренды скутеров
new bool scooterRented[3];
new rentedByPlayer[MAX_PLAYERS];
// Цена аренды скутера
#define RENT_PRICE 500
// Спидометр
new Text:Speedometer[MAX_PLAYERS];
// Статус двигателя
new bool engineStatus[MAX_PLAYERS];
// Инвентарь
new Text:InventoryTextDraw[MAX_PLAYERS];
new bool inventoryVisible[MAX_PLAYERS];
new Text:InventorySlots[MAX_PLAYERS][36];
public OnGameModeInit()
{
sqlHandle = mysql_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if (sqlHandle == MYSQL_INVALID_HANDLE)
{
print("Не удалось подключиться к базе данных.");
return 0;
}
print("Успешное подключение к базе данных.");
// Создание объектов вокруг точки спавна
CreateObject(1237, SPAWN_X + 5, SPAWN_Y, SPAWN_Z, 0.0, 0.0, 0.0); // Пример объекта
CreateObject(1237, SPAWN_X - 5, SPAWN_Y, SPAWN_Z, 0.0, 0.0, 0.0); // Еще один пример объекта
// Создание скутеров
scooter[0] = CreateVehicle(462, SPAWN_X + 2, SPAWN_Y, SPAWN_Z, SPAWN_ANGLE, -1, -1, 600);
scooter[1] = CreateVehicle(462, SPAWN_X + 4, SPAWN_Y, SPAWN_Z, SPAWN_ANGLE, -1, -1, 600);
scooter[2] = CreateVehicle(462, SPAWN_X + 6, SPAWN_Y, SPAWN_Z, SPAWN_ANGLE, -1, -1, 600);
// Инициализация статуса аренды скутеров
for (new i = 0; i < 3; i++) {
scooterRented = false;
rentedByPlayer = -1;
}
// Инициализация спидометра и статуса двигателя
for (new i = 0; i < MAX_PLAYERS; i++) {
Speedometer = TextDrawCreate(320.0, 447.0, "");
TextDrawLetterSize(Speedometer, 0.3, 1.2);
TextDrawTextSize(Speedometer, 100.0, 20.0);
TextDrawFont(Speedometer, 1);
TextDrawAlignment(Speedometer, 2);
TextDrawColor(Speedometer, 0xFFFFFFFF);
TextDrawSetOutline(Speedometer, 1);
TextDrawSetProportional(Speedometer, 1);
TextDrawHideForPlayer(i, Speedometer);
engineStatus = false;
inventoryVisible = false;
}
SetTimer("CheckRentedVehicles", 30000, true);
// Инициализация инвентаря для всех игроков
for (new i = 0; i < MAX_PLAYERS; i++)
{
InitializeInventory(i);
}
return 1;
}
public OnGameModeExit()
{
mysql_close(sqlHandle);
return 1;
}
public OnPlayerConnect(playerid)
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Логин", "Введите ваш логин:", "OK", "Cancel");
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if (dialogid == 1 && response)
{
new query[128];
format(query, sizeof(query), "SELECT password, money FROM users WHERE username='%s'", inputtext);
mysql_tquery(sqlHandle, query, "OnLoginCheck", "d", playerid);
}
else if (dialogid == 2 && response)
{
new query[256];
format(query, sizeof(query), "INSERT INTO users (username, password, money) VALUES ('%s', '%s', 1000)", inputtext, inputtext);
mysql_tquery(sqlHandle, query);
SendClientMessage(playerid, -1, "Вы успешно зарегистрированы!");
SpawnPlayer(playerid);
GivePlayerMoney(playerid, 1000); // Выдача 1000$ при регистрации
}
else if (dialogid == 3)
{
new vehicleid = GetPlayerVehicleID(playerid);
for (new i = 0; i < 3; i++)
{
if (vehicleid == scooter)
{
if (response)
{
new playerMoney = GetPlayerMoney(playerid);
if (playerMoney >= RENT_PRICE)
{
GivePlayerMoney(playerid, -RENT_PRICE); // Списать деньги
SendClientMessage(playerid, -1, "Вы арендовали скутер.");
scooterRented = true; // Скутер арендован
rentedByPlayer = playerid; // Привязать аренду к игроку
}
else
{
SendClientMessage(playerid, -1, "У вас недостаточно денег для аренды.");
RemovePlayerFromVehicle(playerid);
}
}
else
{
RemovePlayerFromVehicle(playerid);
}
break;
}
}
}
return 1;
}
forward OnLoginCheck(playerid, connection, resultid, extraid);
public OnLoginCheck(playerid, connection, resultid, extraid)
{
if (mysql_num_rows(resultid) == 0)
{
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Регистрация", "Введите ваш новый пароль:", "OK", "Cancel");
}
else
{
new dbPass[255], playerPass[255];
new money;
mysql_fetch_field_row(dbPass, "password", resultid);
mysql_fetch_field_row_int(money, "money", resultid);
inputtext[playerid][strlen(inputtext[playerid])] = '\0'; // Add null terminator
inputtext[playerid][sizeof(inputtext[playerid])-1] = '\0'; // Ensure it's null terminated
if (!strcmp(dbPass, inputtext[playerid], false))
{
SendClientMessage(playerid, -1, "Успешный вход!");
SpawnPlayer(playerid);
GivePlayerMoney(playerid, money); // Выдача денег игроку
}
else
{
SendClientMessage(playerid, -1, "Неправильный пароль.");
Kick(playerid);
}
}
return 1;
}
public OnPlayerSpawn(playerid)
{
SetPlayerPos(playerid, SPAWN_X, SPAWN_Y, SPAWN_Z);
SetPlayerFacingAngle(playerid, SPAWN_ANGLE);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
for (new i = 0; i < 3; i++)
{
if (rentedByPlayer == playerid)
{
scooterRented = false;
rentedByPlayer = -1;
SetVehiclePos(scooter, SPAWN_X + 2 + 2 * i, SPAWN_Y, SPAWN_Z);
SetVehicleZAngle(scooter, SPAWN_ANGLE);
}
}
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if (newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
{
new vehicleid = GetPlayerVehicleID(playerid);
// Проверка, является ли транспорт скутером
for (new i = 0; i < 3; i++)
{
if (vehicleid == scooter)
{
// Если скутер уже арендован
if (scooterRented && rentedByPlayer != playerid)
{
SendClientMessage(playerid, -1, "Этот скутер уже арендован.");
RemovePlayerFromVehicle(playerid);
}
else
{
ShowPlayerDialog(playerid, 3, DIALOG_STYLE_MSGBOX, "Аренда скутера", "Хотите арендовать этот скутер за 500$?", "Арендовать", "Отказаться");
}
break;
}
}
}
if (newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
{
TextDrawShowForPlayer(playerid, Speedometer[playerid]);
UpdateSpeedometer(playerid);
else
{
TextDrawHideForPlayer(playerid, Speedometer[playerid]);
}
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
TextDrawHideForPlayer(playerid, Speedometer[playerid]);
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
// Проверка на кнопку N (завести/заглушить двигатель)
if ((newkeys & KEY_NO) && IsPlayerInAnyVehicle(playerid))
{
new vehicleid = GetPlayerVehicleID(playerid);
engineStatus[playerid] = !engineStatus[playerid];
if (engineStatus[playerid])
{
SendClientMessage(playerid, -1, "Вы завели двигатель.");
}
else
{
SendClientMessage(playerid, -1, "Вы заглушили двигатель.");
}
}
// Проверка на кнопку L (закрыть/открыть транспорт)
if ((newkeys & KEY_LOOK_RIGHT) && IsPlayerInAnyVehicle(playerid))
{
new vehicleid = GetPlayerVehicleID(playerid);
for (new i = 0; i < 3; i++)
{
if (vehicleid == scooter)
{
if (rentedByPlayer == playerid)
{
ToggleVehicleLocked(vehicleid);
SendClientMessage(playerid, -1, "Транспорт закрыт/открыт.");
}
else
{
SendClientMessage(playerid, -1, "Этот транспорт не ваш.");
}
break;
}
}
}
// Проверка на кнопку Y (инвентарь)
if (newkeys & KEY_Y)
{
if (inventoryVisible[playerid])
{
HideInventory(playerid);
}
else
{
ShowInventory(playerid);
}
}
return 1;
}
// Обновление спидометра
forward UpdateSpeedometer(playerid);
public UpdateSpeedometer(playerid)
{
if (IsPlayerInAnyVehicle(playerid))
{
new Float:speed;
GetVehicleSpeed(GetPlayerVehicleID(playerid), &speed);
new str[32];
format(str, sizeof(str), "Скорость: %.2f км/ч", speed * 3.6);
TextDrawSetString(Speedometer[playerid], str);
TextDrawShowForPlayer(playerid, Speedometer[playerid]);
}
else
{
TextDrawHideForPlayer(playerid, Speedometer[playerid]);
}
SetTimerEx("UpdateSpeedometer", 1000, false, "d", playerid);
return 1;
}
// Таймер проверки арендованных транспортных средств
public CheckRentedVehicles()
{
for (new i = 0; i < MAX_PLAYERS; i++)
{
if (IsPlayerConnected(i))
{
for (new j = 0; j < 3; j++)
{
if (GetPlayerVehicleID(i) == scooter[j] && rentedByPlayer[j] != i)
{
Kick(i);
break;
}
}
}
}
return 1;
}
// Получить скорость транспортного средства
stock GetVehicleSpeed(vehicleid, &Float:speed)
{
new Float:x, Float:y, Float:z;
GetVehicleVelocity(vehicleid, x, y, z);
speed = floatsqroot(x*x + y*y + z*z) * 100;
}
// Переключение блокировки транспортного средства
stock ToggleVehicleLocked(vehicleid)
{
new locked = GetVehicleParamsEx(vehicleid);
if (locked & VEHICLE_PARAMS_EX_DOORS)
{
SetVehicleParamsEx(vehicleid, VEHICLE_PARAMS_UNSET, VEHICLE_PARAMS_UNSET, VEHICLE_PARAMS_UNSET, VEHICLE_PARAMS_UNSET, VEHICLE_PARAMS_UNSET, VEHICLE_PARAMS_UNSET, VEHICLE_PARAMS_UNLOCKED);
}
else
{
SetVehicleParamsEx(vehicleid, VEHICLE_PARAMS_UNSET, VEHICLE_PARAMS_UNSET, VEHICLE_PARAMS_UNSET, VEHICLE_PARAMS_UNSET, VEHICLE_PARAMS_UNSET, VEHICLE_PARAMS_UNSET, VEHICLE_PARAMS_LOCKED);
}
}
// Обработка команды /inventory
public OnPlayerCommandText(playerid, cmdtext[])
{
if (!strcmp("/inventory", cmdtext, true))
{
if (inventoryVisible[playerid])
{
HideInventory(playerid);
}
else
{
ShowInventory(playerid);
}
return 1;
}
return 0;
}
// Инициализация инвентаря
stock InitializeInventory(playerid)
{
InventoryTextDraw[playerid] = TextDrawCreate(320.0, 240.0, "Inventory");
TextDrawLetterSize(InventoryTextDraw[playerid], 0.5, 1.5);
TextDrawAlignment(InventoryTextDraw[playerid], 2);
TextDrawBackgroundColor(InventoryTextDraw[playerid], 255);
TextDrawFont(InventoryTextDraw[playerid], 2);
TextDrawSetOutline(InventoryTextDraw[playerid], 1);
TextDrawSetProportional(InventoryTextDraw[playerid], 1);
TextDrawSetShadow(InventoryTextDraw[playerid], 0);
for (new i = 0; i < 36; i++)
{
new Float:x = 250.0 + (i % 6) * 50.0;
new Float:y = 150.0 + (i / 6) * 50.0;
InventorySlots[playerid] = TextDrawCreate(x, y, " ");
TextDrawLetterSize(InventorySlots[playerid], 1.0, 1.0);
TextDrawAlignment(InventorySlots[playerid], 2);
TextDrawBackgroundColor(InventorySlots[playerid], 0x000000FF);
TextDrawFont(InventorySlots[playerid], 2);
TextDrawSetOutline(InventorySlots[playerid], 1);
TextDrawSetProportional(InventorySlots[playerid], 1);
TextDrawSetShadow(InventorySlots[playerid], 0);
}
}
// Показ инвентаря
stock ShowInventory(playerid)
{
TextDrawShowForPlayer(playerid, InventoryTextDraw[playerid]);
for (new i = 0; i < 36; i++)
{
TextDrawShowForPlayer(playerid, InventorySlots[playerid]);
}
inventoryVisible[playerid] = true;
}
// Скрытие инвентаря
stock HideInventory(playerid)
{
TextDrawHideForPlayer(playerid, InventoryTextDraw[playerid]);
for (new i = 0; i < 36; i++)
{
TextDrawHideForPlayer(playerid, InventorySlots[playerid]);
}
inventoryVisible[playerid] = false;
}
// Перезапуск спидометра при входе в транспорт
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if (newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
{
TextDrawShowForPlayer(playerid, Speedometer[playerid]);
UpdateSpeedometer(playerid);
}
else
{
TextDrawHideForPlayer(playerid, Speedometer[pla
yerid]);
}
return 1;
}
public OnGameModeInit()
{
// Инициализация инвентаря для всех игроков
for (new i = 0; i < MAX_PLAYERS; i++)
{
InitializeInventory(i);
}
return 1;
}
Вот такие ошибки:
filegiged.pwn.old.pwn(24) : error 001: expected token: ";", but found "-identifier-"
filegiged.pwn.old.pwn(34) : error 021: symbol already defined: "bool"
filegiged.pwn.old.pwn(38) : error 021: symbol already defined: "bool"
filegiged.pwn.old.pwn(44) : warning 217: loose indentation
filegiged.pwn.old.pwn(47) : warning 217: loose indentation
filegiged.pwn.old.pwn(49) : warning 217: loose indentation
filegiged.pwn.old.pwn(52) : warning 217: loose indentation
filegiged.pwn.old.pwn(53) : warning 217: loose indentation
filegiged.pwn.old.pwn(56) : warning 217: loose indentation
filegiged.pwn.old.pwn(57) : warning 217: loose indentation
filegiged.pwn.old.pwn(58) : warning 217: loose indentation
filegiged.pwn.old.pwn(61) : warning 217: loose indentation
filegiged.pwn.old.pwn(62) : error 017: undefined symbol "scooterRented"
filegiged.pwn.old.pwn(62) : warning 215: expression has no effect
filegiged.pwn.old.pwn(62) : error 001: expected token: ";", but found "]"
filegiged.pwn.old.pwn(62) : error 029: invalid expression, assumed zero
filegiged.pwn.old.pwn(62) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPha
se
7 Errors.
Я начинающий скриптер, ничего почти не умею, я не знаю как решить эти проюлемы
-
От vernettoalex
Приветствую, у меня возникла проблема, мне для работы с диалогом который будет выводить информацию о тексте написанным в окне в базу данных нужен inputext, когда я его вписал рядом с ShowPlayerDialog, у меня не появляется диалог и не идёт процесс, но если я его уберу, то функция станет бесполезной. Помогите пожалуйста
p.s - if(sscanf(inputtext, "s[90]", surname)) return SPD
-
Опубликовано · Жалоба
Всем привет. Мне надоело перекомпилировать мод каждый раз, поэтому я хочу сделать, чтобы через например settings.ini настраивались сайт моего сервера, вк моего сервера и т.п , только я не знаю, как это сделать
Буду благодарен, если поможете
Поделиться сообщением
Ссылка на сообщение