Hacker System

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
  • Hey,
    Hab ein Problem bei meinem Hackersystem undzwar:


    else if(strcmp(option, "hacken", true) == 0)
    {
    new Float:X, Float:Y, Float:Z;
    if(HackAntrag[playerid] != INVALID_PLAYER_ID)
    {
    if(HackAntrag[HackAntrag[playerid]] != INVALID_PLAYER_ID)
    {
    GetPlayerPos(HackAntrag[playerid], X, Y, Z);
    if(IsLoggedIn(HackAntrag[playerid]))
    {
    if(!IsPlayerInRangeOfPoint(playerid, 5.0, X, Y, Z))return SendClientMessage(playerid, COLOR_GREY, "Du bist nicht in der Nähe vom Spieler.");
    new WantedsHack = HackWanteds[playerid];
    new Geld = HackBetrag[playerid];


    if(GetMoney(HackAntrag[playerid]) < Geld)return SendClientMessage(playerid, COLOR_GREY, "Dein Partner hat nicht genügend Geld.");


    new playeridZahl;
    new pIDZahl;


    for(new i=0;i<WantedsHack;i++)
    {
    new pID, wanteds, string[128];
    if(wanteds < 0 || wanteds > 5)return SendClientMessage(playerid, COLOR_GREY, "Du kannst nur zwischen 1 und 5 Wanteds löschen.");
    if(Spieler[pID][pWanteds] == 0)return SendClientMessage(playerid, COLOR_GREY, "Der Spieler hat keine Wanteds.");
    OnWantedChange(pID, Spieler[pID][pWanteds], (Spieler[pID][pWanteds]-wanteds));
    Spieler[pID][pWanteds] -= wanteds;
    if(Spieler[pID][pWanteds] <= 0)Spieler[pID][pWanteds] = 0;
    UpdateWantedTD(pID);
    }
    if(playeridZahl > pIDZahl)
    {
    format(string, sizeof(string), "Du hast ihm den Hackbetrag gegeben insgesamt (+$%d).", playeridZahl, Geld);
    SendClientMessage(playerid, COLOR_GREEN, string);
    GiveMoney(playerid, Geld);
    GiveMoney(HackAntrag[playerid], -Geld);
    }
    HackBetrag[playerid] = 0;
    HackBetrag[HackAntrag[playerid]] = 0;
    HackWanteds[playerid] = 0;
    HackWanteds[HackAntrag[playerid]] = 0;
    HackAntrag[playerid] = INVALID_PLAYER_ID;
    HackAntrag[HackAntrag[playerid]] = INVALID_PLAYER_ID;
    return 1;
    }
    }
    }
    return 1;
    }
    Wenn ich den Befehl dann eingebe /hacken [id] [anzahl der wanteds] [geld] und der andere Spieler /accept hacken macht kommt: Der Spieler hat keine Wanteds.
    Woran kann das liegen?
    Bitte um hilfe.
    vielen Dank.
    @Jeffry

  • Wenn du einem anderen Spieler die Wanteds damit hacken willst, braucht die Variable einen Wert.Die Variable pID ist 0 - Wenn Spieler-ID 0 keine Wanteds hat, geht der Befehl nicht.


    Darf man fragen, warum du immer versuchst eine Antwort von Jeffry zu erzwingen?

    Weil Jeffry einfach sehr gut helfen kann und komischerweise alles auf eine bessere ART erklärt, von daher finde ich es cool das er mir hilft.


  • new pID, wanteds, string[128];
    if(wanteds < 0 || wanteds > 5)return SendClientMessage(playerid, COLOR_GREY, "Du kannst nur zwischen 1 und 5 Wanteds löschen.");
    if(Spieler[pID][pWanteds] == 0)
    {
    OnWantedChange(pID, Spieler[pID][pWanteds], (Spieler[pID][pWanteds]-wanteds));
    Spieler[pID][pWanteds] -= wanteds; if(Spieler[pID][pWanteds] <= 0)
    Spieler[pID][pWanteds] = 0; UpdateWantedTD(pID);
    }
    else
    { SendClientMessage(playerid, COLOR_GREY, "Der Spieler hat keine Wanteds.");}


    Versuch mal so

    Einmal editiert, zuletzt von Trafico ()

  • Woran kann das liegen?


    pID entspricht deinem HackAntrag[playerid]. Ich habe alle diese Aufkommen durch pID ersetzt, und pID ganz oben (siehe Kommentar) deklariert und instanziiert, mit dem Wert von HackAntrag[playerid].
    So ist der Code etwas leserlicher.


    wanteds war ebenfalls immer 0. Dies entspricht deinem HackWanteds[playerid], was wiederum WantedsHack ist. Ich habe also "wanteds" mit WantedsHack ersetzt.


    Die Schleife habe ich entfernt, da diese keien Wirkung hatte.
    Ebenfalls die if-Abfrage.


    Damit sieht der Code dann so aus:


    else if(strcmp(option, "hacken", true) == 0)
    {
    new Float:X, Float:Y, Float:Z;
    new pID = HackAntrag[playerid]; //Damit es einfacher ist. pID entspricht HackAntrag[playerid].
    if(pID != INVALID_PLAYER_ID)
    {
    if(HackAntrag[pID] != INVALID_PLAYER_ID)
    {
    if(IsLoggedIn(pID))
    {
    GetPlayerPos(pID, X, Y, Z);
    if(!IsPlayerInRangeOfPoint(playerid, 5.0, X, Y, Z))return SendClientMessage(playerid, COLOR_GREY, "Du bist nicht in der Nähe vom Spieler.");
    new WantedsHack = HackWanteds[playerid];
    new Geld = HackBetrag[playerid];
    if(GetMoney(pID) < Geld)return SendClientMessage(playerid, COLOR_GREY, "Dein Partner hat nicht genügend Geld.");

    if(WantedsHack < 0 || WantedsHack > 5)return SendClientMessage(playerid, COLOR_GREY, "Du kannst nur zwischen 1 und 5 Wanteds löschen.");
    if(Spieler[pID][pWanteds] == 0)return SendClientMessage(playerid, COLOR_GREY, "Der Spieler hat keine Wanteds.");
    OnWantedChange(pID, Spieler[pID][pWanteds], (Spieler[pID][pWanteds]-wanteds));
    Spieler[pID][pWanteds] -= wanteds;
    if(Spieler[pID][pWanteds] <= 0)Spieler[pID][pWanteds] = 0;

    new string[145];
    GetPlayerName(pID, string, MAX_PLAYER_NAME);
    format(string, sizeof(string), "Du hast %s den Hackbetrag genommen (+$%d).", string, Geld);
    SendClientMessage(playerid, COLOR_GREEN, string);
    GiveMoney(playerid, Geld);
    GiveMoney(pID, -Geld);

    HackBetrag[playerid] = 0;
    HackBetrag[pID] = 0;
    HackWanteds[playerid] = 0;
    HackWanteds[pID] = 0;
    HackAntrag[pID] = INVALID_PLAYER_ID;
    }
    }
    }
    return 1;
    }

  • Beitrag von Trafico ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Jeff wahr schneller ^^ ().
  • error 017: undefined symbol "wanteds"
    error 017: undefined symbol "wanteds"


    in Zeile:
    OnWantedChange(pID, Spieler[pID][pWanteds], (Spieler[pID][pWanteds]-wanteds));
    Spieler[pID][pWanteds] -= wanteds;

    Wie kann ich das noch fixxen?

  • Oh, die habe ich übersehen, sorry.
    Ersetze beide "wanteds" mit "WantedsHack".

    Habe das jetzt so gemacht:
    OnWantedChange(pID, Spieler[pID][WantedsHack], (Spieler[pID][WantedsHack]-wanteds));
    Spieler[pID][WantedsHack] -= wanteds;


    allerdings;


    error 017: undefined symbol "wanteds"
    warning 213: tag mismatch
    error 017: undefined symbol "wanteds"

  • Das war falsch. Du hast "pWanteds" ersetzt. Du sollst aber "wanteds" ersetzen.
    Versuche es nochmal.

    Wenn ich /hacken mache dann biete ich ihm an die Wanteds zu hacken, wenn er /accept Hacken macht steht da "Du hast keine Wanteds." wenn ich mir 2 Wanteds gebe dann z.B dann kann er den Betrag bezahlen aber er zieht die Wanteds auch nicht ab. Brauchst du villeicht den Code? (CMD:hacken)?


    €: grob gesagt ich biete mir selbst an mich selbst zu hacken.

  • In dem Befehl oben findet sich diese Nachricht (Du hast keine Wanteds) nicht. Wo kommt die her?

    if(Spieler[pID][pWanteds] == 0)return SendClientMessage(playerid, COLOR_GREY, "Der Spieler hat keine Wanteds.");
    Das steht in dem Code dabei. Sry das heißt "Der Spieler hat keine Wanteds.".
    €: Und die Wanteds werden halt nicht gelöscht.

    Einmal editiert, zuletzt von RastaZopf. ()

  • Wie sieht der vorherige Befehl aus, der /hacken?

    CMD:hacken(playerid,params[])
    {
    if(Spieler[playerid][pJob] != 6)return SendClientMessage(playerid, COLOR_GREY, "Du bist kein Hacker.");
    if(pErstehilfeUse[playerid] > 0)return SendClientMessage(playerid, COLOR_GREY, "Du kannst nur alle 30 Minuten hacken.");
    new pID, Hacken, Geld, string[128], Float:pos[3];
    if(Spieler[playerid][pLevel] < 3)return SendClientMessage(playerid, COLOR_GREY, "Du benötigst mindestens Level 5.");
    if(sscanf(params,"udd", pID, Hacken, Geld))return SendClientMessage(playerid, COLOR_GREY, "Benutze /hacken [SpielerID/Name] [Wanteds] [Bargeld]");
    if(!IsLoggedIn(pID))return SendClientMessage(playerid, COLOR_GREY, "Der angegebene Spieler ist nicht online.");
    if(pID == playerid)return SendClientMessage(playerid, COLOR_GREY, "Du kannst dich nicht hacken??");
    GetPlayerPos(pID, pos[0], pos[1], pos[2]);
    if(!IsPlayerInRangeOfPoint(playerid, 5.0, pos[0], pos[1], pos[2]))return SendClientMessage(playerid, COLOR_GREY, "Der Spieler befindet sich nicht in deiner Nähe.");
    if(Spieler[pID][pLevel] < 3)return SendClientMessage(playerid, COLOR_GREY, "Der Spieler benötigt mindestens Level 3.");
    if(Hacken < 1 || Hacken > 5 )return SendClientMessage(playerid, COLOR_GREY, "Die Wantedsanzahl müssen zwischen 1-5 liegen");
    if(Geld < 5000 || Geld > 50000)return SendClientMessage(playerid, COLOR_GREY, "Der Betrag muss zwischen $5.000 und $50.000 liegen.");
    HackAntrag[pID] = playerid;
    HackAntrag[playerid] = pID;
    HackBetrag[playerid] = Geld;
    HackBetrag[pID] = Geld;
    HackWanteds[playerid] = Hacken;
    HackWanteds[pID] = Hacken;
    format(string, sizeof(string), "%s will dir für $%d, %d Wanteds hacken. (/accept hacken)", GetName(playerid), Geld, Hacken);
    SendClientMessage(pID, COLOR_LIGHTBLUE, string);
    format(string, sizeof(string), "Du hast %s ein Angebot zum Hacken für $%d (%d Wanteds) gesendet.", GetName(pID), Geld, Hacken);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    pErstehilfeUse[playerid] = 1800;
    return 1;
    }

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