Jump to content

Cum sa faci Ranks/Vip/Level etc...


Recommended Posts

Guest PlayON
Posted

Cum sa faci:

Ranks/Vip/Level


Informatii:

Multi cred ca un sistem de VIP sau Admin este foarte greu de facut, din pacate, va inselati, este foarte usor, sa detectezi levelul unui admin, sau atunci cand setezi levelu de VIP al unei persoane, este totul bazat pe Variabile, totul se stocheaza in variabile.

Am sa va arat cum sa folosit adecvat variabilele sa creati tot felu de verificari, sa reusiti sa faceti si singuri un system de VIP.

Pentru inceput:

...Pentru inceput trebuie sa cream variabila pe care o vom folosi sa stocam nivelul jucatorului, si prin care ne vom folosi sa detectam nivelu jucatorului. Variabila trebuie sa contina MAX_PLAYERS deoarece trebuie sa fie facuta pentru un ID de jucator specific. Daca nu folosim MAX_PLAYERS inseamna ca variabila este globala!

Pasul 1: Crearea variabilei

Deci adaugam codul acesta sus in topul scriptului:

new PlayerLevel[ MAX_PLAYERS ];

Pasul 2: Inserirea unei valori in variabila

Cu acest cod v-om seta valoarea variabilei PlayerLevel la numarul 5

Acest cod poate fi luat drept, ca jucatorul respectiv, cui i se aplica aceasta variabila, v-a fi admin level 5, dar inca nu, nu puteam spune ca ne va ajuta in ceva.

PlayerLevel[ playerid ] = 5;

Aceasta 'metoda' poate fi folosita intr-o comanda te testare, de genu.

if ( !strcmp( cmdtext, "/level5" ) )

{

    PlayerLevel[ playerid ] = 5;

    SendClientMessage( playerid, -1, "Valoarea '5' a fost adaugata variabilei 'PlayerLevel'" );

    return 1;

}

Pasul 3: Verificarea valorii variabilei cu o valoare

Cu codul acesta vom verifica daca, variabila noastra, creata mai sus, este mai mare deat 10.

if ( PlayerLevel[ playerid ] > 10 )

Dar din pacate acesta nu v-a fi chemat, deoarece, valoarea curenta a variabilei PlayerLevel este de 5, iar codul nostru v-a merge daca este peste 10.

Exemplu:

if ( PlayerLevel[ playerid ] > 0)

{

    //code code code

}

Codul va merge daca jucatorul are variabila setata mai mare ca 0. Aceasta metoda se paote folosi in unde vrei tu, comenzi/functii/stocuri.

Pasul 4: Egal, mai mic, mai mare, adauga, scade etc...

In acest pas am sa va invat ce inseamna amestecul de simboluri '== != += -= > >= < <='

== - Inseamna X egal cu Y, se poate folosi doar un functiile de verificare a unei valori ( Pasul 3)

Exemplu: if ( PlayerLevel[ playerid ] == 2 )

= - Se foloseste pentru a seta o anumita valoare unei functii

Exemplu: PlayerLevel[ playerid ] = 10;

!= - Punand un '!' un fata la '=' se genereaza efectul invers al '='. Adica, verifici daca X NU este Y.

Exemplu: if ( PlayerLevel[ playerid ] != 0 )

+= - Se foloseste '+' pentru a dauga valoarea setata in plus. Adica, valoarea curenta + valoarea setata.

Exemplu: PlayerLevel[ playerid ] += 1; < - Se adauga 1 valoare in plus variabilei, daca variabila are 3, va avea 4.

-= - Se foloeste '-' pentru a extrage valoarea din variabila.

Exemplu: PlayerLevel[ playerid ] -= 4; < - Se extrage 4 puncte! Daca variabila are 10 va avea 6. Daca variabila ar avea 3 ar veni -1 deoarece merg si negative!

> - Verifici daca X este mai mare ca Y.

Exemplu: if ( PlayerLevel[ playerid ] > 3 )

>= - Verifica daca X este mai mare sau egal cu Y.

Exemplu: if ( PlayerLevel[ playerid ] >= 7 )

< - Verifici daca X este mai mic ca Y.

Exemplu: if ( PlayerLevel[ playerid ] < 3 )

<= - Verifici daca X este mai mic sau egal cu Y.

Exemplu: if ( PlayerLevel[ playerid ] <= 5 )

Pasul 5: Aplicam ce am invatat.

Deci aici am sa aplic tot ce am invatat noi acuma(voi nu eu), am sa fac un MIC sistem de VIP.

//Cream variabila pentru a stoca levelul de VIP.

new VipLevel[ MAX_PLAYERS ];

//Folosim niste comenzi

public OnPlayerCommandText( playerid,  cmdtext[ ] )

{

    //Comparam X cu Y, comparam daca jucatorul a introdus /ak46 in chat, daca da, continua:

    if ( !strcmp( cmdtext, "/ak46" ) )

    {

        //Verificam daca jucatorul nu este level 0.

        if ( VipLevel[ playerid ] != 0 )

        {

              //Daca nu este level 0, da-i o arma.

              GivePlayerWeapon( playerid, WEAPON_AK47, 99999 );

        }

        //else se foloseste daca X nu este adevarat atunci Y este adevarat.

        else

        {

              //Ii dam confirmarea ca nu este VIP.

              SendClientMessage( playerid, -1, "Nu esti membru VIP" );

        }

        //Returnam valoarea de adevar.

        return 1;

    }

    //Comparam iara.

    if ( !strcmp( cmdtext, "/VIP" ) )

    {

        //Verificam daca jucatorul NU este level 5, sa nu se repete comanda!

        if ( VipLevel[ playerid ] != 5 )

        {

              //Setam valoarea de adevar a variabilei VipLevel la 5 (Logic, jucatorul este acum level VIP level 5)

              VipLevel[ playerid ] = 5;

        }

        //else se foloseste daca X nu este adevarat atunci Y este adevarat.

        //deci in cazul acesta, sus fiind !=, else il transforma in ==.

        else

        {

              //Ii dam de stire jucatorului ca deja este level 5.

              SendClientMessage( playerid, -1, "Deja esti VIP level 5!" );

        }

        return 1;

    }

    //Aici returnam 0 ca aceasta functie sa continue.

    return 0;

}

Sfarsit:

Cam atata a fost! Daca aveti intrebari, lasati mesaj si va ajut! Sper ca acuma intelegeti, adevarata fata a unui sistem de VIP sau cine stie ce. Totul este bazat pe variabile si valorile lor, verificari ale valorilor!

Posted

Misto tutorial!

5/5!

Misto aranjarea ;)

Da puteai face si asa:


    if ( !strcmp( cmdtext, "/ak46" ) )

    {

        //Verificam daca jucatorul este level 0 si ii dam confirmarea ca nu este VIP.

        if ( VipLevel[ playerid ] == 0 ) return SendClientMessage( playerid, -1, "Nu esti membru VIP" );

        //Daca nu este level 0, da-i o arma.

        GivePlayerWeapon( playerid, WEAPON_AK47, 99999 );

        //Returnam valoarea de adevar.

        return 1;

    }


142sj0l.png

Underground-GFX

Guest PlayON
Posted

Misto tutorial!

5/5!

Misto aranjarea ;)

Da puteai face si asa:

[h]

    if ( !strcmp( cmdtext, "/ak46" ) )

    {

        //Verificam daca jucatorul este level 0 si ii dam confirmarea ca nu este VIP.

        if ( VipLevel[ playerid ] == 0 ) return SendClientMessage( playerid, -1, "Nu esti membru VIP" );

        //Daca nu este level 0, da-i o arma.

        GivePlayerWeapon( playerid, WEAPON_AK47, 99999 );

        //Returnam valoarea de adevar.

        return 1;

    }

[h]

Asa cum? Nu exista tagurile [pawn] aici pe forum.

Posted

Cu return, adica sa verifice direct daca e Level 0 sai zica:


if ( VipLevel[ playerid ] == 0 ) return SendClientMessage( playerid, -1, "Nu esti membru VIP" );


:tongue:

142sj0l.png

Underground-GFX

Guest PlayON
Posted

Cu return, adica sa verifice direct daca e Level 0 sai zica:


if ( VipLevel[ playerid ] == 0 ) return SendClientMessage( playerid, -1, "Nu esti membru VIP" );


:tongue:

Am facut metoda simpla ca nu toti stiu ca returnand un false opreste continuarea codului si e mai simplu asa.

LaZ link=topic=9982.msg59903#msg59903 date=1299780931]

Nu poti sa adaugi valori unei variabile, o setezi.

Daca vorbesti la plural, nu nu poti sa adaugi valori, dar, ced ca am incurcat "adaug" cu "seteaza" pe cand scriam la +=

Posted

if ( !strcmp( cmdtext, "/level5" ) )

{

    PlayerLevel[ playerid ] = 5;

    SendClientMessage( playerid, -1, "Valoarea '5' a fost adaugata variabilei 'PlayerLevel'" );

    return 1;

}

In acel exemplu, PlayerLevel[ indice ] va primi valoarea 5. Ii important sa precizezi si asta.

* indicele fiind ID-ul jucatorului.

Guest PlayON
Posted

Lucian" post="59921" timestamp="1299783100"]

eu sunt mai batut in cap nu inteleg nimic de ce nu ai folosit

 
Pentru ca asa intelegi mai greu,
 e naspa in SMF!

Guest farse
Posted

Eu as opta pentru o variabila 2-D cu un enum,pentru a nu crea N variabile..

Daca nu folosim MAX_PLAYERS inseamna ca variabila este globala!

O variabila este globala atunci cand nu se incadreaza/nu este pusa intr-o functie.Folosind MAX_PLAYERS o transformi in 1-D.

Este cam empiric,dar e bun, Gj  :azn:

Guest PlayON
Posted

Eu as opta pentru o variabila 2-D cu un enum,pentru a nu crea N variabile..

O variabila este globala atunci cand nu se incadreaza/nu este pusa intr-o functie.Folosind MAX_PLAYERS o transformi in 1-D.

Este cam empiric,dar e bun, Gj  :azn:

Tu intelegi ca eu am facut un tutorial pentru "idioti" mai bine zis? E facut simplu ca sa inteleaga.

daca ma puneam sa o fac 3D sau 2D astia ce ce ce?

  • 1 year later...
  • 2 weeks later...
Posted

6/10

Si ce ati invatat? Sa faceti o variabila care nici macar nu se salveaza, nu se incarca.

Scriptul este prea lung, se putea mult mai scurt.

[pawn]public OnPlayerCommandText( playerid,  cmdtext[ ] )

{

    if ( !strcmp( cmdtext, "/ak46" ) ) {

        if ( VipLevel[ playerid ] != 0 ) 

            { GivePlayerWeapon( playerid, WEAPON_AK47, 99999 ); }

        else return SendClientMessage( playerid, -1, "Nu esti membru VIP" );

    }

    if ( !strcmp( cmdtext, "/VIP" ) ) {

        if ( VipLevel[ playerid ] != 5 )

            { VipLevel[ playerid ] = 5; }

        else return SendClientMessage( playerid, -1, "Deja esti VIP level 5!" );

    }

    return 0;

}[/pawn]

Banner_2.png
  • 3 weeks 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
×
×
  • 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.