[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Радары на скорость по городу
Дата: 23.02.2011, Среда, 13:45:55 | Сообщение # $NUMBER
Группа: Пользователи
Сообщений: 67
Репутация: 11+
Сдраствуйте дорогие пользователи я раскажу вам как ставить радары на скорость по городу и наказывать их за превышение
Начнем: ко всем new прописываем
Code
new UpdateSeconds = 1;   
  #define SLOTS 200
new SavePlayerPos[SLOTS][SavePlayerPosEnum];
new distance1[MAX_PLAYERS];

К форвардам
Code
forward UpdateSpeed(playerid);//--------Для паблика [code]

В паблик OnGameModeInit  гденибудь в конце ставим таймер  
[code]SetTimer("UpdateSpeed", UpdateSeconds*1000, 1);

создаем паблик

Code
public UpdateSpeed(playerid)
{
  new Float:x,Float:y,Float:z;
  new Float:distance,value;
  for(new i=0; i<SLOTS; i++)
  {
   if(IsPlayerConnected(i))
   {
    GetPlayerPos(i, x, y, z);
    distance = floatsqroot(floatpower(floatabs(floatsub(x,SavePlayerPos[i][LastX])),2)+floatpower(floatabs(floatsub(y,SavePlayerPos[i][LastY])),2)+floatpower(floatabs(floatsub(z,SavePlayerPos[i][LastZ])),2));
       // Distance: meters in the last second
    value = floatround(distance * 3600);
    if(UpdateSeconds > 1)
    {
     value = floatround(value / UpdateSeconds);
    }
    distance1[i] = floatround(value/1600);

    SavePlayerPos[i][LastX] = x;
    SavePlayerPos[i][LastY] = y;
    SavePlayerPos[i][LastZ] = z;
     
     
    // Speeding controllers
     
     
     
AddSpeedingCam(i, 1350.9496, -1112.5031, 28.0000, 20, 1000);//x,y,z,расстояние дальности,максимальная скорость
//тоесть сюда же добавляем свои радары по городу

   }
  }  
}  
   

И В конце мода вставляем

Code
IsPlayerInCircle(playerid,Float:x,Float:y,radius)
{
     if(GetPlayerDistanceToPoint(playerid,Float:x,Float:y) < radius)
     {
      return 1;
     }
     return 0;
}

GetPlayerDistanceToPoint(playerid,Float:x,Float:y)
{
     new Float:x1,Float:y1,Float:z1; GetPlayerPos(playerid,x1,y1,z1);
     new Float:tmpdis = floatsqroot(floatpower(floatabs(floatsub(x,x1)),2)+
     floatpower(floatabs(floatsub(y,y1)),2));
     return floatround(tmpdis);
}

stock AddSpeedingCam(playerid, Float:xx, Float:yy, Float:zz, radius, speed)
{
  new fine[MAX_PLAYERS];
   new str[256];

   if(objectcreated!=MaxObjects)
    {
      CreateObject(playerid, xx, yy, zz, 0.0, 0.0, 10);
       objectcreated++;
    }
    if((distance1[playerid])>speed)
    {
   if(IsPlayerInCircle(playerid, xx, yy, radius)  && GetPlayerState(playerid)== PLAYER_STATE_DRIVER)
   {
    fine[playerid]=((distance1[playerid]*17/10)-speed);
    GivePlayerMoney(playerid, -fine[playerid]);
    format(str,sizeof(str), "РАДАР: Вы превысили скорость %d KM/H. [Ваша скорость %d КМ] за это с тебя сняли %d рублей xD",speed, distance1[playerid] ,fine[playerid]);
             GameTextForPlayer(playerid, "~r~WaZUuuuppPPPPPP!", 5000, 3);// текст по середине иигрока
             PlayerPlaySound(playerid, 1132, 0.0, 0.0, 0.0);// ид музыки при преступлени
    SendClientMessage(playerid, COLOR_RED, str);//  
   }
  }
}

p.s у меня все работает если есть ошибки или я что то не дописал то пишите сюда

Дата: 23.02.2011, Среда, 16:23:25 | Сообщение # $NUMBER
Группа: Модераторы
Сообщений: 1045
Репутация: 1112+
misha_konsta, Лови +7 :)

Новичкам пригодиться :)

Дата: 23.02.2011, Среда, 16:53:10 | Сообщение # $NUMBER
Группа: Проверенные
Сообщений: 134
Репутация: 74+
E:\Server\VruBY\gamemodes\VruBY.pwn(334) : error 017: undefined symbol "SavePlayerPosEnum"
E:\Server\VruBY\gamemodes\VruBY.pwn(334) : error 009: invalid array size (negative, zero or out of bounds)
E:\Server\VruBY\gamemodes\VruBY.pwn(1326) : error 021: symbol already defined: "SavePlayerPos"
E:\Server\VruBY\gamemodes\VruBY.pwn(6530) : warning 213: tag mismatch
E:\Server\VruBY\gamemodes\VruBY.pwn(6530) : warning 213: tag mismatch
E:\Server\VruBY\gamemodes\VruBY.pwn(6530) : warning 213: tag mismatch
E:\Server\VruBY\gamemodes\VruBY.pwn(47322) : warning 235: public function lacks forward declaration (symbol "ElectCheck")
E:\Server\VruBY\gamemodes\VruBY.pwn(47356) : warning 213: tag mismatch
E:\Server\VruBY\gamemodes\VruBY.pwn(47356) : warning 213: tag mismatch
E:\Server\VruBY\gamemodes\VruBY.pwn(47356) : warning 213: tag mismatch
E:\Server\VruBY\gamemodes\VruBY.pwn(47365) : warning 213: tag mismatch
E:\Server\VruBY\gamemodes\VruBY.pwn(47366) : warning 213: tag mismatch
E:\Server\VruBY\gamemodes\VruBY.pwn(47367) : warning 213: tag mismatch
E:\Server\VruBY\gamemodes\VruBY.pwn(47374) : error 017: undefined symbol "AddSpeedingCam"
Дата: 23.02.2011, Среда, 17:05:10 | Сообщение # $NUMBER
Группа: Проверенные
Сообщений: 114
Репутация: 262+
Alex1994, руки кривые NO
Дата: 23.02.2011, Среда, 17:06:10 | Сообщение # $NUMBER
Группа: Пользователи
Сообщений: 67
Репутация: 11+
Code
enum SavePlayerPosEnum {
Float:LastX,
Float:LastY,
Float:LastZ
}
думаю знаеш куда а насчет 2 ошибки то ты значит сток не туда поставил
Дата: 23.02.2011, Среда, 18:43:24 | Сообщение # $NUMBER
Группа: Проверенные
Сообщений: 84
Репутация: 1+
D:\CrysisR\@@@@РП\gamemodes\@@@.pwn(46953) : error 017: undefined symbol "objectcreated"
как исправвить?
Дата: 23.02.2011, Среда, 18:51:57 | Сообщение # $NUMBER
Группа: Пользователи
Сообщений: 67
Репутация: 11+
в начале new objectcreated; и new MaxObjects = 2000;
Дата: 24.02.2011, Четверг, 09:11:20 | Сообщение # $NUMBER
Группа: Проверенные
Сообщений: 50
Репутация: 123+
Что за оптимизация? ROFL
Дата: 27.02.2011, Воскресенье, 17:29:00 | Сообщение # $NUMBER
Группа: Проверенные
Сообщений: 134
Репутация: 74+
Спасибо просто у мя в моде уже использовалось:
Code
enum SavePlayerPosEnum {  
Float:LastX,  
Float:LastY,  
Float:LastZ  
}
  • Страница 1 из 1
  • 1
Поиск: