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

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

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

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

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

Тип контента


Форумы

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

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

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


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

  • Начало

    Конец


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

  • Начало

    Конец


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

Найдено: 1,808 результатов

  1. Для начала создадим переменные new new SelectedSkin[MAX_PLAYERS]; new Text: SelectSkin[3]; [spoiler=Открой] Далее в public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) [spoiler=Открой] Далее в public OnPlayerClickTextDraw(playerid, Text: clickedid) public OnPlayerClickTextDraw(playerid, Text: clickedid) { if(clickedid == SelectSkin[1])//Выбор скина { switch(SelectedSkin[playerid]) { case 1: { SelectedSkin[playerid] = 2; PlayerInfo[playerid][pSkin] = 79; SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); } case 2: { SelectedSkin[playerid] = 3; PlayerInfo[playerid][pSkin] = 137; SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); } case 3: { SelectedSkin[playerid] = 4; PlayerInfo[playerid][pSkin] = 200; SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); } case 4: { SelectedSkin[playerid] = 5; PlayerInfo[playerid][pSkin] = 160; SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); } case 5: { SelectedSkin[playerid] = 1; PlayerInfo[playerid][pSkin] = 78; SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); } case 6: { SelectedSkin[playerid] = 7; PlayerInfo[playerid][pSkin] = 129; SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); } case 7: { SelectedSkin[playerid] = 8; PlayerInfo[playerid][pSkin] = 130; SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); } case 8: { SelectedSkin[playerid] = 9; PlayerInfo[playerid][pSkin] = 10; SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); } case 9: { SelectedSkin[playerid] = 10; PlayerInfo[playerid][pSkin] = 39; SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); } case 10: { SelectedSkin[playerid] = 6; PlayerInfo[playerid][pSkin] = 77; SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); } } } else if(clickedid == SelectSkin[0])//Выбор скина { switch(SelectedSkin[playerid]) { case 1: { SelectedSkin[playerid] = 5; PlayerInfo[playerid][pSkin] = 78; SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); } case 5: { SelectedSkin[playerid] = 4; PlayerInfo[playerid][pSkin] = 160; SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); } case 4: { SelectedSkin[playerid] = 3; PlayerInfo[playerid][pSkin] = 200; SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); } case 3: { SelectedSkin[playerid] = 2; PlayerInfo[playerid][pSkin] = 137; SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); } case 2: { SelectedSkin[playerid] = 1; PlayerInfo[playerid][pSkin] = 79; SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); } case 6: { SelectedSkin[playerid] = 10; PlayerInfo[playerid][pSkin] = 77; SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); } case 10: { SelectedSkin[playerid] = 9; PlayerInfo[playerid][pSkin] = 39; SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); } case 9: { SelectedSkin[playerid] = 8; PlayerInfo[playerid][pSkin] = 10; SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); } case 8: { SelectedSkin[playerid] = 7; PlayerInfo[playerid][pSkin] = 130; SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); } case 7: { SelectedSkin[playerid] = 6; PlayerInfo[playerid][pSkin] = 129; SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); } } } else if(clickedid == SelectSkin[2])//Выбор скина { for(new i; i != 3; i++) TextDrawHideForPlayer(playerid, SelectSkin[i]); SelectedSkin[playerid] = 0; account[playerid] = false; MOROZ(1) SavePlayer(playerid); CancelSelectTextDraw(playerid); SetPlayerSpawn(playerid); } return true; } [spoiler=Открой] Создадим сами TD в конец мода. stock TextDraws() { // Выбор скина SelectSkin[0] = TextDrawCreate(50.0, 200.0, "LD_BEAT:left"); TextDrawFont(SelectSkin[0], 4); TextDrawTextSize(SelectSkin[0], 50, 25); TextDrawColor(SelectSkin[0], -16776961); TextDrawSetSelectable(SelectSkin[0], 1); SelectSkin[1] = TextDrawCreate(530.0, 200.0, "LD_BEAT:right"); TextDrawFont(SelectSkin[1], 4); TextDrawTextSize(SelectSkin[1], 50, 25); TextDrawColor(SelectSkin[1], -16776961); TextDrawSetSelectable(SelectSkin[1], 1); SelectSkin[2] = TextDrawCreate(290.581390, 377.916748, "Select"); TextDrawLetterSize(SelectSkin[2], 0.491228, 2.224167); TextDrawAlignment(SelectSkin[2], 1); TextDrawColor(SelectSkin[2], -16776961); TextDrawSetShadow(SelectSkin[2], 0); TextDrawSetOutline(SelectSkin[2], 0); TextDrawBackgroundColor(SelectSkin[2], 51); TextDrawFont(SelectSkin[2], 2); TextDrawSetProportional(SelectSkin[2], 1); TextDrawSetSelectable(SelectSkin[2], 1); } в public OnGameModeInit() TextDraws();//Сток с TD Ко всем #define #define SCM SendClientMessage//Отправка сообщения в чат #define SPD ShowPlayerDialog//Показ диалога #define DSL DIALOG_STYLE_LIST//Тип диалога(Список) #define DSM DIALOG_STYLE_MSGBOX//Тип диалога(Информация) #define DSI DIALOG_STYLE_INPUT//Тип диалога(Ввод чего-либо) #define MOROZ(%0) TogglePlayerControllable(playerid, %0); Надеюсь все понимают для чего юзается pSkin и pSex, pSkin - это скин. pSex - это пол Автор : Vano Glad p.s. Либо полетел сайт либо хз, что, через некоторое время выложу диалог, https://imgur.com/a/rE53i https://imgur.com/a/S6u6w Вот такая хрень. //удалите потом то что русским написано case 7: { if(response) { if(PlayerInfo[playerid][pSex] == 1) { SelectdSkin[playerid] = 1; PlayerInfo[playerid][pSkin] = 79; } else { SelectdSkin[playerid] = 6; PlayerInfo[playerid][pSkin] = 77; } Login[playerid] = 1; SpawnPlayer(playerid); SetPlayerPos(playerid, 222.3489,-8.5845,1002.2109); SetPlayerFacingAngle(playerid, 266.7302); SetPlayerCameraPos(playerid, 222.3489 + 3,-8.5845,1002.2109); SetPlayerCameraLookAt(playerid, 222.3489,-8.5845,1002.2109); MOROZ(0) SetPlayerVirtualWorld(playerid, playerid); SetPlayerInterior(playerid, 5); SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); for(new i; i != 3; i++) TextDrawShowForPlayer(playerid, SelectSkin[i]); SelectTextDraw(playerid, 0xFF0000AA); } else { SPD(playerid, 2, DSI, "{FFFF00}Skype", "{FFFFFF}Введите свой Skype\nSkype потребуется для восстановления данных", "Далее", "Выход"); } }
  2. Ко всем переменным new new GruzPickUp; new GruzRabota[MAX_PLAYERS]; new GruzSkin[MAX_PLAYERS]; В OnGameModeInit(); GruzPickUp = CreatePickUp(1275, 23, x, y, z,);//Место устройства на работу x, y, z - свои координаты Create3DTextLabel("Устройство на работу грузчика", 0xFFFFFFFF, x, y, z, 6.5, 0);// x, y, z - свои координаты В OnPlayerPickUpPickup(playerid, pickupid) if(pickupid = GruzPickup) { if(GruzRabota[playerid] == 0) { SPD(playerid, 1, DSM, "{FFFFFF}Устройство на работу", "Вы действительно хотите устроиться на работу грузчика", "Согласен", "Отмена"); } else { SPD(playerid, 1, DSM, "{FFFFFF}Увольнение с работы", "Вы действительно хотите уволиться с работы грузчика", "Да", "Нет"); } } В OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) if(dialogid == 1) { if(!response) return true; if(GruzRabota[playerid] = 0) { GruzRabota[playerid] = 1; GruzSkin[playerid] = GetPlayerSkin(playerid); SetPlayerSkin(playerid, 260); SetPlayerCheckpoint(playerid, x, y, z, 1.5);// x, y, z - свои координаты SCM(playerid, 0xFFFF00FF, "Вы успешно устроились на работу грузчика!"); SCM(playerid, 0xFF8000FF, "Теперь отправляйтесь за мешками. Место обозначено на карте!"); return 1; } else { GruzRabota[playerid] = 0; SetPlayerSkin(playerid, 260); DisablePlayerCheckpoint(playerid); SCM(playerid, 0xFF8000FF, "Вы успешно уволились с работы грузчика"); } } Далее в OnPlayerEnterCheckpoint(playerid) if(GruzRabota[playerid] == 1) { SCM(playerid, 0xFFFFFFFF, "Вы успешно взяли мешок, отправляйтесь на склад!"); DisablePlayerCheckpoint(playerid); GruzRabota[playerid] == 2; SetPlayerCheckpoint(playerid, x, y, z);// x, y, z - свои координаты return true; } if(GruzRabota[playerid] == 2) { new money = random(150); GivePlayerMoney(playerid, money); DisablePlayerCheckpoint(playerid); SetPlayerCheckpoint(playerid, x, y, z);// x, y, z - свои координаты GruzRabota[playerid] == 1; SCM(playerid, 0xFFFFFFFF, "Вы успешно принесли мешок, теперь отправляйтесь за другим мешком.!"); return true; } В OnPlayerConnect(playerid) GruzRabota[playerid] == 0; GruzSkin[playerid] == 0; Если будет ругаться на SCM, SPD, DSM, то в #define SCM SendClientMessage #define SPD ShowPlayerDialog #define DSM DIALOG_STYLE_MSGBOX АВТОР: Я. Т.е. ВУДИК или же Vladimir_Kulkov Сразу скажи, что это основа только лишь. Нет выдачи "мешков" стоит рандомная функция выдачи денег за один мешок. И нужно добавить будет таймер на пикап устройства, т.к. он не дает уйти от того места где устроился. Так же где SPD(playerid, 1, DSM, "{FFFFFF}Увольнение с работы", "Вы действительно хотите уволиться с работы грузчика", "Да", "Нет"); Вам нужно будет поменять id диалога. я поставил 1. Если хотите могу дописать все полностью. Раз уж Dexter`у не понадобилось, я сливаю в открытый доступ
  3. #Rips

    TDE - TextDraw Editor v1.15

    Доброе время суток, пользователи портала CR-MP.RU Сегодня я выложу TDE - TextDraw Editor v1.15 переведенный под Criminal Russia Автор данного TDE: andri1 Перевел под CRMP: #Salev & #Rips Официальный TDEditor под SAMP: Перейти на оф. форум SA-MP Скачать переведенный TDEditor под CRMP: YandexDisk КОПИРОВАНИЕ НА ДРУГИЕ ПОРТЫ ЗАПРЕЩЕНО! Что было сделано: 1. Переведен весь текст данного файла 2. Убраны превью модели Какие имеются недоработки: 1. При передвижение Textdraws могут пропасть, и приходиться удалять пропавший TextDraw, и делать заново копию 2. При свертки игры иногда дублируется TextDraw без Вашего ведома. Чтобы такого не было, перед свертки игры запускайте manager(диалог со списком TD) и не закрывайте до того, как Вы не откроете снова игру Что нужно для запуска TDEditor: 1. Вам нужно установить Microsft Studio C++ 2010 года | Скачать 2. Закинуть папку со скриптом куда, Вам пожелается Видео обзор:
  4. #Rips

    GTA Role Play | Version 0.18

    Доброе время суток, пользователи портала cr-mp.ru Я хочу выложить свою небольшую копию GTA Role Play | Version 0.18. Автор данной копии: #Salev | #Rips Копирование на другие порталы запрещено! Скачать с Яндекс.Диск Информация о игровом моде: Подключенные плагины: MYSQL r39-2 Sscanf2 2.8.1 MD5 DC_CMD 2.8 Streamer 2.7.4 Regex Имеется в игровом моде: 1. Написана выдача административных прав 2. Исправлен баг со сливом денег, раньше при вводе - или + можно было получить такую же сумму, которая имеется у Вас на руках 3. Написано сохранение игрового аккаунта - UpdatePlayerData(playerid, "название параметра", данные которые будут сохраняться); 4. Исправлен с авторизацией, когда один игрок выходи из сервера, то другой игрок сразу спавнился с его данными. Теперь такого не будет 5. Добавлен таймер на авторизацию игрового аккаунта. У Вас будет ровно 1 минута на авторизацию 6. Написана команда блокировки игрового аккаунта, а так же разблокировка игрового аккаунта 7. Добавлена настройка смена игрового пароля от аккаунта 8. Добавлена система Payday, репутации(exp) 9. Добавлена читерская панель - SH - SpeedHack: speedhack car, speedhack быстрого персонажа - TP - Teleport: Fly, AirBreak, TP по метке - P.s данные панели пока что не работают, в следющих версиях буду писать уже анти чит 10. Добавлена система бизнесов - Добавление через игру командой /aedit 11. Добавлена систему блокировки игрового чата, так же его снятие 12. Добавлены новые административные команды: - /makeadmin [Игровой ник игрока] [Уровень] - Выдать административные права - /ban [playerid] [количество дней] [Причина] - Выдать блокировку игрового аккаунта игрока - /unban [Игровой ник игрока] - Разблокировать игровой аккаунт игрока - /mute [playerid] [количество минут] [Причина] - Выдать блокировку игрового чата - /unmute [playerid] - Снять блокировку игрового чата - /alogin - Регистрация/Авторизация административного пароля - /aedit - Административный центр для разработчиков P.s доступна только тем, кто прописан в игровом моде 13. Начато написание лидерские прав (5/100%) 14. Написана обмен игровой валюты, узнать баланс игрового аккаунта(рублей), информация при пополнение игрового баланса Немного о система предприятиях(бизнесев): В данной системе есть тока добавление самого бизнеса, вход в бизнес и выход из него. В следующих версиях будет писать покупка бизнеса, панель бизнеса, заказ продуктов. Что отсутствует в данной копии: 1. Не все диалоги дописаны (в след версиях все допишу) 2. Работ: шахтера, инкассатора, доставщика пиццы, оружейного завода, ферм и т.д.. | P.s из-за маппинга 3. Система сытости, бодрости, веса, выносливости 4. Выбора спавна при авторизации на сервер 5. Система квартир, домов 6. Системы бонусного дня(x2 exp, payday, donate) 7. Что желаю я добавить? Добавить систему подарков, которые игроки смогут собирать и обменивать у NPC [spoiler=ScreenShot игрового мода]
  5. BaseMussel29

    Online RolePlay | Original - versions

    Всех приветствую , хочу вам предоставить мод: Online RolePlay , мод имеет две версии: 2014 года, 2015 года. Обе версии были написаны с 0, в дальнейшем версия 2015 года перешла в проект NFRP. 2014 года версия - не порезанный мод который в сети, 2015 - я выше все сказал. Если вы будете брать для дал. разработки , то советую использовать 2014 года версию, 2015 очень сырая Скачать: https://yadi.sk/d/R-Gl--Qx3MGZBh
  6. #GOBLIN

    Online RolePlay 2015 версия

    Командный процессор : DC-CMD Мод состоит из 23177 строк. Код очень оптимизирован. Есть пояснения к каждой системе в самом коде( // ) В моде есть весь мапиинг(интерьеры фракций и т.п) Очень много всяких "новых" систем. Мне понравилась система гостиниц. Все валюты на сервере подстроены под реальное имущество. Так же есть система прицепов для личных машин. Так же очень многофункциональная система домов. Несколько классов домов. Можно покупать улучшения, перетаскивать шкаф, изменять параметры. Мод очень хорош под вырезку, но ещё недоведён до ума. Малая часть пунктов/работ/общественных мест, которые есть в моде: Общественные места: Автошкола Военкомат Гостиница Отдел кадров Авторынок эконом класса Авторынок среднего класса Авторынок премиум класса Мото-Вело рынок Арзамас Батырево Бусаево (школа) Бусаево (село) Гарель Роговичи Лыткарино Новое Эдово Транспортные узлы: Ж/Д Вокзал Арзамаса Автовокзал Арзамаса Центральная автостанция (автопарк) Автовокзал Батырево Автовокзал Лыткарино Автовокзал Эдово Аэропорт Батырево Аэропорт Лыткарино Государственные организации: Правительство области Отдел полиции №1 (ДПС) Отдел полиции №2 (ППС) Федеральная Служба Безопасности Городская больница ГТРК «Ритм» Воинская часть Работы: Городской склад (работа грузчика) Шахта (работа шахтера) Лесопилка (работа лесоруба) Завод по производству продуктов Нефтедобывающий завод Нефтеперерабатывающий завод Автопарк для дальнобойщиков (продукты) Автопарк для дальнобойщиков (топливо) Пожарная станция №1 Пожарная станция №2 Автомеханики Банки: Центральный банк Арзамаса Банк Батырево Банк Эдово (частный) Развлечения: Райский остров Областной дом культуры Гоночная трасса для картинга Гоночная трасса для мотоциклов Гоночная трасса для катеров Игровой клуб Арзамаса (в разработке) Игровой клуб Батырево (в разработке) Игровой клуб Лыткарино (в разработке) Пляж "Кордон" Пляж "Анашан" Пляж "Роговичи" Парк Арзамаса Интересные места: Кремль Густой лес Охотничий лес Стадион Арзамаса Старый наркопритон Маяк на берегу моря Центральное кладбище Закрытая электростанция Подземный туннель в метро Бомбоубежище в аэропорту Заброшенный торговый центр Фракции: Правительство области Воинская часть Городская больница ГТРК «Ритм» Отдел полиции №1 (ДПС) Отдел полиции №2 (ППС) Федеральная Служба Безопасности Арзамасская ОПГ Батыревская ОПГ Лыткаринская ОПГ Системы: Система предложений Система управления транспортом Система банкомата Система багажника Система прицепа Система репортов Система улучшения игрока Система доната Система GPS Система домов Система гостиниц Система подъездов Система обучения в АШ Система бизнесов Система анимаций Система личного телефона Система АЗС Система по управлению экономики Система меню игрока Система советника Автор слива: #GOBLIN Ссылка: https://yadi.sk/d/xBjMA3ym3MCE2Y
  7. #Rips

    GTA Role Play | Version 0.12

    Доброе время суток, пользователи портала cr-mp.ru Я хочу выложить свою небольшую копию GTA Role Play. Автор данной копии: #Salev | #Rips Копирование на другие порталы запрещено! Скачать: YandexDisk Информация о игровом моде: Подключенные плагины: MYSQL r39-2 Sscanf2 2.8.1 MD5 DC_CMD 2.8 Streamer 2.7.4 Regex Имеется в игровом моде: 1. Система регистрации/авторизации аккаунта 2. Система спидометра | Включение/Выключение двигателя, и фар. 3. Имеется одна работа грузчика 4. Система AFK away from keyboard 5. Система личных настроек(временные данные, до перезахода на сервер): Включение/выключение часов Включение/выключение отображения спидометра Изменение языка спидометра Английский/Русский Включение/Выключение показателя пинга 6. Система смена игрового ник нейма с одобрение администрации P.s все измененные игровые ники записываются в базу данных 7. Несколько игровых команд для администрации: /ahelp - Узнать доступные команды /kick - Отсоединить игрока от сервера /veh - Создать автомобиль /delveh - Удалить автомобиль /alldelveh - Удалить все автомобили созданные администрацией /setweather - Смена игровой погоды /settime - Смена игрового времени /setvw - Смена игрового виртуального мира /setint - Смена интерьера /slap - Дать поджопник игроку /admin(/a) - Административные чат /ooc - Общий чат сервера(для администрации с 1 по 5 уровень) /msg - Оповещение для игроков сервера от администрации(с 6 уровня) /setname - Одобрение на смену игрового ника /loadfs - Активировать filescript /unloadfs - Деактивировать загрузку filescript 8. Несколько игровых команд для игроков: /menu(/mn,/mm) - Игровое меню игрока /id - Узнать ид игрока по игровому ник нейму или по playerid /showud - Показатель удостоверение(доступно будет тока во фракции) /showpass - Показать документы(паспорт) игроку /n(/b) - NonRP Chat | OOC Chat /me - Обозначает действие, эмоции либо прочие подробности персонажа от 3го лица. /do - Предназначена для описания событий и подробностей игрового мира в настоящем времени, не относящихся конкретно к определённым игрокам, либо относящихся, но обезличенно и только к игроку /todo - Команда для отыгровки действия вместе с фразой персонажа. /try - Действие с вероятным успехом /s - Кричать /w - Шептать /time - Узнать время Что отсутствует в данной копии: 1. Сохранение игрового аккаунта 2. Настройки безопасности 3. Система дополнительных услуг 4. Не все диалоги дописаны (в след версиях все допишу) 5. Работ: шахтера, инкассатора, доставщика пиццы, оружейного завода, ферм и т.д.. 6. Система сытости, бодрости, веса, выносливости 7. Система лидерских прав 8. Система payday'я 9. Выбора спавна при авторизации на сервер 10. Таймера при входе на сервер на одному минуту 11. Систсема квартир,домов и бизнесов [spoiler=ScreenShot игрового мода] http://i.imgur.com/xkr5OWm.png http://i.imgur.com/mCyEYxV.png http://i.imgur.com/nCNEybi.png http://i.imgur.com/9J5Flws.jpg http://i.imgur.com/rnAbIth.png http://i.imgur.com/JJ5TvO0.png http://i.imgur.com/lW1bKhf.png http://i.imgur.com/sW59bSn.jpg
  8. TD_sliv.pwn Автор: MOPTTEX a.k.a Alonso Автор Идеи: ShiGanKa [spoiler=Скрин]
  9. ПавелКубанец

    Lagen RP доработка "Game of life"

    Сливаю мод "Lagen RP" Моя доработка "Game of life" Мод на системе "MiXiNi" Примечание: Доработанны/исправлены команды "ВНИМАНИЕ"!: Варинги не влияют на запуск сервера! Чтобы выдать доступ ко всем командам нужно в павно нажать на бинокль и написать: Ваш_Ник затем меняете на свой ник. Автор доработки: Александр Акимов ________________Добавлено_________________ Команды: /skick /jetpack /veh /delveh /delakk FS: /Iphone (айфон 5s), /tablet (планшет), /selfie (селфи) МП система (нужно доработать) ________________Добавлено_________________ 12 уровней администрации. 12 фракций. Оригинальный маппинг. Весь код лесенкой. Система автополучения гос.номеров и тех.осмотра. Система игровых автоматов. Система больницы. Работы: Дальнобойщик. Инкассатор. Таксист. Водитель маршрутки. Мусоровоз. Сборщик оружия. Ссылка https://yadi.sk/d/-p6shS2o3KWaQi
  10. SCRIPTMAN

    /ticket(выдать штраф)

    Привет всем. Сейчас научу вас писать команду /ticket - выдать штраф, команда простая, но возможно кто-то не умеет её писать. Писать я буду на DC_CMD. 1. Для начала создаем команду и пихаем туда проверка, я буду брать со своего мода: CMD:ticket(playerid, params[]) { if(Player[playerid][pMember] != 1) return SCM(playerid, COLOR_GREY, "Вы не уполномочены использовать данную команду!"); if(sscanf(params, "iis[128]", params[0], params[1], params[2])) return SCM(playerid, COLOR_WHITE, "Введите: /ticket [id] [сумма] [причина"); if(!IsPlayerConnected(params[0])) return SCM(playerid, COLOR_GREY, "Игрок не найден!"); if(login_check[params[0]] == false) return SCM(playerid, COLOR_GREY, "Игрок не авторизован!"); if(params[0] == playerid) return SCM(playerid, COLOR_GREY, "Вы указали свой ID!"); if(GetDistanceBetweenPlayers(playerid, params[0]) > 10.0) return SCM(playerid, COLOR_GREY, "Игрок далеко от вас!");//Проверка на дистанцию if(params[1] < 0 || params[1] > 50000) return SCM(playerid, COLOR_GREY, "Не менее 1-го и не больее 50000-ти тысяч рублей.");//проверка на деньги Проверки я так думаю объяснять не нужно, они и так понятны по тексту. 2. Делаем текст с помощью static const: (с данной функцией можно ознакомиться в данной теме) static const fmt_str[] = "\ Сотрудник полиции %s выписал вам штраф\ \nРазмером в %d рублей\n\ \nПричина: %s\n\ \nОплатить штраф?\ "; new string[sizeof(fmt_str)-2+MAX_PLAYER_NAME-2+5-2+133]; format(string, sizeof(string), fmt_str , Player[playerid][pName], params[1] ); SPD(params[0], id диалога, DSM, "Штраф", string, "Да", "Нет"); Почему у меня несколько строк? - мне так удобнее и понятнее, думаю вам тоже. Дальше нам нужно работать с диалогами, но у них не прокатит params, для этого я создам PVar'ы, так как их не нужно удалять при выходе из игры игрока, как-то так короче В общем, создаем, я назову их TicketPlayer - человек, который выписывает штраф и TicketPrice - сумма штрафа. 3. Создаем PVar'ы: SetPVarInt(params[0], "TicketPlayer", playerid); SetPVarInt(params[0], "TicketPrice", params[1]); Не забываем завершать действие, чтобы не шло дальше, для этого просто добавляем в конец команды "return true;" 4. Из этого всего мы получаем такую вот команду: CMD:ticket(playerid, params[]) { if(Player[playerid][pMember] != 1) return SCM(playerid, COLOR_GREY, "Вы не уполномочены использовать данную команду!"); if(sscanf(params, "iis[128]", params[0], params[1], params[2])) return SCM(playerid, COLOR_WHITE, "Введите: /ticket [id] [сумма] [причина"); if(!IsPlayerConnected(params[0])) return SCM(playerid, COLOR_GREY, "Игрок не найден!"); if(login_check[params[0]] == false) return SCM(playerid, COLOR_GREY, "Игрок не авторизован!"); if(params[0] == playerid) return SCM(playerid, COLOR_GREY, "Вы указали свой ID!"); if(GetDistanceBetweenPlayers(playerid, params[0]) > 10.0) return SCM(playerid, COLOR_GREY, "Игрок далеко от вас!"); if(params[1] < 0 || params[1] > 50000) return SCM(playerid, COLOR_GREY, "Не менее 1-го и не больее 50000-ти тысяч рублей."); static const fmt_str[] = "\ Сотрудник полиции %s выписал вам штраф\ \nРазмером в %d рублей\n\ \nПричина: %s\n\ \nОплатить штраф?\ "; new string[sizeof(fmt_str)-2+MAX_PLAYER_NAME-2+5-2+133]; format(string, sizeof(string), fmt_str , GN(playerid), params[1] ); SPD(params[0], id диалога, DSM, "Штраф", string, "Да", "Нет"); SetPVarInt(params[0], "TicketPlayer", playerid); SetPVarInt(params[0], "TicketPrice", params[1]); return true; } 5. Переходим к работе с диалогом, для этого создаем диалог со свободным ID, дальше добавляем PVar'ы, точнее присваиваем к переменным: case id: //у вас возможно будет if(dialogid == id диалога) { new playerd = GetPVarInt(playerid, "TicketPlayer"); new price = GetPVarInt(playerid, "TicketPrice"); Дальше делаем действие на правую кнопку, то есть, если он нажмет "Да". 6. Для начала делаем проверку, есть ли данная сумма для оплаты у игрока: if(response) { if(Player[playerid][pMoney] < price) { SCM(playerd, COLOR_GREY, "У игрока недостаточно денег!"); SCM(playerid, COLOR_GREY, "У вас недостаточно денег!"); return true; } 7. Теперь, если у игрока есть деньги, отнимем у него данную сумму, а нам отдадим: Player[playerd][pMoney] += price; Player[playerid][pMoney] -= price; Player[playerid][pTicket_op] += 1;//можете её пока удалить, это у игрока появляется уже +1 оплаченный штраф, позже сделаю урок 8. Теперь сам текст: static const fmt_str[] = "%s оплатил штраф в размере %d рублей."; new string[sizeof(fmt_str)+2+MAX_PLAYER_NAME-2+5]; format(string, sizeof(string), fmt_str, GN(playerid), price); SCM(playerd, COLOR_GREEN, string); static const fmt_str_2[] = "Вы оплатили штраф в размере %d рублей."; new string_2[sizeof(fmt_str_2)-2+5]; format(string_2, sizeof(string_2), fmt_str_2, price); SCM(playerid, COLOR_GREEN, string_2); } 9. Теперь делаем действие на левую кнопку мыши, если игрок нажал "Нет": else { SCM(playerd, COLOR_RED, "Игрок отказался оплачивать штраф."); SCM(playerid, COLOR_RED, "Вы отказались оплачивать штраф."); Player[playerid][pTicket_no] += 1;//можете пока удалить, это +1 неоплаченный штраф DeletePVar(playerid, "TicketPlayer"), DeletePVar(playerid, "TicketPrice"); } То есть, вывели текст, прибавили неоплаченный штраф и удалили PVar'ы 10. В итоге у нас получается так: case id: { new playerd = GetPVarInt(playerid, "TicketPlayer"); new price = GetPVarInt(playerid, "TicketPrice"); if(response) { if(Player[playerid][pMoney] < price) { SCM(playerd, COLOR_GREY, "У игрока недостаточно денег!"); SCM(playerid, COLOR_GREY, "У вас недостаточно денег!"); return true; } Player[playerd][pMoney] += price; Player[playerid][pMoney] -= price; Player[playerid][pTicket_op] += 1; static const fmt_str[] = "%s оплатил штраф в размере %d рублей."; new string[sizeof(fmt_str)+2+MAX_PLAYER_NAME-2+5]; format(string, sizeof(string), fmt_str, GN(playerid), price); SCM(playerd, COLOR_GREEN, string); static const fmt_str_2[] = "Вы оплатили штраф в размере %d рублей."; new string_2[sizeof(fmt_str_2)-2+5]; format(string_2, sizeof(string_2), fmt_str_2, price); SCM(playerid, COLOR_GREEN, string_2); } else { SCM(playerd, COLOR_RED, "Игрок отказался оплачивать штраф."); SCM(playerid, COLOR_RED, "Вы отказались оплачивать штраф."); Player[playerid][pTicket_no] += 1; DeletePVar(playerid, "TicketPlayer"), DeletePVar(playerid, "TicketPrice"); } } Ну вот и все, в следующем уроке сделаем штрафы оплаченные и неоплаченные. Автор: SCRIPTMAN
  11. Vladimir_Kulkov

    Спидометр(простой)

    Вот простенький спидометр. Спидометр: - Скорость - Марка - бензин - Шкала скорости Спидометр находится в нижнем правом углу
  12. Vladimir_Kulkov

    Захват Ганг Зон

    Гангзону нельзя захватить если игрок(и) этой банды не онлайн Чтобы захватить гангзону введите /capture ждете 2 минуты (на подготовку) и стреляетесь, если вы всех убили и их на ГангЗоне нету то территория будет принадлежать вам. Ну так вот, начнем: Ко всем new: new Float:STANDARTGangZone[49][4] = { {0.0, 0.0,0.0, 0.0}, {2577.861572, -1056.913940, 2787.590087, -898.770690}, {2368.133056, -1056.913940, 2577.861572, -898.770690}, {2158.404541, -1056.913940, 2368.133056, -898.770690}, {1948.676025, -1056.913940, 2158.404541, -898.770690}, {1738.947509, -1056.913940, 1948.676025, -898.770690}, {2787.590087, -1056.913940, 2997.318603, -898.770690}, {2787.590087, -1215.057128, 2997.318603, -1056.913940}, {2787.590087, -1373.200439, 2997.318603, -1215.057128}, {2787.590087, -1531.343750, 2997.318603, -1373.200439}, {2787.590087, -1689.486938, 2997.318603, -1531.343750}, {2787.590087, -1847.630126, 2997.318603, -1689.486938}, {2787.590087, -2005.773437, 2997.318603, -1847.630126}, {2787.590087, -2163.916503, 2997.318603, -2005.773437}, {2577.861572, -1215.057128, 2787.590087, -1056.913940}, {2577.861572, -1373.200439, 2787.590087, -1215.057128}, {2577.861572, -1531.343750, 2787.590087, -1373.200439}, {2577.861572, -1689.486938, 2787.590087, -1531.343750}, {2577.861572, -1847.630126, 2787.590087, -1689.486938}, {2577.861572, -2005.773437, 2787.590087, -1847.630126}, {2577.861572, -2163.916503, 2787.590087, -2005.773437}, {2368.133056, -1215.057128, 2577.861572, -1056.913940}, {2368.133056, -1373.200439, 2577.861572, -1215.057128}, {2368.133056, -1531.343750, 2577.861572, -1373.200439}, {2368.133056, -1689.486938, 2577.861572, -1531.343750}, {2368.133056, -1847.630126, 2577.861572, -1689.486938}, {2368.133056, -2005.773437, 2577.861572, -1847.630126}, {2368.133056, -2163.916503, 2577.861572, -2005.773437}, {2158.404541, -1215.057128, 2368.133056, -1056.913940}, {2158.404541, -1373.200439, 2368.133056, -1215.057128}, {2158.404541, -1531.343750, 2368.133056, -1373.200439}, {2158.404541, -1689.486938, 2368.133056, -1531.343750}, {2158.404541, -1847.630126, 2368.133056, -1689.486938}, {2158.404541, -2005.773437, 2368.133056, -1847.630126}, {2158.404541, -2163.916503, 2368.133056, -2005.773437}, {1948.676025, -1215.057128, 2158.404541, -1056.913940}, {1948.676025, -1373.200439, 2158.404541, -1215.057128}, {1948.676025, -1531.343750, 2158.404541, -1373.200439}, {1948.676025, -1689.486938, 2158.404541, -1531.343750}, {1948.676025, -1847.630126, 2158.404541, -1689.486938}, {1948.676025, -2005.773437, 2158.404541, -1847.630126}, {1948.676025, -2163.916503, 2158.404541, -2005.773437}, {1738.947509, -1215.057128, 1948.676025, -1056.913940}, {1738.947509, -1373.200439, 1948.676025, -1215.057128}, {1738.947509, -1531.343750, 1948.676025, -1373.200439}, {1738.947509, -1689.486938, 1948.676025, -1531.343750}, {1738.947509, -1847.630126, 1948.676025, -1689.486938}, {1738.947509, -2005.773437, 1948.676025, -1847.630126}, {1738.947509, -2163.916503, 1948.676025, -2005.773437} }; new OnZONE[49][20]; new ZoneOnBattle[49]; new ZoneTimer[49]; new allowedfactions[] = { 13,14,16,19,15}; new GZSafeTime[49]; enum GzoneInfo { gID, Float:gCoords[4], gFrakVlad, gNapad, } new GZInfo[49][GzoneInfo]; new FrakCD[20]; Ко всем forward'ам: forward LoadGZ(); forward SaveGZ(); forward GzCheck(); forward PlayerToKvadrat( playerid, Float:min_x, Float:min_y, Float:max_x, Float:max_y ); Ко всем stock: stock GetGangZoneColor(gangzonex) { new zx; switch(GZInfo[gangzonex][gFrakVlad]) { case 13: zx =0x00FF1465; case 14: zx = 0x00EBFF65; case 16: zx =0xFF00EB65; case 19: zx =0x0087FF65; case 15: zx =0xFFC80065; default: zx = 0xFFBE0065; } return zx; } stock GetGZColorF(fnumber) { new zx; switch(fnumber) { case 13: zx =0x00FF1465; case 14: zx = 0x00EBFF65; case 16: zx =0xFF00EB65; case 19: zx =0x0087FF65; case 15: zx =0xFFC80065; } return zx; } stock IsInAllowed(playerid) { for(new i =0;i<sizeof(allowedfactions);i++) { if(PlayerInfo[playerid][pMember] == allowedfactions[i]||PlayerInfo[playerid][pLeader] == allowedfactions[i]) return 1; } return 0; } stock IsInAllowedF(fnumbers) { for(new i =0;i<sizeof(allowedfactions);i++) { if(fnumbers == allowedfactions[i]) return 1; } return 0; } stock GetGangName(fnumbwer) { new string[256]; switch(fnumbwer) { case 13: format(string,sizeof(string),"Grove Street Gang"); case 14: format(string,sizeof(string),"Los Aztecas Gang"); case 16: format(string,sizeof(string),"The Ballas Gang"); case 19: format(string,sizeof(string),"SF Rifa Gang"); case 15: format(string,sizeof(string),"Los Santos Vagos Gang"); } return string; } stock IsPlayerInBandOnline(bandid) { for(new i=0; i < GetMaxPlayers(); i++) { if(PlayerInfo[i][pMember] == bandid || PlayerInfo[i][pLeader] == bandid) return 1; } return 0; } stock Name(playerid) { new pl[24]; GetPlayerName(playerid,pl,24); return pl; } Ко всем public: public LoadGZ() { new string[256]; new File = iniOpen("GangZonesTrigga.ini"); new l[256]; new asd[5][10]; for(new i =0;i<sizeof(GZInfo);i++) { format(string,sizeof(string),"Zone%d",i); new x = iniGet(File,string,l); if(x < 0) { GZInfo[i][gCoords][0] = STANDARTGangZone[i][0]; GZInfo[i][gCoords][1] = STANDARTGangZone[i][1]; GZInfo[i][gCoords][2] =STANDARTGangZone[i][2]; GZInfo[i][gCoords][3] =STANDARTGangZone[i][3]; } else { split(l,asd,'|'); GZInfo[i][gCoords][0] = floatstr(asd[0]); GZInfo[i][gCoords][1] = floatstr(asd[1]); GZInfo[i][gCoords][2] = floatstr(asd[2]); GZInfo[i][gCoords][3] = floatstr(asd[3]); } GZInfo[i][gFrakVlad] = strval(asd[4]); if(GZInfo[i][gFrakVlad] == 0) GZInfo[i][gFrakVlad] = allowedfactions[random(sizeof(allowedfactions))]; GZInfo[i][gID] = GangZoneCreate(GZInfo[i][gCoords][0],GZInfo[i][ gCoords][1],GZInfo[i][gCoords][2],GZInfo[i] [gCoords][3]); ZoneOnBattle[i] =0; GZSafeTime[i] =0; } iniClose(File); print("Система гангзон успешно загружена!"); } public SaveGZ() { new string[256]; new File = iniOpen("GangZonesTrigga.ini"); new l[10]; for(new i =0;i<sizeof(GZInfo);i++) { format(l,sizeof(l),"Zone%d",i); format(string,sizeof(string),"%f|%f|%f|%f|%d",GZInfo[i][gCoords] [0], GZInfo[i][gCoords][1],GZInfo[i][gCoords][ 2],GZInfo[i][gCoords][3],GZInfo[i][gFrakVlad] ); iniSet(File,l,string); } iniClose(File); } public GzCheck() { new string[256]; for(new i =0;i<sizeof(GZInfo);i++) { if(ZoneOnBattle[i] == 1 && GZSafeTime[i] == 0) { ZoneTimer[i] -=10; if(ZoneTimer[i] <=0) { SendClientMessageToAll(-1,"Наблюдатель: Время на захват зоны вышел. Ничья."); ZoneOnBattle[i] =0; GangZoneStopFlashForAll(GZInfo[i][gID]); } for(new x =0;x<MAX_PLAYERS;x++) { if(PlayerToKvadrat(x,GZInfo[i][gCoords][0], GZInfo[i][gCoords][1],GZInfo[i][gCoords][ 2],GZInfo[i][gCoords][3])&&IsInAllowed(x)) { new faction; if(PlayerInfo[x][pLeader] !=0) {faction = PlayerInfo[x][pLeader];} else { faction = PlayerInfo[x][pMember];} OnZONE[i][faction] ++; } } new asd; for(new x =0;x<20;x++) { if(OnZONE[i][x] > 0 && IsInAllowedF(x)) asd ++; } if(asd == 1) { for(new x =0;x<20;x++) { if(OnZONE[i][x] > 0) { new zx,zl; zx = x; zl = i; if(GZInfo[i][gFrakVlad] == x) {format(string,sizeof(string),"Наблюдатель: Банда %s отстояла свою зону.",GetGangName(zx)); } else {format(string,sizeof(string),"Наблюдатель: Банда %s выйгрывает зону.",GetGangName(zx)); } for(new ads = 13;ads <= 19;ads++) { SendFamilyMessage(ads,GetGangZoneColor(zx),string); } ZoneOnBattle[zl] =0; GZInfo[zl][gNapad] = 0; GZInfo[zl][gFrakVlad] = zx; GangZoneStopFlashForAll(GZInfo[zl][gID]); GangZoneHideForAll(GZInfo[zl][gID]); GangZoneShowForAll(GZInfo[zl][gID],GetGangZoneColor(zl)); break; } } } } } for(new i =0;i<49;i++) { for(new z = 0;z<20;z++) { OnZONE[i][z] =0; } } } public PlayerToKvadrat(playerid,Float:min_x,Float:min_y,Float:max_x,Float:max_y) { new Float:xxp,Float:yyp,Float:zzp; GetPlayerPos(playerid, xxp, yyp, zzp); if((xxp <= max_x && xxp >= min_x) && (yyp <= max_y && yyp >= min_y)) return 1; return 0; } В public OnPlayerConnect(playerid): for(new i =0;i<49;i++) { GangZoneShowForPlayer(playerid,GZInfo[i][gID],GetGangZoneColor(i)); } В public OnGameModeInit: SetTimer("GzCheck",10000,1); SetTimer("SaveGZ",100000,1); LoadGZ(); В public SaveAccounts(): new faction=0; if(!strcmp(cmd,"/changegzcolor",true)) { tmp = strtok(cmdtext,idx); new l = strval(tmp); if(!IsInAllowedF(l)) return SendClientMessage(playerid,COLOR_LIGHTRED,"Неправильный ид банды!"); if(PlayerInfo[playerid][pAdmin] >= 6) { for(new i = 0;i<49;i++) { if(PlayerToKvadrat(playerid,GZInfo[i][gCoords][0], GZInfo[i][gCoords][1],GZInfo[i][gCoords][ 2],GZInfo[i][gCoords][3])) { GZInfo[i][gFrakVlad] = l; GangZoneStopFlashForAll(GZInfo[i][gID]); GangZoneHideForAll(GZInfo[i][gID]); GangZoneShowForAll(GZInfo[i][gID],GetGangZoneColor(i)); return 1; } } } } if(!strcmp(cmd,"/capture",true)) { if(FrakCD[faction] == 0) { if(!IsInAllowed(playerid)) { return SendClientMessage(playerid,COLOR_LIGHTRED,"Ваша банда не может учавствовать в захвате зон или вы не на 1 зоне"); } for(new i = 0;i<49;i++) { if(PlayerToKvadrat(playerid,GZInfo[i][gCoords][0], GZInfo[i][gCoords][1],GZInfo[i][gCoords][ 2],GZInfo[i][gCoords][3]) && GZInfo[i][gFrakVlad] != faction && ZoneOnBattle[i] == 0) { if(!IsPlayerInBandOnline(GZInfo[i][gFrakVlad])) return SendClientMessage(playerid,COLOR_LIGHTRED,"Зону банды которую вы хотите атаковать нет в онлайне!"); if(PlayerInfo[playerid][pRank] < 5) return SendClientMessage(playerid,COLOR_LIGHTRED,"Иницировать захват можно только с 5 ранга и выше!"); SendFamilyMessage(GZInfo[i][gFrakVlad],COLOR_LIGHTRED,"Ваша Зона под атакой. У вас 2 минуты чтобы подготовится к защите зоны."); SendFamilyMessage(GZInfo[i][gFrakVlad],COLOR_LIGHTRED,"Если через 2 минуты на зоне никого не будет то зона автоматически перейдет к врагу"); format(string,sizeof(string),"%s начал борьбу за зону против %s банды. У вас 2 минуты чтобы подготовится к атаке",Name(playerid),GetGangName(GZInfo[i][gFrakVlad])); SendFamilyMessage(faction,COLOR_LIGHTRED,string); GangZoneFlashForAll(GZInfo[i][gID],GetGZColorF(faction)); GZSafeTime[i] = 120; FrakCD[faction] = 3000; GZInfo[i][gNapad] = faction; ZoneTimer[i] = 720; ZoneOnBattle[i] = 1; break; } } } else { return SendClientMessage(playerid,COLOR_LIGHTRED,"Ваша банда еще не окрепла с момента последнего захвата. Ждите!"); } } В public SetPlayerUnjail(): for(new i =0;i<49;i++) { if(GZSafeTime[i]>0) { GZSafeTime[i] --; if(GZSafeTime[i] == 60 || GZSafeTime[i] == 120) { format(string,sizeof(string),"У вас осталось %d секунд на подготовку",GZSafeTime[i]); SendFamilyMessage(GZInfo[i][gNapad],COLOR_LIGHTRED,string); SendFamilyMessage(GZInfo[i][gFrakVlad],COLOR_LIGHTRED,string); } if(GZSafeTime[i]==0) { format(string,sizeof(string),"Время на подготовку вышло. Если у вас нет ни одного солдата на поле боя то зона автоматически переходит к противнику"); SendFamilyMessage(GZInfo[i][gNapad],COLOR_LIGHTRED,string); SendFamilyMessage(GZInfo[i][gFrakVlad],COLOR_LIGHTRED,string); } } } for(new i =0;i<sizeof(FrakCD);i++) { if(FrakCD[i] >0) { FrakCD[i] --; if(FrakCD[i] == 0) SendFamilyMessage(i,COLOR_LIGHTRED,"Ваша банда снова может учавствовать в захвате зон"); } } Иды фракций заменяйте на свои. Без инклуда mxINI ничего не получится. ID фракций меняйте на свои. Автор: Trigger
  13. Vladimir_Kulkov

    Еда для бомжей

    Этот урок полный без багов. Так начнём... Вставляем ко всем new new eatrp; Ко всем define #define COLOR_PINK8 0xFF69B4AA #define COLOR_GRAD1 0xBFC0C2FF в public OnPlayerPickUpPickup(playerid, pickupid) //Жизни else if(pickupid == eatrp) { if(PlayerHealth[playerid] == 100) return SendClientMessage(playerid, COLOR_GRAD1, "Вы не голодны!"); if(PlayerInfo[playerid][pLevel] > 3) return SendClientMessage(playerid, COLOR_GRAD1, "Можно использовать до 3 уровня!"); SetPlayerHealthAC(playerid, 100); SendClientMessage(playerid, COLOR_PINK8, "{FF69B4}*Поел"); } В public OnGameModeInit() Ко всем пикапам //жизни eatrp = CreatePickup(2821, 1,1752.3273,-1889.4989,13.5574);//кардинаты меняем на свои и всё Вот и всё готово Для новичков будет полезно Автор:Неизвестно
  14. Vladimir_Kulkov

    Система банкоматов

    Приветствую пользователи форума cr-mp.ru, хотелось бы выложить сис-му создания банкоматов. Предупреждение! - В данной системе, для полной работоспособности банкомата, вам необходимо вставить код своих переменных, тоесть заменить pInfo[playerid][pMoney] и pInfo[playerid][pBank], на те переменные, в которые вы выгружаете значения из таблиц/файлов. Ко всем Include #include <a_samp> #include <streamer> Ко всем Define #define MAX_BANKOMATS 2 // максимальное кол-во банкоматов #define BANKOMAT_CASH 15 // изымаемый процент от пользования банкоматом #define d_bankomat 9 // свободный ID диалога Ко всем New new ATMZone[MAX_BANKOMATS], cBankomats ; В public OnPlayerEnterDynamicArea(playerid, areaid) if(ATMZone[0] <= areaid <= ATMZone[cBankomats-1]) SetPVarInt(playerid,"PlayerUseBankomat",1); //Если игрок попал в зону банкомата В public OnPlayerLeaveDynamicArea(playerid, areaid) if(ATMZone[0] <= areaid <= ATMZone[cBankomats-1]) SetPVarInt(playerid,"PlayerUseBankomat",0); //Если игрок покинул зону банкомата В public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) if(PRESSED(KEY_WALK)) { // Действия при нажатии левой клавиши 'Alt' if(GetPVarInt(playerid,"PlayerUseBankomat") != 0) { //Если игрок находится в зоне банкомата showPlayerDialog(playerid, d_bankomat, 2,"Банкомат","Проверить баланс\nСнять деньги со счета\nПоложить деньги на счет","Дальше","Закрыть"); //Вызываем диалог банкомата } } В public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) if(dialogid == d_bankomat) { if(!response) return 1; switch(listitem) { case 0: { format(string,sizeof(string),"| Информация о балансе на счету:\n\nСостояние банковского счета - $%d",pInfo[playerid][pMoney]); // pInfo[playerid][pMoney] заменяете на кол-во денег игрока из своего мода showPlayerDialog(playerid, 9999, 0, " ", string, "Закрыть", ""); } case 1: showPlayerDialog(playerid, d_bankomat + 1, 1, "Снять деньги со счета","Укажите сумму которую хотите снять со счета:\n\n| Минимальная сумма $100, максимальная $100000\n| При использовании банкомата действует комиссия","Дальше","Закрыть"); case 2: showPlayerDialog(playerid, d_bankomat + 2, 1, "Положить деньги на счет","Укажите сумму которую хотите положить на счет:\n\n| Минимальная сумма $100, максимальная $100000\n| При использовании банкомата действует комиссия","Дальше","Закрыть"); } } if(dialogid == d_bankomat + 1) { if(!response) return 1; if(!strlen(inputtext)) return showPlayerDialog(playerid, d_bankomat + 1, 1, "Снять деньги со счета","Укажите сумму которую хотите снять со счета:\n\n| Минимальная сумма $100, максимальная $100000\n| При использовании банкомата действует комиссия","Дальше","Закрыть"); if(strval(inputtext) < 100 || strval(inputtext) > 100000) return showPlayerDialog(playerid, d_bankomat + 1, 1, "Снять деньги со счета","Укажите сумму которую хотите снять со счета:\n\n| Минимальная сумма $100, максимальная $100000\n| При использовании банкомата действует комиссия","Дальше","Закрыть");//Если игрок ввел сумму больше 100000 или менее 100. new BankCash = (strval(inputtext)*BANKOMAT_CASH)/100; pInfo[playerid][pBank] -= strval(inputtext)-BankCash;//Вычитаем процент и отнимаем деньги с банк.счета pInfo[playerid][pMoney] += strval(inputtext)-BankCash;//Вычитаем процент и получаем деньги на руки ApplyAnimation(playerid, "PED", "ATM",4.0, 0, 1, 1, 0, 0, 1); } if(dialogid == d_bankomat + 2) { if(!response) return 1; if(!strlen(inputtext)) return showPlayerDialog(playerid, d_bankomat + 2, 1, "Положить деньги на счет","Укажите сумму которую хотите положить на счет:\n\n| Минимальная сумма $100, максимальная $100000\n| При использовании банкомата действует комиссия","Дальше","Закрыть"); if(strval(inputtext) < 100 || strval(inputtext) > 100000) return showPlayerDialog(playerid, d_bankomat + 2, 1, "Положить деньги на счет","Укажите сумму которую хотите положить на счет:\n\n| Минимальная сумма $100, максимальная $100000\n| При использовании банкомата действует комиссия","Дальше","Закрыть"); //Если игрок ввел сумму больше 100000 или менее 100. new BankCash = (strval(inputtext)*BANKOMAT_CASH)/100; //Вычисляем % от пользования банкоматом pInfo[playerid][pBank] += strval(inputtext)-BankCash; //Вычитаем процент и получаем деньги в банк pInfo[playerid][pMoney] -= strval(inputtext)-BankCash; //Вычитаем процент и отнимаем деньги с рук ApplyAnimation(playerid, "PED", "ATM",4.0, 0, 1, 1, 0, 0, 1); //Приминяем анимацию пользования банкоматом } В public OnGameModeInit() CreateBankomat(1740.29,-1771.58,13.37,0.00,0.00,0.00); //Создаем банкомат CreateBankomat(1740.29,-1773.58,13.37,0.00,0.00,0.00); //Аналогично Функция создания банкомата, вставляем в конец мода. stock CreateBankomat(Float:x,Float:y,Float:z,Float:rx,Float:ry,Float:rz) { CreateDynamicObject(2754,x,y,z,rx,ry,rz); //Создаем сам банкомат CreateDynamic3DTextLabel("Банкомат\n\nALT",0xFFFFFFFF, x,y,z,3.0,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0); //Создаем 3д текст к банкомату ATMZone[cBankomats] = CreateDynamicSphere(x,y,z,2.0); //Создаем сферу действия банкомата cBankomats ++; //Прибавляем 1 созданный банкомат к общему кол-ву return 1; } Возникли вопросы? Пишите в данную тему. Автор:Неизвестно
  15. Vladimir_Kulkov

    [CMD] /veh, /delveh

    Здравствуйте, уважаемые пользователи cr-mp.ru Предоставляю Вам реализацию команд /veh, /delveh на Pawn.CMD (3.1.3) + sscanf2 (2.8.2):
  16. Vladimir_Kulkov

    Команда /makeadmin на dc_cmd

    Всем привет не видел на данном форуме такую команду как /makeadmin и решил её выложить. Итак начнем! Сначала сделаем #define #define SCM SendClientMessage К вашим командам. CMD:makeadmin(playerid, params[]) { if(Player[playerid][pAdmin] < 8) return SCM(playerid, 0xFF0000AA, "Вы не уполномочены использовать данную команду"); if(sscanf(params, "ii", params[0], params[1])) return SCM(playerid, 0xFF0000AA, "Введите: /makeadmin [0-7]"); if(!IsPlayerConnected(params[0])) return SCM(playerid, 0xFF0000AA, "Данный игрок не в сети!"); if(params[1] < 0 || params[1] > 7) return SCM(playerid, 0xFF0000AA, "Уровень админа [0-7]"); Player[params[0]][pAdmin] = params[1]; static const fmt_str[] = "Админ %s изменил ваш уровень админа на: %d"; new string[sizeof(fmt_str)-2+MAX_PLAYER_NAME-2+1]; format(string, sizeof(string), fmt_str, Player[playerid][pName], params[1]); SCM(params[0], 0xFFFF00FF, string); return true; } А теперь давайте разберем код. new string[128]; // Отвечает за размер строки (Не менять больше! т.к нагружать сервер будет) if(Player[playerid][pAdmin] < 8) // Отвечает за проверку уровня админа (Player - Это переменная где хранятся данные об игроке например у меня: Player) pAdmin - Это массив отвечающий за админа меняйте на свой, (( < 8 - Если уровень админа меньше 8, то возникает ошибка )) if(sscanf(params, "ii", params[0], params[1])) // params, "ii" - Отвечает за текст и айди игрока, params[0] - ид игрока, params[1] - уровень админа if(!IsPlayerConnected(params[0])) // Проверка на в сети ли игрок, params[0] - ид игрока который был введен if(params[1] < 0 || params[1] > 7) // params[1] < 0 если введеный уровень меньше 0, params[1] > 7 если введеный уровень больше 7, то возникнет ошибка, (params[1] - отвечает за текст) Player[params[0]][pAdmin] = params[1]; // Присвоение игроку уровень админа, Player[params[0] - ИД игрока, = params[1] - Уровень который хотят дать format(string, sizeof(string), "Админ %s изменил ваш уровень админа на: %d", Player[playerid][pName], params[1]); // Player[playerid][pName] - Ваш массив с именем (Ставите свой), params[1] - Сколько игроку поставили уровень админа SendClientMessage(params[0], 0xFFFFFFAA, string); return true; // Действие повторяется Автор : неизвестно
  17. Представляю вашему вниманию оригинальную систему регистрации. Подобного вида система используется на RP-Gameworld. Уверен, данная система внесет каплю разнообразия на ваш сервер. Демонстрационное видео
  18. Регистрация/авторизация на TD. Красивый спидометр. Уникальный маппинг. Много команд для администраторов + привязка по нику. Система потребностей (сытость, еда). 4 работы (такси, водитель автобуса, механик, дальнобойщик), 3 подработки (шахтер, сборщик оружия, лесоруб). Когда срубают дерево на лесопилке, оно падает. В автошколе можно сдать на права на автомобиль, вертолет и лодку. Красивое оформление GPS (когда его включают, на экране показывается TD, то бишь, предупреждение о том, что GPS включен). Красивый TD в автосалоне (все настройки автомобиля настраиваются в моде). Почти все действия администратора записываются в логи. 12 фракций. Красивое оформление статистики. Имеется система складов (дерево, уголь, оружие). Имеется /apanel, через эту команду можно: -узнать весь список администрации; -узнать команды администратора (можно через /ahelp); -отредактировать настройки администратора; -управлять сервером (включить х2, пополнить склады); -узнать статистику администратора; -расформировать фракцию. Система гонок. Сервер автоматически производит рестарт в 5 часов ночи. Система радаров. Система промо-кодов. В меню есть настройки игрока, там можно отключить TD "потребности" и "информация" и др 8 lvl админки Держал онлайн 320 человек далее не тестировался Скачать с Яндекс.Диск Автор: Supreme228 - Aleksey_Kireev
  19. Marvellous

    Astera RolePlay

    Astera RolePlay - Регистрации проходит в аэропорту 'Мирный'. Получать паспорт не надо, как практически сейчас на всех серверах, так как игрок не может приехать, а тем более прилететь на самолете без паспорта. По окончанию регистрации, игрок должен ехать в автошколу для сдачи теории и практики на вождение. После успешной сдачи практики, игрок может подзаработать не много денег чтобы освоиться в России. Параллельно игрок должен выбрать для своего персонажа роль, дабы в дальнейшим отыгрывать РП и вступить в нужную фракцию. Для новичков создана команда /faq, в ней есть все ответы на часто задаваемые вопросы. Команда будет дополняться и обновляться. Со временем игрок может купить дом, в котором можно будет хранить оружие, деньги, материалы, наркотики, одежду. Так же есть возможность покупки гаража для машины, там игрок может отремонтировать свою машину и также хранить разные предметы от топора до золота. От себя: Заранее предупреждаю новичков, дабы не было потом вопросов мол почему не предупредили, я не знал и т.д. На сервере есть больница для суицидников, т.е если вы тоните в воде или падаете с высоты и разбиваетесь, то вы попадаете именно в эту больницу. Там вам выдают справку о том, что вы психически невменяемый человек и соответственно если вы были в гос.фракции - вас автоматически увольняет. Избавиться от справки не так легко.. Гос.Фракции: МВД ФСБ Армия МЧС МинЗдрав Мафии: Украинская Мафия Русская Мафия Азиатская Мафия Триада Банды: Батыревская братва Южновское ОПГ Портовское ОПГ Байкеры Работы: Инкассатор Дальнобойщик Развозчик хлеба Развозчик пиццы Автомеханик Водитель такси Водитель автобуса Чистильщик улиц Уборщик улиц Подработки: Лесоруб Шахтер Грузчик Ловец медуз Вор карманник Автоугонщик Торговец оружием Торговец наркотиками Ну дальше думаю не стоит что то описывать,так как данный мод знают все! По поводу скринов,думаю тоже не стоит,так как смотрел кто сливал ее,скрины не выкладывали! Сливали сами Администраторы форума! Так что,я от них не отличаюсь в правилах ЕПФ Автор мода: Amfy Ссылка на мод: https://yadi.sk/d/IIkrFtS3pnF2Zw Ссылка на модпак: https://yadi.sk/d/hkm9qhA2jkLCL
  20. Мод проекта Elegant RolePlay с начала мая по 24 мая, остальное они уже делали сами. Автор мода Cunbers RolePlay : Максим Семенов.\ Автор доработки : Федор Громов ( тобишь я ). Лог разработки : 1. Была добавлена сцена для проведения парада 9 мая. 2. Был переделана система СТО. 3. Были исправлены грамматические ошибки. 4. Было немножко переделано оформление. 5. Были исправлены все краши. 6. Маппинг был изменен в красивую сторону проф.маппером. и многое другое, не помню уже. Скачать с Яндекс.Диска
  21. SCRIPTMAN

    Our RolePlay(Full Game RP)

    Привет народ! Сливаю вам данный мод, так как он уже не актуален, mxINI уже не то. Это был мой первый мод, который я купил и разрабатывал) Типа разрабатывал. Что говорить о моде? Основа Full Game RP, правда добавлено куча функций, авто например остается там, где его оставили. Автосалон прикольный. Возможно мод подойдёт на вырезку. Автор: Amfy(вроде) Дорабатывал: Shapik(На тот момент Дима Рок) Скачать: Клик Пароль: cr-mp.ru Скриншоты позже, хотя не вижу смысла в них, так как все знают данный мод.
  22. Vladimir_Kulkov

    Не доработанный мод

    Приветствую всех пользователей. Сливаю Вам свою разработку мода, т.к. начал писать другой. Расскажу о моде. 1.Система регистрации/авторизации 2.Выбор пола. 3.Получение паспорта. 4.Выбор скина(сделана не до конца). 5.Система возраста. 6.Система национальности. 7.Система Email.(сделана не до конца). 8.Система лидерок.(нет команды /invite, /uninvite) 9. Команды можно посмотреть в /menu. 10.Команда БАНа. 11.Система PayDay. 12.Система реферала. 13.Система уровней.В p.s. Это еще не все. Скачать: Клик-Клак
  23. Работа заключается в том, что нужно по точкам развести достаточно больше пицца, чтобы заработать большую зарплату. Ко всем define #define PizzaMoney 1000 // Цена за один чекпоинт #define PizzaTime 300 // Сколько игроку дается времени (в секундах) чтобы доставить пиццы #define COLOR_LIGHTBLUE 0x33CCFFAA В глобалку new Float:PizzaCheckpoint[10][3] = { {2199.6738,-1766.1499,21.4903}, {2431.0461,-1706.7495,21.4876}, {2378.8538,-1862.7435,21.4903}, {2374.2595,-1887.1068,21.4903}, {2409.5942,-2143.4617,21.4864}, {2552.6003,-2195.3875,21.5006}, {2752.5759,-2447.5283,21.2174}, {2326.6321,-1804.7623,21.9824}, {2308.0000,-1912.1495,21.3555}, {2256.9080,-2102.9331,21.4971} }; new Pizza[2]; В public OnGameModeInit SetTimer("SecondTimes", 1000, true); Pizza[0] = AddStaticVehicleEx(448,2143.9517,-1811.9202,18.4989,0.9532,3,6,6000); AddStaticVehicleEx(448,2147.4592,-1811.8813,18.4981,1.9254,3,6,6000); AddStaticVehicleEx(448,2150.9919,-1811.8866,18.4972,359.9016,3,6,6000); AddStaticVehicleEx(448,2154.4307,-1811.8749,18.4980,1.2683,3,6,6000); AddStaticVehicleEx(448,2157.9902,-1811.8684,18.4989,1.4477,3,6,6000); AddStaticVehicleEx(448,2161.5176,-1811.8600,18.4980,1.0813,3,6,6000); Pizza[1] = AddStaticVehicleEx(448,2165.0857,-1811.8517,18.4972,359.9437,3,6,6000); В public OnPlayerCommandText if(strcmp("/job", cmdtext, true, 10) == 0) { new carid = GetPlayerVehicleID(playerid); if(GetVehicleModel(carid) == 448 && GetPlayerState(playerid) == PLAYER_STATE_DRIVER) { SendClientMessage(playerid, COLOR_LIGHTBLUE, "Доставьте пиццу по указанным точкам!"); SetPlayerCheckpoint(playerid, PizzaCheckpoint[1][0], PizzaCheckpoint[1][1], PizzaCheckpoint[1][2], 2.0); SetPVarInt(playerid, "GetPlayerSkin", GetPlayerSkin(playerid)); SetPlayerSkin(playerid, 155); SetPVarInt(playerid, "PizzaTime", gettime() + PizzaTime); SetPVarInt(playerid, "PizzaCheck", 1); return 1; } return 1; } В public OnPlayerEnterCheckpoint new carid = GetPlayerVehicleID(playerid); if(GetPVarInt(playerid, "PizzaCheck") == 1 && GetPVarInt(playerid, "PizzaTime") >= 0 && carid >= Pizza[0] && carid <= Pizza[1]) { DisablePlayerCheckpoint(playerid); SetPlayerCheckpoint(playerid, PizzaCheckpoint[2][0], PizzaCheckpoint[2][1], PizzaCheckpoint[2][2], 2.0); SendClientMessage(playerid, COLOR_LIGHTBLUE, "Вы доставили пиццу!"); PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0); SetPVarInt(playerid, "PizzaCheck", 2); SetPVarInt(playerid, "PizzaMoney", GetPVarInt(playerid, "PizzaMoney") + PizzaMoney); return 1; } if(GetPVarInt(playerid, "PizzaCheck") == 2 && GetPVarInt(playerid, "PizzaTime") >= 0 && carid >= Pizza[0] && carid <= Pizza[1]) { DisablePlayerCheckpoint(playerid); SetPlayerCheckpoint(playerid, PizzaCheckpoint[3][0], PizzaCheckpoint[3][1], PizzaCheckpoint[3][2], 2.0); SendClientMessage(playerid, COLOR_LIGHTBLUE, "Вы доставили пиццу!"); PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0); SetPVarInt(playerid, "PizzaCheck", 3); SetPVarInt(playerid, "PizzaMoney", GetPVarInt(playerid, "PizzaMoney") + PizzaMoney); return 1; } if(GetPVarInt(playerid, "PizzaCheck") == 3 && GetPVarInt(playerid, "PizzaTime") >= 0 && carid >= Pizza[0] && carid <= Pizza[1]) { DisablePlayerCheckpoint(playerid); SetPlayerCheckpoint(playerid, PizzaCheckpoint[4][0], PizzaCheckpoint[4][1], PizzaCheckpoint[4][2], 2.0); SendClientMessage(playerid, COLOR_LIGHTBLUE, "Вы доставили пиццу!"); PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0); SetPVarInt(playerid, "PizzaCheck", 4); SetPVarInt(playerid, "PizzaMoney", GetPVarInt(playerid, "PizzaMoney") + PizzaMoney); return 1; } if(GetPVarInt(playerid, "PizzaCheck") == 4 && GetPVarInt(playerid, "PizzaTime") >= 0 && carid >= Pizza[0] && carid <= Pizza[1]) { DisablePlayerCheckpoint(playerid); SetPlayerCheckpoint(playerid, PizzaCheckpoint[5][0], PizzaCheckpoint[5][1], PizzaCheckpoint[5][2], 2.0); SendClientMessage(playerid, COLOR_LIGHTBLUE, "Вы доставили пиццу!"); PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0); SetPVarInt(playerid, "PizzaCheck", 5); SetPVarInt(playerid, "PizzaMoney", GetPVarInt(playerid, "PizzaMoney") + PizzaMoney); return 1; } if(GetPVarInt(playerid, "PizzaCheck") == 5 && GetPVarInt(playerid, "PizzaTime") >= 0 && carid >= Pizza[0] && carid <= Pizza[1]) { DisablePlayerCheckpoint(playerid); SetPlayerCheckpoint(playerid, PizzaCheckpoint[6][0], PizzaCheckpoint[6][1], PizzaCheckpoint[6][2], 2.0); SendClientMessage(playerid, COLOR_LIGHTBLUE, "Вы доставили пиццу!"); PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0); SetPVarInt(playerid, "PizzaCheck", 6); SetPVarInt(playerid, "PizzaMoney", GetPVarInt(playerid, "PizzaMoney") + PizzaMoney); return 1; } if(GetPVarInt(playerid, "PizzaCheck") == 6 && GetPVarInt(playerid, "PizzaTime") >= 0 && carid >= Pizza[0] && carid <= Pizza[1]) { DisablePlayerCheckpoint(playerid); SetPlayerCheckpoint(playerid, PizzaCheckpoint[7][0], PizzaCheckpoint[7][1], PizzaCheckpoint[7][2], 2.0); SendClientMessage(playerid, COLOR_LIGHTBLUE, "Вы доставили пиццу!"); PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0); SetPVarInt(playerid, "PizzaCheck", 7); SetPVarInt(playerid, "PizzaMoney", GetPVarInt(playerid, "PizzaMoney") + PizzaMoney); return 1; } if(GetPVarInt(playerid, "PizzaCheck") == 7 && GetPVarInt(playerid, "PizzaTime") >= 0 && carid >= Pizza[0] && carid <= Pizza[1]) { DisablePlayerCheckpoint(playerid); SetPlayerCheckpoint(playerid, PizzaCheckpoint[8][0], PizzaCheckpoint[8][1], PizzaCheckpoint[8][2], 2.0); SendClientMessage(playerid, COLOR_LIGHTBLUE, "Вы доставили пиццу!"); PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0); SetPVarInt(playerid, "PizzaCheck", 8); SetPVarInt(playerid, "PizzaMoney", GetPVarInt(playerid, "PizzaMoney") + PizzaMoney); return 1; } if(GetPVarInt(playerid, "PizzaCheck") == 8 && GetPVarInt(playerid, "PizzaTime") >= 0 && carid >= Pizza[0] && carid <= Pizza[1]) { DisablePlayerCheckpoint(playerid); SetPlayerCheckpoint(playerid, PizzaCheckpoint[9][0], PizzaCheckpoint[9][1], PizzaCheckpoint[9][2], 2.0); SendClientMessage(playerid, COLOR_LIGHTBLUE, "Вы доставили пиццу!"); PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0); SetPVarInt(playerid, "PizzaCheck", 9); SetPVarInt(playerid, "PizzaMoney", GetPVarInt(playerid, "PizzaMoney") + PizzaMoney); return 1; } if(GetPVarInt(playerid, "PizzaCheck") == 9 && GetPVarInt(playerid, "PizzaTime") >= 0 && carid >= Pizza[0] && carid <= Pizza[1]) { DisablePlayerCheckpoint(playerid); SetPlayerCheckpoint(playerid, PizzaCheckpoint[1][0], PizzaCheckpoint[1][1], PizzaCheckpoint[1][2], 2.0); SendClientMessage(playerid, COLOR_LIGHTBLUE, "Вы доставили пиццу!"); PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0); SetPVarInt(playerid, "PizzaCheck", 1); SetPVarInt(playerid, "PizzaMoney", GetPVarInt(playerid, "PizzaMoney") + PizzaMoney); return 1; } В public OnPlayerStateChange if(newstate == PLAYER_STATE_DRIVER) { new carid = GetPlayerVehicleID(playerid); if(carid >= Pizza[0] && carid <= Pizza[1]) return SendClientMessage(playerid, COLOR_LIGHTBLUE, "Введите /job чтобы начать работу доставщика пиццы."); } И в конец мода forward SecondTimes(playerid); public SecondTimes(playerid) { if(GetPVarInt(playerid, "PizzaCheck") != 0 && GetPVarInt(playerid, "PizzaTime") <= gettime()) { new s[30]; format(s, sizeof(s), "Вы заработали %d рублей.", GetPVarInt(playerid, "PizzaMoney")); SendClientMessage(playerid, -1, s); GivePlayerMoney(playerid, GetPVarInt(playerid, "PizzaMoney")); SetPlayerSkin(playerid, GetPVarInt(playerid, "GetPlayerSkin")); DisablePlayerCheckpoint(playerid); DeletePVar(playerid, "PizzaTime"); DeletePVar(playerid, "PizzaCheck"); DeletePVar(playerid, "PizzaMoney"); DeletePVar(playerid, "GetPlayerSkin"); return 1; } return 1; } Автор: Amfy, скрипт найден в одном из GM
×

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

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