1 post in this topic

Спойлер

post-4453-0-40026300-1377588160_thumb.png.44a72f77f7ad99b1efc034c4257512a3.png

Здравствуйте, дорогие пользователи портала!
Видел очень много уроков по системе "больничных коек", но ни один из них толковым не был.
Итак, начнем! Писаться будет на 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;
}

Edited by RASTAMAN

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • maximdemakov
      By maximdemakov
      Мы, команда проекта "State City", ищем увлеченного и талантливого **Pawn-разработчика**, который присоединится к нашему проекту на платформе  (CRMP). Если вы хотите реализовать свои идеи, улучшить свои навыки и стать частью интересного игрового мира, мы будем рады видеть вас в нашей команде!
      ### О проекте:
      "State City" — это уникальная многопользовательская игра, создаваемая для того, чтобы предложить игрокам захватывающий опыт взаимодействия в мире, полном возможностей. Наша цель — создать игру с увлекательным сюжетом, разнообразными квестами и активной игровым сообществом.
      ### Что мы ожидаем от вас:
      - **Опыт разработки на языке Pawn**: Умение писать качественный и чистый код, оптимизировать его.
      - **Знания и опыт работы с платформой CRMP**: Понимание основных концепций, механизмов и возможностей SAMP.
      - **Навыки работы с базами данных**: Опыт работы с MySQL или другими подобными системами для хранения и обработки данных.
      - **Опыт разработки игровых функционалов**: Создание уникальных игровых систем, таких как системы квестов, экономики и взаимодействия с миром.
      - **Командная работа**: Умение эффективно взаимодействовать с другими членами команды, открыто обсуждать идеи и решать проблемы.
      - **Креативность и инициатива**: Предложение новых идей и реализации в рамках проекта.
      ### Мы предлагаем:
      - **Гибкий график**: Возможность работать удаленно и управлять своим временем.
      - **Интересные задачи**: Работа над уникальными фичами и системами игры.
      - **Дружелюбная атмосфера**: Команда единомышленников, готовых поддержать и помочь вам в развитии.
      - **Возможности для роста**: Работа в динамичной среде, позволяющая развиваться и прокладывать карьерный путь в игровой индустрии.
      ### Как подать заявку:
      Если вы готовы стать частью нашей команды и внести свой вклад в создание "State City", отправьте нам ваше резюме и примеры предыдущих работ. В ВК https://vk.com/id884946285
      ---
    • maximdemakov
      By maximdemakov
      Чтобы привлечь разработчиков для проекта "State City" на платформе SAMP, необходимо сформировать четкое и привлекательное предложение. Ниже приведены рекомендации по набиранию команды, а также подходящие форматы для объявления.
      ### Рекомендации по привлечению разработчиков
      1. **Определение требований**:
         
           - Знание языка программирования Pawn.
           - Опыт разработки на платформе SAMP.
           - Знания в области сетевого программирования.
           - Опыт работы с базами данных.
           -
       
      3. **Предложение**:
         
      ---
      **Внимание, разработчики! Присоединяйтесь к проекту "State City" на платформе SAMP!**
      Мы ищем талантливых и увлеченных разработчиков для создания уникальной многопользовательской игры, сочетающей элементы реальной жизни и ролевого взаимодействия. Если вы:
      - Обладаетесь опытом разработки на языке Pawn.
      - Имеете навыки работы с SAMP и сетевым программированием.
      - Знакомы с работой с базами данных и моддингом.
      **Что мы предлагаем**:
      - Участие в разработке интересного проекта с большими возможностями роста.
      - Работа в дружной команде единомышленников.
      - Возможность внести свой вклад в мир игры, разрабатывая уникальные механики и системы.
      Интересно? Пишите нам в личные сообщения или на почту [ваш_email@domain.com]. Будем рады обсудить детали!
      ---
      ### Заключение
      Повышение интереса разработчиков к вашему проекту "State City" зависит от ясного описания задач, требований и возможностей. Поддерживайте открытую и активную коммуникацию с потенциальными кандидатами, чтобы привлечь лучших специалистов и создать успешную команду для реализации вашего проекта.
    • maximdemakov
      By maximdemakov
       
      1. **Определение требований**:
         
           - Знание языка программирования Pawn.
           - Опыт разработки на платформе SAMP.
           - Знания в области сетевого программирования.
           - Опыт работы с базами данных.
           -
       
      3. **Предложение**:
         
      ---
      **Внимание, разработчики! Присоединяйтесь к проекту "State City" на платформе SAMP!**
      Мы ищем талантливых и увлеченных разработчиков для создания уникальной многопользовательской игры, сочетающей элементы реальной жизни и ролевого взаимодействия. Если вы:
      - Обладаетесь опытом разработки на языке Pawn.
      - Имеете навыки работы с SAMP и сетевым программированием.
      - Знакомы с работой с базами данных и моддингом.
      **Что мы предлагаем**:
      - Участие в разработке интересного проекта с большими возможностями роста.
      - Работа в дружной команде единомышленников.
      - Возможность внести свой вклад в мир игры, разрабатывая уникальные механики и системы.
      Интересно? Пишите нам в личные сообщения или на почту [ваш_email@domain.com]. Будем рады обсудить детали!
      ---
      ### Заключение
      Повышение интереса разработчиков к вашему проекту "State City" зависит от ясного описания задач, требований и возможностей. Поддерживайте открытую и активную коммуникацию с потенциальными кандидатами, чтобы привлечь лучших специалистов и создать успешную команду для реализации вашего проекта.