unzwar ich habe dieses Gangfight System (Tutorial) hier im forum übernommen
mein Problem ist wenn ich ein Gebiet eines Gegners angreife Greife ich immmer nur das erste gebiet an
Ich möchte nur das gebiet angreifen in dem ich mich befinde und nicht immer das selbe
Könnte mir vlt jemand Helfen hier die benötigten Codes :
/edit
Ich habe bereits nach Lösungen im Forum gesucht jedoch taucht das Problem bei vielen auf ..
stock IsPlayerInGebiet(playerid)//Funktion bennen mit den jeweiligen Variablen oder auch Parameter genannt.
{
for(new i = 0; i < sizeof(Gebiete); i++)//Damit wieder nach allen Zonen geschaut wird.
{
new Float:GetXx,Float:GetYy,Float:GetZz;//Neue Float Variablen erstellen, damit wir dort die Positionen des Spielers speichern können
GetPlayerPos(playerid,GetXx,GetYy,GetZz);//Die Position des Spielers in den oben genannten Variablen speichern.
if(Gebiete[i][gMinX] < GetXx && Gebiete[i][gMaxX] > GetXx && Gebiete[i][gMinY] < GetYy && Gebiete[i][gMaxY] > GetYy)//Hier wird abgefragt ob die Spielerkooridnanten in dem Bereich der Gangzone sind.
{
return i;//Hier wird die Gebietsid returned
}
}
return 0;//Das ist das entscheidende zum Bugfixx.
}
Und der Gangwar Befehl
if(strcmp(cmd, "/gangwar", true) == 0)
{
//new time[3]; gettime(time[0], time[1], time[2]); FixHour(time[0]);
if(PlayerInfo[playerid][pLeader] == 5 || PlayerInfo[playerid][pLeader] == 6 || PlayerInfo[playerid][pLeader] == 10 || PlayerInfo[playerid][pLeader] == 14)//Hier wird abefragt welche Fraktion einen Gangfight starten darf
{
if(IsPlayerInGebiet(playerid) >= 0)//Das bezieht sich auf das stock PlayerInZone
{
new zone = IsPlayerInGebiet(playerid);//Die Gebietsid wird in der Variable zone gespeichert.
if(Gebiete[zone][gOn] == 1)
{
SendClientMessage(playerid,COLOR_LIGHTBLUE,"Das Gebiet wird schon Umkämpft!");//Hier wird abgefragt ob das Gebiet schon bekämpft wird
return 1;
}
if(Gebiete[zone][gOwner] == PlayerInfo[playerid][pLeader])
{
SendClientMessage(playerid,COLOR_LIGHTBLUE," Deine Fraktion ist im Besitzt dieses Gebietes");//Hier wird abgefragt ob die Fraktion schon im besitzt dieser Funktion ist
return 1;
}
Gebiete[zone][gAngreifer] = PlayerInfo[playerid][pLeader];//Hier wird der Angreifer gesetzt.
Gebiete[zone][gOn] = 1;//Das der Gangfight für dieses Gebiet läuft
SetTimerEx("GangFight",60000,0,"i",zone); //Dies startet einen Timer der eine Stunde läuft , damit beenden wir den Gangifght. Die Zoneid wird mit übergeben
for(new i = 0; i < MAX_PLAYERS; i++)//Damit jeder Spieler abgefragt wird
{
if(PlayerInfo[i][pLeader] == Gebiete[zone][gOwner] || PlayerInfo[i][pMember] == Gebiete[zone][gOwner])//Ob spieler oder Leader in dieser Fraktion ist
{
SendClientMessage(playerid,COLOR_RED,"Eines ihrer Gebiete wird angegriffen.");//Sendet eine Mitteilung
}
if(PlayerInfo[i][pLeader] == Gebiete[zone][gAngreifer] ||PlayerInfo[i][pMember] == Gebiete[zone][gAngreifer])//siehe oben
{
SendClientMessage(playerid,COLOR_RED,"Dein Leader hat ein Gangwar gestartet!");
}
}
}
}
return 1;
}