Ich habe derzeit probleme mit mein Fraktionssystem:
Bei SaveUserStats fehlt im format in den Parametern vor dem Admin Level der Name, deshalb wird nichts gespeichert.
Zum Spawn Befehl kann ich nichts sagen, da du den nicht gepostet hast.
Ich habe derzeit probleme mit mein Fraktionssystem:
Bei SaveUserStats fehlt im format in den Parametern vor dem Admin Level der Name, deshalb wird nichts gespeichert.
Zum Spawn Befehl kann ich nichts sagen, da du den nicht gepostet hast.
ocmd:motor(playerid,params[])
{
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return 1;
new engine,lights,alarm,doors,bonnet,boot,objective;
new vid = GetPlayerVehicleID(playerid);
new string[145];
new sendername[MAX_PLAYER_NAME];
GetPlayerName(playerid, sendername, MAX_PLAYER_NAME);
GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
if(vid != INVALID_VEHICLE_ID)
{
if(engine == VEHICLE_PARAMS_ON)
{
SetVehicleParamsEx(vid,VEHICLE_PARAMS_OFF,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective);
format(string, sizeof(string), "* %s stellt den Motor ab.", sendername);
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Du stellst den Motor ab.");
//ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
}
else
{
SetVehicleParamsEx(vid,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
format(string, sizeof(string), "* %s betätigt die Zündung. Der Motor springt an!", sendername);
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Du betätigst die Zündung.");
//ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
}
SetPlayerChatBubble(playerid, string, 0xFFFFFFFF, 100.0, 10000); //10 Sekunden, 100 Meter
}
return 1;
}
Sorry das ich mich jetzt erst wieder melde.
Kein Problem.
Kannst du bitte mal das
//mysql_log(); //<- Kommentar vor mysql_log entfernen um den MySQL Debug-Modus zu aktivieren
entkommentieren, dann den Code kompilieren und dann den Server nochmal laufen lassen?
Poste dann bitte den Log aus /logs/plugins/mysql.txt.
Die Fehlermeldungen sind mir unerklärlich - und geben ja auch keinen Sinn.
Funktioniert denn das Registrieren? Ich nehme an, nicht, oder?
Ab Zeile 62, der Code steht außerhalb der Funktion.
Schreibe es so:
Function OnPlayerSpawn(playerid)
{
StopAudioStreamForPlayer(playerid);
M_OnPlayerSpawn(playerid);
TextDrawShowForPlayer(playerid,Copyright);
TextDrawShowForPlayer(playerid,Datum);
GW_OnPlayerSpawn(playerid);
if(PlayerInfo[playerid][pTot] == 1 && PlayerInfo[playerid][pLevel] > 1)
{
SendClientMessage(playerid, COLOR_LIGHTRED, " ");
SendClientMessage(playerid, COLOR_LIGHTRED, " ");
SendClientMessage(playerid, COLOR_LIGHTRED, " ");
SendClientMessage(playerid, COLOR_LIGHTRED, " ");
SendClientMessage(playerid, COLOR_LIGHTRED, " ");
SendClientMessage(playerid, COLOR_LIGHTRED, " ");
SendClientMessage(playerid, COLOR_LIGHTRED, " ");
SendClientMessage(playerid, COLOR_LIGHTRED, " ");
SendClientMessage(playerid, COLOR_LIGHTRED, " ");
SendClientMessage(playerid, COLOR_YELLOW, "|________ Krankenhaus ________|");
SendClientMessage(playerid, COLOR_ORANGE, "Du bist gestorben , deswegen bist du im Krankenhaus");
SendClientMessage(playerid, COLOR_ORANGE, "Warte 60 Sekunden bis deine Behandlung fertig ist!");
SetPlayerSpawn(playerid);
if(IsPlayerInFrac(playerid, 1))
{
SetPlayerColor(playerid,NAMECOLOR_LSCOP);
}
else if(IsPlayerInFrac(playerid, 4))
{
SetPlayerColor(playerid, NAMECOLOR_MEDIC);
}
else
{
SetPlayerColor(playerid,TEAM_HIT_COLOR);
}
ResetPlayerWeapons(playerid);
return 1;
}
STDPlayer[playerid] = 0;
gTeam[playerid] = PlayerInfo[playerid][pTeam]; //Set the Team
if (gTeam[playerid] == 4) //medic / criminal reset team
{
gTeam[playerid] = 3;
}
if(gPlayerLogged[playerid] == 0)
{
SendClientMessage(playerid, COLOR_LIGHTRED, "** Du musst dich vorher einloggen oder dir einen Account erstellen! ***");
Kick(playerid);
return 1;
}
if(gPlayerAccount[playerid] == 1)
{
ForceClassSelection(playerid);
TogglePlayerSpectating(playerid, 0);
}
else if(gPlayerAccount[playerid] == 0)
{
ForceClassSelection(playerid);
TogglePlayerSpectating(playerid, 0);
}
if(AtClothes[playerid] == 1)
{
PlayerInfo[playerid][pChar] = GetPlayerSkin(playerid);
PlayerInfo[playerid][pModel] = GetPlayerSkin(playerid);
AtClothes[playerid] = 0;
}
if(gTeam[playerid] == 11 && PlayerInfo[playerid][pLeader] < 1)
{
MedicBill[playerid] = 0;
new rand = random(sizeof(CIV));
SendClientMessage(playerid, COLOR_LIGHTRED, "Du bist kein Chef dieser Familie, du bist Zivilist !");
PlayerInfo[playerid][pTeam] = 3;
gTeam[playerid] = 3;
SetSpawnInfo(playerid, gTeam[playerid], CIV[rand],0.0,0.0,0.0,0,0,0,0,0,0,0);
PlayerInfo[playerid][pModel] = CIV[rand];
SpawnPlayer(playerid);
}
return 1;
}
Nach dem return 1 in Zeile 5 fehlt eine geschweifte Klammer zu.
Die RemoveBuildingForPlayer Zeilen müssen unter OnPlayerConnect stehen.
ocmd:gotols(playerid)
{
SetPlayerPos(playerid, /*x, y, z hier eintragen*/);
SetPlayerInterior(playerid, 0);
return SendClientMessage(playerid,Grau,"Willkommen in Los Santos.");
}
An markierter Stelle musst du dann die Koordinaten von dem gewünschten Punkt in Los Santos eintragen.
ocmd:goto(playerid,params[])
{
new pID, string[145];
if(sscanf(params,"u",pID)) return SendClientMessage(playerid,Grau,"Benutzung: /goto [playerid]");
new Float:x, Float:y, Float:z;
GetPlayerPos(pID, x, y, z);
SetPlayerPos(playerid, x, y, z);
new interior = GetPlayerInterior(pID);
SetPlayerInterior(playerid, interior);
GetPlayerName(playerid, string, MAX_PLAYER_NAME);
format(string, sizeof(string), "Du wurdest zu %s teleportiert.", string);
SendClientMessage(playerid,Grau,string);
return 1;
}
Eventuell hast du in "new FrakInfo" 12 im Array eingetragen, sprich Fraktions-IDs von 0 bis 11 (12 Stück). Gibst du dann in der Datenbank für das Fahrzeug die Fraktions-ID 22 an, dann geht das nicht.
Ist aber wie gesagt nur eine Vermutung.
[16:06:31] [debug] #0 native fwrite () from samp-server.exe
Du versuchst im /f-Befehl in eine Datei zu schreiben, die entweder nicht geöffnet wurde (fopen) oder nicht existiert.
Der Code passt dann so.
Mit der Änderung, die ich dir gegeben habe, hat es nichts zu tun, das ist ja der gleiche Code mit einer Abfrage zusätzlich.
habe auch die Datenbank resetted...
Dann könnte ich mir vorstellen, dass ein Fahrzeug die Fraktions ID 22 angegeben hatte, wobei die maximale ID die 11 ist.
Das "new FrakCars ..." hast du noch vergessen. Das wäre gut zu wissen, wie da die Array-Größe ist.
Zu deinem Edit:
Hattest du zuvor vielleicht einen alten Stand hochgeladen?
Kannst du mal den ganzen Code zu dem print posten?
Und das Array FrakInfo / FrakCars mit jeweiligem enum dazu.
Ändere
printf("%s | %s | %d",CarName[GetVehicleModel(ccc)-400],FrakInfo[FrakCars[ccc][frakid]][frakname], ccc);
zu:
if(GetVehicleModel(ccc) > 0) printf("%s | %s | %d",CarName[GetVehicleModel(ccc)-400],FrakInfo[FrakCars[ccc][frakid]][frakname], ccc);
else printf(">Unknown< | %s | %d",FrakInfo[FrakCars[ccc][frakid]][frakname], ccc);
Wenn du die Schritte wie beschrieben machst, dann sollte das funktionieren.
Hast du die pawno.exe im Ordner geöffnet, in dem die pawn.cfg liegt? Kompilierst du auch den richtigen Code (Pfad prüfen, Kopie?).
Das ist richtig so. Um die Zeile mit dem Fehler zu identifizieren, gehe bitte nach Punkt 1.5 vor: Tipps: Scripting-Probleme richtig erklären
Alles anzeigen5. Das Crashdetect Plugin
In vielen Fällen kann durch die Ausführung des Crashdetect-Plugins bereits eine mögliche Fehlerquelle gefunden werden. Es ist daher empfehlenswert, wenn man, vor allem bei Server-Abstürzen und Befehlen die "Unknown Command" zurück geben, zuvor dieses Plugin laufen lässt.
Das Crashdetect Plugin kann hier heruntergeladen werden: Crashdetect Plugin - Download (SA-MP Forum Thread)Schlecht:
Gut:
Code[12:34:56] [debug] Server crashed while executing gamemode.amx [12:34:56] [debug] AMX backtrace: [12:34:56] [debug] #0 native SendClientMessageToAll () from samp-server.exe [12:34:56] [debug] #1 00000c2c in public OnPlayerCommandText (0, 162072) from gamemode.amx [12:34:56] [debug] Native backtrace: [12:34:56] [debug] #0 0049dc0c in ?? () from samp-server.exe
Es besteht zudem, in den meisten Fällen, die Möglichkeit, sich die Fehlerzeile als Zahl direkt im Server Log mit ausgeben zu lassen. Dies ist extrem hilfreich, denn man weiß sofort, wo der Fehler liegt.
Hierfür muss allerdings folgendes gemacht werden:
- Im Ordner /pawno/ eine Datei "pawn.cfg" erstellen (Neues Textdokument -> Speichern unter -> pawn.cfg).
- Inhalt der pawn.cfg eintragen: -d3
- Die "pawno.exe" neu öffnen und den Gamemode über die Öffnen-Funktion auswählen.
- Den Code neu kompilieren.
- Den Fehler/Absturz erneut erzeugen, es steht nun die Zeile im Log dabei, in der der Fehler aufgetreten ist.
Code... [12:34:56] [debug] #1 00000c2c in public OnPlayerCommandText (0, 162072) at C:\Users\Jeffry\Desktop\gamemode.pwn:1337 ...
Hier wäre der Fehler in der Datei "gamemode.pwn" in der Zeile 1337.
Eventuell bricht dein Code bei OnGameModeInit irgendwo in der Mitte ab.
Lade dir mal das Crashdetect Plugin herunter und prüfe, ob dir etwas ausgegeben wird.
http://forum.sa-mp.com/showthread.php?t=262796
Filterscripts zum Ingame-Erstellen von Textdraws sollten immer auf einem leeren Server verwendet werden und nicht im Live-Betrieb verwendet werden.
Create3DTextLabel("ENTER drücken", COLOR_RED, fbInfo[i][FB_X], fbInfo[i][FB_Y], fbInfo[i][FB_Z], 5, fInfo[i][FB_VirtualWorld], 0);
zu:
Create3DTextLabel("ENTER drücken", COLOR_RED, fbInfo[i][FB_X], fbInfo[i][FB_Y], fbInfo[i][FB_Z], 5, fbInfo[i][FB_VirtualWorld], 0);
Wie sieht dein enum zu fbInfo aus?