Перейти к содержанию
Авторизация  
#Franklin

Радар с объектом

Рекомендуемые сообщения

#Franklin

Радар вырезан из скрипта у нас из паблика

Плюсов не прошу!

 

Добавляем ко всем define:

 

 

#define MAX_RADARS 100
#define MAX_PLAYER_RADARS 3
 
....................................................
 
Далее добавляем:
 

enum rInfo
{
  Float:rPos[3],
  rSpeed,
  bool:rActive,
rPlayer,
rObject
}
 
 
....................................................
 
Ко всем new:
 

new RadarInfo[MAX_RADARS][rInfo];
new PlayerType[MAX_PLAYERS];
new PlayerRadars[MAX_PLAYERS];
 
....................................................
 
Добавляем forward:
 
forward UpdatePlayersRadars();
 
 
 
Добавляем PublicИ
 
public OnFilterScriptInit()
{
SetTimer("UpdatePlayersRadars", 1000, true);
return 1;
}
 
......................................................

public UpdatePlayersRadars()
{
new string[128],name[24];
for(new i; i
{
   if(!IsPlayerConnected(i) || GetPlayerState(i) != PLAYER_STATE_DRIVER) continue;
   if(PlayerType > 0) PlayerType--;
   for(new r; r
   {
       if(RadarInfo[r][rActive] && IsPlayerInRangeOfPoint(i, 10.0, RadarInfo[r][rPos][0], RadarInfo[r][rPos][1], RadarInfo[r][rPos][2]) && GetPlayerSpeed(i) > RadarInfo[r][rSpeed])
       {
           GetPlayerName(i, name, 24);
           format(string, 128, ">>> Игрок {DEDEDE}%s{FFFFFF} привисел скорость | допустимая: {DEDEDE}%d | {FFFFFF}замечанная: {DEDEDE}%d", name, RadarInfo[r][rSpeed], GetPlayerSpeed(i));
           SendClientMessage(RadarInfo[r][rPlayer], -1, string);
           PlayerType = 10;
       }
   }
}
return 1;
}
......................................................
 

public OnFilterScriptExit()
{
for(new r; r
{
if(RadarInfo[r][rActive])
{
DestroyObject(RadarInfo[r][rObject]);
PlayerRadars[RadarInfo[r][rPlayer]] = 0;
}
}
return 1;
}
 
......................................................
 
Добавляем в OnPlayerConnect:
 

PlayerType[playerid] = 0;
PlayerRadars[playerid] = 0;
 
....................................................

 

Добавляем в OnPlayerCommand

 

new string[128],cmd[256],tmp[256],idx;
cmd = strtok(cmdtext, idx);
if(!strcmp("/delradar", cmd, true))
{
   new bool:radarid;
   for(new r; r
   {
       if(RadarInfo[r][rActive] && IsPlayerInRangeOfPoint(playerid, 3.0, RadarInfo[r][rPos][0], RadarInfo[r][rPos][1], RadarInfo[r][rPos][2]))
       {
           if(RadarInfo[r][rPlayer] != playerid)
{
SendClientMessage(playerid, 0x27C400FF, ">>> Данный радар поставлен не вами.");
           }
else
{
   PlayerRadars[playerid]--;
           radarid = true;
           DestroyObject(RadarInfo[r][rObject]);
           RadarInfo[r][rPlayer] = INVALID_PLAYER_ID;
           RadarInfo[r][rActive] = false;
           }
           break;
       }
   }
   if(!radarid) SendClientMessage(playerid, 0x27C400FF, ">>> Поблизости нет радаров.");
return 1;
  }
if(!strcmp("/setradar", cmd, true))
{
   new radarid = -1;
   for(new r; r
   {
       if(!RadarInfo[r][rActive])
       {
           radarid = r;
           break;
       }
   }
   if(radarid >= MAX_RADARS) return SendClientMessage(playerid, 0x27C400FF, ">>> Уже создано максимальное число радаров.");
   if(PlayerRadars[playerid] >= MAX_PLAYER_RADARS) return SendClientMessage(playerid, 0x27C400FF, ">>> Ты создал максимальное число радаров.");
   tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, 0x27C400FF, ">>> Используйте >>> /setradar [ ??? ?????? ]");
SendClientMessage(playerid, 0xDEDEDEFF, "| 1: Городской");
SendClientMessage(playerid, 0xDEDEDEFF, "| 2: пригородный);
SendClientMessage(playerid, 0xDEDEDEFF, "| 3: шоссейный");
return 1;
}
new type[64];
switch(strval(tmp))
{
    case 1: RadarInfo[radarid][rSpeed] = 60, type = "городской";
    case 2: RadarInfo[radarid][rSpeed] = 90, type = "пригородный";
    case 3: RadarInfo[radarid][rSpeed] = 120, type = "шоссейн";
       default: return SendClientMessage(playerid, 0x27C400FF, ">>>Неверный тип радара ");
   }
new Float:POS[4];
GetPlayerPos(playerid, POS[0], POS[1], POS[2]);
SetPlayerPos(playerid, POS[0]-0.5, POS[1]-0.5, POS[2]);
GetPlayerFacingAngle(playerid, POS[3]);
RadarInfo[radarid][rObject] = CreateObject(18880, POS[0], POS[1], POS[2]-2.5, 0.0, 0.0, POS[3]);
   RadarInfo[radarid][rActive] = true;
   RadarInfo[radarid][rPlayer] = playerid;
   RadarInfo[radarid][rPos][0] = POS[0];
   RadarInfo[radarid][rPos][1] = POS[1];
   RadarInfo[radarid][rPos][2] = POS[2];
      format(string, 128, ">>> Радар успешно создан |  тип радара: {DEDEDE}%s", type);
   PlayerRadars[playerid]++;
return 1;
}
return 0;
}
 
.....................................................
 
Добавляем стоки:
 

stock GetPlayerSpeed(playerid)
{
new speed,Float:POS[4];
if(!IsPlayerInAnyVehicle(playerid)) GetPlayerVelocity(playerid, POS[0], POS[1], POS[2]);
    else GetVehicleVelocity(GetPlayerVehicleID(playerid), POS[0], POS[1], POS[2]);
    POS[3] = floatsqroot(floatpower(floatabs(POS[0]), 2.0)+floatpower(floatabs(POS[1]), 2.0)+floatpower(floatabs(POS[2]), 2.0)) * 253.3;
    speed = floatround(POS[3])/2;
return speed;
}
stock strtok(const string[], &index)
{
    new length = strlen(string);
    while((index
    new offset = index,result[20];
    while((index ' ') && ((index-offset)
    result[index-offset] = EOS;
return result;
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
SNEEX

 

Радар вырезан из скрипта у нас из паблика

Плюсов не прошу!

 

Добавляем ко всем define:

 

 

#define MAX_RADARS 100
#define MAX_PLAYER_RADARS 3
 
....................................................
 
Далее добавляем:
 

enum rInfo
{
  Float:rPos[3],
  rSpeed,
  bool:rActive,
rPlayer,
rObject
}
 
 
....................................................
 
Ко всем new:
 

new RadarInfo[MAX_RADARS][rInfo];
new PlayerType[MAX_PLAYERS];
new PlayerRadars[MAX_PLAYERS];
 
....................................................
 
Добавляем forward:
 
forward UpdatePlayersRadars();
 
 
 
Добавляем PublicИ
 
public OnFilterScriptInit()
{
SetTimer("UpdatePlayersRadars", 1000, true);
return 1;
}
 
......................................................

public UpdatePlayersRadars()
{
new string[128],name[24];
for(new i; i
{
   if(!IsPlayerConnected(i) || GetPlayerState(i) != PLAYER_STATE_DRIVER) continue;
   if(PlayerType > 0) PlayerType--;
   for(new r; r
   {
       if(RadarInfo[r][rActive] && IsPlayerInRangeOfPoint(i, 10.0, RadarInfo[r][rPos][0], RadarInfo[r][rPos][1], RadarInfo[r][rPos][2]) && GetPlayerSpeed(i) > RadarInfo[r][rSpeed])
       {
           GetPlayerName(i, name, 24);
           format(string, 128, ">>> Игрок {DEDEDE}%s{FFFFFF} привисел скорость | допустимая: {DEDEDE}%d | {FFFFFF}замечанная: {DEDEDE}%d", name, RadarInfo[r][rSpeed], GetPlayerSpeed(i));
           SendClientMessage(RadarInfo[r][rPlayer], -1, string);
           PlayerType = 10;
       }
   }
}
return 1;
}
......................................................
 

public OnFilterScriptExit()
{
for(new r; r
{
if(RadarInfo[r][rActive])
{
DestroyObject(RadarInfo[r][rObject]);
PlayerRadars[RadarInfo[r][rPlayer]] = 0;
}
}
return 1;
}
 
......................................................
 
Добавляем в OnPlayerConnect:
 

PlayerType[playerid] = 0;
PlayerRadars[playerid] = 0;
 
....................................................

 

Добавляем в OnPlayerCommand

 

new string[128],cmd[256],tmp[256],idx;
cmd = strtok(cmdtext, idx);
if(!strcmp("/delradar", cmd, true))
{
   new bool:radarid;
   for(new r; r
   {
       if(RadarInfo[r][rActive] && IsPlayerInRangeOfPoint(playerid, 3.0, RadarInfo[r][rPos][0], RadarInfo[r][rPos][1], RadarInfo[r][rPos][2]))
       {
           if(RadarInfo[r][rPlayer] != playerid)
{
SendClientMessage(playerid, 0x27C400FF, ">>> Данный радар поставлен не вами.");
           }
else
{
   PlayerRadars[playerid]--;
           radarid = true;
           DestroyObject(RadarInfo[r][rObject]);
           RadarInfo[r][rPlayer] = INVALID_PLAYER_ID;
           RadarInfo[r][rActive] = false;
           }
           break;
       }
   }
   if(!radarid) SendClientMessage(playerid, 0x27C400FF, ">>> Поблизости нет радаров.");
return 1;
  }
if(!strcmp("/setradar", cmd, true))
{
   new radarid = -1;
   for(new r; r
   {
       if(!RadarInfo[r][rActive])
       {
           radarid = r;
           break;
       }
   }
   if(radarid >= MAX_RADARS) return SendClientMessage(playerid, 0x27C400FF, ">>> Уже создано максимальное число радаров.");
   if(PlayerRadars[playerid] >= MAX_PLAYER_RADARS) return SendClientMessage(playerid, 0x27C400FF, ">>> Ты создал максимальное число радаров.");
   tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, 0x27C400FF, ">>> Используйте >>> /setradar [ ??? ?????? ]");
SendClientMessage(playerid, 0xDEDEDEFF, "| 1: Городской");
SendClientMessage(playerid, 0xDEDEDEFF, "| 2: пригородный);
SendClientMessage(playerid, 0xDEDEDEFF, "| 3: шоссейный");
return 1;
}
new type[64];
switch(strval(tmp))
{
    case 1: RadarInfo[radarid][rSpeed] = 60, type = "городской";
    case 2: RadarInfo[radarid][rSpeed] = 90, type = "пригородный";
    case 3: RadarInfo[radarid][rSpeed] = 120, type = "шоссейн";
       default: return SendClientMessage(playerid, 0x27C400FF, ">>>Неверный тип радара ");
   }
new Float:POS[4];
GetPlayerPos(playerid, POS[0], POS[1], POS[2]);
SetPlayerPos(playerid, POS[0]-0.5, POS[1]-0.5, POS[2]);
GetPlayerFacingAngle(playerid, POS[3]);
RadarInfo[radarid][rObject] = CreateObject(18880, POS[0], POS[1], POS[2]-2.5, 0.0, 0.0, POS[3]);
   RadarInfo[radarid][rActive] = true;
   RadarInfo[radarid][rPlayer] = playerid;
   RadarInfo[radarid][rPos][0] = POS[0];
   RadarInfo[radarid][rPos][1] = POS[1];
   RadarInfo[radarid][rPos][2] = POS[2];
      format(string, 128, ">>> Радар успешно создан |  тип радара: {DEDEDE}%s", type);
   PlayerRadars[playerid]++;
return 1;
}
return 0;
}
 
.....................................................
 
Добавляем стоки:
 

stock GetPlayerSpeed(playerid)
{
new speed,Float:POS[4];
if(!IsPlayerInAnyVehicle(playerid)) GetPlayerVelocity(playerid, POS[0], POS[1], POS[2]);
    else GetVehicleVelocity(GetPlayerVehicleID(playerid), POS[0], POS[1], POS[2]);
    POS[3] = floatsqroot(floatpower(floatabs(POS[0]), 2.0)+floatpower(floatabs(POS[1]), 2.0)+floatpower(floatabs(POS[2]), 2.0)) * 253.3;
    speed = floatround(POS[3])/2;
return speed;
}
stock strtok(const string[], &index)
{
    new length = strlen(string);
    while((index
    new offset = index,result[20];
    while((index ' ') && ((index-offset)
    result[index-offset] = EOS;
return result;
}

 

Тема была. Вы прежде чем создавать тему воспользовались бы поиском

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Чех

В код всё бери...И это стырил откуда-то...-

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
#Franklin

В код всё бери...И это стырил откуда-то...-

Я Писал этот урок и что я взял скрипт из нашего паблика

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
#Franklin

up

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Arman

Будьте любезны, скриншот выложите, а то охото посмотреть.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
John_Smith

Закрыто. Не оформлена.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.