1. Bitte Code einrücken.
2.
http://wiki.sa-mp.com/wiki/IsPlayerInAnyVehicle
https://wiki.sa-mp.com/wiki/GetPlayerVehicleID
ggf. noch Abfragen ob GetPlayerVehicleID ein FrakVeh ist.
1. Bitte Code einrücken.
2.
http://wiki.sa-mp.com/wiki/IsPlayerInAnyVehicle
https://wiki.sa-mp.com/wiki/GetPlayerVehicleID
ggf. noch Abfragen ob GetPlayerVehicleID ein FrakVeh ist.
Wie kann ich die beiden Enum in einem Befehl unterbringen?
Hatte es schon so versucht gehabt, aber es scheiterte dann beim Anzeigen bzw. bei OnDialogResponse, wo ich die Aufträge an den Spieler verteilt habe.
ocmd:auftragsliste(playerid, params[])
{
if(PlayerInfo[playerid][p_Job] != 2)return 1;
new str[1024], zone[MAX_ZONE_NAME], preis;
for(new i=0; i < sizeof(HausInfo); i++)
{
if(HausInfo[i][h_Bestellt] != true)continue;
preis = (100-HausInfo[i][h_Produkte])*12;
GetKamera2DZone2(HausInfo[i][h_X], HausInfo[i][h_Y], zone, MAX_ZONE_NAME);
format(str, sizeof(str), "%s\t%d/100\t$%s\t%s\n", str, HausInfo[i][h_Produkte], ConvertMoney(preis), zone);
}
for(new i=0; i < sizeof(Business); i++)
{
if(Business[i][b_bestellt] != true)continue;
//...
}
format(str, sizeof(str), "Produkte\tVerdienst\tStandort\n%s", str);
ShowPlayerDialog(playerid, DIALOG_AUFTRAGSLISTE, DIALOG_STYLE_TABLIST_HEADERS, "{FBBA42}Auftragsliste", str, "Auswählen", "Schließen");
return 1;
}
// OnDialogResponse
if(dialogid == DIALOG_AUFTRAGSLISTE)
{
if(!response)return 1;
new counter = -1;
for(new i=0; i < sizeof(HausInfo); i++)
{
if(HausInfo[i][h_Bestellt] != true)continue;
counter++;
if(counter == listitem)
{
SetPlayerCheckpoint(playerid, HausInfo[i][h_X], HausInfo[i][h_Y], HausInfo[i][h_Z], 3);
SendClientMessage(playerid, COLOR_JOB, "Du hast den Auftrag angenommen, begebe dich nun zum Marker.");
PlayerInfo[i][p_ImAuftrag] = counter;
SetPVarInt(playerid, "Haus", 1);
break;
}
}
}
Alles anzeigen
Jeweils die Schleife nochmal unter die andere setzen, nur anstatt HausInfo eben mit Business.
Ansonsten brauchst du nicht viel zu ändern, nur eben die Variablen. Den Aufbau kannst du komplett übernehmen, sprich die Schleife jeweils.
Ich habe das so wie du mir den Code gegeben hast eingefügt, doch das hat auch nicht geholfen. Hatte bei meinem aller ersten Post meinen eigenen Public vergessen, weiß nicht ob ich da einen Fehler gemacht habe.
public StopWatch(id) {
SetPlayerPos(id, W_Pos[id][0], W_Pos[id][1], W_Pos[id][2]);
SetPlayerHealth(id, W_Health[id]);
SetPlayerArmour(id, W_Armour[id]);
SetPlayerInterior(id, W_Interior[id]);
SetPlayerVirtualWorld(id, W_VirtualWorld[id]);
SetPlayerWeapons(id);
pData[id][P_Watching] = false;
TogglePlayerDynamicArea(id, Area, 1);
KillTimer(WatchUpdateTimer[id]);
specID[id] = -1;
PlayerTextDrawDestroy(id, SpecText[id][0]);
PlayerTextDrawDestroy(id, SpecText[id][1]);
PlayerTextDrawDestroy(id, SpecText[id][2]);
PlayerTextDrawDestroy(id, SpecText[id][3]);
pData[id][P_LeavingWatch] = false;
return 1;
}
Dann wäre es gut, wenn du einen separaten Thread auf machst und dort nochmal die aktuellen Codes postest, und nochmal dazu erklärst, was genau passiert, und was du manuell machst (eingibst, Schritt für Schritt) damit es wieder korrekt geht.
Daran hakt es nicht.
Mein Problem liegt in OnDialogResponse.
Dort weiß ich nicht wie ich es schreiben soll.
Denn die Markierung für den Spieler soll richtig gesetzt werden, aber wie? Weil ich ja die Aufträge zwischen Haus oder Business Auftrag bestimmen muss, damit ich z.b den Checkpoint für den Spieler richtig setzen kann.
Dann nutze ein Index, z.B. 0 -> Business
1 -> Haus
Gruß.
Versuche es so:
MoveObject(BaumID[i],Baeume[i][BX]-0.1, Baeume[i][BY]-0.1, Baeume[i][BZ]-0.1,0.05, 90.0,0.0,0.0);
Dann nutze ein Index, z.B. 0 -> Business
1 -> Haus
Gruß.
Wäre nett wenn du mir das ausführlich bzw genauer erklären wurdest.
Hallo.
Besteht die Möglichkeit, Objekte in eine eingetragene Virtuelle Welt zusetzen ?
Hallo.
Besteht die Möglichkeit, Objekte in eine eingetragene Virtuelle Welt zusetzen ?
Ist mit CreateDynamicObject möglich
CreateDynamicObject(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 300.0);
Wie stelle ich eigentlich die LagComp offline? Mir wurde immer gesagt das geht nur wenn man einen hoster hat, ich weiß aber nicht wieso.
Wie stelle ich eigentlich die LagComp offline? Mir wurde immer gesagt das geht nur wenn man einen hoster hat, ich weiß aber nicht wieso.
Gibt's eine alternative für OnPlayerWraponShot? Brauche diesen Callback, der wird aber bei lagcomomode 0 nicht aufgerufen..
Okay Danke YaBroo, der Typ der wohl damals sagte, dass ich dafür einen Hoster brauchte, hat wohl ziemliche Scheiße erzählt
Gibt's eine alternative für OnPlayerWraponShot? Brauche diesen Callback, der wird aber bei lagcomomode 0 nicht aufgerufen..
Benutzt du alle Funktionen aus dem Callback?
Mein Problem liegt in OnDialogResponse.
Dort weiß ich nicht wie ich es schreiben soll.
if(dialogid == DIALOG_AUFTRAGSLISTE)
{
if(!response)return 1;
new counter = -1;
for(new i=0; i < sizeof(HausInfo); i++)
{
if(HausInfo[i][h_Bestellt] != true) continue;
counter++;
if(counter == listitem)
{
SetPlayerCheckpoint(playerid, HausInfo[i][h_X], HausInfo[i][h_Y], HausInfo[i][h_Z], 3);
SendClientMessage(playerid, COLOR_JOB, "Du hast den Auftrag angenommen, begebe dich nun zum Marker.");
PlayerInfo[i][p_ImAuftrag] = counter;
SetPVarInt(playerid, "Haus", 1);
break;
}
}
for(new i=0; i < sizeof(Business); i++)
{
if(Business[i][b_bestellt] != true) continue;
counter++;
if(counter == listitem)
{
//Mache etwas ...
break;
}
}
}
Komisch, diese Version von dir funktioniert.
Als ich es getestet hatte, war meine Version ca. 95% wie deine Aufgebaut, wahrscheinlich hatte ich irgendwo ein dummen Fehler.
// Edit:
Danke!