/*
_____ _ _ _
/ ____| | | | | ( )
| | __ ___ _ __ | |_| | ___ _ __ ___ __ _ _ __ |/ ___
| | |_ |/ _ \\ \'_ \\| __| |/ _ \\ \'_ ` _ \\ / _` | \'_ \\ / __|
| |__| | __/ | | | |_| | __/ | | | | | (_| | | | | \\__ \\
\\_____|\\___|_| |_|\\__|_|\\___|_|_|_| |_|\\__,_|_| |_| |___/
/ ____| / ____| | |
| | __ __ _ _ __ __ _ | (___ _ _ ___| |_ ___ _ __ ___
| | |_ |/ _` | \'_ \\ / _` | \\___ \\| | | / __| __/ _ \\ \'_ ` _ \\
| |__| | (_| | | | | (_| | ____) | |_| \\__ \\ || __/ | | | | |
\\_____|\\__,_|_| |_|\\__, | |_____/ \\__, |___/\\__\\___|_| |_| |_|
__/ | / _| __/ |
|___/ | |_ ___ |___/
| _/ _ \\| \'__|
| || (_) | |
|_|_\\___/|_| _
/ _| | |
___ __ _ _ __ ___ _ __ | |_ ___ _ __ _ _ _ __ ___ | |__ _ _
/ __|/ _` | \'_ ` _ \\| \'_ \\| _/ _ \\| \'__| | | | \'_ ` _ \\ | \'_ \\| | | |
\\__ \\ (_| | | | | | | |_) | || (_) | | | |_| | | | | | |_| | | | |_| |
|___/\\__,_|_| |_| |_| .__/|_| \\___/|_| \\__,_|_| |_| |_(_)_| |_|\\__,_|
| |
|_|
*/
//Szükséges függvénykönyvtárak a script futtatásához
#include <a_samp>
#include <zcmd>
#include <sscanf2>
/*
==============================================================
Alapvetõ definíciók a banda szerkezetével kapcsolatban
==============================================================
*/
#define MAX_BANDA 50 //Nem javaslom a növelését!
#define RENDFOKOZATOK 5 //Viccesebb ha lehet rendfokozatokat is hozzáadni
/*
==============================================================
Alapvetõ változók [globális szinte] a bandával kapcsolatban.
==============================================================
*/
new BandaNeve[MAX_BANDA][50]; //Igényesebb ha a bandát elnevezhetik nem pedig számazonosítóval kerülnek kiírásra
new BandaTag[MAX_PLAYERS]; //Ez a változó azért funkcionál, hogy a késõbbiekben le tudjuk kérdezni melyik bandában van az ipse
new BandaTagokSzama[MAX_BANDA]; //Egy bandában hányan vannak épp online
new UresBanda[MAX_BANDA]; //Amennyiben nincsenek fent bandatagok ez a változó segít nekünk feloszlatni a bandát.
new BandaRang[MAX_PLAYERS]; //Rendfokozat a bandatagoknak
new BandaRendfokozat[MAX_BANDA][RENDFOKOZATOK+1][30];// NA ezt jól összecelláztam. Ebben kerül a rendfokozat eltárolásra
new Meghivtak[MAX_PLAYERS]; //Meghívás a bandába, viszont kérdéses, hogy meghívták é a személyt
new bool:Bandaban[MAX_PLAYERS]; //Bandában van a játékos?
new BandatGeneral[MAX_PLAYERS]; //Éppen generál bandát?
/*
==============================================================
Alapvetõ színdefiníciók
==============================================================
*/
#define SZIN_PIROS 0xff0000AA
#define SZIN_CITROM 0xf2ff00AA
#define SZIN_ZOLD 0x032b0dAA
/*
==============================================================
Textdrawok
==============================================================
*/
public OnFilterScriptInit()
{
print(\"\\n--------------------------------------\");
print(\" Gentleman\'s Gang System for samforum.hu\");
print(\"--------------------------------------\\n\");
for(new k = 0; k < MAX_BANDA; k++) //A filterscript betöltésekor minden bandát üressé kell tenni!
{
UresBanda[k] = 1;
}
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
if(Bandaban[playerid] == true)
{
BandaTagokSzama[bandaTag[playerid]]--;
if(BandaTagokSzama[bandaTag[playerid]] == 0)
{
UresBanda[bandaTag[playerid]] = 1;
}
}
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if(Bandaban[killerid] == true && Bandaban[playerid] == true)
{
new szoveg[128];
if(BandaTag[killerid] == BandaTag[playerid])
{
format(szoveg, 128, \"A(z) {00ff2b}\'%s\' {ffffff}banda tagjai egymást gyilkolják!\", BandaNeve[bandaTag[killerid]]);
SendClientMessageToAll(-1, szoveg);
}
else
{
format(szoveg, 128, \"A(z) {00ff2b}\'%s\' {ffffff}banda egyik tagja megölte a(z)! {00ff2b}\'%s\' {ffffff}banda tagját!\", BandaNeve[bandaTag[killerid]],BandaNeve[bandaTag[playerid]]);
}
}
return 1;
}
public OnPlayerText(playerid, text[])
{
if(!strcmp(\"#\", text, true, 1))
{
if(Bandaban[playerid] == true)
{
strdel(text, 0, 1);
new szoveg[230];
new jatekosneve[MAX_PLAYER_NAME];
GetPlayerName(playerid, jatekosneve, MAX_PLAYER_NAME);
format(szoveg, 230, \"{00ff2b}[banda]{ffffff}\'%s\' {00ff2b}[%s]{ffffff}:%s\", jatekosneve,BandaRendfokozat[bandaTag[playerid]][bandaRang[playerid]],text);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(BandaTag == BandaTag[playerid])
{
SendClientMessage(i, -1, szoveg);
return 0;
}
}
}
}
switch(BandatGeneral[playerid])
{
case 1:
{
if(!strcmp(\"kilép\", text, true, 6)) //Szövegösszehasonlítás abban az esetben ha nem szeretne bandát generálni.
{
SendClientMessage(playerid, SZIN_ZOLD, \"Létrehozás megszakítva!\");
BandatGeneral[playerid] = 0; //Bugfix
return 0; //Return 0 nem küldi el az alap üzenetet!
}
new formatalt[128];
new talalat = 0;
for(new i = 0; i < MAX_BANDA; i++)
{
if(UresBanda == 1)
{
talalat = 1;
format(BandaNeve, 50, text);
format(formatalt, 128, \"Az új bandád neve a következõ: {112b03}%s {ffffff}Bandád azonosítószáma: {0009ff}%d\", BandaNeve,i);
SendClientMessage(playerid, -1, formatalt);
SendClientMessage(playerid, SZIN_CITROM, \"A bandád létrehozásra került. Parancsaidat a /banda paranccsal megtekintheted! Kérlek állítsd majd be a banda rendfokozatait! Banda chat: #\");
BandaTagokSzama ++;
UresBanda = 0;
Bandaban[playerid] = true;
Meghivtak[playerid] = false;
BandaTag[playerid] = i;
BandaRang[playerid] = RENDFOKOZATOK;
for(new g = 0; g < RENDFOKOZATOK; g++)
{
format(BandaRendfokozat[g], 30, \"TAG\");
}
format(BandaRendfokozat[5], 30, \"GÓRÉ\");
BandatGeneral[playerid] = 0;
return 0;
}
if(talalat == 0)
{
SendClientMessage(playerid, SZIN_PIROS, \"Sajnálom az összes banda telített! Kérlek próbálkozz késõbb!\");
BandatGeneral[playerid] = 0;
return 1;
}
}
return 0;
}
}
return 1;
}
public OnPlayerConnect(playerid)
{
Meghivtak[playerid] = -1;
BandaTag[playerid] = -1;
BandaRang[playerid] = 0;
BandatGeneral[playerid] = 0;
return 1;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
if(Bandaban[playerid] == true)
{
new szoveg[128];
new meghivo[MAX_PLAYER_NAME];
GetPlayerName(playerid, meghivo, MAX_PLAYER_NAME);
new meghivott[MAX_PLAYER_NAME];
GetPlayerName(clickedplayerid, meghivott, MAX_PLAYER_NAME);
if(BandaRang[playerid] == RENDFOKOZATOK)
{
if(BandaTag[playerid] == BandaTag[clickedplayerid])
{
format(szoveg, 128, \"{00ff2b}[bANDA] {012106}\'%s\' {ffffff}kirúgta a bandából {00ff2b}\'%s\' {ffffff}játékost!\", meghivo, meghivott);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(BandaTag == BandaTag[playerid])
{
SendClientMessage(i, -1, szoveg);
}
}
BandaTagokSzama[bandaTag[playerid]]--;
SendClientMessage(clickedplayerid, SZIN_PIROS, \"Kirúgtak a bandából!\");
Meghivtak[playerid] = -1;
BandaTag[playerid] = -1;
BandaRang[playerid] = 0;
BandatGeneral[playerid] = 0;
BandaTagokSzama[bandaTag[playerid]]--;
if(BandaTagokSzama[bandaTag[playerid]] == 0)
{
UresBanda[bandaTag[playerid]] = 1;
}
return 1;
}
}
format(szoveg, 128, \"{00ff2b}[bANDA] {012106}\'%s\' {ffffff}meghívta a bandába {00ff2b}\'%s\' {ffffff}játékost!\", meghivo, meghivott);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(BandaTag == BandaTag[playerid])
{
SendClientMessage(i, -1, szoveg);
}
}
format(szoveg, 128, \"{ff0000}\'%s\' {ffffff}nevû játékos meghívott a {00ff2b}\'%s\' {ffffff}bandába!\", meghivo, BandaNeve[bandaTag[playerid]]);
SendClientMessage(playerid, -1, szoveg);
SendClientMessage(playerid, SZIN_CITROM, \"Csatlakozáshoz /bbelep\");
Meghivtak[playerid] = BandaTag[playerid];
}
return 1;
}
COMMAND:bbelep(playerid)
{
if(Meghivtak[playerid] == -1)
{
SendClientMessage(playerid, SZIN_PIROS, \"Nem hívtak meg sehova sem!\");
return 1;
}
BandaTag[playerid] = Meghivtak[playerid];
BandaRang[playerid] = 1;
BandaTagokSzama[bandaTag[playerid]]++;
new jatekosneve[MAX_PLAYER_NAME];
GetPlayerName(playerid, jatekosneve, MAX_PLAYER_NAME);
new formatalt[128];
format(formatalt, 128, \"{ff0000} \'%s\' {ffffff}játékos csatlakozott a(z) {00ff2b}\'%s\' {ffffff}bandába!\",jatekosneve, BandaNeve[bandaTag[playerid]]);
SendClientMessageToAll(-1, formatalt);
return 1;
}
COMMAND:brendfokozat(playerid,params[])
{
if(BandaRang[playerid] < RENDFOKOZATOK) //Amennyiben csak normál tag
{
SendClientMessage(playerid, SZIN_PIROS, \"Ezt a parancsot csak maximális rendfokozaton használhatod!\");
return 1;
}
//params: rendfokozatid név
new id, output[30];
if(sscanf(params, \"ds[30]\",id,output))
{
SendClientMessage(playerid, SZIN_PIROS, \"Kérlek a parancsot így használd: /brendfokozat [rendfokozat id] [név]\");
return 1;
}
print(\"Banda rendfokozat blokk elõtt\");
if(id > RENDFOKOZATOK)
{
SendClientMessage(playerid, SZIN_PIROS, \"Az azonosító nagyobb mint a megengedett maximális rendfokozat!\");
return 1;
}
print(\"Banda rendfokozat blokk után\");
new szoveg[150];
new jatekosneve[MAX_PLAYER_NAME];
GetPlayerName(playerid, jatekosneve, MAX_PLAYER_NAME);
print(\"FOS 1\");
format(BandaRendfokozat[bandaTag[playerid]][id], 30, output);
format(szoveg, 150, \"{00ff2b}[bANDA] {ffffff}\'%s\' {ffffff}módosította a(z) {00ff2b}\'%d\' {ffffff}rendfokozat nevét {ff0000}\'%s\'{ffffff}-re\", jatekosneve, id, output);
print(\"FOS 2\");
for(new g =0; g< MAX_PLAYERS; g++)
{
if(BandaTag[g] == BandaTag[playerid])
{
SendClientMessage(g, -1, szoveg);
}
}
return 1;
}
COMMAND:trendfokozat(playerid, params[])
{
if(BandaRang[playerid] < RENDFOKOZATOK) //Amennyiben csak normál tag
{
SendClientMessage(playerid, SZIN_PIROS, \"Ezt a parancsot csak maximális rendfokozaton használhatod!\");
return 1;
}
new id,szam;
if(sscanf(params, \"ud\", id,szam))
{
SendClientMessage(playerid, SZIN_PIROS, \"Kérlek a parancsot így használd: /trendfokozat [id] [rendfokozat]\");
return 1;
}
if(id == INVALID_PLAYER_ID)
{
SendClientMessage(playerid, SZIN_PIROS, \"Nem találom a játékost!\");
return 1;
}
if(BandaTag[id] != BandaTag[playerid])
{
SendClientMessage(playerid, SZIN_PIROS, \"Õ nincs a te bandádba!\");
return 1;
}
new szoveg[150];
new jatekosneve[MAX_PLAYER_NAME];
new gyokerneve[MAX_PLAYER_NAME];
GetPlayerName(playerid, jatekosneve, MAX_PLAYER_NAME);
GetPlayerName(playerid, gyokerneve, MAX_PLAYER_NAME);
BandaRang[id] = szam;
format(szoveg, 150,\"{00ff2b}[bANDA] {ffffff}\'%s\' {ffffff}módosította {00ff2b}\'%s\' {ffffff}rendfokozatát {00ff2b}\'%s\'{ffffff}-re\", jatekosneve, gyokerneve, BandaRendfokozat[bandaTag[playerid]][szam]);
return 1;
}
COMMAND:banda(playerid,params[])
{
new output[80]; //Amit a \'szóköz\' után ír ebben a változóban tároljuk el!
//Ha nincs bandában/bandája akkor más funkciók érhetõek el a számára
if(Bandaban[playerid] == false)
{
if(sscanf(params, \"s[80]\", output))
{
SendClientMessage(playerid, SZIN_PIROS, \"Kérlek a parancsot így használd: /banda [létrehoz]\");
return 1;
}
if(!strcmp(output, \"létrehoz\", true, 9))
{
new talalat = 0;
for(new i = 0; i < MAX_BANDA; i++)
{
if(UresBanda == 1)
{
talalat = 1;
}
}
if(talalat == 0)
{
SendClientMessage(playerid, SZIN_PIROS, \"Sajnálom az összes banda telített! Kérlek próbálkozz késõbb!\");
BandatGeneral[playerid] = 0;
return 1;
}
SendClientMessage(playerid, SZIN_PIROS, \"Rendben! Kérlek írd be a Banda leendõ nevét (MAX 50 karakter!), kilépéshez írd be a kilép szót\");
BandatGeneral[playerid] = 1;
}
}
else
{
if(BandaRang[playerid] < RENDFOKOZATOK) //Amennyiben csak normál tag
{
if(sscanf(params, \"s[80]\", output))
{
SendClientMessage(playerid, SZIN_PIROS, \"Kérlek a parancsot így használd: /banda [kilép]\");
return 1;
}
if(strcmp(output, \"kilép\", true, 6) && strcmp(output, \"meghív\", true, 7))
{
SendClientMessage(playerid, SZIN_PIROS, \"Kérlek a parancsot így használd: /banda [kilép]\");
return 1;
}
if(!strcmp(output, \"kilép\", true, 6))
{
new jatekosneve[MAX_PLAYER_NAME];
new szoveg[128];
GetPlayerName(playerid, jatekosneve, MAX_PLAYER_NAME);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(BandaTag == BandaTag[playerid])
{
BandaTagokSzama[bandaTag[playerid]] --;
Bandaban[playerid] = false;
format(szoveg, 128, \"{e100ff}[bANDA] {2e1e00}%s {ffffff}elhagyta a bandát! Tagok száma: {0f6100}%d\", jatekosneve, BandaTagokSzama[bandaTag[playerid]] );
SendClientMessage(i, -1, szoveg);
}
if(BandaTagokSzama[bandaTag[playerid]] == 0)
{
format(szoveg, 128, \"Az {0f6100}\'%s\' {ffffff}névre hallgató banda {ff0000}feloszlott {ffffff}mivel az utolsó tag is kilépett!\");
SendClientMessageToAll(-1, szoveg);
}
}
}
if(!strcmp(output, \"meghív\", true, 6))
{
SendClientMessage(playerid, SZIN_ZOLD, \"Játékos bandába való meghívásához kérlek kattints a nevére (ezt a parancsot nem muszáj beírnod)!\");
}
}
else //Amennyiben góré
{
SendClientMessage(playerid, SZIN_ZOLD, \"Játékos bandába való meghívásához/kirúgásához kérlek kattints a nevére!\");
SendClientMessage(playerid, SZIN_ZOLD, \"Rendfokozatok állítása [név]: /brendfokozat [rendfokozat id] [név]\");
SendClientMessage(playerid, SZIN_ZOLD, \"Rendfokozatok állítása [tag]: /trendfokozat [játékos] [id]\");
}
}
return 1;
}