/mieten nur auf den Fahrzeug von Vermietung

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
  • hey ich wollt in den Befehl /mieten mit einbauen das der Spieler erst auf ein Miet Car sitzen muss das er den Befehl Voll nutzen kann doch ihren wie klappt das nicht


    ocmd:mieten(playerid,params[])
    {
    for(new i2 = 0; i2 < sizeof(mieten); i2++)//von hier
    {
    new Vehicle = GetPlayerVehicleID(playerid);
    if(Vehicle == mieten[i2]) return SendClientMessage(playerid,ROT,"Du sitzt auf Keinem MietCar");//bist hier
    {
    new prods;
    for(new i=0;i<MAX_BIZ;i++)
    {
    prods = GetBizProds(vermietung);


    if(prods != 0)
    {
    SetBizProds(vermietung,GetBizProds(vermietung)-1);
    GivePlayerMoney(playerid,-500);
    SetBizKasse(vermietung,GetBizKasse(vermietung)+500);
    SendClientMessage(playerid,ROT,"[______________________ Car Vermietung ______________________]");
    SendClientMessage(playerid,GELD,"Herzlichen Glückwunsch! ");
    SendClientMessage(playerid,GELD,"Damit du nicht laufen musst, hast du dir einen Roller Gemeitet!");
    SendClientMessage(playerid,GELD,"Kostet 500$!");
    TogglePlayerControllable(playerid,1);
    UpdateBiz();
    return 1;
    }
    else if(prods == 0)
    {
    RemovePlayerFromVehicle(playerid);
    TogglePlayerControllable(playerid,1);
    SendClientMessage(playerid,ROT,"Die Firma Car Vermitung hat keine Produkte mehr übrig!");
    return 1;
    }
    }
    }
    }
    return 1;
    }


    der geht den ihren wie gleich Runter zum Nähsten punkt und checkt ob dir Firma Produkte hat
    was hab ich falsch gemacht ?
    lg kifkat

  • for(new i2 = 0; i2 < sizeof(mieten); i2++)//von hier
    {
    new Vehicle = GetPlayerVehicleID(playerid);
    if(Vehicle == mieten[i2]) return SendClientMessage(playerid,ROT,"Du sitzt auf Keinem MietCar");//bist hier

    So solltest du es nicht machen. Erstmal solltest du einmalig die VehicleID beziehen außerhalb der Schleife, da es unnötigist ist,die ID immer neu zu beziehen.Wird sich sowieso nicht zum Zeitpunkt des Aufrufes nicht geändert haben bzw ändern.


    Dein Problem ist,dass du alle Einträge von mieten[] überprüfst, sobald aber der Spieler in irgendeinem der mieten-Fahrzeuge nicht sitzt,bricht die Schleife ab. Du müsstest aber die Schleife vorher einmalig durchgehen und schauen,ob der Spieler in irgendeinem der mieten-Fahrzeuge sitzt.


    Könnte so aussehen:
    new
    Vehicle,
    mietenIndex = -1; // leer
    Vehicle = GetPlayerVehicleID(playerid);
    for(new j = 0 ; j < sizeof(mieten); j++) {
    if( Vehicle == mieten[j] ) {
    mietenIndex = j;
    continue; // Wir können aus der Schleife springen. Denn wir haben bereits einen gültigen Eintrag gefunden
    }
    }
    if( mietenIndex == -1 ) {
    // kein mieten-Fahrzeug!
    }
    else {
    // sitzt in einem mieten-Fahrzeug
    }

  • Also so ?
    ocmd:mieten(playerid,params[])
    {
    new Vehicle,mietenIndex = -1;
    for(new j = 0 ; j < sizeof(mieten); j++) {
    if( Vehicle == mieten[j] ) {mietenIndex = j;continue;
    }
    SendClientMessage(playerid,ROT,"Du SItzt in Kein MietCar");
    return 1;
    }
    if( mietenIndex == -1 ) {
    }
    else
    {
    new prods;
    for(new i=0;i<MAX_BIZ;i++)
    {
    prods = GetBizProds(1);


    if(prods != 0)
    {
    SetBizProds(1,GetBizProds(1)-1);
    GivePlayerMoney(1,-500);
    SetBizKasse(vermietung,GetBizKasse(1)+500);
    SendClientMessage(playerid,ROT,"[______________________ Car Vermietung ______________________]");
    SendClientMessage(playerid,GELD,"Herzlichen Glückwunsch! ");
    SendClientMessage(playerid,GELD,"Damit du nicht laufen musst, hast du dir einen Roller Gemeitet!");
    SendClientMessage(playerid,GELD,"Kostet 500$!");
    TogglePlayerControllable(playerid,1);
    UpdateBiz();
    return 1;
    }
    else if(prods == 0)
    {
    RemovePlayerFromVehicle(playerid);
    TogglePlayerControllable(playerid,1);
    SendClientMessage(playerid,ROT,"Die Firma Car Vermitung hat keine Produkte mehr übrig!");
    return 1;
    }


    }
    }
    return 1;
    }


    wen ja
    den bekomme ich die Meldung ""Du SItzt in Kein MietCar" sobald ich auf ein Mietcar Sitze
    was falsch ? was hab ich vergessen ?

  • Du hast es definitiv nicht verstanden.
    Ich habe den Code doch schon für die vorgemacht,wie es richtig wäre.
    new Vehicle,mietenIndex = -1;
    for(new j = 0 ; j < sizeof(mieten); j++) {
    if( Vehicle == mieten[j] ) {mietenIndex = j;continue;
    }
    SendClientMessage(playerid,ROT,"Du SItzt in Kein MietCar");
    return 1;
    }
    Das ist wieder totaler Blödsinn. Du hast weder verstanden,was der Sinn hinter dem ist,was ich geschrieben / vorgemacht habe, noch was das return eigentlich bedeutet.
    Grundlagen fehlen dir sicherlich.


    Ich mach es aber nochmal deutlicher.


    new
    Vehicle,
    mietenIndex = -1; // leer
    Vehicle = GetPlayerVehicleID(playerid);
    for(new j = 0 ; j < sizeof(mieten); j++) {
    if( Vehicle == mieten[j] ) {
    mietenIndex = j;
    continue; // Wir können aus der Schleife springen. Denn wir haben bereits einen gültigen Eintrag gefunden
    }
    }
    if( mietenIndex == -1 ) {
    // kein mieten-Fahrzeug!
    SendClientMessage(playerid,ROT,"Du SItzt in Kein MietCar");
    }
    else {
    // sitzt in einem mieten-Fahrzeug

    // Hier warst du zumindest richtig.
    }

  • mhh wen meinst den isses so okay manchmal stell ich mich einfach blöde an :D


    meinste so ?
    ocmd:mieten(playerid,params[])
    {
    new Vehicle,mietenIndex = -1;
    for(new j = 0 ; j < sizeof(mieten); j++) {
    if( Vehicle == mieten[j] ) {mietenIndex = j;continue;
    }
    SendClientMessage(playerid,ROT,"Du SItzt in Kein MietCar");
    return 1;
    }
    new prods;
    for(new firmenid=0;firmenid<MAX_BIZ;firmenid++)
    {
    prods = GetBizProds(firmenid);
    if(prods != 0)
    {
    SetBizProdsForAll(firmenid,GetBizProds(vermietung)-1);
    GivePlayerMoney(playerid,-50);
    SetBizKasseForAll(firmenid,GetBizKasse(vermietung)+50);
    SendClientMessage(playerid,ROT,"[______________________ Car Vermietung ______________________]");
    SendClientMessage(playerid,GELB,"Herzlichen Glückwunsch! ");
    SendClientMessage(playerid,GELB,"Damit du nicht laufen musst, hast du dir einen Roller Gemeitet!");
    SendClientMessage(playerid,GELB,"Kostet 500$!");
    TogglePlayerControllable(playerid,1);
    UpdateBiz();
    return 1;
    }
    else if(prods == 0)
    {
    RemovePlayerFromVehicle(playerid);
    TogglePlayerControllable(playerid,1);
    SendClientMessage(playerid,ROT,"Die Firma Car Vermitung hat keine Produkte mehr übrig!");
    return 1;
    }


    }
    return 1;
    }


    geht genau so wenisch