Beiträge von Pascal.

    Naja ich habe das extra so gemacht weil ich möchte nicht das wenn seine Slots voll sind das trz die Autohaus Nachricht kommt.
    So da fragt man sich dann könnte man die Autohaus nachricht bei CreatePlayerCar mit rein machen aber das wäre doof.
    Sobald man dann per Admin befehl ein Privatcar erstellt kommt diese nachricht ja auch.
    Deshalb habe ich mich für diese Variante entschieden.


    Klappt leider immer noch nicht.
    Nun fängt er bei 1 an zu zählen, und runter bis 0.
    Man kann jetzt nur Fahrzeuge besitzen.


    Code
    [14:09:44] Besitzer:  | max Slots: 2
    [14:09:44] Besitzer:  | SlotID: 1
    [14:10:00] Besitzer: Pascal | max Slots: 2
    [14:10:00] Besitzer: Pascal | SlotID: 2
    [14:10:05] Besitzer: Pascal | Versuchter Slot: 3

    Also, ich lasse diese schleife einmal im Dialog aufrufen in einer schleife, und einmal in ein Befehl für Admins.
    Soviel hab ich da jetzt nicht verändert.
    Jetzt ist ein Fahrzeug auf Slot ID 2 und die anderen 2 auf 0.



    Der log:

    Code
    [09:11:26] Besitzer:  | max Slots: 2
    [09:11:26] Besitzer:  | SlotID: 0
    [09:11:33] Besitzer: Pascal | max Slots: 2
    [09:11:34] Besitzer: Pascal | SlotID: 1
    [09:11:38] Besitzer: Pascal | max Slots: 2
    [09:11:38] Besitzer: Pascal | SlotID: 2
    [09:11:45] Besitzer: Pascal | Slots: 3



    if(dialogid == DIALOG_AHKAUFEN)
    {
    if(response)
    {
    for(new b=0; b<sizeof(bsInfo); b++)
    {
    new id = GetPVarInt(playerid,"BuyCarID");
    if(GetPlayerMoney(playerid) < ahCars[id][c_preis])
    {
    SCM(playerid,COLOR_GELB,"[Autohaus]: Du hast nicht genügend Geld.");
    RemovePlayerFromVehicle(playerid);
    return 1;
    }
    else if(GetPlayerScore(playerid) < ahCars[id][c_level])
    {
    SCM(playerid,COLOR_GELB,"[Autohaus]: Dein Level reicht nicht aus um das Fahrzeug zu kaufen.");
    RemovePlayerFromVehicle(playerid);
    return 1;
    }
    for(new i=0; i<sizeof(cInfo); i++)
    {
    new string[128];
    new slotID;
    for(new cpx = 0; cpx < sizeof(cInfo); cpx++) if(cInfo[cpx][id_x]!=0 && !strcmp(cInfo[cpx][besitzer], SpielerName(playerid))) slotID++;
    if(slotID <= MAX_VEHICLE_SLOT)
    {
    printf("Besitzer: %s | max Slots: %i",cInfo[i][besitzer], MAX_VEHICLE_SLOT);
    cInfo[i][c_slot] = slotID;
    printf("Besitzer: %s | SlotID: %i",cInfo[i][besitzer],slotID);
    }
    else if(slotID >=MAX_VEHICLE_SLOT)
    {
    format(string,128,"Deine Slots sind voll, verkaufe ein oder mehrere Fahrzeuge damit du wieder freie Slots hast.");
    SCM(playerid,COLOR_GRAU,string);
    printf("Besitzer: %s | Slots: %i",cInfo[i][besitzer],slotID);
    return 1;
    }
    break;
    }
    if(ahCars[id][ah_id] == 0 && bsInfo[b][b_id] == 4)
    {
    if(bsInfo[b][b_prods] >0)
    {
    pInfo[playerid][pGeld] -=ahCars[id][c_preis];
    SetPlayerMoney(playerid,pInfo[playerid][pGeld]);
    bsInfo[b][b_kasse] +=ahCars[id][c_preis]/2;
    bsInfo[b][b_cokasse] +=ahCars[id][c_preis]/4;
    }
    else
    {
    RemovePlayerFromVehicle(playerid);
    SCM(playerid,COLOR_GRAU,"Dieses Autohaus hat nicht genügend Produkte zu verfügung.");
    return 1;
    }
    }
    else if(ahCars[id][ah_id] == 1 && bsInfo[b][b_id] == 5)
    {
    if(bsInfo[b][b_prods] >0)
    {
    pInfo[playerid][pGeld] -=ahCars[id][c_preis];
    SetPlayerMoney(playerid,pInfo[playerid][pGeld]);
    bsInfo[b][b_kasse] +=ahCars[id][c_preis]/2;
    bsInfo[b][b_cokasse] +=ahCars[id][c_preis]/4;
    }
    else
    {
    RemovePlayerFromVehicle(playerid);
    SCM(playerid,COLOR_GRAU,"Dieses Autohaus hat nicht genügend Produkte zu verfügung.");
    return 1;
    }
    }
    else if(ahCars[id][ah_id] == 2 && bsInfo[b][b_id] == 6)
    {
    if(bsInfo[b][b_prods] >0)
    {
    pInfo[playerid][pGeld] -=ahCars[id][c_preis];
    SetPlayerMoney(playerid,pInfo[playerid][pGeld]);
    bsInfo[b][b_kasse] +=ahCars[id][c_preis]/2;
    bsInfo[b][b_cokasse] +=ahCars[id][c_preis]/4;
    }
    else
    {
    RemovePlayerFromVehicle(playerid);
    SCM(playerid,COLOR_GRAU,"Dieses Autohaus hat nicht genügend Produkte zu verfügung.");
    return 1;
    }
    }
    else if(ahCars[id][ah_id] == 3 && bsInfo[b][b_id] == 7)
    {
    if(bsInfo[b][b_prods] >0)
    {
    pInfo[playerid][pGeld] -=ahCars[id][c_preis];
    SetPlayerMoney(playerid,pInfo[playerid][pGeld]);
    bsInfo[b][b_kasse] +=ahCars[id][c_preis]/2;
    bsInfo[b][b_cokasse] +=ahCars[id][c_preis]/4;
    }
    else
    {
    RemovePlayerFromVehicle(playerid);
    SCM(playerid,COLOR_GRAU,"Dieses Autohaus hat nicht genügend Produkte zu verfügung.");
    return 1;
    }
    }
    else
    {
    continue;
    }
    CreatePlayerCar(playerid,ahCars[id][model],ahInfo[ahCars[id][ah_id]][s_x],ahInfo[ahCars[id][ah_id]][s_y],ahInfo[ahCars[id][ah_id]][s_z],ahInfo[ahCars[id][ah_id]][s_r],-1,-1,
    ahCars[id][c_steuern]);
    RemovePlayerFromVehicle(playerid);
    bsInfo[b][b_prods] --;
    UpdateBiz(b);
    SaveBiz(b);
    SCM(playerid,COLOR_GELB,"[Autohaus]: Herzlichen Glückwunsch, du hast dir soeben ein Fahrzeug gekauft.");
    SCM(playerid,COLOR_GELB,"[Autohaus]: Wir wünschen dir viel Spaß mit dem Fahrzeug, bitte fahren sie Vorsichtig.");
    return 1;
    }
    }
    else
    {
    RemovePlayerFromVehicle(playerid);
    }
    return 1;
    }


    ocmd:pcar(playerid,params[])
    {
    if(pInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GRAU,"Du bist nicht Eingeloggt!");
    if(pInfo[playerid][pAdmin] <3)return SendClientMessage(playerid,COLOR_GRAU,"Du bist nicht befugt diesen Befehl zu nutzen!");
    new vID,pID,color1,color2,steuern;
    new string[128];
    if(sscanf(params,"uiiii",pID,vID,color1,color2,steuern))return SCM(playerid,COLOR_GRAU,"Info: /pcar [playerid/name] [vehicleid] [color1] [color2] [steuern (Pro Payday)]");
    if(!IsPlayerConnected(pID))return SCM(playerid,COLOR_GRAU,"Der Spieler ist nicht Online!");
    if(vID <400 || vID >611)return SendClientMessage(playerid,COLOR_GRAU,"Wähle bitte eine vehicleID zwischen 400-611 aus.");
    if(color1 <0 || color1 >255)return SendClientMessage(playerid,COLOR_GRAU,"Wähle bitte eine Farbe zwischen 0-255 aus.");
    if(color2 <0 || color2 >255)return SendClientMessage(playerid,COLOR_GRAU,"Wähle bitte eine Farbe zwischen 0-255 aus.");
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(!strcmp(cInfo[i][besitzer], SpielerName(playerid)))
    {
    new slotID;
    for(new cpx = 0; cpx < sizeof(cInfo); cpx++) if(cInfo[cpx][id_x]!=0 && !strcmp(cInfo[cpx][besitzer], SpielerName(pID))) slotID++;
    if(slotID >=MAX_VEHICLE_SLOT)
    {
    format(string,128,"Die Slots von %s sind zurzeit voll, er muss entweder ein oder mehrere Fahrzeuge verkaufen.",SpielerName(pID));
    SCM(playerid,COLOR_GRAU,string);
    return 1;
    }
    }
    }
    format(string,128,"%s %s hat dir ein/e %s erstellt. Es ist nun dein Privatcar!",GetAdminName(pID),SpielerName(pID),VehicleName[vID-400]);
    SCM(pID,COLOR_BLAU,string);
    format(string,128,"Admin %s hat %s das Fahrzeug '%s' erstellt.",SpielerName(pID),SpielerName(playerid),VehicleName[vID-400]);
    SAM(COLOR_BLAU,string);
    new Float:x,Float:y,Float:z,Float:r;
    GetPlayerPos(pID,x,y,z);
    GetPlayerFacingAngle(pID,r);
    CreatePlayerCar(pID,vID,x,y,z,r,color1,color2,steuern);
    SetPVarInt(playerid,"pCar",playerid);
    return 1;
    }

    Jeffry:
    Wie würde das dann jetzt klappen einzelene slots abzufragen und dann den VehicleName raus zu kriegen?
    Sagen wir mal Slot 1 = Infernus
    Slot 2 = Sultan


    Weil, wollte diese in ein Dialog anzeigen lassen.
    Wäre nett wenn du ein kleines bsp für mich hättest.


    //EDIT:
    Ahja, was mir aufgefallen ist sobald das erste Fahrzeug von einem User erstellt wurde macht er es auf Slot 2
    er soll ab 1 bis 3 zählen nicht von 2 bis 0

    Was machst du den da?
    format(string,sizeof(string),"Möchtest du an %s überweisen?",Spielername(strval(inputtext)));


    zu:
    format(string,sizeof(string),"Möchtest du an %s überweisen?",Spielername(giveplayerid));


    Du willst ja den name haben und nicht die Zahl.
    strval(inputtext) ist die Zahl die ihr eingeben tut. (Das Geld in deinem Fall)


    new giveplayerid[MAX_PLAYER_NAME];
    GetPlayerName(playerid,giveplayerid,sizeof(giveplayerid));


    zu:
    new giveplayerid;


    Wenn du den name von den anderen Spieler willst kannst du es ja im PVar speichern.

    Hallo Community!
    Sobald ein neues Auto für ein Spieler erstellt wird ob beim Kauf oder via Adminbefehl soll gefragt werden wv Fahrzeuge er besitzt.
    So wenn er bsp 2 Fahrzeuge besitzt soll auf das 1 Fahrzeug der Slot auf 1 sein und beim 2 Fahrzeug der Slot auf 2.
    Wenn ein neues erstellt wird soll er dann wohl das 3 Fahrzeug haben und somit auf Slot 3.
    Bei mir wird es bei egal wv Fahrzeugen das Fahrzeug auf slot 1 gepackt.


    CreatePlayerCar(playerid,modelid,Float:x,Float:y,Float:z,Float:r,cl1,cl2,vsteuern)
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    new string[128];
    new engine, lights, alarm, boonet, boot, objective;
    if(cInfo[i][id_x]!=0)continue;
    strmid(cInfo[i][besitzer],SpielerName(playerid),0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
    cInfo[i][c_x]=x;
    cInfo[i][c_y]=y;
    cInfo[i][c_z]=z;
    cInfo[i][c_r]=r;
    cInfo[i][clr1]=cl1;
    cInfo[i][clr2]=cl2;
    cInfo[i][model]=modelid;
    cInfo[i][csteuern]=vsteuern;
    cInfo[i][c_lock] = 1;
    cInfo[i][id_x]=CreateVehicle(modelid,x,y,z,r,cl1,cl2,-1);
    gas[cInfo[i][id_x]] = 100;
    SetVehicleParamsEx(cInfo[i][id_x], engine, lights, alarm, cInfo[i][c_lock], boonet, boot, objective);
    if(!strcmp(cInfo[i][besitzer], SpielerName(playerid)))
    {
    new slotID = cInfo[i][c_slot];
    if(slotID < MAX_VEHICLE_SLOT)
    {
    printf("Besitzer: %s | max Slots: %i",cInfo[i][besitzer],cInfo[i][c_slot]);
    slotID++;
    cInfo[i][c_slot] +=slotID;
    printf("Besitzer: %s | SlotID: %i",cInfo[i][besitzer],slotID);
    }
    else if(slotID >MAX_VEHICLE_SLOT)
    {
    format(string,128,"Der Spieler %s hat seine Slots bereits verbraucht.",SpielerName(playerid));
    SCM(playerid,COLOR_GRAU,string);
    printf("Besitzer: %s | Slots: %i",cInfo[i][besitzer],slotID);
    return 1;
    }
    }
    SaveCarToDB(playerid,i);
    return 1;
    }
    return 1;
    }

    Server log ist etwas groß.

    Kleines Problem, sobald ich durch den Checkpoint fahre passiert nix.
    Der bricht bei der ersten Abfrage direkt ab. (Über dem DEBUG 1 die abfrage)
    fc_id steht für die FraktionsID die ist im Enum und in der Variable fcInfo festgelegt.
    if(IsPlayerInRangeOfPoint(playerid,range,2219.5276,-2228.8760,13.5469))
    {
    for(new i=0; i<sizeof(fcInfo); i++)
    {
    if(fcInfo[i][id_x] !=mID)return SCM(playerid,COLOR_GRAU,"Fahre mit ein Fahrzeug deiner Fraktion zum Checkpoint.");
    printf("DEBUG 1: Vehicle: %d | fcInfo[%i][fc_id] !=vID[%i]",vID,i,vID);
    if(fcInfo[i][fc_id] !=5)return SCM(playerid,COLOR_GRAU,"Fahre mit ein Fahrzeug deiner Fraktion zum Checkpoint.");
    printf("DEBUG 2: Vehicle: %d | vID[%i] != fcInfo[%i][fc_id]",vID,vID,i);
    new string[128];
    format(string,128,"Produkte kaufen");
    ShowPlayerDialog(playerid,DIALOG_BUYPRODS,DIALOG_STYLE_LIST,"Produkte",string,"Wählen","Abbrechen");
    print("ENDE");
    DisablePlayerCheckpoint(playerid);
    }
    return 1;
    }


    Doch vergibt er, wenn er /makeadmin ID 0 macht vergibt er den adminrang 0.
    Aber sollte es nicht 0 sein vergibt er das schon richtig.

    Ich spawne am 0 Punkt bzw falle durch die map.

    Code
    [20:32:20] DEBUG: bdInfo wurde aufgerufen
    [20:32:20] IsPlayerInRangeOfPoint(playerid,2,bdInfo[0][bd_x],bdInfo[0][bd_y],bdInfo[0][bd_z]
    [20:32:20] BusinessID: 1 | ShopID: 7 | Produkte 62


    //EDIT:
    ShopID 7 ist ja die b_id aus der Datenbank, diese hat auch die Kordinaten 0.0...
    Der wählt theoritisch eine andere b_id aus.