AutoSalon kamera

Započeo Belii, Mart 27, 2023, 16:26:26 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 2 gostiju pregledaju ovu temu.

Problem(error/warning): Kada kreiram autosalon i sada trebam da izaberem kordinate za kameru kada igrac kupuje vozilo de da mu postavi i kucam /ascamera od jednom mi se kamera postavi negde skroz drugde dok kad izadje iz auto salona i kad ukucsm /ascamera sve normalno radi
Deo skripte: [pawn]ako je potrebno postavicu[/pawn]
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): [pawn]//[/pawn]
Slika/video ingame problema(obavezno ako je ingame problem): ako treba postavicu

mozda sam malo lose objasnio koj je problem


da posaljes mozda kod i da bolje objasnis sta se desava znali bi.. nema niko ovdje u glavi svaki mod pa da zna gdje je sta i kako radi

Citat: njoBe_ poslato Mart 28, 2023, 23:16:34 POSLE PODNE
da posaljes mozda kod i da bolje objasnis sta se desava znali bi.. nema niko ovdje u glavi svaki mod pa da zna gdje je sta i kako radi
razumem te skroz ne znam bas najbolje da objasnim
dok sam u salonu i trebam da sacuvam kordinate za kameru jednostavno me prebaci u vazduh a kada sam van salona radi normalno mogu da se krecem
[pawn]CMD:ascamera( playerid, params[] ) {
    if( PlayerInfo[ playerid ][ xAdmin ] >= 7 ) {
        if( FlyMode[ playerid ] == true && flymodecamera[ playerid ][ cameramode ] == true ) {
            new as = KreiranAutoSalon[ playerid ];
            new Float:fPX, Float:fPY, Float:fPZ,
                Float:fVX, Float:fVY, Float:fVZ,
                Float:object_x, Float:object_y, Float:object_z;

            const Float:fScale = 5.0;

            GetPlayerCameraPos( playerid, fPX, fPY, fPZ);
            GetPlayerCameraFrontVector( playerid, fVX, fVY, fVZ);

            object_x = fPX + floatmul( fVX, fScale );
            object_y = fPY + floatmul( fVY, fScale );
            object_z = fPZ + floatmul( fVZ, fScale );

            AutoSalon[ as ][ aCameraPos ][ 0 ]      = fPX;
            AutoSalon[ as ][ aCameraPos ][ 1 ]      = fPY;
            AutoSalon[ as ][ aCameraPos ][ 2 ]      = fPZ;
            AutoSalon[ as ][ aCameraLookAt ][ 0 ]   = object_x;
            AutoSalon[ as ][ aCameraLookAt ][ 1 ]   = object_y;
            AutoSalon[ as ][ aCameraLookAt ][ 2 ]   = object_z;
            SaveSalon( as );
            CancelFlyMode( playerid );
            SendInfoMessage( playerid, "Uspesno si sacuvao pozicije." );
            SendInfoMessage( playerid, "Sada koristi /asport da se vratis do auto salona." );
        }
    }
    return true;
}[/pawn]//ovo je komanda za cuvanje pozicije
[pawn]enum noclipenum {
    bool:cameramode,
    flyobject,
    mode,
    lrold,
    udold,
    lastmove,
    Float:accelmul
}
new flymodecamera[ MAX_PLAYERS ][noclipenum];

#define MOVE_FORWARD            1
#define MOVE_BACK               2
#define MOVE_LEFT               3
#define MOVE_RIGHT              4
#define MOVE_FORWARD_LEFT       5
#define MOVE_FORWARD_RIGHT      6
#define MOVE_BACK_LEFT          7
#define MOVE_BACK_RIGHT         8
#define MOVE_SPEED              100.0
#define ACCEL_RATE              0.03[/pawn]
[pawn]    flymodecamera[ playerid ][cameramode]   = false;
    flymodecamera[ playerid ][lrold]            = 0;
    flymodecamera[ playerid ][udold]        = 0;
    flymodecamera[ playerid ][mode]         = 0;
    flymodecamera[ playerid ][lastmove]     = 0;
    flymodecamera[ playerid ][accelmul]     = 0.0;[/pawn]
[pawn]stock GetMoveDirectionFromKeys( ud, lr ) {
    new direction = 0;

    if(lr < 0)
    {
        if(ud < 0)      direction = MOVE_FORWARD_LEFT;
        else if(ud > 0) direction = MOVE_BACK_LEFT;
        else            direction = MOVE_LEFT;
    }
    else if(lr > 0)
    {
        if(ud < 0)      direction = MOVE_FORWARD_RIGHT;
        else if(ud > 0) direction = MOVE_BACK_RIGHT;
        else            direction = MOVE_RIGHT;
    }
    else if(ud < 0)     direction = MOVE_FORWARD;
    else if(ud > 0)     direction = MOVE_BACK;

    return direction;
}

stock MoveCamera( playerid ) {
    new Float:FV[ 3 ], Float:CP[ 3 ];
    GetPlayerCameraPos( playerid, CP[ 0 ], CP[ 1 ], CP[ 2 ] );
    GetPlayerCameraFrontVector( playerid, FV[ 0 ], FV[ 1 ], FV[ 2 ] );
    if( flymodecamera[ playerid ][ accelmul ] <= 1 ) flymodecamera[ playerid ][ accelmul ] += ACCEL_RATE;
    new Float:speed = MOVE_SPEED * flymodecamera[ playerid ][ accelmul ];
    new Float:Xa, Float:Ya, Float:Za;
    GetNextCameraPosition( flymodecamera[ playerid ][ mode ], CP, FV, Xa, Ya, Za );
    MovePlayerObject( playerid, flymodecamera[ playerid ][ flyobject ], Xa, Ya, Za, speed );
    flymodecamera[ playerid ][ lastmove ] = GetTickCount( );
    return 1;
}
stock GetNextCameraPosition(move_mode, Float:CP[ 3 ], Float:FV[ 3 ], &Float:Xa, &Float:Ya, &Float:Za) {
    #define OFFSET_X (FV[0]*6000.0)
    #define OFFSET_Y (FV[1]*6000.0)
    #define OFFSET_Z (FV[2]*6000.0)
    switch(move_mode)
    {
        case MOVE_FORWARD:
        {
            Xa = CP[0]+OFFSET_X;
            Ya = CP[1]+OFFSET_Y;
            Za = CP[2]+OFFSET_Z;
        }
        case MOVE_BACK:
        {
            Xa = CP[0]-OFFSET_X;
            Ya = CP[1]-OFFSET_Y;
            Za = CP[2]-OFFSET_Z;
        }
        case MOVE_LEFT:
        {
            Xa = CP[0]-OFFSET_Y;
            Ya = CP[1]+OFFSET_X;
            Za = CP[2];
        }
        case MOVE_RIGHT:
        {
            Xa = CP[0]+OFFSET_Y;
            Ya = CP[1]-OFFSET_X;
            Za = CP[2];
        }
        case MOVE_BACK_LEFT:
        {
            Xa = CP[0]+(-OFFSET_X - OFFSET_Y);
            Ya = CP[1]+(-OFFSET_Y + OFFSET_X);
            Za = CP[2]-OFFSET_Z;
        }
        case MOVE_BACK_RIGHT:
        {
            Xa = CP[0]+(-OFFSET_X + OFFSET_Y);
            Ya = CP[1]+(-OFFSET_Y - OFFSET_X);
            Za = CP[2]-OFFSET_Z;
        }
        case MOVE_FORWARD_LEFT:
        {
            Xa = CP[0]+(OFFSET_X  - OFFSET_Y);
            Ya = CP[1]+(OFFSET_Y  + OFFSET_X);
            Za = CP[2]+OFFSET_Z;
        }
        case MOVE_FORWARD_RIGHT:
        {
            Xa = CP[0]+(OFFSET_X  + OFFSET_Y);
            Ya = CP[1]+(OFFSET_Y  - OFFSET_X);
            Za = CP[2]+OFFSET_Z;
        }
    }
}
stock CancelFlyMode( playerid ) {
    FlyMode[ playerid ] = false;
    CancelEdit( playerid );
    TogglePlayerSpectating( playerid, false);
    DestroyPlayerObject( playerid, flymodecamera[ playerid ][ flyobject ] );
    flymodecamera[ playerid ][ cameramode ] = false;
    return 1;
}

forward FlyMode1( playerid );
public FlyMode1( playerid ) {
    FlyModeAh( playerid );
}

stock FlyModeAh( playerid ) {
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos( playerid, X, Y, Z );
    TogglePlayerSpectating( playerid, true );

    flymodecamera[ playerid ][ flyobject ] = CreatePlayerObject( playerid, 19300, X, Y, Z, 0.0, 0.0, 0.0 );
    AttachCameraToPlayerObject( playerid, flymodecamera[ playerid ][ flyobject ] );
    FlyMode[ playerid ] = true;
    flymodecamera[ playerid ][ cameramode ] = true;
    return 1;
}[/pawn]//za flymode
[pawn]    if( flymodecamera[ playerid ][ cameramode ] == true ) {
        new keys,ud,lr;
        GetPlayerKeys(playerid,keys,ud,lr);

        if(flymodecamera[ playerid ][mode] && (GetTickCount() - flymodecamera[ playerid ][ lastmove ] > 100))
        {
            MoveCamera(playerid);
        }
        if(flymodecamera[ playerid ][udold] != ud || flymodecamera[ playerid ][lrold] != lr)
        {
            if((flymodecamera[ playerid ][udold] != 0 || flymodecamera[ playerid ][lrold] != 0) && ud == 0 && lr == 0){
                StopPlayerObject(playerid, flymodecamera[ playerid ][flyobject] );
                flymodecamera[ playerid ][mode]      = 0;
                flymodecamera[ playerid ][accelmul]  = 0.0;
            }
            else
            {
                flymodecamera[ playerid ][mode] = GetMoveDirectionFromKeys(ud, lr);
                MoveCamera(playerid);
            }
        }
        flymodecamera[ playerid ][udold] = ud; flymodecamera[ playerid ][lrold] = lr;
        return 0;
    }
    return true;
}[/pawn]
sve sto je bilo nazvano pod flymode ili flymodecamera je ovde
cak sam i to prebacio iz drugog moda u kome radi perfektno ali kod mene ne radi bas najbolje


koliko vidim to je neki vid camera moda ili slicno, da li ti dobijes mogucnost da pomjeras kameru kada ukucas  ascamera jer tu se samo vidi kako uzimas pozicije kamere i vektora kamere nikakva druga radnja

Citat: njoBe_ poslato Mart 29, 2023, 22:40:46 POSLE PODNE
koliko vidim to je neki vid camera moda ili slicno, da li ti dobijes mogucnost da pomjeras kameru kada ukucas  ascamera jer tu se samo vidi kako uzimas pozicije kamere i vektora kamere nikakva druga radnja
ne dobijam uopste mogucnost da se krecem ali kad napustim interior autosalona mogu da se krecem inace mapa auto salona nema standardan ulaz u interior vec mogu samo da udjem jednostavno u autosalon

ne znam bas najbolje da objasnim

Prvo nauci da  objasnis pa onda skriptaj.. Problem sam po sebi kompleksan jer ni sam ne znam sta se desi.. Ti kazes nesto ti kameru mrda pa spominjes enterijer pa odjednom promijeni polozaj kamere tamo negdje, onda  brdo nekog koda koji vjerovatno nema veze sa autosalonom itd. To ti 5 ljudi ne skontalo ste je pisac htio da kaze

Citat: njoBe_ poslato Mart 30, 2023, 19:10:47 POSLE PODNE
Prvo nauci da  objasnis pa onda skriptaj.. Problem sam po sebi kompleksan jer ni sam ne znam sta se desi.. Ti kazes nesto ti kameru mrda pa spominjes enterijer pa odjednom promijeni polozaj kamere tamo negdje, onda  brdo nekog koda koji vjerovatno nema veze sa autosalonom itd. To ti 5 ljudi ne skontalo ste je pisac htio da kaze
radi sistem ali zavisi na kom mestu a sto je to tako ne znam