Beiträge von maddinat0r

    Teile sie einfach auf.
    Die erste Hälfte der Zeile machst du mit format (sagen wir mit der Variable 'string1') und die zweite Hälfte genaus so (Variable 'string2').
    Danach machst du auch wieder format und packst die 2 Strings zusammen.
    Würde ca. so aussehen:
    format(string1,sizeof(string1),"Level: %d Geschlecht: %s",Level,Geschlecht);
    format(string2,sizeof(string2),"Alter: %d, Herkunft: %s",Alter,Herkunft);
    format(string,sizeof(string),"%s\n%s",string1,string2);

    Ein simpler Fehler, es muss ein '!' vor 'strcmp', und das immer, wenn du strings vergleichen willst.
    Denn wenn beide Strings gleich sind, returnt 'strcmp' 0, deshalb muss auch ein '!' vor strcmp hin.

    Ich schau mir erst gar nicht dieses Filterscript an, wo bleibt den sonst die Herausforderung? ;)
    Außerdem möcht ich noch mehr Sachen releasen (und zwar hier im deutschen SA-MP Forum).

    Deshalb musst du ja auch die Velocity vorher speichern und dann wieder setzen.
    Es gab mal ein Fliterscript, wo man mit den Numpad-Tasten sein Fahrzeug im Flug verwandeln konnte.
    Wenn ichs finde, editiere ich den Post mit dem Link, sollte ganz nützlich sein.


    //Edit:
    Gefunden :D
    Ist aus dem englischen SA-MP Forum.

    1. den Timer rauslöschen, OnPlayerUpdate ist ein Standard-Callback.
    2.
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if (newkeys & KEY_ACTION)
    {
    if(Tempomat[playerid] == 0)
    {
    new Float:vspeed[3];
    if(!IsPlayerInAnyVehicle(playerid)) return 0;
    SetPVarInt(playerid,"VehID",GetPlayerVehicleID(playerid));
    GetVehicleVelocity(GetPlayerVehicleID(playerid),vspeed[0],vspeed[1],vspeed[2]);
    SetPVarFloat(playerid,"vspeed_x",vspeed[0]);
    SetPVarFloat(playerid,"vspeed_y",vspeed[1]);
    Tempomat[playerid] = 1;
    SetPVarInt(playerid,"temp",1);
    }
    else
    {
    Tempomat[playerid] = 0
    SetPVarInt(playerid,"temp",0);
    }
    }
    return 1;
    }
    Bei Tastenabfragen NIE mit '==' abfragen sondern mit '&'!
    Du solltest die PVar "temp" auch auf 0 setzen, du hast ja sicher gesehen,
    dass die eine nicht allzu kleine Rolle bei OnPlayerUpdate spielt.


    //Edit:
    Tastenabfragen werden zwar schon mit '==' ingame funktionieren, aber
    wenn man diese Taste in Kombination mit einer anderen Taste drückt wird der Code
    nicht abgerufen, weil er ja nur aufgerufen wird, wenn auch wirklich NUR diese Taste gedrückt wird.
    Wenn du jedoch mit '&' abfrägst, "sucht" er sozusagen in der Variable nach der Taste.

    Eigentlich alles vom Fahrzeug abfragen was man nur abfragen kann, also Position, Rotation, Angle, Velocity.
    Dann das Auto löschen, neues Auto erstellen, den Spieler in das Auto setzen und die Velocity setzen.

    So, Bugs wurden gefixt (also der 1. und 4. Punkt ist erledigt).
    Jetzt setze ich mich daran, es dynamischer zu machen (also Entgeld für jeden Job anpassbar, mehrere Autos, usw.).
    Außerdem hat jetzt jeder Befehl ein "j" als Anfangsbuchstaben.
    Und das mit den mehreren Autos mache ich genau so wie Artus es gepostet hat.

    Parameter werden wohl nicht gehen, wird wohl nur gehen, wenn man eine best. Geschwindigkeit erreicht hat
    und den Befehl tippt.

    dcmd_temp(playerid,params[])
    {
    #pragma unused params
    new Float:vspeed[3];
    if(!IsPlayerInAnyVehicle(playerid)) return 0;
    SetPVarInt(playerid,"VehID",GetPlayerVehicleID(playerid));
    GetVehicleVelocity(GetPlayerVehicleID(playerid),vspeed[0],vspeed[1],vspeed[2]);
    SetPVarFloat(playerid,"vspeed_x",vspeed[0]);
    SetPVarFloat(playerid,"vspeed_y",vspeed[1]);
    SetPVarInt(playerid,"temp",1);
    return 1;
    }


    public OnPlayerUpdate(playerid)
    {
    if(IsPlayerInAnyVehicle(playerid) && (GetPVarInt(playerid,"temp") == 1))
    {
    SetVehicleVelocity(GetPVarInt(playerid,"VehID"),GetPVarFloat(playerid,"vspeed_x"),GetPVarFloat(playerid,"vspeed_y"),0.0);
    }
    return 1;
    }

    In der Theorie würde es vielleicht so aussehen.
    Man müsste dann nur bei OnPlayerKeyStateChange abfragen, ob der Spieler abbiegt und wenn ja, einfach die PVar's neu setzen.

    Also, erstmal die ganzen IsPlayerInRangeOfPoint's in ein Public packen:
    Oben im Script due Publics definieren:

    forward InteriorEnter(playerid);
    forward InteriorExit(playerid);


    Dann die Publics schreiben:

    public InteriorEnter(playerid)
    {
    if(IsPlayerInRangeOfPoint(playerid,3.0,-2424.8130,337.2221,37.0019))
    {
    SetPlayerPos(playerid,271.884979,306.631988,999.148437);
    SetPlayerInterior(playerid,2);
    return 1;
    }
    if(IsPlayerInRangeOfPoint(playerid,3.0,-1883.1982,865.5228,35.1719)) //Zip
    {
    SetPlayerPos(playerid,161.391006,-93.159156,1001.804687);
    SetPlayerInterior(playerid,18);
    return 1;

    }
    else
    if(IsPlayerInRangeOfPoint(playerid,3.0,-2026.4840,-101.0355,35.1641)) //Fahrschule
    {
    SetPlayerPos(playerid,-2029.798339,-106.675910,1035.171875);
    SetPlayerInterior(playerid,3);
    return 1;
    }
    else
    if(IsPlayerInRangeOfPoint(playerid,3.0,-2765.5942,375.7597,6.3359)) //Arbeitsamt
    {
    SetPlayerPos(playerid,384.808624,173.804992,1008.382812);
    SetPlayerInterior(playerid,3);
    return 1;
    }
    else
    if(IsPlayerInRangeOfPoint(playerid,3.0,-2442.7295,753.9190,35.1719)) //24/7 Eingang
    {
    SetPlayerPos(playerid,6.091179,-29.271898,1003.549438);
    SetPlayerInterior(playerid,10);
    return 1;
    }
    else
    if(IsPlayerInRangeOfPoint(playerid,3.0,-2650.0889,376.1048,6.1563)) //Bank groß
    {
    SetPlayerPos(playerid,833.269775,10.588416,1004.179687);
    SetPlayerInterior(playerid,3);
    return 1;
    }
    else
    if(IsPlayerInRangeOfPoint(playerid,3.0,-1816.4424,617.5515,35.1719)) //Clucking
    {
    SetPlayerPos(playerid,369.579528,-4.487291,1001.858886);
    SetPlayerInterior(playerid,9);
    return 1;
    }
    else
    if(IsPlayerInRangeOfPoint(playerid,3.0,1319.2622,1250.9506,10.8203)||IsPlayerInRangeOfPoint(playerid,3.0,1685.6200,-2334.0400,13.5469)||IsPlayerInRangeOfPoint(playerid,3.0,-1262.1936,40.0042,14.1392)) //Flughafen
    {
    SetPlayerPos(playerid,-1827.147338,7.207417,1061.143554);
    SetPlayerInterior(playerid,14);
    return 1;
    }
    else
    SendClientMessage(playerid,ROT,"Hier befindet sich kein Eingang!");
    return 1;

    }
    public InteriorExit(playerid)
    {
    if(IsPlayerInRangeOfPoint(playerid,3.0,271.884979,306.631988,999.148437))//Hotel
    {
    SetPlayerPos(playerid,-2424.8130,337.2221,37.0019);
    SetPlayerInterior(playerid,0);
    return 1;
    }
    if(IsPlayerInRangeOfPoint(playerid,3.0,161.391006,-93.159156,1001.804687)) //Zip
    {
    SetPlayerPos(playerid,-1883.1982,865.5228,35.1719);
    SetPlayerInterior(playerid,0);
    return 1;
    }
    else
    if(IsPlayerInRangeOfPoint(playerid,3.0,-2029.798339,-106.675910,1035.171875)) //Fahrschule
    {
    SetPlayerPos(playerid,-2026.4840,-101.0355,35.1641);
    SetPlayerInterior(playerid,0);
    return 1;
    }
    else
    if(IsPlayerInRangeOfPoint(playerid,3.0,384.808624,173.804992,1008.382812)) //Arbeitsamt
    {
    SetPlayerPos(playerid,-2765.5942,375.7597,6.3359);
    SetPlayerInterior(playerid,0);
    return 1;
    }
    else
    if(IsPlayerInRangeOfPoint(playerid,3.0,6.091179,-29.271898,1003.549438)) //24/7 Eingang
    {
    SetPlayerPos(playerid,-2442.7295,753.9190,35.1719);
    SetPlayerInterior(playerid,0);
    return 1;
    }
    else
    if(IsPlayerInRangeOfPoint(playerid,3.0,833.269775,10.588416,1004.179687)) //Bank groß
    {
    SetPlayerPos(playerid,-2650.0889,376.1048,6.1563);
    SetPlayerInterior(playerid,0);
    return 1;
    }
    else
    if(IsPlayerInRangeOfPoint(playerid,3.0,369.579528,-4.487291,1001.858886)) //Clucking
    {
    SetPlayerPos(playerid,-1816.4424,617.5515,35.1719);
    SetPlayerInterior(playerid,0);
    return 1;
    }
    else
    SendClientMessage(playerid,ROT,"Hier befindet sich kein Ausgang!");
    return 1;


    }


    Und letztendlich den Rest mit den Tasten unter OnPlayerKeyStateChange:

    if((newkeys & KEY_SECONDARY_ATTACK) && !(IsPlayerInAnyVehicle(playerid)))
    {
    if(GetPlayerInterior(playerid) == 0) InteriorEnter(playerid);
    else InteriorExit(playerid);
    }

    Code ist aus dem Stegreif, sollte was nicht funktionieren, bescheid sagen.