Lade dir das Crashdetect Plugin herunter und füge es in deinen Server ein.
Dann poste was im Server Log steht, wenn du den Befehl ausführst.
http://forum.sa-mp.com/showthread.php?t=262796
Beiträge von Jeffry
-
-
Ja, genau.
-
Die 2 steht für 2 Teams.
Für Team 0 kannst du es bei OnPlayerRequestSpawn so machen:
if(teamCount[0] >= 20)
{
SendClientMessage(playerid, 0xFF0000FF, "Error: Team ist voll (maximal 20).");
return 0;
}Analog für Team 1.
-
Nein, nur das was mit dem Spam zu tun hat (erster Post). Ich weiß ja nicht was du sonst nur für Systeme hast, die GetTickCount nutzen. Dort funktioniert es ja gegebenenfalls trotzdem.
-
Ja, nach dem Prinzip.
Das macht das return 0 in dem Code den ich gepostet habe. Das verhindert den Spawn.
-
Der Code wurde auch nicht ausgeführt, laut dem Log.
Suche darin nach "spielerfahrzeuge" -> kein Treffer -> Code wurde nicht ausgeführt.Prüfe das mal und stelle sicher, dass der Code ausgeführt wird.
-
Keine der beiden Funktionen wurde ausgeführt. Bist du sicher, dass du die Funktionen auch aufrufen lässt?
Eins ist mir grade noch aufgefallen:
format(query, sizeof(query), "UPDATE `UPDATE `carmieten` SET `mPosX`='%f', `mPosY`='&f', `mPosZ`='&f', `mPosA`='&f', `mLocked`='%d', `mOwner`='%s', `mPreis`='%d', `mModellID`='%d' WHERE `mCarID`='%d'",
carMieten[i][mPosX],carMieten[i][mPosY], carMieten[i][mPosZ], carMieten[i][mPosA], carMieten[i][mLocked], carMieten[i][mOwner], carMieten[i][mPreis], carMieten[i][mModellID] , i);
zu:
format(query, sizeof(query), "UPDATE `carmieten` SET `mPosX`='%f', `mPosY`='&f', `mPosZ`='&f', `mPosA`='&f', `mLocked`='%d', `mOwner`='%s', `mPreis`='%d', `mModellID`='%d' WHERE `mCarID`='%d'",
carMieten[i][mPosX],carMieten[i][mPosY], carMieten[i][mPosZ], carMieten[i][mPosA], carMieten[i][mLocked], carMieten[i][mOwner], carMieten[i][mPreis], carMieten[i][mModellID] , i);Aber ausgeführt werden muss der Code schon. Deshalb wurde auch kein Error ausgegeben, da der Code gar nicht aufgerufen wurde.
-
Beim Chat und bei den Befehlen, da klappt es ja beides mal nicht.
-
Callback für Callback mit der Kommentarfunktion /* */ auskommentieren.
So lange, bis dein Compiler wieder was anzeigt. Dann hast du das Callback mit dem Fehler gefunden, oder die Funktion. Dort drinnen machst du dann das gleiche wieder, mit kleinen Stücken, bis du die Zeile gefunden hast. -
Oh, irgendwas scheint da bei dir nicht zu passen, mit GetTickCount.
Mache es so:
Ändere die GetTickCount's zu gettime.
Und die +100's zu +1.Das macht wahrscheinlich auch so mehr Sinn, weil in einer zehntel Sekunde schafft man es kaum zu spammen, so ist es dann eine Sekunde.
-
Das passt.
Dann musst du es mal debuggen:
if(GetTickCount() < Spieler[playerid][pLastSpamChat][0])
zu:
printf("GetTickCount: %d | pLastSpamChat %d", GetTickCount(), Spieler[playerid][pLastSpamChat][0]);
if(GetTickCount() < Spieler[playerid][pLastSpamChat][0])Was wird dir so im Server Log geprintet, wenn du was im Chat eingibst, zwei Sekunden wartest, und nochmal was eingibst?
-
Wie sieht denn dein pLastSpamCmd im enum aus?
-
Nein, nur wenn du das Team auflöst.
Wenn einer Raus geht:
teamCount[1]--;
(Wenn er in Team 1 ist) -
Kein Funkgerät & in keinem Polizei Auto = Fehler.
Hast es ja schon richtig gesagt.

(oder)
zu
&& (und) -
Ahh, jetzt macht der Befehl Sinn, wie er aufgebaut ist.
Eigentlich müsste es sogar klappen.Versuche es so:
ocmd:createhouse(playerid,params[])
{
if(pInfo[playerid][pAdmin] == 5)
{
new p,r,int;
if(sscanf(params,"iii",p,r,int))return SendClientMessage(playerid,COLOR_GREY,"Benutze: /createhouse [Preis] [Zimmer (max. 6)] [Interior ID (Liste: /hints)]");
{
if(r <= 6)
{
if(int <= 10)
{
new st[16];
format(st,sizeof st,"%d",r);
mysql_pquery(dbHandle,"SELECT * FROM `haeuser`","OnQueryFinish","sdddsd","SELECT * FROM `haeuser`",QuerySelectAllHouse,playerid,p,st,int);
SendClientMessage(playerid,COLOR_LIGHTGREEN,"Du hast das Haus erfolgreich erstellt!");
}
else
{
SendClientMessage(playerid,COLOR_LIGHTRED,"Die InteriorID eines Hauses darf nicht größer als 10 sein!");
}
}
else
{
SendClientMessage(playerid,COLOR_LIGHTRED,"Die Zimmer eines Hauses dürfen nicht mehr als 6 sein!");
}
}
}
return 1;
}case QuerySelectAllHouse:
{
cache_get_data(rows,fields);
if(rows >= MAX_HAEUSER) return 0;
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Y,Z);
format(query,sizeof query,"INSERT INTO `haeuser` (`ID`, `PosX`, `PosY`,\
`PosZ`, `Level`, `Preis`, `Besitzer`, `Bought`, `Rooms`,`InteriorID`,`Interior`,`IntX`,`IntY`,`IntZ`,`Rentable`,\
`RentPrice`, `Renter1`, `Renter2`, `Renter3`, `Renter4`, `Renter5`");
format(query,sizeof query,"%s,`Renter6`)VALUES('%d', '%f', '%f', '%f', '5', '%d', 'Niemand','0', '%d',\
'%d', '%d', '%f', '%f', '%f', '1', '100', 'Niemand', 'Niemand', 'Niemand', 'Niemand', 'Niemand', 'Niemand')"\
,query,rows,X,Y,Z,pID,strval(extrastr),extraid,hIntID[extraid][0],hInteriorList[extraid][0], hInteriorList[extraid][1], hInteriorList[extraid][2]);
mysql_pquery(dbHandle,query);format(str,sizeof str,"SELECT * FROM `haeuser` WHERE `ID` = '%d'",rows);
mysql_pquery(dbHandle, str, "OnQueryFinish", "sdd", str, QueryCallLoadHouse, playerid);
}Falls das nicht klappt, dann schaue bitte im MySQL Log nach, was dir dort ausgegeben wird (gegebenenfalls zuvor löschen/leeren) und poste das mal.
-
Unter den Includes:
new teamCount[2];Bei OnPlayerRequestSpawn:
switch(gTeam[playerid])
{
case TEAM_ARMY:
{
if(teamCount[0] > teamCount[1])
{
SendClientMessage(playerid, 0xFF0000FF, "Error: Team ist voll.");
return 0;
}
teamCount[0]++;
SetPlayerTeam(playerid, 0);
SetPlayerColor(playerid, COLOR_BLUE);
new rand = random(sizeof(UsaSpawn));
SetPlayerPos(playerid, UsaSpawn[rand][0], UsaSpawn[rand][1], UsaSpawn[rand][2]);
}
case TEAM_TERRORIST:
{
if(teamCount[1] > teamCount[0])
{
SendClientMessage(playerid, 0xFF0000FF, "Error: Team ist voll.");
return 0;
}
teamCount[1]++;
SetPlayerTeam(playerid, 1);
SetPlayerColor(playerid, COLOR_RED);
new rand = random(sizeof(RusSpawn));
SetPlayerPos(playerid, RusSpawn[rand][0], RusSpawn[rand][1], RusSpawn[rand][2]);
}
}
Beachte, dass gTeam[playerid] einen korrekten Wert (1 oder 0) haben muss. Das musst du zuvor oder bei OnPlayerRequestClass anhand des Skins festlegen.Wenn du die Teams leerst:
teamCount[0] = 0;
teamCount[1] = 0; -
Schau mal in den MySQL Log, was dort drin steht.
Lösche ihn gegebenenfalls zuvor, damit du nur die aktuelle Ausgabe hast. -
Ein Problem dieser Art liegt nicht am Compiler, sondern am Code.
Du hast irgendwas am Code verändert, und das fehlerhaft, was den Compiler zum Absturz bringt (Syntax-Fehler der nicht erkannt werden kann).Wenn du willst kannst du mir den ganzen Server Ordner per PN schicken, dann schaue ich ihn mir an und behebe dir das Problem.
Warum den ganzen Ordner? Weil ich deine Includes nicht habe.
Alternativ, wie du es selbst machen kannst:
Klammere Stück für Stück Code aus, so lange, bis der Compiler nicht mehr abstürzt. So kannst du dich an die Fehlerzeile hinarbeiten. -
Kommt die SendClientMessage im Chat, dass das Blaulicht angebracht wurde?
Was steht im Server Log, wenn du, nach den CreateObject's das hier printest?
printf("vehicleid: %d | %d / %d / %d / %d", vehicleid, sirene[0][vehicleid], sirene[1][vehicleid], sirene[2][vehicleid], sirene[4][vehicleid]); -
kann man nicht sogar gettime von eine art andere adresse ermitteln ?
@Jeffry dein part
Kann man zwar machen, ist aber nicht zu empfehlen. Daten von extern zu beziehen ist nicht wirklich toll, vor allem wegen der Performance. Es sollte möglichst vermieden werden.
Das Plugin macht da mehr Sinn.
Oder alternativ, um sich das Plugin zu sparen diese Include:
http://forum.sa-mp.com/showthread.php?t=347605