Sign in to follow this  
Followers 0
DEST

Место, где находится игрок углу - НАВИГАЦИЯ

1 post in this topic

Название районов пишется под радаром в нижнем левом углу в виде TextDraw`a. Если место зоны неизвестно - пишет "Неизвестно". Каким макаром вписывать координаты, объясню в конце урока.

Спойлер

 

Ко всем глобальным переменным (new):

new Text:TDZona[MAX_PLAYERS];
 
enum ZoneInfo
{
    Float:zMin_x,
    Float:zMin_y,
    Float:zMax_x,
    Float:zMax_y,
    zName[30]
};
new ZoneName[][ZoneInfo] = {
    {1722.9976, 2243.8809, 1800.4734, 2314.0176, "Автобаза"},//Оставил просто для примера
    {1906.2468, 2219.3777, 1944.9504, 2253.3904, "Автошкола"}//Оставил просто для примера
};

В OnPlayerConnect:

TDZona[playerid] = TextDrawCreate(10.000000, 427.000000, "-");
TextDrawBackgroundColor(TDZona[playerid], 1182971135);
TextDrawFont(TDZona[playerid], 1);
TextDrawLetterSize(TDZona[playerid], 0.500000, 1.600000);
TextDrawColor(TDZona[playerid], -520093697);
TextDrawSetOutline(TDZona[playerid], 1);
TextDrawSetProportional(TDZona[playerid], 1);

В OnPlayerDisconnect:
 

TextDrawDestroy(TDZona[playerid]);

В Паблик OnPlayerSpawn:

TextDrawShowForPlayer(playerid, TDZona[playerid]);

В секундный таймер (В КРАЙНЕМ СЛУЧАЕ в OnPlayerUpdate):

UpdateZonaPlayer(playerid);

В конец мода:

forward UpdateZonaPlayer(playerid);
public UpdateZonaPlayer(playerid)
{
    new Float:coord[3];
    GetPlayerPos(playerid, coord[0], coord[1], coord[2]);
    for(new z = 0; z != sizeof(ZoneName); z ++)
    {
        if((coord[0] <= ZoneName[z][zMax_x] && coord[0] >= ZoneName[z][zMin_x]) && (coord[1] <= ZoneName[z][zMax_y] && coord[1] >= ZoneName[z][zMin_y]))
         {
            TextDrawSetString(TDZona[playerid], ZoneName[z][zName]);
            break;
        }
        else
        {
            TextDrawSetString(TDZona[playerid], "Неизвестно");
        }
    }
    return 1;
}
Спойлер

Координаты нужно снимать в виде квадрата. Для этого нужно снять в левом верхнем углу, это будет min_x, min_y и в правом нижнем углу, это будет max_x, max_y. Аналогично как и с функцией PlayerToKvadrat. Координаты вписывайте внимательно, смотрите какая X и Y меньше или больше. В массиве ZoneName идет с минимальной к максимальной. Т.е сначало две минимальные координаты, а потом две максимальные.

Картинку вам на всякий случай:

Screenshot_29.png

Автор: Amfy.

 

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

    • Tony_Cannabis
      By Tony_Cannabis
      Нужна мне собственно проверка на гараж, я хочу чтобы дом N класса не имел гаража, куда только я проверку эту не сувал, но немогу понять как это работает
       
      Имеем код
      Куда мне ее засунуть просто ума не приложу, думал будет легко но понимаю что без вас не разобратся, проверку которую хотел закинуть см. ниже
      if(gHouses[houseid][houseClass] == 0) return ErrorMessage(playerid, "Недоступно для класса Вашего дома");