Das heißt, dass du in keinem postg Fahrzeug bist. Fahrzeug ID 473 ist kein postg Fahrzeug.
Beiträge von Jeffry
-
-
Ok, dann ist es so wie ich es vermutet habe, das würde auch deinem Code entsprechen.
Um die Virtuelle Welt, in der du bist, herauszufinden, nutze diesen Befehl:if(!strcmp(cmdtext, "/meinewelt", true))
{
new str[128];
format(str, sizeof(str), "Meine Welt: %d", GetPlayerVirtualWorld(playerid));
SendClientMessage(playerid, -1, str);
return 1;
}Wenn du dir dann die ID der Virtuellen Welt ausgelesen hast, trägst du sie jeweils hier ein:
new dP[MAX_DPOINTS][dutyPoints] =
{
{"LSPD-Duty Punkt",1239, 324.7148, 305.5775, 999.1484,Text3D:-1,HIER},
{"SFPD-Duty|Equip Punkt",1239,238.0306,125.4313,1003.2188,Text3D:-1,HIER},
{"Army-Duty Punkt",1239,223.7495,1869.6224,13.1406,Text3D:-1,HIER},//AB
{"Army-Duty|Equip Punkt",1239,414.5320,2531.6768,19.1618,Text3D:-1,HIER},//HB
{"SAMAG-Duty Punkt",1239,1805.0970,-1303.9603,71.2734,Text3D:-1,HIER},
{"SAMAG-EQUIP Punkt",1239,1803.2406,-1304.9993,71.2734,Text3D:-1,HIER},//HEALS
{"SFPD-Heal Punkt",1240,242.3738,108.9842,1003.2188,Text3D:-1,HIER},
{"LSPD-Heal Punkt",1240,321.9749,315.2595,999.1484,Text3D:-1,HIER},
{"Army-Heal Punkt",1240,240.0738,1859.0677,14.0840,Text3D:-1,HIER}, //AB
{"Army-Heal Punkt",1240,413.9103,2539.3020,16.5276,Text3D:-1,HIER} //HB
};Wieso hast du im enum eigentlich zwei mal was mit der Virtuellen Welt stehen?
dv,
v_worldGegegebenenfalls kannst du da eins entfernen, ansonsten trage oben zur Sicherheit die Virtuelle Welt zwei mal bei "HIER" ein, also: 3,3 anstatt nur 3 (Beispiel).
Wenn du das für alle gemacht hast, sollten die Pickups nach dem kompilieren und Neustart des Servers alle in der richtigen Virtuellen Welt sichtbar sein.
-
Beides kannst du mit einem Command Prozessor machen. Da gibt es einige zur Auswahl, zum Beispiel dcmd, ocmd, zcmd,... Such dir einen raus. Beispiele zu Befehlen sind eigentlich bei allen dabei.
Splitten kannst du die params dann mit sscanf oder strtok, welches dir lieber ist.
Lege dir die Befehle mal an, schau mal ob du das komplett hinbekommst. Wenn nicht, sag Bescheid wenn und wo du hängst, und Beschreibe was das Problem ist.
-
Ahja, ok!
Ein Pickup kannst du nicht an ein Objekt attachen. Aber du kannst mit dieser Funktion die Position (mit angegebener Distanz) vor dem Objekt herausfinden, und dann das Pickup nach der Drehung des Objektes wieder erstellen:
stock GetPosVorObjekt(objectid, Float:dist, &Float:x, &Float:y, &Float:z) //©Jeffry
{
new Float:rotX,Float:rotY,Float:rotZ;
GetObjectRot(objectid, rotX, rotY, rotZ);
GetObjectPos(objectid, x, y, z);
x += (dist * floatsin(-rotZ, degrees));
y += (dist * floatcos(-rotZ, degrees));
return true;
}Beispiel:
new Float:x, Float:y, Float:z;
GetPosVorObjekt(deinATMObjekt, 5.0, x, y, z);
deinPickup = CreatePickup(1240, 1, x, y, z, 0); -
Willst du, dass die ATM Maschine immer in etwa die Richtung schaut, in der du stehst? (Rote Position = Spieler-Position?)
Oder soll es sich einfach im Kreis drehen?Oder wie darf ich das Bild verstehen? Bin mir nicht sicher, wie genau du das meinst.
-
Ahja, ok.
Hast du Includes, die OnDialogResponse hooken?Nutzt du nur den Gamemode und einen Filterscript, oder hast du noch andere Filterscripts?
Am Gamemode kann es eigentlich nicht liegen, da zuerst die Filterscripts ausgeführt werden, daher gehe ich davon aus, dass du noch andere Filterscripts hast. Hast du diese bei OnDialogResponse auch geprüft?
-
Warum hast du das geändert?
if(Postinfo[playerid][post_Checkpoint] == 0)wieder zu:
if(Postinfo[playerid][post_Checkpoint] == 1)
(Am besten den Code auf Post #28 nehmen.)Dann nochmal den Log posten.
-
Du bist nicht in einem der solchen Fahrzeuge:
if(IsPlayerInVehicle(playerid,postg[f]))Prüfe das mal. Wenn doch (wenn du denkst), dann debugge es so:
Spoiler anzeigen printf("aktiv: %d", Post[playerid][post_bAktiv]);
if(Post[playerid][post_bAktiv])
{
printf("checkpoint: %d", Post[playerid][post_Checkpoint]);
if(Post[playerid][post_Checkpoint] == 1)
{
for(new i = 0; i < sizeof(postCars); i++)
{
if(IsPlayerInVehicle(playerid,postCars[i]))
{
new veh = GetPlayerVehicleID(playerid);
Post[playerid][post_Checkpoint] = 0;
DisablePlayerCheckpoint(playerid);
printf("Setze random checkpoint");
new rand = random(sizeof(RandomSpawn1));
SetPlayerCheckpoint(playerid,RandomSpawn1[rand][0], RandomSpawn1[rand][1],RandomSpawn1[rand][2],5.0);
return 1;
}
}
}
else
{
for(new f = 0; f < sizeof(postg); f++)
{
printf("Fahrzeug: %d / postg: %d", GetPlayerVehicleID(playerid), postg[f]);
if(IsPlayerInVehicle(playerid,postg[f]))
{
sInfo[playerid][post]++;
Post[playerid][post_Checkpoint] = 1;
printf("post: %i",sInfo[playerid][post]);
if(sInfo[playerid][post] == 10)
{
SendClientMessage(playerid,0xFF0000FF,"Fertig");
DisablePlayerCheckpoint(playerid);
return 1;
}
else
{
printf("Setze checkpoint hinter Fahrzeug.");
new Float:x,Float:y,Float:z;
GetPosHinterFahrzeug(veh,7,Float:x,Float:y,Float:z);
sInfo[playerid][postx] = x;
sInfo[playerid][posty] = y;
sInfo[playerid][postz] = z;
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid,sInfo[playerid][postx], sInfo[playerid][posty],sInfo[playerid][postz],3.0);
return 1;
}
}
}
}
}
Was steht im Log? -
if(hour > 4)
Das reicht dann schon.
Somit kannst du den Befehl ab 00:00:00 bis 04:59:59 verwenden. -
Stimmen die Login Daten? Wenn du die Datenbank neu eingespielt hast, dann kann es sein, dass diese sich geändert haben.
-
if(hour != 23 && minutes != 59)
Allerdings macht das wenig Sinn, da du es dann nur um genau 23:59 verwenden kannst. Wenn das gewollt ist, ok. Wen nicht, wie willst du es haben?
-
Debugge es bitte mal so:
printf("aktiv: %d", Post[playerid][post_bAktiv]);
if(Post[playerid][post_bAktiv])
{
printf("checkpoint: %d", Post[playerid][post_Checkpoint]);
if(Post[playerid][post_Checkpoint] == 1)
{
for(new i = 0; i < sizeof(postCars); i++)
{
if(IsPlayerInVehicle(playerid,postCars[i]))
{
new veh = GetPlayerVehicleID(playerid);
Post[playerid][post_Checkpoint] = 0;
DisablePlayerCheckpoint(playerid);
printf("Setze random checkpoint");
new rand = random(sizeof(RandomSpawn1));
SetPlayerCheckpoint(playerid,RandomSpawn1[rand][0], RandomSpawn1[rand][1],RandomSpawn1[rand][2],5.0);
return 1;
}
}
}
else
{
for(new f = 0; f < sizeof(postg); f++)
{
if(IsPlayerInVehicle(playerid,postg[f]))
{
sInfo[playerid][post]++;
Post[playerid][post_Checkpoint] = 1;
printf("post: %i",sInfo[playerid][post]);
if(sInfo[playerid][post] == 10)
{
SendClientMessage(playerid,0xFF0000FF,"Fertig");
DisablePlayerCheckpoint(playerid);
return 1;
}
else
{
printf("Setze checkpoint hinter Fahrzeug.");
new Float:x,Float:y,Float:z;
GetPosHinterFahrzeug(veh,7,Float:x,Float:y,Float:z);
sInfo[playerid][postx] = x;
sInfo[playerid][posty] = y;
sInfo[playerid][postz] = z;
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid,sInfo[playerid][postx], sInfo[playerid][posty],sInfo[playerid][postz],3.0);
return 1;
}
}
}
}
}
Poste dann, was im Log steht, wenn du in den Checkpoint fährst. -
Ok, das kannst du ganz leicht testen.
Füge diesen Befehl bei OnPlayerCommandText ein, und gehe an die Position an der das Pickup sein sollte. Dann gebe einfach /weltnull ein. Ist es dann da?if(!strcmp(cmdtext, "/weltnull", true)) return SetPlayerVirtualWorld(playerid, 0), SendClientMessage(playerid, -1, "NULL!! :-)");
-
Du lädst den Filterscript aber schon, oder? Also er steht in der server.cfg und er wird auch richtig geladen (steht im server_log)?
-
Kommst du mit einem Datenbankprogramm (phpMyAdmin/...) auf die Datenbank drauf?
Hast du dich mal mit dem Host in Verbindung gesetzt? Wenn du am Script nichts geändert hast ist es wohl auch kein Scrip Problem.
-
Filterscript in der server.cfg eingefügt und geladen (siehst du im server_log) ?
-
Hast du etwas geändert, zwischen "als es noch ging" und "es geht nicht mehr"?
-
Bist du Leader dieser Fraktion? Wenn ja, dann schreibe es doch mal so:
new frakid = PlayerInfo[playerid][pMember];
if(frakid == 0) frakid = PlayerInfo[playerid][pLeader];
format(query,sizeof(query),"UPDATE `gangrangs` SET `rangname%i` = '%s' WHERE `frakid`='%i'",level,result,frakid);
printf(query);
Gegebenenfalls eben `fID` im Query, je nach dem was richtig ist. -
Sind die Pickups die in einem Interior angezeigt werden sollen auch in einer anderen Virtuellen Welt, oder sind die in der Virtuellen Welt 0?
Welche der Pickups sollen eigentlich in einer anderen Virtuellen Welt sein?
Am Interior kann es nicht liegen, da Pickups in allen Interiors angezeigt werden. -
Also wenn du es so schreibst, und ganz unten in die letzte Zeile deines Filterscript einfügst, dann sollte es ohne Probleme klappen.
public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp("/zeit", cmdtext, true))
{
SetWorldTime(12);
return 1;
}if(!strcmp("/wetter", cmdtext, true))
{
SetWeather(19);
return 1;
}
return 0;
}Edit:
@[LnD]JustMe.77: Filterscript natürlich