Wieso schreibst du das immer so unordentlich und wieso startest du Schleifen immer ab 1?
Indizes beginnen in C ähnlichen Sprachen immer ab 0.
if((RELEASED(KEY_FIRE) && GetPlayerWeapon(playerid) == 41))
{
new fc = GetClosestSprayTag(playerid);
if(fc == -1) return 1;
if(SprayTagInfo[fc][stFactionID] == Spieler[playerid][pFraktion]) return 1;
new gstring[128];
if(SprayTagInfo[fc][stSprayed] > gettime())
{
new resttime = SprayTagInfo[fc][stSprayed]-gettime();
format(gstring, sizeof(gstring),"[Info]: {FFFFFF}Dieses SprayTag kann erst in %i:%02d Minuten gecrosst werden!", resttime/60, resttime%60);
return SendClientMessage(playerid, COLOR_WHITE, gstring);
}
if(Spieler[playerid][pFraktion] == 9 || Spieler[playerid][pFraktion] == 10)
{
new model = (Spieler[playerid][pFraktion] == 9) ? 18659 : 18667;
DestroyDynamicObject(SprayTagInfo[fc][stObjectID]);
SprayTagInfo[fc][stObjectID] = CreateDynamicObject(model, SprayTagInfo[fc][stPos_X], SprayTagInfo[fc][stPos_Y], SprayTagInfo[fc][stPos_Z], SprayTagInfo[fc][stRot_X], SprayTagInfo[fc][stRot_Y], SprayTagInfo[fc][stRot_Z]);
format(gstring, sizeof(gstring), "{00FF00}Graffiti\n\n{FFFFFF}Mitglieder einer Gang,\nkönnen hier ihr Graffiti sprühen\n\n{00FF00}Besitzer {FFFFFF}%s", GetFraktionName(SprayTagInfo[fc][stFactionID]));
Update3DTextLabelText(SprayTagInfo[fc][Spray3D], COLOR_WHITE, gstring);
SprayTagInfo[fc][stSprayed] = (gettime()+(30*60));
format(gstring, sizeof(gstring), "UPDATE `server_graffitis` SET `FactionID`='%d' WHERE `ID`='%d'", Spieler[playerid][pFraktion], fc);
mysql_function_query(MySqlConnection, gstring, false, "", "");
}
return 1;
}
stock GetClosestSprayTag(playerid,Float:range=8.0)
{
new Float:m=3000.0,idx = -1;
for(new fc,Float:tmp; fc<MAX_SPRAYTAGS; fc++)
{
if(!SprayTagInfo[fc][stErstellt]) continue;
tmp = GetPlayerDistanceFromPoint(playerid,SprayTagInfo[fc][stPos_X], SprayTagInfo[fc][stPos_Y], SprayTagInfo[fc][stPos_Z]);
if(tmp < m) m=tmp,idx=fc;
}
return (m > range) ? -1 : idx;
}
Alles anzeigen
Dein Fehler war, dass du auch immer nur die alte Fraktion wieder eingetragen hast und nicht die aktuelle Fraktion vom Spieler.
Zudem wenn jemand von der Fraktion z.B. 1 gesprayt hätte..würde der da drinnen stehen, obwohl gar kein Graffiti gesetzt worden wäre...