Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: mmlinaric poslato Novembar 29, 2019, 16:06:45 POSLE PODNE

Naslov: OnPlayerGiveDamageActor ne funkcionira
Poruka od: mmlinaric poslato Novembar 29, 2019, 16:06:45 POSLE PODNE
Problem(error/warning): OnPlayerGiveDamageActor ne radi uopce
Dio skripte:
[pawn]
public OnPlayerGiveDamageActor(playerid, damaged_actorid, Float: amount, weaponid, bodypart)
{
   print("aktor upucan");
   for(new gZone__ID; gZone__ID < sizeof(gZoneInfo); gZone__ID++) {
       if(damaged_actorid == gZoneInfo[ gZone__ID ][ gZoneActor ][ 0 ] && gZoneInfo[ gZone__ID ][ ActorAlive ][ 0 ] ||
         damaged_actorid == gZoneInfo[ gZone__ID ][ gZoneActor ][ 1 ] && gZoneInfo[ gZone__ID ][ ActorAlive ][ 1 ] ||
         damaged_actorid == gZoneInfo[ gZone__ID ][ gZoneActor ][ 2 ] && gZoneInfo[ gZone__ID ][ ActorAlive ][ 2 ])
      {
          if( PlayerInfo[ playerid ][ xZauzimanjeVreme ] != 0 || !gZoneInfo[ gZone__ID ][ gZoneTakeable ]
         ||  PlayerInfo[ playerid ][ xClan ] == gZoneInfo[ gZone__ID ][ gZoneGangID ]
         ||  gZoneInfo[ gZone__ID ][ gZoneTime ] != 0
         ||  (GetFactionType( playerid ) == ORG_TIP_BANDA && GetFactionType( playerid ) == ORG_TIP_MAFIJA)) return 1;
         //Animacije dodaj u if-ove.
         if(damaged_actorid == gZoneInfo[ gZone__ID ][ gZoneActor ][ 0 ]) {
            gZoneInfo[ gZone__ID ][ ActorAlive ][ 0 ] = false;
              SCM( playerid, NARACRVENA, "Srusio si jednog od cuvara teritorija, srusi ih sve da zapocnes zauzimanje." );
                ApplyActorAnimation(gZoneActor, "SMOKING", "M_smklean_loop", 4.1, 1, 0, 0, 0, 0);
         }
         else if(damaged_actorid == gZoneInfo[ gZone__ID ][ gZoneActor ][ 1 ]) {
            gZoneInfo[ gZone__ID ][ ActorAlive ][ 1 ] = false;
            SCM( playerid, NARACRVENA, "Srusio si jednog od cuvara teritorija, srusi ih sve da zapocnes zauzimanje." );
                ApplyActorAnimation(gZoneActor, "SMOKING", "M_smklean_loop", 4.1, 1, 0, 0, 0, 0);
         }
         else if(damaged_actorid == gZoneInfo[ gZone__ID ][ gZoneActor ][ 2 ]) {
            gZoneInfo[ gZone__ID ][ ActorAlive ][ 2 ] = false;
            SCM( playerid, NARACRVENA, "Srusio si jednog od cuvara teritorija, srusi ih sve da zapocnes zauzimanje." );
                ApplyActorAnimation(gZoneActor, "SMOKING", "M_smklean_loop", 4.1, 1, 0, 0, 0, 0);
         }
         if(!gZoneInfo[ gZone__ID ][ ActorAlive ][ 0 ]
         && !gZoneInfo[ gZone__ID ][ ActorAlive ][ 1 ]
         && !gZoneInfo[ gZone__ID ][ ActorAlive ][ 2 ])
         {
            new Orga = 0, Protiv = 0, hour, minute, seconds;
            gettimeEx( hour, minute, seconds );
            FixHour( hour );
            hour = shifthour;
            foreach( Player, i ) {

                if( gZoneInfo[ gZone__ID ][ gZoneGangID ] != -1 ) {
                  if( PlayerInfo[ i ][ xClan ] == gZoneInfo[ gZone__ID ][ gZoneGangID ] ) Protiv++;
               }
                 if( PlayerInfo[ i ][ xClan ] == PlayerInfo[ playerid ][ xClan ] ) Orga++;
            }
             if( weaponid >= 22 && weaponid <= 40) {
                 if( ( hour >= 09 ) && ( hour <= 23 ) ) {
                   if( gZoneInfo[ gZone__ID ][ gZoneGangID ] != -1 ) {

                         OrgPoruka( gZoneInfo[ gZone__ID ][ gZoneGangID ], 0x95b4a2FF, "[TERITORIJA] Druga banda pokusava da zauzme vasu teritoriju." );
                  }
                  new stringic[ 24 ];
                     format( stringic, sizeof( stringic ), "0x%s99", org_info[ PlayerInfo[ playerid ][ xClan ] ][ oColor ] );
                  GangZoneFlashForAll( gZoneInfo[ gZone__ID ][ gZoneID ], HexToInt( stringic ) );
                  SCM( playerid, NARACRVENA, "SRUSIO SI SVE CUVARE, ZAUZIMANJE ZAPOCETO." );
                  SCM( playerid, NARACRVENA, "Moras ostati ziv sledecih 5 minuta kako bi je osvojio." );
                  SCM( playerid, NARACRVENA, "Ne smes se previse udaljiti od mesta zauzimanja, jer ce zauzimanje biti prekinuto.");
                  gZoneInfo[ gZone__ID ][ gZoneTime ] = 30;
                  gZone_gID[ playerid ] = gZone__ID;
                  gZone_Time[ playerid ] = 300;
                  gZone_Timer[ playerid ] = SetTimerEx( "ZonaZauzmi", 1000, true, "i", playerid );
                  PlayerInfo[ playerid ][ xZauzimanjeVreme ] = 30;
                  OrgPoruka( PlayerInfo[ playerid ][ xClan ], 0x95b4a2FF, "[TERITORIJA] Clan vase organizacije pokusava da zauzme tudju teritoriju." );
               }
            }
         }
      }
   }
    return true;
}
[/pawn]
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): /
Slika/video ingame problema(obavezno ako je ingame problem): /

znaci, nisam radio ovaj sistem tako da nisam nesto ni upucen sto ne radi i sl..
radi se o tome kada covjek upuca sva 3 aktora na zoni  (ta 3 aktora se kreiraju in game sa zonama), trebalo bi se pokrenut zauzimanje. aktori se stvore na svakoj zoni ali kad ih probam upucat ne radi sistem (niti se u consoli ispise ono "aktor upucan").
Naslov: Odg: OnPlayerGiveDamageActor ne funkcionira
Poruka od: Slade poslato Novembar 29, 2019, 17:46:42 POSLE PODNE
Haha, vjerovao ili ne ja sam ga radio, to je moj kod u callbacku, sad nisam siguran dal sam to radio za tebe ili je taj mod došao tebi u ruke, ali znam i naravno primjetim po pisanju koda, inače kad sam ja testirao sve je okej radilo haha

Riješenje kod pozivanja callbacka je da skineš actoru invulnerable (vjerovatno je na true), a budući da sistem radi da se aktor rani, a ne ubije, umjesto toga koristi SetActorHealth.
https://wiki.sa-mp.com/wiki/SetActorHealth
Naslov: Odg: OnPlayerGiveDamageActor ne funkcionira
Poruka od: mmlinaric poslato Novembar 29, 2019, 18:45:35 POSLE PODNE
Citat: Slade poslato Novembar 29, 2019, 17:46:42 POSLE PODNE
Haha, vjerovao ili ne ja sam ga radio, to je moj kod u callbacku, sad nisam siguran dal sam to radio za tebe ili je taj mod došao tebi u ruke, ali znam i naravno primjetim po pisanju koda, inače kad sam ja testirao sve je okej radilo haha

Riješenje kod pozivanja callbacka je da skineš actoru invulnerable (vjerovatno je na true), a budući da sistem radi da se aktor rani, a ne ubije, umjesto toga koristi SetActorHealth.
https://wiki.sa-mp.com/wiki/SetActorHealth
@Slade da pricao mi je miki da si ti radio taj sistem, ja sam kupio enwhile poslje :)
fora je sto je SetActorInvulnerable vec na false. to sam prvo i provjerio
Naslov: Odg: OnPlayerGiveDamageActor ne funkcionira
Poruka od: roman42O poslato Novembar 29, 2019, 19:28:38 POSLE PODNE
Citat: Slade poslato Novembar 29, 2019, 17:46:42 POSLE PODNE
Haha, vjerovao ili ne ja sam ga radio, to je moj kod u callbacku, sad nisam siguran dal sam to radio za tebe ili je taj mod došao tebi u ruke, ali znam i naravno primjetim po pisanju koda, inače kad sam ja testirao sve je okej radilo haha

Riješenje kod pozivanja callbacka je da skineš actoru invulnerable (vjerovatno je na true), a budući da sistem radi da se aktor rani, a ne ubije, umjesto toga koristi SetActorHealth.
https://wiki.sa-mp.com/wiki/SetActorHealth

A i ovo je tvoj nacin ist ko na Gheto xD
Naslov: Odg: OnPlayerGiveDamageActor ne funkcionira
Poruka od: Skrillex. poslato Novembar 29, 2019, 19:56:01 POSLE PODNE
https://github.com/samp-incognito/samp-streamer-plugin/wiki/Natives-(Actors)

https://github.com/samp-incognito/samp-streamer-plugin/wiki/Callbacks

Probaj prebaciti u Dynamic, i možda kreiraš dynamic actora pa koristi callback od gore

I nemoj koristiti SCM ( Sečem Curi Muda ) jebem ti sunce
Naslov: Odg: OnPlayerGiveDamageActor ne funkcionira
Poruka od: Slade poslato Novembar 29, 2019, 23:51:00 POSLE PODNE
Pošalji gdje kreiraš aktora, takodjer izvodivo je i na drugi način, key fire u kombinaciji sa aktorom kojeg nišani, ali budući da je to loš način, samo u slučaju nužde
Naslov: Odg: OnPlayerGiveDamageActor ne funkcionira
Poruka od: mmlinaric poslato Novembar 30, 2019, 11:28:29 PRE PODNE
rjeseno. hvala svima na pomoci. lock.