"Bankrob" Problem

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
  • Mit debuggen ist gemeint: Einzelne Prints in der Console auszugeben, welche uns dann sagen, bis wohin denn alles ausgeführt wird.

  • --------------------------------------
    [21:08:25] Vault of San Andreas - Anti
    [21:08:25] --------------------------------------
    [21:08:46] [join] Anti has joined the server (0:127.0.0.1)
    [21:09:04] 1
    [21:09:04] 2
    [21:09:04] 3
    [21:09:17] [part] Anti has left the server (0:1) // Weil nix mehr passiert ist

    SA:MP in 2020?

  • In der Klammer = max Wert
    Hinter der Klammer = min Wert

    Nein. random nimmt eine Zufallszahl von 0 bis zu der Zahl - 1, die in der Klammer steht.
    Das was danach steht wird nur dazu gerechnet, das hat damit nichts zu tun.


    Versuche es mal ohne die ganzen lokalen Deklarationen:
    forward VosaRob(playerid);
    public VosaRob(playerid)
    {
    printf("1");
    new str[145], money;
    if(GetPlayerHealth(playerid) < 1) return SendClientMessage(playerid, COLOR_ERROR, "Du bist gestorben, Raub abgebrochen!");
    if(PlayerInfo[playerid][pRob] >= 12)
    {
    printf("12");
    SendClientMessage(playerid, COLOR_CYAN, "60 Sekunden sind vorüber, jetzt schnell weg hier!");
    format(str, sizeof(str), "Beute: $%d", PlayerInfo[playerid][pRobTotal]);
    SendClientMessage(playerid, COLOR_CYAN, str);//nach 12 wiederholungen stoppt der timer
    return 1;
    }
    else
    {
    printf("2");
    if(IsPlayerInRangeOfPoint(playerid, 12,2144.2869,1635.0681,993.5761))
    {
    printf("3");
    money = random(60001) + 60000;
    GivePlayerMoney(playerid, money);
    PlayerInfo[playerid][pCash] += money;
    format(str, sizeof(str), "5 Sekunden sind vorüber, Beute: $%d", money);
    print(str);
    SendClientMessage(playerid, COLOR_CYAN, str);
    SetTimerEx("VosaRob", 5000, false, "d", playerid);
    PlayerInfo[playerid][pRob] ++;
    PlayerInfo[playerid][pRobTotal] += money;
    printf("pRob: %i",PlayerInfo[playerid][pRob]);
    return 1;
    }
    else
    {
    printf("4");
    SendClientMessage(playerid, COLOR_ERROR, "Raub abgebrochen, Du hast den Raum verlassen.");
    printf("5");
    GetPlayerName(playerid,str,sizeof(str));
    format(str, sizeof(str), "Der Raub auf das Vault of San Andreas wurde abgebrochen, %s hat den Raum verlassen", str);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    SendClientMessage(i, COLOR_CYAN, str);
    }
    return 1;
    }
    }
    printf("6");
    return 1;
    }

  • doch da er ja kein Wert finden kann und es somit nicht weiter geht. Erstetzt mal deine Randomabfrage mit:


    new money = random(120000)+60000;

    Das hat mit der ganzen Sache nichts zu tun lol,außerdem falsch. Es würde trotzdem gehen wenn es funktionieren soll nach deiner Meinung :P (Max : 60001 und Min: 60000). Wollt wohl jemand Beiträge pushen


    Und Jeffry, funktioniert fast perfekt :P


    Alle 5 Sekunden kriege ich ja eine Nachricht, aber es ist jedes mal Beute: $164832
    Und am Ende Beute : 202152 wenn der Raub vorbei ist

    SA:MP in 2020?


  • C:\Users\-\Desktop\SAMP Server\gamemodes\MM.pwn(243 -- 1578) : warning 203: symbol is never used: "State"
    C:\Users\-\Desktop\SAMP Server\gamemodes\MM.pwn(196 -- 1578) : warning 203: symbol is never used: "gOoc"
    C:\Users\-\Desktop\SAMP Server\gamemodes\MM.pwn(196 -- 1578) : warning 203: symbol is never used: "gTeam"
    C:\Users\-\Desktop\SAMP Server\gamemodes\MM.pwn(196 -- 1578) : warning 203: symbol is never used: "motor"
    C:\Users\-\Desktop\SAMP Server\gamemodes\MM.pwn(196 -- 1578) : warning 203: symbol is never used: "robtimer"
    C:\Users\-\Desktop\SAMP Server\gamemodes\MM.pwn(196 -- 1578) : warning 203: symbol is never used: "vid"

    SA:MP in 2020?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Dass random immer die gleiche Zahl ausgibt ist mir nicht zu erklären.
    Hast du es mal woanders im Code mit einer random Funktion probiert?


    Erstelle mal einen Test Befehl und lasse dir dort einen randkmrandom Wert aus 10 printen, wenn du ihn eingibst. Kommt da auch immer der gleiche Wert raus?

  • Random gibt ja nicht die gleiche Zahl raus, nur der Text. Habe die Vermutung dass es das random + bargeld nimmt und dann immer wieder die selbe zahl schickt.



    money = random(60001) + 60000;
    GivePlayerMoney(playerid, money);
    PlayerInfo[playerid][pCash] += money;
    format(str, sizeof(str), "5 Sekunden sind vorüber, Beute: $%d", money);

    SA:MP in 2020?

  • Test Befehl? Ich weiß dass ich die Prints von dir drin gelassen habe und die sagen dasselbe.


    Ich glaub die ganze VosaRob Funktion ist verbuggt, habe auch +80.000$ bekommen gespeichert in MySQL wurden aber nur +13.000


    Hier ist mein ganzer Gamemode falls du den mal durchgucken kannst, (nur 1500 zeilen) http://pastebin.com/g7NfvLVp

    SA:MP in 2020?

  • Dies hatte er schonmal gemacht. Der Befehl wird komplett ausgeführt bis Print 3 dann hört es auf. Der Print "pRob: %i" wird nicht ausgegeben, wenn @fishy diesen überhaupt hinzugefügt hat.


  • Update:


    Es scheint dass jetzt die Randomvergabe doch buggt, der Text ist korrekt bloß random spinnt.
    Das heißt der Text lügt nicht, ich kriege immer +$167288.


    So erklärung was exakt passiert:


    Ich kriege ingame (GivePlayerMoney +167.288) aber bei PlayerInfo[playerid][pCash] += money; kriege ich ca. $14.500 deswegen wird im MySQL am Ende auch nur eine Gesamtsumme von $250.000 gespeichert und die Zusammenfassung hat recht mit +$200.000 ($50.000 hatte ich vorher schon drauf)



    @Jeffry
    Der gewünschte Testbefehl, sorry hatte vorhin vergessen was du gemeint hast.

    SA:MP in 2020?

    2 Mal editiert, zuletzt von Anti. ()

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