Problem(error/warning): Imam dinamicno kreiranje actora ingame, sad me zanima jedno pitanje, kad kreiram actora u nekom interijeru, koji je izmapan i korisceno je CreateDynamicObject, da li postoji neka mogucnost da actori ne propadaju kroz mapu zbog toga, ne bih bas koristio CreateObject, tj da kreiram neki sitni objekat ispod svakog aktora, da ne bi propadali, da li postoji alternativno resenje koje je vise funkcionalno?
Deo skripte: /
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): /
Slika/video ingame problema(obavezno ako je ingame problem):/
Postavljanje Z koordinata
Prilikom kreiranja: Kada dinamički kreiraš actora, potrudi se da precizno odrediš njegovu Z koordinatu. Možeš koristiti funkciju GetGroundZFor3DCoord da dobiješ točnu visinu terena na toj lokaciji.
Provjera i korekcija: Nakon kreiranja, provjeri da li actor i dalje propada. Ako da, blago povećaj njegovu Z koordinatu dok ne "sleti" na čvrsto tlo.
Korištenje Checkpointa
Postavi checkpoint (ili nekoliko njih) unutar interijera.
Kada se actor kreira, teleportiraj ga na checkpoint. Ovo bi ga trebalo postaviti na ispravnu visinu.
Isključivanje gravitacije
SetActorInvulnerable: Postavi actora kao neranjivog (SetActorInvulnerable) i isključi gravitaciju za njega (SetActorGravity).
Ovo je najjednostavnije rješenje, ali je moguce da actor neće realistično reagirati na okruženje (npr. neće padati ako ga nešto gurne).
Collision detection
OnActorCollision: Koristi callback OnActorCollision da detektiraš kada actor dodirne nešto.
Reakcija: Ako actor propada, podigni ga blago na Z osi dok se ne prestane sudarati. Ovo je zahtjevnije rješenje, ali može biti najpreciznije.
Mappanje: Provjeri da li je interijer dobro mappan. Ponekad problemi sa propadanjem mogu biti uzrokovani greškama u mappanju.
Alternativa za CreateObject: Ako baš želiš izbjeci CreateObject, možeš koristiti CreateDynamicObjectEx i postaviti objekat kao nevidljiv.
Primjer (postavljanje Z koordinata) u PAWN-u:
new Float:groundZ;
GetGroundZFor3DCoord(interiorX, interiorY, interiorZ, groundZ);
new actorid = CreateActor(actor_model, interiorX, interiorY, groundZ + 1.0); // +1.0 da actor ne bude zaglavljen u podu
Izvini ali koriscenje ChatGPT-a ne moze da resi probleme na SAMP-u pogotovo sto pola stvari koje si kopirao/zalepio ne postoje...
Mozda nisam na SAMPu i nisam nikada gledao ali me je iskreno zanimalo da pogledam dokumentaciju, pa pogodi sta ? - nema pola stvari koje si naveo.
Kako nema?
Nemam ja uopce chatgpt
Imao sam slicnih problema, gde su actori propadali i stvarali se u blizini, ne vezano za tlo niti da li su kreirani putem CreateActor ili CreateDynamicActor. Solucija koju sam nasao je da sam napravio timer koji vrti na tipa svakih 10 sekundi, i postavi opet poziciju actora koje sam kreirao i koristio.
primer :
task ActorPozicijeReset[4000]() {
SetActorPos(LesterActor, -2164.4719,1041.3716,96.9375);
SetActorFacingAngle(LesterActor, 262.0000);
SetActorPos(ZlataraCuvar, 1671.0142,1630.8594,-70.4210);
SetActorPos(EnemyActor1, 222.6090,1899.6664,17.6481);
SetActorPos(EnemyActor2, 246.3216,1843.0695,8.7578);
return 1;
}
Najjednostavnije resenje
Citat: V01D poslato Maj 27, 2024, 11:08:02 PRE PODNEImao sam slicnih problema, gde su actori propadali i stvarali se u blizini, ne vezano za tlo niti da li su kreirani putem CreateActor ili CreateDynamicActor. Solucija koju sam nasao je da sam napravio timer koji vrti na tipa svakih 10 sekundi, i postavi opet poziciju actora koje sam kreirao i koristio.
primer :
task ActorPozicijeReset[4000]() {
SetActorPos(LesterActor, -2164.4719,1041.3716,96.9375);
SetActorFacingAngle(LesterActor, 262.0000);
SetActorPos(ZlataraCuvar, 1671.0142,1630.8594,-70.4210);
SetActorPos(EnemyActor1, 222.6090,1899.6664,17.6481);
SetActorPos(EnemyActor2, 246.3216,1843.0695,8.7578);
return 1;
}
Najjednostavnije resenje
Jeste rjesenje, ali radije bi kreirao objekat ako nemam neku bolju i pametniju soluciju.
Nikako ne bih radio na tajmer, gledam da je mod sto vise optimizovan, da kazem te "nepotrebne" tajmere vrteti u krug svakih 10 sekundi. Evo proverih u skripti dinamicno kreiranje, stavih CreateActor, nisam mu stavio invulnerable, videcu sad da li ce da "baguju".
Pitao sam prinatelja i poslao mi je ovo.
https://www.open.mp/docs/scripting/functions/IsActorStreamedIn
"Resenje je jednostavno, kada su u pitanju dinamicni treba napraviti custom funkciju na principu InActorStreamedIn, jednostavno kada si u blizini aktora tj pojavis im se u blizini od nebitno pet il deset metara, obnovi mu koordinate i nece propasti"
Sad ja se ne bavim SAMPom ali znam da je on bio vrhunski u tome tako da probaj ovako.
Citat: Shaw Salcedo poslato Maj 27, 2024, 19:15:16 POSLE PODNEinvulnerable
Kakve veze ima invulnerable sa propadanjem aktora.
Ili uradi Tajmer sto ti je poslao Void ili uradi IsActorStreamedIn