←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Jak to zoptymalizowac?

  • +
  • -
VirusX - zdjęcie VirusX 08.03.2012

public fart_fume(param[1])
{
new FartEnt = param[0]
new Float:forigin[3], origin[3]
entity_get_vector(FartEnt, EV_VEC_origin, forigin)
FVecIVec(forigin, origin)
new players[32], inum
get_players(players,inum)
for(new i = 0 ;i < inum; ++i)
{
message_begin(MSG_ONE,SVC_TEMPENTITY,{0,0,0},players[i])
write_byte(17)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2])
write_short(fart_spr)
write_byte(30)
write_byte(75)
message_end()
}
return PLUGIN_CONTINUE
}

Mam taki o sobie fragment kodu, jak mniemam tworzy on obloczek dymu.
Jak moglbym to zoptymalizowac aby bylo mniej zasobozerne?
Z informacji jakie uzyskalem od jednego z tutejszych administratorow mozna to napisac z wykorzystaniem MSG_BROADCAST zamiast num*MSG_ONE, jakkolwiek niestety nie bawilem sie nigdy messegami i nie chce czegos popsuc stad prosba o pomoc.

Z gory dziekuje i pozdrawiam,
Adam.
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 08.03.2012

jeśli chodzi ci o samo wyświetlanie sprite to wiele nie zdziałasz
jeśli chcesz wysyłać ten message do wszystkich do usuń pętle i pobieranie graczy i daj MSG_BROADCAST
Odpowiedz

  • +
  • -
VirusX - zdjęcie VirusX 08.03.2012

public fart_fume(param[1])
{
new FartEnt = param[0]
new Float:forigin[3], origin[3]
entity_get_vector(FartEnt, EV_VEC_origin, forigin)
FVecIVec(forigin, origin)
  message_begin(MSG_BROADCAST,SVC_TEMPENTITY,{0,0,0})
  write_byte(17)
  write_coord(origin[0])
  write_coord(origin[1])
  write_coord(origin[2])
  write_short(fart_spr)
  write_byte(30)
  write_byte(75)
  message_end()

return PLUGIN_CONTINUE
}

Łi ?
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 09.03.2012

zamiast przekształcać float -> int możesz przekazać origin jako float za pomocą
engfunc( EngFunc_WriteCoord , fOrigin[ 0 ] );

public fart_fume(param[1])
{
new FartEnt = param[0]
new Float:forigin[ 3 ];
entity_get_vector(FartEnt, EV_VEC_origin, forigin)
  message_begin(MSG_BROADCAST,SVC_TEMPENTITY,{0,0,0})
  write_byte(17)
  engfunc( EngFunc_WriteCoord , forigin[0])
  engfunc( EngFunc_WriteCoord , forigin[1])
  engfunc( EngFunc_WriteCoord , forigin[2])
  write_short(fart_spr)
  write_byte(30)
  write_byte(75)
  message_end()
}
Odpowiedz