Beiträge von Pascal.

    Folgender debugg code:

    Bei den Häusern hat es geklappt beim Bürger shot leider nicht mehr.
    Hier der Debug code:

    Hallo Community!
    Habe ein kleines Problem, der /enter Befehl klappt nicht mehr so ganz wie er sollte.
    Sobald der Spieler an ein Marker ist der in bdInfo fest gelegt ist soll er in ein Business Interior gelangen, dies klappt aber nicht ganz.
    Sobald 'IsPlayerInRangeOfPoint' kommt beendet er das ganze.


    #define MAX_SHOP 6


    new bdInfo[MAX_SHOP][buildingsEnum] = {
    {"Bürger Shot Nord",1559,1199.2811,-918.6648,43.1191}, // BSE1
    {"Bürger Shot West",1559,810.9824,-1616.2720,13.5469}, // BSE2
    {"Bürger Shot Nord",1559,1872.7986,2071.6619,11.0625}, // BSE3
    {"Bürger Shot Nord-West",1559,2472.3940,2034.2115,11.0625}, // BSE4
    {"Bürger Shot West",1559,2169.9138,2795.8726,10.8203} // BSE5
    };


    ocmd:enter(playerid,params[])
    {
    if(pInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GRAU,"Info: Du bist nicht Eingeloggt!");
    new string[128];
    for(new i=0; i<sizeof(bsInfo); i++)
    {
    new tmp_i = MAX_SHOP;
    print("DEBUG: Aufgerufen");
    if(!bsInfo[i][db_id])continue;
    print("bsInfo[i][db_id]");
    if(bsInfo[i][ib_x]==0.0)continue;
    print("bsInfo[i][ib_x] >0.0");
    if(!IsPlayerInRangeOfPoint(playerid, 2, bdInfo[tmp_i][bd_x], bdInfo[tmp_i][bd_y],bdInfo[tmp_i][bd_z]))continue;
    printf("IsPlayerInRangeOfPoint(playerid, 2, bdInfo[%i][bd_x], bdInfo[%i][bd_y],bdInfo[%i][bd_z]",tmp_i,tmp_i,tmp_i);
    format(string,128,"{C8C8C8}Sie können das Geschäft nicht betreten. {E90000}(Lager leer)");
    if(bsInfo[i][b_prods] <1)return SCM(playerid,COLOR_GRAU,string);
    SetPlayerPos(playerid,bsInfo[i][ib_x],bsInfo[i][ib_y],bsInfo[i][ib_z]);
    print("SetPlayerPos");
    SetPlayerInterior(playerid,bsInfo[i][b_interior]);
    print("SetPlayerInterior");
    SetPlayerVirtualWorld(playerid,i);
    SetPVarInt(playerid,"tmp_ID",tmp_i);
    printf("x='%f' | y='%f' | z='%f'",bdInfo[tmp_i][bd_x], bdInfo[tmp_i][bd_y],bdInfo[tmp_i][bd_z]);
    return 1;
    }
    for(new i=0; i<sizeof(hInfo); i++)
    {
    if(!hInfo[i][db_id])continue;
    if(hInfo[i][i_x] == 0.0)continue;
    if(!IsPlayerInRangeOfPoint(playerid,2,hInfo[i][hx],hInfo[i][hy],hInfo[i][hz]))continue;
    if(hInfo[i][h_lock] == 1)
    {
    if(!strcmp(hInfo[i][h_besitzer],SpielerName(playerid),true))
    {
    SetPlayerPos(playerid,hInfo[i][i_x],hInfo[i][i_y],hInfo[i][i_z]);
    SetPlayerInterior(playerid,hInfo[i][h_interior]);
    SetPlayerVirtualWorld(playerid,i);
    return 1;
    }
    return GameTextForPlayer(playerid,"~r~Abgeschlossen",1000,1);


    }
    else if(hInfo[i][h_lock] == 0)
    {
    SetPlayerPos(playerid,hInfo[i][i_x],hInfo[i][i_y],hInfo[i][i_z]);
    SetPlayerInterior(playerid,hInfo[i][h_interior]);
    SetPlayerVirtualWorld(playerid,i);
    }
    return 1;
    }
    return 1;
    }


    ocmd:exit(playerid,params[])
    {
    if(pInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GRAU,"Info: Du bist nicht Eingeloggt!");
    for(new i=0; i<sizeof(bsInfo); i++)
    {
    new tmp_i = GetPVarInt(playerid,"tmp_ID");
    if(GetPlayerVirtualWorld(playerid)!=i)continue;
    if(!IsPlayerInRangeOfPoint(playerid,2,bsInfo[i][ib_x],bsInfo[i][ib_y],bsInfo[i][ib_z]))continue;
    SetPlayerPos(playerid,bdInfo[tmp_i][bd_x],bdInfo[tmp_i][bd_y],bdInfo[tmp_i][bd_z]);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,0);
    return 1;
    }
    for(new i=0; i<sizeof(hInfo); i++)
    {
    if(GetPlayerVirtualWorld(playerid)!=i)continue;
    if(!IsPlayerInRangeOfPoint(playerid,2,hInfo[i][i_x],hInfo[i][i_y],hInfo[i][i_z]))continue;
    SetPlayerPos(playerid,hInfo[i][hx],hInfo[i][hy],hInfo[i][hz]);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,0);
    return 1;
    }
    return 1;
    }


    Debugg:

    Hab nochmal eine Frage,
    sobald der Spieler im bdInfo...... steht soll er in das Business rein kommen.
    Aber so ganz kriege ich das nicht hin.
    Weiß ja nicht vllt habt ihr ein Tipp wie ich das am besten machen kann.
    Wenn ich bei ocmd:enter eine schleife durch die Businesse mache und dann abfrage IsPlayerInRangeOfPoint weiß ich nicht wie ich für dieses bdInfo
    den Platzhalter besorgen soll.


    new bdInfo[][buildingsEnum] = {
    {"Bürger Shot Nord",1559,1199.2811,-918.6648,43.1191}, // BSE1
    {"Bürger Shot West",1559,810.9824,-1616.2720,13.5469}, // BSE2
    {"Bürger Shot Nord",1559,1872.7986,2071.6619,11.0625}, // BSE3
    {"Bürger Shot Nord-West",1559,2472.3940,2034.2115,11.0625}, // BSE4
    {"Bürger Shot West",1559,2169.9138,2795.8726,10.8203} // BSE5
    };


    Ebenfalls bei ocmd:exit ^^
    Bei ocmd:exit war nochmal eine andere Variante, Funktioniert leider nicht so wie ich es mir vorgestellt hatte.
    ocmd:exit(playerid,params[])
    {
    if(pInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GRAU,"Info: Du bist nicht Eingeloggt!");
    for(new i=0; i<sizeof(bdInfo); i++)
    {
    if(!IsPlayerInRangeOfPoint(playerid,2,bdInfo[i][bd_x],bdInfo[i][bd_y],bdInfo[i][bd_z]))continue;
    }
    for(new i=0; i<sizeof(bsInfo); i++)
    {
    if(GetPlayerVirtualWorld(playerid)!=i)continue;
    SetPlayerPos(playerid,bsInfo[i][bx],bsInfo[i][by],bsInfo[i][bz]);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,0);
    return 1;
    }
    for(new i=0; i<sizeof(hInfo); i++)
    {
    if(GetPlayerVirtualWorld(playerid)!=i)continue;
    if(!IsPlayerInRangeOfPoint(playerid,2,hInfo[i][i_x],hInfo[i][i_y],hInfo[i][i_z]))continue;
    SetPlayerPos(playerid,hInfo[i][hx],hInfo[i][hy],hInfo[i][hz]);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,0);
    return 1;
    }
    return 1;
    }


    ocmd:enter(playerid,params[])
    {
    if(pInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GRAU,"Info: Du bist nicht Eingeloggt!");
    new string[128];
    for(new i=0; i<sizeof(bsInfo); i++)
    {
    if(!bsInfo[i][db_id])continue;
    print("DEBUG: Weiter zu ib_x");
    if(bsInfo[i][ib_x]==0.0)continue;
    if(!IsPlayerInRangeOfPoint(playerid, 2, bdInfo[i][bd_x], bdInfo[i][bd_y],bdInfo[i][bd_z]))continue;
    printf("Biz hat ein Interior");
    print("Geht weiter zur Abfrage ob es Produkte gibt.");
    format(string,128,"{C8C8C8}Sie können das Geschäft nicht betreten. {E90000}(Lager leer)");
    if(bsInfo[i][b_prods] <1)return SCM(playerid,COLOR_GRAU,string);
    printf("DEBUG:nothing");
    SetPlayerPos(playerid,bsInfo[i][ib_x],bsInfo[i][ib_y],bsInfo[i][ib_z]);
    SetPlayerInterior(playerid,bsInfo[i][b_interior]);
    SetPlayerVirtualWorld(playerid,i);
    return 1;
    }
    for(new i=0; i<sizeof(hInfo); i++)
    {
    if(!hInfo[i][db_id])continue;
    if(hInfo[i][i_x] == 0.0)continue;
    if(!IsPlayerInRangeOfPoint(playerid,2,hInfo[i][hx],hInfo[i][hy],hInfo[i][hz]))continue;
    if(hInfo[i][h_lock] == 1)
    {
    if(!strcmp(hInfo[i][h_besitzer],SpielerName(playerid),true))
    {
    SetPlayerPos(playerid,hInfo[i][i_x],hInfo[i][i_y],hInfo[i][i_z]);
    SetPlayerInterior(playerid,hInfo[i][h_interior]);
    SetPlayerVirtualWorld(playerid,i);
    return 1;
    }
    return GameTextForPlayer(playerid,"~r~Abgeschlossen",1000,1);


    }
    else if(hInfo[i][h_lock] == 0)
    {
    SetPlayerPos(playerid,hInfo[i][i_x],hInfo[i][i_y],hInfo[i][i_z]);
    SetPlayerInterior(playerid,hInfo[i][h_interior]);
    SetPlayerVirtualWorld(playerid,i);
    }
    return 1;
    }
    return 1;
    }

    Warum werden keine 3DTexte + Pickups angezeigt?
    for(new i=0; i<sizeof(bdInfo); i++)
    {
    format(string,200,"--> %s <--\nBenutze die Taste 'ENTER' um das Gebäude zu betreten.",bdInfo[i][bd_itext]);
    bdInfo[i][bd_pickup] = CreatePickup(bdInfo[i][bd_pickup],1,bdInfo[i][bd_x],bdInfo[i][bd_x],bdInfo[i][bd_z],-1);
    bdInfo[i][bd_text] = Create3DTextLabel(string, -1, bdInfo[i][bd_x],bdInfo[i][bd_x],bdInfo[i][bd_z], 10, 0,1);
    }

    Eine Funktion musst du erstellen.
    Du sagst ja theoritsch wenn er auf dem Button 1 drückt das er diese Funktion ausführen soll.
    Und diese Funktion existiert ja garnicht also kann er diese auch nicht ausfüren.
    Deshalb kommt auch der error.

    Zu deine 2 Frage, probier es mal so.
    for(new i=0; i<sizeof(IsAMedicCar); i++)
    {
    if(GetPlayerVehicleID(playerid) == IsAMedicCar[i])
    {
    if(GetPVarInt(playerid,"Fraktion") != 2)
    {
    RemovePlayerFromVehicle(playerid);
    SCM(playerid,COLOR_GREY,"Du bist kein Sanitäter.");
    }
    }
    return 1;
    }

    Danke, dass Funktioniert nun :)
    Nur noch das eine brauch ich, dass die aktuellen Aufträge in der lsite angezeigt werden.
    ocmd:tblist(playerid,params[])
    {
    if(pInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GRAU,"Info: Du bist nicht Eingeloggt!");
    if(pInfo[playerid][pFraktion] <1)return SCM(playerid,COLOR_GRAU,"Du bist in keiner Fraktion!");
    if(pInfo[playerid][pFraktion] !=5)return SCM(playerid,COLOR_GRAU,"Du bist kein Trucker!");
    if(pInfo[playerid][pProdukte] <60)return SCM(playerid,COLOR_GRAU,"Du hast weniger als 60 Produkte, kauf erst welche.");
    new id = GetPVarInt(playerid,"b_Auftrag");
    new index=0,string[128];
    SCM(playerid,COLOR_GELB,"__________| Aufträge |__________");
    for(new i=0; i<10; i++)
    {
    if(id != 0)
    {
    if(bsInfo[id][b_tauftrag] == 0)continue;
    format(string,sizeof(string)," %i: Das Business (%i) braucht einen Lieferanten",i,id);
    SendClientMessage(playerid,COLOR_GRAU,string);
    index++;
    }
    }
    if(index == 0)return SCM(playerid,COLOR_GRAU,"Keine Aufträge Vorhanden.");
    return 1;
    }

    Mit der Datenbank ID.
    if(dialogid == DIALOG_TRUCKERMESS)
    {
    if(response)
    {
    for(new i=0; i<sizeof(bsInfo); i++)
    {
    if(!bsInfo[i][db_id])continue;
    if(!bsInfo[i][b_id])continue;
    if(!IsPlayerInRangeOfPoint(playerid,2,bsInfo[i][bx],bsInfo[i][by],bsInfo[i][bz]))continue;
    bsInfo[i][b_tauftrag] =1;
    new auftragID = bsInfo[i][db_id];
    SetPVarInt(playerid,"b_Auftrag",auftragID);
    SetPVarInt(playerid,"b_tauftrag",bsInfo[i][b_tauftrag]);
    }
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    new string[200];
    if(IsPlayerConnected(i) && pInfo[i][pFraktion]==5)
    {
    new lID = GetPVarInt(playerid,"b_Auftrag");
    format(string,200,"Business besitzer %s braucht einen Lieferanten",SpielerName(playerid));
    SendClientMessage(i,COLOR_GELB,string);
    format(string,200,"Benutze /tbaccept [%i], um diesen auftrag anzunehmen.",lID);
    SCM(i,COLOR_GELB,string);
    SCM(playerid,COLOR_GELB,"Du hast einen Lieferanten bestellt, bitte haben sie Geduld bis dieser Auftrag akzeptiert wird.");
    SetPVarInt(playerid,"b_AuftragOwner",playerid);
    }
    return 1;
    }
    }
    else{}
    return 1;
    }

    Habe mit 3 verschiedene Bizes ein Trucker bestellt, aber nur der letzte ging.
    Biz ID 1 hat bestellt,
    Biz ID 4 hat bestellt,
    Biz ID 3 hat bestellt.
    Und die Biz ID 3 ging nur und und habe dann den Checkpoint von Biz ID 4 aber bekommen.
    Die Variable b_AuftragOwner, dort ist nur die playerid drinne der den Auftrag auch erstellt hat.
    Wegen dem Name ^^

    im PVar b_Auftrag ist die Datenbank ID des Business gespeichert die einen Auftrag gemacht hat.
    Die biz ID soll dann die datenbank id sein.
    Bsp: Biz besitzer macht ein Auftrag, dieses Business hat die ID 3.
    Der Trucker soll dann "/tbaccept 3" eingeben, damit er einen Checkpoint erhält beim Biz und dieses Beliefern kann.
    So und wenn ein Auftrag schon gibt sagen wir mal ID 3 gibt es schon und Biz besitzer mit der DB_ID 4 macht ein Auftrag soll ID 3 nicht überschrieben werden.
    Heißt wenn er ID 3 annimmt soll ID 4 trz erhalten bleiben.

    Mh weiß ich auch gerade nicht mehr.
    Glaube das wars eigentlich, weil ich das sowieso anderes mit dem Biz machen, Sorry :D
    Ich danke dir trotzdem :)


    //EDIT:
    Jeffry:
    Habe noch ein Problem -.-
    Und zwar als Business besitzer kann man ein Trucker benachrichtigen, dass dieser das Produkt auffüllt.
    So wenn der Trucker es akzeptiert soll ein Checkpoint kommen.
    Aber sobald ich ein Auftrag akzeptiere sind alle anderen Aufträge weg.
    Oder er sagt mir das dieses Business kein Trucker bestellt hat.
    Und wenn das alles beide geht wird immer ein falscher checkpoint gesetzt.
    Und die liste Funktioniert auch nicht so ganz.


    Hier sind die codes dafür:
    ocmd:tbaccept(playerid,params[])
    {
    if(pInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GRAU,"Info: Du bist nicht Eingeloggt!");
    if(pInfo[playerid][pFraktion] <1)return SCM(playerid,COLOR_GRAU,"Du bist in keiner Fraktion!");
    if(pInfo[playerid][pFraktion] !=5)return SCM(playerid,COLOR_GRAU,"Du bist kein Trucker!");
    if(pInfo[playerid][pProdukte] <60)return SCM(playerid,COLOR_GRAU,"Du hast weniger als 60 Produkte, kauf erst welche.");
    if(GetPVarInt(playerid,"ta_pID") == 1)return SCM(playerid,COLOR_GRAU,"Erledige erst dein Auftrag!");
    new id = GetPVarInt(playerid,"b_Auftrag");
    if(sscanf(params,"i",id))return SCM(playerid,COLOR_GRAU,"Info: /tbaccept [bizID]");
    if(bsInfo[id][b_tauftrag] == 0)return SCM(playerid,COLOR_GRAU,"Dieses Business hat keinen Lieferanten bestellt.");
    if(id == 0)return SCM(playerid,COLOR_GRAU,"Falsche Business ID!");
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    new string[200];
    if(IsPlayerConnected(i) && pInfo[i][pFraktion]==5)
    {
    format(string,200,"Trucker %s hat den Business Auftrag (%d) erfolgreich angenommen, und wird ihn jetzt Beliefern.",
    SpielerName(playerid),id);
    SCM(i,COLOR_GELB,string);
    SetPlayerCheckpoint(playerid,bsInfo[id][bx],bsInfo[id][by],bsInfo[id][bz],5);
    printf("bsInfo[%i][bx],bsInfo[%i][bx],bsInfo[%i][bx]",id,id,id);
    SCM(playerid,COLOR_GELB,"Dein Auftrag wurde dir auf der Karte makiert.");
    if(!IsPlayerConnected(GetPVarInt(playerid,"b_AuftragOwner")))continue;
    format(string,200,"Trucker %s hat deinen Auftrag angenommen, und wird dich jetzt Beliefern.",SpielerName(playerid));
    SCM(GetPVarInt(playerid,"b_AuftragOwner"),COLOR_GELB,string);
    }
    break;
    }
    bsInfo[id][b_tauftrag] = 0;
    SetPVarInt(playerid,"ta_pID",1);
    SetPVarFloat(playerid,"ta_X",bsInfo[id][bx]);
    SetPVarFloat(playerid,"ta_Y",bsInfo[id][by]);
    SetPVarFloat(playerid,"ta_Z",bsInfo[id][bz]);
    return 1;
    }


    ocmd:tblist(playerid,params[])
    {
    if(pInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GRAU,"Info: Du bist nicht Eingeloggt!");
    if(pInfo[playerid][pFraktion] <1)return SCM(playerid,COLOR_GRAU,"Du bist in keiner Fraktion!");
    if(pInfo[playerid][pFraktion] !=5)return SCM(playerid,COLOR_GRAU,"Du bist kein Trucker!");
    if(pInfo[playerid][pProdukte] <60)return SCM(playerid,COLOR_GRAU,"Du hast weniger als 60 Produkte, kauf erst welche.");
    new id = GetPVarInt(playerid,"b_Auftrag");
    new index=0,string[128];
    SCM(playerid,COLOR_GELB,"__________| Aufträge |__________");
    for(new i=0; i<10; i++)
    {
    if(id != 0)
    {
    if(bsInfo[id][b_tauftrag] == 0)continue;
    format(string,sizeof(string)," %i: Das Business (%i) braucht einen Lieferanten",i,id);
    SendClientMessage(playerid,COLOR_GRAU,string);
    index++;
    }
    }
    if(index == 0)return SCM(playerid,COLOR_GRAU,"Keine Aufträge Vorhanden.");
    return 1;
    }


    if(dialogid == DIALOG_TRUCKERMESS)
    {
    if(response)
    {
    for(new i=0; i<sizeof(bsInfo); i++)
    {
    if(!bsInfo[i][db_id])continue;
    if(!bsInfo[i][b_id])continue;
    if(!IsPlayerInRangeOfPoint(playerid,2,bsInfo[i][bx],bsInfo[i][by],bsInfo[i][bz]))continue;
    bsInfo[i][b_tauftrag] =1;
    new auftragID = bsInfo[i][db_id];
    SetPVarInt(playerid,"b_Auftrag",auftragID);
    SetPVarInt(playerid,"b_tauftrag",bsInfo[i][b_tauftrag]);
    }
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    new string[200];
    if(IsPlayerConnected(i) && pInfo[i][pFraktion]==5)
    {
    new lID = GetPVarInt(playerid,"b_Auftrag");
    format(string,200,"Business besitzer %s braucht einen Lieferanten",SpielerName(playerid));
    SendClientMessage(i,COLOR_GELB,string);
    format(string,200,"Benutze /tbaccept [%i], um diesen auftrag anzunehmen.",lID);
    SCM(i,COLOR_GELB,string);
    SCM(playerid,COLOR_GELB,"Du hast einen Lieferanten bestellt, bitte haben sie Geduld bis dieser Auftrag akzeptiert wird.");
    SetPVarInt(playerid,"b_AuftragOwner",playerid);
    }
    return 1;
    }
    }
    else{}
    return 1;
    }