Das hättest du mal den Programmierer von SA-MP gefragt, als er das nicht erstellt hat (Kye).
Bleibt nur sowas:
http://forum.sa-mp.com/showthread.php?t=215963
Da gibt es einige.
Das hättest du mal den Programmierer von SA-MP gefragt, als er das nicht erstellt hat (Kye).
Bleibt nur sowas:
http://forum.sa-mp.com/showthread.php?t=215963
Da gibt es einige.
Ändere das
case 0:
zu
default:
Dann hast du keine Probleme mehr damit.
Du kannst keine Objekte editieren, die an Autos attached sind.
Hm. Debugge das mal. Vor den switch:
printf("vID=%d / doors=%d", vID, doors);
Was wird geprintet?
Jeffry:
So war mein erster gedanke, jedoch müsste ich dem enum doch dann die ganzen werte per hand eintragen oder?
Was meinst du?
Du kannst es genau so ersetzen, dann sollte es ohne Fehler kompilieren.
Füge mal vor:
GetVehicleParamsEx(vID,engine,lights,alarm,doors,bonnet,boot,objective);
das ein:
if(vID == 0) return SendClientMessage(playerid, 0xFF0000FF, "Error: Du bist nicht in einem Auto, oder nahe genug an einem Auto.");
Ich schätze du warst nicht nahe genug am Auto.
new VehicleInfo[212][2] =
zu:
enum vehEnum {
vehName[16],
kraftstoff
};
new VehicleInfo[212][vehEnum] =
Ausgabe:
printf("%s",VehicleInfo[1][vehName]);
if(IsNumeric(inputtext) && strval(inputtext) >= 12 && strval(inputtext) <= 60)
{
//alles ok, Code hier.
}
IsNumeric: http://pastebin.com/3G94dnAw
ocmd:carlock(playerid)
{
new engine, lights, alarm, doors, bonnet, boot, objective, vID;
if(!IsPlayerInAnyVehicle(playerid))
{
new Float:x, Float:y, Float:z;
for(new i=0; i<MAX_VEHICLES; i++)
{
GetVehiclePos(i, x, y, z);
if(IsPlayerInRangeOfPoint(playerid, 5.0, x, y, z))
{
vID = i;
break;
}
}
}
else vID = GetPlayerVehicleID(playerid);
GetVehicleParamsEx(vID,engine,lights,alarm,doors,bonnet,boot,objective);
switch(doors)
{
case 0:
{
SetVehicleParamsEx(vID,engine,lights,alarm,1,bonnet,boot,objective);
new string[144];
format(string, sizeof(string),"{0xFFFFFFAA}Du hast soeben dein Fahrzeug (%s) {0x00FF00FF}abgeschlossen", GetVehicleFriendlyName(vID));
SendClientMessage(playerid,weiß, string);
}
case 1:
{
SetVehicleParamsEx(vID,engine,lights,alarm,0,bonnet,boot,objective);
new string[144];
format(string, sizeof(string), "{0xFFFFFFAA}Du hast soeben dein Fahrzeug (%s) {0xE10000FF}aufgeschlossen", GetVehicleFriendlyName(vID));
SendClientMessage(playerid,weiß, string);
}
}
return 1;
}
Doch.
Du kannst dann zum Beispiel
SendClientMessage(pID, -1, "Hallo!");
machen, dann bekommt die eingegebene ID ein Hallo gesendet.
Na der Befehl geht nur wenn du in einem Fahrzeug bist. GetPlayerVehicleID gibt die vehicleid zurück von dem Fahrzeug in dem der Spieler ist.
Wenn du ein nahegelegenes Auto nehmen willst musst du einen Loop durch alle vehicleids machen, die Position abfragen und abfragen ob der Spieler im Range diese Position ist. Wenn ja, diese id nutzen.
DIALOG_STYLE_LIST
Zu
DIALOG_STYLE_INPUT
Auslesen kannst du die Eingabe dann bei OnDialogResponse mit inputtext.
new pID = strval(inputtext);
Bist du in einem Fahrzeug?
Bekommst du die Stack Header Meldung im Compiler?
Wie ist die GetVehicleFriendlyName Funktion definiert?
Das heißt, dass du eine Verbindung nutzt, die nicht mehr besteht. Der Zeit entnehme ich, das das nicht gerade eben passiert ist, deshalb konnte ich darauf schließen, dass auch das an dem GMX lag.
Außer du hast deine Uhr verbogen.
Ja, wobei ich denke dann liegt die Verschiebung an dem GMX. Deshalb starte ich den Server bei mir immer komplett neu, damit umgehst du solche Probleme.
Musst mal prüfen ob du auch schön alle Textdraws löschen lässt wenn der Server neu gestartet wird per GMX. Grade bei Filterscripts ist das oft ein Problem, da OnPlayerConnect erneut aufgerufen wird, der Filterscript aber nicht neu gestartet wird. Hat oft zur Folge, dass Dinge doppelt vorhanden sind.
Nutze doch das hier, ganz neu und hat alles dabei:
[ INCLUDE ] Kilometer Anzeige / Berechnung
Oder guck dir ab wie es dort gemacht wurde.