habs bei mir compilet ohne probleme.. wird wohl an was anderem liegen?
Beiträge von Tround
-
-
probier doch einfach mal einen debug und suche nach dem fehler..
z.b:
if(!dini_Exists(Autodatei)) continue;
print(Autodatei);
oder
printf("model %i posx %f posy %f posz %f posa %f farbe1 %i farbe2 %i",Autos[playerid][i][modelid],Autos[playerid][i][posx],Autos[playerid][i][posy],Autos[playerid][i][posz]+1.5,Autos[playerid][i][posa],Autos[playerid][i][Farbe1],Autos[playerid][i][Farbe2]);
einfach mal überprüfen was so geladen wird und ob alles stimmt.. -
if(GetPVarInt(playerid,"Adminlevel")=rang))return 1;
Du musst immer alle Klammern auch schließen.
hat er doch ? zähl nochmal genau nach.. fällt dir vielleicht schwer aber probiers trotzdem nochmal
abragen sind immer mit ==
if(GetPVarInt(playerid,"Adminlevel")==rang)return 1; -
@ paddy
ist das nicht genau das gleich was auch ich gepostet hab ? wtf.. -
scheint du hast nicht die neueste version von samp..
diese publics/funktionen wurden erst in 0.3e hinzugefügt -
ajo ich wollts nur mal sagen dass wenn der stock IsVehicleEmpty heißt will man doch eine 1 returnt bekommen falls es wahr ist und 0 falls es falsch ist oder nicht?
Indirekt wenn man MAX_PLAYERS nutzt dann versteh ich es aber bei GetMaxPlayers.. ist es eh whayne von meiner sicht aus
naja ob man jetzt MAX_PLAYERS auf 100 stellt oder die slot zahl auf 100 stellt ist das gleich da geb ich dir recht.. aber warum soll die schleife den spieler überprüfen der nicht connected ist.. das verursacht lags..
for(new i =0;i<GetMaxPlayers();i++)
oder
for(new i=0;i<MAX_PLAYERS;i++)
oder
for(new i=0;i<100;i++)
das ist alles das gleiche..zudem liest GetMaxPlayers(); die zahl der slots aus der server.cfg aus was auch wiederrum mehr resourcen frisst wie einfach MAX_PLAYERS abzufrage..
-
mach mal den
stock IsVehicleEmpty(vehicleid)
{
for(new i =0; i < GetMaxPlayers(); i++)
{
if(!IsPlayerConnected(i)) continue;
if(IsPlayerInVehicle(i,vehicleid)) return 0;
}
return 1;
}
zu denstock IsVehicleEmpty(vehicleid)
{
for(new i =0; i < GetMaxPlayers(); i++)
if(IsPlayerInVehicle(i,vehicleid)) return 1;
return 0;
}dann sollte es eig gehen
du hast isplayerconnected gelöscht? das ist ziemlich wichtig in einer schleife..
zudem hast du die returns vertauscht.. wenn jemand in dem auto sitzt returnst du 1 ?? genau falschrum wenn man sich den namen vom dem stock anschaut...hier mal mein vorschlag:
ocmd:respawnfw(playerid,params[])
{
if(SpielerInfo[playerid][Leader] == 0)return SendClientMessage(playerid,COLOR_WHITE,"Du bist kein Leader!");
if(SpielerInfo[playerid][Leader] == 2)
{
for(new i; i < sizeof(FactionCars); i++)
{
if(FactionCars[i][fFaction][0] == GetPlayerFaction(playerid))//vlcht liegt auch hier der fehler
{
if(!IsVehicleEmpty(FactionCars[i][fCarid]))continue;
DestroyAndCreateFactionCar(FactionCars[i][fCarid]);
}
}
}
return 1;
} -
public ScoreUpdate()
{
for(new i=0;i<MAX_PLAYERS;i++)
{
if(!IsPlayerConnected(i))continue;
new textstring[41];
format(textstring, sizeof(textstring), "Score: %d",GetPlayerScore(i));
TextDrawSetString(textdraw[i], textstring);
TextDrawShowForPlayer(i, textdraw[i]);
}
return 1;
}so müsste es funktionieren.. aber das scheint ziemlich resourcenunfreundlich zu sein.. könnte man besser lösen (z.b nur dann updaten wenn auch wirklich ein level vergeben wird)
-
SetTimer("ScoreUpdate",1000,true);
@ OnGameModeInit
joa da liegt dein fehler.. wo nimmt der public playerid her?
richtig.. nirgendwo deshalb ist playerid immer bei 0. -
wie wird ScoreUpdate(playerid) aufgerufen?
-
wo wird etwas in "hausid" eingespeichert? falls nirgendwo ist klar warums immer 0 ist
-
if(GetPlayerVirtualWorld(playerid) != GetPlayerVirtualWorld(i)) { return 0; }
falls also der erste spieler in der schleife nicht in der gleichen virtuellen welt ist wird der befehl also abgebrochen.. gute taktik....not..
sowas von fail -
irgendwo unter sscanf.. wo du willst
aber noch bei den if abfragen.. -
ganz einfach.. du frägst zwar ab ob mats über 500 liegt aber nicht ob mats unter 1 liegt..
if(mats<1)
{
SendClientMessage(playerid, COLOR_GRAD1, "Du kannst minimal 1 Fraktions-Materialien kaufen!");
return 1;
} -
sind die dialoge zufällig in einem filterscript?
oder hast du mehrere gamemodes? -
auch falsch...
Tom
vlcht solltest du mal den ganzen befehl/funtion posten +/- 2 zeilen -
das hast du oben schon vorgeschlagen aber das ist leider falsch.. außer du hast es selbst definiert was aber keinen sinn machen würde.. MAX_PLAYER_NAME ist schon richtig so..
dann würde auch sowas dranstehen wie undefined symbol MAX_PLAYER_NAME ... da es aber schon standartmäßig definiert ist.. -
hast du es unter onplayerconnect auch gefixxt? da es fast überall falsch war
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
if(dini_Exists(Spielerdatei))und für die warnings .. ohne code kann keiner helfen
-
zeig mal zeile Zeile 348.. oftmals liegt eine zeile drüber der fehler
-
jo
wenn er den namen nicht ausließt is klar das die datei keinen namen hat