SAMP Cam hack

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
  • Wie wärs mit dem flymode Filterscript?


    Spoiler anzeigen

    //-------------------------------------------------
    //
    // This is an example of using the AttachCameraToObject function
    // to create a no-clip flying camera.
    //
    // h02 2012
    //
    // SA-MP 0.3e and above
    //
    //-------------------------------------------------

    Spoiler anzeigen
    #include <a_samp>

    Spoiler anzeigen
    // Players Move Speed
    #define MOVE_SPEED 100.0
    #define ACCEL_RATE 0.03

    Spoiler anzeigen
    // Players Mode
    #define CAMERA_MODE_NONE 0
    #define CAMERA_MODE_FLY 1

    Spoiler anzeigen
    // Key state definitions
    #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

    Spoiler anzeigen
    // Enumeration for storing data about the player
    enum noclipenum
    {
    cameramode,
    flyobject,
    mode,
    lrold,
    udold,
    lastmove,
    Float:accelmul
    }
    new noclipdata[MAX_PLAYERS][noclipenum];

    Spoiler anzeigen
    //--------------------------------------------------

    Spoiler anzeigen
    public OnFilterScriptExit()
    {
    // If any players are still in edit mode, boot them out before the filterscript unloads
    for(new x; x<MAX_PLAYERS; x++)
    {
    if(noclipdata[x][cameramode] == CAMERA_MODE_FLY) CancelFlyMode(x);
    }
    return 1;
    }

    Spoiler anzeigen
    //--------------------------------------------------

    Spoiler anzeigen
    public OnPlayerConnect(playerid)
    {
    // Reset the data belonging to this player slot
    noclipdata[playerid][cameramode] = CAMERA_MODE_NONE;
    noclipdata[playerid][lrold] = 0;
    noclipdata[playerid][udold] = 0;
    noclipdata[playerid][mode] = 0;
    noclipdata[playerid][lastmove] = 0;
    noclipdata[playerid][accelmul] = 0.0;
    return 1;
    }

    Spoiler anzeigen
    //--------------------------------------------------

    Spoiler anzeigen
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(!strcmp(cmdtext, "/flymode", true))
    {
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,0xFF0000AA,"You can't use this command.");
    // Place the player in and out of edit mode
    if(GetPVarType(playerid, "FlyMode")) CancelFlyMode(playerid);
    else FlyMode(playerid);
    return 1;
    }
    return 0;
    }

    Spoiler anzeigen
    //--------------------------------------------------

    Spoiler anzeigen
    public OnPlayerUpdate(playerid)
    {
    if(noclipdata[playerid][cameramode] == CAMERA_MODE_FLY)
    {
    new keys,ud,lr;
    GetPlayerKeys(playerid,keys,ud,lr);

    Spoiler anzeigen
    if(noclipdata[playerid][mode] && (GetTickCount() - noclipdata[playerid][lastmove] > 100))
    {
    // If the last move was > 100ms ago, process moving the object the players camera is attached to
    MoveCamera(playerid);
    }

    Spoiler anzeigen
    // Is the players current key state different than their last keystate?
    if(noclipdata[playerid][udold] != ud || noclipdata[playerid][lrold] != lr)
    {
    if((noclipdata[playerid][udold] != 0 || noclipdata[playerid][lrold] != 0) && ud == 0 && lr == 0)
    { // All keys have been released, stop the object the camera is attached to and reset the acceleration multiplier
    StopPlayerObject(playerid, noclipdata[playerid][flyobject]);
    noclipdata[playerid][mode] = 0;
    noclipdata[playerid][accelmul] = 0.0;
    }
    else
    { // Indicates a new key has been pressed

    Spoiler anzeigen
    // Get the direction the player wants to move as indicated by the keys
    noclipdata[playerid][mode] = GetMoveDirectionFromKeys(ud, lr);

    Spoiler anzeigen
    // Process moving the object the players camera is attached to
    MoveCamera(playerid);
    }
    }
    noclipdata[playerid][udold] = ud; noclipdata[playerid][lrold] = lr; // Store current keys pressed for comparison next update
    return 0;
    }
    return 1;
    }

    Spoiler anzeigen
    //--------------------------------------------------

    Spoiler anzeigen
    stock GetMoveDirectionFromKeys(ud, lr)
    {
    new direction = 0;

    if(lr < 0)
    {
    if(ud < 0) direction = MOVE_FORWARD_LEFT; // Up & Left key pressed
    else if(ud > 0) direction = MOVE_BACK_LEFT; // Back & Left key pressed
    else direction = MOVE_LEFT; // Left key pressed
    }
    else if(lr > 0) // Right pressed
    {
    if(ud < 0) direction = MOVE_FORWARD_RIGHT; // Up & Right key pressed
    else if(ud > 0) direction = MOVE_BACK_RIGHT; // Back & Right key pressed
    else direction = MOVE_RIGHT; // Right key pressed
    }
    else if(ud < 0) direction = MOVE_FORWARD; // Up key pressed
    else if(ud > 0) direction = MOVE_BACK; // Down key pressed

    return direction;
    }

    Spoiler anzeigen
    //--------------------------------------------------

    Spoiler anzeigen
    stock MoveCamera(playerid)
    {
    new Float:FV[3], Float:CP[3];
    GetPlayerCameraPos(playerid, CP[0], CP[1], CP[2]); // Cameras position in space
    GetPlayerCameraFrontVector(playerid, FV[0], FV[1], FV[2]); // Where the camera is looking at

    Spoiler anzeigen
    // Increases the acceleration multiplier the longer the key is held
    if(noclipdata[playerid][accelmul] <= 1) noclipdata[playerid][accelmul] += ACCEL_RATE;

    Spoiler anzeigen
    // Determine the speed to move the camera based on the acceleration multiplier
    new Float:speed = MOVE_SPEED * noclipdata[playerid][accelmul];

    Spoiler anzeigen
    // Calculate the cameras next position based on their current position and the direction their camera is facing
    new Float:X, Float:Y, Float:Z;
    GetNextCameraPosition(noclipdata[playerid][mode], CP, FV, X, Y, Z);
    MovePlayerObject(playerid, noclipdata[playerid][flyobject], X, Y, Z, speed);

    Spoiler anzeigen
    // Store the last time the camera was moved as now
    noclipdata[playerid][lastmove] = GetTickCount();
    return 1;
    }

    Spoiler anzeigen
    //--------------------------------------------------

    Spoiler anzeigen
    stock GetNextCameraPosition(move_mode, Float:CP[3], Float:FV[3], &Float:X, &Float:Y, &Float:Z)
    {
    // Calculate the cameras next position based on their current position and the direction their camera is facing
    #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:
    {
    X = CP[0]+OFFSET_X;
    Y = CP[1]+OFFSET_Y;
    Z = CP[2]+OFFSET_Z;
    }
    case MOVE_BACK:
    {
    X = CP[0]-OFFSET_X;
    Y = CP[1]-OFFSET_Y;
    Z = CP[2]-OFFSET_Z;
    }
    case MOVE_LEFT:
    {
    X = CP[0]-OFFSET_Y;
    Y = CP[1]+OFFSET_X;
    Z = CP[2];
    }
    case MOVE_RIGHT:
    {
    X = CP[0]+OFFSET_Y;
    Y = CP[1]-OFFSET_X;
    Z = CP[2];
    }
    case MOVE_BACK_LEFT:
    {
    X = CP[0]+(-OFFSET_X - OFFSET_Y);
    Y = CP[1]+(-OFFSET_Y + OFFSET_X);
    Z = CP[2]-OFFSET_Z;
    }
    case MOVE_BACK_RIGHT:
    {
    X = CP[0]+(-OFFSET_X + OFFSET_Y);
    Y = CP[1]+(-OFFSET_Y - OFFSET_X);
    Z = CP[2]-OFFSET_Z;
    }
    case MOVE_FORWARD_LEFT:
    {
    X = CP[0]+(OFFSET_X - OFFSET_Y);
    Y = CP[1]+(OFFSET_Y + OFFSET_X);
    Z = CP[2]+OFFSET_Z;
    }
    case MOVE_FORWARD_RIGHT:
    {
    X = CP[0]+(OFFSET_X + OFFSET_Y);
    Y = CP[1]+(OFFSET_Y - OFFSET_X);
    Z = CP[2]+OFFSET_Z;
    }
    }
    }
    //--------------------------------------------------

    Spoiler anzeigen
    stock CancelFlyMode(playerid)
    {
    DeletePVar(playerid, "FlyMode");
    CancelEdit(playerid);
    TogglePlayerSpectating(playerid, false);

    Spoiler anzeigen
    DestroyPlayerObject(playerid, noclipdata[playerid][flyobject]);
    noclipdata[playerid][cameramode] = CAMERA_MODE_NONE;
    return 1;
    }

    Spoiler anzeigen
    //--------------------------------------------------

    Spoiler anzeigen
    stock FlyMode(playerid)
    {
    // Create an invisible object for the players camera to be attached to
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X, Y, Z);
    noclipdata[playerid][flyobject] = CreatePlayerObject(playerid, 19300, X, Y, Z, 0.0, 0.0, 0.0);

    Spoiler anzeigen
    // Place the player in spectating mode so objects will be streamed based on camera location
    TogglePlayerSpectating(playerid, true);
    // Attach the players camera to the created object
    AttachCameraToPlayerObject(playerid, noclipdata[playerid][flyobject]);

    Spoiler anzeigen
    SetPVarInt(playerid, "FlyMode", 1);
    noclipdata[playerid][cameramode] = CAMERA_MODE_FLY;
    return 1;
    }

    Spoiler anzeigen
    //--------------------------------------------------

    Spoiler anzeigen
    /edit: Pawn format eingestellt