[Savet] Actors

Započeo Shaw Salcedo, Maj 26, 2024, 23:12:09 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

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):/
GAD SAM JA

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
Poslednja Izmena: Maj 27, 2024, 07:56:50 PRE PODNE od CroherzeNonRPer

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.

HTML / CSS / Javascript / Inspect : Entry Masterclass.
ReactJS / Tailwind CSS / PWA / Axios / SCSS / Redux, ViteJS : Entry Masterclass.
C / C++ / C# / C-objective - kroz Pawn Lang : Entry Masterclass
Grupisano Pravljenje Objekata : Filterscript.


Sta je to web development?
To je nesto ono kao, kako bih to rekao, izgubis volju za zivotom i zelis da se ubijes, ali to je okej.
Onda jednostavno shvatis da si bio glup i resis problem, das sam sebi lajk,
skuvas NES 3u1 i pripremis se za sledeci projekat.

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".
GAD SAM JA

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.
HTML / CSS / Javascript / Inspect : Entry Masterclass.
ReactJS / Tailwind CSS / PWA / Axios / SCSS / Redux, ViteJS : Entry Masterclass.
C / C++ / C# / C-objective - kroz Pawn Lang : Entry Masterclass
Grupisano Pravljenje Objekata : Filterscript.


Sta je to web development?
To je nesto ono kao, kako bih to rekao, izgubis volju za zivotom i zelis da se ubijes, ali to je okej.
Onda jednostavno shvatis da si bio glup i resis problem, das sam sebi lajk,
skuvas NES 3u1 i pripremis se za sledeci projekat.

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
skazy42O

42O DayZ - Owner
- 42o.gg