moc klasy - wybuch po smierci buguje sie c...
tytusek
23.03.2016
Witam, mam pewną klasę co wybucha po smierci, dodalem robienie logów przy wybuchu i co mnie zdziwiło czasami jest kilka krotnie wywołana ta funkcja co nie dość że zwiększa obciążenie serva to zadaje x tyle dmg
Jakieś propozycje ?
public Death(){new id = read_data(2);if(ma_klase[id])Eksploduj(id);}public Eksploduj(id){new Float:fOrigin[3], iOrigin[3];entity_get_vector( id, EV_VEC_origin, fOrigin);iOrigin[0] = floatround(fOrigin[0]);iOrigin[1] = floatround(fOrigin[1]);iOrigin[2] = floatround(fOrigin[2]);message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);write_byte(TE_EXPLOSION);write_coord(iOrigin[0]);write_coord(iOrigin[1]);write_coord(iOrigin[2]);write_short(sprite_blast);write_byte(32);write_byte(20);write_byte(0);message_end();message_begin( MSG_BROADCAST, SVC_TEMPENTITY, iOrigin );write_byte( TE_BEAMCYLINDER );write_coord( iOrigin[0] );write_coord( iOrigin[1] );write_coord( iOrigin[2] );write_coord( iOrigin[0] );write_coord( iOrigin[1] + 300 );write_coord( iOrigin[2] + 300 );write_short( sprite_white );write_byte( 0 ); // startframewrite_byte( 0 ); // frameratewrite_byte( 10 ); // lifewrite_byte( 10 ); // widthwrite_byte( 255 ); // noisewrite_byte( 255 ); // r, g, bwrite_byte( 100 );// r, g, bwrite_byte( 100 ); // r, g, bwrite_byte( 128 ); // brightnesswrite_byte( 8 ); // speedmessage_end();new entlist[33], name[33];new numfound = find_sphere_class(id, "player", 200.0 , entlist, 32);get_user_name(id, name, 32)for (new i=0; i<=numfound; i++){new pid = entlist[i];if (is_user_alive(pid) && get_user_team(id) != get_user_team(pid))cod_inflict_damage(id, pid, 80.0, 0.7);log_to_file("wybuch.log", "gracz %s wybuchl", name)}return PLUGIN_CONTINUE;}
L 03/18/2016 - 22:23:36: gracz AntyDrabek wybuchl L 03/18/2016 - 22:23:36: gracz AntyDrabek wybuchl L 03/18/2016 - 22:23:36: gracz AntyDrabek wybuchl L 03/18/2016 - 22:26:44: gracz AntyDrabek wybuchl L 03/18/2016 - 22:51:51: gracz Bogdan wybuchl L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 22:56:40: gracz Bogdan wybuch´ L 03/18/2016 - 23:00:18: gracz Bogdan wybuchl L 03/18/2016 - 23:00:18: gracz Bogdan wybuchl L 03/18/2016 - 23:00:35: gracz paswirski_Irlandia Pl wybuchl L 03/18/2016 - 23:00:50: gracz Bogdan wybuchl
wonsz żeczny
23.03.2016
for (new i=0; i<=numfound; i++) {
Wydaję mi się, że to może być powodem lecz również wydaję mi się, że się mylę.
Zadawanie obrażeń i logi pokażą się w zależności od wartości numfound.
Chociaż jeśli efekt wyświetla się również tyle razy to mit obalony
Można też dać tak:
public Death() { new id = read_data(2); if( ma_klase[id] && !eksplodowal[ id ] ) { Eksploduj(id) } }
I oczywiście gdzieś na końcu publica Eskloduj
eksplodowal[ id ] = true
Różnie to w pawnie jest
tytusek
24.03.2016
for (new i=0; i<=numfound; i++) {Wydaję mi się, że to może być powodem lecz również wydaję mi się, że się mylę.
Zadawanie obrażeń i logi pokażą się w zależności od wartości numfound.
Chociaż jeśli efekt wyświetla się również tyle razy to mit obalony
Można też dać tak:
public Death() { new id = read_data(2); if( ma_klase[id] && !eksplodowal[ id ] ) { Eksploduj(id) } }I oczywiście gdzieś na końcu publica Eskloduj
eksplodowal[ id ] = trueRóżnie to w pawnie jest
nie pomogło
Linux'
24.03.2016
Przede wszystkim do death dodaj sprawdzanie czy gracz jest podłączony, od tego bym zaczął. Poza tym nie widzę tu by funkcja rzekomo wykonywana była kilkukrotnie. Jeżeli umieszczasz logi w pętli z obrażeniami to będą one wykonywane tyle razy ile zostaną zadane obrażenia, wszystkim osobą w określonej odległości. Przenieś dodawanie logów przed pętle i wtedy sprawdź, ile razy się pojawiają po wybuchu.