Ja, ich nutze Sscanf2. Sonst hätte die Blackbox ja nicht gemeckert
Wäre super, wenn wir noch das Problem mit den Texten in den Griff bekommen würden, dass alle Texte, bzw. die in Spielerreichweite, angezeigt werden.
Ja, ich nutze Sscanf2. Sonst hätte die Blackbox ja nicht gemeckert
Wäre super, wenn wir noch das Problem mit den Texten in den Griff bekommen würden, dass alle Texte, bzw. die in Spielerreichweite, angezeigt werden.
Wenn ich beim zweiten die 128 entferne, dann erscheint in der Blackbox beim Wechseln des Textes die Meldung "sscanf warning: string without a length are deprecated... ". Ich habe nur mal ein wenig rumprobiert und rausgefunden, dass wenn ich mehr Busse mit Matrixanzeigen erstelle, dass nicht alle angezeigt werden. Nach dem fünften Bus ist Schluss. In einem anderem Forum habe ich gelesen, dass man den 3D Text erst erscheinen/erstellen lassen soll, wenn der Spieler in der Nähe ist. Da müsste man mir nochmal bei helfen.
Habe nun herausgefunden, dass die 3DTextLabels existieren und zwar findet man die fehlenden am absoluten Nullpunkt der Map. Gibt es vielleicht eine andere Möglichkeit diese an die Busse zu heften, als mit "attachtoobject" ?
So vielen Dank für eure Hilfe, das System funktioniert nun fast einwandfrei. Das enzige Problemchen, dass noch besteht ist, dass der erste Bus (im Script, nicht die ID) keine Matrixanzeige hat, alle anderen schon. Fehler gibt es beim Compilen keine.
//--- BUSSYSTEM ---//
new bus01, bus02, bus03, bus04, bus05, bus06;
new Text3D:matrix_bus[MAX_VEHICLES];
//--- LS BUSBAHNHOF --//
bus01 = CreateVehicle(431,1059.2396,-1614.5643,13.7857,89.9190,42,7,-1);
SetVehicleNumberPlate(bus01, "BUS 001");
matrix_bus[bus01] = Create3DTextLabel("BETRIEBSFAHRT", GELB, 0.0, 0.0, 0.0, 50.0, 0, 0);
Attach3DTextLabelToVehicle(matrix_bus[bus01], bus01, 0.0, 5.6, 2.1);
bus02 = CreateVehicle(431,1073.6803,-1614.6606,13.7627,88.6285,42,7,-1);
SetVehicleNumberPlate(bus02, "BUS 002");
matrix_bus[bus02] = Create3DTextLabel("BETRIEBSFAHRT", GELB, 0.0, 0.0, 0.0, 50.0, 0, 0);
Attach3DTextLabelToVehicle(matrix_bus[bus02], bus02, 0.0, 5.6, 2.1);
bus03 = CreateVehicle(431,1087.7848,-1614.5278,13.7498,87.9257,42,7,-1);
SetVehicleNumberPlate(bus03, "BUS 003");
matrix_bus[bus03] = Create3DTextLabel("BETRIEBSFAHRT", GELB, 0.0, 0.0, 0.0, 50.0, 0, 0);
Attach3DTextLabelToVehicle(matrix_bus[bus03], bus03, 0.0, 5.6, 2.1);
bus04 = CreateVehicle(431,1102.0215,-1614.5664,13.7515,89.7817,42,7,-1);
SetVehicleNumberPlate(bus04, "BUS 004");
matrix_bus[bus04] = Create3DTextLabel("BETRIEBSFAHRT", GELB, 0.0, 0.0, 0.0, 50.0, 0, 0);
Attach3DTextLabelToVehicle(matrix_bus[bus04], bus04, 0.0, 5.6, 2.1);
bus05 = CreateVehicle(431,1117.3390,-1614.5463,13.7353,89.5024,42,7,-1);
SetVehicleNumberPlate(bus05, "BUS 005");
matrix_bus[bus05] = Create3DTextLabel("BETRIEBSFAHRT", GELB, 0.0, 0.0, 0.0, 50.0, 0, 0);
Attach3DTextLabelToVehicle(matrix_bus[bus05], bus05, 0.0, 5.6, 2.1);
bus06 = CreateVehicle(431,1132.9104,-1614.5719,13.9049,89.3289,42,7,-1);
SetVehicleNumberPlate(bus06, "BUS 006");
matrix_bus[06] = Create3DTextLabel("BETRIEBSFAHRT", GELB, 0.0, 0.0, 0.0, 50.0, 0, 0);
Attach3DTextLabelToVehicle(matrix_bus[bus06], bus06, 0.0, 5.6, 2.1);
ocmd:matrix(playerid,params[])
{
new string[128];
if(sscanf(params,"s[128]",string))return SendClientMessage(playerid,GRAU,"Benutzung: /matrix [MATRIXTEXT]");
format(string,sizeof(string),"%s", string);
Update3DTextLabelText(matrix_bus[GetPlayerVehicleID(playerid)], GELB, string);
return 1;
}
Ich habe die neue Variable nun eingefügt und folgenden Befehl erstellt:
ocmd:matrix(playerid,params[])
{
new matrixtext, matrix_bus, string[128];
if(sscanf(params,"s",matrixtext))return SendClientMessage(playerid,GRAU,"Benutzung: /matrix [MATRIXTEXT]");
format(string,sizeof(string),"%s", matrixtext);
Update3DTextLabelText(matrix_bus[GetPlayerVehicleID(playerid)], GELB, matrixtext); <<< Fehlehafte Zeile #815
return 1;
}
Nun schmeißt er mir folgende Fehlermeldung raus:
C:\Users\marco\Downloads\samp03x_svr_R1-2_win32\gamemodes\gnampf.pwn(815) : error 028: invalid subscript (not an array or too many subscripts): "matrix_bus"
C:\Users\marco\Downloads\samp03x_svr_R1-2_win32\gamemodes\gnampf.pwn(815) : error 001: expected token: ";", but found "]"
C:\Users\marco\Downloads\samp03x_svr_R1-2_win32\gamemodes\gnampf.pwn(815) : error 029: invalid expression, assumed zero
C:\Users\marco\Downloads\samp03x_svr_R1-2_win32\gamemodes\gnampf.pwn(815) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
4 Errors.
Danke für die Hilfe, das habe ich schon verstanden und ist soweit auch kein Problem. Mein Problem liegt grade darin, dass das Script die Matrix ID automatisch ausliest, da ja mehrere Busse mit Matrix ausgestattet sind und nur die Matrix des Spielerbusses ausgetauscht werden soll.
new bus01;
new Text3D:matrix_bus01;
public OnGameModeInit()
{
bus01 = SetVehicleNumberPlate(AddStaticVehicleEx(431,1059.2396,-1614.5643,13.7857,89.9090,42,7,-1),"BUS 001");
matrix_bus01 = Create3DTextLabel("BETRIEBSFAHRT", GELB, 0.0, 0.0, 0.0, 50.0, 0, 1);
Attach3DTextLabelToVehicle(matrix_bus01, bus01, 0.0, 0.0, 2.0);
}
Habe den Fehler gefunden, hatte das "Text3D:" am anfang vergessen. Der Bus hat aber bisher immer noch keine Matrixanzeige.
Leider nicht, er zeigt nichtmal den Standardtext "BETRIEBSFAHRT" beim betreten des Servers am Fahrzeug an...
Er gibt als Grund "Tag Mismatch" für Zeile 2 und 3 raus...
Oh mein Fehler, das ist noch vom Testen übrig geblieben. Natürlich sollte der Befehl die ID der Matrix von dem Fahrzeug, in dem der Spieler sich befindet selbst identifizieren. Da der Spieler in der Regel die Matrix ID garnicht weiß.
Hallo Leute,
ich möchte gerne ein Matrixsystem für meine Linienbusse erstellen und da möchte ich gerne nachfragen, wie ich mehrere Matrixanzeigen den Bussen zuordnen kann? Ich möchte zum einen, dass ich die Matrix als Spieler ändern kann, als auch automatisch. Das heißt, beispielsweise wenn die Linie beendet ist, das die Matrix automatisch auf "Betriebsfahrt" springt.
Würde mich über eine paar Codeschnipsel freuen, da die Anleitung im SAMP Wiki nicht wirklich ausfschlussreich ist. Das ist der Code den ich mir versucht habe zusammen zu basteln:
bus01 = SetVehicleNumberPlate(AddStaticVehicleEx(431,1059.2396,-1614.5643,13.7857,89.9090,42,7,-1),"BUS 001");
matrix_bus01 = Create3DTextLabel("BETRIEBSFAHRT", GELB, 0.0, 0.0, 0.0, 50.0, 0, 1);
Attach3DTextLabelToVehicle(matrix_bus01, bus01, 0.0, 0.0, 2.0);
[...]
ocmd:matrix(playerid,params[])
{
new matrixID, matrixtext, string[128];
if(sscanf(params,"s[128]",matrixID,string))return SendClientMessage(playerid,GRAU,"Benutzung: /matrix [MATRIXTEXT]");
//GetPlayerVehicleID(playerid);
format(string,sizeof(string),"%s", matrixtext);
Update3DTextLabelText(matrixID, 0xFFFFFFFF, matrixtext);
return 1;
}
Fehlermeldung:
[hide]
C:\Users\marco\Downloads\samp03x_svr_R1-2_win32\gamemodes\gnampf.pwn(247) : warning 213: tag mismatch
C:\Users\marco\Downloads\samp03x_svr_R1-2_win32\gamemodes\gnampf.pwn(248) : warning 213: tag mismatch
C:\Users\marco\Downloads\samp03x_svr_R1-2_win32\gamemodes\gnampf.pwn(796) : warning 213: tag mismatch
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
3 Warnings.[/hide]