Beiträge von ErikSon

    Was soll denn dort auch Großartiges passieren?
    Du hast dort kaum etwas gemacht, und auch nichts, bis auf die Message, das man richtig sehen kann..
    Setz dem Spieler den passenden Skin oder was auch immer dort noch passieren soll..


    Dachte du meintest die Funktion, die auch in dem Thread war ..
    Jedenfalls klappts nun, danke dir ! ;)

    Okay, aber wie gesagt, das Problem liegt daran, dass die Variable "Speed" einen Wert von 0 hat.


    Hier mal Log:
    [16:13:32] Speed: 0.000000
    [16:13:32] Speed: 0.000000
    [16:13:32] Speed: 0.000000
    [16:13:32] Speed: 0.000000
    [16:13:32] Speed: 0.000000
    [16:13:32] Speed: 0.000000
    [16:13:32] Speed: 0.000000
    [16:13:32] Speed: 0.000000
    [16:13:32] Speed: 0.000000
    [16:13:32] Speed: 0.000000
    [16:13:32] Speed: 0.000000
    [16:13:32] Speed: 0.000000
    [16:13:32] Speed: 0.000000
    [16:13:32] Speed: 0.000000
    [16:13:32] Speed: 0.000000
    [16:13:32] Speed: 0.000000
    [16:13:32] Speed: 0.000000
    [16:13:32] Speed: 0.000000
    [16:13:32] Speed: 0.000000
    [16:13:32] Speed: 0.000000
    [16:13:33] Speed: 0.000000
    [16:13:33] Speed: 0.000000
    [16:13:33] Speed: 0.000000
    [16:13:33] Speed: 0.000000
    //usw ;)


    Code:
    if(!IsPlayerInAnyVehicle(playerid) && Sprinted[playerid])
    {
    new Float:speed; GetPlayerSpeed(playerid,speed);
    printf("Speed: %f",GetPlayerSpeed(playerid,speed)); // auch -> "printf("Speed: %f",speed);" ausprobiert!
    if(speed >= 20.0 && speed <= 40.0){
    printf("Speed wird gesetzt");
    SetPlayerSpeed(playerid, 40.0, speed);
    }
    }

    Dann poste bitte den Code wie du ihn hast, wenn du den Code vor mir benutzt.


    if(!IsPlayerInAnyVehicle(playerid) && Sprinted[playerid])
    {
    new Float:speed; GetPlayerSpeed(playerid,speed);
    if(speed >= 38.0 && speed <= 40.0){ // Das ist ja klar, dass ich das bearbeitet habe..
    SetPlayerSpeed(playerid, 70.0, speed); // too
    }
    }


    //OnPlayerKey
    if(newkeys & KEY_SPRINT)Sprinted[playerid] = true;
    else Sprinted[playerid] = false;


    stock SetPlayerSpeed(playerid, Float:_speed, Float:_isspeed){
    if(playerid == INVALID_PLAYER_ID)return INVALID_PLAYER_ID;
    else if(IsPlayerNPC(playerid))return 1;
    else if(IsPlayerInAnyVehicle(playerid))return 1;
    else if(!Sprinted[playerid])return 1;
    new Float:x1, Float:y1, Float:z1, Float:a,Float:speed;
    GetPlayerVelocity(playerid, x1, y1, z1);
    GetPlayerFacingAngle(playerid, a);
    return SetPlayerVelocity(playerid, x1*(1+(1/(1+(_speed/_isspeed)))), y1*(1+(1/(1+(_speed/_isspeed)))), z1);
    }


    Wie ich schon sagte, mit der GetPlayerSpeed Funktion die ich dir gegeben habe, benenn die von mit aus um, zu GetPlayerSpeed2, wenn du schon eine GetPlayerSpeed Funktion hast. Dann wirst du sehen, dass es geht. Ich weiß ja nicht was für Werte deine GetPlayerSpeed-Funktion zurück gibt.


    Ähm...

    Aber wenn ich es genau so mache, wie du es mir gegeben hast


    Ich benutze den GANZEN Code von dir ..
    Es klappt nicht, wenn ichs so mache, "Speed" wird immer der Wert 0.0000 ( ist ja Float ) zugeteilt.

    Ja, und? Ist doch auch richtig so.


    Zum eigentlichen Problem: Das liegt daran, dass bei jedem OnPlayerUpdate die Geschwindigkeit wieder runtergesetzt wird, da der Spieler ja eigentlich nicht so schnell laufen kann. Wenn du es GENAU so machst wie ich es dir gegeben habe, auch mit der GetPlayerSpeed Funktion, dann geht es, mit kleinen Rucklern, aber er ist merklich schneller.


    Hmm.. Aber wenn ich es genau so mache, wie du es mir gegeben hast, dann wird "Speed" mit dem Wert 0 ausgegeben.
    Die Funktion "GetPlayerSpeed" hat nur einen Parameter, nämlich den, für die Player-ID.

    Hmm..
    Jetzt gibt er zwar an, dass die Geschwindigkeit erhöht wurde, jedoch merkt man nichts von..
    Und wenn ich die noch höher setzte genau so ;)
    Code ist so, wie du es gemacht hast, außer das:

    if(!IsPlayerInAnyVehicle(playerid) && Sprinted[playerid])
    {
    new Float:speed;
    GetPlayerSpeed(playerid, speed);
    if(speed > 20 && speed < 40)SetPlayerSpeed(playerid, 40.0, speed);
    }


    Das hab ich so:
    if(!IsPlayerInAnyVehicle(playerid) && Sprinted[playerid])
    {
    new Float:speed = GetPlayerSpeed(playerid);
    if(speed >= 38.0 && speed <= 40.0){
    SetPlayerSpeed(playerid, 70.0, speed); // Hier habe ich vieles versucht ( 50, 60, 70, .. )
    }
    }
    Die Funktion "GetPlayerSpeed" hat ja nur einen Parametet, der ist für die Player-ID.
    So sollte das mit der Speed-Festlegung doch auch gehen, oder?

    Hey,
    habe den Code angepasst und getestet..
    Jedoch sterbe ich jedes mal, wenn ich laufe.
    Habe den Code auch schon oft bearbeitet und es versucht, jedoch klappts nicht wirklich.


    Hier mal so, wie ich es geändert habe ( nur deinen Code bearbeitet :(
    stock SetPlayerSpeed(playerid, Float:_speed){
    if(playerid == INVALID_PLAYER_ID)return INVALID_PLAYER_ID;
    else if(IsPlayerNPC(playerid))return 1;
    else if(IsPlayerInAnyVehicle(playerid))return 1;
    else if(!Sprinted[playerid])return 1;
    new Float:x1, Float:y1, Float:z1, Float:a;
    GetPlayerVelocity(playerid, x1, y1, z1);
    GetPlayerZAngle(playerid, a);
    return SetPlayerVelocity(playerid, x1*202.0/_speed.0, y1*202.0/_speed.0, z1);
    }
    //OnPlayerKey
    if(newkeys & KEY_SPRINT)Sprinted[playerid] = true;
    else Sprinted[playerid] = false;
    //OnPlayerUpdate
    if(!IsPlayerInAnyVehicle(playerid) && Sprinted[playerid])
    {
    new speed = GetPlayerSpeed(playerid);
    if(speed > 40)SetPlayerSpeed(playerid,60.0);
    }
    Wie gesagt, habe es schon oft verändert..
    Wenn ich mir die km/h ausprinten lasse, kommt irgendwas mit 1 Mio+ raus..

    Sorry, habe vergessen zu erwähnen, bzw deutlichzuschreiben (wie auch immer das geschrieben wird), dass ich die Geschwindigkeit eines Spielers erhöhen will.. Deswegen auch "SetPLAYERSpeed", aber anscheinend sollte ich mich besser ausdrücken..


    Also dann nochmal von neu, ist das auch möglich?


    Ich würde eig nochmal versuchen, z.B. den Code von Jeffry umzuändern und es dann zu testen. Habe es schonmal mit einem anderen Code versucht, das klappte aber leider nicht. Koennte auch sein, dass ich etwas falsch gescriptet habe.


    Ich versuche es morgen einfach nochmal, falls es ueberhaupt moeglich ist.


    #Handy

    Gibt es eine FERTIGE Funktion, mit der man die Geschwindigkeit des Spielers erhöhen kann?
    Das heißt, ich kann sie per ( z.B. ) "SetPlayerSpeed(playerid,50)" erhöhen / sinken.
    Wäre nett, wenn mir jemand eine Funktion schicken / machen könnte, da ich mit dem Kram nicht klar komme, da
    man ja auch die "Facing-Angle" abfragen muss und das Ganze umrechnen ...

    Zitat

    stock IntToBool(int_value) return !!int_value;

    Das habe ich z.B. im Thread "Nützliche Codeschnipsel" gefunden.
    Meine Frage ist nun, was das "!!" nach dem Return bedeutet..


    Außerdem habe ich dort Codes mit Inhalten wie diesen gefunden:

    Zitat

    #define insert(%0,%1,%2,%3); \
    new char_buffer[(%1) + 1]; \
    format(char_buffer,%1,%2,%3); \strunpack(%0,char_buffer,%1);

    Wofür ist hier das "\"?



    #Handy

    Die Pfeiltasten + Numpad 2/8 werden nicht erkannt, also es wird nichts in der Konsole ausgegeben..
    Bei Numpad 2/8 steht folgendes im Wiki:

    Zitat

    Only detected when "JOYPAD" configuration is selected for controller.


    Geht das nicht auch anders?
    Die anderen Tasten, wie z.B. Z/H/N werden erkannt, jedoch kann ich die Tasten in meinem System nicht nutzen..
    Und warum funktionieren die Pfeiltasten/W/A/S/D nicht, also warum werden die nicht erkannt und ausgegeben?

    Das wird wohl an deiner if-abfrage liegen
    zum einen vergleicht man die bit-werte daher nutze den Bitoperator &.


    Aber darin besteht nicht das Problem sondern der wert mit dem KEY_ANALOG_DOWN definiert wurde ist eventuell nicht richtig oder das Callback wird nicht aufgerufen.


    Daher kannst du ja ein printf rein setzen in das Callback und dir newkeys ausgeben. Dann kennst du den Tastenwert vom Numpad 2 dieses kannst du ja nutzen zum vergleichen.


    Habe ich beides versucht, klappt jedoch nicht..
    Hier nochmal Codeausschnitt:
    else if(newkeys & KEY_ANALOG_DOWN) //Numpad 2 (Wird nicht aufgerufen)
    {
    if(Spieler[playerid][EObj] <= 0)return 1;
    new obj = Spieler[playerid][EObj];
    new Float:rx,Float:ry,Float:rz; GetDynamicObjectRot(Objekt[obj][o_obj],rx,ry,rz);
    SetDynamicObjectRot(Objekt[obj][o_obj],rx+0.5,ry,rz);
    printf("N2");
    return StopDynamicObject(Objekt[obj][o_obj]);
    }
    else if(newkeys & KEY_ANALOG_LEFT) //Numpad 4 (Wird aufgerufen)
    {
    if(Spieler[playerid][EObj] <= 0)return 1;
    new obj = Spieler[playerid][EObj];
    new Float:rx,Float:ry,Float:rz; GetDynamicObjectRot(Objekt[obj][o_obj],rx,ry,rz);
    SetDynamicObjectRot(Objekt[obj][o_obj],rx,ry,rz-0.5);
    printf("N4");
    return StopDynamicObject(Objekt[obj][o_obj]);
    }