Beiträge von ToBee94

    Hier haste den kompletten quelltxt:


    der müsste gehen :D



    /*
    * Example elevator system for the new LS building.
    *
    * Zamaroht 2010
    */


    // Warning: This script uses a total of 45 objects, 22 3D Text Labels and 1 dialog.


    #include <a_samp>


    #define ELEVATOR_SPEED (5.0) // Movement speed of the elevator.
    #define DOORS_SPEED (4.0) // Movement speed of the doors.
    #define ELEVATOR_WAIT_TIME (5000) // Time in ms that the elevator will wait in each floor before continuing with the queue.
    // Be sure to give enough time for doors to open.


    #define DIALOG_ID (2536)


    // Private:
    #define X_DOOR_CLOSED (1786.627685)
    #define X_DOOR_R_OPENED (1785.027685)
    #define X_DOOR_L_OPENED (1788.227685)
    #define GROUND_Z_COORD (14.511476)
    #define ELEVATOR_OFFSET (0.059523)


    /* ------------------
    // Constants:
    -------------------*/
    static FloorNames[21][] =
    {
    "Ground Floor",
    "First Floor",
    "Second Floor",
    "Third Floor",
    "Fourth Floor",
    "Fifth Floor",
    "Sixth Floor",
    "Seventh Floor",
    "Eighth Floor",
    "Ninth Floor",
    "Tenth Floor",
    "Eleventh Floor",
    "Twelfth Floor",
    "Thirteenth Floor",
    "Fourteenth Floor",
    "Fifteenth Floor",
    "Sixteenth Floor",
    "Seventeenth Floor",
    "Eighteenth Floor",
    "Nineteenth Floor",
    "Penthouse"
    };


    static Float:FloorZOffsets[21] =
    {
    0.0, // 0.0,
    8.5479, // 8.5479,
    13.99945, // 8.5479 + (5.45155 * 1.0),
    19.45100, // 8.5479 + (5.45155 * 2.0),
    24.90255, // 8.5479 + (5.45155 * 3.0),
    30.35410, // 8.5479 + (5.45155 * 4.0),
    35.80565, // 8.5479 + (5.45155 * 5.0),
    41.25720, // 8.5479 + (5.45155 * 6.0),
    46.70875, // 8.5479 + (5.45155 * 7.0),
    52.16030, // 8.5479 + (5.45155 * 8.0),
    57.61185, // 8.5479 + (5.45155 * 9.0),
    63.06340, // 8.5479 + (5.45155 * 10.0),
    68.51495, // 8.5479 + (5.45155 * 11.0),
    73.96650, // 8.5479 + (5.45155 * 12.0),
    79.41805, // 8.5479 + (5.45155 * 13.0),
    84.86960, // 8.5479 + (5.45155 * 14.0),
    90.32115, // 8.5479 + (5.45155 * 15.0),
    95.77270, // 8.5479 + (5.45155 * 16.0),
    101.22425, // 8.5479 + (5.45155 * 17.0),
    106.67580, // 8.5479 + (5.45155 * 18.0),
    112.12735 // 8.5479 + (5.45155 * 19.0)
    };


    /* ------------------
    // Variables:
    -------------------*/
    new Obj_Elevator, Obj_ElevatorDoors[2],
    Obj_FloorDoors[21][2];


    new Text3D:Label_Elevator, Text3D:Label_Floors[21];


    #define ELEVATOR_STATE_IDLE (0)
    #define ELEVATOR_STATE_WAITING (1)
    #define ELEVATOR_STATE_MOVING (2)


    new ElevatorState,
    ElevatorFloor; // If Idle or Waiting, this is the current floor. If Moving, the floor it's moving to.


    #define INVALID_FLOOR (-1)


    new ElevatorQueue[21], // Floors in queue.
    FloorRequestedBy[21]; // FloorRequestedBy[floor_id] = playerid; - Points out who requested which floor.


    new ElevatorBoostTimer; // Timer that makes the elevator move faster after players start surfing the object.


    /* ------------------
    * Function forwards:
    -------------------*/
    // Public:
    forward CallElevator(playerid, floorid); // You can use INVALID_PLAYER_ID too.
    forward ShowElevatorDialog(playerid);


    // Private:
    forward Elevator_Initialize();
    forward Elevator_Destroy();


    forward Elevator_OpenDoors();
    forward Elevator_CloseDoors();
    forward Floor_OpenDoors(floorid);
    forward Floor_CloseDoors(floorid);


    forward Elevator_MoveToFloor(floorid);
    forward Elevator_Boost(floorid); // Increases the elevator speed until it reaches 'floorid'.
    forward Elevator_TurnToIdle();


    forward ReadNextFloorInQueue();
    forward RemoveFirstQueueFloor();
    forward AddFloorToQueue(floorid);
    forward IsFloorInQueue(floorid);
    forward ResetElevatorQueue();


    forward DidPlayerRequestElevator(playerid);


    forward Float:GetElevatorZCoordForFloor(floorid);
    forward Float:GetDoorsZCoordForFloor(floorid);


    // ------------------------ Callbacks ------------------------
    public OnFilterScriptInit()
    {
    ResetElevatorQueue();
    Elevator_Initialize();


    return 1;
    }


    public OnFilterScriptExit()
    {
    Elevator_Destroy();


    return 1;
    }


    public OnObjectMoved(objectid)
    {
    new Float:x, Float:y, Float:z;
    for(new i; i < sizeof(Obj_FloorDoors); i ++)
    {
    if(objectid == Obj_FloorDoors[i][0])
    {
    GetObjectPos(Obj_FloorDoors[i][0], x, y, z);


    if(x < X_DOOR_L_OPENED - 0.5) // Some floor doors have shut, move the elevator to next floor in queue:
    {
    Elevator_MoveToFloor(ElevatorQueue[0]);
    RemoveFirstQueueFloor();
    }
    }
    }


    if(objectid == Obj_Elevator) // The elevator reached the specified floor.
    {
    KillTimer(ElevatorBoostTimer); // Kills the timer, in case the elevator reached the floor before boost.


    FloorRequestedBy[ElevatorFloor] = INVALID_PLAYER_ID;


    Elevator_OpenDoors();
    Floor_OpenDoors(ElevatorFloor);


    GetObjectPos(Obj_Elevator, x, y, z);
    Label_Elevator = Create3DTextLabel("Press 'F' to use elevator", 0xFFFFDD, 1784.9822, -1302.0426, z - 0.9, 4.0, 0, 1);


    ElevatorState = ELEVATOR_STATE_WAITING;
    SetTimer("Elevator_TurnToIdle", ELEVATOR_WAIT_TIME, 0);
    }


    return 1;
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == DIALOG_ID)
    {
    if(!response)
    return 0;


    if(FloorRequestedBy[listitem] != INVALID_PLAYER_ID || IsFloorInQueue(listitem))
    GameTextForPlayer(playerid, "~r~The floor is already in the queue", 3500, 4);
    else if(DidPlayerRequestElevator(playerid))
    GameTextForPlayer(playerid, "~r~You already requested the elevator", 3500, 4);
    else
    CallElevator(playerid, listitem);


    return 1;
    }


    return 0;
    }


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(!IsPlayerInAnyVehicle(playerid) && newkeys & KEY_SECONDARY_ATTACK)
    {
    new Float:pos[3];
    GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
    if(pos[1] < -1301.4 && pos[1] > -1303.2417 && pos[0] < 1786.2131 && pos[0] > 1784.1555) // He is using the elevator button
    ShowElevatorDialog(playerid);
    else // Is he in a floor button?
    {
    if(pos[1] > -1301.4 && pos[1] < -1299.1447 && pos[0] < 1785.6147 && pos[0] > 1781.9902)
    {
    // He is most likely using it, check floor:
    new i=20;
    while(pos[2] < GetDoorsZCoordForFloor(i) + 3.5 && i > 0)
    i --;


    if(i == 0 && pos[2] < GetDoorsZCoordForFloor(0) + 2.0)
    i = -1;


    if(i <= 19)
    {
    CallElevator(playerid, i + 1);
    GameTextForPlayer(playerid, "~r~Elevator called", 3500, 4);
    }
    }
    }
    }


    return 1;
    }


    // ------------------------ Functions ------------------------
    stock Elevator_Initialize()
    {
    // Initializes the elevator.


    Obj_Elevator = CreateObject(18755, 1786.678100, -1303.459472, GROUND_Z_COORD + ELEVATOR_OFFSET, 0.000000, 0.000000, 270.000000);
    Obj_ElevatorDoors[0] = CreateObject(18757, X_DOOR_CLOSED, -1303.459472, GROUND_Z_COORD, 0.000000, 0.000000, 270.000000);
    Obj_ElevatorDoors[1] = CreateObject(18756, X_DOOR_CLOSED, -1303.459472, GROUND_Z_COORD, 0.000000, 0.000000, 270.000000);


    Label_Elevator = Create3DTextLabel("Press 'F' to use elevator", 0xFFFFDD, 1784.9822, -1302.0426, 13.6491, 4.0, 0, 1);


    new string[128],
    Float:z;


    for(new i; i < sizeof(Obj_FloorDoors); i ++)
    {
    Obj_FloorDoors[i][0] = CreateObject(18757, X_DOOR_CLOSED, -1303.171142, GetDoorsZCoordForFloor(i), 0.000000, 0.000000, 270.000000);
    Obj_FloorDoors[i][1] = CreateObject(18756, X_DOOR_CLOSED, -1303.171142, GetDoorsZCoordForFloor(i), 0.000000, 0.000000, 270.000000);


    format(string, sizeof(string), "%s\nPress 'F' to call", FloorNames[i]);


    if(i == 0)
    z = 13.4713;
    else
    z = 13.4713 + 8.7396 + ((i-1) * 5.45155);


    Label_Floors[i] = Create3DTextLabel(string, 0xFFFFDD, 1783.9799, -1300.7660, z, 10.5, 0, 1);
    // Label_Elevator, Text3D:Label_Floors[21];
    }


    // Open ground floor doors:
    Floor_OpenDoors(0);
    Elevator_OpenDoors();


    return 1;
    }


    stock Elevator_Destroy()
    {
    // Destroys the elevator.


    DestroyObject(Obj_Elevator);
    DestroyObject(Obj_ElevatorDoors[0]);
    DestroyObject(Obj_ElevatorDoors[1]);
    Delete3DTextLabel(Label_Elevator);


    for(new i; i < sizeof(Obj_FloorDoors); i ++)
    {
    DestroyObject(Obj_FloorDoors[i][0]);
    DestroyObject(Obj_FloorDoors[i][1]);
    Delete3DTextLabel(Label_Floors[i]);
    }


    return 1;
    }


    stock Elevator_OpenDoors()
    {
    // Opens the elevator's doors.


    new Float:x, Float:y, Float:z;


    GetObjectPos(Obj_ElevatorDoors[0], x, y, z);
    MoveObject(Obj_ElevatorDoors[0], X_DOOR_L_OPENED, y, z, DOORS_SPEED);
    MoveObject(Obj_ElevatorDoors[1], X_DOOR_R_OPENED, y, z, DOORS_SPEED);


    return 1;
    }


    stock Elevator_CloseDoors()
    {
    // Closes the elevator's doors.


    if(ElevatorState == ELEVATOR_STATE_MOVING)
    return 0;


    new Float:x, Float:y, Float:z;


    GetObjectPos(Obj_ElevatorDoors[0], x, y, z);
    MoveObject(Obj_ElevatorDoors[0], X_DOOR_CLOSED, y, z, DOORS_SPEED);
    MoveObject(Obj_ElevatorDoors[1], X_DOOR_CLOSED, y, z, DOORS_SPEED);


    return 1;
    }


    stock Floor_OpenDoors(floorid)
    {
    // Opens the doors at the specified floor.


    MoveObject(Obj_FloorDoors[floorid][0], X_DOOR_L_OPENED, -1303.171142, GetDoorsZCoordForFloor(floorid), DOORS_SPEED);
    MoveObject(Obj_FloorDoors[floorid][1], X_DOOR_R_OPENED, -1303.171142, GetDoorsZCoordForFloor(floorid), DOORS_SPEED);


    return 1;
    }


    stock Floor_CloseDoors(floorid)
    {
    // Closes the doors at the specified floor.


    MoveObject(Obj_FloorDoors[floorid][0], X_DOOR_CLOSED, -1303.171142, GetDoorsZCoordForFloor(floorid), DOORS_SPEED);
    MoveObject(Obj_FloorDoors[floorid][1], X_DOOR_CLOSED, -1303.171142, GetDoorsZCoordForFloor(floorid), DOORS_SPEED);


    return 1;
    }


    stock Elevator_MoveToFloor(floorid)
    {
    // Moves the elevator to specified floor (doors are meant to be already closed).


    ElevatorState = ELEVATOR_STATE_MOVING;
    ElevatorFloor = floorid;


    // Move the elevator slowly, to give time to clients to sync the object surfing. Then, boost it up:
    MoveObject(Obj_Elevator, 1786.678100, -1303.459472, GetElevatorZCoordForFloor(floorid), 0.5);
    MoveObject(Obj_ElevatorDoors[0], X_DOOR_CLOSED, -1303.459472, GetDoorsZCoordForFloor(floorid), 0.5);
    MoveObject(Obj_ElevatorDoors[1], X_DOOR_CLOSED, -1303.459472, GetDoorsZCoordForFloor(floorid), 0.5);
    Delete3DTextLabel(Label_Elevator);


    ElevatorBoostTimer = SetTimerEx("Elevator_Boost", 2000, 0, "i", floorid);


    return 1;
    }


    public Elevator_Boost(floorid)
    {
    // Increases the elevator's speed until it reaches 'floorid'


    MoveObject(Obj_Elevator, 1786.678100, -1303.459472, GetElevatorZCoordForFloor(floorid), ELEVATOR_SPEED);
    MoveObject(Obj_ElevatorDoors[0], X_DOOR_CLOSED, -1303.459472, GetDoorsZCoordForFloor(floorid), ELEVATOR_SPEED);
    MoveObject(Obj_ElevatorDoors[1], X_DOOR_CLOSED, -1303.459472, GetDoorsZCoordForFloor(floorid), ELEVATOR_SPEED);


    return 1;
    }


    public Elevator_TurnToIdle()
    {
    ElevatorState = ELEVATOR_STATE_IDLE;
    ReadNextFloorInQueue();


    return 1;
    }


    stock RemoveFirstQueueFloor()
    {
    // Removes the data in ElevatorQueue[0], and reorders the queue accordingly.


    for(new i; i < sizeof(ElevatorQueue) - 1; i ++)
    ElevatorQueue[i] = ElevatorQueue[i + 1];


    ElevatorQueue[sizeof(ElevatorQueue) - 1] = INVALID_FLOOR;


    return 1;
    }


    stock AddFloorToQueue(floorid)
    {
    // Adds 'floorid' at the end of the queue.


    // Scan for the first empty space:
    new slot = -1;
    for(new i; i < sizeof(ElevatorQueue); i ++)
    {
    if(ElevatorQueue[i] == INVALID_FLOOR)
    {
    slot = i;
    break;
    }
    }


    if(slot != -1)
    {
    ElevatorQueue[slot] = floorid;


    // If needed, move the elevator.
    if(ElevatorState == ELEVATOR_STATE_IDLE)
    ReadNextFloorInQueue();


    return 1;
    }


    return 0;
    }


    stock ResetElevatorQueue()
    {
    // Resets the queue.


    for(new i; i < sizeof(ElevatorQueue); i ++)
    {
    ElevatorQueue[i] = INVALID_FLOOR;
    FloorRequestedBy[i] = INVALID_PLAYER_ID;
    }


    return 1;
    }


    stock IsFloorInQueue(floorid)
    {
    // Checks if the specified floor is currently part of the queue.


    for(new i; i < sizeof(ElevatorQueue); i ++)
    if(ElevatorQueue[i] == floorid)
    return 1;


    return 0;
    }


    stock ReadNextFloorInQueue()
    {
    // Reads the next floor in the queue, closes doors, and goes to it.


    if(ElevatorState != ELEVATOR_STATE_IDLE || ElevatorQueue[0] == INVALID_FLOOR)
    return 0;


    Elevator_CloseDoors();
    Floor_CloseDoors(ElevatorFloor);


    return 1;
    }


    stock DidPlayerRequestElevator(playerid)
    {
    for(new i; i < sizeof(FloorRequestedBy); i ++)
    if(FloorRequestedBy[i] == playerid)
    return 1;


    return 0;
    }


    stock ShowElevatorDialog(playerid)
    {
    new string[512];
    for(new i; i < sizeof(ElevatorQueue); i ++)
    {
    if(FloorRequestedBy[i] != INVALID_PLAYER_ID)
    strcat(string, "{FF0000}");


    strcat(string, FloorNames[i]);
    strcat(string, "\n");
    }


    ShowPlayerDialog(playerid, DIALOG_ID, DIALOG_STYLE_LIST, "Elevator", string, "Accept", "Cancel");


    return 1;
    }


    stock CallElevator(playerid, floorid)
    {
    // Calls the elevator (also used with the elevator dialog).


    if(FloorRequestedBy[floorid] != INVALID_PLAYER_ID || IsFloorInQueue(floorid))
    return 0;


    FloorRequestedBy[floorid] = playerid;
    AddFloorToQueue(floorid);


    return 1;
    }


    stock Float:GetElevatorZCoordForFloor(floorid)
    return (GROUND_Z_COORD + FloorZOffsets[floorid] + ELEVATOR_OFFSET); // A small offset for the elevator object itself.


    stock Float:GetDoorsZCoordForFloor(floorid)
    return (GROUND_Z_COORD + FloorZOffsets[floorid]);

    also Linux ist kompeltt anders als Windows


    unter Linux kannst du keine Windows anwendungen ausführen.


    Daher musst du spezielle Software installieren


    Spiele kannste eig gleich vergessen :D


    //edit Orthografie

    Hallo Leute.


    Unsere Schule zieht grade um und da brauchen wir Geld.
    Unserer Förderverien hat aufgerufen auf einer Seite der ING-DiBa-bank zu voten.


    Bisher ist für den Umzug nur das Gebäude bezahlt und es fehlt aber noch die Einrichtung. Daher würde ich euch bitten für meine Schule zu voten.
    Ihr müsst nur eine Mailadresse eingeben und eine Mail dann bestätigen. Wenn ihr nett seit macht ihr bitte auch das 2 weitere male den jede Mail kann 3 mal Voten.


    https://verein.ing-diba.de/kin…eck-gymnasiums-cottbus-ev
    auf dieser Seite könnt ihr voten


    Ich danke euch im vorraus.



    Hier noch der Originale Aufruf: http://steenbeck-gymnasium.de/…oerderverein-des-msg.html


    Dieser Beitrag wurde von Julian genehmigt


    //edit Bankname korrigert
    //edit mehr Infos

    hey


    du musst deie Adresse reinschreiben und ch hab seit 1 Jahr ein Impressum mit meinen Namen und hab auch kein Brief bekommen :D


    brauchst keine Angst habe es ist nur für das Gesetz und Werbeags haben wieso kein iinteresse daran die haben deine adresse in großen servern wieso schon gespeichert ^^

    ich hab mein Beitrag editiert ich hab es verbessert ein bisscen müsste jetzt funktionieren


    @DruM vllt will er sein eigenes haben?


    //edit:

    Es klappt nun mit der VirtualWorld aber weißt du wie man vorne noch so eine Sirene anbringen kann ?


    ähm da hab ich kein quell text mehr aber versuch mal was mit attachobjecttovehicle oder so :D

    echt komisch :(
    Der Beitrag ist zu kurz. Der Beitrag muss mindestens 10 Zeichen lang sein und 3 Wörter enthalten.



    //edit versuch mal das hier:

    if (strcmp(cmd, "/supmobil", true) == 0)
    {
    if(HatSupmobil[playerid] != 0)
    {
    SendClientMessage(playerid,COLOR_RED,"Du hast bereist ein Supporterfahrzeug gespawnt!");
    return 1;
    }
    else
    {
    if(PlayerInfo[playerid][pAdmin] >= 1 || PlayerInfo[playerid][pSupporter] >= 1)
    {
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X,Y,Z);
    HatSupmobil[playerid] = CreateVehicle(480, X+3,Y+3,Z+3,0.0,160,160,60);
    SetVehicleVirtualWorld(HatSupmobil[playerid],GetPlayerVirtualWorld(playerid));
    SendClientMessage(playerid, COLOR_YELLOW, "Du hast dir ein Supportermobil gespawnt!");
    }
    else
    {
    SendClientMessage(playerid, COLOR_YELLOW, "Du kannst diesem Befehl nicht benutzen!!");
    }
    }
    return 1;
    }

    hier es hat noch -1 gefehlt :D



    if (strcmp(cmd, "/supmobil", true) == 0)
    {
    if(HatSupmobil[playerid] == 1)
    {
    SendClientMessage(playerid,COLOR_RED,"Du hast bereist ein Supporterfahrzeug gespawnt!");
    return 1;
    }
    else
    {
    if(PlayerInfo[playerid][pAdmin] >= 1 || PlayerInfo[playerid][pSupporter] >= 1)
    {
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X,Y,Z);
    CreateVehicle(480, X+3,Y+3,Z+3,0.0,160,160,60,-1);
    SendClientMessage(playerid, COLOR_YELLOW, "Du hast dir ein Supportermobil gespawnt!");
    HatSupmobil[playerid] = 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_YELLOW, "Du kannst diesem Befehl nicht benutzen!!");
    }
    }
    return 1;
    }

    hier nochmal ein gerückt



    if (strcmp(cmd, "/supmobil", true) == 0)
    {
    if(HatSupmobil[playerid] == 1)
    {
    SendClientMessage(playerid,COLOR_RED,"Du hast bereist ein Supporterfahrzeug gespawnt!");
    return 1;
    }
    else
    {
    if(PlayerInfo[playerid][pAdmin] >= 1 || PlayerInfo[playerid][pSupporter] >= 1)
    {
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X,Y,Z);
    CreateVehicle(480, X+3,Y+3,Z+3,0.0,160,160,60);
    SendClientMessage(playerid, COLOR_YELLOW, "Du hast dir ein Supportermobil gespawnt!");
    HatSupmobil[playerid] = 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_YELLOW, "Du kannst diesem Befehl nicht benutzen!!");
    }
    }
    return 1;
    }

    bei
    CreateVehicle(480, X+3,Y+3,Z+3,0.0,160,160,60);
    hattest du x,y,z klein geschrieben :D

    hier die lösung:


    if (strcmp(cmd, "/supmobil", true) == 0) { if(HatSupmobil[playerid] == 1) { SendClientMessage(playerid,COLOR_RED,"Du hast bereist ein Supporterfahrzeug gespawnt!"); return 1; } else { if(PlayerInfo[playerid][pAdmin] >= 1 || PlayerInfo[playerid][pSupporter] >= 1) { new Float:X, Float:Y, Float:Z; GetPlayerPos(playerid, X,Y,Z); CreateVehicle(480, X+3,Y+3,Z+3,0.0,160,160,60); SendClientMessage(playerid, COLOR_YELLOW, "Du hast dir ein Supportermobil gespawnt!"); HatSupmobil[playerid] = 1; } else { SendClientMessage(playerid, COLOR_YELLOW, "Du kannst diesem Befehl nicht benutzen!!"); } } return 1;}