Beiträge von BattleMaster

    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    new akveh = GetPlayerVehicleID(playerid);
    if(GetPlayerState(playerid) == 2)
    {
    if(motors[akveh] == 0)
    {
    if(newkeys == KEY_CROUCH)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    if(IsPlayerConnected(playerid))
    {
    startmotor(akveh,playerid);
    }
    }
    }
    }
    else if(motors[akveh] == 1)
    {
    if(newkeys == KEY_CROUCH)
    {
    if(GetPlayerState(playerid) == 2)
    {
    stopmotor(akveh,playerid);
    }
    }
    }
    }
    }


    Der Motor lässt sich starten. Abschaltet auch nicht. Doch wenn ich die Taste zum abschalten während des Aussteigens drücke geht es irgentwie??? ?(

    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys == KEY_CROUCH)
    {
    if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == 2)
    {
    if(IsPlayerConnected(playerid))
    {
    new akveh = GetPlayerVehicleID(playerid);
    if(motors[akveh] == 0)
    {
    startmotor(akveh,playerid);
    }
    else if(motors[akveh] == 1)
    {
    stopmotor(akveh,playerid);
    }
    }
    }
    }
    return 1;
    }


    Hier habe ich ein Problem: Ich kann den Motor mit C starten, doch wenn ich nochmal drücke geht er nicht aus.

    Kann mir jemand erklären wie so nen Autohändler aufgebaut sein muss oder wie das Funktioniert. Ich wollte das mal programmieren, weis aber nicht wie ich das genau anstelle. Ein fertiges FS möchte ich aber nicht benutzen.

    Hallo,


    ich habe einen Geldautomaten im 24/7 positioniert. Ich habe die id 2781 benutzt die es sein müsste.
    Doch im Spiel kommt so ein anderer Geldautomat und ganz in grau.


    CreateObject(2781, -22.8382,-91.3617,1003.5469, 0.0000, 0.0000, 0.0000);


    Gibt es da noch nen anderen Geldautomaten wo auch 24/7 atm oder so draufsteht. Im Wiki von sa-mp.com find ich nur den mit der id 2781.

    Iwie geht das nicht. Wenn ich drauf fahre geht nur das pickup weg.


    if(pickupid == drive1 || pickupid == drive2 || pickupid == drive3 || pickupid == drive4)
    {
    if(GetPlayerState(playerid) == 2 && drivet[playerid] == 0)
    {
    drivet[playerid] = 1;
    TogglePlayerControllable(playerid, 0);
    ShowMenuForPlayer(drivein,playerid);
    }
    else if(GetPlayerState(playerid) == 3 && drivet[playerid] == 0)
    {
    drivet[playerid] = 1;
    TogglePlayerControllable(playerid, 0);
    ShowMenuForPlayer(drivep,playerid);
    }
    }


    drive1 = CreatePickup ( 1239, 14, 1215.1074,-906.4305,42.7768 );
    drive2 = CreatePickup ( 1239, 14, 800.4473,-1629.9810,13.2578 );
    drive3 = CreatePickup ( 1239, 14, -2351.2710,-156.7998,35.195 );
    drive4 = CreatePickup ( 1239, 14, -2347.0488,1023.5015,50.4223 );

    Bei mir funktionier das ganze so:


    Am DriveIN ist ein Pickup ohne Funktion damit man weis, dass dort was ist.


    In einem Timer, der jede Sekunde ausgelöst wird wird gecheckt ob sich der Spieler in dem Radius befindet.
    Falls man in dem Radius ist wird eine Variable, die für den Radius check auf 0 sein muss auf 1 gestellt und das Menu wird geöffnet.
    Bis dort gehts immer. In diesem Menu kann man andere Menus auswählen wie z.b. "Burger" oder "Getränke". Bei Leertaste wird das
    Menu ausgeblendet (Hide) und das neue mit z.B. den Getränken wird geöffnet (Show). Diese Untermenus gehen leider nicht immer und die
    Spieler bleiben eingefroren(conrollable meine ich). Wenn es dann selten mal funktionier nimmt man z.b. den "Cheeseburger". Dabei wird der Bürger und so
    ausgegeben und Geld abgezogen -> controllable auf 1 und ein timer der ohne repeat läuft wird nach 8 sek betätigt, die eine variable geht auf 0 womit der DriveIN wieder geht.


    Hab ich da vllt irgentwas falsch gemacht?

    Ist unter Linux ein Bug bekannt, welches ein Menu nicht immer öffnet? Lokal bei mir (Windows) geht mein DriveIN Script immer ohne Fehler. Doch auf dem Linux Server geht manchmal das Menu nicht auf. Wenn ich Code schreiben soll sagt bescheid.

    Ich habe für meinen Reallife Server einen DriveIN für die Bürgershots programmiert. Auf meinen Rechner (Windows) geht alles ohne Probleme. Doch auf den Linux V-Server
    geht das Menu nicht immer.


    So wird das Menu ausgelöst:
    if(GetPlayerState(i) == 2 && PlayerToPoint(5.2,i,1215.1074,-906.4305,42.7768) && drivet[i] == 0 || GetPlayerState(i) == 2 && PlayerToPoint(5.2,i,800.4473,-1629.9810,13.2578) && drivet[i] == 0 || GetPlayerState(i) == 2 && PlayerToPoint(5.2,i,-2351.2710,-156.7998,35.1953) && drivet[i] == 0 || GetPlayerState(i) == 2 && PlayerToPoint(5.2,i,-2347.0488,1023.5015,50.4223) && drivet[i] == 0) {
    drivet[i] = 1;
    TogglePlayerControllable(i, 0);
    ShowMenuForPlayer(drivein,i);
    }
    Das ist in einem Timer drin der jede Sekunde ausgelöst wird. Bis dahin geht soweit alles. Dieses Menu geht auf.




    Das Menu (Ausschnitt):
    if(CurrentMenu == drivein)
    {
    switch(row)
    {
    case 0: //BURGER
    {
    HideMenuForPlayer(drivein,playerid);
    ShowMenuForPlayer(driveb,playerid);


    HideMenuForPlayer wird immer ausgeführt. Doch ShowMenu nicht immer (jedenfalls auf dem Linux).


    DRIVEB Menu:
    if(CurrentMenu == driveb)
    {
    switch(row)
    {
    case 0: //CHEESEBURGER
    {
    if(money2 > 3) {
    SendClientMessage(playerid, COLOR_WHITE, "* Du hast dir einen Cheeseburger für $3 gekauft.");
    GivePlayerMoney(playerid,-3);
    PlayerPlaySound(playerid, 1054, 0.0, 0.0, 0.0);
    SetPlayerHealth(playerid, php+30.0);
    SetTimerEx("driveintimer",8000,false,"d",playerid);
    TogglePlayerControllable(playerid, 1);
    } else {
    PlayerPlaySound(playerid, 1055, 0.0, 0.0, 0.0);
    SendClientMessage(playerid, COLOR_WHITE, "Du hast nicht genug Geld für einen Cheeseburger.");
    SetTimerEx("driveintimer",8000,false,"d",playerid);
    TogglePlayerControllable(playerid, 1);
    }
    }
    Nur CASE 0 sonst wird das hier zu lang.

    Ich habe nun eine Funktion gebastelt, die ich vor jedem Gametext setzte, wo man im Auto sitzt.
    Bei dieser Funktion gebe ich einen Zeit und Spielerid parameter ein.
    Tank + KMH Anzeige wird für diese Zeit ausgeschaltet. Danach autom. wieder ein wenn der Gametext weg ist.