Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*============================================================================*\
- =======================| Colored CheckPoint v1.1 |=======================
- =======================| Created by: White_116 |=======================
- =======================| Date: 17.05.2013 |=======================
- ================================================================================
- native GetPlayerColoredCheckpoint(playerid);// Узнаёт ид чекпойнта
- native IsPlayerInAnyColoredCheckpoint(playerid);// Находится ли игрок в каком либо чекпойнте
- native IsPlayerInColoredCheckpoint(playerid, pointid);// Находится ли игрок в заданом чекпойнте
- native CreateColoredCheckpoint(modelid, color, Float:size, Float:x, Float:y, Float:z, Float:rx=0.0, Float:ry=0.0, Float:rz=0.0, w=-1, i=-1, icon=0);//Создаёт чекпойнт
- native DestroyColoredCheckpoint(pointid);// Удаляет чекпойнт
- native DestroyAllColoredCheckpoint();// Удаляет все чекпойнты
- native SetColoredCheckpointPos(pointid, Float:x, Float:y, Float:z);// Смена позичии чекпойнта
- native GetColoredCheckpointPos(pointid, &Float:x, &Float:y, &Float:z);// Узнайт позицию чекпойнта
- native SetColoredCheckpointRot(pointid, Float:rx, Float:ry, Float:rz);// Смена ротации чекпойнта
- native GetColoredCheckpointRot(pointid, &Float:rx, &Float:ry, &Float:rz);// Узнаёт ротацию чекпойнта
- native OnPlayerEnterColoredCheckpoint(playerid, pointid);// Игрок вошёл в чекпойнт
- native OnPlayerLeaveColoredCheckpoint(playerid, pointid);// Игрок вышел из чекпойнта
- native SetColoredCheckpointInterior(pointid, interior);// Установка интерьера чекпойнта
- native SetColoredCheckpointWorld(pointid, worldid);// Установка вирт.мира чекпойнта
- native GetColoredCheckpointInterior(pointid);// Узнаёт интерьер чекпойнта
- native GetColoredCheckpointWorld(pointid);// Узнаёт вирт.мир чекпойнта
- native SetColoredCheckpointRadius(pointid, Float:r);// Устанавливает радиус действия чекпойнта
- native GetColoredCheckpointRadius(pointid, &Float:r);// Узнаёт радиус действия чекпойнта
- native SetColoredCheckpointColor(pointid, color);// Устанавливает цвет чекпойнта
- native GetColoredCheckpointColor(pointid);// Узнаёт цвет чекпойнта
- \*============================================================================*/
- #include <a_samp>
- //#include <streamer>// раскоментировать если вы хотите чтобы объекты создавались через стример
- #define PointWorld
- #define PointInterior
- #define MAX_POINTS (1000)// Максимальное число точек.
- #define MAX_POINTS_TO_STREAM (100)// Количество точек в чанке (MAX 255)
- #include <W_PS> // http://pastebin.com/RkAScXtG
- #if defined STREAMER_OBJECT_TYPE_DYNAMIC
- new ColoredCheckpointI[MAX_POINTS+1];
- #endif
- new ColoredCheckpointID[MAX_POINTS+1];
- new ColoredCheckpointIC[MAX_POINTS+1];
- new ColoredCheckpointM[MAX_POINTS+1];
- new ColoredCheckpointC[MAX_POINTS+1];
- new ColoredCheckpoint[MAX_PLAYERS];
- new bool:ColoredCheckpointTimer;
- //==============================================================================
- //==============================================================================
- public OnFilterScriptExit()
- {
- DestroyAllColoredCheckpoint();// Удалим все чекпойнты
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- #pragma unused reason
- ColoredCheckpoint[playerid]=0;// Игрок не стои в точке.
- return 1;
- }
- public OnPlayerUpdate(playerid)
- {
- ColoredCheckpointTimer=!ColoredCheckpointTimer;// Смена состояния
- if(ColoredCheckpointTimer)return 1;// Пропистить проверку или нет ВНИМАНИЕ при вставление в мод - это не допустимо, так как обрывает код.
- new newppoint=GetPlayerPoint(playerid);// Ищем самую близлежайшую точку в которой находится игрок
- if(ColoredCheckpoint[playerid] != newppoint)// Если точка отличается от старой.
- {
- if(ColoredCheckpoint[playerid] != 0)OnPlayerLeaveColoredCheckpoint(playerid, ColoredCheckpoint[playerid]);//Если мы были в точке
- if(newppoint != 0) OnPlayerEnterColoredCheckpoint(playerid, newppoint);// Если новая точка точка.
- ColoredCheckpoint[playerid]=newppoint;// Запомним точку
- }
- return 1;
- }
- //==============================================================================
- //==============================================================================
- #define GetPlayerColoredCheckpoint(%0) ColoredCheckpoint[%0]
- #define IsPlayerInAnyColoredCheckpoint(%0) ColoredCheckpoint[%0] ? 1:0
- #define IsPlayerInColoredCheckpoint(%0,%1) ColoredCheckpoint[%0] != %1 ? 1:0
- #define GetColoredCheckpointPos(%0, %1, %2, %3) GetPointPos(%0, %1, %2, %3)
- #define GetColoredCheckpointInterior(%0) GetPointInterior(%0);
- #define GetColoredCheckpointWorld(%0) GetPointVirtualWorld(%0)
- #define SetColoredCheckpointRadius(%0, %1) SetPointRadius(%0, %1)
- #define GetColoredCheckpointRadius(%0, %1) GetPointRadius(%0, %1)
- #define GetColoredCheckpointColor(%0) ColoredCheckpointIC[%0]
- stock CreateColoredCheckpoint(modelid, color, Float:size, Float:x, Float:y, Float:z, Float:rx=0.0, Float:ry=0.0, Float:rz=0.0, w=-1, i=-1, icon=0)
- {
- #if !defined STREAMER_OBJECT_TYPE_DYNAMIC
- #pragma unused icon
- #endif
- new pointid=CreatePoint(x,y,z,size,w,i);
- if(pointid < 1)return 0;
- new c[1];
- ColoredCheckpointIC[pointid]=color;
- c[0]=color;
- color=c{3};
- c{3}=c{2};
- c{2}=c{1};
- c{1}=c{0};
- c{0}=color;
- ColoredCheckpointC[pointid]=c[0];
- ColoredCheckpointM[pointid]=modelid;
- #if defined STREAMER_OBJECT_TYPE_DYNAMIC
- ColoredCheckpointID[pointid]=CreateDynamicObject(modelid, x, y, z-1.0, rx, ry, rz, w, i, -1, 200.0);
- SetDynamicObjectMaterial(ColoredCheckpointID[pointid], 0, modelid, "none", "none", c[0]);
- if(icon!=0)ColoredCheckpointI[pointid]=CreateDynamicMapIcon(x, y, z, 0, ColoredCheckpointIC[pointid], w, i, -1, 200.0);
- else ColoredCheckpointI[pointid]=0;
- #else
- ColoredCheckpointID[pointid]=CreateObject(modelid, x, y, z-1.0, rx, ry, rz,200.0);
- SetObjectMaterial(ColoredCheckpointID[pointid], 0, modelid, "none", "none", c[0]);
- #endif
- return pointid;
- }
- stock DestroyColoredCheckpoint(pointid)
- {
- if(DestroyPoint(pointid) < 1)return 0;// Точка не былоа создана
- #if defined STREAMER_OBJECT_TYPE_DYNAMIC
- if(ColoredCheckpointI[pointid]!=0)DestroyDynamicMapIcon(ColoredCheckpointI[pointid]);
- return DestroyDynamicObject(ColoredCheckpointID[pointid]);// Удалим объект
- #else
- return DestroyObject(ColoredCheckpointID[pointid]);// Удалим объект
- #endif
- }
- DestroyAllColoredCheckpoint()
- {
- for(new j=1; j <= MAX_POINTS; j++)if(ColoredCheckpointID[j])DestroyColoredCheckpoint(j);
- return 1;
- }
- stock SetColoredCheckpointPos(pointid,Float:x,Float:y,Float:z)
- {
- if(SetPointPos(pointid, x, y, z) < 1)return 0;
- #if defined STREAMER_OBJECT_TYPE_DYNAMIC
- if(ColoredCheckpointI[pointid]!=0)
- {
- DestroyDynamicMapIcon(ColoredCheckpointI[pointid]);
- ColoredCheckpointI[pointid]=CreateDynamicMapIcon(x, y, z, 0, ColoredCheckpointIC[pointid], PointW[pointid], PointI[pointid], -1, 200.0);
- }
- return SetDynamicObjectPos(ColoredCheckpointID[pointid], x, y, z-1.0);
- #else
- return SetObjectPos(ColoredCheckpointID[pointid], x, y, z-1.0);
- #endif
- }
- stock SetColoredCheckpointRot(pointid,Float:rx,Float:ry,Float:rz)
- {
- if(ColoredCheckpointID[pointid] < 1)return 0;
- #if defined STREAMER_OBJECT_TYPE_DYNAMIC
- return SetDynamicObjectRot(ColoredCheckpointID[pointid], rx, ry, rz);
- #else
- return SetObjectRot(ColoredCheckpointID[pointid], rx, ry, rz);
- #endif
- }
- stock GetColoredCheckpointRot(pointid,&Float:rx,&Float:ry,&Float:rz)
- {
- if(ColoredCheckpointID[pointid] < 1)return 0;
- #if defined STREAMER_OBJECT_TYPE_DYNAMIC
- return GetDynamicObjectRot(ColoredCheckpointID[pointid], rx, ry, rz);
- #else
- return GetObjectRot(ColoredCheckpointID[pointid], rx, ry, rz);
- #endif
- }
- stock SetColoredCheckpointInterior(pointid, i)
- {
- if(SetPointInterior(pointid, i) < 1)return 0;
- #if defined STREAMER_OBJECT_TYPE_DYNAMIC
- if(ColoredCheckpointI[pointid]!=0)
- {
- DestroyDynamicMapIcon(ColoredCheckpointI[pointid]);
- ColoredCheckpointI[pointid]=CreateDynamicMapIcon(PointX[pointid], PointY[pointid], PointZ[pointid], 0, ColoredCheckpointIC[pointid], PointW[pointid], PointI[pointid], -1, 200.0);
- }
- new Float:rx,Float:ry,Float:rz;
- GetDynamicObjectRot(ColoredCheckpointID[pointid], rx, ry, rz);
- DestroyDynamicObject(ColoredCheckpointID[pointid]);
- ColoredCheckpointID[pointid]=CreateDynamicObject(ColoredCheckpointM[pointid], PointX[pointid], PointY[pointid], PointZ[pointid]-1.0, rx, ry, rz, PointW[pointid], PointI[pointid], -1, 200.0);
- return SetDynamicObjectMaterial(ColoredCheckpointID[pointid], 0, ColoredCheckpointM[pointid], "none", "none", ColoredCheckpointC[pointid]);
- #endif
- return 1;
- }
- stock SetColoredCheckpointWorld(pointid, worldid)
- {
- if(SetPointVirtualWorld(pointid, worldid) < 1)return 0;
- #if defined STREAMER_OBJECT_TYPE_DYNAMIC
- if(ColoredCheckpointI[pointid]!=0)
- {
- DestroyDynamicMapIcon(ColoredCheckpointI[pointid]);
- ColoredCheckpointI[pointid]=CreateDynamicMapIcon(PointX[pointid], PointY[pointid], PointZ[pointid], 0, ColoredCheckpointIC[pointid], PointW[pointid], PointI[pointid], -1, 200.0);
- }
- new Float:rx,Float:ry,Float:rz;
- GetDynamicObjectRot(ColoredCheckpointID[pointid], rx, ry, rz);
- DestroyDynamicObject(ColoredCheckpointID[pointid]);
- ColoredCheckpointID[pointid]=CreateDynamicObject(ColoredCheckpointM[pointid], PointX[pointid], PointY[pointid], PointZ[pointid]-1.0, rx, ry, rz, PointW[pointid], PointI[pointid], -1, 200.0);
- return SetDynamicObjectMaterial(ColoredCheckpointID[pointid], 0, ColoredCheckpointM[pointid], "none", "none", ColoredCheckpointC[pointid]);
- #endif
- return 1;
- }
- stock SetColoredCheckpointColor(pointid, color)
- {
- if(IsValidPoint(pointid) < 1)return 0;
- #if defined STREAMER_OBJECT_TYPE_DYNAMIC
- if(ColoredCheckpointI[pointid]!=0)
- {
- DestroyDynamicMapIcon(ColoredCheckpointI[pointid]);
- ColoredCheckpointI[pointid]=CreateDynamicMapIcon(PointX[pointid], PointY[pointid], PointZ[pointid], 0, color, PointW[pointid], PointI[pointid], -1, 200.0);
- }
- new c[1];
- c[0]=color;
- color=c{3};
- c{3}=c{2};
- c{2}=c{1};
- c{1}=c{0};
- c{0}=color;
- ColoredCheckpointC[pointid]=c[0];
- new Float:rx,Float:ry,Float:rz;
- GetDynamicObjectRot(ColoredCheckpointID[pointid], rx, ry, rz);
- DestroyDynamicObject(ColoredCheckpointID[pointid]);
- ColoredCheckpointID[pointid]=CreateDynamicObject(ColoredCheckpointM[pointid], PointX[pointid], PointY[pointid], PointZ[pointid]-1.0, rx, ry, rz, PointW[pointid], PointI[pointid], -1, 200.0);
- return SetDynamicObjectMaterial(ColoredCheckpointID[pointid], 0, ColoredCheckpointM[pointid], "none", "none", ColoredCheckpointC[pointid]);
- #else
- new c[1];
- c[0]=color;
- color=c{3};
- c{3}=c{2};
- c{2}=c{1};
- c{1}=c{0};
- c{0}=color;
- ColoredCheckpointC[pointid]=c[0];
- new Float:rx,Float:ry,Float:rz;
- GetObjectRot(ColoredCheckpointID[pointid], rx, ry, rz);
- DestroyObject(ColoredCheckpointID[pointid]);
- ColoredCheckpointID[pointid]=CreateObject(ColoredCheckpointM[pointid], PointX[pointid], PointY[pointid], PointZ[pointid]-1.0, rx, ry, rz, 200.0);
- return SetObjectMaterial(ColoredCheckpointID[pointid], 0, ColoredCheckpointM[pointid], "none", "none", ColoredCheckpointC[pointid]);
- #endif
- }
- //==============================================================================
- //==============================================================================
- new Float:cPos[5][6] = {
- {1410.0, 1461.0, 11.82, 0.0, 0.0, 0.0},
- {1412.0, 1461.0, 11.82, 0.0, 0.0, 0.0},
- {1414.0, 1461.0, 11.82, 0.0, 0.0, 0.0},
- {1416.0, 1461.0, 11.82, 0.0, 0.0, 0.0},
- {1418.0, 1461.0, 11.82, 0.0, 0.0, 0.0}
- };
- public OnFilterScriptInit()
- {
- CreateColoredCheckpoint(1317,0xFF0000FF,5.0, cPos[0][0], cPos[0][1], cPos[0][2], cPos[0][3], cPos[0][4], cPos[0][5], -1, -1, 1);//Создадим чек с иконкой
- CreateColoredCheckpoint(1317,0x00FF00FF,5.0, cPos[1][0], cPos[1][1], cPos[1][2], cPos[1][3], cPos[1][4], cPos[1][5]);
- CreateColoredCheckpoint(1317,0x0000FFFF,5.0, cPos[2][0], cPos[2][1], cPos[2][2], cPos[2][3], cPos[2][4], cPos[2][5]);
- CreateColoredCheckpoint(1317,0xFFFF00FF,5.0, cPos[3][0], cPos[3][1], cPos[3][2], cPos[3][3], cPos[3][4], cPos[3][5]);
- CreateColoredCheckpoint(1317,0xFF00FFFF,5.0, cPos[4][0], cPos[4][1], cPos[4][2], cPos[4][3], cPos[4][4], cPos[4][5]);
- return 1;
- }
- forward OnPlayerEnterColoredCheckpoint(playerid, pointid);
- public OnPlayerEnterColoredCheckpoint(playerid, pointid)
- {
- //ниже действия при входе
- new str[64];
- format(str,64,"ты вошёл в точку %d",pointid);
- SendClientMessage(playerid,0xFFFFFFFF,str);
- return 1;
- }
- forward OnPlayerLeaveColoredCheckpoint(playerid, pointid);
- public OnPlayerLeaveColoredCheckpoint(playerid, pointid)
- {
- //ниже действия при выходе
- new str[64];
- format(str,64,"ты вышел из точки %d",pointid);
- SendClientMessage(playerid,0xFFFFFFFF,str);
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if(!strcmp(cmdtext, "/CC", true))// Создать чекпойнт
- {
- new Float:x,Float:y,Float:z;
- GetPlayerPos(playerid,x,y,z);
- if(CreateColoredCheckpoint(1317,0x0000FFFF,10.0, x, y, z, 0.0, 0.0, 0.0, -1, -1, 1) < 1)return SendClientMessage(playerid, -1, "{ff0000}Ты не смог создать в чек!");
- return SendClientMessage(playerid, -1, "{ee0000}Ты создал чек!");
- }
- if(!strcmp(cmdtext, "/DC", true))// Удалить чекпойнт
- {
- if(!GetPlayerColoredCheckpoint(playerid))return SendClientMessage(playerid, -1, "{ff0000}Ты не в чеке!");// Если playerid находится в чеке
- if(DestroyColoredCheckpoint(GetPlayerColoredCheckpoint(playerid))< 1)return SendClientMessage(playerid, -1, "{ff0000}Ты не смог удалить чек!");
- return SendClientMessage(playerid, -1, "{ee0000}Ты в чеке, он удалён!");
- }
- if(!strcmp(cmdtext, "/PC", true))// Переместить чекпойнт
- {
- if(!GetPlayerColoredCheckpoint(playerid))return SendClientMessage(playerid, -1, "{ff0000}Ты не в чеке!");// Если playerid находится в чеке
- new Float:x,Float:y,Float:z;
- GetPlayerPos(playerid,x,y,z);
- if(SetColoredCheckpointPos(GetPlayerColoredCheckpoint(playerid),x, y, z) < 1)return SendClientMessage(playerid, -1, "{ff0000}Ты не переместил чеке!");
- return SendClientMessage(playerid, -1, "{ee0000}Ты переместил чек!");
- }
- if(!strcmp(cmdtext, "/CC1", true))// Переместить чекпойнт
- {
- if(!GetPlayerColoredCheckpoint(playerid))return SendClientMessage(playerid, -1, "{ff0000}Ты не в чеке!");// Если playerid находится в чеке
- if(SetColoredCheckpointColor(GetPlayerColoredCheckpoint(playerid), 0xFFFF00FF) < 1)return SendClientMessage(playerid, -1, "{ff0000}Ты не покрасил чеке!");
- return SendClientMessage(playerid, -1, "{ee0000}Ты покрасил чек!");
- }
- if(!strcmp(cmdtext, "/CC2", true))// Переместить чекпойнт
- {
- if(!GetPlayerColoredCheckpoint(playerid))return SendClientMessage(playerid, -1, "{ff0000}Ты не в чеке!");// Если playerid находится в чеке
- if(SetColoredCheckpointColor(GetPlayerColoredCheckpoint(playerid), 0xFF0000FF) < 1)return SendClientMessage(playerid, -1, "{ff0000}Ты не покрасил чеке!");
- return SendClientMessage(playerid, -1, "{ee0000}Ты покрасил чек!");
- }
- if(!strcmp(cmdtext, "/TP", true))//телепорт к тестовым чекам
- {
- SetPlayerPos(playerid, 1415.0404,1452.5490,10.8203);
- return 1;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement