Frakcio System Sziasztok!
Ezt a Filterscriptet Defensive modhoz készítettem. Vagyis ahoz akartam, de Team szerint inkább egy Freeroam, vagy stunt szerverre, tehát nem RP-re jobban kell, így átírtam.
Az FS-ben 2 banda van. Grove és Ballas.
Amit tudni kell róla:
Nem teszteltem a /r parancsot, a többi nálam jó volt.
Lehetnek benne hibák
Egyéb scriptekbõl is vettem ötleteket(Anthony RP modja adta az ötletet)
Elkészítési idõ: 2-3 óra
Mivel Defensivehez készült, így megtalálhatóak azok a kiegészítõk, ami oda kellett volna.(Pl. ProxDetector)
Parancsok:
/leaderad
/eloleptet
/lefokoz
/fegyverek
/skin
/rLetöltés :
http://www.solidfiles.com/d/98fa7c1d24/fksystem.rarA kód itt lenne:
#include <a_samp>
#include <zcmd>
#include <sscanf2>
#include <dini>
#define BALLAS 1
#define GROVE 2
new id;
main();
new rangok[3][5][32] = {
{\"Beavatott\", \"Tag\", \"Bérgyilkos\", \"Alvezér\", \"Bandavezér\"},
{\"Beavatott\", \"Tag\", \"Bérgyilkos\", \"Alvezér\", \"Bandavezér\"},
{\"Beavatott\", \"Tag\", \"Bérgyilkos\", \"Alvezér\", \"Bandavezér\"}
};
enum pInfo
{
pFrakcio,
pLeader,
pRang
};
new PlayerInfo[MAX_PLAYERS][pInfo];
public OnFilterScriptInit()
{
Create3DTextLabel(\"/skin /fegyverek\",0xFB0000FF,2522.7605,-1681.8456,15.4970,10.0,0);
CreatePickup(1318, 0, 2522.7605,-1681.8456,15.4970, 0);
return 1;
}
public OnPlayerConnect(playerid)
{
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
return 1;
}
CMD:skin(playerid, params[])
{
if(PlayerInfo[playerid][pFrakcio] == BALLAS)
{
new skin;
if(sscanf(params, \"u\", skin)) return SendClientMessage(playerid, -1, \"/skin [1] [2] [3]\");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, \"A játékos nem elérhetõ!\");
if(IsPlayerInRangeOfPoint(playerid, 2.5, 0.0, 0.0, 0.0))
{
if(skin == 1)
{
SetPlayerSkin(playerid, 102);
}
else if(skin == 2)
{
SetPlayerSkin(playerid, 103);
}
else if(skin == 3)
{
SetPlayerSkin(playerid, 104);
}
}
else
{
SendClientMessage(playerid, -1, \"Nem vagy a Pickup-nál!\");
}
}
else
{
}
if(PlayerInfo[playerid][pFrakcio] == GROVE)
{
new skin;
if(sscanf(params, \"u\", skin)) return SendClientMessage(playerid, -1, \"/skin [1] [2] [3]\");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, \"A játékos nem elérhetõ!\");
if(IsPlayerInRangeOfPoint(playerid, 2.5, 2522.7605,-1681.8456,15.4970))
{
if(skin == 1)
{
SetPlayerSkin(playerid, 105);
}
else if(skin == 2)
{
SetPlayerSkin(playerid, 106);
}
else if(skin == 3)
{
SetPlayerSkin(playerid, 107);
}
}
else
{
SendClientMessage(playerid, -1, \"Nem vagy a Pickup-nál!\");
}
}
else
{
SendClientMessage(playerid, -1, \"Nem vagy Bandatag!\");
}
return 1;
}
CMD:leaderad(playerid, params[])
{
if (IsPlayerAdmin(playerid))
{
new leader;
if(sscanf(params, \"ud\", id, leader)) return SendClientMessage(playerid, -1, \"Használat: /leaderad [iD] <[FK ID]\"), SendClientMessage(playerid, -1, \"| Ballas - 1 | Grove - 2 |\");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, \"A játékos nincs online!\");
if(leader >= 1 && leader <= 2)
{
if(leader == 1)
{
SendClientMessage(id, -1, \"Kineveztek a Ballas bandavezérének.\");
PlayerInfo[id][pLeader] = 1;
PlayerInfo[id][pRang] = 5;
PlayerInfo[id][pFrakcio] = BALLAS;
Ment(id);
}
else if(leader == 2)
{
SendClientMessage(id, -1, \"Kineveztek a Grove bandavezérének.\");
PlayerInfo[id][pLeader] = 1;
PlayerInfo[id][pRang] = 5;
PlayerInfo[id][pFrakcio] = GROVE;
Ment(id);
}
}
else
{
SendClientMessage(playerid, -1, \"Azonosítók: 1 - 2\");
}
}
else
{
SendClientMessage(playerid, -1, \"Nem vagy Rcon Admin!\");
}
return 1;
}
CMD:fegyverek(playerid, params[])
{
if(PlayerInfo[playerid][pFrakcio] == BALLAS)
{
new fegyverek;
new string2[130];
if(sscanf(params, \"u\", fegyverek)) return SendClientMessage(playerid, -1, \"/fegyverek [1] [2] [3]\");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, \"A játékos nem elérhetõ!\");
if(IsPlayerInRangeOfPoint(playerid, 2.5, 0.0,0.0,0.0))
{
if(fegyverek == 1)
{
GivePlayerWeapon(playerid, 22, 100);
SendClientMessage(playerid, -1, \"Kaptál Desert Eagle.t 100 tölténnyel!\");
format(string2, sizeof(string2), \"Info: %s, %s lekérte a 1-es fegyvercsomagot.\", Rang(playerid), Name(playerid));
SendBallasMessage(-1, string2);
}
else if(fegyverek == 2)
{
GivePlayerWeapon(playerid, 28, 400);
SendClientMessage(playerid, -1, \"Kaptál UZI-t 400 tölténnyel!\");
format(string2, sizeof(string2), \"Info: %s, %s lekérte a 2-es fegyvercsomagot.\", Rang(playerid), Name(playerid));
SendBallasMessage(-1, string2);
}
else if(fegyverek == 3)
{
GivePlayerWeapon(playerid, 29, 200);
SendClientMessage(playerid, -1, \"Kaptál MP5-öt 200 tölténnyel!\");
format(string2, sizeof(string2), \"Info: %s, %s lekérte a 3-as fegyvercsomagot.\", Rang(playerid), Name(playerid));
SendBallasMessage(-1, string2);
}
}
else
{
SendClientMessage(playerid, -1, \"Nem vagy a Pickup-nál!\");
}
}
else
{
}
if(PlayerInfo[playerid][pFrakcio] == GROVE)
{
new fegyverek;
new string2[130];
if(sscanf(params, \"u\", fegyverek)) return SendClientMessage(playerid, -1, \"/fegyverek [1] [2] [3]\");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, \"A játékos nem elérhetõ!\");
if(IsPlayerInRangeOfPoint(playerid, 2.5, 2522.7605,-1681.8456,15.4970))
{
if(fegyverek == 1)
{
GivePlayerWeapon(playerid, 22, 100);
SendClientMessage(playerid, -1, \"Kaptál Desert Eagle.t 100 tölténnyel!\");
format(string2, sizeof(string2), \"Info: %s, %s lekérte a 1-es fegyvercsomagot.\", Rang(playerid), Name(playerid));
SendGroveMessage(-1, string2);
}
else if(fegyverek == 2)
{
GivePlayerWeapon(playerid, 28, 400);
SendClientMessage(playerid, -1, \"Kaptál UZI-t 400 tölténnyel!\");
format(string2, sizeof(string2), \"Info: %s, %s lekérte a 2-es fegyvercsomagot.\", Rang(playerid), Name(playerid));
SendGroveMessage(-1, string2);
}
else if(fegyverek == 3)
{
GivePlayerWeapon(playerid, 29, 200);
SendClientMessage(playerid, -1, \"Kaptál MP5-öt 200 tölténnyel!\");
format(string2, sizeof(string2), \"Info: %s, %s lekérte a 3-as fegyvercsomagot.\", Rang(playerid), Name(playerid));
SendGroveMessage(-1, string2);
}
}
else
{
SendClientMessage(playerid, -1, \"Nem vagy a Pickup-nál!\");
}
}
else
{
SendClientMessage(playerid, -1, \"Nem vagy Bandatag!\");
}
return 1;
}
CMD:eloleptet(playerid, params[])
{
new string[128];
if(sscanf(params, \"u\", id)) return SendClientMessage(playerid, -1, \"Használat: /elõléptet < Név / Id >\");
if(PlayerInfo[playerid][pLeader] >= 1 || IsPlayerAdmin(playerid))
{
PlayerInfo[id][pRang] ++;
format(string,sizeof(string), \"Elõléptetted %s-t. Rangja: %s\", Name(id), Rang(id));
SendClientMessage(playerid, -1, string);
format(string,sizeof(string), \"Elõléptettek! Az új Rangod: %s\", Rang(id));
SendClientMessage(id, -1, string);
}
else
{
SendClientMessage(playerid, -1, \"Nem vagy leader.\");
}
return 1;
}
CMD:lefokoz(playerid, params[])
{
new string[128];
if(sscanf(params, \"u\", id)) return SendClientMessage(playerid, -1, \"Használat: /lefokoz < Név / Id >\");
if(PlayerInfo[playerid][pLeader] >= 1 || IsPlayerAdmin(playerid))
{
PlayerInfo[id][pRang] --;
format(string,sizeof(string), \"Lefokoztad %s-t. Rangja: %s\", Name(id), Rang(id));
SendClientMessage(playerid, -1, string);
format(string,sizeof(string), \"Lefokoztak! Az új Rangod: %s\", Rang(id));
SendClientMessage(id, -1, string);
}
else
{
SendClientMessage(playerid, -1, \"Nem használhatod.\");
}
return 1;
}
CMD:r(playerid, params[])
{
if(PlayerInfo[playerid][pFrakcio] == BALLAS)
{
new S[100], S2[128], S3[128];
if(sscanf(params, \"s[100]\", S)) return SendClientMessage(playerid, -1, \"Használat: /fr < Frakció Rádió >\");
format(S2, sizeof(S2), \"[Rádió] %s %s mondja: %s\", Rang(playerid), Name(playerid), S);
format(S3, sizeof(S3), \"[Rádió] Valaki mondja: %s\", S);
SendBallasMessage(-1, S2);
ProxDetector(10.0, playerid, S3, -1, -1, -1, -1, -1);
}
else if(PlayerInfo[playerid][pFrakcio] == GROVE)
{
new S[100], S2[128], S3[128];
if(sscanf(params, \"s[100]\", S)) return SendClientMessage(playerid, -1, \"Használat: /fr < Frakció Rádió >\");
format(S2, sizeof(S2), \"[Rádió] %s %s mondja: %s\", Rang(playerid), Name(playerid), S);
format(S3, sizeof(S3), \"[Rádió] Valaki mondja: %s\", S);
SendGroveMessage(-1, S2);
ProxDetector(10.0, playerid, S3, -1, -1, -1, -1, -1);
}
else
{
SendClientMessage(playerid, -1, \"Nem vagy semilyen frakció tagja!\");
}
return 1;
}
stock SendBallasMessage(szin, szoveg[])
{
for(new i; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(PlayerInfo[pFrakcio] == BALLAS)
{
SendClientMessage(i, szin, szoveg);
}
}
}
}
stock SendGroveMessage(szin, szoveg[])
{
for(new i; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(PlayerInfo[pFrakcio] == GROVE)
{
SendClientMessage(i, szin, szoveg);
}
}
}
}
stock Rang(playerid)
{
new fk,rank, rank2[32];
rank = PlayerInfo[playerid][pRang];
fk = PlayerInfo[playerid][pFrakcio];
rank2 = rangok[fk][rank];
return rank2;
}
stock Name(playerid)
{
new string[24];
GetPlayerName(playerid,string,24);
new str[60];
strmid(str,string,0,strlen(string),24);
for(new i = 0; i < MAX_PLAYER_NAME; i++)
{
if (str == \' \') str = \' \';
}
return str;
}
stock Ment(playerid)
{
new File[180];
new Fajl[50];
format(File, sizeof(File), \"User/%s.ini\", Name(playerid));
if(dini_Exists(File))
{
dini_IntSet(Fajl,\"Leader\",PlayerInfo[playerid][pLeader]);
dini_IntSet(Fajl,\"Rang\",PlayerInfo[playerid][pRang]);
}
return 1;
}
stock ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5)
{
if(IsPlayerConnected(playerid))
{
new Float:posx, Float:posy, Float:posz;
new Float:tempposx, Float:tempposy, Float:tempposz;
new Float:oldposx, Float:oldposy, Float:oldposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
for(new i; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(GetPlayerVirtualWorld(playerid) == GetPlayerVirtualWorld(i))
{
GetPlayerPos(i, posx, posy, posz);
tempposx = (oldposx -posx);
tempposy = (oldposy -posy);
tempposz = (oldposz -posz);
if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16)))
{
SendClientMessage(i, col1, string);
}
else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8)))
{
SendClientMessage(i, col2, string);
}
else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4)))
{
SendClientMessage(i, col3, string);
}
else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2)))
{
SendClientMessage(i, col4, string);
}
else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
SendClientMessage(i, col5, string);
}
}
}
}
}
return 1;
}
Észrevételeket szívesen hallgatom, illetve kérem is, hisz elég kezdõ vagyok még.