Poste bitte den Teil der diese Fahrzeuge betrifft, unter OnPlayerEnterVehicle und dein LoadVehicles();.
Beiträge von Jeffry
-
-
stock LockVehicles()
{
new engine,lights,alarm,doors,bonnet,boot,objective,count;
for(new i=0;i<sizeof(PrivateVehicle);i++)
{
if(PrivateVehicle[i][p_vID] != 0)
{
count++;
GetVehicleParamsEx(PrivateVehicle[i][p_vID],engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(PrivateVehicle[i][p_vID],engine,lights,alarm,1,bonnet,boot,objective);
}
}
printf("%i Vehicles locked",count);
return 1;
} -
Welche der Variablen hast du mit [5] deklariert? Erhöhe diese.
Falls du nicht weißt welche, erstelle im /pawno/ Ordner neben der pawno.exe eine "pawn.cfg" Datei und schreibe dort "-d3" rein (ohne Anführungszeichen). Dann öffne die pawno.exe, wähle deinen Code aus und kompiliere ihn. Dann poste nochmal den Server Log, wenn du den Server startest.
-
Aus PN:
Zitatwie kann ich das jetzt in kombiniren ?

So das ein Admin alle Autos öffnen kann?ocmd:vehiclelock(playerid,params[])
{
new veh = INVALID_VEHICLE_ID;
if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
{
new Float:Pos[3];
for(new i=0;i<MAX_VEHICLES; i++)
{
GetVehiclePos(i, Pos[0], Pos[1], Pos[2]);
if(IsPlayerInRangeOfPoint(playerid, 5.0, Pos[0], Pos[1], Pos[2]))
{
veh = i;
break;
}
}
}
else if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
veh = GetPlayerVehicleID(playerid);
}
if(veh == INVALID_VEHICLE_ID) return SendClientMessage(playerid,COLOR_RED,"Es befindet sich keines deiner Fahrzeuge in der Nähe.");
if(pInfo[playerid][pAdmin] > 0 || cInfo[veh][besitzer] == playerid)
{
new engine,lights,alarm,bonnet,boot,objective;
GetVehicleParamsEx(veh,engine,lights,alarm,vehdoor,bonnet,boot,objective);
GameTextForPlayer(playerid, (vehdoor)?("~w~Fahrzeug ~g~aufgeschlossen"):("~w~Fahrzeug ~g~abgeschlossen"), 3000, 5);
PlaySoundForPlayer(playerid,1147);
SetTimerEx("PlaySoundForPlayer",500,0,"id",playerid,1147);
if(vehdoor!=0) vehdoor = 0;
else vehdoor = 1;;
SetVehicleParamsEx(veh,engine,lights,alarm,vehdoor,bonnet,boot,objective);
}
else
{
return SendClientMessage(playerid,COLOR_RED,"Das Auto gehört dir nicht.");
}
return 1;
}Unter der Bedingung dass du in "cInfo[veh][besitzer]" die playerid des Besitzers speicherst. Gegebenenfalls musst du das abändern.
-
Lade dir mal das crashdetect Plugin herunter, füge es in deinen Server ein und poste dann was im Server Log steht.
http://forum.sa-mp.com/showthread.php?t=262796 -
Ich würde dir helfen, aber ich verstehe die Frage leider nicht. Kannst du das genauer erklären, was du vor hast?
-
Ich bräuchte es dringend.
-
Da noch keine Antwort hier kam:
Dafür braucht man kein externes Tool, ich habe das immer mit einem kleinen Filterscript gemacht. (@BronX:)
#include <a_samp>public OnFilterScriptInit()
{
CreateDynamicObject(10453,-3357.1992,-3098.7998,-8.1000,1.7907,333.9788,338.8732); //object[sfshill14] [1]
return 1;
}stock CreateDynamicObject(id, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
{
//Positions-Verschiebung hier eingeben:
x+=0.0;
y+=0.0;
z+=0.0;
//------------------------------------
new string[256], File:wFile;
format(string, sizeof(string), "CreateDynamicObject(%d, %0.4f, %0.4f, %0.4f, %0.4f, %0.4f, %0.4f);\r\n", id, x,y,z, rx,ry,rz);
wFile = fopen("Verschoben.txt",io_append);
fwrite(wFile,string);
fclose(wFile);
return 1;
}Man konvertiert die Objekte zu CreateDynamicObject (Streamer Plugin) und schreibt sie in einen Filterscript in dem der Streamer nicht inkludiert ist. Dafür erstellt man selbst eine Funktion die die Map verschiebt.
Danach trägt man den Filterscript in die server.cfg ein und startet den Server (lokal reicht da völlig) und danach nimmt man den Filterscript wieder aus der server.cfg raus. In der "Verschoben.txt" im scriptfiles Ordner steht dann die verschobene Map. Gleiches Prinzip geht auch für Fahrzeuge und Pickups. Falls dafür ein Konverter benötigt wird: [jTool] Offline Map Konverter | jMapKonverter.vbs -
Habe jahrelang die DLAN Adapter von Develo verwendet, hat immer super funktioniert, also für jemanden der kein WLAN hat ist das eine gute Alternative.
Es kann allerdings vorkommen, dass nicht alle Steckdosen funktionieren, je nach dem wie das intern (in der Wand) verkabelt ist (bei nem Kumpel ging es an einer Steckdose nicht), aber normalerweise klappt es gut.
Es wird ja einfach die Stromleitung zur Übertragung verwendet, das ist also praktisch eine Kabel Verbindung, nur eben in der Wand. -
Die erste Variable und der erste Wert im zweiten enum heißen beide
playerScoresDas geht nicht.
-
if(!SpielerInfo[playerid][pEingeloggt])return 1;
-
ShowPlayerDialog(playerid,DIALOG_BANKINFO,DIALOG_STYLE_MSGBOX,"Bank",eingabewert,"Okay","");
zu:
ShowPlayerDialog(playerid,DIALOG_BANKINFO,DIALOG_STYLE_MSGBOX,"Bank",banktext,"Okay","");Die 25 von banktext musst du wahrscheinlich etwas größer machen.
-
Nein, damit werden im Query unerwünschte Zeichen in einem String maskiert.
Siehe: http://php.net/manual/de/funct…ql-real-escape-string.phpWenn du abfragen willst ob die Eingabe eine Zahl ist:
if(!IsNumeric(inputtext) || !strlen(inputtext)) return SendClientMessage(playerid, 0xFF0000FF, "Error: Keine Zahl!");Ganz unten im Gamemode:
stock IsNumeric(string[])
{
for (new i = 0, j = strlen(string); i < j; i++)
{
if ((string[i] > '9' || string[i] < '0')) return 0;
}
return 1;
} -
new veh=GetPlayerVehicleID(playerid);
zu:
new veh = INVALID_VEHICLE_ID;
if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
{
new Float:Pos[3];
for(new i=0;i<MAX_VEHICLES; i++)
{
GetVehiclePos(i, Pos[0], Pos[1], Pos[2]);
if(IsPlayerInRangeOfPoint(playerid, 5.0, Pos[0], Pos[1], Pos[2]))
{
veh = i;
break;
}
}
}
else if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
veh = GetPlayerVehicleID(playerid);
} -
if(strlen(inputtext)>0)
{
new eingabewert = strval(inputtext);
if(GetPlayerMoney(playerid)<eingabewert)return SendClientMessage(playerid,ROT,"So viel Geld hast du nicht!");
GivePlayerMoney(playerid,-eingabewert);
new query[128];
format(query,sizeof(query),"UPDATE user SET bankgeld='%i' WHERE id='%i'",sInfo[playerid][bankgeld]+eingabewert,sInfo[playerid][db_id]);
mysql_tquery(dbverbindung,query);
} -
if(strlen(inputtext) < 6)return SendClientMessage(playerid,COLOR_GRAU,"Das Passwort muss aus mindestens 6 Zeichen bestehen.");
-
Ja, eigentlich schon. Allerdings ist es recht unnötig eine Funktion dafür zu verwenden, da es ja nur die Abfrage ist.
Besser wäre sowas, das wirkt sich nicht auf die Performance aus:
#define IsAdmin(%0,%1) (sInfo[%0][alevel] >= %1)Dann kannst du auch
ocmd:gmx(playerid,params[])
{
printf("Adminrang: %d",sInfo[playerid][alevel]);
if(!IsAdmin(playerid, 6)) return SendClientMessage(playerid,KID_COL_RED, "Du bist nicht .Kid!");
SendRconCommand("gmx");
return 1;
}
verwenden. -
ocmd:gmx(playerid,params[])
{
printf("Adminrang: %d",sInfo[playerid][alevel]);
if(sInfo[playerid][alevel] < 6) return SendClientMessage(playerid,KID_COL_RED, "Du bist nicht .Kid!");
SendRconCommand("gmx");
return 1;
} -
Ja, genau.
-
Dann ändere "GetOwnVehicle" in dem Befehl zu "GetPlayerVehicleID".