A
Amfy
Гость
Гость
Название районов пишется под радаром в нижнем левом углу в виде TextDraw`a. Если место зоны неизвестно - пишет "Неизвестно". Каким макаром вписывать координаты, объясню в конце урока.
https://www.youtube.com/watch?v=Hb19mgJJ0OU&feature=youtu.be
Ко всем глобальным переменным:
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, "Автошкола"}//Оставил просто для примера
};
В public 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);
В public OnPlayerDisconnect
TextDrawDestroy(TDZona[playerid]);
В public OnPlayerSpawn
TextDrawShowForPlayer(playerid, TDZona[playerid]);
В секундный таймер или в public 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;
}
Ко всем глобальным переменным:
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, "Автошкола"}//Оставил просто для примера
};
В public 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);
В public OnPlayerDisconnect
TextDrawDestroy(TDZona[playerid]);
В public OnPlayerSpawn
TextDrawShowForPlayer(playerid, TDZona[playerid]);
В секундный таймер или в public 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 идет с минимальной к максимальной. Т.е сначало две минимальные координаты, а потом две максимальные.
Картинку вам на всякий случай:
Всё! Если что не понятно - спрашивайте.
Автор: Amfy
Картинку вам на всякий случай:
Всё! Если что не понятно - спрашивайте.
Автор: Amfy