Testweise habe ich diese 50 Meter entfernt gemacht. Sind therotisch unterschiedliche.
Interior benutzen alle das gleiche.
Pickups zum betreten und Test zum betreten Funktioniert überhaupt nicht.
Werden im Script geladen aber wenn ich da bin ist keins Vorhanden.
Problem mit Autohaus/Biz System
- Pascal.
- Geschlossen
- Erledigt
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
-
-
Dann zeig mal wie du das Zeug zum betreten der Business lädst.
-
Was mir gerade auffält ich habe diese sachen wieder raus gelöscht.
Ich habe das anders gemacht das man im Business Pickup sein muss das klappt auch.
Das einzige was ich noch drin hab ist das hier das sie im Interior eine Info kriege das sie /essen benutzen müssen.
Wird aber auch nicht angezeigt.
CreatePickup(1239,1,376.5327,-68.1133,1001.5151);
format(string,200,"Benutze '/essen' um das Menü zu öffnen.");
Create3DTextLabel(string,-1,376.5327,-68.1133,1001.5151,5,0,1);//EDIT:
Egal, ich werde es anders machen.
Habe nochmal darüber nach gedacht ob es nicht besser ist 1 Biz zu haben der ca 5 Bürger Shots leitet.
Weil sonst kommt ja nix auf der Kasse
Habe mit den Pickups brauche ich halt Hilfe, das die laden tuen. -
-
Mh weiß ich auch gerade nicht mehr.
Glaube das wars eigentlich, weil ich das sowieso anderes mit dem Biz machen, Sorry
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;
} -
Eins nach dem anderen, so bringt das gar nichts.
Fangen wir mit dem Befehl an.Also, vom bloßen Draufschauen kann ich dir schon sagen, dass der falsch ist, allerdings kann ich dir nicht sagen wie er richtig sein muss, da ich nicht weiß was du vor hast.
Als Trucker gebe ich /bacccept ein, und was als bizID? Und was wird hier gespeichert: GetPVarInt(playerid,"b_Auftrag"); ?
Das überschreibst du mit sscanf wieder, also was brauchst du nun? -
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. -
Schreibe es mal so:
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 deinen Auftrag!");
new id;
if(sscanf(params,"i",id))return SCM(playerid,COLOR_GRAU,"Info: /tbaccept [bizID]");
if(id <= 0 || id >= sizeof(bsInfo))return SCM(playerid,COLOR_GRAU,"Falsche Business ID!");
if(bsInfo[id][b_tauftrag] == 0)return SCM(playerid,COLOR_GRAU,"Dieses Business hat keinen Lieferanten bestellt.");
new string[145];
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && pInfo[i][pFraktion]==5)
{
format(string,sizeof(string),"Trucker %s hat den Business Auftrag (%d) erfolgreich angenommen, und wird ihn jetzt Beliefern.", SpielerName(playerid));
SCM(i,COLOR_GELB,string);
if(i == GetPVarInt(playerid,"b_AuftragOwner")) //Diese Abfrage macht dem Code nach keinen Sinn, da ich nicht weiß wofür die Variable steht.
{
format(string,sizeof(string),"Trucker %s hat deinen Auftrag angenommen, und wird dich jetzt Beliefern.",SpielerName(playerid));
SCM(i,COLOR_GELB,string);
}
}
break;
}
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.");
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;
}Wie geschrieben, die markierte Abfrage macht keinen direkten Sinn, aber teste es trotzdem mal.
-
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 -
Wie erstellst du diese Aufträge? Vielleicht ist da der Fehler, denn dem obigen Befehl nach kann das Problem das du beschreibst nicht auftreten.
-
-
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;
} -
Aha, so langsam macht der Code mehr Sinn.
Schreibe es so: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 deinen Auftrag!");
new tmpid;
if(sscanf(params,"i",tmpid))return SCM(playerid,COLOR_GRAU,"Info: /tbaccept [bizID]");
if(tmpid <= 0)return SCM(playerid,COLOR_GRAU,"Falsche Business ID!");
new id = -1;
for(new i = 0; i < sizeof(bsInfo); i++)
{
if(bsInfo[i][db_id] == tmpid)
{
id = i;
break;
}
}
if(id == -1)return SCM(playerid,COLOR_GRAU,"Falsche Business ID!");
if(bsInfo[id][b_tauftrag] == 0)return SCM(playerid,COLOR_GRAU,"Dieses Business hat keinen Lieferanten bestellt.");
new string[145];
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && pInfo[i][pFraktion]==5)
{
format(string,sizeof(string),"Trucker %s hat den Business Auftrag (%d) erfolgreich angenommen, und wird ihn jetzt Beliefern.", SpielerName(playerid));
SCM(i,COLOR_GELB,string);
if(id == GetPVarInt(i,"b_Auftrag") && GetPVarInt(i, "b_tauftrag") == 1)
{
format(string,sizeof(string),"Trucker %s hat deinen Auftrag angenommen, und wird dich jetzt Beliefern.",SpielerName(playerid));
SCM(i,COLOR_GELB,string);
}
}
break;
}
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.");
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;
}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]);
break;
}
new string[145];
new lID = GetPVarInt(playerid,"b_Auftrag");
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && pInfo[i][pFraktion]==5)
{
format(string,sizeof(string),"Business besitzer %s braucht einen Lieferanten",SpielerName(playerid));
SendClientMessage(i,COLOR_GELB,string);
format(string,sizeof(string),"Benutze /tbaccept [%i], um diesen auftrag anzunehmen.",lID);
SCM(i,COLOR_GELB,string);
}
return 1;
}
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;
} -
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;
} -
Das dürfte dann so klappen:
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 index,string[145];
SCM(playerid,COLOR_GELB,"__________| Aufträge |__________");
for(new i=0; i<sizeof(bsInfo); i++)
{
if(bsInfo[i][b_tauftrag] == 0)continue;
index++;
format(string,sizeof(string)," %i: Das Business (%i) braucht einen Lieferanten",index,bsInfo[i][db_id]);
SendClientMessage(playerid,COLOR_GRAU,string);
}
if(index == 0) SCM(playerid,COLOR_GRAU,"Keine Aufträge Vorhanden.");
return 1;
} -
Funktioniert alles einwandfrei.
Vielen Dank Jeffry -
breadfish.de
Hat das Thema geschlossen.