Вопросы

R0m4ik
Новичок в PAWN

Всем привет, такая ситуация как сделать так чтобы админ-пароль выдавался в базе данных моя система админки устроена так "Когда вы выдаете игроку админку пароль выдаётся рандомный даже когда вы его допустим повысите пароль выдаётся другой, даже когда вы выдаете один и тот же лвл пароль всё равно выдаётся другой + чтобы в админку нужно было авторизовываться заново" В общем как сделать так чтобы пароль выдавался(При выдаче админки) и изменялся (При изменении лвла админки)?

 

CMD:madmin(playerid, params[])
{
    new randPassword[6];
	randPassword[0] = getLowerLatinLetter();
	randPassword[1] = getLowerLatinLetter();
	randPassword[2] = getDigit();
	randPassword[3] = getDigit();
	randPassword[4] = getDigit();
	randPassword[5] = getDigit();
    new string[256];
   	if(PlayerLogged[playerid] == 0) return 1;
   	if(PlayerInfo[playerid][pAdmin] < 10 || AdminLogged[playerid] == false) return 1;
	new admin[MAX_PLAYER_NAME];
	GetPlayerName(playerid, admin, sizeof(admin));
	{
        if(sscanf(params, "ud", params[0],params[1])) return SendMes(playerid, COLOR_WHITE, "Ââåäèòå: /madmin [playerid] [level(1-7)]");
   	    if(params[1] > 10 || params[1] < 0) return SendClientMessage(playerid, COLOR_GREY, "Óðîâåíü àäìèíêè äîëæåí áûòü îò 1 äî 10.");
   	    if(params[1] == 0) return PlayerInfo[params[0]][pAdmin] = params[1],AdminLogged[params[0]] = false,SendMes(playerid,0x3bd1d1ff, " Âû íàçíà÷èëè %s àäìèíèñòðàòîðîì óðîâíÿ {FF0000}0.", sendername(params[0])),SendMes(params[0],0x3bd1d1ff, " Âû áûëè íàçíà÷åíû àäìèíèñòðàòîðîì óðîâíÿ {FF0000}0");
        if(params[0] == playerid) return SendClientMessage(playerid, COLOR_GREY, "Âû íå ìîæåòå èñïîëüçîâàòü ýòó êîìàíäó íà ñåáå.");
		format(string, 128, "%s íàçíà÷èë íîâîãî àäìèíèñòðàòîðà %s", PlayerInfo[playerid][pSendername], sendername(params[0]));
		SendAdminMessage(COLOR_YELLOW, string);
       	format(totalstring, 100, " Âû íàçíà÷èëè %s àäìèíèñòðàòîðîì óðîâíÿ {FF0000}%d.",sendername(params[0]), params[1]);
		SendClientMessage(playerid,0x3BD1D1FF, totalstring);
		format(totalstring, 100, " Âû áûëè íàçíà÷åíû àäìèíèñòðàòîðîì óðîâíÿ {FF0000}%d",params[1]);
		SendClientMessage(params[0],0x3BD1D1FF, totalstring);
		PlayerInfo[params[0]][pAdmin] = params[1];
		SendMes(params[0], 0xF272DDFF, " Âàø ïàðîëü ê àäìèí.äîñòóïó: {FFFFFF}%s",randPassword);
	}
	return 1;
}

 

Поделиться сообщением


Ссылка на сообщение

22 ответа на этот вопрос

  • 1

Хм, видимо strcat ничего не записал в переменную, возможно из-за того, что она изначально пустая. 

Попробуйте заменить строку со strcat в команде на такую строчку

format(PlayerInfo[params[0]][pDostup], 24, "%s", randPassword);

Это, наверное, будет более правильным решением, так как пароль должен перезаписаться, а не дозаписаться.

format, насколько я помню, как раз очищает строчку перед записью в нее. 

Поделиться сообщением


Ссылка на сообщение
  • 0
Cawfee
Великий Гуру

@R0m4ik, я правильно понимаю, что суть вопроса кроется в двух проблемах?

  1. При изменении прав администратора новый пароль администратора не сохраняется в базе данных.
  2. Администратор не может авторизоваться с тем паролем, который ему выдала система?

Поделиться сообщением


Ссылка на сообщение
  • 0
R0m4ik
Новичок в PAWN

@Снеговик Про 2 не совсем когда выдаю повышаю админку 0 реакций я как и был авторизован в админке так и  остаюсь.

а 1 да пароль как и не изменяется так и не выдаётся 

Поделиться сообщением


Ссылка на сообщение
  • 0
R0m4ik
Новичок в PAWN

@Снеговик 

CMD:alogin(playerid, params[])
{
	if(PlayerLogged[playerid] == 0) return 1;
    if(PlayerInfo[playerid][pAdmin] < 1) return 1;//AdminLogged[playerid] = true
    if(AdminLogged[playerid] == true) return SendClientMessage(playerid, COLOR_GREY, "Âû óæå àâòîðèçîâàíû!");
	format(totalstring, 256, "{ffffff}Ââåäèòå Âàø ïàðîëü îò àäìèí.äîñòóïà",PlayerInfo[playerid][pSendername],PlayerInfo[playerid][pAdmin]);
	ShowPlayerDialog(playerid, D_ALOGIN, 1, "{ffffff}Àâòîðèçàöèÿ", totalstring, "Äàëåå",">>>");
	return true;
}

		case D_ALOGIN:
	    {
	        if(response)
			{
	        	if(!strlen(inputtext))
				{
                    format(totalstring, 256, "{ffffff}Ââåäèòå Âàø ïàðîëü îò àäìèí.äîñòóïà",PlayerInfo[playerid][pSendername],PlayerInfo[playerid][pAdmin]);
					ShowPlayerDialog(playerid, D_ALOGIN, 1, "{ffffff}Àâòîðèçàöèÿ", totalstring, "Äàëåå",">>>");
				}
               	else if(!strcmp(inputtext, GetAccount(PlayerInfo[playerid][pSendername], "dostup"), true))
		  		{
		  			AdminLogged[playerid] = true;
					SendClientMessage(playerid, COLOR_GREY, " Âû àâòîðèçîâàëèñü!");
		  			return 1;
		  		}
                else
				{
					SendClientMessage(playerid,COLOR_LIGHTRED, " Âû ââåëè íåâåðíûé ïàðîëü!");
					//Kick(playerid);
					//format(string, 128, " %s ?? ?????? ??????????? ? ?????.?????? ( IP: 255.255.255.255 )",PlayerInfo[playerid][pSendername]);
					//SendAdminMessage(0xFF4FD9FF, string);

				}
			}
		}

 

Поделиться сообщением


Ссылка на сообщение
  • 0
R0m4ik
Новичок в PAWN

@Снеговик Есть только вот эта строка которая отвечает за пароль раньше был пароль админки по умолчанию сейчас временно выдаю вручную.

73    dostup     varchar(11)     utf8_bin      Нет    Нет   Изменить Изменить Удалить Удалить Показать больше операций Ещё

Поделиться сообщением


Ссылка на сообщение
  • 0
R0m4ik
Новичок в PAWN

@Cawfee Ответьте!

Заметка от DEST , создано

Не нужно упоминать конкретного участника форума, это не совсем вежливо.
Если хотите напомнить о своей теме, просто отправьте сообщение с текстом "Up". Это поднимет вашу тему выше, и участники форума смогут вновь ее заметить. По правилам форума такое сообщение разрешено оставлять не чаще, чем раз в 24 часа.

Поделиться сообщением


Ссылка на сообщение
  • 0

в команду madmin перед этой строкой

В 05.01.2022 в 18:00, R0m4ik сказал:

SendMes(params[0], 0xF272DDFF, " Âàø ïàðîëü ê àäìèí.äîñòóïó: {FFFFFF}%s",randPassword);

добавить

strcat(PlayerInfo[params[0]][pDostup], randPassword);

это запишет сгенерированный пароль в параметры игрока.

Сейчас в этой команде просто выводится пароль в чат, но никуда не записывается.

После перезахода он должен будет сохраниться в базу данных, проверьте это. 

И, да, когда копируете текст из редактора PAWNO, нужно делать это на русской раскладке, чтобы квакозябриков не было, читать неудобно. 

Поделиться сообщением


Ссылка на сообщение
  • 0
R0m4ik
Новичок в PAWN

C:\Users\Roma\Desktop\REVENT RP BY SOSED\gamemodes\justice.pwn(68991) : warning 217: loose indentation
C:\Users\Roma\Desktop\REVENT RP BY SOSED\gamemodes\justice.pwn(68991) : error 029: invalid expression, assumed zero
C:\Users\Roma\Desktop\REVENT RP BY SOSED\gamemodes\justice.pwn(68992) : warning 217: loose indentation

Поделиться сообщением


Ссылка на сообщение
  • 0

@R0m4ik когда прикладываете ошибки, выкладывайте и код, который к ним относится, с пометкой строк, на которые ошибка. 

В данном случае необходимо приложить строчки 68991 и 68992, а также 10 строк сверху них и 10 строк снизу. 

Поделиться сообщением


Ссылка на сообщение
  • 0
R0m4ik
Новичок в PAWN
        if(params[1] > 10 || params[1] < 0) return SendClientMessage(playerid, COLOR_GREY, "Уровень админки должен быть от 1 до 10.");
        if(params[1] == 0) return PlayerInfo[params[0]][pAdmin] = params[1],AdminLogged[params[0]] = false,SendMes(playerid,0x3bd1d1ff, " Вы назначили %s администратором уровня {FF0000}0.", sendername(params[0])),SendMes(params[0],0x3bd1d1ff, " Вы были назначены администратором уровня {FF0000}0");
        if(params[0] == playerid) return SendClientMessage(playerid, COLOR_GREY, "Вы не можете использовать эту команду на себе.");
        format(string, 128, "%s назначил нового администратора %s", PlayerInfo[playerid][pSendername], sendername(params[0]));
        SendAdminMessage(COLOR_YELLOW, string);
        format(totalstring, 100, " Вы назначили %s администратором уровня {FF0000}%d.",sendername(params[0]), params[1]);
        SendClientMessage(playerid,0x3BD1D1FF, totalstring);
        format(totalstring, 100, " Вы были назначены администратором уровня {FF0000}%d",params[1]);
        SendClientMessage(params[0],0x3BD1D1FF, totalstring);
        PlayerInfo[params[0]][pAdmin] = params[1];
        strcat(PlayerInfo[params[0]][pDostup], randPassword);//Ошибка/варнинг
        SendMes(params[0], 0xF272DDFF, " Ваш пароль к админ.доступу: {FFFFFF}%s",randPassword);//варнинг

 

Поделиться сообщением


Ссылка на сообщение
  • 0
R0m4ik
Новичок в PAWN

Да есть

в pInfo

 

pDostup[24],

 

в LoadAccount

 

PlayerInfo[playerid][pDostup],

 

в SaveAccount

 

format(src,sizeof(src),"dostup='%s',",PlayerInfo[playerid][pDostup]);

strcat(query,src,sizeof(query));

 

и в Стоке ResetStats

 

PlayerInfo[playerid][pDostup] = EOS

 

И я походу уже догадался в чём проблема случайно не в playerid перед Playerinfo

Поделиться сообщением


Ссылка на сообщение
  • 0
R0m4ik
Новичок в PAWN
CMD:madmin(playerid, params[])
{
    new randPassword[7];
    randPassword[0] = getLowerLatinLetter();
    randPassword[1] = getLowerLatinLetter();
    randPassword[2] = getDigit();
    randPassword[3] = getDigit();
    randPassword[4] = getDigit();
    randPassword[5] = getDigit();
    new string[256];
    if(PlayerLogged[playerid] == 0) return 1;
    if(PlayerInfo[playerid][pAdmin] < 10 || AdminLogged[playerid] == false) return 1;
    new admin[MAX_PLAYER_NAME];
    GetPlayerName(playerid, admin, sizeof(admin));
    {
        if(sscanf(params, "ud", params[0],params[1])) return SendMes(playerid, COLOR_WHITE, "Введите: /madmin [playerid] [level(1-7)]");
        if(params[1] > 10 || params[1] < 0) return SendClientMessage(playerid, COLOR_GREY, "Уровень админки должен быть от 1 до 10.");
        if(params[1] == 0) return PlayerInfo[params[0]][pAdmin] = params[1],AdminLogged[params[0]] = false,SendMes(playerid,0x3bd1d1ff, " Вы назначили %s администратором уровня {FF0000}0.", sendername(params[0])),SendMes(params[0],0x3bd1d1ff, " Вы были назначены администратором уровня {FF0000}0");
        if(params[0] == playerid) return SendClientMessage(playerid, COLOR_GREY, "Вы не можете использовать эту команду на себе.");
        format(string, 128, "%s назначил нового администратора %s", PlayerInfo[playerid][pSendername], sendername(params[0]));
        SendAdminMessage(COLOR_YELLOW, string);
        format(totalstring, 100, " Вы назначили %s администратором уровня {FF0000}%d.",sendername(params[0]), params[1]);
        SendClientMessage(playerid,0x3BD1D1FF, totalstring);
        format(totalstring, 100, " Вы были назначены администратором уровня {FF0000}%d",params[1]);
        SendClientMessage(params[0],0x3BD1D1FF, totalstring);
        PlayerInfo[params[0]][pAdmin] = params[1];
    `   strcat(PlayerInfo[params[0]][pDostup], randPassword);
        SendMes(params[0], 0xF272DDFF, " Ваш пароль к админ.доступу: {FFFFFF}%s",randPassword);
    }
    return 1;
}

 

Поделиться сообщением


Ссылка на сообщение
  • 0
6 минут назад, R0m4ik сказал:

   `   strcat(P

внимательней копируйте, у вас тут кавычка затесалась `, удалите ее и будет счастье :) 

Поделиться сообщением


Ссылка на сообщение
  • 0
R0m4ik
Новичок в PAWN

К сожалению способ который вы мне скинули не сработал может ли это быть связано с тем что 1.Это готовый мод с интернета 2.Это мод 2013-2015 года 3.Версия MySQL R5

Поделиться сообщением


Ссылка на сообщение
  • 0

С шагом написания кода программы мы справились, теперь переходим ко второму, почти всегда неминуемому - отладке написанной программы. 

Отлаживать будем с помощью printf, то есть будем печатать в консоль сервера интересующие нас значения.

 

Перед вот этими двумя строчками 

1 час назад, R0m4ik сказал:

format(src,sizeof(src),"dostup='%s',",PlayerInfo[playerid][pDostup]);

strcat(query,src,sizeof(query));

Которые в SaveAccount, добавим отладочный вывод: 

printf("[DEBUG] PlayerInfo[%d][pDostup] = %s", playerid, PlayerInfo[playerid][pDostup]);

После запустите мод, выдайте админку, выйдите с сервера, сервер не выключайте, посмотрите в консоль и найдите эту строчку там, скиньте сюда. 

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • patrickk
      От patrickk
      Всем привет, решил написать dm сервер и довольно хорошим получился, даже на голову выше Goat dm. Оставил не решенную проблему тем что  у меня есть 4 локации с rp run и cj run ну а как добавить cj бег на те локации не знаю и как эта система работает. Надеюсь мне помогут знающие люди
    • Samolet
      От Samolet
      Здраствуйте, cоздаю копию Arizona на ОМП, опен мультиплеер, загрузил и подключил бд, но сервер не хочет вот лог :[2026-10-20T21:03:32+0300] [Info] Log file reloaded. Starting open.mp server (1.5.8.3079) from commit c6759bd8d265171ae3d86598895a23d5a8d92a3b Loading component $CAPI.so Successfully loaded component C-API (1.5.8.3079) with UID 10467dd8d4c56fc6 Loading component LegacyConfig.so Successfully loaded component LegacyConfig (1.5.8.3079) with UID 24ef6216838f9ffc Loading component NPCs.so Successfully loaded component NPCs (1.5.8.3079) with UID 3d0e59e87f4e90bc Loading component Recordings.so Successfully loaded component Recordings (1.5.8.3079) with UID 871144d399f5f613 Loading component Checkpoints.so Successfully loaded component Checkpoints (1.5.8.3079) with UID 44a937350d611dde Loading component TextDraws.so Successfully loaded component TextDraws (1.5.8.3079) with UID 9b5dc2b1d15c992a Loading component Pawn.so Successfully loaded component Pawn (1.5.8.3079) with UID 78906cd9f19c36a6 Loading component GangZones.so Successfully loaded component GangZones (1.5.8.3079) with UID b3351d11ee8d8056 Loading component Actors.so Successfully loaded component Actors (1.5.8.3079) with UID c81ca021eae2ad5c Loading component Pickups.so Successfully loaded component Pickups (1.5.8.3079) with UID cf304faa363dd971 Loading component Dialogs.so Successfully loaded component Dialogs (1.5.8.3079) with UID 44a111350d611dde Loading component Objects.so Successfully loaded component Objects (1.5.8.3079) with UID 59f8415f72da6160 Loading component Console.so Successfully loaded component Console (1.5.8.3079) with UID bfa24e49d0c95ee4 Loading component TextLabels.so Successfully loaded component TextLabels (1.5.8.3079) with UID a0c57ea80a009742 Loading component Variables.so Successfully loaded component Variables (1.5.8.3079) with UID 75e121848bc01fa2 Loading component Databases.so Successfully loaded component Databases (1.5.8.3079) with UID 80092e7eb5821a96 Loading component LegacyNetwork.so Successfully loaded component RakNetLegacyNetwork (1.5.8.3079) with UID ea9799fd79cf8442 Loading component CustomModels.so Successfully loaded component CustomModels (1.5.8.3079) with UID 15e3cb1e7c77ffff Loading component Menus.so Successfully loaded component Menus (1.5.8.3079) with UID 621e219eb97ee0b2 Loading component Vehicles.so Successfully loaded component Vehicles (1.5.8.3079) with UID 3f1f62ee9e22ab19 Loading component Classes.so Successfully loaded component Classes (1.5.8.3079) with UID 8cfb3183976da208 Loading component Timers.so Successfully loaded component Timers (1.5.8.3079) with UID 2ad8124c5ea257a3 Loaded 22 component(s) from /home/gs113492/components Executing Server Config... [2026-10-20T21:03:33+0300] [Info] Loading plugin: crashdetect.so [2026-10-20T21:03:33+0300] [Info] CrashDetect plugin 4.19 [2026-10-20T21:03:33+0300] [Info] Loading plugin: mapandreas.so [2026-10-20T21:03:33+0300] [Info] Loading plugin: streamer.so [2026-10-20T21:03:33+0300] [Info] *** Streamer Plugin v2.9.4 by Incognito loaded *** [2026-10-20T21:03:33+0300] [Info] Loading plugin: sscanf.so [2026-10-20T21:03:33+0300] [Info] [2026-10-20T21:03:33+0300] [Info] =============================== [2026-10-20T21:03:33+0300] [Info] sscanf plugin loaded. [2026-10-20T21:03:33+0300] [Info] Version: 2.8.3 [2026-10-20T21:03:33+0300] [Info] (c) 2018 Alex "Y_Less" Cole [2026-10-20T21:03:33+0300] [Info] =============================== [2026-10-20T21:03:33+0300] [Info] Loading plugin: TOTP.so [2026-10-20T21:03:33+0300] [Info] TOTP plugin v1.0.1 by Games loaded. [2026-10-20T21:03:33+0300] [Info] Loading plugin: mysql_static.so [2026-10-20T21:03:33+0300] [Info] >> plugin.mysql: R39-6 successfully loaded. [2026-10-20T21:03:33+0300] [Info] Loading plugin: libpawn_json.so [2026-10-20T21:03:34+0300] [Error] Function not registered: YSF_SetTickRate [2026-10-20T21:03:34+0300] [Error] Function not registered: PC_Init [2026-10-20T21:03:34+0300] [Info] [debug] Run time error 19: "File or function is not found" [2026-10-20T21:03:34+0300] [Info] [debug] PC_Init [2026-10-20T21:03:34+0300] [Info] [debug] YSF_SetTickRate [2026-10-20T21:03:34+0300] [Error] File or function is not found [2026-10-20T21:03:34+0300] [Error] Function not registered: PC_RegAlias [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_GetWriteOffset [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_Reset [2026-10-20T21:03:34+0300] [Error] Function not registered: PR_RegHandler [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_Delete [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_New [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_ResetReadPointer [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_SetWriteOffset [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_IgnoreBits [2026-10-20T21:03:34+0300] [Error] Function not registered: PR_Init [2026-10-20T21:03:34+0300] [Error] Function not registered: PR_SendRPC [2026-10-20T21:03:34+0300] [Error] Function not registered: PR_SendPacket [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_WriteValue [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_GetNumberOfBytesUsed [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_ReadValue [2026-10-20T21:03:34+0300] [Error] Function not registered: PC_Init [2026-10-20T21:03:34+0300] [Info] [debug] Run time error 19: "File or function is not found" [2026-10-20T21:03:34+0300] [Info] [debug] PC_Init [2026-10-20T21:03:34+0300] [Info] [debug] BS_ReadValue [2026-10-20T21:03:34+0300] [Info] [debug] BS_GetNumberOfBytesUsed [2026-10-20T21:03:34+0300] [Info] [debug] BS_WriteValue [2026-10-20T21:03:34+0300] [Info] [debug] PR_SendPacket [2026-10-20T21:03:34+0300] [Info] [debug] PR_SendRPC [2026-10-20T21:03:34+0300] [Info] [debug] PR_Init [2026-10-20T21:03:34+0300] [Info] [debug] BS_IgnoreBits [2026-10-20T21:03:34+0300] [Info] [debug] BS_SetWriteOffset [2026-10-20T21:03:34+0300] [Info] [debug] BS_ResetReadPointer [2026-10-20T21:03:34+0300] [Info] [debug] BS_New [2026-10-20T21:03:34+0300] [Info] [debug] BS_Delete [2026-10-20T21:03:34+0300] [Info] [debug] PR_RegHandler [2026-10-20T21:03:34+0300] [Info] [debug] BS_Reset [2026-10-20T21:03:34+0300] [Info] [debug] BS_GetWriteOffset [2026-10-20T21:03:34+0300] [Info] [debug] PC_RegAlias [2026-10-20T21:03:34+0300] [Error] File or function is not found [2026-10-20T21:03:34+0300] [Info] [debug] Run time error 19: "File or function is not found" [2026-10-20T21:03:34+0300] [Info] [debug] PC_Init [2026-10-20T21:03:34+0300] [Info] [debug] YSF_SetTickRate [2026-10-20T21:03:34+0300] [Error] File or function is not found [2026-10-20T21:03:34+0300] [Info] [debug] Run time error 19: "File or function is not found" [2026-10-20T21:03:34+0300] [Info] [debug] PC_Init [2026-10-20T21:03:34+0300] [Info] [debug] BS_ReadValue [2026-10-20T21:03:34+0300] [Info] [debug] BS_GetNumberOfBytesUsed [2026-10-20T21:03:34+0300] [Info] [debug] BS_WriteValue [2026-10-20T21:03:34+0300] [Info] [debug] PR_SendPacket [2026-10-20T21:03:34+0300] [Info] [debug] PR_SendRPC [2026-10-20T21:03:34+0300] [Info] [debug] PR_Init [2026-10-20T21:03:34+0300] [Info] [debug] BS_IgnoreBits [2026-10-20T21:03:34+0300] [Info] [debug] BS_SetWriteOffset [2026-10-20T21:03:34+0300] [Info] [debug] BS_ResetReadPointer [2026-10-20T21:03:34+0300] [Info] [debug] BS_New [2026-10-20T21:03:34+0300] [Info] [debug] BS_Delete [2026-10-20T21:03:34+0300] [Info] [debug] PR_RegHandler [2026-10-20T21:03:34+0300] [Info] [debug] BS_Reset [2026-10-20T21:03:34+0300] [Info] [debug] BS_GetWriteOffset [2026-10-20T21:03:34+0300] [Info] [debug] PC_RegAlias [2026-10-20T21:03:34+0300] [Info] Legacy Network started on ***.**.**.***:2717. Помогите пожалуйста