PitiKu
Fondator
Astazi va voi prezenta cum puteti sa faceti o noua factiune folosind YSI .
Pentru inceput avem nevoie de urmatoarele include-uri:
Dupa ce ati descarcat ne ducem la inceputul gamemode-ului si adaugam:
Definim cateva culori :
In caz ca nu aveti un sistem de register/login adaugati acest cod la inceputul gamemode-ului:
Acum adaugam:
Daca aveti un sistem de register/login adaugati la OnDialogResponse , la dialogul de register urmatoarele linii:
Am terminat cu partea de salvare a datelor unei factiuni , acum trebuie sa facem comenzile pentru a putea face o factiune accesibila:
Pentru inceput avem nevoie de urmatoarele include-uri:
- Cod:
ZCMD
SSCANF
YSI/Y_ini
Dupa ce ati descarcat ne ducem la inceputul gamemode-ului si adaugam:
- Cod:
#include <zcmd>
#include <YSI\y_ini>
#include <sscanf2>
Definim cateva culori :
- Cod:
#define COLOR_RED 0xFF0000AA
#define COLOR_GREEN 0x33AA33AA
#define COLOR_PDRAD 0x297CCFFF
In caz ca nu aveti un sistem de register/login adaugati acest cod la inceputul gamemode-ului:
- Cod:
enum PlayerData
{
FactionID, //salveaza id-ul factiunii
pFactionRank, //salveaza rank-ul membrilor
pFactionLeader // salveaza liderii factiunilor
}
new pData[MAX_PLAYERS][PlayerData];
Acum adaugam:
- Cod:
forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
{
INI_Int("FactionID",PlayerInfo[playerid][FactionID]);//cand un player va intra pe server ,acesta va fi in factiunea aleasa de el sau admin
INI_Int("FactionRank",PlayerInfo[playerid][pFactionRank]);//cand playerul se va intra pe server , acesta va avea rank-ul stabilit de catre liderul factiunii respective sau admin
INI_Int("FactionLeader",PlayerInfo[playerid][pFactionLeader]);//cand playerul va intra pe server ,acesta va avea rank-ul de lider la factiunea stabilita de catre admin.
return 1;
}
Daca aveti un sistem de register/login adaugati la OnDialogResponse , la dialogul de register urmatoarele linii:
- Cod:
INI_WriteInt(File,"FactionID",0);//daca un jucator se conecteaza pe server pentru prima data ,acesta va avea statusul factiunii egal cu zero
INI_WriteInt(File,"pFactionRank",0);// daca un jucator se conecteaza pentru prima data pe server ,acesta va avea rank-ul egal cu zero
INI_WriteInt(File,"pFactionLeader",0);//daca un player se conecteaza pentru prima data pe server ,acesta va avea FactionLeader egal cu zero
Am terminat cu partea de salvare a datelor unei factiuni , acum trebuie sa facem comenzile pentru a putea face o factiune accesibila:
- Cod:
CMD:factionkick(playerid,params[])
{
if(pData[playerid][pAdmin] >= 3)//aceasta comanda o poate folosi doar un admin cu rank mai mare sau egal cu 3
{
new targetid;
if(sscanf(params, "u", targetid)) return SendClientMessage(playerid, COLOR_RED, "Foloseste /factionkick [ID Jucator]");//aceasta linie iti va spune in joc cum trebuie sa folosesti comanda
if(targetid != INVALID_PLAYER_ID)//verifica daca playerul este conectat pe server
{
pData[targetid][pFaction] = 0; //Ii seteaza id-ul factiunii 0
pData[targetid][pFacrank] = 0;//Ii seteaza rank-ul 0
pData[targetid][pFacleader] = 0;// Ii scoate liderul
SendClientMessage(targetid,COLOR_PDRAD,"Ai fost dat afara din factiune de catre un admin al serverului.");
}
}
else//daca cel care foloseste comanda nu are rank-ul de admin mai mare sau egal cu 3 ii va returna urmatorul mesaj
{
SendClientMessage(playerid, COLOR_RED, "Doar adminii cu rank--ul mai mare sau egal cu 3 au acces la aceasta comanda.");
}
return 1;
}
CMD:makeleader(playerid, params[])
{
if(pData[playerid][pAdmin] >= 4) //verifica daca cel care foloseste comanda are admin rank mai mare sau egal cu 4
{
new targetid,facid;
if(sscanf(params,"ui",targetid, facid)) return SendClientMessage(playerid, COLOR_RED,"/makeleader [id][Faction id]");//verifica daca comanda este scrisa corect
if(targetid != INVALID_PLAYER_ID)//verifica daca jucatorul este conectat pe server
{
pData[targetid][pFaction] = facid; //Playerul pe care l-ai ales va fi pus in factiunea dorita
pData[targetid][pFactionRank] = 6;//Ii va seta rank-ul de lider
if(facid == 1)//daca facid va fi egal cu unu , playerul va fi lider in Police Departament
{
SendClientMessage(targetid,COLOR_CYAN,"Ai fost ales pentru a fi lider in factiunea Police Departament");
}
}
}
else //daca playerul nu este admin ii va returna urmatorul mesaj
{
SendClientMessage(playerid, COLOR_RED, "Doar adminii au acces la aceasta comanda.");
}
return 1;
}