Welcome to IPBFocus Demo
Register now to gain access to all of our features. Once registered and logged in, you will be able to create topics, post replies to existing threads, give reputation to your fellow members, get your own private messenger, post status updates, manage your profile and so much more. If you already have an account, login here - otherwise create an account for free today!

Nu sunteti conectat. Conectați-vă sau înregistrați-vă

Vezi subiectul anterior Vezi subiectul urmator In jos  Mesaj [Pagina 1 din 1]

#1Advertencia [Tutorial] Cum sa faci o factiune Joi Sept 15, 2016 8:16 pm

PitiKu

PitiKu
Fondator
Astazi va voi prezenta cum puteti sa faceti o noua factiune folosind YSI .


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;
}

https://d-zone.forum.st

Vezi subiectul anterior Vezi subiectul urmator Sus  Mesaj [Pagina 1 din 1]

Permisiunile acestui forum:
Nu puteti raspunde la subiectele acestui forum