Topic: Aranjarea scripturilor  (Read 1491 times)

  • V.I.P
  • God
  • 4197 mesaje
  • Respect: 205
  • Esti un nimeni pe langa persoane mici
  • Cunostinte: Mediu
  • Nume de joc: Armyw0w
Aranjarea scripturilor
« on: January 03, 2013, 02:49:49 pm »
Aranjarea scripturilor

Ce inseamna o aranjare a unui script? Inseamna ARTA!
Sa iti creezi un stil de aranjare inseamna arta, din care tu sa te smti acasa in propria ta arta, eu personal cand imi creez propriul stil ma simt ca acasa.
Si cu cat e tot mai complexa aceasta arta.. ii va deruta pe ceilalti scripteri in caz ca vor sa copie..

1. Regula celor 4 spatii

Cand nu respecti regula celor 4 spatii apare eroarea (Loose indentation) iar multi in loc sa aranjeze script-ul prefera sa apeleze la pragma.
In ce consta aceasta regula? Dupa o deschizatura de script ( { ) urmatorele scripturi vor fii inaintate cu 4 spatii, iar cand se inchide scriptul ( } ) se vor reducele urmatoarele scripturi de jos cu 4 spatii.

Code: [Select]
main ( )
{ // deschizatura de script, urmatoarele linii vor fii cu 4 spatii mai mult
    new a = 5;
    if ( a == 5 )
    { // deschizatura de script, urmatoarele linii vor fii cu 4 spatii mai mult
        return 1;
    } // inchizaturaw de script, urmatoarele linii vor fii cu 4 spatii mai putine.
} // inchizatura de script.

Va voi da de exemplu un script nearanjat:

Code: [Select]
main ( )
{
new a = 5;
if ( a == 5 )
{
return 1;
}
}

Care in mod normal trebuie sa arate asa:

Code: [Select]
main ( )
{
    new a = 5;
    if ( a == 5 )
    {
       return 1;
    }
}

Pentru a inainta cu 4 spatii folositi tasta: TAB
Pentru a reduce cu 4 spatii folositi tasta: SHIFT + TAB

2. Reducerea scripturilor cu return

Putem sa reducem un script cu return atata timp cat este 1 instructiune, maxim 2.
De exemplu.. avem o verificare intr-un callback.

Code: [Select]
if ( playerid == 5 )
{
SendClientMessage ( playerid, -1, "O.o esti NUMARUL 5 BA" );
}

Punem dupa verificare return si functia:

Code: [Select]
if ( playerid == 5 ) return SendClientMessage ( playerid, -1, "O.o esti NUMARUL 5 BA" );
Si cum am zis putem folosii si maxim 2 functii:

Code: [Select]
if ( playerid == 5 )
{
    SendClientMessage ( playerid, -1, "Esti numarul 5, ai castigat 20.000$" );
    GivePlayerMoney ( playerid, 20000 );
}

Bun.. trebuie sa punem , intre cele 2 functii ca sa se inteleaga ca urmeaza alta functie.

Code: [Select]
if ( playerid == 5 ) return SendClientMessage ( playerid, -1, "Esti numarul 5, ai castigat 20.000$" ), GivePlayerMoney ( playerid, 20000 );

3. Reducerea verificarilor pe o singura linie.

Reducerea unei verificari pe o singura linie inseamna mai pe romaneste ca mutam actiunile pe linia cu verificarea.

Exemplu:

Code: [Select]
new a = 2;
switch ( a )
{
    case 0:
    {
        print ( "a este 0" );
a = 2;
    }
    case 1:
    {
        print ( "a este 1" );
a = 2;
    }
    case 2:
    {
print ( "a este 2" );
a = 2;
    }
}

Iar mai simplu.. era sa desfintam parantezele si puneam acele 2 instructiuni pe aceasi linie:

Code: [Select]
new a = 2;
switch ( a )
{
    case 0: print ( "a este 0" ), a = 2;
    case 1: print ( "a este 1" ), a = 2;
    case 2: print ( "a este 2" ), a = 2;
}

Concluzie: Scriptul a ajuns la 3 randuri..

4. Folosirea define-urilor in locul valorilor

De ce sa folosim un define? Deoarece, daca creem un loc la inceputul filescriptului/gamemodului/includeului ne este mai usor sa modificam o singura valoare decat sa editam la toate scripturile acea valoare.
Cum am mai spus.. definitiile tin locul valorilor.

Code: [Select]
public OnPlayerRegister ( playerid, password [ 17 ] )
{
    // alte instructiuni
    if ( strlen ( password ) >= 6 && strlen ( password ) <= 16 )
    {
        // alte instructiuni
    }
    return 1;
}

Dupa cum ati vazut.. am folosit valori fixe... si sigur o sa mai apara verificari ca astea in alte parti ale proiectului, asa ca.. ca sa nu modificam valoarea peste tot in proiect folosim define.

Code: [Select]

// Acea parte de include/gamemode/filescript in care sa puneti definitiile
#define MIN_PASSWORD_LEN 6
#define MAX_PASSWORD_LEN 16
------------------------------

public OnPlayerRegister ( playerid, password [ 17 ] )
{
    // alte instructiuni
    if ( strlen ( password ) >= MIN_PASSWORD_LEN && strlen ( password ) <= MAX_PASSWORD_LEN )
    {
        // alte instructiuni
    }
    return 1;
}

Iar cand modificati valorea la acele 2 definitii, se vor schimba peste tot in proiect.

5. Aranjarea scripturilor pe aceasi linie

De exemplu.. avem aceste variabile:

Code: [Select]
new
    Wanted [ MAX_PLAYERS ],
    Money [ MAX_PLAYERS ],
    Age [ MAX_PLAYERS ];

Acum ar arata frumos ca [ MAX_PLAYERS ] sa fie aliniate:

Code: [Select]
new
    Wanted     [ MAX_PLAYERS ],
    Money      [ MAX_PLAYERS ],
    Age        [ MAX_PLAYERS ];

Sper ca aceste tutoriale sa va deschica ochii spre arta..
Multumim.
« Last Edit: January 03, 2013, 04:13:39 pm by Armyw0w »

  • The Sperman
  • Administrator
  • God
  • 3170 mesaje
  • Respect: 40
  • Cunostinte: Mediu
Re: Aranjarea scripturilor
« Reply #1 on: January 03, 2013, 03:06:49 pm »
Inregistreaza-te sau Autentifica-te pentru a vedea acest link
Iar mai simplu.. era sa desfintam parantezele si puneam acele 2 instructiuni pe aceasi linie:

Code: [Select]
new a = 2;
switch ( a )
{
    case 0: print ( "a este 0" ); return 1;
    case 1: print ( "a este 1" ); return 1;
    case 2: print ( "a este 2" ); return 1;
}


Acel cod este total gresit, maestre. In cazul verificarii cu "switch", dupa fiecare "case" poate urma doar o singura instructiune ( care sa se afle pe aceasi linie ).

  • V.I.P
  • God
  • 4197 mesaje
  • Respect: 205
  • Esti un nimeni pe langa persoane mici
  • Cunostinte: Mediu
  • Nume de joc: Armyw0w
Re: Aranjarea scripturilor
« Reply #2 on: January 03, 2013, 03:27:28 pm »
Da... acum am observat.
Am modificat incat sa fie o singura instructiune fara return.

  • Hardwell

  • Guest
Re: Aranjarea scripturilor
« Reply #3 on: January 03, 2013, 07:59:37 pm »
Felicitari!!!
combinatia SHIFT+TAB se poate schimba?
« Last Edit: January 03, 2013, 09:48:58 pm by Hardwell »

  • Newbie
  • 0 mesaje
  • Respect: 0
  • Cunostinte: Mediu
  • Nume de joc: Darksone
Re: Aranjarea scripturilor
« Reply #4 on: January 03, 2013, 08:15:14 pm »
Arata frumos, felicitari pentru munca depusa.

+1
Nimic special, ceva normal

  • Newbie
  • 34 mesaje
  • Respect: 0
  • Cunostinte: Începător
  • Nume de joc: Neks
Re: Aranjarea scripturilor
« Reply #5 on: January 02, 2014, 04:28:29 pm »
Am o intrebare!

Daca nu respectăm regula cu cele ” 4 spatii” afectează cu ceva script-ul ?

  • V.I.P
  • God
  • 4197 mesaje
  • Respect: 205
  • Esti un nimeni pe langa persoane mici
  • Cunostinte: Mediu
  • Nume de joc: Armyw0w
Re: Aranjarea scripturilor
« Reply #6 on: January 02, 2014, 11:34:55 pm »
nu.

  • Never argue with stupid people, they will drag you down to their level and then beat you with experience.
  • Global Mod
  • Sick
  • 1484 mesaje
  • Respect: 199
  • Hell scared by me !
  • Cunostinte: Profesionist
  • Nume de joc: [LK]..Alucard..[.]
Re: Aranjarea scripturilor
« Reply #7 on: January 03, 2014, 12:42:43 am »
Nu afecteaza scriptul.
Dar daca gresesti undeva iti poti da seama mai repede.
De ex:
PAWN Code : [Select]
  1. Aranjarea facuta ca naiba!
  2. new a=69,b=69,rStr[128];
  3. if(a==69&&b=69)
  4. {
  5. format(rStr,128,"Valoarea sumei dintre A(%d) si B(%d) este %d",a,b,(a+b));
  6. SendClientMessage(playerid,-1,rStr);
  7. }
  8. Aranjarea buna + identitate !
  9. new a = 69 , b = 69 , const rStr[ 128 ];
  10. if( a == 69 && b = 69 ) // aici este gresala.
  11. {
  12. format( rStr , 128 , "Valoarea sumei dintre A(%d) si B(%d) este %d" , a , b , ( a + b ) );
  13. SendClientMessage( playerid , -1 , rStr );
  14. }

Daca alegi sa dai si o identitate scriptului este mai bine( vezi mai repede gresala ).

  • Newbie
  • 23 mesaje
  • Respect: 0
  • Cunostinte: Începător
  • Nume de joc: XStormiest
Re: Aranjarea scripturilor
« Reply #8 on: January 11, 2014, 07:14:31 pm »
Bun tutorial, multi ignora identitarea fiindca le este lene si prefera sa foloseasca #pragma tabsize 0 si eu obisnuiam sa-l folosesc dar am sa va zic ce face acest #pragma tabsize:

#pragma tabsize 0, este o functiune care trimite un mesaj catre compiler sa dezactiveze mesajul de * LOOSE IDENTITATIOn pe care voi il obtineti , ok acest mesaj este dezactivat insa asta nu inseamna ca este bine, aceste limbaje de programare au fost facute astfel incat calculatorul sa inteleaga ceea ce noi scriptam ( nu influenteaza foarte mult chiar foarte putin dar ajuta la optimizare si arata mai frumos cand te uiti la cod), chiar daca noi nu vedem anumite lucruri asta nu inseamna ca nu sunt ex:
BACKSPACE reprezinta ( /0 ) null character pe care calculatorul il va citi in sistem binar ca 0.

  • Newbie
  • 27 mesaje
  • Respect: 1
  • Cunostinte: Începător
  • Nume de joc: COX
Re: Aranjarea scripturilor
« Reply #9 on: January 12, 2014, 11:17:49 pm »
Inregistreaza-te sau Autentifica-te pentru a vedea acest link
Bun tutorial, multi ignora identitarea fiindca le este lene si prefera sa foloseasca #pragma tabsize 0 si eu obisnuiam sa-l folosesc dar am sa va zic ce face acest #pragma tabsize:

#pragma tabsize 0, este o functiune care trimite un mesaj catre compiler sa dezactiveze mesajul de * LOOSE IDENTITATIOn pe care voi il obtineti , ok acest mesaj este dezactivat insa asta nu inseamna ca este bine, aceste limbaje de programare au fost facute astfel incat calculatorul sa inteleaga ceea ce noi scriptam ( nu influenteaza foarte mult chiar foarte putin dar ajuta la optimizare si arata mai frumos cand te uiti la cod), chiar daca noi nu vedem anumite lucruri asta nu inseamna ca nu sunt ex:
BACKSPACE reprezinta ( /0 ) null character pe care calculatorul il va citi in sistem binar ca 0.
Acum viata are sens!
http://freehack4download.com/
cheat hack serial keygen tool crack free
You want to download hack , cheats , tools , keygens ,  generators  ,crack and serials?
For games , programs , android , iOS , tools , browser games , online games  many more besides.
Acces: cheat hack free

  • Advanced
  • 55 mesaje
  • Respect: 5
  • NiH0 NiH0
  • Cunostinte: Mediu
  • Nume de joc: santaclaus
  • Warning Level: 42%
Re: Aranjarea scripturilor
« Reply #10 on: April 18, 2014, 01:02:18 pm »
Foarte bun tutorialul , mulțumim !