Jump to content
  • 0

pomoc streamer


-other-Mizi_CZ

Dotaz

sry že se na to ptám právě tu ale jak je ten Maverickuv streamer objektu tak tam je destroy object a na foru pb.net jen apsaný něco takoýhoto // EDIT dej si podminku u vytvoreni objektu

Kód:

 

if(DynamicObject[OB_MODEL] != 0)

 

a bude to

 

ale já nepochopil kam to mám dát tak jestli to někdo znát tak pls help

Link to comment
Share on other sites

2 odpovědí na tuto otázku

Recommended Posts

  • 0

pošlu to tu celý

#define OBJECT_DRAW_DISTANCE 		300 // Vykreslovací vzdálenost objektů
#define MAX_DYNAMIC_OBJECTS  		400 // Počet dynamických objektů ve hře, doporučuji přizpůsobovat kůli velikosti záznamu v paměti serveru
#define MAX_PDRAWED_OBJECTS  		130 // Maximum naráz vykreslených objektů pro hráče (max 150)

 

enum OBJECT_INFO
{
Float:OB_RX, // Rotace x
Float:OB_RY, // Rotace y
Float:OB_RZ, // Rotace z
Float:OB_X,   // Spawn x
Float:OB_Y,   // Spawn y
Float:OB_Z,   // Spawn z
OB_MODEL,    // Model ID
OB_ID           // ID objektu 
}

 

new bool:CreatedObjectForPlayer[MAX_PLAYERS][MAX_DYNAMIC_OBJECTS]; // Je daný objekt u hráče vytvořen ? (bool = true/false) - méně paměti
new DynamicObject[MAX_DYNAMIC_OBJECTS][OBJECT_INFO]; // Definování každého objektu, spawn,... pojmenování je v enumu
new CreatedPlayerObjects[MAX_PLAYERS]; // Kolik objektů má hráč právě vytvořených, aby nedošlo k pádu hry, limit je hlídaný pomocí horního definu MAX_PDRAWED_OBJECTS
new DynamicObjectsCount = 0; // Kolik je dynamických objektů celkem
new DynamicPlayerObjectID[MAX_PLAYERS][MAX_DYNAMIC_OBJECTS];

 

forward StreamObjects();  // Timer call
forward CreateDynamicObject(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float: rot_x, Float: rot_y, Float: rot_z);

 

public CreateDynamicObject(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float: rot_x, Float: rot_y, Float: rot_z)
{
if(DynamicObjectsCount < MAX_DYNAMIC_OBJECTS) // Aby se neukládalo do neexistující proměnné
{
    DynamicObject[DynamicObjectsCount][OB_MODEL]	= modelid;
    DynamicObject[DynamicObjectsCount][OB_ID] 		= DynamicObjectsCount;
    DynamicObject[DynamicObjectsCount][OB_RX] 	= rot_x;
    DynamicObject[DynamicObjectsCount][OB_RY] 	= rot_y;
    DynamicObject[DynamicObjectsCount][OB_RZ] 	= rot_z;
    DynamicObject[DynamicObjectsCount][OB_X] 		= spawn_x;
    DynamicObject[DynamicObjectsCount][OB_Y] 		= spawn_y;
    DynamicObject[DynamicObjectsCount][OB_Z] 		= spawn_z;
    DynamicObjectsCount++;
}

else print("---|  DYNAMIC OBJECTS CREATING HAS REACHED THE LIMIT  |---");
}

 

public StreamObjects()
{
   for(new i = 0; i < MAX_PLAYERS_EX; i++)
   {
       if(IsPlayerConnected(i))
       {
           for(new o = 0; o < DynamicObjectsCount; o++ )
 {
 new Float:p[4]; GetPlayerPos(i,p[0],p[1],p[2]);
 p[3] = floatsqroot(floatpower(floatabs(floatsub(DynamicObject[o][OB_X],p[0])),2)+floatpower(floatabs(floatsub(DynamicObject[o][OB_Y],p[1])),2)+floatpower(floatabs(floatsub(DynamicObject[o][OB_Z],p[2])),2)); // Zjištění vzdálenosti od hráče
           if(floatround(p[3]) < OBJECT_DRAW_DISTANCE)
 {
     if(CreatedObjectForPlayer[i][o] == false)
     {
         if(CreatedPlayerObjects[i] < MAX_PDRAWED_OBJECTS)
         {
             DynamicPlayerObjectID[i][o] = CreatePlayerObject(i, DynamicObject[o][OB_MODEL], DynamicObject[o][OB_X], DynamicObject[o][OB_Y], DynamicObject[o][OB_Z], DynamicObject[o][OB_RX], DynamicObject[o][OB_RY], DynamicObject[o][OB_RZ]);
	  CreatedObjectForPlayer[i][o] = true;
	  CreatedPlayerObjects[i]++;
          }
      }
           } else {
     if(CreatedObjectForPlayer[i][o] == true)
     {
         DestroyPlayerObject(i, DynamicPlayerObjectID[i][o]);
         CreatedObjectForPlayer[i][o] = false;
         CreatedPlayerObjects[i]--;
      }
 }
       }
       }
   }
} // timer nevrací hodnotu pokud není volán někde jinde a vyžaduje výsledek

 

SetTimer("StreamObjects", 800, true); // čím menší časový interval (800ms) tím větší zátěž na cpu avšak tím rychlejší prokreslování

 

forward DestroyDynamicObject(DynamicObjectID);

 

public DestroyDynamicObject(DynamicObjectID)
{
  if(DynamicObjectID < DynamicObjectsCount)
  { 
     DynamicObject[DynamicObjectsCount][OB_MODEL]	= 0;
     DynamicObject[DynamicObjectsCount][OB_ID] 	= 0;
     DynamicObject[DynamicObjectsCount][OB_RX] 	= 0.0;
     DynamicObject[DynamicObjectsCount][OB_RY] 	= 0.0;
     DynamicObject[DynamicObjectsCount][OB_RZ] 	= 0.0;
     DynamicObject[DynamicObjectsCount][OB_X] 	= 0.0;
     DynamicObject[DynamicObjectsCount][OB_Y] 	= 0.0;
     DynamicObject[DynamicObjectsCount][OB_Z] 	= 0.0;
  }
  return true;
}

a tady maj napsaný že si toto:

if(DynamicObject[i][OB_MODEL] != 0) 

 

tuto pdmínku mám dát u vytvoření objektu,já totiž skoušel YSI amě to něco načetlo až třeba 2 metry takže jsem to neviděl a pak do toho narazil

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...