Guest User

Colored Checkpoints Deluxe

a guest
May 11th, 2012
379
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.86 KB | None | 0 0
  1. #include <a_samp>
  2. // Colored Checkpoints by Vince & O.K.Style™
  3. #define MAX_COLOR_CHECK 5
  4. new Float:cPos[MAX_COLOR_CHECK][6] = {
  5.     {1410.0, 1461.0, 9.82, 0.0, 0.0, 0.0},
  6.     {1412.0, 1461.0, 9.82, 0.0, 0.0, 0.0},
  7.     {1414.0, 1461.0, 9.82, 0.0, 0.0, 0.0},
  8.     {1416.0, 1461.0, 9.82, 0.0, 0.0, 0.0},
  9.     {1418.0, 1461.0, 9.82, 0.0, 0.0, 0.0}
  10. };
  11. new cID[MAX_COLOR_CHECK];
  12. new bool:cEntered[MAX_PLAYERS][MAX_COLOR_CHECK];
  13. new timer;
  14. #define IsPlayerInColorCheckID(%0,%1)   cEntered[%0][%1]//проверка на нахождение игрока в чекпоинте
  15. public OnFilterScriptInit()
  16. {
  17.     cID[0] = CreateObject(1317, cPos[0][0], cPos[0][1], cPos[0][2], cPos[0][3], cPos[0][4], cPos[0][5]);
  18.     SetObjectMaterial(cID[0], 0, 18646, "matcolours", "red-4", 0x99FF0000); // name of texture or txd - same
  19.  
  20.     cID[1] = CreateObject(1317, cPos[1][0], cPos[1][1], cPos[1][2], cPos[1][3], cPos[1][4], cPos[1][5]);
  21.     SetObjectMaterial(cID[1], 0, 18646, "matcolours", "orange", 0x99FF8000);
  22.  
  23.     cID[2] = CreateObject(1317, cPos[2][0], cPos[2][1], cPos[2][2], cPos[2][3], cPos[2][4], cPos[2][5]);
  24.     SetObjectMaterial(cID[2], 0, 18646, "matcolours", "yellow", 0x99FFFF00);
  25.  
  26.     cID[3] = CreateObject(1317, cPos[3][0], cPos[3][1], cPos[3][2], cPos[3][3], cPos[3][4], cPos[3][5]);
  27.     SetObjectMaterial(cID[3], 0, 18646, "matcolours", "green", 0x99008000);
  28.  
  29.     cID[4] = CreateObject(1317, cPos[4][0], cPos[4][1], cPos[4][2], cPos[4][3], cPos[4][4], cPos[4][5]);
  30.     SetObjectMaterial(cID[4], 0, 18646, "matcolours", "blue", 0x990000FF);
  31.     return 1;
  32. }
  33. public OnPlayerConnect(playerid){
  34.     for(new i; i < MAX_COLOR_CHECK; i++)cEntered[playerid][i]=false;
  35.     return 1;
  36. }
  37. public OnPlayerUpdate(playerid)
  38. {
  39.     if(GetTickCount() < timer+100)return 1;
  40.     timer = GetTickCount();
  41.     for(new i; i < MAX_COLOR_CHECK; i++)
  42.     {
  43.         if(IsPlayerInRangeOfPoint(playerid, 1.25, cPos[i][0], cPos[i][1], cPos[i][2]))
  44.         {
  45.             if(cEntered[playerid][i])continue;
  46.             cEntered[playerid][i] = true;
  47.             //ниже действия при входе
  48.             printf("%d зашел в чекпоинт", playerid);
  49.             SendClientMessage(playerid, -1, "{eeeeee}Зашел в чекпоинт!");
  50.             switch(i){
  51.                 case 0:SendClientMessage(playerid, -1, "{ee0000}красный!");
  52.                 case 1:SendClientMessage(playerid, -1, "{ff8800}оранжевый!");
  53.                 case 2:SendClientMessage(playerid, -1, "{eeee00}желтый!");
  54.                 case 3:SendClientMessage(playerid, -1, "{00ee00}зеленый!");
  55.                 case 4:SendClientMessage(playerid, -1, "{00eeee}голубой!");
  56.             }
  57.             //end
  58.         }else{
  59.             if(!cEntered[playerid][i])continue;
  60.             cEntered[playerid][i] = false;
  61.             //ниже действия при выходе
  62.             printf("%d покинул чекпоинт", playerid);
  63.             SendClientMessage(playerid, -1, "{eeeeee}Вышел из чекпоинта!");
  64.             switch(i){
  65.                 case 0:SendClientMessage(playerid, -1, "{ee0000}красный!");
  66.                 case 1:SendClientMessage(playerid, -1, "{ff8800}оранжевый!");
  67.                 case 2:SendClientMessage(playerid, -1, "{eeee00}желтый!");
  68.                 case 3:SendClientMessage(playerid, -1, "{00ee00}зеленый!");
  69.                 case 4:SendClientMessage(playerid, -1, "{00eeee}голубой!");
  70.             }
  71.             //end
  72.         }
  73.     }
  74.     return 1;
  75. }
  76. public OnPlayerCommandText(playerid, cmdtext[]){
  77.     if(!strcmp(cmdtext, "/moneyred", true)){
  78.         if(IsPlayerInColorCheckID(playerid, 0)){//если playerid находится в чеке с идом 0 (красный)
  79.             SendClientMessage(playerid, -1, "{ee0000}Ты в красном чеке, лови монетку!");
  80.             GivePlayerMoney(playerid, 1);
  81.         }else SendClientMessage(playerid, -1, "{ff0000}Ты не в красном чеке!");
  82.         return 1;
  83.     }else if(!strcmp(cmdtext, "/moneyany", true)){
  84.         if(IsPlayerInAnyColorCheck(playerid)){//если playerid находится в каком нибудь чеке
  85.             SendClientMessage(playerid, -1, "{ee00ee}Ты в какомто чеке, лови монетку!");
  86.             GivePlayerMoney(playerid, 1);
  87.         }else SendClientMessage(playerid, -1, "{ff0000}Войди в любой чек!");
  88.         return 1;
  89.     }else if(!strcmp(cmdtext, "/getcheck", true)){//узнать в каком чеке находится playerid
  90.         if(IsPlayerInAnyColorCheck(playerid)){
  91.             new str[144];
  92.             format(str, 144, "{eeeeee}ColorCheckID: %d", GetPlayerColorCheckID(playerid));
  93.             SendClientMessage(playerid, -1, str);
  94.         }else SendClientMessage(playerid, -1, "{ff0000}Войди в любой чек!");
  95.         return 1;
  96.     }else if(!strcmp(cmdtext, "/tp", true)){//телепорт к тестовым чекам
  97.         SetPlayerPos(playerid, 1415.0404,1452.5490,10.8203);
  98.         return 1;
  99.     }
  100.     return 0;
  101. }
  102. stock IsPlayerInAnyColorCheck(playerid){
  103.     for(new i; i < MAX_COLOR_CHECK; i++)if(IsPlayerInColorCheckID(playerid, i))return true;
  104.     return false;
  105. }
  106. stock GetPlayerColorCheckID(playerid){
  107.     for(new i; i < MAX_COLOR_CHECK; i++)if(IsPlayerInColorCheckID(playerid, i))return i;
  108.     return -1;
  109. }
Advertisement
Add Comment
Please, Sign In to add comment