wollte eh mal fragen was daran buggy ist weil man kann nur Gebiet eins angreifen Hier der Befehl bzw alles vom Gebiet:
//--DAS ist bei mir ganz oben-----
enum gebiet//Dies leitet eine genauere Beschreibung für einen Array ein.
{
gOwner,//Hier wird die Fraktionsid gespeichert, der das Gebiet im moment gehört
Float:gMinX,//MinX - Koordinate für die Gangzone
Float:gMinY,//MinY
Float:gMaxX,//MaxX
Float:gMaxY,//MaxY
gOn,//Ob der Gangfight läuft
gStand1,//Der Score für das Owner Team
gStand2,//Score für die Angreifer
gAngreifer//Hier wird die Fraktionsid gespeichert
};
new Gebiete[18][gebiet] = {//Erstellt eine Variable mit der Anzahl der Gebiete in der ersten [] angegeben und in der zweiten wird das Enum von oben eingefügt. (Dient zur genaueren Beschreibnung)
//Hier werden dann die Zonen erstellt, eigentlich alles auf 0 lassen, außer die Koordinaten...
{8,2737.4934,-1489.3401,2847.5774,-1230.9340,0,0,0,0},
{9,2614.9209,-1832.7828,2541.3308,-1647.2617,0,0,0,0},
{10,2606.2610,-2580.5198,2860.4028,-2322.2412,0,0,0,0},
{11,1877.0497,-1146.0465,2056.5168,-1250.5948,0,0,0,0},
{12,900.6957,-1821.7444,778.4864,-2073.3267,0,0,0,0},
{13,1689.6215,-1170.5763,1831.0482,-1069.9423,0,0,0,0},
{14,-1919.8407,-710.1276,-2153.6289,-1000.5717,0,0,0,0},
{15,-2284.9307,59.4707,-2384.6118,256.5312,0,0,0,0},
{16,-2722.5874,1491.4686,-2565.6169,1349.1218,0,0,0,0},
{17,-1734.8204,1357.6724,-1603.7792,1394.6857,0,0,0,0},
{8,-1357.8436,1507.9801,-1488.0469,1474.9901,0,0,0,0},
{9,-1414.2943,132.8722,-1739.8848,72.3446,0,0,0,0},
{10,289.3071,1335.4486,110.1690,1486.3530,0,0,0,0},
{11,1012.6032,1362.9174,1177.6165,1802.8822,0,0,0,0},
{12,1418.2599,2066.6470,1294.6589,2222.8787,0,0,0,0},
{13,2776.8530,2293.3147,2989.5046,2570.7114,0,0,0,0},
{14,2682.1748,2122.1094,2537.6348,2223.4187,0,0,0,0},
{15,1936.7078,2273.3486,2026.4342,2202.4570,0,0,0,0}
};
new Gebiet[18];//Hier werden die "GangZones" gespeichert, damit wir diese in Farbe setzen können usw...
forward GangFight(gebietid);//Dies ist eine Überschrift einer public funktion. (Dies wird für den Timer verwendet, wann der GangWar stoppt.)
forward UpdateZones();//Damit werden die Farben der zonen aktualisiert.
//---Das unter GmaemodeInit----
SetTimer("UpdateZones",10000,1);//Hier wird ein Timer gestartet der jede 10 sekunden die Funktion UpdateZones startet.
//---Das unter Spawn----
for(new i; i<sizeof(Gebiete); i++)//Damit alle gebiete durchlaufen werden
{
new color;//Erstellt eine neue Variable
if(Gebiete[i][gOwner] == 8){color=LILA;}//Hier wird abgefragt welcher Fraktion das Gebiet gehört, damit dann die Farbe dafür gesetzt wird
if(Gebiete[i][gOwner] == 9){color=GRÜN;}
if(Gebiete[i][gOwner] == 10){color=GELB;}
if(Gebiete[i][gOwner] == 11){color=GRAU;}
if(Gebiete[i][gOwner] == 12){color=WEISS;}
if(Gebiete[i][gOwner] == 13){color=TÜRKIS;}
if(Gebiete[i][gOwner] == 14){color=SCHWARZ;}
if(Gebiete[i][gOwner] == 15){color=ROT;}
if(Gebiete[i][gOwner] == 16){color=BRAUN;}
GangZoneShowForPlayer(playerid, Gebiet[i], color); // Hier wird dann die Zone gezeigt. Als erstes die spielerid, und die ist bei OnPlayerSpawn nunmal mit playerid definiert, dann welches Gebiet also Gebiet^^ und als letztes die Farbe die wir oben definiert haben.
}
//---Das unter death---- alles onplayer-----
for(new i; i<sizeof(Gebiete); i++)
{
GangZoneHideForPlayer(playerid,Gebiet[i]);//Für wenn das Gebiet versteckt werden soll.... und welches Gebiet
}
if(IsPlayerInGebiet(playerid) > -1)//Ob der gestorbene in einem GF gebiet war
{
new zone = IsPlayerInGebiet(playerid);//Übergibt die Zoneid
new fID = Gebiete[zone][gAngreifer];
new aID = Gebiete[zone][gOwner];
if(Gebiete[zone][gOn] == 1)//Ob dort Gangfight läuft
{
if(isPlayerInFrakt(playerid,aID))//Ob der Tote in der Besitzer Fraktion ist
{
if(isPlayerInFrakt(killerid,fID))//Ob der Mörder in der Gegnrischer Partei ist.
{
Gebiete[zone][gStand2] +=1;//Dann bekommen die Gegner Punkte
}
}
if(isPlayerInFrakt(playerid,fID))//Siehe oben nur umgekehrt.. :P
{
if(isPlayerInFrakt(killerid,aID))
{
Gebiete[zone][gStand1] +=1;
}
}
}
}
//--Das ist mein Befehl----
ocmd:krieg(playerid,params[])
{
if(isPlayerInFrakt(playerid,8)||isPlayerInFrakt(playerid,9)
||isPlayerInFrakt(playerid,10)||isPlayerInFrakt(playerid,11)
||isPlayerInFrakt(playerid,12)||isPlayerInFrakt(playerid,13)
||isPlayerInFrakt(playerid,14)||isPlayerInFrakt(playerid,15)
||isPlayerInFrakt(playerid,16))//Hier wird abefragt welche Fraktion einen Gangfight starten darf
{
if(IsPlayerInGebiet(playerid) >= 0)//Ob der Spieler in einem Gebiet ist.
{
if(GetPVarInt(playerid,"Leader") == 1)
{
new zone = IsPlayerInGebiet(playerid);//Die Gebietsid wird in der Variable zone gespeichert.
if(Gebiete[zone][gOn] == 1) return SendClientMessage(playerid,BLAU,"Das Gebiet wird schon angegriffen!");//Hier wird abgefragt ob das Gebiet schon bekämpft wird
if(Gebiete[zone][gOwner] == GetPVarInt(playerid,"Fraktion")) return SendClientMessage(playerid,BLAU," Deine Fraktion ist im Besitzt dieses Gebietes");//Hier wird abgefragt ob die Fraktion schon im besitzt dieser Funktion ist
Gebiete[zone][gAngreifer] = GetPVarInt(playerid,"Fraktion");//Hier wird der Angreifer gesetzt.
Gebiete[zone][gOn] = 1;//Das der Gangfight für dieses Gebiet läuft
SetTimerEx("GangFight",300000,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; i<MAX_PLAYERS; i++)//Damit jeder Spieler abgefragt wird
{
new fID = Gebiete[zone][gOwner];
new aID = Gebiete[zone][gAngreifer];
if(isPlayerInFrakt(i,fID))//Ob spieler oder Leader in dieser Fraktion ist
{
SendClientMessage(playerid,ORANGE,"**Achtung**:Eines ihrer Gebiete wird angegriffen.");//Sendet eine Mitteilung
return 1;
}
if(isPlayerInFrakt(i,aID))//siehe oben
{
SendClientMessage(playerid,GELB,"**Info**:Dein Leader hat ein Gangwar gestartet!");
return 1;
}
}
}
return SendClientMessage(playerid,ROT,"Du bist kein Leader!");
}
return SendClientMessage(playerid,ROT,"Du bist in keinem Gangwar Gebiet!");
}
return SendClientMessage(playerid,ROT,"Du bist kein Mitglied einer Gang oder Mafia!");
}
//--Meine publics----
public GangFight(gebietid)
{
Gebiete[gebietid][gOn] = 0;
if(Gebiete[gebietid][gStand2] > Gebiete[gebietid][gStand1])//Hier wird abgefragt ob der Stand des angreigers größer ist als des Owners...
{
Gebiete[gebietid][gOwner] = Gebiete[gebietid][gAngreifer]; //Hier wird ein neuer Owner gesetzt, da die Angreifer gewonnen haben...
}
//Wenn der Owner gewonnen hat bleibt die Gleich :P
new string[128];//ersteltl eininen string :D
format(string,sizeof(string),"Der Gewinner des Gebiets %d ist Fraktionsid: %d und hat mit %d : %d gewonnen",gebietid,Gebiete[gebietid][gOwner],Gebiete[gebietid][gStand1],Gebiete[gebietid][gStand2]);//Erstellt eine Message mit Variablen
SendClientMessageToAll(GRÜN,string);
Gebiete[gebietid][gStand2]= 0; //Setzt die Scores zurück
Gebiete[gebietid][gStand1]=0;//oben
Gebiete[gebietid][gAngreifer]=0;//oben
return 1;
}
public UpdateZones()
{
for(new player; player < MAX_PLAYERS; player++)//Damit alle Spieler durchlaufen werden
{
for(new i; i<sizeof(Gebiete); i++)//Damit alle Gebiete durchlaufen werden
{
GangZoneHideForPlayer(player,Gebiet[i]);//Damit werden alle Gebiete für alle User versteckt
new color;//Erstellt eine neue Variable
if(Gebiete[i][gOwner] == 8){color=LILA;}//Hier wird abgefragt welcher Fraktion das Gebiet gehört, damit dann die Farbe dafür gesetzt wird
if(Gebiete[i][gOwner] == 9){color=GRÜN;}
if(Gebiete[i][gOwner] == 10){color=GELB;}
if(Gebiete[i][gOwner] == 11){color=GRAU;}
if(Gebiete[i][gOwner] == 12){color=WEISS;}
if(Gebiete[i][gOwner] == 13){color=TÜRKIS;}
if(Gebiete[i][gOwner] == 14){color=SCHWARZ;}
if(Gebiete[i][gOwner] == 15){color=ROT;}
if(Gebiete[i][gOwner] == 16){color=BRAUN;}
GangZoneShowForPlayer(player, Gebiet[i], color); //Zeigt die Zone f ür die Spieler wieder mit der neuen/alten Farbe
if(Gebiete[i][gOn] == 1)//Fragt ab ob Gangfight in einem Gebiet läuft
{
if(Gebiete[i][gAngreifer] == 8){color=LILA;}//Hier wird abgefragt welcher Fraktion das Gebiet gehört, damit dann die Farbe dafür gesetzt wird
if(Gebiete[i][gAngreifer] == 9){color=GRÜN;}
if(Gebiete[i][gAngreifer] == 10){color=GELB;}
if(Gebiete[i][gAngreifer] == 11){color=GRAU;}
if(Gebiete[i][gAngreifer] == 12){color=WEISS;}
if(Gebiete[i][gAngreifer] == 13){color=TÜRKIS;}
if(Gebiete[i][gAngreifer] == 14){color=SCHWARZ;}
if(Gebiete[i][gAngreifer] == 15){color=ROT;}
if(Gebiete[i][gAngreifer] == 16){color=BRAUN;}
GangZoneFlashForPlayer(player,Gebiet[i],color);//"Flasht die Zone" in der Angreifer Farbe und Owner Farbe
}
}
}
return 1;
}
//---Mein stock---
stock IsPlayerInGebiet(playerid)
{
for(new i;i<sizeof(Gebiete);i++)
{
new Float:GetX,Float:GetY,Float:GetZ;
GetPlayerPos(playerid,GetX,GetY,GetZ);
if(Gebiete[i][gMinX] < GetX && Gebiete[i][gMaxX] > GetX && Gebiete[i][gMinY] < GetY && Gebiete[i][gMaxY] > GetY)
{
return i;
}
return -1;
}
return -1;
}
Bitte um hilfe
MFG