[Wunsch]RC Panzer feuern

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 habe ne Idee, leider kann ich sie nicht selber umsetzen. Wäre nett, wenn mir jemand n bissl helfen könnte.


    Nun zur Idee:
    Wenn man in einem RC Panzer ist (ID 564), dann kann man mit der Linken Maustaste schiessen. Dann wird so 10 m vor ihm auf gleicher Höhe eine explosioen Createt (ID 12, Radius: 10). Dann wird er für eine hunderststel Sekunde gefreest so das man das Gefühl hat es hätte ein bischen zurück gedrückt. (Dann wird er langsamer). Dann sollte es eine Nachladezeit von ca 2 Sek's geben bevor man wieder feuern kann.


    Wäre das möglich?


    Könnte jemand evtl einen Code posten?


    MFG Fabian95qw. Danke im vorraus.

    Meine Werke


    Minecraft Signatur Buggt



    Sowas wie 10/10 gibt es nicht. Ausser bei Satan

    Einmal editiert, zuletzt von Fabian95qw ()

  • omg, hör doch mal bitte auf immer zu editieren, du hast am Text auch rein garnichts geändert! :pinch:
    Dir wird keiner schneller helfen können, wenn du alles pushst.
    Auserdem wird dir das denke ich kaum jemand machen, da du es selbst machen sollst um es zu lernen, bzw. du machst dich sonst zum Faulen-Sack :thumbup:
    Nee echt mal, hör aud zu pushen, warte es ab, oder mach' es lieber selbst :whistling:

  • Ich kann es nicht lernen, wenn ich es nicht verstehe. Verstehst du das? Ich frage auch nie im Forum nach, bevor ich im Wiki war.
    Also ich hab den Titel geändert und Schreibfehler korrigiert. Ich mag es nicht, wenn etwas falsch geschrieben ist. Da kann ich nix für!



    //edit: Habs mal selber versucht.


    Spoiler anzeigen
    #include <a_samp>

    Spoiler anzeigen
    forward ExpCreate();

    Spoiler anzeigen
    new keydown[MAX_PLAYERS] = {false, ...};
    new expid[MAX_PLAYERS] = {-1, ...};

    Spoiler anzeigen
    public OnFilterScriptInit() {
    print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    print("RC Panzer Filterscript loaded");
    print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    SetTimer("ExpCreate", 100, 1);
    }

    Spoiler anzeigen
    stock GetVehicleWithinDistance(playerid, Float:x1, Float:y1, Float:z1, Float:dist, &veh)
    {
    for (new i = 1; i < MAX_VEHICLES; i++)
    {
    if (GetVehicleModel(i) = 564)
    {
    if (GetPlayerVehicleID(playerid) != i)
    {
    new Float:x, Float:y, Float:z;
    new Float:x2, Float:y2, Float:z2;
    GetVehiclePos(i, x, y, z);
    x2 = x1 - x; y2 = y1 - y; z2 = z1 - z;
    new Float:vDist = (x2*x2+y2*y2+z2*z2);
    new Float:oldx, Float:oldy, Float:oldz;
    new Float:newx, Float:newy, Float:newz;

    Spoiler anzeigen
    GetVehiclePos(i, oldx, oldy, oldz);
    GetVehiclePos(i, newx, newy, newz);
    expx = oldx - newx; expy = oldy - newy; expz = oldz - newz;

    Spoiler anzeigen
    if (vDist < dist)
    {
    veh = i;
    dist = vDist;
    }
    }

    Spoiler anzeigen
    public ExpCreate()
    {
    new Key1,Key2,Key3;
    new Float:px,Float:py,Float:pz;
    for (new i; i < MAX_PLAYERS; i++)
    {
    if (IsPlayerConnected(i))
    {
    GetPlayerPos(i,px,py,pz);
    GetPlayerKeys(i,Key1,Key2,Key3);
    if (Key1 & KEY_ACTION)
    {
    if (GetPlayerState(i) == PLAYER_STATE_DRIVER)
    {
    if (!keydown[i])
    {
    keydown[i] = 1;
    if (expid[i] == -1)
    {
    pz += 0.5;
    expid[i] = CreateExplosion(expx+oldx, expy+oldy, expz+oldz ,12, 10);
    }
    }
    }
    }
    else keydown[i] = 0;
    }
    }
    }

    Kann das so überhaupt funktionieren?


    //edit2: Habs getestet es funktioniert nicht.


    //edit3: Hab ne neue Art. Leider funktioniert sie immer noch nicht. (An dieser Stelle danke an [NSG]Bright für seine hilfe



    #include <a_samp>


    #define DISTANCE 50.0
    main()
    {
    print("----------------------------------");
    print(" RC Schussscript");
    print("----------------------------------");
    }


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    new Float: X, Float: Y, Float: Z, Float: A;
    if(newkeys == KEY_FIRE)
    {
    if (GetPlayerVehicleID(playerid) == 564)
    {
    GetXYInFrontOfPlayer(playerid, X, Y, Z, A);
    CreateExplosion(X, Y, Z, 6, 10.0);
    return 1;
    }
    }
    return 1;
    }



    stock GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, &Float:z, &Float:a)
    {
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid, a);
    if (GetPlayerVehicleID(playerid))
    {
    GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
    }
    x += (DISTANCE * floatsin(-a, degrees));
    y += (DISTANCE * floatcos(-a, degrees));
    }


    //edit 4: Es funktioniert immer noch nicht

    Meine Werke


    Minecraft Signatur Buggt



    Sowas wie 10/10 gibt es nicht. Ausser bei Satan

    5 Mal editiert, zuletzt von Fabian95qw ()


  • #include <a_samp>


    /*main() // Das sollte doch nur im Gamemode sein D:
    {
    print("----------------------------------");
    print(" RC Schussscript");
    print("----------------------------------");
    }*/


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys == KEY_FIRE)
    {
    if (GetVehicleModel(GetPlayerVehicleID(playerid)) == 564)
    {
    new Float: x, Float: y, Float: z, Float: a;
    GetXYInFrontOfPlayer(playerid, x, y, z, a, 50.0);
    CreateExplosion(x, y, z, 6, 10.0);
    return 1;
    }
    }
    return 1;
    }



    stock GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, &Float:z, &Float:a, Float:distance)
    {
    if(GetPlayerPos(playerid, x, y, z))
    {
    if(IsPlayerInAnyVehicle(playerid))
    GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
    else
    GetPlayerFacingAngle(playerid, a);


    x += (distance * floatsin(-a, degrees));
    y += (distance * floatcos(-a, degrees));
    return 1;
    }
    return 0;
    }