Перейти к содержанию

Поиск сообщества

Показаны результаты для тегов 'уроки crmp'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • Информационный раздел
    • Новости портала
    • Техническая поддержка
    • Приватный форум
  • CRMP 0.3е
    • Помощь по Скриптингу
    • Ошибки
    • Готовые сервера
    • Дополнительные скрипты
    • Мануалы/Уроки
    • Модификации
    • Поиск
    • Архив Вопросов/Проблем/Ошибок
    • Файловый архив
    • Другое
  • SAMP/CRMP 0.3.7
    • Помощь по Скриптингу
    • Ошибки
    • Готовые сервера
    • Плагины
    • Поиск
    • Документация
  • Другое
    • Флейм

Поиск результатов в...

Поиск результатов, которые содержат...


Дата создания

  • Начало

    Конец


Дата обновления

  • Начало

    Конец


Фильтр по количеству...

Найдено: 180 результатов

  1. Здравствуйте дороги пользователи GSGAMES.Сегодня,я вас научу делать возможности выполнения сервером какой-либо функции в определённое время. Для работы нам понадобится include time.inc, это стандартный includ. Первым шагом,мы создаём public Vremy, если у вас он есть, то вам его создавать не нужно. И так продолжаем. Ко всем forward вставляем: forward Vremy(); В свободное от пабликов/стоков место: public Vremy() { new hour, minute, second, year, month, day; gettime(hour, minute, second); getdate(year, month, day); if (year == 2013 && month == 10 && day == 31 && minute == 60) { // Проверка на год, месяц, день, минуту. (Меняем на свое)SendClientMessageToAll(-1,"(( Test ))"); } // Каждый час, 31 октября будет писать наш текст т.е "Test" return 1; } Теперь мы создадим таймер в public OnGameModeInit: SetTimer("Vremy",1000 * 60,1); Автор:Я(Kirill_Lacoste)
  2. SkRiTeX

    TextDraw (от SkRiTeX)

    Вот решил выложить TextDraw в правом нижнем углу экрана, может кому понадобится. Скриншот: ---------------------------------------------------------------------------------------------------- Этак приступим к вживлению данного TextDraw Ко всем new: new Text:Textdraw44;В public OnPlayerCommandText(playerid, cmdtext[]):TextDrawShowForPlayer(playerid, Textdraw44);В public OnGameModeInit():TextDrawShowForAll(Textdraw44);Textdraw44 = TextDrawCreate(632.000000, 412.000000, "irkytsk-rp.ucoz.ru"); <------- irkytsk-rp.ucoz.ru меняете на своё название.TextDrawAlignment(Textdraw44, 3);TextDrawBackgroundColor(Textdraw44, 255);TextDrawFont(Textdraw44, 0);TextDrawLetterSize(Textdraw44, 0.619999, 2.499999);TextDrawColor(Textdraw44, 629657343);TextDrawSetOutline(Textdraw44, 1);TextDrawSetProportional(Textdraw44, 1);Ну вот и всё. Если что то не будет работать пишите в эту тему, я исправлю. Спасибо за внимание.
  3. Добавляем команду: if(strcmp(cmd, "/fixveh", true) == 0){if(IsPlayerConnected(playerid)){if(PlayerInfo[playerid][pAdmin] < 1) <---------- Лвл Администратора который может использовать данную команду.{SendClientMessage(playerid, COLOR_GRAD1, "У вас нет прав для использование это команды!");return 1;}if(IsPlayerInAnyVehicle(playerid)){tmp = strtok(cmdtext, idx);new carid = strval(tmp);if(!strlen(tmp)) carid = GetPlayerVehicleID(playerid);tmp = strtok(cmdtext, idx);new Float:heal = floatstr(tmp);if(!strlen(tmp)) heal = 1000.0;SetVehicleHealth(carid, heal);RepairVehicle(carid);SendClientMessage(playerid, COLOR_GREY, "Транспорт починен!");}}return 1;} Вот и всё. Спасибо за внимание. P.S Только для мода Gamer.
  4. SkRiTeX

    Разводной мост.

    Ко всем new: new Most1;new Most2; Ко всем CreateDynamicObject добавляем: Most1 = CreateObject(2168,2747.34448242,-1142.90002441,21.60000038,0.00000000,0.00000000,180.00000000); //object(partition) (2)Most2 = CreateObject(2168,2747.30004883,-1262.00000000,21.60000038,0.00000000,0.00000000,0.00000000); //object(partition) (4) Добавляем команды /пмост ( поднять мост) и /омост (опустить мост): Для Админов: if(strcmp(cmd,"/пмост",true)==0){if(PlayerInfo[playerid][pAdmin] >= 10) //<------ Лвл Администратора{MoveObject(Most1,2747.34448242,-1142.90002441,22.6000002, 0.1, 55.00000000,0.00000000,180.00000000);MoveObject(Most2,2747.30004883,-1262.00000000,22.6000002, 0.1, 55.00000000,0.00000000,0.00000000 );SendClientMessageToAll(COLOR_GREEN,"Внимание!!! Подъём разводного моста!!!");return 1;}else{ SendClientMessage(playerid, COLOR_LIGHTRED,"Вы не Администратор");}}if(strcmp(cmd,"/омост",true)==0){if(PlayerInfo[playerid][pAdmin] >= 10){MoveObject(Most1,2747.34448242, -1142.90002441, 21.60000038, 0.1, 0.00000000, 0.00000000, 180.00000000 );MoveObject(Most2,2747.30004883, -1262.00000000, 21.60000038, 0.1, 0.00000000,0.00000000,0.00000000 );SendClientMessageToAll(COLOR_GREEN,"Внимание!!! Разводной мост опускается!!!");return 1;}else{ SendClientMessage(playerid, COLOR_LIGHTRED,"Вы не Администратор!");}} Для Хелперов и Админов: if(strcmp(cmd,"/пмост",true)==0){if (PlayerInfo[playerid][pAdmin] >= 10 || PlayerInfo[playerid][pHelper] >= 6){MoveObject(Most1,2747.34448242,-1142.90002441,22.6000002, 0.1, 55.00000000,0.00000000,180.00000000);MoveObject(Most2,2747.30004883,-1262.00000000,22.6000002, 0.1, 55.00000000,0.00000000,0.00000000 );SendClientMessageToAll(COLOR_GREEN,"Внимание!!! Подъём разводного моста!!!");return 1;}else{ SendClientMessage(playerid, COLOR_LIGHTRED,"Вы не Администратор");}}if(strcmp(cmd,"/омост",true)==0){if(PlayerInfo[playerid][pAdmin] >= 10){MoveObject(Most1,2747.34448242, -1142.90002441, 21.60000038, 0.1, 0.00000000, 0.00000000, 180.00000000 );MoveObject(Most2,2747.30004883, -1262.00000000, 21.60000038, 0.1, 0.00000000,0.00000000,0.00000000 );SendClientMessageToAll(COLOR_GREEN,"Внимание!!! Разводной мост опускается!!!");return 1;}else{ SendClientMessage(playerid, COLOR_LIGHTRED,"Вы не Администратор!");}} Ну вот и всё. Большое спасибо за внимание.
  5. Привет всем.Вот я решил порыться в своём старом моде .и наткнулся на команды : /alock and /asellcar . Так вот хочу выложить
  6. SkRiTeX

    cmd /setradar

    Здравствуйте дорогие пользователи GSG. Вот решил выложить cmd /setradar. Может кому понадобиться. В прошлый раз я выложил команду не полностью, исправляюсь. Поставить радар: if(!strcmp("/setradar", cmd, true)){new radarid = -1;for(new r; r<MAX_RADARS; r++){if(!RadarInfo[r][rActive]){radarid = r;break;}}if(radarid >= MAX_RADARS) return SendClientMessage(playerid, 0x27C400FF, ">>> Уже создано максимальное количество радаров.");if(PlayerRadars[playerid] >= MAX_PLAYER_RADARS) return SendClientMessage(playerid, 0x27C400FF, ">>> Ты создал уже создано максимальное количество радаров.");tmp = strtok(cmdtext, idx);if(!strlen(tmp)){SendClientMessage(playerid, 0x27C400FF, ">>> Использование >>> /setradar [ тип радара ]");SendClientMessage(playerid, 0xDEDEDEFF, "| 1: городской");SendClientMessage(playerid, 0xDEDEDEFF, "| 2: пригородный");SendClientMessage(playerid, 0xDEDEDEFF, "| 3: шоссейный");return 1;}new type[64];switch(strval(tmp)){case 1: RadarInfo[radarid][rSpeed] = 60, type = "Городской";case 2: RadarInfo[radarid][rSpeed] = 90, type = "Пригородный";case 3: RadarInfo[radarid][rSpeed] = 120, type = "Шоссейный";default: return SendClientMessage(playerid, 0x27C400FF, ">>> Неверный тип радара");}new Float:POS[4];GetPlayerPos(playerid, POS[0], POS[1], POS[2]);SetPlayerPos(playerid, POS[0]-0.5, POS[1]-0.5, POS[2]);GetPlayerFacingAngle(playerid, POS[3]);RadarInfo[radarid][rObject] = CreateDynamicObject(18880, POS[0], POS[1], POS[2]-2.5, 0.0, 0.0, POS[3]);RadarInfo[radarid][rActive] = true;RadarInfo[radarid][rPlayer] = playerid;RadarInfo[radarid][rPos][0] = POS[0];RadarInfo[radarid][rPos][1] = POS[1];RadarInfo[radarid][rPos][2] = POS[2];format(string, 128, ">>> Радар успешно создан | тип радара: {DEDEDE}%s", type);SendClientMessage(playerid, -1, string);PlayerRadars[playerid]++;return 1;} Удалить радар: if(!strcmp("/delradar", cmd, true)){new bool:radarid;for(new r; r<MAX_RADARS; r++){if(RadarInfo[r][rActive] && IsPlayerInRangeOfPoint(playerid, 3.0, RadarInfo[r][rPos][0], RadarInfo[r][rPos][1], RadarInfo[r][rPos][2])){if(RadarInfo[r][rPlayer] != playerid){SendClientMessage(playerid, 0x27C400FF, ">>> Данный радар был установлен не Вами.");}else{PlayerRadars[playerid]--;radarid = true;DestroyObject(RadarInfo[r][rObject]);RadarInfo[r][rPlayer] = INVALID_PLAYER_ID;RadarInfo[r][rActive] = false;}break;}}if(!radarid) SendClientMessage(playerid, 0x27C400FF, ">>> Поблизости нет радаров.");return 1;}
  7. Всем привет вообщем. Я решил написать еще один способ защитить сервер паролем (в этом случае не используется /rcon password и т.д. ). Вот сам код: 1. Это в OnPlayerConnect ShowPlayerDialog(playerid,777,DIALOG_STYLE_INPUT,"Введите пароль сервера","Введите пароль для доступа к серверу","ОК","Отмена"); 2. Это в OnDialogResponse if(dialogid == 777){if(response){if(!strlen(inputtext)){SendClientMessage(playerid,-1,"Вы не ввели пароль сервера и будете кикнуты!");Kick(playerid);return 1;}else{new serverpass[15];serverpass = "1111";if(strcmp(inputtext, serverpass) == 0) {SendClientMessage(playerid, -1, "Вы ввели верный пароль сервера!"); }else {SendClientMessage(playerid, -1, "Вы забанены за попытку взлома сервера (подбор пароля)");BanEx(playerid, "Подбор пароля сервера"); }}}else {SendClientMessage(playerid, -1, "Вы нажали кнопку Отмена и будете кикнуты!");Kick(playerid); }} Что изменить под себя: 1. Самое главное: пароль. Он меняется в строке serverpass = "1111"; 2. При необходимости: ID диалога. В данном случае 777 3. При попытке подбора пароля в моем случае банит. Действие можно изменить, изменив (или удалив) строку BanEx(playerid, "Подбор пароля сервера"); 4. Ну и цветовую гамму и текст, это на Ваш выбор :) Такой способ можно использовать для троллинга (к примеру). Пример: Игрок видит сервер с супер модом, который открыт. Заходит, и тут вылазиет окно ввода пароля. Он наберет что нибудь, и если пароль неправильный, его банит. В любом случае - дело ваше! Автор: Max_Mister
  8. Команда: else if(strcmp(cmd, "/uninvite", true) == 0) { new para1; new Leader; new Member; tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "{DDA0DD} >> Введите{FFFFFF}: /uninvite [id] [причина]"); para1 = ReturnUser(tmp); Leader = PlayerInfo[playerid][pLeader]; Member = PlayerInfo[para1][pMember]; if(PlayerInfo[playerid][pLeader] >= 1) { if(IsPlayerConnected(para1)) { if(Leader == Member) { if(para1 != INVALID_PLAYER_ID) { new length = strlen(cmdtext); while ((idx < length) && (cmdtext[idx] <= ' ')) { idx++; } new offset = idx; new result[64]; while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; } result[idx - offset] = EOS; if(!strlen(result)) return SendClientMessage(playerid, COLOR_WHITE, "{DDA0DD} >> Введите{FFFFFF}: /uninvite [id] [причина]"); if(para1 == playerid)return SendClientMessage(playerid, COLOR_GREY, "{DB7093} [ошибка]: {D3D3D3} Это ваш ID"); if(PlayerInfo[para1][pLeader] >= 1)return SendClientMessage(playerid, COLOR_GREY, "{DB7093} [ошибка]: {D3D3D3} Это ID лидера"); GetPlayerName(para1, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); format(string, sizeof(string), "Вы выгнали %s Причина: {63B8FF}%s", giveplayer, (result)); SendClientMessage(playerid, 0x6495EDFF, string); format(string, sizeof(string), "%s Выгнал вас. Причина: {63B8FF}%s", sendername, (result)); SendClientMessage(para1, 0x6495EDFF, string); SendClientMessage(para1, COLOR_WHITE, "Теперь ты снова безработный..."); PlayerInfo[para1][pMember] = 0; PlayerInfo[para1][pLeader] = 0; PlayerInfo[para1][pRank] = 0; SetPlayerInterior(para1, 0); PlayerInfo[para1][pInt] = 0; SetPlayerArmorAC(para1,0); Delgun(para1); ResetPlayerWeapons(para1); SpawnPlayer(para1); OnPlayerUpdateRL(para1); } return true; } return true; } return true; } return true; } Для новичков которые не умеют делать пойдет.
  9. SNEEX

    Донат Система

    Хочу представить вашему вниманию систему доната,многие ищут. Приступим! добавляем команду: else if(strcmp(cmd, "/givedonate", true) == 0) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /givedonate [ид] [сумма]"); new playa; new money; playa = ReturnUser(tmp); tmp = strtok(cmdtext, idx); money = strval(tmp); if (PlayerInfo[playerid][pAdmin] >= 7) { if(IsPlayerConnected(playa)) { if(playa != INVALID_PLAYER_ID) { GetPlayerName(playa, sendername, sizeof(sendername)); format(string, sizeof(string), " %d доната игроку %s", money,sendername); SendClientMessage(playerid, COLOR_BLUE, string); PlayerInfo[playa][pDonatemoney] += money; format(string, sizeof(string), "Администратор выдал вам: %d доната", money); SendClientMessage(playa, COLOR_YELLOW, string); } } } else { SendClientMessage(playerid, COLOR_RED, "Вы не уполномочены использовать эту команду!"); } return 1; } else if(strcmp(cmd, "/donate", true) == 0) { new donate[70]; format(donate,70, "{ffffff}У вас {ff0000}%d{ffffff} Donate",PlayerInfo[playerid][pDonatemoney]); ShowPlayerDialog(playerid, 2984, DIALOG_STYLE_LIST, donate, "1.Уволиться[50]n2.Снять мут[50]n3.Снять варн[150]n{ff0000}Получить админку/Пополнить донатn{ff0000}Можно в скайпе {ffffff}dontexxx", "Ok", "Cancel"); } В public OnDialogResponse: case 2984: { if(response == 1) { switch(listitem) { case 0: { if(PlayerInfo[playerid][pDonatemoney]>=50) { if(PlayerInfo[playerid][pMember] > 0 || PlayerInfo[playerid][pLeader] > 0) { PlayerInfo[playerid][pMember] = 0; PlayerInfo[playerid][pRank] = 0; PlayerInfo[playerid][pLeader] = 0; PlayerInfo[playerid][pJob] = 0; SetPlayerArmourAC(playerid,0); SpawnPlayer(playerid); PlayerInfo[playerid][pDonatemoney]-=50; SendClientMessage(playerid,COLOR_BLUE,"Вы успешно уволились из организации"); } else {SendClientMessage(playerid,COLOR_BLUE,"Вы нигде не состоите");} } else {SendClientMessage(playerid,COLOR_BLUE,"У вас нет столько доната!");} } case 1: { if(PlayerInfo[playerid][pDonatemoney]>=50) { if(PlayerInfo[playerid][pMuted] > 0) { PlayerInfo[playerid][pMuted] = 0; PlayerInfo[playerid][pMuteTime] = 0; SendClientMessage(playerid,COLOR_BLUE,"Вы сняли с себя мут"); PlayerInfo[playerid][pDonatemoney]-=50; } else {SendClientMessage(playerid,COLOR_BLUE,"У вас нет бана чата!");} } else {SendClientMessage(playerid,COLOR_BLUE,"У вас нет столько доната!");} } case 2: { if(PlayerInfo[playerid][pDonatemoney]>=150) { if(PlayerInfo[playerid][pWarns] > 0) { PlayerInfo[playerid][pWarns] --; PlayerInfo[playerid][punWarnstime] = 0; PlayerInfo[playerid][punWarns] = 0; SendClientMessage(playerid,COLOR_BLUE,"Вы сняли с себя варн"); PlayerInfo[playerid][pDonatemoney]-=50; } else {SendClientMessage(playerid,COLOR_BLUE,"У вас нет варнов!");} } else {SendClientMessage(playerid,COLOR_BLUE,"У вас нет столько доната!");} } } } } else if(strcmp(cmd, "/moneytodonate", true) == 0) { SendClientMessage(playerid,COLOR_BLUE,"Команда /moneytodonate обменивает 1кк => 100Donate"); if(PlayerInfo[playerid][pCash] >= 1000000) { PlayerInfo[playerid][pCash] -= 1000000; PlayerInfo[playerid][pDonatemoney] += 100; SendClientMessage(playerid,COLOR_BLUE,"Вы обменяли 1кк на 100 очков доната"); } else { SendClientMessage(playerid,COLOR_BLUE,"У вас нету 1кк для обмена на 100 доната"); } } else if(strcmp(cmd, "/donate", true) == 0) { SendClientMessage(playerid,COLOR_BLUE,"Команда /moneytodonate обменивает 1кк => 100Donate"); new donate[70]; format(donate,70, "{ffffff}У вас {ff0000}%d{ffffff} Donate",PlayerInfo[playerid][pDonatemoney]); ShowPlayerDialog(playerid, 2984, DIALOG_STYLE_LIST, donate, "1.Уволиться[50]n2.", "Ok", "Cancel"); } Вот собственно и все.Будут ошибки кидайте помогу исправить.Кому помог + Автор: неизвестный. Автор переделки: Я.
  10. Начнем без вступления. Вставляем все в мод: 1. Массивы для хранения информации: new bool:aduty[MAX_PLAYERS];//Проверка, true-админ на дежурстве, false-нетnew playercolor[MAX_PLAYERS];//Массив с цветом игрока до выхода на дежурство 2. Команда. Вставлять в public OnPlayerCommandText if (strcmp("/aduty", cmdtext, true) == 0) {if(aduty[playerid] == true) {aduty[playerid] = false;SendClientMessage(playerid, 0xFFFF00AA, "Вы ушли с дежурства!"); SetPlayerColor(playerid, playercolor[playerid]);} else {if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFFFF00AA, "Вы не администратор!");//Проверку ставить свою, тут проверка на RCON!!!ShowPlayerDialog(playerid, 9988, DIALOG_STYLE_INPUT, "Введите пароль","Введите пароль для выхода на дежурство","ОК","Отмена");}return true;} 3. Диалог для ввода пароля if(dialogid == 9988){if(response) //Если была нажата 1 кнопка{if(!strlen(inputtext)) //Если в поле не был введен текст при отправке{SendClientMessage(playerid,0xFFFF00AA,"Пароль не был написан!");return 1;}else{new adminpass[64] = "1111";if(strcmp(inputtext, adminpass, false) == 0) {new name[MAX_PLAYER_NAME];GetPlayerName(playerid, name, sizeof(name));new message[55];format(message, sizeof(message), "Администратор %s вышел на дежурство!", name);SendClientMessageToAll(0xFF6347AA, message);playercolor[playerid] = GetPlayerColor(playerid);SetPlayerColor(playerid, 0xFF6347AA);GivePlayerWeapon(playerid, 30, 1000);//ak47aduty[playerid] = true;}else {SendClientMessage(playerid, 0xFFFF00AA, "Пароль не верный!");Kick(playerid);}}}} Ну, вроде все :) Теперь о том, что нужно поменять! Так как я тестил это дело на симпле, менять под свой мод нужно следующее: 1. Проверка на администратора: в данном случае проверка на RCON администратора. Вы ставьте свою 2. Можете поменять выдачу оружия, или вообще ее удалить. 3. Самое главное: пароль. Меняется тут: new adminpass[64] = "1111";. 1111 меняйте на свой! 4. Ну и, если хотите, другие цвета и цветовые модификаторы Чтобы проверить администратора на дежурстве, достаточно приписать проверку: if(aduty[playerid] == false) return SendClientMessage(playerid, -1, "Вы не на дежурстве!"); Автор: Max_Mister
  11. if(strcmp(cmd, "/nomerrus", true) == 0) { new str[128]; tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_ISPOLZUY, "Используйте: /nomer [ид игрока]"); new tmpp=ReturnUser(tmp); if(IsPlayerConnected(tmpp)) { if(!IsPlayerInAnyVehicle(tmpp)) return SendClientMessage(playerid, COLOR_ISPOLZUY, "Игрок Не в Автомобиле"); new carid = GetPlayerVehicleID(tmpp); if(GetRealID(carid) == -1) return SendClientMessage(playerid, COLOR_GRAD2, "Игрок Должен быть в Своём Автомобиле"); if(strcmp(Name(tmpp),CarInfo[GetRealID(carid)][cOwner],true) != 0) return SendClientMessage(playerid, COLOR_ISPOLZUY, "Автомобиль не принадлежит игроку"); if(gTeam[playerid] == 1 || IsACop(playerid)) { if(!CarLabel[carid]) { } else Delete3DTextLabel(CarLabel[carid]); format(CarInfo[GetRealID(carid)][cNumber],64,"{FFFFFF}%s{FFFFFF}%d%d%d{FFFFFF}%s%s |{FFFFFF}R{1500FF}U{FF0000}S",randomchar(), random(9), random(9), random(9), randomchar(), randomchar(), random(9), random(9));// CarLabel[carid] = Create3DTextLabel(CarInfo[GetRealID(carid)][cNumber],0xFFFF00FF,0.0,0.0,0.0,40.0,0,1); Attach3DTextLabelToVehicle(CarLabel[carid] , carid , 0.0, 0.0, 1.1); format(str,sizeof(str),"Вам Выдали Номер %s Полицейский %s",CarInfo[GetRealID(carid)][cNumber],Name(playerid)); SendClientMessage(tmpp,-1,str); format(str,sizeof(str),"Полицейский %s Выдал Номера %s",Name(playerid),CarInfo[GetRealID(carid)][cNumber]); SendAdminMessage(0xFF0000AA,str); SaveCar(GetRealID(carid)); return true; } else return SendClientMessage(playerid, COLOR_GRAD1, "У вас нет прав на это!"); } else return SendClientMessage(playerid, COLOR_GRAD1, "Этого Игрока нет в сети"); } На ваш сервер добавит русские номера, номера выдают Полицейские
  12. Вообщем давно писал функцию мигалок с сохранением , продажей , покупкой , смещением позиций , подобную как на urm , но до конца не доделал возможно позже сделаю. А пока версия что я сделал. Напоминаю только для системы авто game или же сами переделаетеenu В enum carinfo добавим переменную cMiglo, дальше в stock loadcar ini_getInteger(iniOpen, "cMiglo", CarInfo[car][cMiglo]); // отвечает за загрузку . Дальше идем stock savecar и вставляем ini_setInteger(iniOpen, "cMiglo", CarInfo[car][cMiglo]); // отвечает за сохранение при покупке и продаже . Теперь нам надо чтоб мигалка обновлялась значить в stock CreateCar(car) впишем ini_setInteger(iniOpen, "cMiglo", CarInfo[car][cMiglo]); // обновляем мигалку если она . И так половина сделана теперь нам надо сделать проверку на авто , в самый конец добавляем сток stock ProverkaMigla(carid){new model = GetVehicleModel(carid);////////////////////////Все херня////////////////////////////if( model==592||model==577||model==511||model==512||model==593||model==520||model==553||model==476||model==519||model==460||model==513||model==548||model==425||model==417||model==487||model==488||model==497||model==563||model==447||model==509||model==481||model==510||model==462||model==448||model==581||model==522||model==461||model==521||model==523||model==463||model==586||model==468||model==471||model==523||model==416||model==433||model==431||model==438||model==437||model==416||model==433||model==431||model==438||model==437||model==427||model==490||model==528||model==407||model==544||model==596||model==598||model==597||model==599||model==432||model==601||model==420||model==472||model==473||model==493||model==595||model==484||model==430||model==453||model==452||model==446||model==454||model==406||model==409||model==423||model==428||model==434||model==435||model==441||model==442||model==449||model==450||model==457||model==464||model==465||model==483||model==485||model==486||model==501||model==508||model==525||model==530||model==532||model==537||model==538||model==539||model==545||model==564||model==569||model==570||model==571||model==572||model==574||model==583||model==584||model==588||model==590||model==591||model==594||model==606||model==607||model==608||model==610||model==611||model==604||model==462||model==568||model==573||model==578||model==582||model==605||model==609||model==403||model==406||model==408||model==413||model==414||model==418||model==418||model==440||model==444||model==455||model==456||model==459||model==470||model==478||model==482||model==498||model==499||model==514||model==515||model==515||model==531||model==552){return true;}return false;} и так остались команды приступим. в Public OnplayerCommand добавляем if(strcmp("/migla", cmdtext, true, 10) == 0){new v = GetPlayerVehicleID(playerid);new cars = GetPlayerVehicleID(playerid);if(GetRealID(v) == -1) return SendClientMessage(playerid, COLOR_GRAD2, "Вы должны быть в своём автомобиле");if(CarInfo[v][cMiglo] == 0) return SendClientMessage(playerid, COLOR_RED, "У вас нету мигалки");SendClientMessage(playerid, COLOR_RED, "Вы поставили мигалку на крышу");migalka[cars] = CreateObject(18646, 0, 0, 0, 0, 0, 0);AttachObjectToVehicle(migalka[cars],v, 0.009999, -0.019999, 0.944999, 0.000000, 0.000000, 0.000000);return 1;}if (strcmp("/miglaoff", cmdtext, true, 10) == 0){new cars = GetPlayerVehicleID(playerid);DestroyObject(migalka[cars]);return 1;}//------------------------------------------------------------------------------if(strcmp(cmdtext, "/buymiglo", true)==0){new cars = GetPlayerVehicleID(playerid);if(GetRealID(cars) == -1) return SendClientMessage(playerid, COLOR_GRAD2, "Вы не в своем авто");if(ProverkaMigla(cars)) return SendClientMessage(playerid, 0xF6CB00AA, "На этот транспорт мигалка не предусмотрена");if(CarInfo[cars][cMiglo] == 1) return SendClientMessage(playerid, COLOR_RED, "У вас уже есть мигалка");GiveMoney(playerid,-1500);CarInfo[cars][cMiglo] = 1;SendClientMessage(playerid, COLOR_RED, "Вы купили себе мигалку");return 1;}if(strcmp(cmdtext, "/sellmiglo", true)==0){new cars = GetPlayerVehicleID(playerid);if(GetRealID(cars) == -1) return SendClientMessage(playerid, COLOR_GRAD2, "Вы не в своем авто");if(NenadoLustru(cars)) return SendClientMessage(playerid, 0xF6CB00AA, "На этот транспорт мигалка не предусмотрен");if(CarInfo[cars][cMiglo] == 0) return SendClientMessage(playerid, COLOR_RED, "У вас нет мигалки");GiveMoney(playerid,1500);CarInfo[cars][cMiglo] = 0;SendClientMessage(playerid, COLOR_RED, "Вы успешно продали мигалку");return 1;}if(strcmp(cmd, "/setmigla", true) == 0){if(IsPlayerInAnyVehicle(playerid)){tmp = strtok(cmdtext, idx);if(!strlen(tmp)){SendClientMessage(playerid, COLOR_WHITE, "Введите: /setmigla [X] [Y] [Z]");return 1;}tmp = strtok(cmdtext, idx);new koordx;koordx = strval(tmp);tmp = strtok(cmdtext, idx);new koordy;koordy = strval(tmp);tmp = strtok(cmdtext, idx);new koordz;koordz = strval(tmp);new cars = GetPlayerVehicleID(playerid);DestroyObject(migalka[cars]);new carid = GetPlayerVehicleID(playerid);migalka[cars] = CreateObject(18646,0,0,0,0,0,0,0.0);AttachObjectToVehicle(migalka[cars],carid,koordx,koordy,koordz, 0.0, 0.0, 0.0);return 1;}} вот собственно и все , в следующее версий если буду делать то сделаю , сохранение статуса мигалки , то есть если вы включили и произошел рестарт то она будет создана после рестарта и включена как и было и также аналагично выключена. И еще сохранение места позиций , ну а пока вот держите.Автор: Я( Komendant) P.s в следующее версий оптимизирую некоторые стоки и коды.
  13. Всем привет, с вами Skorpionss (Руслан). В этом небольшом уроке я покажу как изменить скин при входе/регистрации на сервере. Примером нам послужит мод: Gamer. И так, приступим. 1. Ищем паблик:public SetPlayerSpawn(playerid) 2. Там у нас будет много всячины..., открываем поиск и вводим в него: [1. Вариант]: "спавн южный" [2. Вариант]: "if(PlayerInfo[playerid][pOrigin] " Далее ... 3. У вас появится код со спавном и т.д " Что мы делаем дальше? " После функции: " SetPlayerFacingAngle(playerid, 185.4226); " Вставляем функцию: " SetPlayerSkin(playerid, 24); " Поясняю : " 24 в фунции, это ID скина, меняете на свой " С вами был Руслан, если что не понятно? Пишите.
  14. John_Smith

    Ставим ворота.

    И так начнем: Ко всем new's: new opengate; В public OnGameModeInit(): opengate = CreateObject(980,935.29998779297,-836.20001220703,96.5,0,0,0);А это в public OnPlayerCommandText: if(strcmp("/open", cmd, true) == 0) { new open[MAX_PLAYERS]; if(open[playerid] == 0) // Проверяем закрыты ли ворота { MoveObject(opengate,935.29998779297,-836.20001220703,96.5,10); // Открываем ворота open[playerid] = 1; // Устанавливаем значение открытых ворот } if(open[playerid] == 1) // Проверяем открыты ли ворота { MoveObject(opengate,935.29998779297,-831.90002441406,96.5,10); // Закрываем ворота open[playerid] = 0; // Устанавливаем значение закрытых ворот } return 1; } Внимание! Координаты ставим свои! Автор: A.Volovnik
  15. Всем привет! Это не система инвентаря , а только TextDraw с открытием и закрытием... Открыть на "H" PHP код: new Text:RakNetCopy[84];в public OnGameModeInitPHP код: RakNetCopy[0] = TextDrawCreate(230.000000, 120.000000, "_"); TextDrawBackgroundColor(RakNetCopy[0], 255); TextDrawFont(RakNetCopy[0], 1); TextDrawLetterSize(RakNetCopy[0], 0.500000, 34.199996); TextDrawColor(RakNetCopy[0], -1); TextDrawSetOutline(RakNetCopy[0], 0); TextDrawSetProportional(RakNetCopy[0], 1); TextDrawSetShadow(RakNetCopy[0], 1); TextDrawUseBox(RakNetCopy[0], 1); TextDrawBoxColor(RakNetCopy[0], 255); TextDrawTextSize(RakNetCopy[0], 30.000000, 0.000000); TextDrawSetSelectable(RakNetCopy[0], 0); RakNetCopy[1] = TextDrawCreate(610.000000, 120.000000, "_"); TextDrawBackgroundColor(RakNetCopy[1], 255); TextDrawFont(RakNetCopy[1], 1); TextDrawLetterSize(RakNetCopy[1], 0.500000, 34.299995); TextDrawColor(RakNetCopy[1], -1); TextDrawSetOutline(RakNetCopy[1], 0); TextDrawSetProportional(RakNetCopy[1], 1); TextDrawSetShadow(RakNetCopy[1], 1); TextDrawUseBox(RakNetCopy[1], 1); TextDrawBoxColor(RakNetCopy[1], 255); TextDrawTextSize(RakNetCopy[1], 410.000000, 0.000000); TextDrawSetSelectable(RakNetCopy[1], 0); RakNetCopy[2] = TextDrawCreate(220.000000, 329.000000, "_"); TextDrawBackgroundColor(RakNetCopy[2], 255); TextDrawFont(RakNetCopy[2], 1); TextDrawLetterSize(RakNetCopy[2], 0.500000, 8.500000); TextDrawColor(RakNetCopy[2], -1); TextDrawSetOutline(RakNetCopy[2], 0); TextDrawSetProportional(RakNetCopy[2], 1); TextDrawSetShadow(RakNetCopy[2], 1); TextDrawUseBox(RakNetCopy[2], 1); TextDrawBoxColor(RakNetCopy[2], 0x38917fff); TextDrawTextSize(RakNetCopy[2], 40.000000, 0.000000); TextDrawSetSelectable(RakNetCopy[2], 0); RakNetCopy[3] = TextDrawCreate(170.000000, 411.000000, "_"); TextDrawBackgroundColor(RakNetCopy[3], 255); TextDrawFont(RakNetCopy[3], 1); TextDrawLetterSize(RakNetCopy[3], 0.500000, 1.500000); TextDrawColor(RakNetCopy[3], -1); TextDrawSetOutline(RakNetCopy[3], 0); TextDrawSetProportional(RakNetCopy[3], 1); TextDrawSetShadow(RakNetCopy[3], 1); TextDrawUseBox(RakNetCopy[3], 1); TextDrawBoxColor(RakNetCopy[3], 0x38917fff); TextDrawTextSize(RakNetCopy[3], 90.000000, 0.000000); TextDrawSetSelectable(RakNetCopy[3], 0); RakNetCopy[4] = TextDrawCreate(480.000000, 410.000000, "_"); TextDrawBackgroundColor(RakNetCopy[4], 255); TextDrawFont(RakNetCopy[4], 1); TextDrawLetterSize(RakNetCopy[4], 0.500000, 1.500000); TextDrawColor(RakNetCopy[4], -1); TextDrawSetOutline(RakNetCopy[4], 0); TextDrawSetProportional(RakNetCopy[4], 1); TextDrawSetShadow(RakNetCopy[4], 1); TextDrawUseBox(RakNetCopy[4], 1); TextDrawBoxColor(RakNetCopy[4], 0x38917fff); TextDrawTextSize(RakNetCopy[4], 415.000000, 0.000000); TextDrawSetSelectable(RakNetCopy[4], 0); RakNetCopy[5] = TextDrawCreate(540.000000, 410.000000, "_"); TextDrawBackgroundColor(RakNetCopy[5], 255); TextDrawFont(RakNetCopy[5], 1); TextDrawLetterSize(RakNetCopy[5], 0.500000, 1.500000); TextDrawColor(RakNetCopy[5], -1); TextDrawSetOutline(RakNetCopy[5], 0); TextDrawSetProportional(RakNetCopy[5], 1); TextDrawSetShadow(RakNetCopy[5], 1); TextDrawUseBox(RakNetCopy[5], 1); TextDrawBoxColor(RakNetCopy[5], 0x38917fff); TextDrawTextSize(RakNetCopy[5], 478.000000, 0.000000); TextDrawSetSelectable(RakNetCopy[5], 0); RakNetCopy[6] = TextDrawCreate(583.000000, 410.000000, "_"); TextDrawBackgroundColor(RakNetCopy[6], 255); TextDrawFont(RakNetCopy[6], 1); TextDrawLetterSize(RakNetCopy[6], 0.500000, 1.500000); TextDrawColor(RakNetCopy[6], -1); TextDrawSetOutline(RakNetCopy[6], 0); TextDrawSetProportional(RakNetCopy[6], 1); TextDrawSetShadow(RakNetCopy[6], 1); TextDrawUseBox(RakNetCopy[6], 1); TextDrawBoxColor(RakNetCopy[6], 0x38917fff); TextDrawTextSize(RakNetCopy[6], 558.000000, 0.000000); TextDrawSetSelectable(RakNetCopy[6], 0); RakNetCopy[7] = TextDrawCreate(605.000000, 410.000000, "_"); TextDrawBackgroundColor(RakNetCopy[7], 255); TextDrawFont(RakNetCopy[7], 1); TextDrawLetterSize(RakNetCopy[7], 0.500000, 1.500000); TextDrawColor(RakNetCopy[7], -1); TextDrawSetOutline(RakNetCopy[7], 0); TextDrawSetProportional(RakNetCopy[7], 1); TextDrawSetShadow(RakNetCopy[7], 1); TextDrawUseBox(RakNetCopy[7], 1); TextDrawBoxColor(RakNetCopy[7], 0x38917fff); TextDrawTextSize(RakNetCopy[7], 581.000000, 0.000000); TextDrawSetSelectable(RakNetCopy[7], 0); RakNetCopy[8] = TextDrawCreate(542.000000, 126.000000, "_"); TextDrawBackgroundColor(RakNetCopy[8], 255); TextDrawFont(RakNetCopy[8], 1); TextDrawLetterSize(RakNetCopy[8], 0.500000, 1.500000); TextDrawColor(RakNetCopy[8], -1); TextDrawSetOutline(RakNetCopy[8], 0); TextDrawSetProportional(RakNetCopy[8], 1); TextDrawSetShadow(RakNetCopy[8], 1); TextDrawUseBox(RakNetCopy[8], 1); TextDrawBoxColor(RakNetCopy[8], 0x38917fff); TextDrawTextSize(RakNetCopy[8], 478.000000, 0.000000); TextDrawSetSelectable(RakNetCopy[8], 0); RakNetCopy[9] = TextDrawCreate(605.000000, 126.000000, "_"); TextDrawBackgroundColor(RakNetCopy[9], 255); TextDrawFont(RakNetCopy[9], 1); TextDrawLetterSize(RakNetCopy[9], 0.500000, 1.500000); TextDrawColor(RakNetCopy[9], -1); TextDrawSetOutline(RakNetCopy[9], 0); TextDrawSetProportional(RakNetCopy[9], 1); TextDrawSetShadow(RakNetCopy[9], 1); TextDrawUseBox(RakNetCopy[9], 1); TextDrawBoxColor(RakNetCopy[9], 0x38917fff); TextDrawTextSize(RakNetCopy[9], 542.000000, 0.000000); TextDrawSetSelectable(RakNetCopy[9], 0); RakNetCopy[10] = TextDrawCreate(478.000000, 126.000000, "_"); TextDrawBackgroundColor(RakNetCopy[10], 255); TextDrawFont(RakNetCopy[10], 1); TextDrawLetterSize(RakNetCopy[10], 0.500000, 1.500000); TextDrawColor(RakNetCopy[10], -1); TextDrawSetOutline(RakNetCopy[10], 0); TextDrawSetProportional(RakNetCopy[10], 1); TextDrawSetShadow(RakNetCopy[10], 1); TextDrawUseBox(RakNetCopy[10], 1); TextDrawBoxColor(RakNetCopy[10], 0x38917fff); TextDrawTextSize(RakNetCopy[10], 415.000000, 0.000000); TextDrawSetSelectable(RakNetCopy[10], 0); RakNetCopy[11] = TextDrawCreate(478.000000, 147.000000, "_"); TextDrawBackgroundColor(RakNetCopy[11], 255); TextDrawFont(RakNetCopy[11], 1); TextDrawLetterSize(RakNetCopy[11], 0.500000, 1.500000); TextDrawColor(RakNetCopy[11], -1); TextDrawSetOutline(RakNetCopy[11], 0); TextDrawSetProportional(RakNetCopy[11], 1); TextDrawSetShadow(RakNetCopy[11], 1); TextDrawUseBox(RakNetCopy[11], 1); TextDrawBoxColor(RakNetCopy[11], 0x38917fff); TextDrawTextSize(RakNetCopy[11], 415.000000, 0.000000); TextDrawSetSelectable(RakNetCopy[11], 0); RakNetCopy[12] = TextDrawCreate(542.000000, 147.000000, "_"); TextDrawBackgroundColor(RakNetCopy[12], 255); TextDrawFont(RakNetCopy[12], 1); TextDrawLetterSize(RakNetCopy[12], 0.500000, 1.500000); TextDrawColor(RakNetCopy[12], -1); TextDrawSetOutline(RakNetCopy[12], 0); TextDrawSetProportional(RakNetCopy[12], 1); TextDrawSetShadow(RakNetCopy[12], 1); TextDrawUseBox(RakNetCopy[12], 1); TextDrawBoxColor(RakNetCopy[12], 0x38917fff); TextDrawTextSize(RakNetCopy[12], 478.000000, 0.000000); TextDrawSetSelectable(RakNetCopy[12], 0); RakNetCopy[13] = TextDrawCreate(605.000000, 147.000000, "_"); TextDrawBackgroundColor(RakNetCopy[13], 255); TextDrawFont(RakNetCopy[13], 1); TextDrawLetterSize(RakNetCopy[13], 0.500000, 1.500000); TextDrawColor(RakNetCopy[13], -1); TextDrawSetOutline(RakNetCopy[13], 0); TextDrawSetProportional(RakNetCopy[13], 1); TextDrawSetShadow(RakNetCopy[13], 1); TextDrawUseBox(RakNetCopy[13], 1); TextDrawBoxColor(RakNetCopy[13], 0x38917fff); TextDrawTextSize(RakNetCopy[13], 542.000000, 0.000000); TextDrawSetSelectable(RakNetCopy[13], 0); RakNetCopy[14] = TextDrawCreate(605.000000, 171.000000, "_"); TextDrawBackgroundColor(RakNetCopy[14], 255); TextDrawFont(RakNetCopy[14], 1); TextDrawLetterSize(RakNetCopy[14], 0.500000, 24.900000); TextDrawColor(RakNetCopy[14], -1); TextDrawSetOutline(RakNetCopy[14], 0); TextDrawSetProportional(RakNetCopy[14], 1); TextDrawSetShadow(RakNetCopy[14], 1); TextDrawUseBox(RakNetCopy[14], 1); TextDrawBoxColor(RakNetCopy[14], 0x38917fff); TextDrawTextSize(RakNetCopy[14], 415.000000, 0.000000); TextDrawSetSelectable(RakNetCopy[14], 0); RakNetCopy[15] = TextDrawCreate(105.000000, 411.000000, "CRAFT"); TextDrawBackgroundColor(RakNetCopy[15], 255); TextDrawFont(RakNetCopy[15], 1); TextDrawLetterSize(RakNetCopy[15], 0.519999, 1.299999); TextDrawColor(RakNetCopy[15], -1); TextDrawSetOutline(RakNetCopy[15], 0); TextDrawSetProportional(RakNetCopy[15], 1); TextDrawTextSize(RakNetCopy[15], 150.000000, 18.000000); TextDrawSetShadow(RakNetCopy[15], 1); TextDrawSetSelectable(RakNetCopy[15], 1); RakNetCopy[16] = TextDrawCreate(427.000000, 410.000000, "DROP"); TextDrawBackgroundColor(RakNetCopy[16], 255); TextDrawFont(RakNetCopy[16], 1); TextDrawLetterSize(RakNetCopy[16], 0.519999, 1.299999); TextDrawColor(RakNetCopy[16], -1); TextDrawSetOutline(RakNetCopy[16], 0); TextDrawSetProportional(RakNetCopy[16], 1); TextDrawTextSize(RakNetCopy[16], 470.000000, 18.000000); TextDrawSetShadow(RakNetCopy[16], 1); TextDrawSetSelectable(RakNetCopy[16], 1); RakNetCopy[17] = TextDrawCreate(484.000000, 410.000000, "DELETE"); TextDrawBackgroundColor(RakNetCopy[17], 255); TextDrawFont(RakNetCopy[17], 1); TextDrawLetterSize(RakNetCopy[17], 0.479999, 1.299999); TextDrawColor(RakNetCopy[17], -1); TextDrawSetOutline(RakNetCopy[17], 0); TextDrawSetProportional(RakNetCopy[17], 1); TextDrawTextSize(RakNetCopy[17], 530.000000, 18.000000); TextDrawSetShadow(RakNetCopy[17], 1); TextDrawSetSelectable(RakNetCopy[17], 1); RakNetCopy[18] = TextDrawCreate(569.000000, 410.000000, "i"); TextDrawBackgroundColor(RakNetCopy[18], 255); TextDrawFont(RakNetCopy[18], 1); TextDrawLetterSize(RakNetCopy[18], 0.479999, 1.299999); TextDrawColor(RakNetCopy[18], -1); TextDrawSetOutline(RakNetCopy[18], 0); TextDrawSetProportional(RakNetCopy[18], 1); TextDrawTextSize(RakNetCopy[18], 580.000000, 11.000000); TextDrawSetShadow(RakNetCopy[18], 1); TextDrawSetSelectable(RakNetCopy[18], 1); RakNetCopy[19] = TextDrawCreate(588.000000, 410.000000, "X"); TextDrawBackgroundColor(RakNetCopy[19], 255); TextDrawFont(RakNetCopy[19], 1); TextDrawLetterSize(RakNetCopy[19], 0.479999, 1.299999); TextDrawColor(RakNetCopy[19], -1); TextDrawSetOutline(RakNetCopy[19], 0); TextDrawSetProportional(RakNetCopy[19], 1); TextDrawTextSize(RakNetCopy[19], 600.000000, 12.000000); TextDrawSetShadow(RakNetCopy[19], 1); TextDrawSetSelectable(RakNetCopy[19], 1); RakNetCopy[20] = TextDrawCreate(429.000000, 127.000000, "GIVE"); TextDrawBackgroundColor(RakNetCopy[20], 255); TextDrawFont(RakNetCopy[20], 1); TextDrawLetterSize(RakNetCopy[20], 0.479999, 1.299999); TextDrawColor(RakNetCopy[20], -1); TextDrawSetOutline(RakNetCopy[20], 0); TextDrawSetProportional(RakNetCopy[20], 1); TextDrawTextSize(RakNetCopy[20], 465.000000, 18.000000); TextDrawSetShadow(RakNetCopy[20], 1); TextDrawSetSelectable(RakNetCopy[20], 1); RakNetCopy[21] = TextDrawCreate(497.000000, 127.000000, "BUY"); TextDrawBackgroundColor(RakNetCopy[21], 255); TextDrawFont(RakNetCopy[21], 1); TextDrawLetterSize(RakNetCopy[21], 0.479999, 1.299999); TextDrawColor(RakNetCopy[21], -1); TextDrawSetOutline(RakNetCopy[21], 0); TextDrawSetProportional(RakNetCopy[21], 1); TextDrawTextSize(RakNetCopy[21], 530.000000, 18.000000); TextDrawSetShadow(RakNetCopy[21], 1); TextDrawSetSelectable(RakNetCopy[21], 1); RakNetCopy[22] = TextDrawCreate(557.000000, 127.000000, "SELL"); TextDrawBackgroundColor(RakNetCopy[22], 255); TextDrawFont(RakNetCopy[22], 1); TextDrawLetterSize(RakNetCopy[22], 0.479999, 1.299999); TextDrawColor(RakNetCopy[22], -1); TextDrawSetOutline(RakNetCopy[22], 0); TextDrawSetProportional(RakNetCopy[22], 1); TextDrawTextSize(RakNetCopy[22], 580.000000, 18.000000); TextDrawSetShadow(RakNetCopy[22], 1); TextDrawSetSelectable(RakNetCopy[22], 1); RakNetCopy[23] = TextDrawCreate(435.000000, 147.000000, "INV"); TextDrawBackgroundColor(RakNetCopy[23], 255); TextDrawFont(RakNetCopy[23], 1); TextDrawLetterSize(RakNetCopy[23], 0.479999, 1.299999); TextDrawColor(RakNetCopy[23], -1); TextDrawSetOutline(RakNetCopy[23], 0); TextDrawSetProportional(RakNetCopy[23], 1); TextDrawTextSize(RakNetCopy[23], 470.000000, 18.000000); TextDrawSetShadow(RakNetCopy[23], 1); TextDrawSetSelectable(RakNetCopy[23], 1); RakNetCopy[24] = TextDrawCreate(495.000000, 147.000000, "CAR"); TextDrawBackgroundColor(RakNetCopy[24], 255); TextDrawFont(RakNetCopy[24], 1); TextDrawLetterSize(RakNetCopy[24], 0.479999, 1.299999); TextDrawColor(RakNetCopy[24], -1); TextDrawSetOutline(RakNetCopy[24], 0); TextDrawSetProportional(RakNetCopy[24], 1); TextDrawTextSize(RakNetCopy[24], 530.000000, 18.000000); TextDrawSetShadow(RakNetCopy[24], 1); TextDrawSetSelectable(RakNetCopy[24], 1); RakNetCopy[25] = TextDrawCreate(549.000000, 147.000000, "HOUSE"); TextDrawBackgroundColor(RakNetCopy[25], 255); TextDrawFont(RakNetCopy[25], 1); TextDrawLetterSize(RakNetCopy[25], 0.479999, 1.299999); TextDrawColor(RakNetCopy[25], -1); TextDrawSetOutline(RakNetCopy[25], 0); TextDrawSetProportional(RakNetCopy[25], 1); TextDrawTextSize(RakNetCopy[25], 580.000000, 18.000000); TextDrawSetShadow(RakNetCopy[25], 1); TextDrawSetSelectable(RakNetCopy[25], 1); RakNetCopy[26] = TextDrawCreate(191.000000, 130.000000, "_"); TextDrawAlignment(RakNetCopy[26], 2); TextDrawBackgroundColor(RakNetCopy[26], 255); TextDrawFont(RakNetCopy[26], 5); TextDrawLetterSize(RakNetCopy[26], -0.099999, -0.400000); TextDrawColor(RakNetCopy[26], -1); TextDrawSetOutline(RakNetCopy[26], 0); TextDrawSetProportional(RakNetCopy[26], 0); TextDrawSetShadow(RakNetCopy[26], 1); TextDrawUseBox(RakNetCopy[26], 1); TextDrawBoxColor(RakNetCopy[26], -1); TextDrawTextSize(RakNetCopy[26], 29.000000, 30.000000); TextDrawSetPreviewModel(RakNetCopy[26], 19461); TextDrawSetPreviewRot(RakNetCopy[26], -16.000000, 0.000000, -55.000000, 0.100000); TextDrawSetSelectable(RakNetCopy[26], 1); RakNetCopy[27] = TextDrawCreate(191.000000, 174.000000, "_"); TextDrawAlignment(RakNetCopy[27], 2); TextDrawBackgroundColor(RakNetCopy[27], 255); TextDrawFont(RakNetCopy[27], 5); TextDrawLetterSize(RakNetCopy[27], -0.099999, -0.400000); TextDrawColor(RakNetCopy[27], -1); TextDrawSetOutline(RakNetCopy[27], 0); TextDrawSetProportional(RakNetCopy[27], 0); TextDrawSetShadow(RakNetCopy[27], 1); TextDrawUseBox(RakNetCopy[27], 1); TextDrawBoxColor(RakNetCopy[27], -1); TextDrawTextSize(RakNetCopy[27], 29.000000, 30.000000); TextDrawSetPreviewModel(RakNetCopy[27], 19461); TextDrawSetPreviewRot(RakNetCopy[27], -16.000000, 0.000000, -55.000000, 0.100000); TextDrawSetSelectable(RakNetCopy[27], 1); RakNetCopy[28] = TextDrawCreate(191.000000, 221.000000, "_"); TextDrawAlignment(RakNetCopy[28], 2); TextDrawBackgroundColor(RakNetCopy[28], 255); TextDrawFont(RakNetCopy[28], 5); TextDrawLetterSize(RakNetCopy[28], -0.099999, -0.400000); TextDrawColor(RakNetCopy[28], -1); TextDrawSetOutline(RakNetCopy[28], 0); TextDrawSetProportional(RakNetCopy[28], 0); TextDrawSetShadow(RakNetCopy[28], 1); TextDrawUseBox(RakNetCopy[28], 1); TextDrawBoxColor(RakNetCopy[28], -1); TextDrawTextSize(RakNetCopy[28], 29.000000, 30.000000); TextDrawSetPreviewModel(RakNetCopy[28], 19461); TextDrawSetPreviewRot(RakNetCopy[28], -16.000000, 0.000000, -55.000000, 0.100000); TextDrawSetSelectable(RakNetCopy[28], 1); RakNetCopy[29] = TextDrawCreate(41.000000, 220.000000, "_"); TextDrawAlignment(RakNetCopy[29], 2); TextDrawBackgroundColor(RakNetCopy[29], 255); TextDrawFont(RakNetCopy[29], 5); TextDrawLetterSize(RakNetCopy[29], -0.099999, -0.400000); TextDrawColor(RakNetCopy[29], -1); TextDrawSetOutline(RakNetCopy[29], 0); TextDrawSetProportional(RakNetCopy[29], 0); TextDrawSetShadow(RakNetCopy[29], 1); TextDrawUseBox(RakNetCopy[29], 1); TextDrawBoxColor(RakNetCopy[29], -1); TextDrawTextSize(RakNetCopy[29], 29.000000, 30.000000); TextDrawSetPreviewModel(RakNetCopy[29], 19461); TextDrawSetPreviewRot(RakNetCopy[29], -16.000000, 0.000000, -55.000000, 0.100000); TextDrawSetSelectable(RakNetCopy[29], 1); RakNetCopy[30] = TextDrawCreate(41.000000, 174.000000, "_"); TextDrawAlignment(RakNetCopy[30], 2); TextDrawBackgroundColor(RakNetCopy[30], 255); TextDrawFont(RakNetCopy[30], 5); TextDrawLetterSize(RakNetCopy[30], -0.099999, -0.400000); TextDrawColor(RakNetCopy[30], -1); TextDrawSetOutline(RakNetCopy[30], 0); TextDrawSetProportional(RakNetCopy[30], 0); TextDrawSetShadow(RakNetCopy[30], 1); TextDrawUseBox(RakNetCopy[30], 1); TextDrawBoxColor(RakNetCopy[30], -1); TextDrawTextSize(RakNetCopy[30], 29.000000, 30.000000); TextDrawSetPreviewModel(RakNetCopy[30], 19461); TextDrawSetPreviewRot(RakNetCopy[30], -16.000000, 0.000000, -55.000000, 0.100000); TextDrawSetSelectable(RakNetCopy[30], 1); RakNetCopy[31] = TextDrawCreate(41.000000, 130.000000, "_"); TextDrawAlignment(RakNetCopy[31], 2); TextDrawBackgroundColor(RakNetCopy[31], 255); TextDrawFont(RakNetCopy[31], 5); TextDrawLetterSize(RakNetCopy[31], -0.099999, -0.400000); TextDrawColor(RakNetCopy[31], -1); TextDrawSetOutline(RakNetCopy[31], 0); TextDrawSetProportional(RakNetCopy[31], 0); TextDrawSetShadow(RakNetCopy[31], 1); TextDrawUseBox(RakNetCopy[31], 1); TextDrawBoxColor(RakNetCopy[31], -1); TextDrawTextSize(RakNetCopy[31], 29.000000, 30.000000); TextDrawSetPreviewModel(RakNetCopy[31], 19461); TextDrawSetPreviewRot(RakNetCopy[31], -16.000000, 0.000000, -55.000000, 0.100000); TextDrawSetSelectable(RakNetCopy[31], 1); RakNetCopy[32] = TextDrawCreate(83.000000, 130.000000, "_"); TextDrawAlignment(RakNetCopy[32], 2); TextDrawBackgroundColor(RakNetCopy[32], 0x38917fff); TextDrawFont(RakNetCopy[32], 5); TextDrawLetterSize(RakNetCopy[32], -0.099999, -0.400000); TextDrawColor(RakNetCopy[32], -1); TextDrawSetOutline(RakNetCopy[32], 0); TextDrawSetProportional(RakNetCopy[32], 0); TextDrawSetShadow(RakNetCopy[32], 1); TextDrawUseBox(RakNetCopy[32], 1); TextDrawBoxColor(RakNetCopy[32], 255); TextDrawTextSize(RakNetCopy[32], 97.000000, 120.000000); TextDrawSetPreviewModel(RakNetCopy[32], 0); TextDrawSetPreviewRot(RakNetCopy[32], 0.000000, 0.000000, 0.000000, 1.000000); TextDrawSetSelectable(RakNetCopy[32], 1); RakNetCopy[33] = TextDrawCreate(83.000000, 260.000000, "_"); TextDrawAlignment(RakNetCopy[33], 2); TextDrawBackgroundColor(RakNetCopy[33], 255); TextDrawFont(RakNetCopy[33], 5); TextDrawLetterSize(RakNetCopy[33], -0.099999, -0.400000); TextDrawColor(RakNetCopy[33], -1); TextDrawSetOutline(RakNetCopy[33], 0); TextDrawSetProportional(RakNetCopy[33], 0); TextDrawSetShadow(RakNetCopy[33], 1); TextDrawUseBox(RakNetCopy[33], 1); TextDrawBoxColor(RakNetCopy[33], -1); TextDrawTextSize(RakNetCopy[33], 29.000000, 30.000000); TextDrawSetPreviewModel(RakNetCopy[33], 19461); TextDrawSetPreviewRot(RakNetCopy[33], -16.000000, 0.000000, -55.000000, 0.100000); TextDrawSetSelectable(RakNetCopy[33], 1); RakNetCopy[34] = TextDrawCreate(117.000000, 260.000000, "_"); TextDrawAlignment(RakNetCopy[34], 2); TextDrawBackgroundColor(RakNetCopy[34], 255); TextDrawFont(RakNetCopy[34], 5); TextDrawLetterSize(RakNetCopy[34], -0.099999, -0.400000); TextDrawColor(RakNetCopy[34], -1); TextDrawSetOutline(RakNetCopy[34], 0); TextDrawSetProportional(RakNetCopy[34], 0); TextDrawSetShadow(RakNetCopy[34], 1); TextDrawUseBox(RakNetCopy[34], 1); TextDrawBoxColor(RakNetCopy[34], -1); TextDrawTextSize(RakNetCopy[34], 29.000000, 30.000000); TextDrawSetPreviewModel(RakNetCopy[34], 19461); TextDrawSetPreviewRot(RakNetCopy[34], -16.000000, 0.000000, -55.000000, 0.100000); TextDrawSetSelectable(RakNetCopy[34], 1); RakNetCopy[35] = TextDrawCreate(151.000000, 260.000000, "_"); TextDrawAlignment(RakNetCopy[35], 2); TextDrawBackgroundColor(RakNetCopy[35], 255); TextDrawFont(RakNetCopy[35], 5); TextDrawLetterSize(RakNetCopy[35], -0.099999, -0.400000); TextDrawColor(RakNetCopy[35], -1); TextDrawSetOutline(RakNetCopy[35], 0); TextDrawSetProportional(RakNetCopy[35], 0); TextDrawSetShadow(RakNetCopy[35], 1); TextDrawUseBox(RakNetCopy[35], 1); TextDrawBoxColor(RakNetCopy[35], -1); TextDrawTextSize(RakNetCopy[35], 29.000000, 30.000000); TextDrawSetPreviewModel(RakNetCopy[35], 19461); TextDrawSetPreviewRot(RakNetCopy[35], -16.000000, 0.000000, -55.000000, 0.100000); TextDrawSetSelectable(RakNetCopy[35], 1); RakNetCopy[36] = TextDrawCreate(151.000000, 292.000000, "_"); TextDrawAlignment(RakNetCopy[36], 2); TextDrawBackgroundColor(RakNetCopy[36], 255); TextDrawFont(RakNetCopy[36], 5); TextDrawLetterSize(RakNetCopy[36], -0.099999, -0.400000); TextDrawColor(RakNetCopy[36], -1); TextDrawSetOutline(RakNetCopy[36], 0); TextDrawSetProportional(RakNetCopy[36], 0); TextDrawSetShadow(RakNetCopy[36], 1); TextDrawUseBox(RakNetCopy[36], 1); TextDrawBoxColor(RakNetCopy[36], -1); TextDrawTextSize(RakNetCopy[36], 29.000000, 30.000000); TextDrawSetPreviewModel(RakNetCopy[36], 19461); TextDrawSetPreviewRot(RakNetCopy[36], -16.000000, 0.000000, -55.000000, 0.100000); TextDrawSetSelectable(RakNetCopy[36], 1); RakNetCopy[37] = TextDrawCreate(117.000000, 292.000000, "_"); TextDrawAlignment(RakNetCopy[37], 2); TextDrawBackgroundColor(RakNetCopy[37], 255); TextDrawFont(RakNetCopy[37], 5); TextDrawLetterSize(RakNetCopy[37], -0.099999, -0.400000); TextDrawColor(RakNetCopy[37], -1); TextDrawSetOutline(RakNetCopy[37], 0); TextDrawSetProportional(RakNetCopy[37], 0); TextDrawSetShadow(RakNetCopy[37], 1); TextDrawUseBox(RakNetCopy[37], 1); TextDrawBoxColor(RakNetCopy[37], -1); TextDrawTextSize(RakNetCopy[37], 29.000000, 30.000000); TextDrawSetPreviewModel(RakNetCopy[37], 19461); TextDrawSetPreviewRot(RakNetCopy[37], -16.000000, 0.000000, -55.000000, 0.100000); TextDrawSetSelectable(RakNetCopy[37], 1); RakNetCopy[38] = TextDrawCreate(83.000000, 292.000000, "_"); TextDrawAlignment(RakNetCopy[38], 2); TextDrawBackgroundColor(RakNetCopy[38], 255); TextDrawFont(RakNetCopy[38], 5); TextDrawLetterSize(RakNetCopy[38], -0.099999, -0.400000); TextDrawColor(RakNetCopy[38], -1); TextDrawSetOutline(RakNetCopy[38], 0); TextDrawSetProportional(RakNetCopy[38], 0); TextDrawSetShadow(RakNetCopy[38], 1); TextDrawUseBox(RakNetCopy[38], 1); TextDrawBoxColor(RakNetCopy[38], -1); TextDrawTextSize(RakNetCopy[38], 29.000000, 30.000000); TextDrawSetPreviewModel(RakNetCopy[38], 19461); TextDrawSetPreviewRot(RakNetCopy[38], -16.000000, 0.000000, -55.000000, 0.100000); TextDrawSetSelectable(RakNetCopy[38], 1); RakNetCopy[39] = TextDrawCreate(50.000000, 352.000000, "_"); TextDrawAlignment(RakNetCopy[39], 2); TextDrawBackgroundColor(RakNetCopy[39], 255); TextDrawFont(RakNetCopy[39], 5); TextDrawLetterSize(RakNetCopy[39], -0.099999, -0.400000); TextDrawColor(RakNetCopy[39], -1); TextDrawSetOutline(RakNetCopy[39], 0); TextDrawSetProportional(RakNetCopy[39], 0); TextDrawSetShadow(RakNetCopy[39], 1); TextDrawUseBox(RakNetCopy[39], 1); TextDrawBoxColor(RakNetCopy[39], -1); TextDrawTextSize(RakNetCopy[39], 29.000000, 30.000000); TextDrawSetPreviewModel(RakNetCopy[39], 19461); TextDrawSetPreviewRot(RakNetCopy[39], -16.000000, 0.000000, -55.000000, 0.100000); TextDrawSetSelectable(RakNetCopy[39], 1); RakNetCopy[40] = TextDrawCreate(180.000000, 352.000000, "_"); TextDrawAlignment(RakNetCopy[40], 2); TextDrawBackgroundColor(RakNetCopy[40], 255); TextDrawFont(RakNetCopy[40], 5); TextDrawLetterSize(RakNetCopy[40], -0.099999, -0.400000); TextDrawColor(RakNetCopy[40], -1); TextDrawSetOutline(RakNetCopy[40], 0); TextDrawSetProportional(RakNetCopy[40], 0); TextDrawSetShadow(RakNetCopy[40], 1); TextDrawUseBox(RakNetCopy[40], 1); TextDrawBoxColor(RakNetCopy[40], -1); TextDrawTextSize(RakNetCopy[40], 29.000000, 30.000000); TextDrawSetPreviewModel(RakNetCopy[40], 19461); TextDrawSetPreviewRot(RakNetCopy[40], -16.000000, 0.000000, -55.000000, 0.100000); TextDrawSetSelectable(RakNetCopy[40], 1); RakNetCopy[41] = TextDrawCreate(90.000000, 334.000000, "_"); TextDrawAlignment(RakNetCopy[41], 2); TextDrawBackgroundColor(RakNetCopy[41], 255); TextDrawFont(RakNetCopy[41], 5); TextDrawLetterSize(RakNetCopy[41], -0.099999, -0.400000); TextDrawColor(RakNetCopy[41], -1); TextDrawSetOutline(RakNetCopy[41], 0); TextDrawSetProportional(RakNetCopy[41], 0); TextDrawSetShadow(RakNetCopy[41], 1); TextDrawUseBox(RakNetCopy[41], 1); TextDrawBoxColor(RakNetCopy[41], -1); TextDrawTextSize(RakNetCopy[41], 80.000000, 66.000000); TextDrawSetPreviewModel(RakNetCopy[41], 19461); TextDrawSetPreviewRot(RakNetCopy[41], -16.000000, 0.000000, -55.000000, 0.100000); TextDrawSetSelectable(RakNetCopy[41], 1); new Float:DrawFloat_X = 418.0000,Float:DrawFloat_Y = 172.0000; new c = 0,drawid = 42; for(new i; i < 42; i++) { if(c == 6) c = 0,DrawFloat_Y += 32.0,DrawFloat_X = 418.0000; else if(c > 0 && c < 6) DrawFloat_X += 31.0; RakNetCopy[drawid] = TextDrawCreate(DrawFloat_X, DrawFloat_Y, "_"); TextDrawAlignment(RakNetCopy[drawid], 2); TextDrawBackgroundColor(RakNetCopy[drawid], 255); TextDrawFont(RakNetCopy[drawid], 5); TextDrawLetterSize(RakNetCopy[drawid], -0.099999, -0.400000); TextDrawColor(RakNetCopy[drawid], -1); TextDrawSetOutline(RakNetCopy[drawid], 0); TextDrawSetProportional(RakNetCopy[drawid], 0); TextDrawSetShadow(RakNetCopy[drawid], 1); TextDrawUseBox(RakNetCopy[drawid], 1); TextDrawBoxColor(RakNetCopy[drawid], -1); TextDrawTextSize(RakNetCopy[drawid], 29.000000, 30.000000); TextDrawSetPreviewModel(RakNetCopy[drawid], 19461); TextDrawSetPreviewRot(RakNetCopy[drawid], -16.000000, 0.000000, -55.000000, 0.100000); TextDrawSetSelectable(RakNetCopy[drawid], 1); c++,drawid++; }в public OnPlayerKeyStateChangePHP код: if(newkeys == KEY_CTRL_BACK && gPlayerLogged[playerid]) { if(!GetPVarInt(playerid,"InvH")) { TextDrawSetPreviewModel(RakNetCopy[32], GetPlayerSkin(playerid)); for(new i; i < sizeof(RakNetCopy); i++) TextDrawShowForPlayer(playerid,RakNetCopy[i]); SelectTextDraw(playerid,0xf2ddc6ff); SetPVarInt(playerid,"InvH",1); } else { CancelSelectTextDraw(playerid); for(new i; i < sizeof(RakNetCopy); i++) TextDrawHideForPlayer(playerid,RakNetCopy[i]); DeletePVar(playerid,"InvH"); } }В конце мода создаем publicPHP код: public OnPlayerClickTextDraw(playerid, Text:clickedid) { if(clickedid == RakNetCopy[19]) { CancelSelectTextDraw(playerid); for(new i; i < sizeof(RakNetCopy); i++) TextDrawHideForPlayer(playerid,RakNetCopy[i]); DeletePVar(playerid,"InvH"); } return 1; } Автор: не известен.
  16. Данная система позволяет прямо из игры, старшим администраторам управлять администрацией сервера, при этом администраторы, их уровни и пароли хранятся в отдельной базе данных. В профиле игрока ничего храниться не будет, все в базе администраторов. PHP код: #define TABLE_ADMIN "admin"- задэфайним для удобства PHP код: new query[2048], string[512]Сама команда авторизации:PHP код: CMD:alogin(playerid, params[]) { if(PlayerLogged[playerid] == 0) return 1; format(query, sizeof(query), "SELECT * FROM "TABLE_ADMIN" WHERE name = '%s'", PlayerInfo[playerid][pSendername]); mysql_query(query); mysql_store_result(); if(!mysql_fetch_row_format(query)) return true; if(!strcmp(GetAdmin(PlayerInfo[playerid][pSendername], "password"), "qwerty", true)) { SetPVarInt(playerid, "Alogin", 1); ShowPlayerDialog(playerid, 1227, 1, "Регистрация", "Зарегистрируйте ваш пароль:", "Принять", "Отмена"); SendClientMessage(playerid, COLOR_GREY, "Зарегистрируйте администраторский пароль. Он должен быть больше 5 и меньше 16 символов!"); } else ShowPlayerDialog(playerid, 1227, 1, "Авторизация", "Введите администраторский ключ:", "Принять", "Отмена"), SetPVarInt(playerid, "Alogin", 2); return true; }Диалог авторизации: PHP код: case 1227: { if(!response) return 1; if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 1227, 1, "Регистрация", "Зарегистрируйте ваш пароль:", "Принять", "Отмена"); new pass2, level = strval(GetAdmin(PlayerInfo[playerid][pSendername], "level")); if(GetPVarInt(playerid, "Alogin") == 1) { if(sscanf(inputtext, "s[16]", pass2)) ShowPlayerDialog(playerid, 1227, 1, "Регистрация", "Зарегистрируйте ваш пароль:", "Принять", "Отмена"); if(!strcmp(inputtext, "qwerty", true)) return ShowPlayerDialog(playerid, 1227, 1, "Регистрация", "Зарегистрируйте ваш пароль:", "Принять", "Отмена"); if(strlen(inputtext) < 6 || strlen(inputtext) > 16) return ShowPlayerDialog(playerid, 1227, 1, "Регистрация", "Зарегистрируйте ваш пароль:", "Принять", "Отмена"); format(query, sizeof(query), "UPDATE "TABLE_ADMIN" SET password = '%s' WHERE name = '%s' LIMIT 1", pass2, PlayerInfo[playerid][pSendername]); mysql_query(query); SendClientMessage(playerid, COLOR_GREEN, "Поздравляем! Вы получили доступ модератора"); PlayerInfo[playerid][pAdmin] = level; AdminLogged[playerid] = true; format(string, 90, "[AP] Администратор {ffffff}%s[%d]{9ACD32} авторизовался", PlayerInfo[playerid][pSendername], playerid); return true; } else if(GetPVarInt(playerid, "Alogin") == 2) { if(strcmp(inputtext, GetAdmin(PlayerInfo[playerid][pSendername], "password"), true)) return SendClientMessage(playerid, COLOR_LIGHTRED, "Неверный пароль модератора!"), Kick(playerid); SendMes(playerid, COLOR_LIGHTGREEN, "Вы вошли как модератор %d уровня", level); PlayerInfo[playerid][pAdmin] = level; AdminLogged[playerid] = true; format(string, 90, "[AP] Администратор {ffffff}%s[%d]{9ACD32} авторизовался", PlayerInfo[playerid][pSendername], playerid); SendAdminMessage(COLOR_LIGHTGREEN, string); } }Команда для добавления/удаления/повышения модераторов PHP код: CMD:moderator(playerid, params[]) { if(PlayerLogged[playerid] == 0) return 1; if(PlayerInfo[playerid][pAdmin] < 8 || AdminLogged[playerid] == false) return 1; new data[32], name[32]; if(sscanf(params, "s[32]i", name, params[1])) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /moderator [name] [lvl]"); if(params[1] < 0) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /moderator [name] [lvl]"); format(query, sizeof(query), "SELECT * FROM "TABLE_ADMIN" WHERE name = '%s'", name); mysql_query(query); mysql_store_result(); if(mysql_fetch_row_format(query)) { if(params[1] == 0) { format(query, sizeof(query), "DELETE FROM "TABLE_ADMIN" WHERE `name`='%s'", name); mysql_query(query); mysql_free_result(); SendMes(playerid, COLOR_LIGHTRED, "%s успешно удален из списка модераторов", name); } else { format(query, sizeof(query), "UPDATE "TABLE_ADMIN" SET level = '%d' WHERE name = '%s' LIMIT 1", params[1],name); mysql_query(query); SendMes(playerid, COLOR_GREEN, "Уровень администрирования у %s изменен на %d", name, params[1]); } } else { getdate(years, months, days); format(data, 32, "%02d.%02d.%04d", days, months, years); format(query, 512, "INSERT INTO "TABLE_ADMIN" (Name, level, LastCon) VALUES ('%s', %d, '%s')", name, params[1], data); mysql_query(query); SendMes(playerid, COLOR_GREEN, "%s успешно добавлен в список модераторов. Уровень полномочий %d", name, params[1]); } return true; }В конец модаPHP код: stock GetAdmin(username[], obtaining[]) { new Query[128]; format(Query, 128, "SELECT %s FROM "TABLE_ADMIN" WHERE name = '%s' LIMIT 1", obtaining, username); mysql_query(Query); mysql_store_result(); if(mysql_fetch_row(Query) == 1) { mysql_free_result(); return Query; } return Query; }Теперь берем, и все что связано с сохранением и создание в базе поля pAdmin удаляем. И создаем таблицу в базе данных. PHP код: CREATE TABLE IF NOT EXISTS `admin` ( `Name` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `level` int(2) NOT NULL, `password` varchar(32) NOT NULL DEFAULT 'qwerty', `LastCon` varchar(32) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;После каждого своего повышения, администратор находящийся в онлайне должен ввести команду /alogin заново, тогда уровень администрирования изменится. Если администратор оффлайн, то ничего этого проделывать не нужно. Если хотите снять администратора который в онлайне, просто вводите /moderator Jasper_Fox 0 и кикаете/баните/варните или просите выйти. PHP код: AdminLogged[playerid] = true;Переменная которая показывает, авторизован игрок как администратор или нет. У каждого она своя. PHP код: SendAdminMessageОтправка сообщения в администраторский чат. У каждого данная функция своя. Автор: Djcrem
  17. John_Smith

    Система доната.

    Решил выложить систему доната, так, как никто не выкладывал, думаю пригодиться. Автор: Alan_Waket Дата: 19.05.2013г Ко всем new PHP код: new DonateMoney1;В enum pInfoPHP код: pDonateRank, pDonateMoney1,В public OnPlayerRegister(playerid, password[])PHP код: ini_setInteger(File,"DonateMoney1",PlayerInfo[playerid][pDonateMoney1]); ini_setInteger(File,"DonateRank",PlayerInfo[playerid][pDonateRank]);В public OnPlayerLogin(playerid,password[])PHP код: ini_getInteger(File,"DonateMoney1",PlayerInfo[playerid][pDonateMoney1]); ini_getInteger(File,"DonateRank",PlayerInfo[playerid][pDonateRank]);В public OnPlayerConnect(playerid)PHP код: PlayerInfo[playerid][pDonateMoney1] = 0; PlayerInfo[playerid][pDonateRank] = 0;В public OnPlayerCommandText(playerid, cmdtext[])PHP код: else if(strcmp(cmd, "/givedonate", true) == 0) { if(PlayerInfo[playerid][pAdmin] > 9) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "::: Введите: /givedon [ид] [рублей]"); new playa; playa = ReturnUser(tmp); tmp = strtok(cmdtext, idx); DonateMoney1 = strval(tmp); if (PlayerInfo[playerid][pAdmin] >= 9) { if(IsPlayerConnected(playa)) { if(playa != INVALID_PLAYER_ID) { format(string, sizeof(string), "- %d донат переведён на счёт игроку", DonateMoney1); SendClientMessage(playerid, COLOR_WHITE, string); PlayerInfo[playa][pDonateMoney1] += DonateMoney1; SendClientMessage(playa, COLOR_NEWS, "Пополнение доната аккаунта"); format(string, sizeof(string), "- Пополнение счёта на сумму: {d53e07}%d {33ccff}рублей", DonateMoney1); SendClientMessage(playa, COLOR_WHITE, string); format(string, sizeof(string), "- Ваш донатный счёт: {d53e07}%d {33ccff}рублей", PlayerInfo[playa][pDonateMoney1]); SendClientMessage(playa, COLOR_WHITE, string); } } } } return true; }PHP код: else if(strcmp(cmd, "/donate", true) == 0) { new lvlexp[80]; new listitems[] = "[1] Покупка скинаn[2] Снятие наказанийn[3] Прочие покупкиn[4] Покупка VIP статусаn[5] Игровые привилегии"; format(lvlexp,70,"Донат | Баланс: %d рублей",PlayerInfo[playerid][pDonateMoney1]); ShowPlayerDialog(playerid, 10055, DIALOG_STYLE_LIST, lvlexp, listitems, "Выбрать", "Отмена"); }В public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])PHP код: case 10055: { if(response) { switch(listitem) { case 0: { new string3[512]; format(string3,sizeof(string3),"n{ffffff}Введите ID скина на который вы хотите сменить свой скин и нажмите {34c924}'Ок'nnn{ffffff}Стоимость любого скина составляет {34c924}50 {ffffff}DonateMoney"); ShowPlayerDialog(playerid,5563,DIALOG_STYLE_INPUT,"{ffffff}Введите ID скина",string3,"Ок","Выйти"); } case 1:ShowPlayerDialog(playerid, 10056, DIALOG_STYLE_LIST, "Cнятие наказаний", "[1] Снять бан чата (20р)n[2] Снятие варнов (50р)n[3] Выйти из тюрьмы (30р)", "Выбрать", "Назад"); case 2:ShowPlayerDialog(playerid, 10057, DIALOG_STYLE_LIST, "Прочее", "[1] Прибавить 1к наркозависимости (30р)n[2] Убавить 1к наркозависимости (30р)n[3] Купить 1кг наркотиков(15)n[4] Купить 1000 материалов (20р)n[5] Получить набор оружия(бесконечные патроны) (40р)n[6] Купить комплект лицензий (20р)n[7] Покупка скиллов (50р)n[8]Снятие розыска (20)n[9]Обнулить счет преступлений (100р)n[10] Купить 50 законопослушности (20р)", "Выбрать", "Назад"); case 3:ShowPlayerDialog(playerid, 10058, DIALOG_STYLE_LIST, "Покупка VIP", "[1] Bronze VIP (50р)n[2] Silver VIP(100р)n[3] Gold VIP(150р)", "Выбрать", "Назад"); case 4:ShowPlayerDialog(playerid, 10059, DIALOG_STYLE_LIST, "Игровые привелегии", "[1] 500.000$ (20р)n[2] 1.000.000$ (40р)n[3] 3.000.000$ (120р)n[4] 5.000.000$ (160р)n[5] 10.000.000$ (320р))", "Выбрать", "Назад"); } } } case 10056: { if(response) { switch(listitem) { case 0: { if(PlayerInfo[playerid][pDonateMoney1] < 20) return SendClientMessage(playerid, COLOR_GREY, "Не достатoчно денег"); PlayerInfo[playerid][pMuted] = 0; PlayerInfo[playerid][pMuteTime] = 0; SendClientMessage(playerid, 0x6495EDFF, "{FFBF00}Вы разблокировали себе чат"); PlayerInfo[playerid][pDonateMoney1] -= 20; } case 1: { if(PlayerInfo[playerid][pDonateMoney1] < 50) return SendClientMessage(playerid, COLOR_GREY, "Не достатoчно денег"); PlayerInfo[playerid][pWarns] = 0; PlayerInfo[playerid][punWarnstime] = 0; PlayerInfo[playerid][punWarns] = 0; SendClientMessage(playerid, 0x6495EDFF, "{FFBF00}Варны с данного аккаунта успешно сняты"); PlayerInfo[playerid][pDonateMoney1] -= 50; } case 2: { if(PlayerInfo[playerid][pDonateMoney1] < 30) return SendClientMessage(playerid, COLOR_GREY, "Не достаточно денег"); PlayerInfo[playerid][pJailTime] = 0; PlayerInfo[playerid][pCheat] = 0; PlayerInfo[playerid][pJailed] = 0; SendClientMessage(playerid, 0x6495EDFF, "{FFBF00}Вы вышли из тюрьмы"); PlayerInfo[playerid][pDonateMoney1] -= 30; SpawnPlayer(playerid); } } } else { return true; } } case 10057: { if(response) { switch(listitem) { case 0: { if(PlayerInfo[playerid][pDonateMoney1] < 30) return SendClientMessage(playerid, COLOR_GREY, "Не достаточно денег"); PlayerInfo[playerid][pNarcoZavisimost] += 1000; SendClientMessage(playerid, 0x6495EDFF, "{FFBF00}Вы прибавили 1к наркозависимости"); PlayerInfo[playerid][pDonateMoney1] -= 30; } case 1: { if(PlayerInfo[playerid][pDonateMoney1] < 30) return SendClientMessage(playerid, COLOR_GREY, "Не достаточно денег"); PlayerInfo[playerid][pNarcoZavisimost] -= 1000; SendClientMessage(playerid, 0x6495EDFF, "{FFBF00}Вы уменьшили наркозависмость на 1к"); PlayerInfo[playerid][pDonateMoney1] -= 30; } case 2: { if(PlayerInfo[playerid][pDonateMoney1] < 15) return SendClientMessage(playerid, COLOR_GREY, "Не достаточно денег"); PlayerInfo[playerid][pDrugs] += 1000; SendClientMessage(playerid, 0x6495EDFF, "{FFBF00}Вы купили 1кг наркотиков"); PlayerInfo[playerid][pDonateMoney1] -= 15; } case 3: { if(PlayerInfo[playerid][pDonateMoney1] < 20) return SendClientMessage(playerid, COLOR_GREY, "Не достаточно денег"); PlayerInfo[playerid][pMats] += 1000; SendClientMessage(playerid, 0x6495EDFF, "{FFBF00}Вы купили 1к материалов"); PlayerInfo[playerid][pDonateMoney1] -= 20; } case 4: { if(PlayerInfo[playerid][pDonateMoney1] < 40) return SendClientMessage(playerid, COLOR_GREY, "Не достаточно денег"); GivePlayerWeapon(playerid,24,9999); GivePlayerWeapon(playerid,25,9999); GivePlayerWeapon(playerid,29,9999); GivePlayerWeapon(playerid,31,9999); GivePlayerWeapon(playerid,43,9999); GivePlayerWeapon(playerid,46,9999); GivePlayerWeapon(playerid,41,9999); SendClientMessage(playerid, 0x6495EDFF, "{FFBF00}Вы приобрели комплект оружия, пропадает после смерти"); PlayerInfo[playerid][pDonateMoney1] -= 40; } case 5: { if(PlayerInfo[playerid][pDonateMoney1] < 20) return SendClientMessage(playerid, COLOR_GREY, "Не достаточно денег"); PlayerInfo[playerid][pVodPrava] = 1; PlayerInfo[playerid][pFishLic] = 1; PlayerInfo[playerid][pBoatLic] = 1; PlayerInfo[playerid][pFlyLic] = 1; PlayerInfo[playerid][pGunLic] = 1; PlayerInfo[playerid][pBizLic] = 1; SendClientMessage(playerid, 0x6495EDFF, "{FFBF00}Вы купили комплект лицензий"); // PlayerInfo[playerid][pDonateMoney1] -= 20; } case 6: { if(PlayerInfo[playerid][pDonateMoney1] < 50) return SendClientMessage(playerid, COLOR_GREY, "Не достаточно денег"); PlayerInfo[playerid][pDesertEagle] = 100; PlayerInfo[playerid][pSDPistol] = 100; PlayerInfo[playerid][pMP5] = 100; PlayerInfo[playerid][pAK47] = 100; PlayerInfo[playerid][pM4] = 100; PlayerInfo[playerid][pShotGun] = 100; SendClientMessage(playerid, 0x6495EDFF, "{FFBF00}Вы улучшили навыки владения оружия до максимума"); // PlayerInfo[playerid][pDonateMoney1] -= 50; } case 7: { if(PlayerInfo[playerid][pDonateMoney1] < 20) return SendClientMessage(playerid, COLOR_GREY, "Не достаточно денег"); PlayerInfo[playerid][pZvezdi]= 0; SendClientMessage(playerid, 0x6495EDFF, "{FFBF00}Вы удалили себя из списка розыскиваемый"); // PlayerInfo[playerid][pDonateMoney1] -= 20; } case 8: { if(PlayerInfo[playerid][pDonateMoney1] < 100) return SendClientMessage(playerid, COLOR_GREY, "Не достаточно денег"); PlayerInfo[playerid][pKills] = 0; SendClientMessage(playerid, 0x6495EDFF, "{FFBF00}Вы обнулили счетчик преступлений"); // PlayerInfo[playerid][pDonateMoney1] -= 100; } case 9: { if(PlayerInfo[playerid][pDonateMoney1] < 20) return SendClientMessage(playerid, COLOR_GREY, "Не достаточно денег"); PlayerInfo[playerid][pZakonp] += 50; SendClientMessage(playerid, 0x6495EDFF, "{FFBF00}Вы стали законопослушным гражданином"); // PlayerInfo[playerid][pDonateMoney1] -= 20; } } } else { return true; } } case 10058: { if(response) { switch(listitem) { case 0: { if(PlayerInfo[playerid][pDonateMoney1] < 50) return SendClientMessage(playerid, COLOR_GREY, "Не достатoчно денег"); PlayerInfo[playerid][pDonateRank] = 1; SendClientMessage(playerid, 0x6495EDFF, "{FFBF00}Вы купили Bronze VIP статус"); PlayerInfo[playerid][pDonateMoney1] -= 50; } case 1: { if(PlayerInfo[playerid][pDonateMoney1] < 100) return SendClientMessage(playerid, COLOR_GREY, "Не достатoчно денег"); PlayerInfo[playerid][pDonateRank] = 2; SendClientMessage(playerid, 0x6495EDFF, "{FFBF00}Вы купили Silver VIP статус"); PlayerInfo[playerid][pDonateMoney1] -= 50; } case 2: { if(PlayerInfo[playerid][pDonateMoney1] < 150) return SendClientMessage(playerid, COLOR_GREY, "Не достаточно денег"); PlayerInfo[playerid][pDonateRank] = 3; SendClientMessage(playerid, 0x6495EDFF, "{FFBF00}Вы купили Gold VIP статус"); PlayerInfo[playerid][pDonateMoney1] -= 150; } } } else { return true; } } case 10059: { if(response) { switch(listitem) { case 0: { if(PlayerInfo[playerid][pDonateMoney1] < 20) return SendClientMessage(playerid, COLOR_GREY, "Не достатoчно денег"); PlayerInfo[playerid][pCash] += 500000; SendClientMessage(playerid, 0x6495EDFF, "{FFBF00}Вы купили 500к"); PlayerInfo[playerid][pDonateMoney1] -= 20; } case 1: { if(PlayerInfo[playerid][pDonateMoney1] < 40) return SendClientMessage(playerid, COLOR_GREY, "Не достатoчно денег"); PlayerInfo[playerid][pCash] += 1000000; SendClientMessage(playerid, 0x6495EDFF, "{FFBF00}Вы купили 1кк"); PlayerInfo[playerid][pDonateMoney1] -= 40; } case 2: { if(PlayerInfo[playerid][pDonateMoney1] < 120) return SendClientMessage(playerid, COLOR_GREY, "Не достаточно денег"); PlayerInfo[playerid][pCash] += 3000000; SendClientMessage(playerid, 0x6495EDFF, "{FFBF00}Вы купили 3кк"); PlayerInfo[playerid][pDonateMoney1] -= 120; } case 3: { if(PlayerInfo[playerid][pDonateMoney1] < 160) return SendClientMessage(playerid, COLOR_GREY, "Не достаточно денег"); PlayerInfo[playerid][pCash] += 5000000; SendClientMessage(playerid, 0x6495EDFF, "{FFBF00}Вы купили 5кк"); PlayerInfo[playerid][pDonateMoney1] -= 160; } case 4: { if(PlayerInfo[playerid][pDonateMoney1] < 320) return SendClientMessage(playerid, COLOR_GREY, "Не достаточно денег"); PlayerInfo[playerid][pCash] += 10000000; SendClientMessage(playerid, 0x6495EDFF, "{FFBF00}Вы купили 10кк"); PlayerInfo[playerid][pDonateMoney1] -= 320; } } } else { return true; } }Собственно все.
  18. Начнём Ко всем forward'ам PHP код: forward LoadDip(); forward SaveDip(); Ко всем new PHP код: new TotalGzR;//rifa new TotalGzA;//actek new TotalGzB;//ballas new TotalGzG;//grove new TotalGzV;//vagos enum dInfo { dRGrove, dRAztec, dRVagos, dRBallas, // dBGrove, dBAztec, dBVagos, dBRifa, // dAGrove, dAVagos, dABallas, dARifa, // dGRifa, dGAztec, dGVagos, dGBallas, // dVGrove, dVAztec, dVBallas, dVRifa, };new Dip[1][dInfo]; PHP код: public LoadDip() { new iniFile = ini_openFile("logs/LoadDip.cfg"); ini_getInteger(iniFile,"Dip[0][dRGrove]",Dip[0][dRGrove]); ini_getInteger(iniFile,"Dip[0][dRAztec]",Dip[0][dRAztec]); ini_getInteger(iniFile,"Dip[0][dRVagos]",Dip[0][dRVagos]); ini_getInteger(iniFile,"Dip[0][dRBallas]",Dip[0][dRBallas]); // ini_getInteger(iniFile,"Dip[0][dBGrove]",Dip[0][dBGrove]); ini_getInteger(iniFile,"Dip[0][dBAztec]",Dip[0][dBAztec]); ini_getInteger(iniFile,"Dip[0][dBVagos]",Dip[0][dBVagos]); ini_getInteger(iniFile,"Dip[0][dBRifa]",Dip[0][dBRifa]); // ini_getInteger(iniFile,"Dip[0][dAGrove]",Dip[0][dAGrove]); ini_getInteger(iniFile,"Dip[0][dAVagos]",Dip[0][dAVagos]); ini_getInteger(iniFile,"Dip[0][dABallas]",Dip[0][dABallas]); ini_getInteger(iniFile,"Dip[0][dARifa]",Dip[0][dARifa]); // ini_getInteger(iniFile,"Dip[0][dGRifa]",Dip[0][dGRifa]); ini_getInteger(iniFile,"Dip[0][dGAztec]",Dip[0][dGAztec]); ini_getInteger(iniFile,"Dip[0][dGVagos]",Dip[0][dGVagos]); ini_getInteger(iniFile,"Dip[0][dGBallas]",Dip[0][dGBallas]); // ini_getInteger(iniFile,"Dip[0][dVGrove]",Dip[0][dVGrove]); ini_getInteger(iniFile,"Dip[0][dVAztec]",Dip[0][dVAztec]); ini_getInteger(iniFile,"Dip[0][dVBallas]",Dip[0][dVBallas]); ini_getInteger(iniFile,"Dip[0][dVRifa]",Dip[0][dVRifa]); ini_closeFile(iniFile); return 1; }PHP код: public SaveDip() { new iniFile = ini_openFile("logs/LoadDip.cfg"); ini_setInteger(iniFile, "Dip[0][dRGrove]",Dip[0][dRGrove]); ini_setInteger(iniFile, "Dip[0][dRAztec]",Dip[0][dRAztec]); ini_setInteger(iniFile, "Dip[0][dRVagos]",Dip[0][dRVagos]); ini_setInteger(iniFile, "Dip[0][dRBallas]",Dip[0][dRBallas]); // ini_setInteger(iniFile, "Dip[0][dBGrove]",Dip[0][dBGrove]); ini_setInteger(iniFile, "Dip[0][dBAztec]",Dip[0][dBAztec]); ini_setInteger(iniFile, "Dip[0][dBVagos]",Dip[0][dBVagos]); ini_setInteger(iniFile, "Dip[0][dBRifa]",Dip[0][dBRifa]); // ini_setInteger(iniFile, "Dip[0][dAGrove]",Dip[0][dAGrove]); ini_setInteger(iniFile, "Dip[0][dAVagos]",Dip[0][dAVagos]); ini_setInteger(iniFile, "Dip[0][dABallas]",Dip[0][dABallas]); ini_setInteger(iniFile, "Dip[0][dARifa]",Dip[0][dARifa]); // ini_setInteger(iniFile, "Dip[0][dGRifa]",Dip[0][dGRifa]); ini_setInteger(iniFile, "Dip[0][dGAztec]",Dip[0][dGAztec]); ini_setInteger(iniFile, "Dip[0][dGVagos]",Dip[0][dGVagos]); ini_setInteger(iniFile, "Dip[0][dGBallas]",Dip[0][dGBallas]); // ini_setInteger(iniFile, "Dip[0][dVGrove]",Dip[0][dVGrove]); ini_setInteger(iniFile, "Dip[0][dVAztec]",Dip[0][dVAztec]); ini_setInteger(iniFile, "Dip[0][dVBallas]",Dip[0][dVBallas]); ini_setInteger(iniFile, "Dip[0][dVRifa]",Dip[0][dVRifa]); ini_closeFile(iniFile); return 1; }В public OnGameModeInit() добавимPHP код: LoadDip(); В public PayDay() добавим PHP код: if(GZInfo[i][gFrakVlad] == 18) TotalGzR++; if(GZInfo[i][gFrakVlad] == 17) TotalGzA++; if(GZInfo[i][gFrakVlad] == 15) TotalGzG++; if(GZInfo[i][gFrakVlad] == 13) TotalGzV++; if(GZInfo[i][gFrakVlad] == 12) TotalGzB++; FracBank[0][fGrove] += TotalGzG*300; FracBank[0][fBallas] += TotalGzB*300; FracBank[0][fVagos] += TotalGzV*300; FracBank[0][fAztek] += TotalGzA*300; FracBank[0][fRifa] += TotalGzR*300; ClearTotalGz(); SaveBankFrac(); В конец мода PHP код: stock ClearTotalGz() { TotalGzR = 0;//rifa TotalGzA = 0;//actek TotalGzB = 0;//ballas TotalGzG = 0;//grove TotalGzV = 0;//vagos printr("ClearTotalGz"); } Добавим команду /ginfo PHP код: if(strcmp(cmd,"/ginfo", true)== 0) { if(IsPlayerConnected(playerid)) { if(IsAGang(playerid)) { ClearTotalGz(); for(new i =0;i<sizeof(GZInfo);i++) { if(GZInfo[i][gFrakVlad] == 18) TotalGzR++; if(GZInfo[i][gFrakVlad] == 17) TotalGzA++; if(GZInfo[i][gFrakVlad] == 15) TotalGzG++; if(GZInfo[i][gFrakVlad] == 13) TotalGzV++; if(GZInfo[i][gFrakVlad] == 12) TotalGzB++; } ////////////////////////Vagos///////////////////////////// new BallasDipV[32];//Ballas if(Dip[0][dVBallas] == 0) { BallasDipV = "{ffffff}Нейтрал"; } else if(Dip[0][dVBallas] == 1) { BallasDipV = "{00BF36}Союз"; } else if(Dip[0][dVBallas] == 2) { BallasDipV = "{C43E3E}Война"; } new GroveDipV[32];//Grove if(Dip[0][dVGrove] == 0) { GroveDipV = "{ffffff}Нейтрал"; } else if(Dip[0][dVGrove] == 1) { GroveDipV = "{00BF36}Союз"; } else if(Dip[0][dVGrove] == 2) { GroveDipV = "{C43E3E}Война"; } new AztecDipV[32];//Aztec if(Dip[0][dVAztec] == 0) { AztecDipV = "{ffffff}Нейтрал"; } else if(Dip[0][dVAztec] == 1) { AztecDipV = "{00BF36}Союз"; } else if(Dip[0][dVAztec] == 2) { AztecDipV = "{C43E3E}Война"; } new RifaDipV[32];//Rifa if(Dip[0][dVRifa] == 0) { RifaDipV = "{ffffff}Нейтрал"; } else if(Dip[0][dVRifa] == 1) { RifaDipV = "{00BF36}Союз"; } else if(Dip[0][dVRifa] == 2) { RifaDipV = "{C43E3E}Война"; } ////////////////////////Ballas////////////////////////////// new VagosDipB[32];//Vagos if(Dip[0][dBVagos] == 0) { VagosDipB = "{ffffff}Нейтрал"; } else if(Dip[0][dBVagos] == 1) { VagosDipB = "{00BF36}Союз"; } else if(Dip[0][dBVagos] == 2) { VagosDipB = "{C43E3E}Война"; } new GroveDipB[32];//Grove if(Dip[0][dBGrove] == 0) { GroveDipB = "{ffffff}Нейтрал"; } else if(Dip[0][dBGrove] == 1) { GroveDipB = "{00BF36}Союз"; } else if(Dip[0][dBGrove] == 2) { GroveDipB = "{C43E3E}Война"; } new AztecDipB[32];//Aztec if(Dip[0][dBAztec] == 0) { AztecDipB = "{ffffff}Нейтрал"; } else if(Dip[0][dBAztec] == 1) { AztecDipB = "{00BF36}Союз"; } else if(Dip[0][dBAztec] == 2) { AztecDipB = "{C43E3E}Война"; } new RifaDipB[32];//Rifa if(Dip[0][dBRifa] == 0) { RifaDipB = "{ffffff}Нейтрал"; } else if(Dip[0][dBRifa] == 1) { RifaDipB = "{00BF36}Союз"; } else if(Dip[0][dBRifa] == 2) { RifaDipB = "{C43E3E}Война"; } /////////////////////////Grove//////////////////////////// new VagosDipG[32];//Vagos if(Dip[0][dGVagos] == 0) { VagosDipG = "{ffffff}Нейтрал"; } else if(Dip[0][dGVagos] == 1) { VagosDipG = "{00BF36}Союз"; } else if(Dip[0][dGVagos] == 2) { VagosDipG = "{C43E3E}Война"; } new AztecDipG[32];//Aztec if(Dip[0][dGAztec] == 0) { AztecDipG = "{ffffff}Нейтрал"; } else if(Dip[0][dGAztec] == 1) { AztecDipG = "{00BF36}Союз"; } else if(Dip[0][dGAztec] == 2) { AztecDipG = "{C43E3E}Война"; } new BallasDipG[32];//Ballas if(Dip[0][dGBallas] == 0) { BallasDipG = "{ffffff}Нейтрал"; } else if(Dip[0][dGBallas] == 1) { BallasDipG = "{00BF36}Союз"; } else if(Dip[0][dGBallas] == 2) { BallasDipG = "{C43E3E}Война"; } new RifaDipG[32];//Rifa if(Dip[0][dGRifa] == 0) { RifaDipG = "{ffffff}Нейтрал"; } else if(Dip[0][dGRifa] == 1) { RifaDipG = "{00BF36}Союз"; } else if(Dip[0][dGRifa] == 2) { RifaDipG = "{C43E3E}Война"; } //////////////////////////Aztec////////////////////////// new BallasDipA[32];//Ballas if(Dip[0][dABallas] == 0) { BallasDipA = "{ffffff}Нейтрал"; } else if(Dip[0][dABallas] == 1) { BallasDipA = "{00BF36}Союз"; } else if(Dip[0][dABallas] == 2) { BallasDipA = "{C43E3E}Война"; } new VagosDipA[32];//Vagos if(Dip[0][dAVagos] == 0) { VagosDipA = "{ffffff}Нейтрал"; } else if(Dip[0][dAVagos] == 1) { VagosDipA = "{00BF36}Союз"; } else if(Dip[0][dAVagos] == 2) { VagosDipA = "{C43E3E}Война"; } new GroveDipA[32];//Grove if(Dip[0][dAGrove] == 0) { GroveDipA = "{ffffff}Нейтрал"; } else if(Dip[0][dAGrove] == 1) { GroveDipA = "{00BF36}Союз"; } else if(Dip[0][dAGrove] == 2) { GroveDipA = "{C43E3E}Война"; } new RifaDipA[32];//Rifa if(Dip[0][dARifa] == 0) { RifaDipA = "{ffffff}Нейтрал"; } else if(Dip[0][dARifa] == 1) { RifaDipA = "{00BF36}Союз"; } else if(Dip[0][dARifa] == 2) { RifaDipA = "{C43E3E}Война"; } /////////////////////////Rifa////////////////////////////// new BallasDipR[32];//Ballas if(Dip[0][dRBallas] == 0) { BallasDipR = "{ffffff}Нейтрал"; } else if(Dip[0][dRBallas] == 1) { BallasDipR = "{00BF36}Союз"; } else if(Dip[0][dRBallas] == 2) { BallasDipR = "{C43E3E}Война"; } new VagosDipR[32];//Vagos if(Dip[0][dRVagos] == 0) { VagosDipR = "{ffffff}Нейтрал"; } else if(Dip[0][dRVagos] == 1) { VagosDipR = "{00BF36}Союз"; } else if(Dip[0][dRVagos] == 2) { VagosDipR = "{C43E3E}Война"; } new GroveDipR[32];//Grove if(Dip[0][dRGrove] == 0) { GroveDipR = "{ffffff}Нейтрал"; } else if(Dip[0][dRGrove] == 1) { GroveDipR = "{00BF36}Союз"; } else if(Dip[0][dRGrove] == 2) { GroveDipR = "{C43E3E}Война"; } new AztecDipR[32];//Aztec if(Dip[0][dRAztec] == 0) { AztecDipR = "{ffffff}Нейтрал"; } else if(Dip[0][dRAztec] == 1) { AztecDipR = "{00BF36}Союз"; } else if(Dip[0][dRAztec] == 2) { AztecDipR = "{C43E3E}Война"; } /////////////////////////////////////////////////////// switch(PlayerInfo[playerid][pMember]) { case 13: { format(string, sizeof(string),"{ffffff}Количество контролируемых кварталов: {DBD604}%dn{ffffff}Ежедневный доход(в payday): {DBD604}$%dn{ffffff}Баланс банка банды: {DBD604}%dnn{0B9B17}Grove %sn{3582AE}Rifa %sn{A600C0}Ballas %sn{05DADA}Aztec %s",TotalGzV,TotalGzV*300,FracBank[0][fVagos],GroveDipV,RifaDipV,BallasDipV,AztecDipV); ShowPlayerDialog(playerid,1043,DIALOG_STYLE_MSGBOX,"The Vagos Gang",string, "X", ""); } case 12: { format(string, sizeof(string),"{ffffff}Количество контролируемых кварталов: {B313E7}%dn{ffffff}Ежедневный доход(в payday): {B313E7}$%dn{ffffff}Баланс банка банды: {B313E7}%dnn{0B9B17}Grove %sn{3582AE}Rifa %sn{05DADA}Aztec %sn{CCEB04}Vagos %s",TotalGzB,TotalGzB*300,FracBank[0][fBallas],GroveDipB,RifaDipB,AztecDipB,VagosDipB); ShowPlayerDialog(playerid,1042,DIALOG_STYLE_MSGBOX,"The Ballas Gang",string, "X", ""); } case 15: { format(string, sizeof(string),"{ffffff}Количество контролируемых кварталов: {009F00}%dn{ffffff}Ежедневный доход(в payday): {009F00}$%dn{ffffff}Баланс банка банды: {009F00}%dnn{05DADA}Aztec %sn{3582AE}Rifa %sn{A600C0}Ballas %sn{CCEB04}Vagos %s",TotalGzG,TotalGzG*300,FracBank[0][fGrove],AztecDipG,RifaDipG,BallasDipG,VagosDipG); ShowPlayerDialog(playerid,1045,DIALOG_STYLE_MSGBOX,"The Grove Street Gang",string, "X", ""); } case 17: { format(string, sizeof(string),"{ffffff}Количество контролируемых кварталов: {30d5c8}%dn{ffffff}Ежедневный доход(в payday): {30d5c8}$%dn{ffffff}Баланс банка банды: {30d5c8}%dnn{0B9B17}Grove %sn{3582AE}Rifa %sn{A600C0}Ballas %sn{CCEB04}Vagos %s",TotalGzA,TotalGzA*300,FracBank[0][fAztek],GroveDipA,RifaDipA,BallasDipA,VagosDipA); ShowPlayerDialog(playerid,1047,DIALOG_STYLE_MSGBOX,"The Aztecas Gang",string, "X", ""); } case 18: { format(string, sizeof(string),"{ffffff}Количество контролируемых кварталов: {2A9170}%dn{ffffff}Ежедневный доход(в payday): {2A9170}$%dn{ffffff}Баланс банка банды: {2A9170}%dnn{0B9B17}Grove %sn{05DADA}Aztec %sn{A600C0}Ballas %sn{CCEB04}Vagos %s",TotalGzR,TotalGzR*300,FracBank[0][fRifa],GroveDipR,AztecDipR,BallasDipR,VagosDipR); ShowPlayerDialog(playerid,1048,DIALOG_STYLE_MSGBOX,"The Rifa Gang Gang",string, "X", ""); } } ClearTotalGz(); } return true; } } И команду /diplomation PHP код: else if (strcmp("/diplomation", cmdtext, true) == 0){ new f = PlayerInfo[playerid][pLeader]; if(f == 12 || f == 13 || f == 15 || f == 17 || f == 18){ ShowPlayerDialog(playerid, 11100, DIALOG_STYLE_LIST, "Дипломатия","[1]-Войнаn[2]-Нейтралn[3]-Союз", "Далее", "Выход");} return true;} Далее в папке scriptfileslogs создаём документ LoadDip.cfg и вставляем в него PHP код: Dip[0][dGrove] = 0 Dip[0][dRifa] = 0 Dip[0][dBallas] = 0 Dip[0][dVagos] = 0 Dip[0][dRGrove] = 0 Dip[0][dRAztec] = 0 Dip[0][dRVagos] = 0 Dip[0][dRBallas] = 0 Dip[0][dBGrove] = 0 Dip[0][dBAztec] = 0 Dip[0][dBVagos] = 0 Dip[0][dBRifa] = 0 Dip[0][dAGrove] = 0 Dip[0][dAVagos] = 0 Dip[0][dABallas] = 0 Dip[0][dARifa] = 0 Dip[0][dGRifa] = 0 Dip[0][dGAztec] = 0 Dip[0][dGVagos] = 0 Dip[0][dGBallas] = 0 Dip[0][dVGrove] = 0 Dip[0][dVAztec] = 0 Dip[0][dVBallas] = 0 Dip[0][dVRifa] = 0Ну вот и всё! Автор: Nike_
  19. Rustyk

    Делаем диалог

    Для начала , делаем команду с помощью которой будет открываться сам диалог: if(!strcmp(cmdtext, "/ваша кмд", true)) { ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST, "Общее Название", "nНазвание1nНазвание2", "Ok", "Exit"); return 1; }((1 если что , меняем на своё , чтобы иды диалогов не совпали (выделено красным) ))Теперь делаем функцию (действие) для диалога: В public OnDialogResponse: if(dialogid == 1 && response) { switch(listitem) { case 0: { Здесь вставляем, действие Например: вы сделали команду для покупки алкоголя, здесь пишем, сколько с вас возьмут денег, анимацию, сообщение в чат. if(GetPlayerMoney(playerid) < 0) SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_WINE); SendClientMessage(playerid, 0xFFFFFF, "Вы купили алкоголь"); } } return 1; } Типы диалогов: ТИП1=DIALOG_STYLE_MSGBOX - тип диалога, для вывода сообщения. ТИП2=DIALOG_STYLE_INPUT - обычно используется в системе регистрации. ТИП3=DIALOG_STYLE_LIST - Лист функций Автор: не известен.
  20. Доброго времени суток, сейчас я расскажу вам о "Автоматическом рестарте". Я думаю многие видели на серверах в определенное время происходит рестарт сервера, при этом администрации не приходится вводить команду. Сервер делает это автоматически. Как это сделать? В Public OnPlayerUpdate: PHP код: new h, m, s; gettime(h, m, s); // Узнаем время if(h == 1 && m == 25 s == 0) // Если 1 час 25 минут (Можно заменить время на свое) { format(string, 128, "Уважаемые игроки, через 5 минут произойдет АвтоРестарт."); // Тест, отправляемый в чат SendClientMessageToAll(COLOR_WHITE, string);// Выводим сообщение в общий чат } if(h == 1 && m == 30 s == 0) // Если 1 час 30 минут и 0 секунд (Можно заменить время на свое) { SaveAccounts(); // Замените эту строчку на функции сохранения у вас в моде (С помощью вашей команды рестарта можно их найти (там они будут написаны)) format(string, 128, "Происходит автоматический рестарт сервера, подождите 10-15 секунд..."); // Тест, отправляемый в чат SendClientMessageToAll(COLOR_WHITE, string);// Выводим сообщение в общий чат SendRconCommand("gmx"); // Делаем рестарт }Автор: Я.Внимание! Секунды не убирать иначе каждую секунду будет рестарт.
  21. Доброго времени суток, сейчас я расскажу вам о "Автоматическом рестарте". Я думаю многие видели на серверах в определенное время происходит рестарт сервера, при этом администрации не приходится вводить команду. Сервер делает это автоматически. Как это сделать? В Public OnPlayerUpdate: PHP код: new h, m, s; gettime(h, m, s); // Узнаем время if(h == 1 && m == 25 s == 0) // Если 1 час 25 минут (Можно заменить время на свое) { format(string, 128, "Уважаемые игроки, через 5 минут произойдет АвтоРестарт."); // Тест, отправляемый в чат SendClientMessageToAll(COLOR_WHITE, string);// Выводим сообщение в общий чат } if(h == 1 && m == 30 s == 0) // Если 1 час 30 минут и 0 секунд (Можно заменить время на свое) { SaveAccounts(); // Замените эту строчку на функции сохранения у вас в моде (С помощью вашей команды рестарта можно их найти (там они будут написаны)) format(string, 128, "Происходит автоматический рестарт сервера, подождите 10-15 секунд..."); // Тест, отправляемый в чат SendClientMessageToAll(COLOR_WHITE, string);// Выводим сообщение в общий чат SendRconCommand("gmx"); // Делаем рестарт }Автор: Я.Внимание! Секунды не убирать иначе каждую секунду будет рестарт.
  22. >ТРЕБОВАНИЯ 1. Наличие сайте с FTP доступом. 2. Знание хотя бы самое маленькое php и MySQL. (не знаете вообще что это такое, не беритесь.) 1. Начнём с регистрации на сайте услуг биллинга. Заходим по адресу www.a1pay.ru В правом верхнем углу выбираем "Вход для клиентов" либо "Регистрация" войти можно через гугл, яндекс, майл... После входа выбираем "Инструменты" вверху. 2.Нажимаем "Добавить сервис" Открывается Далее указываем всё как на картинке (нажмите на неё, чтобы увеличить). "ваш_сайт" замените на адрес вашего сайта. Нажимаем добавить. 3. Теперь нажимаем "Создать кнопку" (выделено на картинке). Заполняем поля и нажимаем "Создать код кнопки" 4.Получаем код кнопки и пока оставим это. Идём в phpmyadmin вашего сайта и создаём таблицу, допустим "Donate" и создаём такие поля: 5.Теперь, непосредственно на вашем сайте создаём файлы script.php donate.php nodonate.php В файл script.php записываем следующий код (В коде изменяем Логины , Пароли , и Базу данных , больше нечего) (Эти файлы вы можете создать в программе Notepad++ и загрузить на свой сайт через FileZilla) PHP код: <? FUNCTION A1Lite_processor ($t,$secret) // не что вроде public (комментарии удали) { $params = array( 'tid' => $t['tid'], 'name' => $t['name'], 'comment' => $t['comment'], 'partner_id' => $t['partner_id'], 'service_id' => $t['service_id'], 'order_id' => $t['order_id'], 'type' => $t['type'], 'partner_income' => $t['partner_income'], 'system_income' => $t['system_income'] ); $params['check'] = md5(join('', array_values($params)) . $secret); if ($params['check'] === $t['check']) { // Действия по зачислению платежа. A1Lite - Ключи совпали. $ok=TRUE; } else { // Действия по ошибке. A1Lite - Ключи не совпали. $ok= FALSE; } return $ok; } $secret = 'KEY'; // секретный ключ который указали при регистрации на a1pay (ИЗМЕНЯЕМ ПОД СЕБЯ) if(A1Lite_processor($_POST,$secret) === TRUE) { $code = rand(1000000,10000000); //От этих чисел получаем кода $email = $_POST['email']; // получаем e-mail, указанный клиентом $text = "Здравствуйте!rnВот ваш донат код: '$code'rn Чтобы его использовать, введите в игре /donate в окошко, которое появится введите данный код."; // пишем письмо клиенту mail($email, "Пополнение средств на сервере ********", $text); // отправляем письмо клиенту $money = 100000; // Деньги которые игрок получает при вводе правильного кода (меняем под себя) $db = mysql_connect("localhost", "root", "") or die("Ошибка подключения к серверу."); //подключаемся к базе сайта (ДАННЫЕ ПИШЕМ СВОИ) mysql_select_db("SITE") or die("Не выбрана база!"); //выбираем базу mysql_query("INSERT INTO `Donate` (Code,Money,Status) VALUES ('$code','$money','1')"); // записываем всю эту конитель в базу (`Donate` 'это назавание таблицы ) } else { echo 'Not'; // здесь выведем сообщение, если игрок как попытался обмануть вас } ?> 6.Теперь заполняем файл donate.php (тут уже не только код, но и весь скелет сайта) В нужное место добавьте код: PHP код: FUNCTION A1Lite_processor ($t,$secret) { $params = array( 'tid' => $t['tid'], 'name' => $t['name'], 'comment' => $t['comment'], 'partner_id' => $t['partner_id'], 'service_id' => $t['service_id'], 'order_id' => $t['order_id'], 'type' => $t['type'], 'partner_income' => $t['partner_income'], 'system_income' => $t['system_income'], ); $params['check'] = md5(join('', array_values($params)) . $secret); if ($params['check'] === $t['check']) { $ok=TRUE; } else { // Действия по ошибке. A1Lite - Ключи не совпали. $ok= FALSE; } return $ok; } $secret = 'KEY'; // Изменяем ключ под себя if(A1Lite_processor($_GET,$secret) == TRUE) { echo 'На ваш e-mail выслан код. Введите в игре /donate в это окошко введите код, посланный вам на почту.'; // сообщение выдаваемое игроку, может быть любое, это не важно } else { echo 'Произошла ошибка.'; // игрок попытался вас надурить }7.Файл nodonate.php заполните сами, этот файл вызывается только когда на сервере произошла ошибка.Теперь идём в pawno. 8.В OnPlayerCommandText(playerid, cmdtext[]) PHP код: else if(strcmp(cmd, "/donate", true) == 0) { ShowPlayerDialog(playerid, 197, DIALOG_STYLE_INPUT, "Пополнение счёта.","Введите донат-код полученный вами на e-mail в поле ниже.", "Далее","Закрыть"); // выведем игроку окошко, куда он введёт код return 1; } В OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) PHP код: else if(dialogid == 197) { if(response) { if(!strlen(inputtext) || (!IsNumeric(inputtext))) { ShowPlayerDialog(playerid, 197, DIALOG_STYLE_INPUT, "Пополнение счёта.","Введите донат-код полученный вами на e-mail в поле ниже.", "Далее","Закрыть"); return 1; } new code = strval(inputtext); format(string, sizeof(string),"SELECT Money FROM Donate WHERE Code = '%d' AND Status = '1'",code); mysql_query(string); mysql_store_result(); if(mysql_num_rows()) { new name[24], money; mysql_fetch_row_format(name, "|"); sscanf(name, "p<|>d",money); PlayerInfo[playerid][pBankMoney] += money; // выдаем деньги в банк (как на SAMP-RP ) можно изменить типо под PlayerInfo[playerid][pDonateMoney] += dmoney format(string, sizeof(string),"Ваш счёт пополнен на %d рублей. Деньги лежат в банке.",money); SendClientMessage(playerid, COLOR_ORANGE, string); format(string, sizeof(string),"UPDATE Donate SET Status = '0' WHERE Code = '%d'",code); mysql_query(string); } else { ShowPlayerDialog(playerid, 19, DIALOG_STYLE_MSGBOX, "EROR", "Ошибка! Этот код либо не существует, либо не действителен.","Ок", "");//если код не правильный } } }Вот собственно и всё, код останется в базе данных, но не будет активен, а можно и удалять.
  23. John_Smith

    Потребность сна.

    К переменным: PHP код: new psleep[MAX_PLAYERS]; // Создаёт каждому игроку счётчик Энергитических очков... forward UpdateSleep(playerid); // Для паблика апдейта очков энергии... Далее создаём publik самого апдейта очков энергии (отбираем очки энергии): PHP код: public UpdateSleep(playerid) { // Паблик апдейта очков энергии psleep[playerid]++; switch(psleep[playerid]) { case 7 .. 9: { SendClientMessage(playerid, -1, "(( Вы устали, вам нужно поспать! ))"); } case 10: { SendClientMessage(playerid, -1, "(( Вы уснули. (Проснуться - /unsleep). ))"); TogglePlayerControllable(playerid, 0); SetPVarInt(playerid,"SLEEP",gettime()+120); ApplyAnimation(playerid,"CRACK","crckidle2",4.1,0,1,1,1,1); ApplyAnimation(playerid,"CRACK","crckidle2",4.1,0,1,1,1,1); } } return 1; }в public OnGameModeInit вставляем: PHP код: SetTimer("UpdateSleep",300000,1);Создаём команду что бы проснуться. Добавляем в public OnPlayerCommandText(playerid, cmdtext[]):PHP код: if (strcmp(cmd, "/unsleep", true) == 0) { if(GetPVarInt(playerid,"SLEEP") > gettime()) { SendClientMessage(playerid,-1,"(( Вы ещё не выспались... ))"); return 1; } TogglePlayerControllable(playerid, 1); SendClientMessage(playerid,-1,"(( Вы выспались... ))"); psleep[playerid] = 0; return 1; }И ко всем командамPHP код: if (strcmp(cmd, "/sleep", true) == 0) { if (!PlayerToPoint(3.0, playerid, X,Y,Z) { // X,Y,Z - Координаты кровати SendClientMessage(playerid,-1,"(( Вы не на кровати! ))"); return 1; } if (psleep[playerid] <= 3) { SendClientMessage(playerid,-1,"(( Вы не устали, что-бы спать! ))"); return 1; } TogglePlayerControllable(playerid, 0); SendClientMessage(playerid,-1,"(( Вы легли спать... (1 минута) (Что-бы проснуться /unsleep) ))"); SetPVarInt(playerid,"SLEEP",gettime()+60); ApplyAnimation(playerid,"CRACK","crckidle2",4.1,0,1,1,1,1); ApplyAnimation(playerid,"CRACK","crckidle2",4.1,0,1,1,1,1); return 1; }Автор:SanStar
  24. Кирилл Сергеевич

    Помещаем IP в 4 ячейки

    stock ip2int(ip[]) { new ip[4]; unformat(ip, "p<.>a<i>[4]", ip); return (ip[0] << 24) | (ip[1] << 16) | (ip[2] << 8) | ip[3]; } stock int2ip(integer, ip[], size = sizeof ip) { format(ip, size, "%i.%i.%i.%i", ((integer >>> 24) & 255), ((integer >>> 16) & 255), ((integer >>> 8) & 255), (integer & 255)); } Автор:Владокс
  25. Многие новички,делающие сервер в первый раз сталкиваются с проблемой создания бонуса.Вот пример такого готового решения: 1)Ко всем new добавить: new bonus; 2)Создаём pick up.Для этого в коллбэк public OnGameModeInit добавляем это: bonus = CreatePickup(ID пикапа,тип пикапа,X,Y,Z, ID виртуального мира пикапа);// Координаты X,Y,Z сменить на свои. 3)Следующим шагом будет добавление самой функции бонуса: if(pickupid == название пикапа) // В нашем случае "bonus" { if(PlayerInfo[playerid][pLevel] >= 3) // Это проверка на то что-бы игрок не получил бонус два раза. { SendClientMessage(playerid, COLOR_PURPLE, "Этот бонус только для новичков 1 лвл."); return 1; } SendClientMessage(playerid,0xFFFF00AA,"Вы получили свой бонус!"); SendClientMessage(playerid, COLOR_WHITE, "3.000.000$."); SendClientMessage(playerid, COLOR_WHITE, "3 LVL."); SendClientMessage(playerid, COLOR_WHITE, "Все лицензии."); PlayerInfo[playerid][pLevel] = 3; // Где 3 это уровень, если хотите уровень больше или меньше меняйте 3 на ваш уровень. GivePlayerMoney(playerid, 3000000); // 3000000 - это количество денег, которое выдаст вам. PlayerInfo[playerid][pCarLic] = 1; // Лицензия на вождение. PlayerInfo[playerid][pFlyLic] = 1; // Лицензия на воздушный транспорт. PlayerInfo[playerid][pMotoLic] = 1; // Лицензия на мотовождения. PlayerInfo[playerid][pBoatLic] = 1; // Лицензия на водное вождение. PlayerInfo[playerid][pFishLic] = 1; // Лицензия на рыбалку. PlayerInfo[playerid][pGunLic] = 1; // Лицензия на оружие. } 4)И последним нашим действием будет создания 3D текста для бонуса: для этого в public OnGameModeInit добавим следующее: Create3DTextLabel("Название 3D Текста",0x008080FF ,X ,Y, Z); // Где X,Y,Z там ваша координата. Ну вот и всё.Как видите ничего сложного .Данная функция прекрасно работает на сrmp.Авто:ERL Если подобная тема существует,извиняюсь,но на данном портале не видел похожего
×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.