Fehler beim Biz-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
  • Tag,
    ich habe in letzter Zeit mal wieder etwas probiert und bin nun auf folgenden Fehler gestoßen:
    Wenn ich mir ein Biz kaufe, müsste ich am Payday für jeden Spieler einen gewissen betrag bekommen.
    Leider kommt immer: "Es waren 0 Spieler online. Du hast 0$ bekommen"
    hier ein ausschnitt:


    if(strcmp("/Paydaytest", cmdtext, true) == 0)
    {
    new
    PayDayPlayers,
    i,
    MoneyPerPlayer;
    for(i = 0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    SendClientMessage(i, 0xFFFFFFF, "Testnachricht");
    PayDayPlayers = i;
    for(i = 0; i<sizeof(CapturePoints); i++)
    {
    if(strfind(CapturePoints[i][CaptureName], "Los Santos - Tankstelle", true))
    {
    MoneyPerPlayer = 20;
    if(strcmp(CapturePoints[i][CaptureOwner],"Neutral",true) <0)
    {
    new OwnerName[MAX_PLAYER_NAME];
    GetPlayerName(i, OwnerName, sizeof(OwnerName));
    if(strfind(CapturePoints[i][CaptureOwner], OwnerName, true))
    {
    CapturePoints[i][CaptureMoney]+=PayDayPlayers*MoneyPerPlayer*CapturePoints[i][CaptureLevel];
    new LastMoneyString[128];
    format(LastMoneyString, sizeof(LastMoneyString), "Es waren %d Spieler beim Payday online. Du bekommst %d für deine Tankstelle(n)!", PayDayPlayers,PayDayPlayers*MoneyPerPlayer*CapturePoints[i][CaptureLevel]);
    SendClientMessage(playerid,0xBCEBF2FF, LastMoneyString);
    UpdateText();
    }
    }
    }


    hoffe mir kann jemand helfen

  • Ist ja auch Logisch,du startest eine Schleife für alle spieler beginnend mit 0 und endet mit MAX_PLAYERS ,id 0 ist überall dann folgend i,außerdem hast du nochmal in der schleife eine neuschleife wo du nochmal i nimmst,das kann alles garnicht klappen xD Und ich versteh dein System nicht das alles da macht für mich irgendwie keinen sinn 8|
    Überleg dir nochmal die Abfragen und bau die schleifen um,ich steig da echt nicht hinter sry :|

  • also ich wills so machen: wenn /paydaytest aufgerufen wird soll jedes biz für jeden spieler der gerade online ist geld bekommen (MoneyPerPlayer)
    Aber nur die bizes, die auch in Besitz sind
    habs jetzt bisschen umgebaut
    if(strcmp("/Payday", cmdtext, true) == 0)
    {
    new
    PayDayPlayers[MAX_PLAYERS],
    i,
    ii,
    MoneyPerPlayer;
    for(i=0,ii=0; i<MAX_PLAYERS,ii<sizeof(CapturePoints);i++,ii++)
    {
    if(IsPlayerConnected(i))
    {
    SendClientMessage(i, 0xFFFFFFF, "Testnachricht");
    if(CapturePoints[ii][CaptureOwned] == 1)
    {
    if(strfind(CapturePoints[ii][CaptureName], "Los Santos - Pay'n'Spray", true))
    {
    MoneyPerPlayer = 25;
    new OwnerName[MAX_PLAYER_NAME];
    GetPlayerName(i, OwnerName, sizeof(OwnerName));
    if(strfind(CapturePoints[ii][CaptureOwner], OwnerName, true))
    {
    CapturePoints[ii][CaptureMoney]+=PayDayPlayers[i]*MoneyPerPlayer*CapturePoints[ii][CaptureLevel];
    new LastMoneyString[128];
    format(LastMoneyString, sizeof(LastMoneyString), "Es waren %d Spieler beim Payday online. Du bekommst %d für deine(n) Pay'n'Spray(s)!", PayDayPlayers[i],PayDayPlayers[i]*MoneyPerPlayer*CapturePoints[ii][CaptureLevel]);
    SendClientMessage(playerid,0xBCEBF2FF, LastMoneyString);
    UpdateText();
    }
    }


    das problem ist jetzt noch: obwohl ich einen Pay'n'Spray besitze (von 3) bekome ich nicht die nachricht mit "Es waren XX Spieler beim Payday Online"
    Und geld bekommt das Biz auch nicht
    kann es sein das da was mit dem strfind nicht geht? Weil oben wollte ich halt machen, das wenn das Biz Los Santos - Pay'n'Spray im namen hat das kommt, was bei 3 Stück der fall ist und unten wollte ich das wenn der Name vom Spieler in CaptureOwner gefunden wird, er die Nachricht bekommt


    so hoffe jetzt ist es etwas klarer ^^


    kann das niemand?