Поиск сообщества
Показаны результаты для тегов '[Урок]'.
Найдено: 2 результата
-
Здравствуйте, дорогие пользователи портала! Видел очень много уроков по системе "больничных коек", но ни один из них толковым не был. Итак, начнем! Писаться будет на 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;}И еще - скрины: Удачи.
- 8 ответов
-
- 10
-
-
- всё для crmp
- pawn
- (и ещё 6 )
-
И так начнем: Ко всем 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
- 6 ответов
-
- всё для crmp
- pawn
- (и ещё 6 )