Habe gescriptet, dass Hydra schneller fliegt funkt aber net

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo,
    ich hab was gescriptet damit die Hydra schneller fliegt aber dies funkt leider net.

    forward Hydrageschwindigkeit();
    forward Hydrageschwindigkeit2();
    new hydrax, hydray, hydraz, hydrax2, hydray2, hydraz2;


    public Hydrageschwindigkeit()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    GetVehiclePos(GetPlayerVehicleID(i), hydrax, hydray, hydraz);
    SetTimer("Hydrageschwindigkeit2", 1000, true);
    }
    }


    public Hydrageschwindigkeit2()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    GetPlayerPos(i, hydrax2, hydray2, hydraz2);
    SetVehicleVelocity(GetPlayerVehicleID(i), hydrax - hydrax2 * 10, hydray - hydray2 * 10, 0);
    }
    }


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(GetVehicleModel(vehicleid) == 520)
    {
    SendClientMessage(playerid, COLOR_RED, "Vorsicht: Die Hydra ist schneller als in anderen Servern!");
    SetTimer(Hydrageschwindigkeit, 1000, true);
    }
    }


    EDIT: Wenn cih in ne Hydra eingestiegen bin kam World bounders darum hab ich das aus EnterVehicle in den befehl /motor rein getan dann sit das Problem weg aber die Hydra wird dann net schneller
    Weiß niemand warum der boost net geht?

    2 Mal editiert, zuletzt von Tom_Sunder ()

  • Der Wert wie schnell eine Hydra fliegt ist in der gta_sa.exe hardcoded.
    Ist glaube ich nicht möglich das per PAWN zu verändern ^^

    Es ist möglich. Du kannst z.B. Deinen Infernus 20.000km/h fahren lassen.
    @Threadersteller: Such mal nach "SetVehicleSpeed". Die Funktion existiert nicht, wurde aber von jemandem mal programmiert.


  • stock SetVehicleSpeed(vehicleid, Float:speed)
    {
        new Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2, Float:a;
        GetVehicleVelocity(vehicleid, x1, y1, z1);
        GetVehiclePos(vehicleid, x2, y2, z2);
        GetVehicleZAngle(vehicleid, a); a = 360 - a;
        x1 = (floatsin(a, degrees) * (speed/100) + floatcos(a, degrees) * 0 + x2) - x2;
        y1 = (floatcos(a, degrees) * (speed/100) + floatsin(a, degrees) * 0 + y2) - y2;
        SetVehicleVelocity(vehicleid, x1, y1, z1);
    }
    Benutzen kannst du die Funktion mit SetVehicleSpeed(ID,Speed);


    Quelle: sa-mp.com


  • Wird das auch wiederholt?


    Ich hab jetzt einen Command damit gemacht aber viele Warns:

    dcmd_hboost(playerid,params[])
    {
    4727 new Geschwindigkeit;
    if(sscanf(params,"i", Geschwindigkeit)) { return SendClientMessage(playerid,COLOR_RED,"Benutze: /hboost [Anzahl die mit der momentanigen Geschwindigkeit mal gerechnet wird"); }
    {
    if(GetVehicleModel(playerid) == 520)
    {
    4732 if(Geschwindigkeit > 20) { return SendClientMessage(playerid, COLOR_RED, "Die maximale Anzahldie mit der Geschwindigkeit multipliziert wird beträgt 20!"); }
    {
    4734 if(pInfo[playerid][fraktion] = 3)
    {
    4736 SetVehicleSpeed(GetPlayerVehicleID(playerid), Geschwindigkeit);
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Nur Mitglieder der Army dürfen diesen Boost benützen, da diese gut ausgebildet sind!");
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du musst in einer Hydra sitzen!");
    }
    }
    }


    C:\Users\Timo\Desktop\Script\gamemodes\script.pwn(4727) : warning 219: local variable "Geschwindigkeit" shadows a variable at a preceding level
    C:\Users\Timo\Desktop\Script\gamemodes\script.pwn(4732) : warning 213: tag mismatch
    C:\Users\Timo\Desktop\Script\gamemodes\script.pwn(4732) : warning 205: redundant code: constant expression is zero
    C:\Users\Timo\Desktop\Script\gamemodes\script.pwn(4734) : warning 211: possibly unintended assignment
    C:\Users\Timo\Desktop\Script\gamemodes\script.pwn(4736) : warning 213: tag mismatch
    C:\Users\Timo\Desktop\Script\gamemodes\script.pwn(4727) : warning 203: symbol is never used: "Geschwindigkeit"
    C:\Users\Timo\Desktop\Script\gamemodes\script.pwn(4727 -- 4749) : warning 209: function "dcmd_hboost" should return a value

    2 Mal editiert, zuletzt von Tom_Sunder ()

  • Du musst Geschwindigkeit einen neuen Namen zuweisen, da es im Script schon mal verwendet wird.


    Hab nun alles richtig. Aber ich glaube das wird net wiederholt wenn ich es so mach:



    dcmd_hboost(playerid,params[])
    {
    new HGeschwindigkeit;
    if(sscanf(params,"i", HGeschwindigkeit)) { return SendClientMessage(playerid,COLOR_RED,"Benutze: /hboost [Anzahl die mit der momentanigen Geschwindigkeit mal gerechnet wird"); }
    {
    if(GetVehicleModel(playerid) == 520)
    {
    if(HGeschwindigkeit > 20) { return SendClientMessage(playerid, COLOR_RED, "Die maximale Anzahldie mit der Geschwindigkeit multipliziert wird beträgt 20!"); }
    {
    if(pInfo[playerid][fraktion] == 3)
    {
    SetVehicleSpeed(GetPlayerVehicleID(playerid), HGeschwindigkeit);
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Nur Mitglieder der Army dürfen diesen Boost benützen, da diese gut ausgebildet sind!");
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du musst in einer Hydra sitzen!");
    }
    }
    return 1;
    }



    stock SetVehicleSpeed(vehicleid, Float:speed)
    {
    new Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2, Float:a;
    GetVehicleVelocity(vehicleid, x1, y1, z1);
    GetVehiclePos(vehicleid, x2, y2, z2);
    GetVehicleZAngle(vehicleid, a); a = 360 - a;
    x1 = (floatsin(a, degrees) * (speed/100) + floatcos(a, degrees) * 0 + x2) - x2;
    y1 = (floatcos(a, degrees) * (speed/100) + floatsin(a, degrees) * 0 + y2) - y2;
    SetVehicleVelocity(vehicleid, x1, y1, z1);
    }

  • Über der letzten Klammer noch ein return 1;.
    Die Abfrage sollte so lauten: if(pInfo[playerid][fraktion] == 3)


    Danke hab cih gerade selbst bemerkt.
    Ich glaube das wird net wiederholt oder?

    dcmd_hboost(playerid,params[])
    {
    new HGeschwindigkeit;
    if(sscanf(params,"i", HGeschwindigkeit)) { return SendClientMessage(playerid,COLOR_RED,"Benutze: /hboost [Anzahl die mit der momentanigen Geschwindigkeit mal gerechnet wird"); }
    {
    if(GetVehicleModel(playerid) == 520)
    {
    if(HGeschwindigkeit > 20) { return SendClientMessage(playerid, COLOR_RED, "Die maximale Anzahldie mit der Geschwindigkeit multipliziert wird beträgt 20!"); }
    {
    if(pInfo[playerid][fraktion] == 3)
    {
    SetVehicleSpeed(GetPlayerVehicleID(playerid), HGeschwindigkeit);
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Nur Mitglieder der Army dürfen diesen Boost benützen, da diese gut ausgebildet sind!");
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du musst in einer Hydra sitzen!");
    }
    }
    return 1;
    }



    stock SetVehicleSpeed(vehicleid, Float:speed)
    {
    new Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2, Float:a;
    GetVehicleVelocity(vehicleid, x1, y1, z1);
    GetVehiclePos(vehicleid, x2, y2, z2);
    GetVehicleZAngle(vehicleid, a); a = 360 - a;
    x1 = (floatsin(a, degrees) * (speed/100) + floatcos(a, degrees) * 0 + x2) - x2;
    y1 = (floatcos(a, degrees) * (speed/100) + floatsin(a, degrees) * 0 + y2) - y2;
    SetVehicleVelocity(vehicleid, x1, y1, z1);
    }


    Wenn es net wiederholt wird: Kann mir wer machen dass es solange wiederholt wird bis man aussteigt? Klappt bei mir net hab cihs chon versucht