Beiträge von Pascal.

    Wie würde ich das jetzt am besten machen?
    Das alle fahrzeuge aufgelistet werden im Dialog?
    Bis dahin habe ich das geschafft, mehr ideen habe ich leider nicht mehr, weil mir auch nichts mehr einfällt wie ich das jetzt am besten machen könnte.
    if(dialogid == DIALOG_PRIVATFAHRZEUG)
    {
    if(response)
    {
    new string[250];
    switch(listitem)
    {
    case 0:
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(!strcmp(cInfo[i][besitzer], SpielerName(playerid)))
    {
    new mID = GetVehicleModel(cInfo[i][id_x]);
    if(mID !=0)
    {
    format(string,250,"SLOT 1: %s\nSLOT 2: %s\nSLOT: 3: %s",VehicleName[mID-400],VehicleName[mID-400],VehicleName[mID-400]);
    ShowPlayerDialog(playerid,DIALOG_PFSLOTS,DIALOG_STYLE_LIST,"Fahrzeuge",string,"Zurück","Abbrechen");
    }
    }
    }
    }
    }
    }
    return 1;
    }

    CreatePlayerCar(playerid,modelid,Float:x,Float:y,Float:z,Float:r,cl1,cl2,vsteuern)
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    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][c_schaden] = 1000.0;
    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);
    SaveCarToDB(playerid,i);
    return 1;
    }
    return 1;
    }

    Nicht ganz.
    Habe dir mal eine stelle makiert, dort wo er stehen bleibt.
    ocmd:slots(playerid,params[])
    {
    new string[250];
    for(new i=0; i<sizeof(cInfo); i++)
    {
    print("if(!strcmp(cInfo[i][besitzer], SpielerName(playerid)))");
    if(!strcmp(cInfo[i][besitzer], SpielerName(playerid)))
    {
    new carID = cInfo[i][c_slot];
    new mID = GetVehicleModel(cInfo[carID][model]);
    print("mID >0");
    if(mID >0) //Bis hier hin geht der print, danach geht er nicht weiter.
    {
    printf("%s",VehicleName[mID-400]);
    format(string,250,"%s",VehicleName[mID-400]);
    print("Abgesendet");
    SCM(playerid,COLOR_GRAU,string);
    }
    }
    }
    return 1;
    }

    Jeffry:
    Hab mal wieder ein Problem ;( Dieses Car system ist irgendwie etwas schwirig.
    Ich weiß nicht was daran falsch ist an der mID-400.
    Sobald ich diesen befehl aufrufe bekommen ich folgenden debug log:


    ocmd:slots(playerid,params[])
    {
    new string[250];
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(!strcmp(cInfo[i][besitzer], SpielerName(playerid)))
    {
    new carID = cInfo[i][c_slot];
    new mID = GetVehicleModel(cInfo[carID][model]);
    if(carID >0)
    {
    format(string,250,"%s",VehicleName[mID-400]);
    SCM(playerid,COLOR_GRAU,string);
    }
    }
    return 1;
    }
    return 1;



    Code
    [23:28:31] [debug] Run time error 4: "Array index out of bounds"
    [23:28:31] [debug]  Accessing element at negative index -400
    [23:28:31] [debug] AMX backtrace:
    [23:28:31] [debug] #0 0004e4dc in public ocmd_slots (playerid=0, params[]=@000c3c18 " ") at myRL.p:4925
    [23:28:31] [debug] #1 native CallLocalFunction () from samp-server.exe
    [23:28:31] [debug] #2 00000760 in public OnPlayerCommandText (playerid=0, cmdtext[]=@000c3bfc "/slots") at C:\Users\R5\Desktop\Pawnstar\cc\include\ocmd.inc:78


    Du brauchst das Plugin & Include "Streamer", einfach mal Gogglen :)
    Ansonsten schöne map :) 10/10 Fischen.

    Probiere es so mal.
    Denke es lag an den CarName, da du wie es aussieht falsch gemacht hast.


    if(newstate==PLAYER_STATE_DRIVER)
    {
    tachovar[playerid]=SetTimerEx("tachotimer",200,true,"i",playerid);
    TextDrawShowForPlayer(playerid,tacho[playerid]);
    GetPlayerPos(playerid,xx[playerid],yy[playerid],zz[playerid]);


    for(new i = 0; i<MAX_CARS; i++)
    {
    if(GetPlayerVehicleID(playerid) == CarInfo[i][fahrzeugcreate] && AdminDuty[playerid] == 0)
    {
    new vID = GetPlayerVehicleID(playerid);
    new mID = GetVehicleModel(vID);
    format(string, sizeof(string),"{FF7800}Möchtest sie dieses Fahrzeug kaufen?\n{FAFAFA}Name: %s\nPreis: %d$\nReparaturkosten %d$\nMindestlevel: %d\nVersicherungskosten: %d",CarName[mID-400],CarInfo[i][CarPreis],CarInfo[i][ReparaturPreis],CarInfo[i][Autolevel],CarInfo[i][Versicherung]);
    TogglePlayerControllable(playerid,0);
    ShowPlayerDialog(playerid,Autokauf,DIALOG_STYLE_MSGBOX,"Autokauf",string,"Kaufen","Abbrechen");
    }
    return 1;
    }
    }

    if(IsPlayerInAnyVehicle(playerid))
    {
    new seatid = GetPlayerVehicleSeat(playerid);
    SetPlayerPosEx(playerid,x,y + 4,z);
    SetVehiclePosEx(GetPlayerVehicleID(playerid),x,y + 4,z);
    PutPlayerInVehicleEx(playerid,GetPlayerVehicleID(playerid),seatid);
    SetPlayerInterior(playerid,GetPlayerInterior(pID));
    SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(pID));
    LinkVehicleToInterior(GetPlayerVehicleID(playerid),GetPlayerInterior(pID));
    SetVehicleVirtualWorld(GetPlayerVehicleID(playerid),GetPlayerVirtualWorld(pID));
    format(string,sizeof(string),"%s hat sich zu dir geportet.",SpielerName(playerid));
    SendClientMessage(pID,GELB,string);
    format(string,sizeof(string),"Du hast dich zu %s geportet.",SpielerName(pID));
    SendClientMessage(playerid,GELB,string);
    }
    else
    {
    SetPlayerPosEx(playerid,x,y + 1,z);
    SetPlayerInterior(playerid,GetPlayerInterior(pID));
    SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(pID));
    format(string,sizeof(string),"%s hat sich zu dir geportet.",SpielerName(playerid));
    SendClientMessage(pID,GELB,string);
    format(string,sizeof(string),"Du hast dich zu %s geportet.",SpielerName(pID));
    SendClientMessage(playerid,GELB,string);
    }

    Hehe :D
    Aber nein das Problem ist ja das ich die 2 nicht einfach rein schreiben kann, da die ID nicht die aufgelistete datenbank ID ist sondern eine andere
    die jedes Business zugewiesen bekommt sobald das geschäft gewählt wurde.
    Heißt es gibt eine "db_id" die automatisch hoch zählt und eine "b_id" das ist in dem Fall die 2.

    Funktioniert nun, dass mit dem tank Preis habe ich etwas anders gemacht mit einer weiteren Schleife.
    Vielen Dank :)


    Sieht nun so aus:
    ocmd:fillcar(playerid,params[])
    {
    if(pInfo[playerid][pEingeloggt] == 0)return SCM(playerid,COLOR_GRAU,"Info: Du bist nicht Eingeloggt!");
    if(!IsPlayerInAnyVehicle(playerid))return SCM(playerid,COLOR_GRAU,"Du bist in keinem Fahrzeug!");
    new vID = GetPlayerVehicleID(playerid);
    new string[128];
    if(!HasCarMotor(vID))return SCM(playerid,COLOR_GRAU,"Dieses Fahrzeug besitzt kein Motor!");
    if(GetPVarInt(playerid,"tank_Rechnung")>0)return SCM(playerid,COLOR_GRAU,"Begleiche erst die Rechnung in der Tankstelle.");
    if(IsMotorOn(vID))return SCM(playerid,COLOR_GRAU,"Schalte erst den Motor ab bevor du Tanken tust.");
    for(new i=0; i<sizeof(bsInfo); i++)
    {
    if(!bsInfo[i][db_id])continue;
    if(bsInfo[i][b_id] !=2)continue;
    SetPVarInt(playerid,"biz_tank_ID",i);
    break;
    }
    for(new i=0; i<sizeof(tkInfo); i++)
    {
    new id = GetPVarInt(playerid,"biz_tank_ID");
    if(!IsPlayerInRangeOfPoint(playerid,2,tkInfo[i][tk_x],tkInfo[i][tk_y],tkInfo[i][tk_z])) continue;
    if(!HasCarMotor(vID))return SCM(playerid,COLOR_GRAU,"Dieses Fahrzeug besitzt kein Motor!");
    if(GetPVarInt(playerid,"tank_Rechnung")>0)return SCM(playerid,COLOR_GRAU,"Begleiche erst die Rechnung in der Tankstelle.");
    if(IsMotorOn(vID))return SCM(playerid,COLOR_GRAU,"Schalte erst den Motor ab bevor du Tanken tust.");
    format(string,128,"Willkommen bei der Tankstelle.\nAktueller Preis pro Liter: %i$",bsInfo[id][b_gasprice]);
    ShowPlayerDialog(playerid,DIALOG_FILLCAR,DIALOG_STYLE_INPUT,"Tankstelle",string,"Tanken","Abbrechen");
    return 1;
    }
    return SCM(playerid,COLOR_GRAU,"Du bist nicht in der nähe einer Tankstelle.");
    }

    Funktioniert leider auch nicht, er meint wieder das es fillcar nicht gibt.
    Folgender debug code der kam:

    Code
    [20:17:41] [debug] Run time error 4: "Array index out of bounds"
    [20:17:41] [debug]  Accessing element at index 15 past array upper bound 14
    [20:17:41] [debug] AMX backtrace:
    [20:17:41] [debug] #0 0005329c in public ocmd_fillcar (playerid=0, params[]=@000c0d6c " ") at myRL.p:5184
    [20:17:41] [debug] #1 native CallLocalFunction () from samp-server.exe
    [20:17:41] [debug] #2 000006f0 in public OnPlayerCommandText (playerid=0, cmdtext[]=@000c0d48 "/fillcar") at C:\Users\R5\Desktop\Pawnstar\cc\include\ocmd.inc:78

    Setz mit einem PVar/Variable auf 1 das der andere Spieler herrausgefordet wurde.
    bsp SetPvarInt(playa,"accept_Race",1);
    Dann soll er eine nachricht kriegen.
    Nun zum accept befehl frag dort ab ob "accept_Race" = 1 ist.
    Wenn er akzeptiert hat setzt du den PVar/Variable wieder auf 0.

    Jetzt sagt er mir das ich den Motor abschalten soll, egal wo ich bin.
    Wenn ich den abgeschaltet habe, sagt er zu mir dass der Befehl nicht existiert.
    Dazu bekomme ich noch so ein Debug code: