Wysłany: 2016-12-30, 12:34
Mac
Wiek: 28 Na forum: 4136 dni Posty: 133
Nick w MP: Mac
Piwa : 27
Cze??,
pr?buje stworzy? komendy /showid /hideid do ukazywania ID obiekt?w (na obiekcie label). Korzystam ze streamera Incognito i tutaj si? pojawia problem, gdy? ci??ko jest okre?li? rozmiar zmiennej do zapisywania id stworzonego labela gdy? tych obiekt?w mog? by? tysi?ce. Aktualnie mam tak? komend?:
Pawn
new Text3D : object_label [ 5000 ];
CMD : showid ( playerid , params [])
{
if( IsPlayerAdmin ( playerid ) || PlayerData [ playerid ][ admin ])
{
new string [ 12 ], objectid = 0 ;
for(new num ; num < Streamer_GetUpperBound ( STREAMER_TYPE_OBJECT ); num ++)
{
if(! IsValidDynamicObject ( num )) continue;
if(! Streamer_GetIntData ( STREAMER_TYPE_OBJECT , num , E_STREAMER_EXTRA_ID )) continue;
new Float : pos [ 3 ];
Streamer_GetFloatData ( STREAMER_TYPE_OBJECT , num , E_STREAMER_X , pos [ 0 ]);
Streamer_GetFloatData ( STREAMER_TYPE_OBJECT , num , E_STREAMER_Y , pos [ 1 ]);
Streamer_GetFloatData ( STREAMER_TYPE_OBJECT , num , E_STREAMER_Z , pos [ 2 ]);
format ( string , sizeof (string), "ID: %d" , num );
object_label [ objectid ] = CreateDynamic3DTextLabel ( string , - 1 , pos [ 0 ], pos [ 1 ], pos [ 2 ], 5.0 );
objectid ++;
//Streamer_SetIntData(STREAMER_TYPE_OBJECT, num, E_STREAMER_COLOR, object_label); Pr?bowa?em nawet zapisywa? id labelu do E_STREAMER_COLOR, lecz wyskakuje b??d tag mismatch
//objectid++;
}
}
return 1 ;
}
Wszystko by by?o dobrze, gdyby nie fakt, ?e kiedy? tych obiekt?w mo?e by? wi?cej ni? 5000. Ma kto? pomys? jak to rozwi?za??
Wysłany: 2016-12-30, 12:56
Combacior
Wiek: 29 Na forum: 5796 dni Posty: 1516
Piwa : 2161
W polu E_STREAMER_EXTRA_ID mo?esz zapisa? ca?? tablic? danych, czyli wi?cej ni? jedn? rzecz.
Kod: Streamer_AppendArrayData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_EXTRA_ID, costam);
labelid = CreateDynamic3DTextLabel(...);
Streamer_AppendArrayData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_EXTRA_ID, labelid);
//dalej
new jakasTablica[2]; //tutaj zmien sobie rozmiar, zalezy ile informacji ma byc przechowywane
if(!Streamer_GetArrayData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_EXTRA_ID, jakasTablica)) continue;
new labelid = jakasTablica[1];
...
Pseudo-kod, popraw sobie.
Wysłany: 2016-12-30, 13:05
Mac
Wiek: 28 Na forum: 4136 dni Posty: 133
Nick w MP: Mac
Piwa : 27
Niestety, nie da si? zapisa? do tego id labelu, m?j kod:
Pawn
CMD : showid ( playerid , params [])
{
if( IsPlayerAdmin ( playerid ) || PlayerData [ playerid ][ admin ])
{
new string [ 12 ];
for(new num ; num < Streamer_GetUpperBound ( STREAMER_TYPE_OBJECT ); num ++)
{
if(! IsValidDynamicObject ( num )) continue;
if(! Streamer_GetIntData ( STREAMER_TYPE_OBJECT , num , E_STREAMER_EXTRA_ID )) continue;
new Float : pos [ 3 ];
Streamer_GetFloatData ( STREAMER_TYPE_OBJECT , num , E_STREAMER_X , pos [ 0 ]);
Streamer_GetFloatData ( STREAMER_TYPE_OBJECT , num , E_STREAMER_Y , pos [ 1 ]);
Streamer_GetFloatData ( STREAMER_TYPE_OBJECT , num , E_STREAMER_Z , pos [ 2 ]);
format ( string , sizeof (string), "ID: %d" , num );
new Text3D : labelid = CreateDynamic3DTextLabel ( string , - 1 , pos [ 0 ], pos [ 1 ], pos [ 2 ], 5.0 );
Streamer_AppendArrayData ( STREAMER_TYPE_OBJECT , num , E_STREAMER_EXTRA_ID , labelid );
//Streamer_SetIntData(STREAMER_TYPE_OBJECT, num, E_STREAMER_COLOR, object_label);
//object_++;
}
}
return 1 ;
}
I b??d...
Kod:
C:\Users\Konrad\Desktop\Serwer\gamemodes\mapa.pwn(16058) : warning 213: tag mismatch
Wysłany: 2016-12-30, 13:14
Combacior
Wiek: 29 Na forum: 5796 dni Posty: 1516
Piwa : 2161
Kod: new Text3D:labelid = CreateDynamic3DTextLabel(string, -1, pos[0], pos[1], pos[2], 5.0);
Streamer_AppendArrayData(STREAMER_TYPE_OBJECT, num, E_STREAMER_EXTRA_ID, _:labelid);
Aczkolwiek nie wiem, czy dobrze to ID zostanie zwr?cone. Jak nie spos?b wy?ej, to ten
Kod: enum e_Enum
{
liczba,
Text3D:label
}
new abc[e_Enum];
abc[label] = CreateDynamic3DTextLabel(string, -1, pos[0], pos[1], pos[2], 5.0);
Streamer_SetArrayData(STREAMER_TYPE_OBJECT, num, E_STREAMER_EXTRA_ID, abc);
Wysłany: 2016-12-30, 13:51
Mac
Wiek: 28 Na forum: 4136 dni Posty: 133
Nick w MP: Mac
Piwa : 27
Dzi?ki, na razie pierwszy spos?b dzia?a. Lecz jeszcze jeden problem, tym razem z usuni?ciem labela danego obiektu. Przy usuni?ciu obiektu i w??czonych labelach (/showid) chcia?bym aby label obiektu te? znikn??, lecz to cholerne tag mismath..
Kod:
Pawn
new values [ 2 ];
Streamer_GetArrayData ( STREAMER_TYPE_OBJECT , objectid , E_STREAMER_EXTRA_ID , values );
DestroyDynamic3DTextLabel ( values [ 1 ]); // tutaj b??d pr?bowa?em nawet wpisywa?, _:values[1] ale to nic nie da?o...
DestroyDynamicObject ( objectid );
Wysłany: 2016-12-30, 14:07
WWilk1
Wiek: 30 Na forum: 4700 dni Posty: 116
Nick w MP: eep.Wilk
Piwa : 147
warning 213: tag mismatch dlatego Ci wyskakuje, bo definiujesz zmienn? bez Text3D: dodaj do tworzonej zmiennej. Przyk?ad new Text3D:values[2];
Wysłany: 2016-12-30, 14:12
Combacior
Wiek: 29 Na forum: 5796 dni Posty: 1516
Piwa : 2161
Podczas zapisu usuwasz ten tag poprzez u?ycie _: wi?c teraz trzeba ten tag doda?
Kod: DestroyDynamic3DTextLabel(Text3D:values[1]);
Takie troch? kombinowanie, dlatego moim zdaniem, lepiej by?oby skorzysta? z tego sposobu z enum'em.
Wysłany: 2016-12-30, 14:18
Mac
Wiek: 28 Na forum: 4136 dni Posty: 133
Nick w MP: Mac
Piwa : 27
Kombinowane, ale jak to m?wi? - najwa?niejsze, ?e dzia?a. :E Dzi?ki jeszcze raz! Temat mo?na zamkn??, dalej my?l?, ?e sobie poradz?.
My?la?em, ?e w E_STREAMER_EXTRA_ID, mo?na zapisa? tylko jedn? warto??.
Tagi: komenda :: ukazująca :: obiektów
Anonymous
Na forum: 245 dni
Posty: 1
Anonymous Koniecznie zajrzyj na: