- 0
Войдите для возможности подписаться
Подписчики
0
Error 040 при компиляции
Вопросы
Лучший ответ
Посмотри на первую и вторую функцию LoadPlayerVehicle. Если они абсолютно идентичны - одну из них можно удалить. Ни на что не повлияет.

Эта тема закрыта для публикации ответов.
Войдите для возможности подписаться
Подписчики
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, помогите пожалуйста сохранение лидерки и заместителя сделать
-
HAPKOMAH User 66
Всем привет. Что-то никак не могу разобраться с ошибками при компиляции:
D:\CRMP\gggg\exfr RP\gamemodes\new.pwn(14436) : error 040: duplicate "case" label (value 287)
D:\CRMP\gggg\exfr RP\gamemodes\new.pwn(14793) : error 040: duplicate "case" label (value 288)
D:\CRMP\gggg\exfr RP\gamemodes\new.pwn(16363) : error 040: duplicate "case" label (value 286)
D:\CRMP\gggg\exfr RP\gamemodes\new.pwn(35701) : error 021: symbol already defined: "LoadPlayerVehicle"
Pawn compiler 3.10.20160907 Copyright (c) 1997-2006, ITB CompuPhase
4 Errors.
Код#1 ( Красным отметил то, что я дописал к уже существующему коду:
enum
{
dNull, // 0
dRegister, // 1
dLogin, // 2
dSex, // 3
dCommandServer, // 4
dUcpAdmin, // 5
dUcpAdmin2, // 6
dAddNed, // 7 - 10
dInviteFrac = 11, // 11
dJoinHouse, // 12
dMakeGun, // 13 - 15
dGPS = 16, // 16
dWeather, // 17
dFracMenu = 18, // 18 - 21
dATM = 22, // 22 - 33
dNewsMenu = 34, // 34 - 45
dLic = 46, // 46 - 51
dHome = 52, // 52 - 54
dHeal = 55, // 55 - 73
dJob = 74, // 74 - 109
dDonate = 110, // 110 - 112
dPhone = 113, // 113 - 119
dCancelRent = 120, // 120
dLeave, // 121
dBuySim, // 122
dBuySimDonate, // 123
dVehNumber, // 124
dAdminPanel, // 125 - 149
dUsePromocode = 150, // 150
dMainMenu, // 151
dMainMenuAdd, // 152
dHomeUluch, // 153 - 154
dBizUluch = 155, // 155 - 156
dCommandShow = 157, // 157
dBreak, // 158
dInviteSkin, // 159
dLeaderSkin, // 160
dTempLeader, // 161
dMafia, // 162 - 170
dTuning = 171, // 171 - 184
dGang = 185, // 185 - 193
dAdminLogin = 194, // 194
dMail, // 195 - 196
dLicWeapon = 197, // 197
dCreatePass, // 198 - 199
dAddWarehouse = 200, // 200 - 204
dJoinCars = 205, // 205 - 210
dSetSpawn = 211, // 211
dBuyFishki, // 212 - 214
dStavkaRace = 215, // 215
dEditHouseInt, // 216
dService, // 217 - 221
dArmoury = 222, // 222 - 224
dArmyJob = 225, // 225
dStopLoad, // 226
dMenuPolice, // 227 - 228
dAutoSchool = 229, // 229 - 231
dFilling = 232, // 232
dShowAll, // 233 - 234
dSellHouse = 235, // 235
dSellBiz, // 236
dSellCar, // 237
dEvent, // 238 - 246
dRegisterPass = 247, // 247
dReferal, // 248 - 249
dErrorPassword = 250, // 250 - 251
dBusJob = 252, // 252 - 255
dTruckJob = 256, // 256 - 258
dMainBankAccount = 259, // 259
dCreateBankAccount, // 260
dLoginBankAccount, // 261
dOperBankAccount, // 262 - 268
dExitFly = 269, // 269
dHospitalLS, // 270 - 272
dHospitalSF = 273, // 273 - 275
dHospitalLV = 276, // 276 - 278
dMedStopLoad = 279, // 279
dAddWarehouse5, // 280
dInfoFamily, // 281
dCreateFamily,
dInviteFamily, // 282
dListFamily,
dFamily,
dBuyCars, // 283
dBuyCar, // 284
dLoadCar, // 285
dAutoSalon, // 286
dFindCar, // 287
dBuyNumber // 288
}
Далее строчки из error`ов. Решил сократить, т.к. код там большой. Но если потребуется весь - скину весь.
Строчка 14436:
case dBuyCar:
{
*тут код..*
Строчка 14793:
case dLoadCar:
{
*тут код..*
Строчка 16363:
case dBuyCars:
{
*тут код..*
Кстати, вот код от последней ошибки ( error 021: symbol already defined: "LoadPlayerVehicle" ):
( Красным помечена строчка 35701 )
stock LoadPlayerVehicle(playerid, number_vehicle)
{
if(!pInfo[playerid][cModel][number_vehicle])
*Далее код большой.. *
Поделиться сообщением
Ссылка на сообщение
Поделиться на другие сайты