#AMG 162 Опубликовано 3 ноября, 2015 Привет всем дорогие друзья. Сегодня я разжую вам урок по созданию шлагбаума.Давайте преступим.Вот полный код: Ко всем переменным new opengate; В public OnGameModeInit(): opengate = CreateObject(980,935.29998779297,-836.20001220703,96.5,0,0,0,300); В 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; } И так, давайте разжёвывать каждую строчку и слово в этом коде. Первое что мы рассмотрим это переменную new opengate; Создали мы ее для того что бы записать, прикрепить (как вам угодно) в нее объект А делаем мы это вот таким образом: opengate = CreateObject(980,935.29998779297,-836.20001220703,96.5,0,0,0,300); Функция CreateObject создает объект по заданным координатам Координаты к этой функции мы пишем в () таких вот скобках. Сами координаты состоят из 6 частей и разделяются запятыми всего частей кода 8, так как вы уже поняли, что координаты это 6 частей, а оставшиеся 2 это id создаваемого объекта и расстояние на котором его будет видно. Рассмотрим 6 частейCreateObject(id объекта,Координаты по оси X,Координаты по оси Y,Координаты по оси Z,Координаты по оси R-X,Координаты по оси R-Y,Координаты по оси R-Z, Расстояние видимости объекта); Кстати максимальное значение видимости объекта = 300 Так, ну что, объект мы записали в переменную, теперь когда мы будем использовать opengate то pawno разу будет знать что мы вызываем объект. Идем дальшеСоздаем команду для того что бы наш шлагбаум открывался и закрывался. 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; } Строка if(strcmp("/open", cmd, true) == 0)значит что если мы ввели в консоль вызываемую кнопкой F6 команду /open то она вызывает следующие действия. Строка new open[MAX_PLAYERS];переменная open присваивается для каждого игрока индивидуально. Ею мы будем смотреть закрыты ли наши двери или нет. Строка if(open[playerid] == 0) If в переводе с английского означает "Если" То естьЕсли(переменная open[id игрока который использует команду]== 0) { то делаем следующее действие. СтрокаMoveObject(opengate,935.29998779297,-836.20001220703,96.5,10); // Открываем воротаДвигает наш объект по заданным координата. А именно это делает функция MoveObject, после этой функции мы задаем координаты. Сейчас распишу вам полностью строку Двигаем объект(сам объект, помните мы в переменную opengate записали объект, вот сейчас мы его используем,Координаты по оси X,Координаты по оси Y,Координаты по оси Z,Скорость предвидения объекта,Координаты по оси R-X,Координаты по оси R-Y,Координаты по оси R-Z); В данном случаи мы не используем координаты R-X, R-Z, R-Y, но если вам надо то знайте что они ставятся только после скорости передвижения объекта и ни как до его. Дальше строкаopen[playerid] = 1; // Устанавливаем значение открытых воротпоказывает что наш шлагбаум открыт, и закроется только тогда, когда переменной open будет присвоено значение 0. дальше думаю все логично. Кстати строкаreturn1;возвращает действие обратно. Спасибо за внимание!Автор Romio2517 4 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Makaronenko 3 Опубликовано 3 ноября, 2015 Спасибо, помог! + тебе. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты