Beiträge von Mr.Pawn

    Schau einmal, ob es so funktioniert und schicke mir im Anschluss den print mit rein.


    if(IsPlayerConnected(i) && gPlayerLogged[i])
    {
    PlayerUpdate(i);
    }
    if(IsPlayerConnected(i))
    {
    PlayerInfo[i][pGesamtMinutes]++;
    PlayerInfo[i][pMinutesSinceLogin]++;
    PlayerInfo[i][pMinutesSinceAn]++;
    if(PlayerInfo[i][pPlayMinutes] <= 60)
    {
    PlayerInfo[i][pPlayMinutes]++;
    }
    if(PlayerInfo[i][pPlayMinutes] >= 60)
    {
    PlayerInfo[i][pPlayMinutes] = 0;
    new string[128];
    new account,interest;
    new rent = 0;
    if(IsPlayerConnected(i))
    {
    if(M_Bot[i][PAFK] == 0)
    {
    if(MoneyMessage[i]==1)
    {
    if(PlayerInfo[i][pJailed] == 0 && WantedLevel[i] >= 0)
    {
    SendClientMessage(i, COLOR_LIGHTRED, "Du konntest deine Schulden nicht Bezahlen und sitzt nun 30 Min im Knast!");
    SendClientMessage(i, COLOR_LIGHTRED, "Dein Geld wurde Resettet!");
    SetPlayerInterior(i, 3);
    SetPlayerPos(i,197.8290,161.8141,1003.0300);
    PlayerInfo[i][pJailTime] += 1800;
    PlayerInfo[i][pJailed] = 1;
    PlayerInfo[i][pAccount] += 101;
    }
    }
    new playername2[MAX_PLAYER_NAME];
    GetPlayerName(i, playername2, sizeof(playername2));
    account = PlayerInfo[i][pAccount];
    new key = PlayerInfo[i][pPhousekey];
    if(key != 255)
    {
    rent = HouseInfo[key][hRent];
    if(strcmp(playername2, HouseInfo[key][hOwner], true) == 0)
    {
    rent = 0;
    }
    else if(rent > GetPlayerMoney(i))
    {
    PlayerInfo[i][pPhousekey] = 255;
    SendClientMessage(i, COLOR_WHITE, "Du wurdest aus der Wohnung geschmissen!");
    rent = 0;
    }
    HouseInfo[key][hTakings] = HouseInfo[key][hTakings]+rent;
    }
    new tmpintrate;
    if (key != 255 && strcmp(playername2, HouseInfo[key][hOwner], true) == 0)
    {
    if(PlayerInfo[i][pDonateRank] > 2)
    {
    tmpintrate = intrate = 6;
    }
    else
    {
    tmpintrate = intrate + 6;
    }//HouseInfo[key][hLevel]
    }
    else
    {
    if(PlayerInfo[i][pDonateRank] > 0)
    {
    tmpintrate = 4;
    }
    else
    {
    tmpintrate = 2;
    }
    }
    new fraktion = 0;
    new checks;
    if(PlayerInfo[i][pMember] > 0) fraktion = PlayerInfo[i][pMember] - 1;
    if(PlayerInfo[i][pLeader] > 0) fraktion = PlayerInfo[i][pLeader] - 1;
    if(fraktion >= 0)
    {
    if(FraktionsKasse[fraktion] - PlayerInfo[i][pGehalt])
    {
    checks = PlayerInfo[i][pGehalt];
    PlayerInfo[i][pAccount] += checks;
    FraktionsKasse[fraktion] -= checks;
    }
    }
    else if(PlayerInfo[i][pJob] != 0 || PlayerInfo[i][pMember] == 0 || PlayerInfo[i][pLeader] == 0)
    {
    checks = 500;
    PlayerInfo[i][pAccount] += checks;
    }
    PlayerInfo[i][pAccount] -= Tax;
    FraktionsKasse[6] += Tax;


    if(PlayerInfo[i][pDonateRank] > 0)
    {
    new bonus = PlayerInfo[i][pPayCheck] / 2;
    PlayerInfo[i][pPayCheck] += bonus;
    }
    new ebill = (PlayerInfo[i][pAccount]/5000)*(PlayerInfo[i][pLevel]);
    //new oil = (PlayerInfo[i][pPhousekey]*100);
    ConsumingMoney[i] = 1;
    if(PlayerInfo[i][pAccount] > 0)
    {
    PlayerInfo[i][pAccount] -= ebill;
    SBizzInfo[3][sbTill] = SBizzInfo[3][sbTill] + ebill;
    }
    else
    {
    ebill = 0;
    }
    interest = (PlayerInfo[i][pAccount]/1000)*(tmpintrate);
    PlayerInfo[i][pExp]++;
    PlayerPlayMusic(i);
    PlayerInfo[i][pAccount] = account+interest;
    SendClientMessage(i, COLOR_GREEN, "|================| SMS von Deiner BANK |================|");
    format(string, sizeof(string), " Gehalt: $%d Miete: -$%d Steuern: -$%d", checks, rent, Tax);
    SendClientMessage(i, COLOR_GRAD1, string);
    if(PlayerInfo[i][pPhousekey] != 255 || PlayerInfo[i][pPbiskey] != 255)
    {
    format(string, sizeof(string), " Strom Kosten: -$%d", ebill);
    SendClientMessage(i, COLOR_GRAD1, string);
    }
    if(PlayerInfo[i][pHandyVer] == 1)
    {
    SendClientMessage(i,COLOR_GRAD2," Handyvertragskosten: -$100");
    PlayerInfo[i][pAccount] -= 100;
    }
    if(PlayerInfo[i][pPlayerKreditDauer] > 0)
    {
    PlayerInfo[i][pAccount] -= PlayerInfo[i][pPlayerKredit];
    PlayerInfo[i][pPlayerKreditDauer]--;
    format(string, sizeof(string), " Kreditrate: -%d", PlayerInfo[i][pPlayerKredit]);
    SendClientMessage(i, COLOR_GRAD1, string);
    }
    format(string, sizeof(string), " Zinsen: $%d [0.%d Prozent]", interest,tmpintrate);
    SendClientMessage(i, COLOR_GRAD2, string);
    SendClientMessage(i, COLOR_GOLD, "|=================||============||================|");
    format(string, sizeof(string), " Neuer Kontostand: $%d", PlayerInfo[i][pAccount]);
    SendClientMessage(i, COLOR_GRAD5, string);
    format(string, sizeof(string), "~g~PayDay~y~!!!");
    GameTextForPlayer(i, string, 5000, 1);
    if(arbeitslosengeld[i] == 1)
    {
    PlayerInfo[i][pAccount] += 399;
    SendClientMessage(i, COLOR_PLAVA1, "Du hast 399€ Arbeitslosengeld erhalten!");
    return 1;
    }
    if(PlayerInfo[i][pZollPass] == 1)
    {
    PlayerInfo[i][pZollPassTime] += 1;
    format(string, sizeof(string), "* Du nutzt deinen Zollpass nun schon seit %d PayDays.", PlayerInfo[i][pZollPassTime]);
    SendClientMessage(i, COLOR_LIGHTBLUE, string);
    }
    if(PlayerInfo[i][pZollPassTime] >= 15)
    {
    PlayerInfo[i][pZollPass] = 0;
    PlayerInfo[i][pZollPassTime] = 0;
    format(string, sizeof(string), "* Dein Zollpass ist nun nicht mehr gültig und vom Staat als ungültig anerkannt.");
    SendClientMessage(i, COLOR_LIGHTRED, string);
    }
    if(PlayerInfo[i][pKrankenkasse] == 1)
    {
    PlayerInfo[i][pKrankenkasseTime] += 1;
    format(string, sizeof(string), "* Du besitzt nun schon seit %d PayDays eine Krankenversicherung.", PlayerInfo[i][pKrankenkasseTime]);
    SendClientMessage(i, COLOR_LIGHTBLUE, string);
    }
    if(PlayerInfo[i][pKrankenkasseTime] >= 12)
    {
    PlayerInfo[i][pKrankenkasse] = 0;
    PlayerInfo[i][pKrankenkasseTime] = 0;
    format(string, sizeof(string), "* Deine Krankenversicherung ist abgelaufen. Du kannst dir in der Stadthalle jederzeit eine neue besorgen.");
    SendClientMessage(i, COLOR_LIGHTRED, string);
    }
    if(checks == 0 && FrakMember(i) && PlayerInfo[i][pJob] == 0)
    {
    SendClientMessage(i,COLOR_LIGHTRED, "Dein Leader hat dir kein Gehalt gesetzt oder die Fraktionskasse ist leer!");
    SendClientMessage(i,COLOR_LIGHTRED, "Vordre ihn auf dir dein Gehalt mit /setlohn einzustellen!");
    }
    rent = 0;
    PlayerInfo[i][pPayCheck] = 0;
    PlayerInfo[i][pConnectTime] += 1;
    if(WantedLevel[i] >= 1)
    {
    WantedLevel[i] --;
    new wlevel;
    wlevel = GetPlayerWantedLevel(i);
    new tmp[64];
    format(tmp,sizeof(tmp), "Aktuelles Wantedlevel: %i", wlevel);
    SendClientMessage(i, COLOR_GREEN,tmp);
    }
    if(PlayerInfo[i][pDonateRank] > 0)
    {
    PlayerInfo[i][pPayDayHad] += 1;
    if(PlayerInfo[i][pPayDayHad] >= 5)
    {
    PlayerInfo[i][pExp]++;
    PlayerInfo[i][pPayDayHad] = 0;
    }
    }
    printf("Achtung Print: Spieler hat %d auf der Bank.", PlayerInfo[i][pAccount]);
    }
    else
    {
    SendClientMessage(i, COLOR_LIGHTRED, "* AFK-Schnorrer bekommen keinen PayDay!!");
    }
    }
    }
    if(KnastTime[i] > 0)
    {
    KnastTime[i]--;
    }
    if(KnastTime[i] == 0 && Knast[i] > 0)
    {
    Knast[i] = 0;
    KnastTime[i] = 0;
    SpawnPlayer(i);
    SendClientMessage(i,COLOR_YELLOW," Benimm dich ab jetzt, oder ein Admin wird dich wieder einsperren!");
    }
    }
    }
    return 1;
    }

    ocmd:online(playerid, params[])
    {
    #pragma unused params


    new count = 1, string[2048];
    if(pInfo[playerid][pFaction] > 0)
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i) && pInfo[i][pFaction] > 0 && !IsPlayerNPC(i) && i != INVALID_PLAYER_ID)
    {
    format(string, sizeof(string), "{FFFFFF}Name: {FF5C00}%s {FFFFFF}\n %s", spielername(i), string);
    count ++;
    }
    }
    if(count != 1)
    {
    ShowPlayerDialog(playerid, DIALOG_SONSTIGES, DIALOG_STYLE_MSGBOX, "Onlineliste", string, "Abbrechen", "");
    return 1;
    }
    else
    {
    ShowPlayerDialog(playerid, DIALOG_SONSTIGES, DIALOG_STYLE_MSGBOX, "Onlineliste", "{FFFFFF}Kein Mitglied online!", "Abbrechen", "");
    return 1;
    }
    }
    return 1;
    }


    Schau dir das alte an, und das neue damit du verstehst, was verändert wurde.


    ocmd:online(playerid, params[])
    {
    #pragma unused params


    new count = 1, string[2048];
    if(pInfo[playerid][pFaction] > 0)
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i) && pInfo[i][pFaction] > 0 && !IsPlayerNPC(i) && i != INVALID_PLAYER_ID)
    {
    format(string, sizeof(string), "{FFFFFF}Name: {FF5C00}%s {FFFFFF}\n{FFFFFF}Rang: {FF5C00}%d\n %s", spielername(i), pInfo[i][pRank], string);
    count ++;
    }
    }
    if(count != 1)
    {
    ShowPlayerDialog(playerid, DIALOG_SONSTIGES, DIALOG_STYLE_MSGBOX, "Onlineliste", string, "Abbrechen", "");
    return 1;
    }
    else
    {
    ShowPlayerDialog(playerid, DIALOG_SONSTIGES, DIALOG_STYLE_MSGBOX, "Onlineliste", "{FFFFFF}Kein Mitglied online!", "Abbrechen", "");
    return 1;
    }
    }
    return 1;
    }

    Lege dir mal ein Beispiel vor:


    ocmd:online(playerid, params[])
    {
    #pragma unused params

    new count = 1, string[2048];
    if(pInfo[playerid][pFraktion] > 0)
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i) && pInfo[i][pFraktion] > 0 && !IsPlayerNPC(i) && i != INVALID_PLAYER_ID)
    {
    format(string, sizeof(string), "{FFFFFF}Name: {FF5C00}%s {FFFFFF}\n %s", SpielerName(i), string);
    count ++;
    }
    }
    if(count != 1)
    {
    ShowPlayerDialog(playerid, DIALOG_SONSTIGES, DIALOG_STYLE_MSGBOX, "Onlineliste", string, "Abbrechen", "");
    return 1;
    }
    else
    {
    ShowPlayerDialog(playerid, DIALOG_SONSTIGES, DIALOG_STYLE_MSGBOX, "Onlineliste", "{FFFFFF}Kein Mitglied online!", "Abbrechen", "");
    return 1;
    }
    }
    return 1;
    }


    Musst es halt auf dich anpassen.

    pCoLeader kannst du entfernen. Dafür läuft ja die Rangabfrage.


    Darf ich es so verstehen, dass du /online machen möchtest und dort alle Mitglieder der Fraktion eingetragen sind ?

    GivePlayerMoney(PlayerInfo[i][pAccount],checks);


    GivePlayerMoney


    Das ist eine Standart Geldvergabe Funktion von SA:MP. Erstelle dir mal eine weitere Variable.


    Beispiel:


    Solltest du ein Spieler Enum haben, füge diesem einmal "pBank" hinzu. Und dann änderst du jegliche GivePlayerMoney funktionen auf die pBank.


    PlayerInfo[playerid][pBank] += blabla

    Ja genau, so sparst du dir das Ersteller einer weiteren Spielervariablen.
    Zur Erklärung:




    if(!pInfo[playerid][pLeader] && pInfo[playerid][pRang] < 10)


    Das heißt soviel wie: Sollte der Spieler kein Leader einer Fraktion sein oder sein Fraktionsrang ist kleiner als 10, sokann dieser den Befehl nicht durchführen und bekommt die Error Meldung.


    Ich hoffe ich konnte dir helfen.

    Bei /invite brauchst du das nicht, wenn einer Rang höher ist, ist diese ja bereits in die Fraktion.


    if(!pInfo[playerid][pLeader] && pInfo[playerid][pRang] < 10) return SendClientMessage(playerid,WEIß,"Du bist kein Leader! oder Co.Leader");


    Schreibe dies mal so, dann kann auch der Coleader inviten


    ocmd:invite(playerid, params[])
    {
    if(!pInfo[playerid][pLeader] && pInfo[playerid][pRang] < 10) return SendClientMessage(playerid,WEIß,"Du bist kein Leader! oder Co.Leader");
    if(sscanf(params,"u",pID)) return SendClientMessage(playerid,WEIß,"{FFD200}Benutzung:{FEFEFE} /invite [spielerid]");
    new str[128], name[MAX_PLAYER_NAME], pname[MAX_PLAYER_NAME];
    GetPlayerName(pID, name, MAX_PLAYER_NAME),GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
    format(str, 128,"Du wurdest von %s in die Fraktion %s invitet!",pname,fraktname);
    SendClientMessage(pID,WEIß,str);
    format(str, 128,"Du hast %s in deine Fraktion invitet er muss noch Annehmen / Ablehnen!!",name);
    SendClientMessage(playerid,WEIß,str);
    Eingeladen[pID] = pInfo[playerid][pLeader];
    SendClientMessage(pID,GRÜN,"{31FF00} Möchtest du dieser Fraktion beitreten?");
    ShowPlayerDialog(pID,DIALOG_INVITE,DIALOG_STYLE_MSGBOX,"{E1FF00}Invite{FEFEFE}","Du wurdest in einer Fraktion eingeladen?\n\nMöchtest du dieser Fraktion beitreten","Annehmen","Ablehnen");
    return 1;
    }


    Hier auch so:


    if(pInfo[playerid][pLeader] == 0 && pInfo[playerid][pRang] < 10) return SendClientMessage(playerid,WEIß,"Du bist kein Leader oder Co.Leader!");

    ocmd:uninvite(playerid, params[])
    {
    new str[128], name[24], pname[24];
    if(sscanf(params,"u",pID)) return SendClientMessage(playerid,WEIß,"{FFD200}Benutzung:{FEFEFE} /uninvite [spielerid]");
    if(pInfo[playerid][pLeader] == 0 && pInfo[playerid][pRang] <
    10) return SendClientMessage(playerid,WEIß,"Du bist kein Leader oder
    Co.Leader!");
    if(pInfo[playerid][pRank] < pInfo[pID][pRank])return SendClientMessage(playerid, WEIß, "Du kannst keinen Ranghöheren uninviten!"); //Einmal Hier
    if (pInfo[pID][pMember] > 0 && pInfo[pID][pMember] == pInfo[playerid][pLeader])
    GetPlayerName(pID, name, 24);
    GetPlayerName(playerid, pname, 24);
    format(str, 128,"Du wurdest von %s aus der Fraktion geworfen!",pname);
    SendClientMessage(pID,WEIß,str);
    format(str, 128,"Du hast %s aus der Fraktion geworfen!!",name);
    SendClientMessage(playerid,WEIß,str);
    pInfo[pID][pMember] = pInfo[playerid][pLeader];
    pInfo[pID][pRank] = 0;
    pInfo[pID][pMember] = 0;
    pInfo[pID][pFaction] = 0;
    SpawnPlayer(pID);
    return 1;
    }

    Du fragst einfach bei /invite und /uninvite und etlichen anderen Leaderbefehlen ab, ob der Spieler Rang 10 oder Rang 11 hat. Sollte der Spieler Rang 10 haben, kann er den Befehl mit ausführen.


    if(pInfo[playerid][pRank] < pInfo[pID][pRank])return SendClientMessage(playerid, FARBE, "Du kannst keinen Ranghöheren uninviten!");
    Ein Beispiel, somit kann der Spieler, welcher /uninvite eingegeben hat, keinen rausschmeißen der einen größeren Rang hat wie er.


    Grüße


    //edit


    @Mencent


    Er kann es auch einfach über den Rang laufen lassen, dann braucht er nicht zwingend eine neue Variable.