iBublik
Пользователь
Сложность: Легко
Примечание: Данный урок направлен к новичкам, которые только начинают осваиваться.
Привет, дорогой друг.
Я думаю, что иногда ты задумывался, как сделать ту или иную систему, где можно будет определить, стоит игрок в определенной зоне, или нет?
Примерами таких систем может быть ДМ зона, погода в разных городах и к тому же, всеми любимые GangZones.
А сейчас, пожалуйста, напрягись и вчитайся в то, что здесь написано, дабы понять и повысить свое умение программировать (если, конечно, ты не работаешь по принципу копи-паста).
Теория:
В программировании никуда без логики, я надеюсь, что ты знаешь это, дружок. И для того, чтобы понять, что сейчас мы будем делать, я попытаюсь тебе подробно объяснить, как этот система будет работать.
Ты знаешь, что такое координаты? Надеюсь знаешь, потому что сейчас все будет построено на них. В Grand Theft Auto каждый объект имеет свою координату.
А теперь, дружок, если ты не копипастишь и имеешь благородную цель обучиться, то давай сейчас порассуждаем. Представим ситуацию: нам нужно, чтобы когда игрок входил на территорию Зоны 69 (если ты часто играешь на РП серверах, то это Зона 51), проигрывался какой-либо звук, или появлялось сообщение, мол "Вы находитесь в запретной зоне. Покиньте или вам п#&...". Как же нам это сделать?
На картинке здесь я выделил необходимую нам зону. А сейчас посмотри на карту и пораскинь мозгами, не читай дальше, что будем делать?
Подумал? А теперь проверяй свое суждение. Для того, чтобы оповещать игрока, нам нужно будет написать проверку, находится ли игрок в зоне этого квадрата.
Как же мы это будем делать?
Посмотри теперь внимательно на эту картинку. Представь, что эти кружочки - игроки. Один находится в квадрате, другой нет. Каждый имеет свою координату.
Ты не догадываешься еще, что нужно делать? Если еще не догадался, либо не опустился ниже, чтобы увидеть наконец код, то я тебе расскажу. Нам нужно проверять координаты игрока.
И чтобы это сделать, мы будем брать 2 координаты углов этого желтого квадратика. Эти углы будут верхний левый и нижний правый.
А как проверять будем? Просто. Теория GTA гласит так, что если человек движется влево, что его X-координата уменьшается, а если человек движется вверх, то его Y-координата увеличивается. (Можно я не буду писать, что будет, если двигаться в противоположном направлении? Ты же явно не глупый, догадаешься.) Поэтому нам нужно проверять координаты игрока с координатами двух углов квадрата. Игрок должен быть правее и ниже верхнего угла, но левее и выше правого нижнего угла.
Отлично! Мы с тобой поняли, как нам нужно это сделать, а теперь перейдем к самому коду. (Неужели, да?)
Код:
Для упрощения мы создадим новый паблик (если ты не собираешься использовать этот код один раз):
В начало своего мода введи:
Что означают эта последовательность символов:
Далее в конец этот код:
Я тоже, пожалуй, объясню, что за что отвечает:
Это нам нужно для того, чтобы получить координаты игрока.
А это нам нам нужно для того, чтобы узнать, находится ли игрок в квадрате?
В принципе вот такой вот простой код.
Пример использования:
Я надеюсь, ты что-то понял из данного урока, либо нашел тот код, который тебе был нужен.
Кстати, для удобства разметки зон можно использовать программу GangZone Maker:
VirusTotal:
Ссылка на скачивание:
P.S. Извиняюсь, если слишком много текста, но это ведь урок, а не готовый код, не так ли?
Примечание: Данный урок направлен к новичкам, которые только начинают осваиваться.
Привет, дорогой друг.
Я думаю, что иногда ты задумывался, как сделать ту или иную систему, где можно будет определить, стоит игрок в определенной зоне, или нет?
Примерами таких систем может быть ДМ зона, погода в разных городах и к тому же, всеми любимые GangZones.
А сейчас, пожалуйста, напрягись и вчитайся в то, что здесь написано, дабы понять и повысить свое умение программировать (если, конечно, ты не работаешь по принципу копи-паста).
Теория:
В программировании никуда без логики, я надеюсь, что ты знаешь это, дружок. И для того, чтобы понять, что сейчас мы будем делать, я попытаюсь тебе подробно объяснить, как этот система будет работать.
Ты знаешь, что такое координаты? Надеюсь знаешь, потому что сейчас все будет построено на них. В Grand Theft Auto каждый объект имеет свою координату.
А теперь, дружок, если ты не копипастишь и имеешь благородную цель обучиться, то давай сейчас порассуждаем. Представим ситуацию: нам нужно, чтобы когда игрок входил на территорию Зоны 69 (если ты часто играешь на РП серверах, то это Зона 51), проигрывался какой-либо звук, или появлялось сообщение, мол "Вы находитесь в запретной зоне. Покиньте или вам п#&...". Как же нам это сделать?
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
На картинке здесь я выделил необходимую нам зону. А сейчас посмотри на карту и пораскинь мозгами, не читай дальше, что будем делать?
Подумал? А теперь проверяй свое суждение. Для того, чтобы оповещать игрока, нам нужно будет написать проверку, находится ли игрок в зоне этого квадрата.
Как же мы это будем делать?
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Посмотри теперь внимательно на эту картинку. Представь, что эти кружочки - игроки. Один находится в квадрате, другой нет. Каждый имеет свою координату.
Ты не догадываешься еще, что нужно делать? Если еще не догадался, либо не опустился ниже, чтобы увидеть наконец код, то я тебе расскажу. Нам нужно проверять координаты игрока.
И чтобы это сделать, мы будем брать 2 координаты углов этого желтого квадратика. Эти углы будут верхний левый и нижний правый.
А как проверять будем? Просто. Теория GTA гласит так, что если человек движется влево, что его X-координата уменьшается, а если человек движется вверх, то его Y-координата увеличивается. (Можно я не буду писать, что будет, если двигаться в противоположном направлении? Ты же явно не глупый, догадаешься.) Поэтому нам нужно проверять координаты игрока с координатами двух углов квадрата. Игрок должен быть правее и ниже верхнего угла, но левее и выше правого нижнего угла.
Отлично! Мы с тобой поняли, как нам нужно это сделать, а теперь перейдем к самому коду. (Неужели, да?)
Код:
В начало своего мода введи:
Код:
forward IsPlayerInArea(playerid,Float:minx,Float:miny,Float:maxx,Float:maxy);
Что означают эта последовательность символов:
- playerid - мы будем использовать ее для ID игрока (кто бы мог подумать?)
- Float:minx,Float:miny - это координаты верхнего левого угла зоны.
- Float:maxx,Float:maxy - это координаты нижнего правого угла зоны
Далее в конец этот код:
Код:
public IsPlayerInArea(playerid,Float:minx,Float:miny,Float:maxx,Float:maxy) {
new Float:X,Float:Z,Float:Y;
GetPlayerPos(playerid,X,Y,Z);
if(X > minx && X < maxx && Y > miny && maxy > Y) return 1;
return 0;
}
Я тоже, пожалуй, объясню, что за что отвечает:
Код:
new Float:X,Float:Z,Float:Y;
GetPlayerPos(playerid,X,Y,Z);
Код:
if(X > minx && X < maxx && Y > miny && maxy > Y) return 1;
return 0;
- X > minx && X < maxx - Находится ли X-координата правее верхнего левого угла и левее нижнего правого угла
- Y > miny && maxy > Y - Находится ли Y-координата выше нижнего правого угла и ниже верхнего левого угла
В принципе вот такой вот простой код.
Пример использования:
Код:
if(IsPlayerInArea(playerid,46.875,1769.53125,351.5625,2118.1640625)) SendClientMessage(playerid,-1,"Ты на территории Зоны 69!");
Я надеюсь, ты что-то понял из данного урока, либо нашел тот код, который тебе был нужен.
Кстати, для удобства разметки зон можно использовать программу GangZone Maker:
VirusTotal:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Ссылка на скачивание:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
P.S. Извиняюсь, если слишком много текста, но это ведь урок, а не готовый код, не так ли?
Последнее редактирование:
