[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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

  • stock WaffenlagerVerstecken(playerid)
    {
    PlayerTextDrawHide(playerid, HintereBox[playerid]);
    PlayerTextDrawHide(playerid, Waffenlager[playerid]);
    PlayerTextDrawHide(playerid, Beenden[playerid]);
    PlayerTextDrawHide(playerid, Bestand[playerid]);
    PlayerTextDrawHide(playerid, Waffe1[playerid]);
    PlayerTextDrawHide(playerid, Waffe2[playerid]);
    PlayerTextDrawHide(playerid, Waffe3[playerid]);
    PlayerTextDrawHide(playerid, Waffe4[playerid]);
    PlayerTextDrawHide(playerid, Waffe5[playerid]);
    PlayerTextDrawHide(playerid, Waffe6[playerid]);
    PlayerTextDrawHide(playerid, Waffe7[playerid]);
    PlayerTextDrawHide(playerid, Waffe8[playerid]);
    PlayerTextDrawHide(playerid, Waffe9[playerid]);
    PlayerTextDrawHide(playerid, Waffe10[playerid]);
    PlayerTextDrawHide(playerid, Waffe11[playerid]);
    PlayerTextDrawHide(playerid, Waffe12[playerid]);
    CancelSelectTextDraw(playerid);
    return 1;
    }



    stock WaffenlagerZeigen(playerid)
    {
    PlayerTextDrawShow(playerid, HintereBox[playerid]);
    PlayerTextDrawShow(playerid, Waffenlager[playerid]);
    PlayerTextDrawShow(playerid, Bestand[playerid]);
    PlayerTextDrawShow(playerid, Beenden[playerid]);
    SelectTextDraw(playerid, 0x00FF00FF);
    return 1;
    }

    Mit freundlichen Grüßen,
    Dachdecker

    • Offizieller Beitrag

    @Kaliber


    Soweit habe ich nun herausgefunden, dass es 100% an ErrorText liegt. Die Abfrage funktioniert, ohne ErrorText.
    Wenn ich innerhalb meines Befehls ErrorText neu definiere (ohne sie davor zurückzusetzen) erhalte ich folgende Meldung:
    warning 201: redefinition of constant/macro (symbol "ErrorText")


    Was ja klar ist. Aber immerhin läuft der Compiler durch.

  • Ich habe folgende Fehler:



    D:\Script Server\Sc\gamemodes\Selfmade.pwn(1462) : warning 204: symbol is assigned a value that is never used: "OFYBSchutzweste"
    D:\Script Server\Sc\gamemodes\Selfmade.pwn(1461) : warning 204: symbol is assigned a value that is never used: "OFYBDeagle"
    D:\Script Server\Sc\gamemodes\Selfmade.pwn(1460) : warning 204: symbol is assigned a value that is never used: "OFYBShotgun"
    D:\Script Server\Sc\gamemodes\Selfmade.pwn(1459) : warning 204: symbol is assigned a value that is never used: "OFYBTec9"
    D:\Script Server\Sc\gamemodes\Selfmade.pwn(1458) : warning 204: symbol is assigned a value that is never used: "OFYBUzi"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase




    5 Warnings.


    Ich nutze aber jeden dieser Variablen zweimal sogar.



    OFYBMP5 = dini_Int(path, "MP5" );
    OFYBUzi = dini_Int(path, "Uzi" );
    OFYBTec9 = dini_Int(path, "Tec9" );
    OFYBShotgun = dini_Int(path, "Shotgun" );
    OFYBDeagle = dini_Int(path, "Deagle" );
    OFYBSchutzweste = dini_Int(path, "Schutzweste");
    //_______________________________________________________________________________________________________________//
    dini_IntSet(path, "MP5" , OFYBMP5+FYBMP5);
    dini_IntSet(path, "Uzi" , OFYBMP5+FYBUzi);
    dini_IntSet(path, "Tec9" , OFYBMP5+FYBTec9);
    dini_IntSet(path, "Shotgun" , OFYBMP5+FYBShotgun);
    dini_IntSet(path, "Deagle" , OFYBMP5+FYBDeagle);
    dini_IntSet(path, "Schutzweste" , OFYBMP5+FYBSchutzweste);


    Kann mir das jemand erklären?

    Mit freundlichen Grüßen,
    Dachdecker


  • Du erstellst eine Variable aber benutzt sie nicht.


    Ich denke mal der untere Teil sollte eigentlich so aussehen:

    dini_IntSet(path, "MP5", OFYBMP5+FYBMP5);
    dini_IntSet(path, "Uzi", OFYBUzi+FYBUzi);
    dini_IntSet(path, "Tec9", OFYBTec9+FYBTec9);
    dini_IntSet(path, "Shotgun", OFYBShotgun+FYBShotgun);
    dini_IntSet(path, "Deagle", OFYBDeagle+FYBDeagle);
    dini_IntSet(path, "Schutzweste", OFYBSchutzweste+FYBSchutzweste);

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Moin ein grosses Problem^^


    Habe mein Pickupsystem


    Folgende Pickuptypen definiert







    C
    #define NUM_ACTORS 200
    #define NUM_WEAPONS 5000
    
    
    new ActorPickups[NUM_ACTORS];
    new WeaponPickups[NUM_WEAPONS];
    new InfoPickups[sizeof(PlayerInfoPickups)];
    new MoneyPickups[MAX_PICKUPS-sizeof(ActorPickups)-sizeof(InfoPickups)-sizeof(WeaponPickups)-1];


    1 Funktion um Random Weapon Pickups zu erstellen, und eine um Random Geldpickups zu erstellen ( letzteres funktioniert aktuell problemlos)




    Hier wird jede 20ms ein Pickup generiert von beiden Typen, eine Random Waffe.


    Meine OnPlayerPickUp Callback



    Problem ist jetzt: Wie weiss ich welchen Weapontyp bzw. Pickuptyp ich genau habe? Ich speicher ja unabhaengig vom Waffentyp, (WEAPONTYPE_M4, WEAPONTYPE_AK47)... alles in einem Array WeaponPickups mit Index PickupCounter (damit max. NUM_WEAPONS Pickups generiert werden)


    Wie kann ich jetzt einen Weg finden, wenn der Spieler ein Pickup mit Pickup ID aus dem Array WeaponPickups aufsammelt, der entsprechende Waffentyp noch bei rauskommt?
    Brauche ich dazu noch ein extra Array?



    Hier der Teil wo ich nicht weiter weiss wie ich das loesen kann, markiert mit Fragezeichen



    Ich will halt umgehen fuer jede Waffe ein einzelnes Array machen zu muessen


    Oder ist vielleicht ein multidimensionales Array sinnvoll, indem ich Pickuptyp und ID speichere und eventuell noch Munition die der Spieler bekommen soll beim aufsammeln?

    2 Mal editiert, zuletzt von Sub Royal ()

  • Wie kann man eig jemanden auf dem Boden liegen lassen z.B mit eine Animation
    also wenn der Spieler jetzt 5 hp hat soll er auf den Boden liegen bleiben aber keine Befehle
    nutzen können wie z.B ins Auto Einsteigen können etc. Ein System habe ich aber das mit der
    Animation klappt nicht der Spieler kann trotzdem ins Auto einsteigen.
    FreezePlayer bringt auch nichts da der Spieler dann auch nicht angeschossen werden kann und auch keine Anim nutzt

  • Hätte ich ihm auch vorgeschlagen allerdings kann der Spieler dann keinen Dmg nehmen.


    Es gibt ja glaub ich Animationen bei denen man am Boden liegt und sich nur mit der Springen-Taste aus der Animation befreien kann oder? Du könntest einen Timer machen oder eine Tastenabfrage um zu erkennen ob/wann der Spieler die Animation abbricht bzw die Springen-Taste drückt und ihn dann wieder zum gewünschten Ort teleportieren und die Animation erneut ausführen.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen