- 0
Проблема с компилом мода
-
Последние посетители 0 пользователей онлайн
Ни одного зарегистрированного пользователя не просматривает данную страницу
-
Похожий контент
-
От breznov
Доброго времени суток уважаемые форумчане !
Хочу попросить помощь у вас, у меня проблемы с сохранением лидерки в базу данных, код:
new FactionName[32] = "Скинхеды"; new Float:FactionHQX = 123.45, Float:FactionHQY = 678.90, Float:FactionHQZ = 10.11; new FactionMembers[MAX_PLAYERS]; new FactionRank[MAX_PLAYERS]; new FactionLeader = -1; // ID лидера (-1 означает, что лидера нет) new FactionDeputy = -1; // ID заместителя (-1 означает, что заместителя нет)
#define FACTION_SKINHEDS 1 #define LEADER_INFO_DIALOG 1
new const FactionRankNames[][] = { "Новичок", "Боец", "Стрелок", "Головорез", "Бригадир", "Доверенное лицо", "Советник", "Заместитель", "Консильери", "Дон" };
public OnGameModeInit():
public OnGameModeInit() { ConnectMySQL(); DisableInteriorEnterExits(); EnableStuntBonusForAll(0); SetGameModeText("Armade RP v2.0"); SendRconCommand("hostname "SERVER_NAME" by Didenko"); LoadMapping(); Iter_Clear(Admins_ITER); Iter_Clear(Question_ITER); actor1 = CreateActor(159, 1800.0490, 2506.0791, 15.8725, 269.5358); ApplyActorAnimation(actor1, "PED", "ROADROSS_FEMALE", 4.1, 1, 1, 1, 0, 0); Create3DTextLabel("{FFFFFF}Нажмите {ffff00}L.ALT{FFFFFF} чтобы начать взаимодействие", COLOR_GREEN, 1800.0490, 2506.0791, 15.8725, 10.0, 0, 1); //======================[ Пикапы ]================================== magazvhod1 = CreatePickup(1318, 23, 2074.3257,1838.3256,12.5391, -1); magazvihod1 = CreatePickup(1318, 23, -25.5779,-184.9357,1003.5469, -1); SetTimer("SecondUpdate", 1000, true); SetTimer("MinuteUpdate", 60000, true); LoadFactionsData(); // Загружаем данные о фракциях и лидерах return 1; }
Стоки:
stock LoadFactionsData() { print("LoadFactionsData: Starting to load factions data..."); new query[64]; format(query, sizeof(query), "SELECT id, FactionLeader FROM factions"); mysql_tquery(dbHandle, query, "LoadFactionsData_Callback"); print("LoadFactionsData: Query sent."); return 1; } forward LoadFactionsData_Callback(MySQL:handle, Cache:result); public LoadFactionsData_Callback(MySQL:handle, Cache:result) { new rows = cache_num_rows(); printf("LoadFactionsData_Callback: Number of rows loaded: %d", rows); if(rows > 0) { for(new i = 0; i < rows; i++) { cache_set_result(0); new factionID, factionLeaderID; if (!cache_get_value_name_int(i, "id", factionID)) { printf("[ERROR] LoadFactionsData_Callback: Failed to get 'id' for row %d", i); continue; // Переходим к следующей итерации, если не удалось получить ID } if (!cache_get_value_name_int(i, "FactionLeader", factionLeaderID)) { printf("[ERROR] LoadFactionsData_Callback: Failed to get 'FactionLeader' for row %d", i); continue; // Переходим к следующей итерации, если не удалось получить FactionLeader } printf("LoadFactionsData_Callback: Row %d: factionID = %d, factionLeaderID = %d", i, factionID, factionLeaderID); if(factionLeaderID != 0) { FactionLeader = factionLeaderID; FactionRank[factionLeaderID] = 10; printf("LoadFactionsData_Callback: Setting FactionLeader to %d and rank to 10.", factionLeaderID); // Не вызываем здесь SetPlayerSkin, пока не подключится игрок //if(IsPlayerConnected(factionLeaderID)) //{ // SetPlayerSkin(factionLeaderID, 115); // PlayerSkin[factionLeaderID] = 115; //} } } } else { print("LoadFactionsData_Callback: No factions data found in the database."); } return 1; } stock SetFactionLeader(playerid, targetid) { if(player_info[playerid][ADMIN] < 5) { SendClientMessage(playerid, CG, "Вы не являетесь администратором!"); return 1; } // Убираем старого лидера if(FactionLeader != -1) { FactionRank[FactionLeader] = 1; // Понижаем ранг старого лидера } // Назначаем нового лидера FactionLeader = targetid; FactionRank[targetid] = 10; // Сохраняем ID лидера в базу данных new query[128]; format(query, sizeof(query), "UPDATE factions SET FactionLeader = '%d' WHERE id = '1'", targetid); // Замените '1' на ID вашей фракции, если у вас их несколько mysql_tquery(dbHandle, query); new szString[128]; format(szString, sizeof(szString), "Игрок %s назначен лидером фракции!", targetid); SendClientMessage(playerid, 0x00FF00AA, szString); SendClientMessage(targetid, 0x00FF00AA, "Вы назначены лидером фракции!"); // Выдаем скин 115 SetPlayerSkin(targetid, 115); PlayerSkin[targetid] = 115; // Обновляем массив PlayerSkin SPD(playerid, DLG_LEADERINFO1, DIALOG_STYLE_LIST, "Информация необходимая к прочтению", "{FF0000}!!!ПРОЧИТАТЬ!!!\n{0089ff}[1]{ffffff} Команды лидера", "Выбрать", "Закрыть"); return 1; } stock SetFactionDeputy(playerid, targetid) { // Проверка на то, является ли игрок админом if(player_info[playerid][ADMIN] > 5) { SendClientMessage(playerid, CG, "Вы не являетесь администратором!"); return 1; } // Убираем старого заместителя if(FactionDeputy != -1) FactionRank[FactionDeputy] = 1; // Понижаем ранг старого заместителя // Назначаем нового заместителя FactionDeputy = targetid; FactionRank[targetid] = 9; // Устанавливаем ранг 9 (Консильери) new szString[128]; format(szString, sizeof(szString), "Игрок %d назначен заместителем фракции!", targetid); SendClientMessage(playerid, 0x00FF00AA, szString); SendClientMessage(targetid, 0x00FF00AA, "Вы назначены заместителем фракции!"); return 1; } // Функция проверки, является ли игрок лидером stock IsPlayerLeader(playerid) { if(playerid == FactionLeader) { return 1; } return 0; } // Функция проверки, является ли игрок заместителем stock IsPlayerDeputy(playerid) { if(playerid == FactionDeputy) { return 1; } return 0; } // Функция вступления во фракцию stock JoinFaction(playerid, inviterid) { // Проверяем, состоит ли игрок уже в какой-либо фракции for(new i = 0; i < MAX_PLAYERS; i++) { if(FactionMembers[playerid] != 0) { SendClientMessage(playerid, 0xFF0000AA, "Вы уже состоите в другой фракции!"); return 1; } } // Добавляем игрока во фракцию FactionMembers[playerid] = FACTION_SKINHEDS; FactionRank[playerid] = 1; // Рядовой (Новичок) - Устанавливаем ранг new szString[128]; format(szString, sizeof(szString), "Вы вступили в '%s' по приглашению игрока %d!", FactionName, inviterid); SendClientMessage(playerid, 0x00FF00AA, szString); format(szString, sizeof(szString), "Игрок %d вступил в '%s' по вашему приглашению!", playerid, FactionName); SendClientMessage(inviterid, 0x00FF00AA, szString); return 1; } stock LeaveFaction(playerid) { if(!IsPlayerInFaction(playerid, FACTION_SKINHEDS)) { SendClientMessage(playerid, 0xFF0000AA, "Вы не состоите в этой фракции!"); return 1; } FactionMembers[playerid] = 0; // Обнуляем ID фракции (0 - значит, не состоит) FactionRank[playerid] = 0; SendClientMessage(playerid, 0x00FF00AA, "Вы покинули Семью Рейес!"); return 1; } stock GetFactionRank(playerid) { return FactionRank[playerid]; } stock SetFactionRank(playerid, targetid, rank) { // Проверка на то, является ли игрок лидером или заместителем if(!IsPlayerLeader(playerid) && !IsPlayerDeputy(playerid)) { SendClientMessage(playerid, 0xFF0000AA, "Вы не имеете права устанавливать ранги!"); return 1; } // Проверка на то, чтобы ранг не был слишком высоким if(rank > 10 || rank < 1) { SendClientMessage(playerid, 0xFF0000AA, "Неверный ранг!"); return 1; } FactionRank[targetid] = rank; new szString[128]; format(szString, sizeof(szString), "Вы установили ранг '%s' для игрока %d", FactionRankNames[rank - 1], targetid); // Получаем название из массива SendClientMessage(playerid, 0x00FF00AA, szString); format(szString, sizeof(szString), "Вам установлен ранг '%s' игроком %d", FactionRankNames[rank - 1], playerid); // Получаем название из массива SendClientMessage(targetid, 0x00FF00AA, szString); return 1; } // Функция проверки, состоит ли игрок во фракции stock IsPlayerInFaction(playerid, factionid) { if(FactionMembers[playerid] == factionid) { return 1; } return 0; }
Ну и команды естественно:
// Команда для установки ранга (пример, только для лидеров) CMD:setrank(playerid, cmdtext[]) { new targetid, rank; if(sscanf(cmdtext, "dd", targetid, rank)) { SendClientMessage(playerid, 0xFF0000AA, "Используйте: /setrank [ID игрока] [Ранг]"); return 1; } SetFactionRank(playerid, targetid, rank); return 1; } // Команда информации о фракции CMD:factioninfo(playerid, cmdtext[]) { new szString[256]; format(szString, sizeof(szString), "Название: %s, Штаб-квартира: %.2f %.2f %.2f", FactionName, FactionHQX, FactionHQY, FactionHQZ); SendClientMessage(playerid, 0x00FF00AA, szString); return 1; } CMD:setleader(playerid, cmdtext[]) { new targetid; if(sscanf(cmdtext, "d", targetid)) { SendClientMessage(playerid, 0xFF0000AA, "Используйте: /setleader [ID игрока]"); return 1; } SetFactionLeader(playerid, targetid); return 1; } CMD:setdeputy(playerid, cmdtext[]) { new targetid; if(sscanf(cmdtext, "d", targetid)) { SendClientMessage(playerid, 0xFF0000AA, "Используйте: /setdeputy [ID игрока]"); return 1; } SetFactionDeputy(playerid, targetid); return 1; } // -------------------------------------------------------------------------- // Команда для приглашения игрока во фракцию (только для лидеров и заместителей) // -------------------------------------------------------------------------- CMD:invite(playerid, cmdtext[]) { new targetid; if(!IsPlayerLeader(playerid) && !IsPlayerDeputy(playerid)) { SendClientMessage(playerid, 0xFF0000AA, "Вы не имеете права приглашать игроков!"); return 1; } if(sscanf(cmdtext, "d", targetid)) { SendClientMessage(playerid, 0xFF0000AA, "Используйте: /invite [ID игрока]"); return 1; } // Добавим проверку на приглашение самого себя if(playerid == targetid) { SendClientMessage(playerid, 0xFF0000AA, "Вы не можете пригласить самого себя!"); return 1; } JoinFaction(targetid, playerid); return 1; } // -------------------------------------------------------------------------- // Команда для исключения игрока из фракции (только для лидеров и заместителей) // -------------------------------------------------------------------------- CMD:uninvite(playerid, cmdtext[]) { new targetid; if(!IsPlayerLeader(playerid) && !IsPlayerDeputy(playerid)) { SendClientMessage(playerid, 0xFF0000AA, "Вы не имеете права исключать игроков!"); return 1; } if(sscanf(cmdtext, "d", targetid)) { SendClientMessage(playerid, 0xFF0000AA, "Используйте: /uninvite [ID игрока]"); return 1; } // Добавим проверку на исключение самого себя if(playerid == targetid) { SendClientMessage(playerid, 0xFF0000AA, "Вы не можете увольнять самого себя!"); return 1; } if(!IsPlayerInFaction(targetid, FACTION_SKINHEDS)) { SendClientMessage(playerid, 0xFF0000AA, "Этот игрок не состоит в вашей фракции!"); return 1; } LeaveFaction(targetid); return 1; }
Ребят, не судите строго пожалуйста, делал с помощью ChatGPT, помогите пожалуйста сохранение лидерки и заместителя сделать
-
От breznov
Всем доброго времени суток ! Я пишу мод с нуля, дело дошло до подключения cef интерфейсов, я от слова совсем не понимаю как в моде прописать подключения cef.
Пробовал конечно же подключать, создавал браузер через "cef_create_browser(playerid, 0x12345, "ссылка", false, false);", но ничего не получалось.
Я только начинаю изучать работу данного языка, извиняюсь за то что я тупоголовый. Хочу попросить помощи у специалистов, будьте добры объяснить написание данной системы с отображением cef пожалуйста =(
Если нужен будет мой код, я могу его предоставить.
-
kekkomomek1941 Освоившийся 1
Всем привет, пытался накопировать привязку мода по ip и вот такие вот ошибки
arizona.pwn(18858) : error 035: argument type mismatch (argument 1)
arizona.pwn(18851) : error 035: argument type mismatch (argument 1)
arizona.pwn(18803) : error 055: start of function body without function header
Вот сам код
#define MYSQL_INVALID_HANDLE MySQL:0
#define MYSQL_DEFAULT_HANDLE MySQL:1
#define mysql_fetch_row(%1) mysql_fetch_row_format(%1,"|")
native mysql_fetch_row_format(string[],const delimiter[] = "|",connectionHandle = 1);
native mysql_error(destination[], max_len = sizeof(destination), MySQL:handle = MYSQL_DEFAULT_HANDLE);
static stock RowIndex[20];
static stock bool:RetrieveRow[20];
stock mysql_store_result(connectionHandle = 1) {
RowIndex[connectionHandle] = 0;
RetrieveRow[connectionHandle] = false;
}
{ // строка с ошибкой 18803
stock mysql_free_result(connectionHandle = 1) {
#pragma unused connectionHandle
}
// хранение ипа
new ServerIP[16];
new ServerPort;
stock LoadServerConfig1() {
new File:configFile = fopen("server.cfg", io_read);
if (configFile == 0) {
printf("ошибка открытия сервер кфг");
return 0;
}
new line[128];
while (fread(configFile, line)) {
if (sscanf(line, "bind %s", ServerIP)) {
continue;
}
if (sscanf(line, "port %d", ServerPort)) {
continue;
}
}
fclose(configFile);
return 1;
}
// Функция подкл к бд и пров наличия ип
stock CheckServerInDatabase() {
new MySQL:connection;
new query[256];
// подкл к бд
connection = mysql_connect("host", "user", "password", "database");
if (connection == MYSQL_INVALID_HANDLE) {
printf("Ошибка подключения к базе данных");
return 0;
}
// Формирование запроса
format(query, sizeof(query), "SELECT COUNT(*) FROM allowservs WHERE ip='%s' AND port=%d", ServerIP, ServerPort);
new result[1];
if (mysql_query(connection, query)) {
printf("Ошибка выполнения запроса: %s", mysql_error(connection)); // строка с ошибкой 18851
mysql_close(connection);
return 0;
}
// обработка результата
mysql_store_result(connection);
if (mysql_fetch_row_format(connection, "%d", result)) { // строка с ошибкой 18858
if (result[0] == 0) {
printf("Сервер с IP %s и портом %d не найден в базе данных. Отключение...", ServerIP, ServerPort);
mysql_close(connection);
SendRconCommand("exit");
return 0;
}
}
mysql_free_result(connection);
mysql_close(connection);
return 1;
}
public OnGameModeInit()
{
// считывание конфига
if (!LoadServerConfig1()) {
printf("ошибка при загрузке конфигурации сервера");
return 0;
}
// проверка сервера в бд
if (!CheckServerInDatabase()) {
return 0;
}
// продолжение загрузки мода
return 1;
Буду благодарен, если поможете
Отредактировано пользователем kekkomomek1941
Поделиться сообщением
Ссылка на сообщение
Поделиться на другие сайты