[SAMMELTHREAD] Kleine Scripting Fragen

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
  • Das hier ist falsch.

    Für R40+ ist das korrekt so.


    Der Fehler wird hier sein, dass die Namensvariable leer ist:
    mysql_format(Handle, query, sizeof(query), "SELECT `ID` FROM `spieler` WHERE `Spielername` = '%e'", sInfo[playerid][sName]);
    zu:
    GetPlayerName(playerid, sInfo[playerid][sName], MAX_PLAYER_NAME);
    mysql_format(Handle, query, sizeof(query), "SELECT `ID` FROM `spieler` WHERE `Spielername` = '%e'", sInfo[playerid][sName]);

  • C:\Users\Medion\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German\gamemodes\happyages.pwn(8964) : warning 219: local variable "pID" shadows a variable at a preceding level




    else if(strcmp(option, "waffe", true) == 0)
    {
    if(pDealerID[playerid] == INVALID_PLAYER_ID)return SendClientMessage(playerid, COLOR_GREY, "Du hast keine Anfrage für einen Waffenhandel erhalten.");
    if(!IsLoggedIn(pDealerID[playerid])){
    SendClientMessage(playerid, COLOR_GREY, "Der Spieler ist nicht mehr online, Angebot zurückgezogen!");
    pDealerID[playerid] = INVALID_PLAYER_ID;
    pDealerWaffe[playerid] = -1;
    return 1;
    }
    new Float:pos[3];
    GetPlayerPos(pDealerID[playerid], pos[0], pos[1], pos[2]);
    if(!IsPlayerInRangeOfPoint(playerid, 5.0, pos[0], pos[1], pos[2]))return SendClientMessage(playerid, COLOR_GREY, "Der Spieler ist nicht in deiner Nähe.");
    new pID = pDealerID[playerid]; //8964
    if(Spieler[pID][pEisen] < pDealerMatsNeeded[playerid]){
    SendClientMessage(playerid, COLOR_GREY, "Der Spieler hat nicht genügend Materialien, Angebot zurückgezogen!");
    SendClientMessage(pID, COLOR_GREY, "Du hast nicht mehr genügend Materialien!");
    pDealerID[playerid] = INVALID_PLAYER_ID;
    pDealerWaffe[playerid] = -1;
    return 1;
    }


    wo liegt da das Problem?

  • Code
    if(Spieler[playerid][pPremium] == 1)
    {
       SetPlayerHealth(playerid, 100);
       if(Spieler[playerid][pGunLicense] == 1)
       {
        GivePlayerWeapon(playerid, 24, 50);
        return 1;
       }
    }

    Kurze frage es wird ja abgefragt ob der spieler Premium hat wen ja soll er 100 HP bekommen und wen er ein waffenschein hat soll er eine Deagel bekommen aber das Funktioniert nicht?

  • Hey, mein Heal Befehl funktioniert einwandfrei aber die frage ist wie mache ich das der Sanitäter /heal (playerid) (sein eigenen Preis festlegen) wie mach ich das?

  • CMD:heal(playerid, params[])
    {
    if(!IsLoggedIn(playerid))return 1;
    new string[128], pID, price;
    if(Spieler[playerid][pFraktion] == 3 && IsPlayerInAnyVehicle(playerid))
    {
    if(sscanf(params, "ud", pID, price))return SendClientMessage(playerid, COLOR_GREY, "Benutze /heal [SpielerID/Name] [Preis]");
    new vehicleid = GetPlayerVehicleID(playerid);
    new fV = IsAFraktionsVeh(vehicleid);
    if(!(fVehicle[fV][vehFraktion] == Spieler[playerid][pFraktion]))return SendClientMessage(playerid, COLOR_GREY, "Zum heilen von anderen Spielern musst du in einem Fraktions-Fahrzeug sitzen.");
    if(playerid == pID)return SendClientMessage(playerid, COLOR_GREY, "Du kannst dich nicht selber heilen.");
    if(GetPlayerVehicleID(pID) != GetPlayerVehicleID(playerid))return SendClientMessage(playerid, COLOR_GREY, "Nicht im selben Fahrzeug.");
    SetPlayerHealth(pID, 125);
    GiveMoney(pID, -price);
    GiveMoney(playerid, price);
    Frak[3][frakKasse] += price/2;
    if(pMaske[pID] == 0){
    format(string, sizeof(string), "* Sanitäter %s versorgt die Wunden von %s für $%d.", GetName(playerid), GetName(pID), price);
    RoundMessage(playerid, COLOR_PURPLE, string, 20.0);
    }else{
    format(string, sizeof(string), "* Sanitäter %s versorgt die Wunden von Maskiertem %d für $%d.", GetName(playerid), pMaskeNumber[pID], price);
    RoundMessage(playerid, COLOR_PURPLE, string, 20.0);
    }
    format(string, sizeof(string), "Sanitäter %s hat dich für $%d geheilt.", GetName(playerid), price);
    SendClientMessage(pID, COLOR_LIGHTBLUE, string);
    format(string, sizeof(string), "~y~du hast~n~~w~%s geheilt~n~~g~%d$", GetName(playerid), price);
    GameTextForPlayer(playerid, string, 1200, 1);
    return 1;
    }

  • if(strval(inputtext) < 50 || strval(inputtext) > 125) return SendClientMessage(playerid, COLOR_GREY, "Nutze 50$ - 125$!");



    Danke, wollte gerade das es nicht übertrieben wird mit den Heal Preisen wollte ich das es ein Limit gibt von bis würde das so funktionieren?

  • Nutze die "price" Variable.
    if(price < 50 || price > 125) return SendClientMessage(playerid, COLOR_GREY, "Nutze 50$ - 125$!");

    Danke,


    Ich wollte noch fragen wie ich abfrage wen der Spieler 120min online ist soll er z.b geld RP


    Das kann er einsehen via /activity.
    Du bist z.b 100 Minuten Online ubd erhählsz dein bonus bei 120min.


    So aber die Zeit soll nicht weiter laufen wen er ESC geht.


    Wen er es erreicht hat soll komm du hast den bonus Tag 1 erhalten. (Z.b 2000).


    Sollte er ein Tag nicht den bonus geholt haben wird es zurück gesetzt auf Tag eins.


    Wen er on kommt soll komm da du nicht online warst wird dein Bonus von Tag 2 zurück gesetzt.


    Ich weiß nicht wie ich Sowas schreiben soll sitze mit ein Freund schon länger dabei und wir tüfteln immer noch wie wir das schreiben sollen sind noch anfänger doch wir verstehen schon einiges.
    Wäre nett wen ihr uns helfen könnt.

  • Dr.Frauenarzt, ich werde dir kein Code Posten, werde dir nur sagen wie du dies machen kannst.


    Du hast ja mit sicherheit einen Timer zB PayDay, der geht ja alle 60 Sekunden, und dort kannst du eine Veriable nutzen der die Zeit immer Höher Zählt,
    bis er die Zeit erreicht hat, hat er die Erreicht gibst du ihn die Nachricht raus, das Geld und setzt dann eine zweite Verialbe auf 1 zB, damit er kein weiteren bekommt.


    Beim ESC gehen kannst du es mit dem PayDay Intergrieren, sollte er ESC gehen, Killst du den Timer, kommt er wieder, lässt du ihn wieder Starten.


    Hoffe konnte dir weiter Helfen.


    MfG.

  • Danke



    Wie lasse ich den Radio stoppen?






    CMD:carradio(playerid)
    {
    ShowPlayerDialog(playerid, DIALOG_MUSIC, DIALOG_STYLE_LIST, "Radio-Musik", "Musik stoppen\nPlanetradio (Classic)\nPlanetradio (The Club)\nPlanetradio (Black Beats)\nHousetime FM\nILove Big FM (Urban Club Beats)\nI Love Radio (Classic)\nI Love 2 Dance", "Starten", "Abbrechen");
    return 1;
    }


    Wen ich jezt ein Sender ausgewählt habe und der mir nicht mehr gefällt und /carradio eingebe das
    StopAudioStreamForPlayer(playerid);
    Vehicle[vehicleid][vehRadio] = 0;
    der sender gestoppt wird automatisch ohne das man Musik stoppen ankliken muss

  • Hast es doch schon vorgeschrieben, einfach so:



    CMD:carradio(playerid)
    {



    StopAudioStreamForPlayer(playerid);
    Vehicle[vehicleid][vehRadio] = 0;
    ShowPlayerDialog(playerid, DIALOG_MUSIC, DIALOG_STYLE_LIST, "Radio-Musik", "Musik stoppen\nPlanetradio (Classic)\nPlanetradio (The Club)\nPlanetradio (Black Beats)\nHousetime FM\nILove Big FM (Urban Club Beats)\nI Love Radio (Classic)\nI Love 2 Dance", "Starten", "Abbrechen");
    return 1;
    }



    Carradio wird zuerst gestoppt, dann wird dir das Dialog angezeigt und du kannst einen neuen Sender auswählen :)


    Mit freundlichen Grüßen
    JustMe.77 8)

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