[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
  • Naja, mach es z.B. so:


    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • @Kaliber
    Die Konstante n ist bei der zweiten Variante nicht notwendig, da z ebenfalls 4 ist.
    Also:
    new x = _:test-z;


    Man kann das so mit allen enum-Werten machen, auch wenn der String in der Mitte steht, zum Beispiel bei d in deinem enum:
    new x = z - d;


    Das würde ich so aber nicht machen, denn fügt man zwischen d und z ein e ein, dann muss man die Rechnung überall ändern, dann kann man gleich x direkt auf 32 setzen, daher am besten die Variante mit der Konstante über das Makro (#define).

  • @Jeffry Hmm, also ich habe das nicht komplett verstanden. Ich schieße mit meiner Waffe => frage ab welche ich habe => setze sie auf 0 => und mit dem Timer gebe ich ihn die alte Waffe zurück, richtig?


    Wofür ist der Public public SetWeaponAgain(playerid, weapon) da?


    Habe zurzeit den Code so aufgebaut:



    forward OldWeapon(playerid);
    public OldWeapon(playerid)
    {
    //Hier ist irgendwas falsch.
    SetWeaponAgain(playerid, weapon);
    return 1;
    }



    public SetWeaponAgain(playerid, weapon)
    {

    //Was mache ich hier?

    }



    public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
    {
    new Float:FloatValue;
    new Value = 0;
    FloatValue = float(Value);



    if(fX != FloatValue && hittype == 0)
    {
    if(Teleportgun[playerid] == 1)
    if(weaponid == 24) //Deagle
    {
    if(fX == 0.0 || fY == 0.0 || fZ == 0.0) return 1;
    GetPlayerWeapon(playerid);
    SetPlayerArmedWeapon(playerid,0);
    SetPlayerPos(playerid,fX,fY,fZ+1);
    SetTimerEx("OldWeapon", 1500, false, "playerid",playerid);
    }

    }
    else
    {
    //SendClientMessage(playerid, 0xFF0000FF, "nonexistent coordinates!");
    }
    return 1;

    }


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Klappt nicht Ganz, habe wohl was falsch gemacht.


    Error:



    /*
    forward OldWeapon(playerid);
    public OldWeapon(playerid)
    {


    return 1;
    }
    */



    public SetWeaponAgain(playerid, weapon)
    {

    SetPlayerArmedWeapon(playerid,weapon);
    return 1;

    }



    public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
    {
    new Float:FloatValue;
    new Value = 0;
    FloatValue = float(Value);



    if(fX != FloatValue && hittype == 0)
    {
    if(Teleportgun[playerid] == 1)
    if(weaponid == 24) //Deagle
    {
    if(fX == 0.0 || fY == 0.0 || fZ == 0.0) return 1;
    GetPlayerWeapon(playerid);
    SetPlayerArmedWeapon(playerid,0);
    SetPlayerPos(playerid,fX,fY,fZ+1);
    SetTimerEx("SetWeaponAgain", 1500, false, "dd",playerid, GetPlayerWeapon(playerid));
    }

    }
    else
    {
    //SendClientMessage(playerid, 0xFF0000FF, "nonexistent coordinates!");
    }
    return 1;

    }


    Mit freundlichen Grüßen
    JustMe.77 8)

  • @Jeffry


    Achso, nun funktioniert's perfekt. Du hattest mich verwirrt weil das oben gefehlt hat, deswegen hatte ich gefragt wofür dieses Public gut ist :whistling:


    Noch eine kleine Frage, ich möchte das mit mehreren Waffen ermöglichen können, aber ich möchte ungerne immer wieder die Funktion dafür neu erstellen. Kann ich das nicht irgendwie besser umsetzen, irgendwie mit case 24..35 (Waffe 24-35) ? Oder vielleicht auch eine andere Methode


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Achso habe mich nicht gut ausgedrückt, die Frage hat weniger mit dem Timern zu tun. Ich habe ja ein Befehl womit ich mit per Schuss teleportieren kann, hier z.B. siehst du das ID 24 (Deagle) definiert wurde. if(weaponid ==24) //Deagle


    Doch anstatt jetzt die Funktion jedes mal neu zu erstellen mit einer Waffen ID, möchte ich das in einem machen und dort angeben mit welchen Waffen das erlaubt wird.
    Beispielsweise von ID 24 - 30.


    Mit freundlichen Grüßen
    JustMe.77 8)

  • welche FilterScripts geladen sind?

    Da müsstest du beim Laden jedes Filterscripts (jeweils bei OnFilterScriptInit/-Exit) einen Eintrag in eine Datei/Datenbank machen, damit du es daraus auslesen kannst, ob geladen oder nicht. Direkt abfragen kann man das nicht.



    auflisten welche FilterScripts sich im FilterScripts Ordner befinden?

    Hiermit sollte das gehen: http://forum.sa-mp.com/showthread.php?t=92246

  • Wie kann ich in MySQL eine Tabelle erstellen, die nur eine Spalte haben soll, da ich nur Server-Variablen abspeichern möchte.
    So wie ich die Tabelle erstellt habe kommt diese Meldung von MySQL.

    Zitat

    Die aktuelle Markierung enthält keine eindeutige ("unique") Spalte. Gitter-Bearbeitungsfunktion, Kontrollkästchen, Bearbeiten, Kopieren und Löschen von Links sind nicht verfügbar.

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