Guten Tag/Morgen xd
Ich bastle zur Zeit an einem Tagging System für SAMP und läuft auch eigentlich alles soweit ganz gut bis auf ein kleiner Fehler der mich zum Verzweifeln bringt.
Ein paar Infos zum System:
-Man kann nur als Gangmitglied taggen
-Man kann Schriftart sowie Farbe und Text wählen
-Es wird alles per Dini erstellt,geladen und gespeichert
Mein Problem ist folgendes:
Ich habe ein /tagremove Befehl eingebaut um eben bereits erstellte Tags wieder zu löschen.
Die Tags werden alle der Reihe nach erstellt und gespeichert sowie nach einem Restart geladen.
Nur der /tagremove Befehl bereitet mir Probleme bei der Überprüfung ob ein Spieler in der Nähe ist, ob der Taggername dem Spielername entspricht und bei der Löschung des richtigen Objektes.
Wenn ich z.b. 2 Tags gesprayt habe und an das erste Tag laufe und /tagremove eingebe kommt die Nachricht: Hier ist kein Tag in der Nähe und Du hast dein Tag entfernt und das 2 Tag verschwindet.
Allerdings ist im Scriptfiles ordner die richtige Datei gelöscht worden und nach einem Restart ist das richtige Tag was gelöscht werden sollte verschwunden und das andere was vor dem Restart weg war wieder da.
Eine Dini Datei eines Tags ist so benannt: Graffiti_0,Graffiti_1 usw und diese werden auch richtig erstellt wenn man mehrere Tags sprayt
Ich hoffe das war soweit es geht gut erklärt und ich hoffe mir kann geholfen werden
(Ich bekomme das ordentliche Einrücken mit dem Quellcode irgendwie nicht ganz so hin xd)
if (strcmp("/tagremove", cmdtext, true, 10) == 0)
{
if(pInfo[playerid][Team] == 2 || pInfo[playerid][Team] == 3)
{
new i;
for(;i<MAX_GRAFFITI;i++)
{
new file[100];
format(file,100,Saver,i);
if(dini_Exists(file))
{
if(IsPlayerInRangeOfPoint(playerid,1.5,dini_Float(file,"Graffiti X"),dini_Float(file,"Graffiti Y"),dini_Float(file,"Graffiti Z")))
{
//if(strcmp(inputtext,dini_Get(pfad,"Passwort"),false))//Prüft ob Pw falsch ist
if(strcmp(dini_Get(file,"Tagger:"),GetName(playerid)))
{
dini_Remove(file);
printf("Graffiti %d von %s entfernt",i,GetName(playerid));
SendClientMessage(playerid,-1,"* SERVER: Du hast dein Tag entfernt. *");
DestroyObject(graffity);
Delete3DTextLabel(Graff3D);
return 1;
}
else{SendClientMessage(playerid,COLOR_RED,"* SERVER: Hier ist kein Tag von dir! *");}
}
else{SendClientMessage(playerid,COLOR_RED,"* SERVER: Hier ist kein Tag in der Nähe! *");}
}
}
}
else{SendClientMessage(playerid,COLOR_RED,"* SERVER: Du bist in keiner Gang! *");}
}
new i;
for(;i<MAX_GRAFFITI;i++)
{
new file[100],tagname[MAX_PLAYER_NAME];
format(file,100,Saver,i);
if(!dini_Exists(file))
{
dini_Create(file);
dini_FloatSet(file,"Graffiti X",fX);
dini_FloatSet(file,"Graffiti Y",fY);
dini_FloatSet(file,"Graffiti Z",fZ);
dini_FloatSet(file,"Graffiti RotX",fRotX);
dini_FloatSet(file,"Graffiti RotY",fRotY);
dini_FloatSet(file,"Graffiti RotZ",fRotZ);
dini_Set(file,"Tagger:",GetName(playerid));
format(tagname,sizeof(tagname),"Getaggt von %s",GetName(playerid));
Create3DTextLabel(tagname,COLOR_ORANGE,dini_Float(file,"Graffiti X"),dini_Float(file,"Graffiti Y"),dini_Float(file,"Graffiti Z"),7,0,0);
SendClientMessage(playerid,COLOR_GREEN,"* SERVER: Du hast dein Tag nun erfolgreich positioniert! *");
break;
}
}
new i;
for(;i<MAX_GRAFFITI;i++)
{
new file[100],tagname[MAX_PLAYER_NAME];
format(file,100,Saver,i);
if(dini_Exists(file))
{
graffity = CreateObject(19482,dini_Float(file,"Graffiti X"),dini_Float(file,"Graffiti Y"),dini_Float(file,"Graffiti Z"),dini_Float(file,"Graffiti RotX"),dini_Float(file,"Graffiti RotY"),dini_Float(file,"Graffiti RotZ"),0.0);
format(tagname,sizeof(tagname),"Getaggt von %s",dini_Get(file,"Tagger:"));
Graff3D = Create3DTextLabel(tagname,COLOR_ORANGE,dini_Float(file,"Graffiti X"),dini_Float(file,"Graffiti Y"),dini_Float(file,"Graffiti Z"),7,0,0);
SetObjectMaterialText(graffity,dini_Get(file,"Tagname:"),0,OBJECT_MATERIAL_SIZE_256x256,"Diploma",24,1,dini_Int(file,"Tagcolor"),0,OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
printf("Graffiti %d von %s geladen",i,dini_Get(file,"Tagger:"));
}
}