Sinus Cosinus berechnung - 12 Minuten zum kompilieren und GM 230 MB groß

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Pastebin
    Wenn ich die einzeln als FS mache ists kein Problem aber ich pass die ja an meine Bedürfnisse an.
    Im Prinzip hab ich nur den Aufruf statt bei OnPlayerRequestClass an anderer Stelle und die Variablen

    const
    Float: spawnX = 0.0, // The SPAWN X you're willing to work from
    Float: spawnY = 0.0, // The SPAWN Y you're willing to work from
    Float: spawnZ = 5.0, // The SPAWN Y you're willing to work from
    Float: camRadius = 20.0, // The radius of the camera rotating
    Float: camSpeed = 1.25, // The speed of the camera moving around. MUST NOT BE NULL; IT WONT MOVE IF SO!
    Float: camHeight = 6.0 // The height of the camera once moving!
    ;

    /* ** Player Data ** */
    new
    prc_Timer [MAX_PLAYERS], // The timer for the movement.
    bool: prc_Moving [MAX_PLAYERS], // Check if the player is moving his camera
    Float: prc_Degree [MAX_PLAYERS] // The degree counter to show which the player is on.
    ;

    Hab ich in nen enum gepackt aber ansonsten ist alles original copy & paste :whistling:

  • Wenn ich das so compile, dann compiliert er einwandfrei

    Code
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    Header size:            612 bytes
    Code size:             2256 bytes
    Data size:            12140 bytes
    Stack/heap size:      16384 bytes; estimated max. usage=18 cells (72 bytes)
    Total requirements:   31392 bytes

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Beitrag von PermanenT ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Hatte ich ja geschrieben dass EA einzeln geht.
    Ich hab die Variablen die oben drinnen stehen (siehe mein vorheriger Post) in nen Enum gesteckt.
    Alle PlayerVars eben in den Player Enum und die restlichen in ein anderes.


    @BlackAce ich hab eigentlich nur die Variablen in Enums gepackt siehe Code und es sprengt scheinbar einfach alles...

    enum DM13e
    {
    State,
    Players,
    Time,
    Float: spawnX = 0.0,
    Float: spawnY = 0.0,
    Float: spawnZ = 5.0
    };
    new DM13[DM13e];



    enum E_PLAYERS
    {
    //Ist natürlich bisschen mehr drinnen
    prc_Timer,
    bool: prc_Moving ,
    Float: prc_Degree
    };
    new Player[MAX_PLAYERS][E_PLAYERS];




    // Aufruf in meiner Funktion
    GetPlayerPos(id,DM13[spawnX],DM13[spawnY],DM13[spawnZ]);
    if(Player[playerid][prc_Moving] == false) // Check whether the camera is already set.
    {
    Player[playerid][prc_Degree] = 0; // Reseting the variable
    Player[playerid][prc_Timer] = SetTimerEx("MoveCamera", 75, true, "d", playerid); // Setting the timer
    Player[playerid][prc_Moving] = true; // okay, now we're going to activate the moving variable
    }


    //Reset ( Bei OnplayerSpawn & Disconnect)
    if(Player[playerid][prc_Moving] == true)
    {
    KillTimer(Player[playerid][prc_Timer]); // Killing the timer, ofc we don't want a 75 ms timer always running.
    Player[playerid][prc_Degree] = 0; // Reseting the variable
    Player[playerid][prc_Moving] = false; // Reseting the variable
    SetCameraBehindPlayer(playerid); // Preventing bugs from appearing.
    }


    public MoveCamera(playerid) // The core of the movement
    {
    static // Static for the repeation :O
    Float: nX, // The newX
    Float: nY // the newY
    ;
    if(Player[playerid][prc_Moving] == false) // check whether the timer is activated and the variable isn't.
    {
    KillTimer(Player[playerid][prc_Timer]); // Killing the timer, ofc we don't want a 75 ms timer always running.
    Player[playerid][prc_Degree] = 0; // Reseting the variable
    }
    if(Player[playerid][prc_Degree] >= 360) Player[playerid][prc_Degree] = 0; // If the rotation is past 360, reset to 0 (looks more neater)
    Player[playerid][prc_Degree] += 1.25; // For some smooth rotation, I'm using 1.25

    nX = DM13[spawnX] + 20.0 * floatcos(Player[playerid][prc_Degree], degrees);
    nY = DM13[spawnY] + 20.0 * floatsin(Player[playerid][prc_Degree], degrees);


    SetPlayerCameraPos(playerid, nX, nY, DM13[spawnZ] + 6.0); // Setting the Camera position around the player
    SetPlayerCameraLookAt(playerid, DM13[spawnX], DM13[spawnY], DM13[spawnZ]); // Looking at the player position from there :)
    SetPlayerFacingAngle(playerid, Player[playerid][prc_Degree] - 90.0); // to make it face the camera :)
    return 1;
    }

  • TommyAkaServus: Bekommst du die Melundung die ich gepostet habe ?


    Wäre interessant mal das zu sehen, möglicherweise sprengt der Array den du hast den Code
    bspw so


    enum E_PLAYERS
    {
    //Ist natürlich bisschen mehr drinnen
    prc_Timer,
    bool: prc_Moving ,
    Float: prc_Degree,
    IchBinEineVariable[MAX_PLAYERS],
    IchAuch[MAX_PLAYERS]
    };
    new Player[MAX_PLAYERS][E_PLAYERS];


    Ist nur ein grobes beispiel ^^

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski


  • enum E_PLAYERS
    {
    ORM:ORM_ID,

    ID,
    Name[MAX_PLAYER_NAME],
    Password[129],
    Cash,

    bool:IsLoggedIn,
    bool:IsRegistered,
    LoginAttempts,
    LoginTimer,
    Text3D:NameTag,
    Serial[64],

    InMode,
    Team,
    Kills,
    RoundDeaths,
    RoundKills,

    Parkour,
    Time,

    prc_Timer,
    bool: prc_Moving ,
    Float: prc_Degree
    };
    new Player[MAX_PLAYERS][E_PLAYERS];

    Der Array sollte nicht gesprengt werden...


    Welche Meldung meinst du? Die vom Compiler?
    Also nach 12 Minuten geht alles...

  • Float: spawnX = 0.0,
    Float: spawnY = 0.0,
    Float: spawnZ = 5.0


    ... :wacko:


    Schreib das so:


    enum DM13e
    {
    State,
    Players,
    Time,
    Float: spawnX,
    Float: spawnY,
    Float: spawnZ
    };
    new DM13[DM13e];


    //Unter OnGameModeInit | oder in deiner Funktion obendrüber:
    DM13[spawnZ] = 5.0;


    Du kannst in einem Enumerator keine Initialisierung einer Variable vornehmen.


    Wenn du = in einem Enum nutzt, setzt du damit den Index von dieser Cell.


    Das kann zu brutalen Fehlern führen, wenn du z.B. sowas machst:


    enum e_E {
    a,
    b=0
    };
    new y[e_E];


    main() {
    y[a] = 1;
    printf("%d",y[b]); //Das würde dir 1 printen
    }


    und wenn du Floats setzt...wird das als Floating Point interpretiert...und Cells als Floating Point..das kann nur in die falsche Richtung gehen :wacko:


    //Edit: Ohne schleife bei OnGameModeInit ...

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S