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

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

Показаны результаты для тегов '[Урок]'.

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

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

Тип контента


Форумы

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

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

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


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

  • Начало

    Конец


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

  • Начало

    Конец


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

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

  1. TrollFace

    Система больницы.

    Здравствуйте, дорогие пользователи портала! Видел очень много уроков по системе "больничных коек", но ни один из них толковым не был. Итак, начнем! Писаться будет на MxINI, так же в помощь будет взят inc и pl CRP поэтому, у кого нет, пишем: #include <MxINI>//в начало мода, подключит инклуд для записи в файл#include <CRP>//русификатор текстдравов и еще много чегоТак же через server.cfg необходимо подключить плагин CRP. Далее. Нам ведь нужно куда-то записывать значение оставшегося времени? Верно. Поэтому в enum pInfo добавим pBolTime,pBolТам, где у вас в моде расположено сохранение аккаунтов, добавляем строчку: ini_setInteger(iniFile,"BolTime", PlayerInfo[i][pBolTime]);//вместо i может быть playerid и т.п.Это запись в файл новой переменной. Идем далее - разберемся с выгрузкой. Там, где у Вас в моде расположена загрузка аккаунта из файла, добавляем следующее: ini_getInteger(iniFile,"BolTime", PlayerInfo[playerid][pBolTime]);Это загрузка переменной при входе игрока. Смысл очень прост: если переменная больше нуля, то "сажаем" игрока в больницу на время, равное этой переменной. Теперь, пожалуй, создадим текстдрав оставшегося времени: 1. Объявим переменную: new Text:Bol[MAX_PLAYERS];2. Создадим сам текстдрав в OnPlayerConnect: Bol[playerid] = TextDrawCreate(273.000000, 423.000000, "Ostalos: %d");//текстдрав с координатамиTextDrawAlignment(Bol[playerid], 2);TextDrawBackgroundColor(Bol[playerid], 255);TextDrawFont(Bol[playerid], 3);//обводкаTextDrawLetterSize(Bol[playerid], 0.639999, 2.000000);//размерTextDrawColor(Bol[playerid], -65281);//цветTextDrawSetOutline(Bol[playerid], 1);TextDrawSetProportional(Bol[playerid], 1);Идем далее. Сделаем так, что игрок будет "посажен" при смерти. В этом нам поможет public OnPlayerDeath. Вставляем код следующего вида: PlayerInfo[playerid][pBol] = 1;PlayerInfo[playerid][pBolTime] = 180;//время, в секундах, сколько игроку лежать в больниеSetPlayerPos(playerid, x, y, z);//изменение позиции, координаты ставим своиSendClientMessage(playerid, COLOR_RED, "Вы попали в больницу.");//выводим сообщениеTextDrawShowForPlayer(playerid, Bol[playerid]);//показываем текстдравИтак. Теперь переходим к самой главной части - секундный каллбэк. Вo многих модах он называется SetPlayerUnjail. Вставляем туда следующее(после цикла на всех игроков): new string4[64];if(PlayerInfo[i][pBol] >= 1){if(PlayerInfo[i][pBolTime] >= 1)//если время еще осталось, то:{PlayerInfo[i][pBolTime] = PlayerInfo[i][pBolTime] - 1;//отнимем 1 секундуformat(string4, sizeof(string4), "Осталось: %d", PlayerInfo[i][pBolTime]);//отформатируем текстдравTextDrawSetString(Bol[i], string4);//обновим текстдрав}else if(PlayerInfo[i][pBolTime] <= 0)//если время прошло{SendClientMessage(i,COLOR_DARK,"Вас выписали из больницы");//отправим сообщениеSetPlayerPos(i, -1705.599609375, -2806.69921875, 13.89);//изменим координаты, делайте своиSetPlayerInterior(i,0);TextDrawHideForPlayer(i, Bol[i]);//скроем текстдрав}}А как быть с тем, если игрок перезайдет? В public OnPlayerSpawn( или же SetPlayerSpawn ): if(PlayerInfo[playerid][pBolTime] >= 1){SendClientMessage(playerid,COLOR_LIGHTBLUE,"Вы находитесь в больнице");TextDrawShowForPlayer(playerid, Bol[playerid]);//покажем текстдравSetPlayerPos(playerid,-1817.8000488281,-2858.3999023438,13.89);// свои координатыPlayerInfo[playerid][pBol] = 1;return 1;}И еще - скрины: Удачи.
  2. 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
×

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

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