World of Metin

[Tutorial] Crearea factiunilor

View previous topic View next topic Go down

[Tutorial] Crearea factiunilor

Post by Bogdan on Sun Sep 22, 2013 8:25 am

Crearea factiunilor de la 0

Inceputul

Salut , in acest tutorial o sa va prezint cum se creeaza niste factiuni ,vreau sa va anunt ca nu am deschis niciodata un GM de RP sa vad cum se creeaza un sistem de factiuni.
Acest tutorial il voi face pe dini , pentru a fi pe intelesul tuturor , am mai facut cateva tutoriale pe SQLite si mi s-a spus ca sa fac pe ini nu SQL
Prima data creem 2 variabile pentru player , nu globale.

__________________________

new FactionM [ MAX_PLAYERS ] , FactionL [ MAX_PLAYERS ] ;
__________________________


FactionM - Factiunea in care esti membru
FactionL - Factiunea in care esti lider
Ne ducem sus in script sub
___________________________

#include
___________________________

si adaugam

___________________________

#include
#define FilePlace "Factions/%s.ini"
___________________________

define FilePlace "Factions/%s.ini" - locul unde se vor salva datele playerului
Adica in scriptfiles/Factions/%s.ini
Dupa ce am facut toate astea , v-om face un mic stock , care va "lua" numele playerului , ca sa ne miscam mai rapid

_________________

stock pName ( playerid ){
new i [ 24 ] ;
GetPlayerName ( playerid ,i , 24 ) ;
return i ;
}
________________

Crearea/Setarea/Updatarea



Ok , acum v-om merge la OnPlayerRequestClass , pentru a face o verificare contului care tocmai a intrat pe server.
1.Creem o noua variabila
2.Facem un simplu format care verifica locatia si daca contul care a intrat pe server exista.
3.Facem verificarea de la pasul 2
3.1 .Daca contul exista ii vom "reda" statisticile
3.2 .Daca nu exista , se va crea cu FactionM/L pe 0


________________
public OnPlayerRequestClass(playerid, classid)
{
new str [ 50 ] ;
format ( str , 50 , FilePlace , pName ( playerid ) ) ;
if ( dini_Exists ( str ) ){ //contul exista
FactionM [ playerid ] = dini_Int ( str , "Faction Member" ) ;
FactionL [ playerid ] = dini_Int ( str , "Faction Leader" ) ;
}
else{ //contul nu exista
dini_Create ( str ) ;
dini_IntSet ( str , "Faction Member" , FactionM [ playerid ] = 0 ) ;
dini_IntSet ( str , "Faction Leader" , FactionL [ playerid ] = 0 ) ;
}
return 1;
}
________________


Dupa ce terminam cu OnPlayerRequestClass , mergem la OnPlayerDisconnect , pentru ai salva statisticile cand se deconecteaza.


________________
public OnPlayerDisconnect(playerid)
{
new str [ 50 ] ;
format ( str , 50 , FilePlace , pName ( playerid ) ) ; //Verifica contul
dini_IntSet ( str , "Faction Member" , FactionM [ playerid ] ) ;
dini_IntSet ( str , "Faction Leader" , FactionL [ playerid ] ) ;
return 1;
}
________________

Cam asta e partea cu crearea/inserarea/salvarea , nu prea ma pricep la explicatii de genu , dar sper ca ati inteles cat de cat


Crearea Spawnurilor


Crearea unui astfel de sistem e mai usor decat sa mananci seminte (vorba mea cea noua =)) )
Trebuie doar sa gandesti putin , pentru a crea spawnurile si sa setam skinurile playerilor din anumite factiuni , vom face un simplu stock
Eu voi crea 2 factiuni
1-Politia romana
2-Fratia oboroaca
Stock-ul meu se va numi , CheckPlayerFaction.


____________________
stock CheckPlayerFaction ( playerid ) {
if ( FactionM [ playerid ] == 1 || FactionL [ playerid ] == 1 ){ //Daca playerul este lider/membru in factiunea cu id-ul 1 (Politia romana)
SetPlayerSkin ( playerid , 280 ) ;
SetPlayerPos ( playerid , /*coordonatele spawn-ului*/ ) ;
GivePlayerWeapon ( playerid , 24 , 100 ) ; //Armele care vreti sa le aiba playerul din factiunea respectiva
}
else if ( FactionM [ playerid ] == 2 || FactionL [ playerid ] == 2 ){ //Daca playerul este lider/membru in factiunea cu id-ul 2 (Fratia oboroaca)
SetPlayerSkin ( playerid , 291 ) ;
SetPlayerPos ( playerid , /*coordonatele spawn-ului*/ ) ;
GivePlayerWeapon ( playerid , 24 , 100 ) ; //Armele care vreti sa le aiba playerul din factiunea respectiva
}
return 1;
}
____________________



Dupa ce ati facut toate acestea , adaugati stockul la OnPlayerSpawn , adica asa

_______________________
public OnPlayerSpawn (playerid)
{
CheckPlayerFaction(playerid);
return 1;
}
_______________________


Cam asta este toata treaba cu factiunile , eu nu v-am aratat nimic avansat , ca sa fie clar .
Eu va arat doar ca idee cum se creeaza , nu dau mura in gura , sper sa va descurcati de aici.

Bogdan
Membru
Membru

Posts : 50
Reputation : 0
Join date : 22/09/2013

View user profile

Back to top Go down

View previous topic View next topic Back to top


 
Permissions in this forum:
You cannot reply to topics in this forum