Jump to content

Recommended Posts

Posted

Tutoriale necesare:

Tutorial:

PS:Inainte de a citi acest tutorial trebuie sa stiti ca , in acest tutorial va voi arata cum sa sari peste OnPlayerRequestClass doar daca esti inregistrat , daca nu esti inregistrat nu vei sari peste OnPlayerRequestClass , pentru a putea alege skin-ul cu care te vei spawna automat cand le loghezi

In acest tutorial va voi prezenta cum sa "sari" peste OnPlayerRequestClass , folosit uneori sau mereu la serverele de RolePlay

Sa incepem:

Prima data trebuie sa creem o variabila , eu o voi face tip bool , voi o puteti face si integer daca vreti

new bool: firstC [ MAX_PLAYERS ] ; 
Tocmai ce am creat variabila firstC ( first connect ) , de aceasta vabiabila ne v-om ajuta ca sa "sarim" peste OnPlayerRequestClass Acum ,  trebuie sa merge la dialogul de register si setati variabila firstC pe true
firstC [ playerid ] = true ; 
Si la dialogul de login il setam pe false
firstC [ playerid ] = false ;
Acum mergem la OnPlayerRequestClass Sa zicem ca voi aveti asa la OnPlayerRequestClass
public OnPlayerRequestClass(playerid, classid)
{
	SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
	return 1;
}
Acum trebuie sa editam acest cod si sa facem urmatoarele: Daca abia s-a inregistrat ii va aparea sa selecteze skin-ul , iar daca este deja inregistrat si acum s-a logat il va spawna cu skin-ul care l-a ales la inregistrare
public OnPlayerRequestClass(playerid, classid)
{
     if ( firstC [ playerid ] == true ) // true l-am setat la dialogul de register , deci daca abia se inregistreaza ii va aparea sa selecteze skinul
     {
	SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
     }
     else return SetTimerEx ( "spawn" , 1 , false , "i" , playerid ) ; // daca este deja inregistrat si acum se logheaza il va spawna imediat 
     return 1;
}
Daca incercati sa testati acum nu va merge deoarece nu aveti callback-ul spawn in GM , ca sa creati callback-ul spawn trebuie sa folosim un forward
forward spawn ( playerid ) ;
iar callbackul va arata asa
public spawn ( playerid ) return SpawnPlayer ( playerid ) ;
Dupa ce am facut toate acestea , trebuie sa salvam skin-ul care l-a ales dupa ce s-a inregistrat Pentru a intelege m-ai bine tot ce am facut pana acum si ce voi face mai incolo cititi tutorialele recomandate Prima data trebuie sa creem sus in script 2 variabile una cu tag-ul DB: si una tip string
new DB:pSkin ,
     string [ 200 ] ;
La OnGameModeInit
pSkin = db_open ( "PlayersSkin.db" ) ; //creaza daca nu exista sau deschide daca exista baza de date
db_query ( pSkin , "CREATE TABLE IF NOT EXISTS `Users` ( `Name` TEXT ,\
                                               `SkinID` NUMERIC )" ) ; //Creaza tabelul `Users` in baza de date `PlayersSkin` daca nu exista
La OnPlayerSpawn trebuie sa facem asta ( cateva explicatii cu // )
public OnPlayerSpawn ( playerid )
{
     if ( firstC [ playerid ] == true ) // Daca si-a ales skin-ul in Database i se va seta la coloana SkinID , id-ul skin-ului pe care l-a ales
     {
          new name [ 24 ] ;
          GetPlayerName ( playerid , name , 24 ) ;
          format ( string , 200 , "INSERT INTO `Users` VALUES ('%s' , '%d')" , name , GetPlayerSkin ( playerid )  ) ;
          db_free_result ( db_query ( pSkin , string ) ) ; 
     }
     else if ( firstC [ playerid ] == false ) // daca este inregistrat si s-a logat i se v-a seta skinul care l-a ales la inregistrare
     {
          new name [ 24 ] ;
          GetPlayerName ( playerid , name , 24 ) ;
          new DBResult:res ;
          format ( string , 200 , "SELECT * FROM `Users` WHERE `Name` =  '%s'" , name ) ; // Selecteaza tot din tabelul `Users` din baza de date `PlayersSkin`
          res =  db_query ( pSkin , string ) ;  
          if ( db_num_rows ( res ) ) //Daca exista acel player in database i se v-a seta skin-ul ales
          {
               new field [ 10 ] ;
               db_get_field_assoc ( res , "SkinID" , field , 10 ) ;
               SetPlayerSkin ( playerid , strval ( field ) ) ;
          }         
     }
     return 1 ;
}
PS:Eu la OnPlayerSpawn am altfel , nu am testat cum am facut in acest tutorial Daca vreti sa ii setati voi skin-ul , fara sa mai aleaga el trebuie sa faceti urmatoarele: Stergeti tot codul de la OnPlayerSpawn ( acela care l-am pus eu in tutorial ) iar la OnPlayerRequestClass faceti asa
public OnPlayerRequestClass(playerid, classid)
{
     SetTimerEx ( "spawn" , 1 , false , "i" , playerid ) ;
     SetPlayerSkin ( playerid , skin-ul ) ;
     return 1;
}

Massari e curva mea

Posted

Eu consider ca e ceva folositor , bravo Rimmon

Multumesc , si chiar este folositor , cel putin pentru serverele RP/RPG din cate stiu xD

PS:Pentru toti , m-am lasat de stunt ma apuc de RP , e mai interesant xD

Massari e curva mea

  • 2 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.