Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Royal World Object Streamer
- © by Royal World Team
- */
- //=================================== DEFINES ===================================//
- #define MAX_PLAYERS_EX 160
- #if MAX_PLAYERS_EX > MAX_PLAYERS
- #error Max. Pocet hracov na servery je 500!
- #endif
- #define MAX_OBJECT_AREAS 100
- #define MAX_OBJECTS_IN_AREA 300 // O 100 Menej ako max. počet craeteobjects !
- #define INVALID_OBJECT_AREA -1
- #define or ||
- //=================================== END DEFINES =================================//
- //=================================== NEWS ===================================//
- enum a
- {
- Float:ObjectAreaMinX,
- Float:ObjectAreaMinY,
- Float:ObjectAreaMaxX,
- Float:ObjectAreaMaxY,
- bool:ObjectAreaCreated
- };
- new ObjectAreaInfo[MAX_OBJECT_AREAS][a];
- new ObjectAreaCount;
- enum Streamer
- {
- ModelObjektu, //Objectmodel
- Float:x,
- Float:y,
- Float:z,
- Float:ORX,
- Float:ORY,
- Float:ORZ,
- ObjectIstota
- }
- new Object[MAX_OBJECTS_IN_AREA][MAX_OBJECT_AREAS][Streamer];
- new ObjectCount[MAX_OBJECTS_IN_AREA];
- new Created[MAX_PLAYERS][MAX_OBJECTS_IN_AREA];
- new ObjectStreamed[MAX_PLAYERS][MAX_OBJECTS_IN_AREA];
- new PlayerObjectArea[MAX_PLAYERS] = {INVALID_OBJECT_AREA,...};
- //=================================== END NEWS =================================//
- //=================================== FORWARDS ===================================//
- forward OnPlayerConnectedObject(playerid);
- forward OnPlayerEnterToObjectArea(playerid,area);
- forward OnPlayerExitToObjectArea(playerid,area);
- forward OnObjectGameModeInit();
- forward Stream();
- //=================================== END FORWARDS =================================//
- //=================================== STOCKS ===================================//
- stock CreateObjectArea(id,Float:MinX, Float:MinY, Float:MaxX, Float:MaxY)
- {
- cyk:
- if(ObjectAreaInfo[id][ObjectAreaCreated] == true){
- id++;
- goto cyk;
- }
- ObjectAreaInfo[id][ObjectAreaMinX] = MinX;
- ObjectAreaInfo[id][ObjectAreaMaxX] = MaxX;
- ObjectAreaInfo[id][ObjectAreaMinY] = MinY;
- ObjectAreaInfo[id][ObjectAreaMaxY] = MaxY;
- ObjectAreaInfo[id][ObjectAreaCreated] = true;
- ObjectAreaCount++;
- return id;
- }
- stock IsPlayerInObjectArea(playerid, areaid)
- {
- if(ObjectAreaInfo[areaid][ObjectAreaCreated] == false) return 0;
- new Float:FX, Float:FY, Float:FZ;
- GetPlayerPos(playerid, FX, FY, FZ);
- if(FX >= ObjectAreaInfo[areaid][ObjectAreaMinX] && FX <= ObjectAreaInfo[areaid][ObjectAreaMaxX] && FY >= ObjectAreaInfo[areaid][ObjectAreaMinY] && FY <= ObjectAreaInfo[areaid][ObjectAreaMaxY]) {
- return 1;
- }
- return 0;
- }
- stock CreateStreamedObject(area,Ob,Float:xx,Float:yy,Float:zz,Float:rx,Float:ry,Float:rz)
- {
- if(ObjectCount[area] > MAX_OBJECTS_IN_AREA){
- printf("|**********************|");
- printf("| ERROR ! Prekroceny |");
- printf("| Max. pocet objektov |");
- printf("|**********************|");
- SendRconCommand("exit");
- }
- if(ObjectAreaInfo[area][ObjectAreaCreated] == false) return 0;
- Object[ObjectCount[area]][area][ModelObjektu] = Ob;
- Object[ObjectCount[area]][area][x] = xx;
- Object[ObjectCount[area]][area][y] = yy;
- Object[ObjectCount[area]][area][z] = zz;
- Object[ObjectCount[area]][area][ORX] = rx;
- Object[ObjectCount[area]][area][ORY] = ry;
- Object[ObjectCount[area]][area][ORZ] = rz;
- Object[ObjectCount[area]][area][ObjectIstota] = 1;
- printf("Object %d v zóne %d Vytvoreny !",ObjectCount,area);
- ObjectCount[area]++;
- return 1;
- }
- //=================================== END STOCKS =================================//
- //=================================== PUBLICS ===================================//
- public OnObjectGameModeInit(){
- SetTimer("Stream",1323, true);
- }
- public OnPlayerConnectedObject(playerid){
- PlayerObjectArea[playerid] = INVALID_OBJECT_AREA;
- }
- public Stream()
- {
- for(new i;i<MAX_PLAYERS;i++){
- if(IsPlayerConnected(i)){
- if(PlayerObjectArea[i] == INVALID_OBJECT_AREA){
- for(new q;q < ObjectAreaCount+1;q++){
- if(IsPlayerInObjectArea(i,q)){
- PlayerObjectArea[i] = q;
- OnPlayerEnterToObjectArea(i, q);
- }}
- }else{
- if(!IsPlayerInObjectArea(i,PlayerObjectArea[i])){
- OnPlayerExitToObjectArea(i,PlayerObjectArea[i]);
- PlayerObjectArea[i] = INVALID_OBJECT_AREA;
- }}}
- }
- return 1;
- }
- public OnPlayerEnterToObjectArea(playerid,area){
- for(new Ob; Ob<ObjectCount[area];Ob++){
- if(Object[Ob][area][ObjectIstota] == 1){
- Created[playerid][Ob] = CreatePlayerObject(playerid, Object[Ob][area][ModelObjektu], Object[Ob][area][x], Object[Ob][area][y], Object[Ob][area][z], Object[Ob][area][ORX], Object[Ob][area][ORY], Object[Ob][area][ORZ]);
- ObjectStreamed[playerid][Ob] = 1;
- }}
- }
- public OnPlayerExitToObjectArea(playerid,area){
- for(new Ob; Ob<ObjectCount[area];Ob++){
- if(Object[Ob][area][ObjectIstota] == 1){
- ObjectStreamed[playerid][Ob] = 0;
- DestroyPlayerObject(playerid, Created[playerid][Ob]);
- }}
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement