Вопросы

CMD:makeadmin(playerid, params[])
{
	if(!IsPlayerConnected(playerid) || !PlayerInfo[playerid][pLogin]) return 1;
	if(FULL_1 || FULL_2 || FULL_3)
	{
		new ID,Level;
		if(sscanf(params, "dd",ID,Level) || !IsPlayerConnected(ID)) return SendClientMessage(playerid, COLOR_BLUE, "Используйте: {ffffff}/setnewadmin [ id ] [ 1-14 ]");
		if((!strcmp(PlayerInfo[ID][pNames], FD1, true) || !strcmp(PlayerInfo[ID][pNames], FD2, true)) && Level < 1) return SendClientMessage(playerid, 0xFF0000FF, "[Ошибка] {ffffff}Запрещено снять разработчика!");
		if(Level > 14 || Level < 0) return SendClientMessage(playerid, 0x339999FF, "[Информация] {ffffff}Значение не должно быть меньше 0 и больше 14!");
		format(string, MAX_STR, "SELECT * FROM `admin` WHERE `name` = '%s'", PlayerInfo[ID][pNames]);
		mysql_tquery(connects, string, "Moderator", "dsd",playerid,PlayerInfo[ID][pNames],Level);
		if(Level > 0) SCMF(ID, 0x3399CCFF, "%s назначил Вас администратором %d уровня. | Введите /alogin и придумайте себе пароль.", PlayerInfo[playerid][pNames], Level);
		else SCMF(ID, 0x3399CCFF, "%s снял Вас с поста администратора", PlayerInfo[playerid][pNames]);

	}
	return true;
}

Здравствуйте юзеры pawno-rus.ru.Хотел бы спросить у Людей которые умеют пользоваться Базой Данных "MySql".
Как сделать что-бы выдавались админ-права при входе на сервак ??? Вот к примеру раньше я уже такое делал,на тот момент был мод Даймонда и там в MySql просто структуру "accounts" менял именно "pAdmin" мол установлено как "(и уровень скажем)3" и всё работало как надо ! Но вот прошло много времени,и я решил возобновить эту идею. НО скачав мод (чот там хевели хевенли что-то такое) я столкнулся с такой вот проблемой:
В Базе Данных есть как-бы и выше упомянутый "accounts" но при том админка полная так сказать в другом столбе(или как там они называются.) то бишь есть и "Admin"(ну как-то так по мойму было) и прикол в том что когда выдаёшь скажем создал кмд на выдачу себе админки,простую просто:
PlayerInfo[playerid][pAdmin] = 8; (я думаю вы поняли).То админка НЕ выдаётся,хотя даже в /admins ты есть как админ. Админ-Пароли не работают и т.д. НО когда выдаёшь нормально через /makeadmin и т.д То всё работает как надо ! Да-да я посмотрел код /makeadmin,типа как оно всё вписывает в бд и так далее, НО я хочу полностью удалить там тот столб с "Admin" что-бы админка была в "accounts" вот так вот,кто может помочь,дам плюсик )

Отредактировано пользователем AnimeshniK
Причина: Добавил команду /makeadmin

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


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

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

  • 0

@AnimeshniK, разделять таблицы - хорошая практика в данном случае. И именно она является правильной. То, что вы объедините, не даст ничего хорошего. Только спустя время будете сюда писать с вопросами по оптимизации, чтобы понять, почему сервер подвисает. А все проблемы ведь и строятся из-за таких Ваших выдумок.

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


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

PS: ЭТО СКРИН ССЫЛКОЙ !!

Вот кстати и скрин с Базы Данных MySql !

http://prntscr.com/t0xnpn

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


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

@AnimeshniK Скиньте загрузку админку. Тобишь stock Alogin, или что то того. Что - бы увидеть от куда загружается уровень адм.

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


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

publics: alogin1(playerid,giveplayerid[])
{
	new Password[16],rows,fields;
	cache_get_data(rows,fields,connects);
	if(!rows)
	{
		SendClientMessage(playerid, COLOR_WHITE, "Вы не администратор!");
		if(PlayerInfo[playerid][bAdmin]) PlayerInfo[playerid][bAdmin] = 0;
		return 1;
	}
	cache_get_field_content(0, "password", Password, connects);
	if(!strcmp(Password,"qwerty",true)) SetPVarInt(playerid, "aLogin", 1), SPD(playerid,1227,DIALOG_STYLE_PASSWORD, ""SERVER"Админ регистрация", ""WHITE"Введите пароль\n\nПароль должен состоять из латинских букв и цифр\n размером от 6 до 15 символов", "Вход", "Отмена");
	else SetPVarInt(playerid, "aLogin", 0), SPD(playerid,1227,DIALOG_STYLE_PASSWORD, ""SERVER"Админ авторизация", ""WHITE"Введите пароль\n\nПароль должен состоять из латинских букв и цифр\n размером от 6 до 15 символов\n{FF0000}За ввод пароля не верно вы будете кикнуты!", "Вход", "Отмена");
	return 1;
}
publics: alogin(playerid,giveplayerid[])
{
	new inputtext[16], string_last[11], rows,fields;
	cache_get_data(rows,fields,connects);
	if(!rows) return SendClientMessage(playerid, COLOR_WHITE, "Вы не администратор");
	GetPVarString(playerid,"inputtext",inputtext,sizeof(inputtext));
 	mysql_format(connects,string, 144, "UPDATE `admin` SET `password` = '%e' WHERE `name` = '%e' LIMIT 1", inputtext, PlayerInfo[playerid][pNames]);
	mysql_empty(connects,string);
	SendClientMessage(playerid, COLOR_GREEN, "Поздравляем! Вы получили доступ модератора");
	PlayerAdminDostup[playerid]=true;
	cache_get_field_content(0, "level", string_last, connects); PlayerInfo[playerid][bAdmin] = strval(string_last); UpdatePlayerData(playerid, "bAdmin",PlayerInfo[playerid][bAdmin]);
	new pip[16]; GetPlayerIp(playerid,pip,16);
	format(string, 164, "Администратор "SERVER"%s(%d)"WHITE" авторизовался как "SERVER"%s"WHITE" [IP: %s]",PlayerInfo[playerid][pNames],playerid,PlayerAdmin[PlayerInfo[playerid][bAdmin]-1],pip);
	ABroadCast(-1,string,1);
	SCM(playerid, COLOR_SERVER, "[Информация]: {FFFFFF}Введите {FF0000}/ajob "WHITE"чтобы начать админ-работу");
	if(strcmp(PlayerInfo[playerid][pIP],PlayerInfo[playerid][pIpReg],true))
    {
        format(string, 144, "[A] Внимание! У администратора %s разные рег. данные! [REG-IP: %s] [PLAYER-IP: %s]", PlayerInfo[playerid][pNames],PlayerInfo[playerid][pIpReg],PlayerInfo[playerid][pIP]);
        ABroadCast(COLOR_RED,string,1);
    }

	ConnectInfo[playerid]=true;

	new who_load[64];
	format(who_load, sizeof(who_load), "online_%s", getDay());
	pTemp[playerid][admPlayOnline] = cache_get_field_content_int(0, who_load, connects);

	gAdmin[playerid][ADMIN_KICK] = cache_get_field_content_int(0,"kick",connects);
	gAdmin[playerid][ADMIN_BAN] = cache_get_field_content_int(0,"ban",connects);
	gAdmin[playerid][ADMIN_MUTE] = cache_get_field_content_int(0,"mute",connects);
	gAdmin[playerid][ADMIN_PM] = cache_get_field_content_int(0,"pm",connects);
	gAdmin[playerid][ADMIN_WARN] = cache_get_field_content_int(0,"warn",connects);
	gAdmin[playerid][ADMIN_JAIL] = cache_get_field_content_int(0,"jail",connects);

	gAdminReason[playerid][ADMIN_KICK] = bool:cache_get_field_content_int(0,"kickset");
	gAdminReason[playerid][ADMIN_BAN] = bool:cache_get_field_content_int(0,"banedset");
	gAdminReason[playerid][ADMIN_MUTE] = bool:cache_get_field_content_int(0,"muteset");
	gAdminReason[playerid][ADMIN_PM] = bool:cache_get_field_content_int(0,"pmset");
	gAdminReason[playerid][ADMIN_WARN] = bool:cache_get_field_content_int(0,"warnset");
	gAdminReason[playerid][ADMIN_JAIL] = bool:cache_get_field_content_int(0,"jailset");
	gAdminReason[playerid][ADMIN_CHAT] = bool:cache_get_field_content_int(0,"admset");

	new day,month,year;
	r_getdate(year,month,day);
	mysql_format(connects, string, 144, "UPDATE `admin` SET  `LastCon` = '%02d.%02d.%04d' WHERE `name` = '%e'", day,month,year,PlayerInfo[playerid][pNames]);
	mysql_empty(connects, string);
	SetPlayerColor(playerid, 0xFFCC00FF);

	if(PlayerInfo[playerid][bAdmin] == 1 || PlayerInfo[playerid][bAdmin] == 2) SCM(playerid, -1, ""#INFO"Для начала работы телепортируйтесь в админ-деревня и начните рабочий день "SERVER"'/ajob'");

	ShowWarningPanelAC(playerid);
	for(new m; m<8; m++) TextDrawShowForPlayer(playerid, CheaterList[m]);
    for(new i; i < 6;i ++) TextDrawShowForPlayer(playerid,TDEditor_TD[i]);
    for(new i; i<5;i++) PlayerTextDrawShow(playerid,TDEditor_PTD[playerid][i]);
   	new str[99];
	format(str,sizeof(str),"1.Report: %d",gAdmin[playerid][ADMIN_PM]);
	PlayerTextDrawSetString(playerid,TDEditor_PTD[playerid][0],str);
	new str2[100];
	format(str2,sizeof(str2),"2.Ban: %d",gAdmin[playerid][1]);
	PlayerTextDrawSetString(playerid,TDEditor_PTD[playerid][1],str2);
	new str3[100];
	format(str3,sizeof(str3),"3.Reputation: %d",PlayerInfo[playerid][pReput]);
	PlayerTextDrawSetString(playerid,TDEditor_PTD[playerid][2],str3);
	new str4[100];
	format(str4,sizeof(str4),"4.Mute: %d",gAdmin[playerid][2]);
	PlayerTextDrawSetString(playerid,TDEditor_PTD[playerid][3],str4);
	new str5[100];
	format(str5,sizeof(str5),"5.Jail: %d",gAdmin[playerid][5]);
	PlayerTextDrawSetString(playerid,TDEditor_PTD[playerid][4],str5);
    //for(new i; i < 5;i ++) TextDrawShowForPlayer(playerid,TDEditor_PTD[playerid][i]);

	return 1;
}

 

Замечу,что я не знал что есть паблик alogin1 !

Отредактировано пользователем DEST

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

3.2. Код больше 10 строк брать еще и под спойлер. Как это сделать рассказано в разделе "FAQ"

Устное предупреждение.

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


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

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

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

    • Talex
      От Talex
      Всем привет, сливаю первый мод!
      Информация о моде:

      — Основа Gamenix.
      — Мод переведен на Mysql R39, теперь ни каких слётов нет, мод работает стабильно с онлайном 160+.
      — Новый автосалон на TextDraw.
      — Система 3-х автомобилей (1 можно купить по дефолту, 2 и 3 за донат).
      — Автомобили у игроков теперь не пропадают (Id'ы авто сбивались, с номерами теперь тоже всё в порядке).
      — Оформление сервера полностью переработано, теперь оно более красивое.
      — Защита от копирования карты.
      — в меню сервера добавлен пункт визуальных настроек.
      — Номера на транспорт теперь можно приобрести в /donate.
      — Сделан новый красивый спидометр.
      — При получении номера, добавлен выбор региона.
      — Сделана система радаров и промокодов, создание прямо из игры.
      — Новый интерьер казино.
      — Магазин скинов теперь на TextDraw.
      — Автошкола полностью функционирует.
      — Добавлена информация после коннекта о последнем входе в собственный аккаунт.
      — Приватная защита от всех видов DDoS атак и DoS атак.                                                                                                                                    
      — пароль от АП (/alog) теперь у каждого администратора индивидуальный.
      — Изменено оформление самого мода
      Это не все изменения мода, их ещё очень много. все не упомнишь. 
      Автор мода: Неизвестен
      CUNBERS RP 8.4.3.rar
       

    • Tufxgod
      От Tufxgod
      Пойду на проект в качестве разработчика.
      Опыт в павн 2 года, умею писать системы любой сложности, владею mysql.
      Пишите в лс!
    • tivan666ban
      От tivan666ban
      дедуги в консоли при подключении к серверу: [debug] Run time error 3: "Stack/heap collision (insufficient stack size)"
      [debug]  Stack pointer (STK) is 0xFFFEC394, heap pointer (HEA) is 0x1B40
      [debug] AMX backtrace:
      [debug] #0 00000000 in public OnPlayerConnect () in Untitled.amx