14.10.2008, 10:20
Dominator's Object Streamer
about:
based on xobjects, modified to fix the invisible object bug while in vehicle.
info:
supports 135 objects for a player in a 500 radius.
besides that, to max object limitation (objects can reach even a milion!).
how does it work:
the streamer scans your objects and gets the 15 most common types of modelids on your server.
Known Bugs:
The bug fix only affects the 15 model id mentioned adove, to save free object slots.
good news: for most servers, 15 types of model id is almost all objects.
GameMode Version (FS Version at bottom):
Put this on OnPlayerSpawn(playerid)
Put this on OnGamemodeInit()
Put this under all #include
Put this anywhere you want except in a function
[FS] Version:
http://s-zone.110mb.com/dominator-streamer.zip
PasteBin: http://pastebin.com/f1c47dc69
*note: if using fs you must add objects to FS
Please Post and report bugs
about:
based on xobjects, modified to fix the invisible object bug while in vehicle.
info:
supports 135 objects for a player in a 500 radius.
besides that, to max object limitation (objects can reach even a milion!).
how does it work:
the streamer scans your objects and gets the 15 most common types of modelids on your server.
Known Bugs:
The bug fix only affects the 15 model id mentioned adove, to save free object slots.
good news: for most servers, 15 types of model id is almost all objects.
GameMode Version (FS Version at bottom):
Put this on OnPlayerSpawn(playerid)
Code:
SetTimerEx("PlayerObjectUpdate", 100, 1, "d", playerid); SetPlayerPos(playerid,0.0, 0.0, 120002.0); SetTimerEx("loadspawnpos", 1000, false, "d", playerid); return 1; // only one in the end of the callback
Code:
GetCount(); GetTopModels(); GetObjectsInfo(); CreateTopObject();
Code:
new TopModels[15] = 0; new TopModelsID[15] = 0; #define MAX_MODEL_ID 20000 new countmodel[MAX_MODEL_ID]; enum object_info { modelidd, Float:ox, Float:oy, Float:oz, Float:orx, Float:ory, Float:orz, Float:viewdist } new Objects[][object_info] = { //--------------------objects put here--------------------------------------------------------- //{modelid, Float:x, Float:y, Float:z,Float:rotx, Float:roty, Float:rotz, Float:viewdist}, {6189, 123.456, 123.456,123.456, 0.0, 0.0, 0.0, 500.0}, //examples {11111, 123.456, 123.456, 123.456, 0.0, 0.0, 0.0, 500.0} //examples }; enum player_info { objid[sizeof(Objects)], bool:view[sizeof(Objects)] } new PlayerO[MAX_PLAYERS][player_info];
Code:
GetObjectsInfo() { new modelss; new ggf[256]; for(new i = 0;i< MAX_MODEL_ID; i++) { if(countmodel[i] != 0) { modelss++; } } format(ggf,sizeof(ggf),"%d Objects and %d Models Loaded By Dominator Object Streamer",sizeof(Objects),modelss); // please dont remove credits printf(ggf); } GetTopModels() { new FinalPosition; for(new i = 0;i< sizeof(Objects); i++) { if(Objects[i][modelidd] == TopModelsID[0] || Objects[i][modelidd] == TopModelsID[1] || Objects[i][modelidd] == TopModelsID[2] || Objects[i][modelidd] == TopModelsID[3] || Objects[i][modelidd] == TopModelsID[4] || Objects[i][modelidd] == TopModelsID[5] || Objects[i][modelidd] == TopModelsID[6] || Objects[i][modelidd] == TopModelsID[7] || Objects[i][modelidd] == TopModelsID[8] || Objects[i][modelidd] == TopModelsID[9]) { FinalPosition = -1; } else if(countmodel[Objects[i][modelidd]] > TopModels[0]) FinalPosition = 1; else if(countmodel[Objects[i][modelidd]] > TopModels[1] && countmodel[Objects[i][modelidd]] <= TopModels[0]) FinalPosition = 2; else if(countmodel[Objects[i][modelidd]] > TopModels[2] && countmodel[Objects[i][modelidd]] <= TopModels[1]) FinalPosition = 3; else if(countmodel[Objects[i][modelidd]] > TopModels[3] && countmodel[Objects[i][modelidd]] <= TopModels[2]) FinalPosition = 4; else if(countmodel[Objects[i][modelidd]] > TopModels[4] && countmodel[Objects[i][modelidd]] <= TopModels[3]) FinalPosition = 5; else if(countmodel[Objects[i][modelidd]] > TopModels[5] && countmodel[Objects[i][modelidd]] <= TopModels[4]) FinalPosition = 6; else if(countmodel[Objects[i][modelidd]] > TopModels[6] && countmodel[Objects[i][modelidd]] <= TopModels[5]) FinalPosition = 7; else if(countmodel[Objects[i][modelidd]] > TopModels[7] && countmodel[Objects[i][modelidd]] <= TopModels[6]) FinalPosition = 8; else if(countmodel[Objects[i][modelidd]] > TopModels[8] && countmodel[Objects[i][modelidd]] <= TopModels[7]) FinalPosition = 9; else if(countmodel[Objects[i][modelidd]] > TopModels[9] && countmodel[Objects[i][modelidd]] <= TopModels[8]) FinalPosition = 10; else if(countmodel[Objects[i][modelidd]] > TopModels[10] && countmodel[Objects[i][modelidd]] <= TopModels[9]) FinalPosition = 11; else if(countmodel[Objects[i][modelidd]] > TopModels[11] && countmodel[Objects[i][modelidd]] <= TopModels[10]) FinalPosition = 12; else if(countmodel[Objects[i][modelidd]] > TopModels[12] && countmodel[Objects[i][modelidd]] <= TopModels[11]) FinalPosition = 13; else if(countmodel[Objects[i][modelidd]] > TopModels[13] && countmodel[Objects[i][modelidd]] <= TopModels[12]) FinalPosition = 14; else if(countmodel[Objects[i][modelidd]] > TopModels[14] && countmodel[Objects[i][modelidd]] <= TopModels[13]) FinalPosition = 15; else if(countmodel[Objects[i][modelidd]] <= TopModels[14]) FinalPosition = -1; if(FinalPosition == 1) { TopModels[14] = TopModels[13]; TopModels[13] = TopModels[12]; TopModels[12] = TopModels[11]; TopModels[11] = TopModels[10]; TopModels[10] = TopModels[9]; TopModels[9] = TopModels[8]; TopModels[8] = TopModels[7]; TopModels[7] = TopModels[6]; TopModels[6] = TopModels[5]; TopModels[5] = TopModels[4]; TopModels[4] = TopModels[3]; TopModels[3] = TopModels[2]; TopModels[2] = TopModels[1]; TopModels[1] = TopModels[0]; TopModelsID[14] = TopModelsID[13]; TopModelsID[13] = TopModelsID[12]; TopModelsID[12] = TopModelsID[11]; TopModelsID[11] = TopModelsID[10]; TopModelsID[10] = TopModelsID[9]; TopModelsID[9] = TopModelsID[8]; TopModelsID[8] = TopModelsID[7]; TopModelsID[7] = TopModelsID[6]; TopModelsID[6] = TopModelsID[5]; TopModelsID[5] = TopModelsID[4]; TopModelsID[4] = TopModelsID[3]; TopModelsID[3] = TopModelsID[2]; TopModelsID[2] = TopModelsID[1]; TopModelsID[1] = TopModelsID[0]; TopModels[0] = countmodel[Objects[i][modelidd]]; TopModelsID[0] = Objects[i][modelidd]; } else if(FinalPosition == 2) { TopModels[14] = TopModels[13]; TopModels[13] = TopModels[12]; TopModels[12] = TopModels[11]; TopModels[11] = TopModels[10]; TopModels[10] = TopModels[9]; TopModels[9] = TopModels[8]; TopModels[8] = TopModels[7]; TopModels[7] = TopModels[6]; TopModels[6] = TopModels[5]; TopModels[5] = TopModels[4]; TopModels[4] = TopModels[3]; TopModels[3] = TopModels[2]; TopModels[2] = TopModels[1]; TopModelsID[14] = TopModelsID[13]; TopModelsID[13] = TopModelsID[12]; TopModelsID[12] = TopModelsID[11]; TopModelsID[11] = TopModelsID[10]; TopModelsID[10] = TopModelsID[9]; TopModelsID[9] = TopModelsID[8]; TopModelsID[8] = TopModelsID[7]; TopModelsID[7] = TopModelsID[6]; TopModelsID[6] = TopModelsID[5]; TopModelsID[5] = TopModelsID[4]; TopModelsID[4] = TopModelsID[3]; TopModelsID[3] = TopModelsID[2]; TopModelsID[2] = TopModelsID[1]; TopModels[1] = countmodel[Objects[i][modelidd]]; TopModelsID[1] = Objects[i][modelidd]; } else if(FinalPosition == 3) { TopModels[14] = TopModels[13]; TopModels[13] = TopModels[12]; TopModels[12] = TopModels[11]; TopModels[11] = TopModels[10]; TopModels[10] = TopModels[9]; TopModels[9] = TopModels[8]; TopModels[8] = TopModels[7]; TopModels[7] = TopModels[6]; TopModels[6] = TopModels[5]; TopModels[5] = TopModels[4]; TopModels[4] = TopModels[3]; TopModels[3] = TopModels[2]; TopModelsID[14] = TopModelsID[13]; TopModelsID[13] = TopModelsID[12]; TopModelsID[12] = TopModelsID[11]; TopModelsID[11] = TopModelsID[10]; TopModelsID[10] = TopModelsID[9]; TopModelsID[9] = TopModelsID[8]; TopModelsID[8] = TopModelsID[7]; TopModelsID[7] = TopModelsID[6]; TopModelsID[6] = TopModelsID[5]; TopModelsID[5] = TopModelsID[4]; TopModelsID[4] = TopModelsID[3]; TopModelsID[3] = TopModelsID[2]; TopModels[2] = countmodel[Objects[i][modelidd]]; TopModelsID[2] = Objects[i][modelidd]; } else if(FinalPosition == 4) { TopModels[14] = TopModels[13]; TopModels[13] = TopModels[12]; TopModels[12] = TopModels[11]; TopModels[11] = TopModels[10]; TopModels[10] = TopModels[9]; TopModels[9] = TopModels[8]; TopModels[8] = TopModels[7]; TopModels[7] = TopModels[6]; TopModels[6] = TopModels[5]; TopModels[5] = TopModels[4]; TopModels[4] = TopModels[3]; TopModelsID[14] = TopModelsID[13]; TopModelsID[13] = TopModelsID[12]; TopModelsID[12] = TopModelsID[11]; TopModelsID[11] = TopModelsID[10]; TopModelsID[10] = TopModelsID[9]; TopModelsID[9] = TopModelsID[8]; TopModelsID[8] = TopModelsID[7]; TopModelsID[7] = TopModelsID[6]; TopModelsID[6] = TopModelsID[5]; TopModelsID[5] = TopModelsID[4]; TopModelsID[4] = TopModelsID[3]; TopModels[3] = countmodel[Objects[i][modelidd]]; TopModelsID[3] = Objects[i][modelidd]; } else if(FinalPosition == 5) { TopModels[14] = TopModels[13]; TopModels[13] = TopModels[12]; TopModels[12] = TopModels[11]; TopModels[11] = TopModels[10]; TopModels[10] = TopModels[9]; TopModels[9] = TopModels[8]; TopModels[8] = TopModels[7]; TopModels[7] = TopModels[6]; TopModels[6] = TopModels[5]; TopModels[5] = TopModels[4]; TopModelsID[14] = TopModelsID[13]; TopModelsID[13] = TopModelsID[12]; TopModelsID[12] = TopModelsID[11]; TopModelsID[11] = TopModelsID[10]; TopModelsID[10] = TopModelsID[9]; TopModelsID[9] = TopModelsID[8]; TopModelsID[8] = TopModelsID[7]; TopModelsID[7] = TopModelsID[6]; TopModelsID[6] = TopModelsID[5]; TopModelsID[5] = TopModelsID[4]; TopModels[4] = countmodel[Objects[i][modelidd]]; TopModelsID[4] = Objects[i][modelidd]; } else if(FinalPosition == 6) { TopModels[14] = TopModels[13]; TopModels[13] = TopModels[12]; TopModels[12] = TopModels[11]; TopModels[11] = TopModels[10]; TopModels[10] = TopModels[9]; TopModels[9] = TopModels[8]; TopModels[8] = TopModels[7]; TopModels[7] = TopModels[6]; TopModels[6] = TopModels[5]; TopModelsID[14] = TopModelsID[13]; TopModelsID[13] = TopModelsID[12]; TopModelsID[12] = TopModelsID[11]; TopModelsID[11] = TopModelsID[10]; TopModelsID[10] = TopModelsID[9]; TopModelsID[9] = TopModelsID[8]; TopModelsID[8] = TopModelsID[7]; TopModelsID[7] = TopModelsID[6]; TopModelsID[6] = TopModelsID[5]; TopModels[5] = countmodel[Objects[i][modelidd]]; TopModelsID[5] = Objects[i][modelidd]; } else if(FinalPosition == 7) { TopModels[14] = TopModels[13]; TopModels[13] = TopModels[12]; TopModels[12] = TopModels[11]; TopModels[11] = TopModels[10]; TopModels[10] = TopModels[9]; TopModels[9] = TopModels[8]; TopModels[8] = TopModels[7]; TopModels[7] = TopModels[6]; TopModelsID[14] = TopModelsID[13]; TopModelsID[13] = TopModelsID[12]; TopModelsID[12] = TopModelsID[11]; TopModelsID[11] = TopModelsID[10]; TopModelsID[10] = TopModelsID[9]; TopModelsID[9] = TopModelsID[8]; TopModelsID[8] = TopModelsID[7]; TopModelsID[7] = TopModelsID[6]; TopModels[6] = countmodel[Objects[i][modelidd]]; TopModelsID[6] = Objects[i][modelidd]; } else if(FinalPosition == 8) { TopModels[14] = TopModels[13]; TopModels[13] = TopModels[12]; TopModels[12] = TopModels[11]; TopModels[11] = TopModels[10]; TopModels[10] = TopModels[9]; TopModels[9] = TopModels[8]; TopModels[8] = TopModels[7]; TopModelsID[14] = TopModelsID[13]; TopModelsID[13] = TopModelsID[12]; TopModelsID[12] = TopModelsID[11]; TopModelsID[11] = TopModelsID[10]; TopModelsID[10] = TopModelsID[9]; TopModelsID[9] = TopModelsID[8]; TopModelsID[8] = TopModelsID[7]; TopModels[7] = countmodel[Objects[i][modelidd]]; TopModelsID[7] = Objects[i][modelidd]; } else if(FinalPosition == 9) { TopModels[14] = TopModels[13]; TopModels[13] = TopModels[12]; TopModels[12] = TopModels[11]; TopModels[11] = TopModels[10]; TopModels[10] = TopModels[9]; TopModels[9] = TopModels[8]; TopModelsID[14] = TopModelsID[13]; TopModelsID[13] = TopModelsID[12]; TopModelsID[12] = TopModelsID[11]; TopModelsID[11] = TopModelsID[10]; TopModelsID[10] = TopModelsID[9]; TopModelsID[9] = TopModelsID[8]; TopModels[8] = countmodel[Objects[i][modelidd]]; TopModelsID[8] = Objects[i][modelidd]; } else if(FinalPosition == 10) { TopModels[14] = TopModels[13]; TopModels[13] = TopModels[12]; TopModels[12] = TopModels[11]; TopModels[11] = TopModels[10]; TopModels[10] = TopModels[9]; TopModelsID[14] = TopModelsID[13]; TopModelsID[13] = TopModelsID[12]; TopModelsID[12] = TopModelsID[11]; TopModelsID[11] = TopModelsID[10]; TopModelsID[10] = TopModelsID[9]; TopModels[9] = countmodel[Objects[i][modelidd]]; TopModelsID[9] = Objects[i][modelidd]; } else if(FinalPosition == 11) { TopModels[14] = TopModels[13]; TopModels[13] = TopModels[12]; TopModels[12] = TopModels[11]; TopModels[11] = TopModels[10]; TopModelsID[14] = TopModelsID[13]; TopModelsID[13] = TopModelsID[12]; TopModelsID[12] = TopModelsID[11]; TopModelsID[11] = TopModelsID[10]; TopModels[10] = countmodel[Objects[i][modelidd]]; TopModelsID[10] = Objects[i][modelidd]; } else if(FinalPosition == 12) { TopModels[14] = TopModels[13]; TopModels[13] = TopModels[12]; TopModels[12] = TopModels[11]; TopModelsID[14] = TopModelsID[13]; TopModelsID[13] = TopModelsID[12]; TopModelsID[12] = TopModelsID[11]; TopModels[11] = countmodel[Objects[i][modelidd]]; TopModelsID[11] = Objects[i][modelidd]; } else if(FinalPosition == 13) { TopModels[14] = TopModels[13]; TopModels[13] = TopModels[12]; TopModelsID[14] = TopModelsID[13]; TopModelsID[13] = TopModelsID[12]; TopModels[12] = countmodel[Objects[i][modelidd]]; TopModelsID[12] = Objects[i][modelidd]; } else if(FinalPosition == 14) { TopModels[14] = TopModels[13]; TopModelsID[14] = TopModelsID[13]; TopModels[13] = countmodel[Objects[i][modelidd]]; TopModelsID[13] = Objects[i][modelidd]; } else if(FinalPosition == 15) { TopModels[14] = countmodel[Objects[i][modelidd]]; TopModelsID[14] = Objects[i][modelidd]; } } } GetCount() { for(new i = 0; i < sizeof(Objects); i++) { countmodel[Objects[i][modelidd]]++; } } bool:IsInReach(Float:x,Float:y,Float:z,Float:x2,Float:y2,Float:z2,Float:dist) { x = (x > x2) ? x - x2 : x2 - x; if(x > dist) return false; y = (y > y2) ? y - y2 : y2 - y; if(y > dist) return false; z = (z > z2) ? z - z2 : z2 - z; if(z > dist) return false; return true; } forward PlayerObjectUpdate(playerid); public PlayerObjectUpdate(playerid) { if(IsPlayerConnected(playerid)) { new Float:pos[3]; GetPlayerPos(playerid,pos[0],pos[1],pos[2]); for(new i = 0; i < sizeof(Objects); i++) { if(!PlayerO[playerid][view][i]) { if(IsInReach(pos[0],pos[1],pos[2],Objects[i][ox],Objects[i][oy],Objects[i][oz],Objects[i][viewdist])) { PlayerO[playerid][view][i] = true; PlayerO[playerid][objid][i] = CreatePlayerObject(playerid,Objects[i][modelidd],Objects[i][ox],Objects[i][oy],Objects[i][oz],Objects[i][orx],Objects[i][ory],Objects[i][orz]); } } else if(!IsInReach(pos[0],pos[1],pos[2],Objects[i][ox],Objects[i][oy],Objects[i][oz],Objects[i][viewdist])) { PlayerO[playerid][view][i] = false; DestroyPlayerObject(playerid,PlayerO[playerid][objid][i]); } } } } CreateTopObject() { for(new i = 0;i<sizeof(TopModels);i++) { if(TopModels[i] != 0) CreateObject(TopModelsID[i],0.0,0.0,120000.0,0.0,0.0,0.0); } }
http://s-zone.110mb.com/dominator-streamer.zip
PasteBin: http://pastebin.com/f1c47dc69
*note: if using fs you must add objects to FS
Please Post and report bugs