Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <ocmd>
- #include <m_zones>
- #include <dini>
- #define Rot 0xE10000FF
- #define Gelb 0xFFE600FF
- #define DBlau 0x0000FFFF
- #define Blau 0x2E9AFEFF
- #define HGruen 0x00FF00FF
- /* Settings */
- #define MAX_GZ 40 //Maximale Gangzonen festlegen
- #define MaxPoints 100 //Wie viel Punkte eine Fraktion haben muss, um den Gangfight gewinnen zu können
- #define GFTime 60 //Wie lange ein Gangfight dauert
- #define GFRuhe 30 //Wie lange die Zone nach einem Gangfight nicht mehr angegriffen werden darf
- #define FlaggeZeit 30 //Wie viel Sekunden es dauert, eine Flagge zu erobern
- #define MAX_FRAKTIONEN 21 //Anzahl der Fraktionen festlegen [+1]
- #define G_FILE "/Gangzonen.ini" //Wo die Gangzonen gespeichert werden sollen
- stock bool:NoGang(playerid){
- switch(GetPVarInt(playerid,"Fraktion")){ //PVar anpassen
- case 10,11,12,13:return true; //Gang-IDs anpassen
- default:return false;
- }
- return false;
- }
- stock bool:Leader(playerid){
- switch(GetPVarInt(playerid,"FrakRank")){ //PVar anpassen
- case 7:return true; //Leader-Rank anpassen
- default:return false;
- }
- return false;
- }
- stock GetFraktion(playerid)return GetPVarInt(playerid,"Fraktion");//PVar anpassen
- stock FrakColor(fid){
- new color;
- switch(fid)
- {
- case 0:color = 0x000000FF;
- case 1:color = 0xE10000FF;
- case 2:color = 0x646464FF;
- //...
- default:color = 0xFFFFFFFF;
- }
- return color;
- }
- stock FrakName(fid){
- new name[16];
- switch(fid){
- case 0:name = "No-one";
- case 1:name = "Frak_01";
- case 2:name = "Frak_02";
- //...
- default:name = "Unnamed";
- }
- return name;
- }
- /* Settings */
- #define dInt dini_Int
- #define dIntSet dini_IntSet
- #define dGet dini_Get
- #define dSet dini_Set
- #define dFloatSet dini_FloatSet
- #define dFloat dini_Float
- #define dExist dini_Exists
- #define Connected IsPlayerConnected
- #define InVehicle IsPlayerInVehicle
- #define InAnyVehicle IsPlayerInAnyVehicle
- #define GetPos GetPlayerPos
- #define SetPos SetPlayerPos
- #define RangeOfPoint IsPlayerInRangeOfPoint
- new fmex[128];
- #define SCMToAllF(%0,%1,%2) format(fmex,128,%1,%2) && SendClientMessageToAll(%0, fmex)
- #define SCMF(%0,%1,%2) format(fmex,128,%2) && SendClientMessage(%0,%1,fmex)
- #define SCMToAll(%0,%1) format(fmex,128,%1) && SendClientMessageToAll(%0,%1)
- new Text:GFBox,
- Text:GFInfo,
- Text:GFUeber,
- Text:GFFlagge,
- ImGF[MAX_FRAKTIONEN],
- PlayerName[MAX_PLAYERS][MAX_PLAYER_NAME];
- enum eGZ
- {
- Float:max_x,
- Float:max_y,
- Float:min_x,
- Float:min_y,
- Float:flagge_x,
- Float:flagge_y,
- Float:flagge_z,
- owner,
- zid,
- erstellt,
- Text3D:label,
- pickup,
- ruhe,
- ruhetimer
- };
- new GZ[MAX_GZ][eGZ];
- enum eGF
- {
- owner,
- angreifer,
- punkte_o,
- punkte_a,
- timer,
- zeit,
- started,
- flaggetimer,
- flaggeerobert,
- flaggewerobert
- };
- new GF[MAX_GZ][eGF];
- enum eC
- {
- Float:min_x,
- Float:min_y,
- Float:max_x,
- Float:max_y,
- zid,
- create
- }
- new CZ[MAX_PLAYERS][eC];
- forward Gangwar(zoneid);
- forward GFRuheTimer(zoneid);
- forward FlaggeErobern(playerid,zone);
- public OnFilterScriptInit(){
- M_Init();
- printf(" Dynamisches Gangfightsystem by ErikSon");
- GFBox = TextDrawCreate(6.000000, 254.000000, "~n~");
- TextDrawBackgroundColor(GFBox, 255);
- TextDrawFont(GFBox, 1);
- TextDrawLetterSize(GFBox, 0.500000, 6.800000);
- TextDrawColor(GFBox, -1);
- TextDrawSetOutline(GFBox, 0);
- TextDrawSetProportional(GFBox, 1);
- TextDrawSetShadow(GFBox, 1);
- TextDrawUseBox(GFBox, 1);
- TextDrawBoxColor(GFBox, 0x00000066);
- TextDrawTextSize(GFBox, 114.000000, 0.000000);
- TextDrawSetSelectable(GFBox, 0);
- GFInfo = TextDrawCreate(11.000000, 276.000000, "Punkte|Punkte|Zeit");
- TextDrawBackgroundColor(GFInfo, 255);
- TextDrawFont(GFInfo, 1);
- TextDrawLetterSize(GFInfo, 0.260000, 0.699999);
- TextDrawColor(GFInfo, -1);
- TextDrawSetOutline(GFInfo, 0);
- TextDrawSetProportional(GFInfo, 1);
- TextDrawSetShadow(GFInfo, 1);
- TextDrawSetSelectable(GFInfo, 0);
- GFUeber = TextDrawCreate(10.000000, 258.000000, "GANGFIGHT!");
- TextDrawBackgroundColor(GFUeber, 255);
- TextDrawFont(GFUeber, 1);
- TextDrawLetterSize(GFUeber, 0.500000, 1.000000);
- TextDrawColor(GFUeber, 16711935);
- TextDrawSetOutline(GFUeber, 0);
- TextDrawSetProportional(GFUeber, 1);
- TextDrawSetShadow(GFUeber, 1);
- TextDrawSetSelectable(GFUeber, 0);
- GFFlagge = TextDrawCreate(6.000000, 239.000000, "Flagge erobern: XX/XX Sekunden");
- TextDrawBackgroundColor(GFFlagge, 255);
- TextDrawFont(GFFlagge, 1);
- TextDrawLetterSize(GFFlagge, 0.200000, 1.000000);
- TextDrawColor(GFFlagge, -16776961);
- TextDrawSetOutline(GFFlagge, 0);
- TextDrawSetProportional(GFFlagge, 1);
- TextDrawSetShadow(GFFlagge, 1);
- TextDrawSetSelectable(GFFlagge, 0);
- for(new i = 0; i<MAX_PLAYERS; i++){
- if(!IsPlayerConnected(i))continue;
- GetPlayerName(i,PlayerName[i],MAX_PLAYER_NAME);
- }
- if(!dExist(G_FILE))dini_Create(G_FILE), SaveGZ(), LoadGZ();
- for(new i = 0; i<MAX_FRAKTIONEN; i++)ImGF[i] = 0;
- return LoadGZ();
- }
- public OnFilterScriptExit(){
- for(new zone; zone<MAX_GZ; zone++){
- DisableZone(zone),
- DestroyPickup(GZ[zone][pickup]),
- Delete3DTextLabel(GZ[zone][label]),
- DisableZone(zone);
- }
- TextDrawDestroy(GFFlagge),
- TextDrawDestroy(GFInfo),
- TextDrawDestroy(GFBox),
- TextDrawDestroy(GFUeber);
- return SaveGZ();
- }
- public OnPlayerConnect(playerid){
- GetPlayerName(playerid,PlayerName[playerid],MAX_PLAYER_NAME);
- if(ImGF[GetFraktion(playerid)] == 1){
- TextDrawShowForPlayer(playerid,GFBox);
- TextDrawShowForPlayer(playerid,GFUeber);
- TextDrawShowForPlayer(playerid,GFInfo);
- }
- return M_Connect(playerid);
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys){
- if(newkeys & KEY_YES){
- if(NoGang(playerid) || !M_IsPlayerInAnyZone(playerid))return 1;
- new zone = M_GetPlayerCurrentZone(playerid);
- if(GZ[zone][owner] == GetFraktion(playerid))return SCMF(playerid,Rot,"Du kannst deine eigene Flagge nicht erobern!");
- if(GF[zone][started] != 1)return SCMF(playerid,Rot,"Der Gangfight wurde noch nicht gestartet!");
- if(GF[zone][flaggewerobert] >= 1)return SCMF(playerid,Rot,"Die Flagge wird bereits erobert!");
- new i = 0,str[128]; format(str,sizeof(str),"|Gangfight| %s hat begonnen, die Flagge zu erobern! |Gangfight|",PlayerName[playerid]);
- for(; i<MAX_PLAYERS; i++){
- if(!IsPlayerConnected(i))continue;
- if((GetFraktion(i) != GZ[zone][owner]) && (GetFraktion(i) != GF[zone][angreifer]))continue;
- SCMF(i,Gelb,str);
- TextDrawShowForPlayer(i,GFFlagge);
- }
- GF[zone][flaggeerobert] = 0;
- GF[zone][flaggewerobert] = 1;
- format(str,sizeof(str),"Flagge erobern: %d/%d Sekunden",GF[zone][flaggeerobert],FlaggeZeit);
- TextDrawSetString(GFFlagge,str);
- TextDrawShowForPlayer(playerid,GFFlagge);
- return GF[zone][flaggetimer] = SetTimerEx("FlaggeErobern",888,true,"ii",playerid,zone);
- }
- return 1;
- }
- public OnPlayerDeath(playerid,killerid,reason){
- if(M_IsPlayerInAnyZone(playerid)){
- new zone = M_GetPlayerCurrentZone(playerid);
- if(GF[zone][started] != 1)return 1;
- if((GetFraktion(playerid) == GF[zone][owner]) && (GetFraktion(killerid) == GF[zone][angreifer])){
- GF[zone][punkte_a] ++;
- GameTextForPlayer(killerid,"Gangfightkill!",888*2,6);
- }
- else if((GetFraktion(playerid) == GF[zone][angreifer]) && (GetFraktion(killerid) == GF[zone][owner])){
- GF[zone][punkte_o] ++;
- GameTextForPlayer(killerid,"Gangfightkill!",888*2,6);
- }
- if((GF[zone][punkte_o] == MaxPoints) || (GF[zone][punkte_a] == MaxPoints))GF[zone][zeit] = GFTime;
- new str[128]; format(str,sizeof(str),"Punkte (Owner): %d~n~ ~n~Punkte (Angreifer): %d~n~ ~n~Zeit: %d/%d Minute(n)",GF[zone][punkte_o],GF[zone][punkte_a],GF[zone][zeit],GFTime);
- TextDrawSetString(GFInfo,str);
- }
- return 1;
- }
- public FlaggeErobern(playerid,zone){
- new str[128];
- GF[zone][flaggeerobert] ++;
- format(str,sizeof(str),"Flagge erobern: %d/%d Sekunden",GF[zone][flaggeerobert],FlaggeZeit);
- TextDrawSetString(GFFlagge,str);
- if(!IsPlayerInRangeOfPoint(playerid,30,GZ[zone][flagge_x],GZ[zone][flagge_y],GZ[zone][flagge_z])){
- TextDrawHideForAll(GFFlagge);
- format(str,sizeof(str),"|Gangfight| %s hat es nicht geschafft, die Flagge zu erobern! |Gangfight|",PlayerName[playerid]);
- for(new i = 0; i<MAX_PLAYERS; i++){
- if(!IsPlayerConnected(i))continue;
- if((GetFraktion(i) != GZ[zone][owner]) && (GetFraktion(i) != GF[zone][angreifer]))continue;
- GF[zone][flaggeerobert] = 0,GF[zone][flaggewerobert] = 0;
- KillTimer(GF[zone][flaggetimer]);
- return SCMF(i,Gelb,str);
- }
- return 1;
- }
- if(GF[zone][flaggeerobert] >= FlaggeZeit && GF[zone][flaggewerobert] == 1){
- TextDrawHideForAll(GFFlagge);
- if(!IsPlayerInRangeOfPoint(playerid,30,GZ[zone][flagge_x],GZ[zone][flagge_y],GZ[zone][flagge_z])){
- format(str,sizeof(str),"|Gangfight| %s hat es nicht geschafft, die Flagge zu erobern! |Gangfight|",PlayerName[playerid]);
- for(new i = 0; i<MAX_PLAYERS; i++){
- if(!IsPlayerConnected(i))continue;
- if((GetFraktion(i) != GZ[zone][owner]) && (GetFraktion(i) != GF[zone][angreifer]))continue;
- GF[zone][flaggeerobert] = 0,GF[zone][flaggewerobert] = 0;
- KillTimer(GF[zone][flaggetimer]);
- return SCMF(i,Gelb,str);
- }
- return 1;
- }
- GF[zone][punkte_a] += 3;
- if((GF[zone][punkte_o] == MaxPoints) || (GF[zone][punkte_a] == MaxPoints))GF[zone][zeit] = GFTime;
- format(str,sizeof(str),"Punkte (Owner): %d~n~ ~n~Punkte (Angreifer): %d~n~ ~n~Zeit: %d/%d Minute(n)",GF[zone][punkte_o],GF[zone][punkte_a],GF[zone][zeit],GFTime);
- TextDrawSetString(GFInfo,str);
- format(str,sizeof(str),"|Gangfight| %s hat die Flagge erobert! |Gangfight|",PlayerName[playerid]);
- for(new i = 0; i<MAX_PLAYERS; i++){
- if(!IsPlayerConnected(i))continue;
- if((GetFraktion(i) != GZ[zone][owner]) && (GetFraktion(i) != GF[zone][angreifer]))continue;
- GF[zone][flaggeerobert] = 0,GF[zone][flaggewerobert] = 0;
- KillTimer(GF[zone][flaggetimer]);
- return SCMF(i,Gelb,str);
- }
- return 1;
- }
- return 1;
- }
- public Gangwar(zoneid){
- if(GF[zoneid][started] != 1)return KillTimer(GF[zoneid][timer]);
- GF[zoneid][zeit] ++;
- new strin[128];
- format(strin,sizeof(strin),"Punkte (Owner): %d~n~ ~n~Punkte (Angreifer): %d~n~ ~n~Zeit: %d/%d Minute(n)",GF[zoneid][punkte_o],GF[zoneid][punkte_a],GF[zoneid][zeit],GFTime);
- TextDrawSetString(GFInfo,strin);
- if(GF[zoneid][punkte_a] >= MaxPoints || GF[zoneid][punkte_o] >= MaxPoints){
- ImGF[GF[zoneid][owner]] = 0,ImGF[GF[zoneid][angreifer]] = 0;
- if(GF[zoneid][punkte_o] > GF[zoneid][punkte_a])format(strin,sizeof(strin),"Die Gang '%s' hat den Gangfight gegen die Fraktion '%s' mit %i / %i gewonnen.",FrakName(GF[zoneid][owner]),FrakName(GF[zoneid][angreifer]),GF[zoneid][punkte_o],GF[zoneid][punkte_a]);
- else if(GF[zoneid][punkte_a] > GF[zoneid][punkte_o]){
- format(strin,sizeof(strin),"Die Gang '%s' hat den Gangfight gegen die Fraktion '%s' mit %i / %i gewonnen.",FrakName(GF[zoneid][angreifer]),FrakName(GF[zoneid][owner]),GF[zoneid][punkte_a],GF[zoneid][punkte_o]);
- GZ[zoneid][owner] = GF[zoneid][angreifer];
- }
- SCMToAll(DBlau,strin);
- GF[zoneid][punkte_o] = 0,GF[zoneid][punkte_a] = 0;
- M_ZoneStopFlashForAll(zoneid);
- GZ[zoneid][ruhe] = GFRuhe;
- GZ[zoneid][ruhetimer] = SetTimerEx("GFRuheTimer",888*60,true,"i",zoneid);
- format(strin,sizeof(strin),"%i| Besitzer: '%s'",GZ[zoneid][zid],FrakName(GZ[zoneid][owner]));
- M_ZoneSetTextDraw(zoneid,strin,FrakColor(GZ[zoneid][owner]));
- M_ZoneSetColor(zoneid,FrakColor(GZ[zoneid][owner]));
- TextDrawHideForAll(GFUeber),
- TextDrawHideForAll(GFInfo),
- TextDrawHideForAll(GFBox),
- TextDrawHideForAll(GFFlagge);
- return SaveGZ_(zoneid);
- }
- else if(GF[zoneid][zeit] >= GFTime){
- GF[zoneid][started] = 0;
- if(GF[zoneid][punkte_o] > GF[zoneid][punkte_a])format(strin,sizeof(strin),"Die Gang '%s' hat den Gangfight gegen die Fraktion '%s' mit %i / %i gewonnen.",FrakName(GF[zoneid][owner]),FrakName(GF[zoneid][angreifer]),GF[zoneid][punkte_o],GF[zoneid][punkte_a]);
- else if(GF[zoneid][punkte_a] > GF[zoneid][punkte_o]){
- format(strin,sizeof(strin),"Die Gang '%s' hat den Gangfight gegen die Fraktion '%s' mit %i / %i gewonnen.",FrakName(GF[zoneid][angreifer]),FrakName(GF[zoneid][owner]),GF[zoneid][punkte_a],GF[zoneid][punkte_o]);
- GZ[zoneid][owner] = GF[zoneid][angreifer];
- }
- SCMToAll(DBlau,strin);
- GF[zoneid][punkte_o] = 0,GF[zoneid][punkte_a] = 0;
- M_ZoneStopFlashForAll(zoneid);
- GZ[zoneid][ruhe] = GFRuhe;
- GZ[zoneid][ruhetimer] = SetTimerEx("GFRuheTimer",888*60,true,"i",zoneid);
- format(strin,sizeof(strin),"%i| Besitzer: '%s'",GZ[zoneid][zid],FrakName(GZ[zoneid][owner]));
- M_ZoneSetTextDraw(zoneid,strin,FrakColor(GZ[zoneid][owner]));
- M_ZoneSetColor(zoneid,FrakColor(GZ[zoneid][owner]));
- TextDrawHideForAll(GFUeber),
- TextDrawHideForAll(GFInfo),
- TextDrawHideForAll(GFBox),
- TextDrawHideForAll(GFFlagge);
- return SaveGZ_(zoneid),LoadGZ_(zoneid);
- }
- return 1;
- }
- public GFRuheTimer(zoneid){
- GZ[zoneid][ruhe] --;
- if(GZ[zoneid][ruhe] <= 0)return KillTimer(GZ[zoneid][ruhetimer]);
- return 1;
- }
- public M_OnPlayerEnterZone(playerid,zoneid){
- return 1;
- }
- public M_OnPlayerLeaveZone(playerid,zoneid){
- return 1;
- }
- ocmd:angriff(playerid,params[]){
- if(NoGang(playerid))return SCMF(playerid,Rot,"Du bist in keiner Gang / Mafia!");
- if(!Leader(playerid))return SCMF(playerid,Rot,"Du bist kein Leader!");
- if(!M_IsPlayerInAnyZone(playerid))return SCMF(playerid,Rot,"Du bist in keiner Zone!");
- new zone = M_GetPlayerCurrentZone(playerid);
- if(GZ[zone][owner] == GetFraktion(playerid))return SCMF(playerid,Rot,"Du kannst deine eigene Zone nicht angreifen!");
- if(GZ[zone][ruhe] >= 1)return SCMF(playerid,Rot,"Die Zone kann noch nicht angegriffen werden!");
- if(!IsPlayerInRangeOfPoint(playerid,5,GZ[zone][flagge_x],GZ[zone][flagge_y],GZ[zone][flagge_z]))return SCMF(playerid,Rot,"Du stehst nicht an der Flagge dieser Zone!");
- if(GF[zone][started] == 1)return SCMF(playerid,Rot,"Der Gangfight wurde bereits gestartet!");
- if(ImGF[GF[zone][owner]] >= 1)return SCMF(playerid,Rot,"Diese Gang ist bereits in einem Gangfight!");
- new str[128];
- if(GZ[zone][owner] <= 0){
- GZ[zone][owner] = GetFraktion(playerid);
- format(str,128,"%d |Besitzer: '%s'",zone,FrakName(GZ[zone][owner]));
- M_ZoneSetTextDraw(zone,str,FrakColor(GetFraktion(playerid)));
- M_ZoneSetColor(zone,FrakColor(GetFraktion(playerid)));
- return SaveGZ_(zone);
- }
- for(new i = 0; i<MAX_PLAYERS; i++){
- if(!IsPlayerConnected(i))continue;
- if(GetFraktion(i) != GF[zone][owner])continue;
- if(!Leader(i))continue;
- if(i == INVALID_PLAYER_ID){
- SCMF(playerid,Rot,"Der Leader dieser Gang ist nicht online!");
- break;
- }
- }
- M_ZoneFlashForAll(zone,FrakColor(GetFraktion(playerid)));
- GF[zone][angreifer] = GetFraktion(playerid);
- GF[zone][owner] = GZ[zone][owner],GF[zone][flaggewerobert] = 0;
- GF[zone][started] = 1,GF[zone][punkte_o] = 0, GF[zone][punkte_a] = 0,GF[zone][zeit] = 0;
- ImGF[GetFraktion(playerid)] = 1,ImGF[GF[zone][owner]] = 1;
- for(new i = 0; i<MAX_PLAYERS; i++){
- if(!IsPlayerConnected(i))continue;
- if((GetFraktion(i) != GF[zone][owner]) && (GetFraktion(i) != GF[zone][angreifer]))continue;
- TextDrawShowForPlayer(i,GFBox);
- TextDrawShowForPlayer(i,GFUeber);
- TextDrawShowForPlayer(i,GFInfo);
- }
- TextDrawShowForPlayer(playerid,GFBox);
- TextDrawShowForPlayer(playerid,GFUeber);
- TextDrawShowForPlayer(playerid,GFInfo);
- format(str,sizeof(str),"Punkte (Owner): %d~n~ ~n~Punkte (Angreifer): %d~n~ ~n~Zeit: %d/%d Minute(n)",GF[zone][punkte_o],GF[zone][punkte_a],GF[zone][zeit],GFTime);
- TextDrawSetString(GFInfo,str);
- SCMF(playerid,Rot,"Du hast den Gangfight gestartet!");
- return GF[zone][timer] = SetTimerEx("Gangwar",888*60,true,"i",zone);
- }
- ocmd:flagge(playerid,params[]){
- if(NoGang(playerid))return SCMF(playerid,Rot,"Du bist in keiner Gang / Mafia!");
- if(!M_IsPlayerInAnyZone(playerid))return SCMF(playerid,Rot,"Du bist in keiner Zone!");
- new zone = M_GetPlayerCurrentZone(playerid);
- if(GZ[zone][owner] == GetFraktion(playerid))return SCMF(playerid,Rot,"Du kannst deine eigene Flagge nicht erobern!");
- if(GF[zone][started] != 1)return SCMF(playerid,Rot,"Der Gangfight wurde noch nicht gestartet!");
- if(GF[zone][flaggewerobert] >= 1)return SCMF(playerid,Rot,"Die Flagge wird bereits erobert!");
- new i = 0,str[128]; format(str,sizeof(str),"|Gangfight| %s hat begonnen, die Flagge zu erobern! |Gangfight|",PlayerName[playerid]);
- for(; i<MAX_PLAYERS; i++){
- if(!IsPlayerConnected(i))continue;
- if((GetFraktion(i) != GZ[zone][owner]) && (GetFraktion(i) != GF[zone][angreifer]))continue;
- SCMF(i,Gelb,str);
- TextDrawShowForPlayer(i,GFFlagge);
- }
- GF[zone][flaggeerobert] = 0;
- GF[zone][flaggewerobert] = 1;
- TextDrawShowForPlayer(playerid,GFFlagge);
- format(str,sizeof(str),"Flagge erobern: %d/%d Sekunden",GF[zone][flaggeerobert],FlaggeZeit);
- TextDrawSetString(GFFlagge,str);
- return GF[zone][flaggetimer] = SetTimerEx("FlaggeErobern",888,true,"ii",playerid,zone);
- }
- ocmd:aufgeben(playerid){
- if(NoGang(playerid))return SCMF(playerid,Rot,"Du bist in keiner Gang / Mafia!");
- if(!Leader(playerid))return SCMF(playerid,Rot,"Du bist kein Leader!");
- if(!M_IsPlayerInAnyZone(playerid))return SCMF(playerid,Rot,"Du bist in keiner Zone!");
- new zone = M_GetPlayerCurrentZone(playerid);
- if(GF[zone][started] != 1)return SCMF(playerid,Rot,"Das Gebiet wird derzeit nicht angegriffen!");
- new str[128];
- if(GetPVarInt(playerid,"Fraktion") == GF[zone][owner])format(str,sizeof(str),"Die Fraktion '%s' hat den Gangfight aufgegeben. Die Fraktion '%s' erhält nun das Gebiet!",FrakName(GF[zone][owner]),FrakName(GF[zone][angreifer]));
- else if(GetPVarInt(playerid,"Fraktion") == GF[zone][angreifer])format(str,sizeof(str),"Die Fraktion '%s' hat den Gangfight aufgegeben. Die Fraktion '%s' erhält nun das Gebiet!",FrakName(GF[zone][angreifer]),FrakName(GF[zone][owner]));
- for(new i = 0; i<MAX_PLAYERS; i++){
- if(!IsPlayerConnected(i))continue;
- if((GetFraktion(i) != GZ[zone][owner]) && (GetFraktion(i) != GF[zone][angreifer]))continue;
- SCMF(i,Rot,str);
- }
- if(GetPVarInt(playerid,"Fraktion") == GF[zone][owner])GZ[zone][owner] = GF[zone][angreifer];
- GF[zone][punkte_o] = 0,GF[zone][punkte_a] = 0;
- M_ZoneStopFlashForAll(zone);
- GZ[zone][ruhe] = GFRuhe;
- GZ[zone][ruhetimer] = SetTimerEx("GFRuheTimer",888*60,true,"i",zone);
- TextDrawHideForAll(GFUeber),
- TextDrawHideForAll(GFInfo),
- TextDrawHideForAll(GFBox),
- TextDrawHideForAll(GFFlagge);
- format(str,128,"%d |Besitzer: '%s'",zone,FrakName(GZ[zone][owner]));
- M_ZoneSetTextDraw(zone,str,FrakColor(GZ[zone][owner]));
- M_ZoneSetColor(zone,FrakColor(GZ[zone][owner]));
- return SaveGZ_(zone);
- }
- ocmd:creategangzone(playerid,params[]){
- if(!IsPlayerAdmin(playerid))return 1;
- if(M_IsPlayerInAnyZone(playerid))return SCMF(playerid,Rot,"Du kannst hier keine Ganguone erstellen!");
- new Float:x,Float:y,Float:z;
- GetPlayerPos(playerid,x,y,z);
- CZ[playerid][min_x] = x, CZ[playerid][min_y] = y, CZ[playerid][create] = 1;
- SCMF(playerid,Blau,"Bitte überquere jetzt die Zone um die Zone richtig zu erstellen.");
- return SCMF(playerid,Rot,"Wenn du die Zone überquert hast, tippe '/zoneende'.");
- }
- ocmd:zoneende(playerid,params[]){
- if(CZ[playerid][create] != 1)return SCMF(playerid,Rot,"Um eine Gangzone zu erstellen, benutze '/creategangzone'!");
- new Float:x,Float:y,Float:z,i,str[64];
- GetPlayerPos(playerid,x,y,z);
- CZ[playerid][max_x] = x,CZ[playerid][max_y] = y;
- for(; i<MAX_GZ; i++){
- if(GZ[i][erstellt] == 1)continue;
- GZ[i][min_x] = CZ[playerid][min_x],GZ[i][min_y] = CZ[playerid][min_y],GZ[i][max_x] = CZ[playerid][max_x],GZ[i][max_y] = CZ[playerid][max_y];
- GZ[i][erstellt] = 1,GZ[i][owner] = 0;
- format(str,64,"%i| Besitzer: '%s'",GZ[i][zid],FrakName(GZ[i][owner]));
- M_CreateZone(GZ[i][min_x],GZ[i][min_y],GZ[i][max_x],GZ[i][max_y],FrakColor(GZ[i][owner]),str,FrakColor(GZ[i][owner]));
- new zone = M_GetPlayerCurrentZone(playerid);
- GZ[i][zid] = zone,CZ[playerid][zid] = zone;
- break;
- }
- return SCMF(playerid,Blau,"Nun gehe zum Angriffspunkt hin und tippe '/cflagge'.");
- }
- ocmd:cflagge(playerid,params[]){
- if(CZ[playerid][create] != 1)return SCMF(playerid,Rot,"Um eine Gangzone zu erstellen, benutze '/creategangzone'!");
- if(!M_IsPlayerInAnyZone(playerid))return SCMF(playerid,Rot,"Du bist in keiner Gangzone!");
- new Float:x,Float:y,Float:z;
- GetPlayerPos(playerid,x,y,z);
- GZ[CZ[playerid][zid]][flagge_x] = x, GZ[CZ[playerid][zid]][flagge_y] = y, GZ[CZ[playerid][zid]][flagge_z] = z,CZ[playerid][create] = 0;
- GZ[CZ[playerid][zid]][pickup] = CreatePickup(1314,1,x,y,z,0);
- GZ[CZ[playerid][zid]][label] = Create3DTextLabel("Tippe '/angriff', um das Gebiet anzugreifen.\nTippe '/flagge' | Y/Z, um die Flagge zu erobern.",Rot,x,y,z,20,0);
- return SCMF(playerid,Blau,"Du hast die Zone erfolgreich erstellt.");
- }
- ocmd:destroyzone(playerid,params[]){
- if(!IsPlayerAdmin(playerid))return 1;
- if(!M_IsPlayerInAnyZone(playerid))return SCMF(playerid,Rot,"Du bist in keiner Zone!");
- new zone = M_GetPlayerCurrentZone(playerid);
- GZ[zone][flagge_x] = 0,GZ[zone][flagge_y] = 0,GZ[zone][flagge_z] = 0,
- GZ[zone][min_x] = 0,GZ[zone][min_y] = 0,GZ[zone][max_x] = 0,GZ[zone][max_y] = 0;
- DisableZone(zone);
- DestroyPickup(GZ[zone][pickup]);
- Delete3DTextLabel(GZ[zone][label]);
- if(GF[zone][started] >= 1)GF[zone][zeit] = GFTime;
- GZ[zone][erstellt] = 0;
- return SCMF(playerid,Blau,"Du hast die Zone erfolgreich gelöscht.");
- }
- stock LoadGZ(){
- new i,gz[32],str[64],counter = 0; format(gz,32,G_FILE);
- for(; i<MAX_GZ; i++){
- GZ[i][zid] = i;
- format(str,64,"Zone%d_owner",i); GZ[i][owner] = dInt(gz,str);
- format(str,64,"Zone%d_maxX",i); GZ[i][max_x] = dFloat(gz,str);
- format(str,64,"Zone%d_maxY",i); GZ[i][max_y] = dFloat(gz,str);
- format(str,64,"Zone%d_minX",i); GZ[i][min_x] = dFloat(gz,str);
- format(str,64,"Zone%d_minY",i); GZ[i][min_y] = dFloat(gz,str);
- format(str,64,"Zone%d_flaggeX",i); GZ[i][flagge_x] = dFloat(gz,str);
- format(str,64,"Zone%d_flaggeY",i); GZ[i][flagge_y] = dFloat(gz,str);
- format(str,64,"Zone%d_flaggeZ",i); GZ[i][flagge_z] = dFloat(gz,str);
- format(str,64,"Zone%d_erstellt",i); GZ[i][erstellt] = dInt(gz,str);
- format(str,64,"%d |Besitzer: '%s'",i,FrakName(GZ[i][owner]));
- if(GZ[i][erstellt] != 1)continue;
- M_CreateZone(GZ[i][min_x],GZ[i][min_y],GZ[i][max_x],GZ[i][max_y],FrakColor(GZ[i][owner]),str,FrakColor(GZ[i][owner]));
- GZ[i][pickup] = CreatePickup(1314,1,GZ[i][flagge_x],GZ[i][flagge_y],GZ[i][flagge_z],0);
- GZ[i][label] = Create3DTextLabel("Tippe '/angriff', um das Gebiet anzugreifen.\nTippe '/flagge' | Y/Z, um die Flagge zu erobern.",Rot,GZ[i][flagge_x],GZ[i][flagge_y],GZ[i][flagge_z],20,0);
- counter ++;
- break;
- }
- return printf(" '%d' Gangzone(n) wurde(n) erfolgreich erstellt und geladen.",counter);
- }
- stock LoadGZ_(zoneid){
- new gz[32],str[64]; format(gz,sizeof(gz),G_FILE);
- GZ[zoneid][zid] = zoneid;
- format(str,64,"Zone%d_owner",zoneid); GZ[zoneid][owner] = dInt(gz,str);
- format(str,64,"Zone%d_maxX",zoneid); GZ[zoneid][max_x] = dFloat(gz,str);
- format(str,64,"Zone%d_maxY",zoneid); GZ[zoneid][max_y] = dFloat(gz,str);
- format(str,64,"Zone%d_minX",zoneid); GZ[zoneid][min_x] = dFloat(gz,str);
- format(str,64,"Zone%d_minY",zoneid); GZ[zoneid][min_y] = dFloat(gz,str);
- format(str,64,"Zone%d_flaggeX",zoneid); GZ[zoneid][flagge_x] = dFloat(gz,str);
- format(str,64,"Zone%d_flaggeY",zoneid); GZ[zoneid][flagge_y] = dFloat(gz,str);
- format(str,64,"Zone%d_flaggeZ",zoneid); GZ[zoneid][flagge_z] = dFloat(gz,str);
- format(str,64,"Zone%d_erstellt",zoneid); GZ[zoneid][erstellt] = dInt(gz,str);
- format(str,64,"%d |Besitzer: '%s'",zoneid,FrakName(GZ[zoneid][owner]));
- M_CreateZone(GZ[zoneid][min_x],GZ[zoneid][min_y],GZ[zoneid][max_x],GZ[zoneid][max_y],FrakColor(GZ[zoneid][owner]),str,FrakColor(GZ[zoneid][owner]));
- GZ[zoneid][pickup] = CreatePickup(1314,1,GZ[zoneid][flagge_x],GZ[zoneid][flagge_y],GZ[zoneid][flagge_z],0);
- GZ[zoneid][label] = Create3DTextLabel("Tippe '/angriff', um das Gebiet anzugreifen.\nTippe '/flagge' | Y/Z, um die Flagge zu erobern.",Rot,GZ[zoneid][flagge_x],GZ[zoneid][flagge_y],GZ[zoneid][flagge_z],20,0);
- return 1;
- }
- stock SaveGZ(){
- new i ,gz[32],str[64]; format(gz,32,G_FILE);
- for(; i<MAX_GZ; i++){
- format(str,64,"Zone%d_owner",i); dIntSet(gz,str,GZ[i][owner]);
- format(str,64,"Zone%d_maxX",i); dFloatSet(gz,str,GZ[i][max_x]);
- format(str,64,"Zone%d_maxY",i); dFloatSet(gz,str,GZ[i][max_y]);
- format(str,64,"Zone%d_minX",i); dFloatSet(gz,str,GZ[i][min_x]);
- format(str,64,"Zone%d_minY",i); dFloatSet(gz,str,GZ[i][min_y]);
- format(str,64,"Zone%d_flaggeX",i); dFloatSet(gz,str,GZ[i][flagge_x]);
- format(str,64,"Zone%d_flaggeY",i); dFloatSet(gz,str,GZ[i][flagge_y]);
- format(str,64,"Zone%d_flaggeZ",i); dFloatSet(gz,str,GZ[i][flagge_z]);
- format(str,64,"Zone%d_erstellt",i); dIntSet(gz,str,GZ[i][erstellt]);
- }
- return 1;
- }
- stock SaveGZ_(zoneid){
- new gz[32],str[64]; format(gz,32,G_FILE);
- format(str,64,"Zone%d_owner",zoneid); dIntSet(gz,str,GZ[zoneid][owner]);
- format(str,64,"Zone%d_maxX",zoneid); dFloatSet(gz,str,GZ[zoneid][max_x]);
- format(str,64,"Zone%d_maxY",zoneid); dFloatSet(gz,str,GZ[zoneid][max_y]);
- format(str,64,"Zone%d_minX",zoneid); dFloatSet(gz,str,GZ[zoneid][min_x]);
- format(str,64,"Zone%d_minY",zoneid); dFloatSet(gz,str,GZ[zoneid][min_y]);
- format(str,64,"Zone%d_flaggeX",zoneid); dFloatSet(gz,str,GZ[zoneid][flagge_x]);
- format(str,64,"Zone%d_flaggeY",zoneid); dFloatSet(gz,str,GZ[zoneid][flagge_y]);
- format(str,64,"Zone%d_flaggeZ",zoneid); dFloatSet(gz,str,GZ[zoneid][flagge_z]);
- format(str,64,"Zone%d_erstellt",zoneid); dIntSet(gz,str,GZ[zoneid][erstellt]);
- return 1;
- }
- stock DisableAll(){
- new i;
- for(; i<MAX_GZ; i++){
- M_DestroyZone(i);
- DestroyPickup(GZ[i][pickup]);
- Delete3DTextLabel(GZ[i][label]);
- }
- return 1;
- }
- stock DisableZone(zoneid){
- DestroyPickup(GZ[zoneid][pickup]);
- Delete3DTextLabel(GZ[zoneid][label]);
- GZ[zoneid][min_x] = 0,GZ[zoneid][min_y] = 0,GZ[zoneid][max_x] = 0,GZ[zoneid][max_y] = 0,GZ[zoneid][flagge_x] = 0,GZ[zoneid][flagge_y] = 0,GZ[zoneid][flagge_z] = 0;
- return M_DestroyZone(zoneid);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement