Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- // Colored Checkpoints by Vince & O.K.Style™
- #define MAX_COLOR_CHECK 5
- new Float:cPos[MAX_COLOR_CHECK][6] = {
- {1410.0, 1461.0, 9.82, 0.0, 0.0, 0.0},
- {1412.0, 1461.0, 9.82, 0.0, 0.0, 0.0},
- {1414.0, 1461.0, 9.82, 0.0, 0.0, 0.0},
- {1416.0, 1461.0, 9.82, 0.0, 0.0, 0.0},
- {1418.0, 1461.0, 9.82, 0.0, 0.0, 0.0}
- };
- new cID[MAX_COLOR_CHECK];
- new bool:cEntered[MAX_PLAYERS][MAX_COLOR_CHECK];
- new timer;
- #define IsPlayerInColorCheckID(%0,%1) cEntered[%0][%1]//проверка на нахождение игрока в чекпоинте
- public OnFilterScriptInit()
- {
- cID[0] = CreateObject(1317, cPos[0][0], cPos[0][1], cPos[0][2], cPos[0][3], cPos[0][4], cPos[0][5]);
- SetObjectMaterial(cID[0], 0, 18646, "matcolours", "red-4", 0x99FF0000); // name of texture or txd - same
- cID[1] = CreateObject(1317, cPos[1][0], cPos[1][1], cPos[1][2], cPos[1][3], cPos[1][4], cPos[1][5]);
- SetObjectMaterial(cID[1], 0, 18646, "matcolours", "orange", 0x99FF8000);
- cID[2] = CreateObject(1317, cPos[2][0], cPos[2][1], cPos[2][2], cPos[2][3], cPos[2][4], cPos[2][5]);
- SetObjectMaterial(cID[2], 0, 18646, "matcolours", "yellow", 0x99FFFF00);
- cID[3] = CreateObject(1317, cPos[3][0], cPos[3][1], cPos[3][2], cPos[3][3], cPos[3][4], cPos[3][5]);
- SetObjectMaterial(cID[3], 0, 18646, "matcolours", "green", 0x99008000);
- cID[4] = CreateObject(1317, cPos[4][0], cPos[4][1], cPos[4][2], cPos[4][3], cPos[4][4], cPos[4][5]);
- SetObjectMaterial(cID[4], 0, 18646, "matcolours", "blue", 0x990000FF);
- return 1;
- }
- public OnPlayerConnect(playerid){
- for(new i; i < MAX_COLOR_CHECK; i++)cEntered[playerid][i]=false;
- return 1;
- }
- public OnPlayerUpdate(playerid)
- {
- if(GetTickCount() < timer+100)return 1;
- timer = GetTickCount();
- for(new i; i < MAX_COLOR_CHECK; i++)
- {
- if(IsPlayerInRangeOfPoint(playerid, 1.25, cPos[i][0], cPos[i][1], cPos[i][2]))
- {
- if(cEntered[playerid][i])continue;
- cEntered[playerid][i] = true;
- //ниже действия при входе
- printf("%d зашел в чекпоинт", playerid);
- SendClientMessage(playerid, -1, "{eeeeee}Зашел в чекпоинт!");
- switch(i){
- case 0:SendClientMessage(playerid, -1, "{ee0000}красный!");
- case 1:SendClientMessage(playerid, -1, "{ff8800}оранжевый!");
- case 2:SendClientMessage(playerid, -1, "{eeee00}желтый!");
- case 3:SendClientMessage(playerid, -1, "{00ee00}зеленый!");
- case 4:SendClientMessage(playerid, -1, "{00eeee}голубой!");
- }
- //end
- }else{
- if(!cEntered[playerid][i])continue;
- cEntered[playerid][i] = false;
- //ниже действия при выходе
- printf("%d покинул чекпоинт", playerid);
- SendClientMessage(playerid, -1, "{eeeeee}Вышел из чекпоинта!");
- switch(i){
- case 0:SendClientMessage(playerid, -1, "{ee0000}красный!");
- case 1:SendClientMessage(playerid, -1, "{ff8800}оранжевый!");
- case 2:SendClientMessage(playerid, -1, "{eeee00}желтый!");
- case 3:SendClientMessage(playerid, -1, "{00ee00}зеленый!");
- case 4:SendClientMessage(playerid, -1, "{00eeee}голубой!");
- }
- //end
- }
- }
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[]){
- if(!strcmp(cmdtext, "/moneyred", true)){
- if(IsPlayerInColorCheckID(playerid, 0)){//если playerid находится в чеке с идом 0 (красный)
- SendClientMessage(playerid, -1, "{ee0000}Ты в красном чеке, лови монетку!");
- GivePlayerMoney(playerid, 1);
- }else SendClientMessage(playerid, -1, "{ff0000}Ты не в красном чеке!");
- return 1;
- }else if(!strcmp(cmdtext, "/moneyany", true)){
- if(IsPlayerInAnyColorCheck(playerid)){//если playerid находится в каком нибудь чеке
- SendClientMessage(playerid, -1, "{ee00ee}Ты в какомто чеке, лови монетку!");
- GivePlayerMoney(playerid, 1);
- }else SendClientMessage(playerid, -1, "{ff0000}Войди в любой чек!");
- return 1;
- }else if(!strcmp(cmdtext, "/getcheck", true)){//узнать в каком чеке находится playerid
- if(IsPlayerInAnyColorCheck(playerid)){
- new str[144];
- format(str, 144, "{eeeeee}ColorCheckID: %d", GetPlayerColorCheckID(playerid));
- SendClientMessage(playerid, -1, str);
- }else SendClientMessage(playerid, -1, "{ff0000}Войди в любой чек!");
- return 1;
- }else if(!strcmp(cmdtext, "/tp", true)){//телепорт к тестовым чекам
- SetPlayerPos(playerid, 1415.0404,1452.5490,10.8203);
- return 1;
- }
- return 0;
- }
- stock IsPlayerInAnyColorCheck(playerid){
- for(new i; i < MAX_COLOR_CHECK; i++)if(IsPlayerInColorCheckID(playerid, i))return true;
- return false;
- }
- stock GetPlayerColorCheckID(playerid){
- for(new i; i < MAX_COLOR_CHECK; i++)if(IsPlayerInColorCheckID(playerid, i))return i;
- return -1;
- }
Advertisement
Add Comment
Please, Sign In to add comment