Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* SaMp Include Clan System
- *
- * (c) by Kaliber, 2012
- *
- * Grundidee von PinguinLP
- */
- #include <a_samp>
- #if !defined MAX_CLANS
- #define MAX_CLANS 100
- #endif
- #define rot 0xFF0000FF
- #define grun 0xFF0000
- #define gelb 0xFFFF00FF
- #define c_const 900
- #define c_1 (c_const + 1)
- forward _OnPlayerCommandText(playerid, cmdtext[]);
- forward _OnPlayerDeath(playerid, killerid);
- enum c_Info {
- c_Points,
- c_Name[24],
- c_ID
- };
- enum p_c_Info {
- p_c_Member,
- p_c_Leader
- };
- new ClanInfo[MAX_CLANS][c_Info], PlayerClan[MAX_PLAYERS][p_c_Info], evtl[MAX_PLAYERS], War_Time[MAX_PLAYERS],ClanWar[MAX_CLANS];
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- new cmd[64], tmp[64], idx, pID, string[128];
- cmd = strtok(cmdtext, idx);
- if(!strcmp(cmd, "/clanranglist", true))
- {
- new var, Rangliste[64], zw[5];
- for(new i; i<MAX_CLANS; i++) if(var < ClanInfo[i][c_Points]) var = ClanInfo[i][c_Points], zw[0] = i;
- format(Rangliste, 64,"{FFFFFF}1. %s: %d Punkte\n",ClanInfo[zw[0]][c_Name],var);
- var = 0;
- for(new i; i<MAX_CLANS; i++) if(var < ClanInfo[i][c_Points] && zw[0] != i) var = ClanInfo[i][c_Points], zw[1] = i;
- format(string, sizeof string,"2. %s: %d Punkte\n",ClanInfo[zw[1]][c_Name],var),strins(Rangliste, string, strlen(Rangliste), 255);
- var = 0;
- for(new i; i<MAX_CLANS; i++) if(var < ClanInfo[i][c_Points] && zw[1] != i && zw[0] != i) var = ClanInfo[i][c_Points], zw[2] = i;
- format(string, sizeof string,"3. %s: %d Punkte\n",ClanInfo[zw[2]][c_Name],var),strins(Rangliste, string, strlen(Rangliste), 255);
- var = 0;
- for(new i; i<MAX_CLANS; i++) if(var < ClanInfo[i][c_Points] && zw[2] != i && zw[1] != i && zw[0] != i) var = ClanInfo[i][c_Points], zw[3] = i;
- format(string, sizeof string,"4. %s: %d Punkte\n",ClanInfo[zw[3]][c_Name],var),strins(Rangliste, string, strlen(Rangliste), 255);
- var = 0;
- for(new i; i<MAX_CLANS; i++) if(var < ClanInfo[i][c_Points] && zw[3] != i && zw[2] != i && zw[1] != i && zw[0] != i) var = ClanInfo[i][c_Points], zw[4] = i;
- format(string, sizeof string,"5. %s: %d Punkte\n",ClanInfo[zw[4]][c_Name],var),strins(Rangliste, string, strlen(Rangliste), 255);
- ShowPlayerDialog(playerid,c_1,DIALOG_STYLE_MSGBOX,"{FF0000}Clan Rangliste",Rangliste,"Bestätigen","");
- return 1;
- }
- if(!strcmp(cmd, "/war", true))
- {
- if(!PlayerClan[playerid][p_c_Leader]) return SendClientMessage(playerid,rot,"Du bist nicht der Leader eines Clans !");
- tmp = strtok(cmdtext, idx);
- if(!tmp[0]) return SendClientMessage(playerid,rot,"Verwendung: /war [spielerid (muss der Leader eines gegnerischen Clans sein)] [Zeit (in Minuten)]");
- pID = strval(tmp);
- if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,rot,"Ein Spieler mit dieser spielerid ist nicht online !");
- if(PlayerClan[playerid][p_c_Leader] == PlayerClan[pID][p_c_Leader]) return SendClientMessage(playerid,rot,"Du kannst nicht gegen deinen eigenen Clan einen Krieg führen !");
- if(!PlayerClan[pID][p_c_Leader]) return SendClientMessage(playerid,rot,"Dieser Spieler ist kein Leader einer Clan !");
- if(evtl[pID] == playerid) return SendClientMessage(playerid,rot,"Sie haben diesem Clan bereits eine Anfrage geschickt !");
- tmp = strtok(cmdtext, idx);
- if(!tmp[0]) return SendClientMessage(playerid,rot,"Du hast die Zeit nicht angegeben !");
- new time = strval(tmp);
- if(time > 60 || time < 1) return SendClientMessage(playerid,rot,"Der Clan War kann nicht länger als 60 und nicht weniger als 1ne Minute gehen !");
- format(string, sizeof string,"Der Leader des Clans {FF0000}%s{FFFF00} hat ihnen eine Anfrage für einen Krieg geschickt ! (Starte den Krieg mit: /aKrieg)",GetClanName(playerid));
- SendClientMessage(pID,gelb,string);
- War_Time[pID] = time;
- evtl[pID] = playerid;
- return 1;
- }
- if(!strcmp(cmd, "/aKrieg", true))
- {
- if(!PlayerClan[playerid][p_c_Leader]) return SendClientMessage(playerid,rot,"Du bist nicht der Leader eines Clans !");
- if(evtl[playerid] == -1) return SendClientMessage(playerid,rot,"Es hat niemand ihnen eine Anfrage für einen Krieg geschickt !");
- if(!IsPlayerConnected(evtl[pID])){ evtl[playerid] = -1; SendClientMessage(playerid,rot,"Der Leader, der ihnen diese Anfrage geschickt hat ist offline !"); return 1; }
- new c1[24], c2[24];
- format(c1, 24, "%s",GetClanName(playerid)),format(c2, 24, "%s",GetClanName(evtl[playerid]));
- if(ClanWar[GetClanId(c1)] == GetClanId(c2)) return SendClientMessage(playerid,rot,"Diese beiden Clans führen bereits einen War gegeneinander !");
- format(string, sizeof string,"Clan Infos: Der Clan War zwischen %s und %s hat begonnen !",GetClanName(evtl[playerid]),GetClanName(playerid));
- SendClientMessageToAll(grun,string);
- SetTimerEx("War_End", 1000*60*War_Time[playerid], 0, "ss",c2,c1);
- ClanWar[GetClanId(c1)] = GetClanId(c2);
- ClanWar[GetClanId(c2)] = GetClanId(c1);
- CallRemoteFunction("OnClanWarStart", "ss",c1,c2);
- evtl[playerid] = -1;
- War_Time[playerid] = 0;
- return 1;
- }
- return CallLocalFunction("OnPlayerCommandText", "is",playerid,cmdtext);
- }
- forward War_End(clan1[], clan2[]);
- public War_End(clan1[], clan2[])
- {
- ClanWar[GetClanId(clan1)] = 0;
- ClanWar[GetClanId(clan2)] = 0;
- new string[128];
- format(string, sizeof string,"Clan Infos: Der Clan War zwischen %s und %s ist soeben beendet worden !",clan1,clan2);
- SendClientMessageToAll(rot,string);
- CallRemoteFunction("OnClanWarEnd", "ss",clan1,clan2);
- return 1;
- }
- #if defined _ALS_OnPlayerCommandText
- #undef OnPlayerCommandText
- #else
- #define _ALS_OnPlayerCommandText
- #endif
- #define OnPlayerCommandText _OnPlayerCommandText
- public OnPlayerDeath(playerid, killerid)
- {
- new c1[24], c2[24];
- format(c1, 24, "%s",GetClanName(playerid)),format(c2, 24, "%s",GetClanName(killerid));
- if(ClanWar[GetClanId(c1)] == GetClanId(c2) && GetClanId(c2) > 0)
- {
- ClanInfo[GetClanId(c2)][c_Points]++;
- }
- return CallLocalFunction("OnPlayerDeath", "ii",playerid,killerid);
- }
- #if defined _ALS_OnPlayerDeath
- #undef OnPlayerDeath
- #else
- #define _ALS_OnPlayerDeath
- #endif
- #define OnPlayerDeath _OnPlayerDeath
- stock CreateClan(name[])
- {
- if(strlen(name) >= 24) return 0;
- new z = GetFreeSlot();
- format(ClanInfo[z][c_Name], 24, "%s", name);
- printf("Name1 inc1: %s",ClanInfo[z][c_Name]);
- ClanInfo[z][c_ID] = z;
- return 1;
- }
- stock DeleteClan(name[])
- {
- new z = GetClanId(name);
- for(new i; i<MAX_PLAYERS; i++)
- {
- if(!IsPlayerConnected(i)) continue;
- if(!strcmp(GetClanName(i), name, false))
- {
- PlayerClan[i][p_c_Member] = 0;
- PlayerClan[i][p_c_Leader] = 0;
- }
- }
- ClanInfo[z][c_ID] = 0;
- ClanInfo[z][c_Name] = "";
- ClanInfo[z][c_Points] = 0;
- ClanInfo[z][c_Count] = 0;
- }
- stock GetClanName(playerid)
- {
- new string[128];
- for(new i; i<MAX_PLAYERS; i++)
- {
- if(ClanInfo[i][c_ID] <= 0) continue;
- if(PlayerClan[playerid][p_c_Member] == ClanInfo[i][c_ID] || PlayerClan[playerid][p_c_Leader] == ClanInfo[i][c_ID])
- {
- format(string, 128, "%s", ClanInfo[i][c_Name]);
- return string;
- }
- }
- format(string, 128, "Es ist ein Fehler aufgetreten !");
- return string;
- }
- stock AddPlayerClan(playerid, clanname[], bool:var)
- {
- new z = GetClanId(clanname);
- if(!var) PlayerClan[playerid][p_c_Member] = z;
- else PlayerClan[playerid][p_c_Leader] = z;
- }
- stock GetClanId(name[])
- {
- new i = 1;
- for(; i<MAX_CLANS; i++)
- {
- if(!strcmp(name, ClanInfo[i][c_Name], false)) return i;
- }
- return -1;
- }
- stock GetFreeSlot()
- {
- new i = 1;
- for(; i<MAX_CLANS; i++)
- {
- if(ClanInfo[i][c_ID] == 0) return i;
- }
- return -1;
- }
- #if !defined USE_STRTOK
- strtok(const string[], &index)
- {
- new length = strlen(string);
- while ((index < length) && (string[index] <= ' ')) index++;
- new offset = index, result[20];
- while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
- {
- result[index - offset] = string[index];
- index++;
- }
- result[index - offset] = EOS;
- return result;
- }
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement