Fraktions Autohaus - Geld wird nicht abgezogen

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
  • Hallo Jungs und Mädels,
    Da ich bereits das gleiche bei kleine Scripting fragen gepostet habe, hat mich Jeffry gebeten ein neues Thread auf zu machen.
    Hier nochmal :



    ich habe da ein kleines Problem, undzwar möchte ich das das Geld von der Fkasse abgezogen wird und nicht vom Spieler.
    Außerdem möchte ich das nur Frak's die Genug Geld haben die Cars kaufen können, jedoch können Gangs/Fraks mit 50$ in der Fkasse alle autos kaufen.


    Hier mal der Code :



    forward FRAC_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
    public FRAC_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]){
    if(dialogid == DIALOG_FACTION_CAR_BUY){
    if(response){
    new Float:pPos[3];
    GetPlayerPos(playerid,pPos[0],pPos[1],pPos[2]);
    SetPlayerPosEx(playerid,pPos[0]+2.5,pPos[1]+2.5,pPos[2]);
    TogglePlayerControllableEx(playerid,true);
    }
    if(!response){
    new fraktion = GetPlayerFaction(playerid);
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER){
    if(IsAllowedFactionToBuy(GetPlayerLeader(playerid))){
    if(GetFactioncarsOfFaction(GetPlayerLeader(playerid)) < MAX_BUY){
    new Carid1 = GetPlayerVehicleID(playerid);
    for(new fbl;fbl<sizeof(FactionBuylist);fbl++){
    if(Carid1 == FactionBuylist[fbl][fbCarid]){
    if(FraktionsKasse[fraktion] >= FactionBuylist[fbl][fbPrice]){
    //if(CallRemoteFunction("Script_GetPlayerMoney","i",playerid) >= FactionBuylist[fbl][fbPrice]){
    for(new fc;fc<sizeof(FactionCars);fc++){
    if(FactionCars[fc][fVehid] < 400 || FactionCars[fc][fVehid] > 611){
    FactionCars[fc][fVehid] = FactionBuylist[fbl][fbVehid];
    FactionCars[fc][fPos][0] = FactionBuySpawn[0];
    FactionCars[fc][fPos][1] = FactionBuySpawn[1];
    FactionCars[fc][fPos][2] = FactionBuySpawn[2];
    FactionCars[fc][fPos][3] = FactionBuySpawn[3];
    new Color[2];
    GetDefaultCarColorOfFaction(GetPlayerLeader(playerid),Color[0],Color[1]);
    FactionCars[fc][fCol][0] = Color[0];
    FactionCars[fc][fCol][1] = Color[1];


    FactionCars[fc][fPrice] = FactionBuylist[fbl][fbPrice];
    for(new slot;slot<14;slot++)
    FactionCars[fc][fTuning][slot] = 0;
    FactionCars[fc][fCarid] = CreateVehicle(FactionCars[fc][fVehid],FactionCars[fc][fPos][0],FactionCars[fc][fPos][1],FactionCars[fc][fPos][2],FactionCars[fc][fPos][3],FactionCars[fc][fCol][0],FactionCars[fc][fCol][1],-255);
    print(">>> Nach dem Autoerstellen!");
    #if defined FACTION_CARS_LOCKABLE
    fLockCar(FactionCars[fc][fCarid]);
    FactionCars[fc][fLocked] = true;
    #endif
    for(new f;f<5;f++)
    {
    FactionCars[fc][fFaction][f] = -255;
    }
    FactionCars[fc][fFaction][0] = GetPlayerLeader(playerid);
    PutPlayerInVehicle(playerid,FactionCars[fc][fCarid],0);

    FraktionsKasse[fraktion] -= FactionBuylist[fbl][fbPrice];


    //CallRemoteFunction("Script_SetPlayerMoney","id",playerid,(CallRemoteFunction("Script_GetPlayerMoney","i",playerid)-FactionBuylist[fbl][fbPrice]));
    new Float:pPos[3];
    GetPlayerPos(playerid,pPos[0],pPos[1],pPos[2]);
    SetPlayerPosEx(playerid,pPos[0]+2.5,pPos[1]+2.5,pPos[2]);
    TogglePlayerControllableEx(playerid,true);
    SendClientMessage(playerid,FACTION_COL_YELLOW,"Glückwunsch zum neuen Fahrzeug.");
    SendClientMessage(playerid,FACTION_COL_YELLOW,"Bitte vergesse nicht das Fahrzeug mit: '/fpark' umzuparken.");
    SendClientMessage(playerid,FACTION_COL_YELLOW,"Das Fahrzeug steht am Ausgabepunkt bereit!");
    return 1;
    }
    }SendClientMessage(playerid,FACTION_COL_GREY,"Die maximale Anzahl von Fraktionsfahrzeugen ist bereits erreicht.");
    }else SendClientMessage(playerid,FACTION_COL_GREY,"Ihr habt nicht genug Geld in eurer Fkasse.");
    break;
    }
    }
    }else SendClientMessage(playerid,FACTION_COL_GREY,"Deine Fraktion hat das Limit von Fahrzeugen bereits erreicht.");
    }else SendClientMessage(playerid,FACTION_COL_GREY,"Du bist nicht brechtigt Fraktionsfahrzeuge zu kaufen!");
    new Float:pPos[3];
    GetPlayerPos(playerid,pPos[0],pPos[1],pPos[2]);
    SetPlayerPosEx(playerid,pPos[0]+2.5,pPos[1]+2.5,pPos[2]);
    TogglePlayerControllableEx(playerid,true);
    }
    }return 1;
    }return 0;
    }



    Jeffry meinte das ich

    if(FraktionsKasse[fraktion] >= FactionBuylist[fbl][fbPrice]){


    zu

    printf("fraktion: %d | Kasse: %d | Price: %d", fraktion, FraktionsKasse[fraktion], FactionBuylist[fbl][fbPrice]);
    if(FraktionsKasse[fraktion] >= FactionBuylist[fbl][fbPrice]){


    ändern soll.


    Das kommt nun aus der Server Log :



    [19:50:37] Incoming connection: 127.0.0.1:52667
    [19:50:37] [join] Aokiji has joined the server (0:127.0.0.1)
    [19:50:45] Aokiji has logged in.
    [19:51:59] fraktion: 11 | Kasse: 1000000 | Price: 125000
    [19:51:59] >>> Nach dem Autoerstellen!
    [20:00:41] [part] Aokiji has left the server (0:1)


    MfG Saphire


    Jeffry

  • Das stimmt doch, du hast ja genug Geld. Das Auto wird ja anscheinend auch erstellt. Und jetzt sagst du, es wird kein Geld abgezogen?


    FraktionsKasse[fraktion] -= FactionBuylist[fbl][fbPrice];


    zu:
    FraktionsKasse[fraktion] -= FactionBuylist[fbl][fbPrice];
    printf("Kasse: %d", FraktionsKasse[fraktion]);



    Welche Nachrichten siehst du, und ist das sonst alles korrekt?


  • [20:28:25] Incoming connection: 127.0.0.1:63267
    [20:28:26] [join] Kaido has joined the server (0:127.0.0.1)
    [20:28:58] Kaido has logged in.
    [20:30:20] fraktion: 11 | Kasse: 1000000 | Price: 125000
    [20:30:20] >>> Nach dem Autoerstellen!
    [20:30:20] Kasse: 875000


    Jeffry


    Aber schau dir das an. Wenn ich nach dem kauf /fkasse eingebe kommt das :


    http://img5.fotos-hochladen.ne…s/unbenanntraw0xis1hf.png


    Auch wenn ich nur 50$ in der Fkasse hätte
    könnte ich das kaufen.


    Mfg Saphire


  • if(strcmp(cmd,"/fkasse",true) == 0)
    {
    new fraktion = 0;
    if(PlayerInfo[playerid][pMember] > 0) fraktion = PlayerInfo[playerid][pMember] - 1;
    if(PlayerInfo[playerid][pLeader] > 0) fraktion = PlayerInfo[playerid][pLeader] - 1;
    if(fraktion >= 0)
    {
    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid,COLOR_GRAD5," /fkasse [einzahlen/auszahlen] [Betrag]");
    format(string,sizeof(string)," Derzeit sind $%d in der Fraktionskasse!",FraktionsKasse[fraktion]);
    SendClientMessage(playerid,COLOR_GRAD5,string);
    return 1;
    }
    if(strcmp(tmp,"einzahlen",true) == 0)
    {
    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid,COLOR_GRAD5," /fkasse einzahlen [Betrag]");
    format(string,sizeof(string)," Derzeit sind $%d in der Fraktionskasse!",FraktionsKasse[fraktion]);
    SendClientMessage(playerid,COLOR_GRAD5,string);
    return 1;
    }
    new amount = strval(tmp);
    if(amount < 0 || amount > 10000000) return SendClientMessage(playerid,COLOR_WHITE," Bitte nur Summen in Höhe von 1 bis 10 Million Dollar!");
    if(GetPlayerMoney(playerid) < amount) return SendClientMessage(playerid,COLOR_WHITE," Du hast nicht soviel Geld um es einzuzahlen!");
    FraktionsKasse[fraktion] += amount;
    GivePlayerMoneyEx(playerid,-amount);
    format(string,sizeof(string)," Du hast $%d in die Fraktionskasse eingezahlt! Total: $%d",amount,FraktionsKasse[fraktion]);
    SendClientMessage(playerid,COLOR_WHITE,string);
    format(string,sizeof(string)," %s hat $%d in die Fraktionskasse eingezahlt! Total: $%d",sendername,amount,FraktionsKasse[fraktion]);
    SendLeaderMSG(fraktion+1,COLOR_LIGHTBLUE,string);
    SaveFraktionsKassen();
    }
    else if(strcmp(tmp,"auszahlen",true) == 0)
    {
    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid,COLOR_GRAD5," /fkasse auszahlen [Betrag]");
    format(string,sizeof(string)," Derzeit sind $%d in der Fraktionskasse!",FraktionsKasse[fraktion]);
    SendClientMessage(playerid,COLOR_GRAD5,string);
    return 1;
    }
    new amount = strval(tmp);
    if(PlayerInfo[playerid][pLeader] == 0) return SendClientMessage(playerid,COLOR_WHITE," Nur Leader dürfen Geld aus der Fraktionskasse nehmen!");
    if(amount < 0 || amount > 1000000) return SendClientMessage(playerid,COLOR_WHITE," Bitte nur Summen in Höhe von 1 bis 1 Million Dollar!");
    if((FraktionsKasse[fraktion] - amount) < 0) return SendClientMessage(playerid,COLOR_WHITE," Du kannst keine Schulden machen!");
    FraktionsKasse[fraktion] -= amount;
    GivePlayerMoneyEx(playerid,amount);
    format(string,sizeof(string)," Du hast $%d aus der Fraktionskasse genommen! Total: $%d",amount,FraktionsKasse[fraktion]);
    SendClientMessage(playerid,COLOR_WHITE,string);
    format(string,sizeof(string)," %s hat $%d aus der Fraktionskasse genommen! Total: $%d",sendername,amount,FraktionsKasse[fraktion]);
    SendLeaderMSG(fraktion+1,COLOR_LIGHTBLUE,string);
    SaveFraktionsKassen();
    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAD5," /fkasse [einzahlen/auszahlen] [Betrag]");
    format(string,sizeof(string)," Derzeit sind $%d in der Fraktionskasse!",FraktionsKasse[fraktion]);
    SendClientMessage(playerid,COLOR_GRAD5,string);
    }
    }
    else SendClientMessage(playerid,COLOR_WHITE," Du bist in gar keiner Fraktion!");
    return 1;
    }


    Ja ID 11 Stimmt ^^


    Jeffry

  • Logischerweise auch hier erst wieder debuggen:


    format(string,sizeof(string)," Derzeit sind $%d in der Fraktionskasse!",FraktionsKasse[fraktion]);


    zu:
    printf("Fraktion: %d --> Kasse: %d (Mem: %d / Lea: %d) ", fraktion, FraktionsKasse[fraktion], PlayerInfo[playerid][pMember], PlayerInfo[playerid][pLeader]);
    format(string,sizeof(string)," Derzeit sind $%d in der Fraktionskasse!",FraktionsKasse[fraktion]);

  • Das kommt raus Jeffry



    [22:51:04] Incoming connection: 127.0.0.1:62438
    [22:51:04] [join] Kaido has joined the server (0:127.0.0.1)
    [22:51:14] Kaido has logged in.
    [22:51:37] Fraktion: 10 --> Kasse: 1000000 (Mem: 0 / Lea: 11)
    [22:52:03] [part] Kaido has left the server (0:1)


    MfG Saphire

  • Na also, ist doch klar dann.


    if(PlayerInfo[playerid][pMember] > 0) fraktion = PlayerInfo[playerid][pMember] - 1;
    if(PlayerInfo[playerid][pLeader] > 0) fraktion = PlayerInfo[playerid][pLeader] - 1;


    Zu
    if(PlayerInfo[playerid][pMember] > 0) fraktion = PlayerInfo[playerid][pMember];
    if(PlayerInfo[playerid][pLeader] > 0) fraktion = PlayerInfo[playerid][pLeader];