Buna,in acest tutorial voi incerca sa va explic cat mai pe larg cum puteti crea factiuni,comenzi pentr-u factiuni si comenzi. Tin sa mentionez ca este primul meu tutorial.Daca considerati ca este in plus sau nefolositor va rog sa il stergeti! 1.Includem plughinurile in gamemode! [pawn] #include <a_samp> #include <zcmd> #include <sscanf2> #include <Dini> [/pawn] 2.Definim factiunile! [pawn] enum pInfo { FactionMember, FactionLeader, } new PlayerInfo[MAX_PLAYERS][pInfo]; [/pawn] 3.Creem folderul unde se vor salva datele. [pawn] public OnPlayerConnect(playerid) { GetPlayerName(playerid, name, sizeof(name));//daca playerul este nou format(file, sizeof(file), "Factiuni/%s.ini", name); dini_IntSet(file, "FactionMember",PlayerInfo[playerid][FactionMember] = 0); dini_IntSet(file, "FactionLeader",PlayerInfo[playerid][FactionLeader] = 0); return 1; } [/pawn] 4.Facem ca atunci cand playerul se conecteaza sa i se atribuie datele din folderul creat. [pawn] { GetPlayerName(playerid, name, sizeof(name));//daca playerul deja are creat folderul de factiuni format(file, sizeof(file), "Factiuni/%s.ini", name); PlayerInfo[playerid][FactionMember] = dini_Int(file, "FactionMember"); PlayerInfo[playerid][FactionLeader] = dini_Int(file, "FactionLeader"); return 1; } [/pawn] 5.Acum facem ca atunci cand playerul se deconecteaza sa i se salveze eventualele modificari... [pawn] public OnPlayerDisconnect(playerid, reason) { new name[24]; GetPlayerName(playerid,name,24); format(file,sizeof(file),"Users/%s.ini",name); if(dini_Exists(file)) { dini_IntSet(file,"AdminLevel",PlayerInfo[playerid][AdminLevel]); dini_IntSet(file,"FactionMember",PlayerInfo[playerid][FactionMember]); return 1; } return 0; } [/pawn] 6.Cream comanda care v-a face playerului sa fie lider la o factiune. [pawn] COMMAND:makeleader(playerid, params[]) { new id;//pentru a fi mai usor... new leader; if(IsPlayerConnected(id)) { if(!sscanf(params, “ui”, id, leader))// u=id jucator, i= un numar. { new stringh[64]; new name[MAX_PLAYER_NAME], PlayerName[MAX_PLAYER_NAME]; GetPlayerName(id,name sizeof(name)); GetPlayerName(id,name sizeof(PlayerName)); format(string, sizeof(string),”%s te-a promovat la rankul de lider al unei factiuni”,name,leader); SendClientMessage(id,-1, string); PlayerInfo[id][FactionLeader] = leader; return 1; } else return SendClientMessage(id,-1,"/makeleader <id><faction id>"); } else return SendClientMessage(id,-1,"Acest player nu este online!"); return 0; } [/pawn] 7.Cream comanda cu care liderul unei factiuni face un player membru. [pawn] COMMAND:invite(playerid,params[]) { new id; new member; if(IsPlayerConnected(id)) { if(PlayerInfo[id][FactionLeader] == 1)//aceasta linie face comanda accesibila doar liderului factiuni cu id-ul! { if(!sscanf(params, “u”, id)) { PlayerInfo[id][FactionMember] = 1; SpawnPlayer(id); retuen 1; } else return SendClientMessage(id,-1,"/invite <id>"); } else return SendClientMessage(id,-1,"Nu esti lider al unei factiuni!"); } else return SendClientMessage(id,-1,"Acest player nu este online"); return 0; } [/pawn] 8.Creem HQ-ul unei factiuni. [pawn] COMMAND:enter(playerid,params[]) { new id; if( PlayerInfo[playerid][FactionMember] == 1 || PlayerInfo[playerid][FactionLeader] == 1 ) { if(IsPlayerInRangeOfPoint(playerid,7.0,-315.0122,1774.5361,43.6406)) // Aceasta este acea casa din desert.... { SetPlayerPos(id,2324.419921,-1145.568359,1050.710083); CreatePickup(1239,14,2324.419921,-1145.568359,1050.710083,1); SendClientMessage(id,-1,"Ai intrat in HQ Hitman!"); SetPlayerInterior(id,12); SetPlayerVirtualWorld(id,1); return 1; } } } COMMAND:exit(playerid, params[]) { new id; if( PlayerInfo[playerid][FactionMember] == 5 || PlayerInfo[playerid][FactionLeader] == 5 ) { if(IsPlayerInRangeOfPoint(playerid,7.0,2324.419921,-1145.568359,1050.710083)) { SetPlayerPos(id,-315.0122,1774.5361,43.6406); CreatePickup(1239,14,-315.0122,1774.5361,43.6406); SendClientMessage(id,-1,"Ai intrat in HQ Hitman!"); SetPlayerInterior(id,0); SetPlayerVirtualWorld(id,0); return 1; } } } [/pawn] 9.Acum creem un stock care sa seteze unde vor spawna playeri care sunt membir ai factiuni Hitman. [pawn] stock FactionSpawn ( playerid ) { new id; if ( PlayerInfo[playerid][FactionMember] == 0 || PlayerInfo[playerid][FactionLeader] == 0 ) { SetPlayerPos(id,1958.3783, 1343.1572, 15.3746); SendClientMessage(id,-1,"Esti civil!"); SetPlayerSkin ( playerid , 0 ) ; SetPlayerInterior(id,0); SetPlayerVirtualWorld(id,0); SetPlayerColor(id, 1); return 1; } return 0; } [/pawn] 10.Acum facem ca acest stock sa intre in functiune cand playerul spawneaza. [pawn] public OnPlayerSpawn (playerid) { FactioSpawn (playerid); return 1; } [/pawn] Sper ca v-am ajutat si ca ati inteles cum sta treaba,astept pareri de toate felurile!