Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 5267 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Įžanga

Sveiki, kaip pastebėjau daugelis pradedančiųjų nesupranta kaip reikia lygiuoti kodą, todėl šioje pamokoje pabandysiu tai parodyti ir paaiškinti ir tikiuosi Jūsų kodai taps lengviau skaitomi. ;)

Teorija

Nustatytų taisyklių, kaip lygiuoti kodą, nėra, tačiau į tai turime kreiptį dėmesį, nes kompiliatorius netvarkingą kodą skaito sunkiau ir jei jis yra netvarkingas - įspėja.

warning 217: loose indentation

Todėl jei norite, kad serveris nors ir labai nežymiai, bet veiktų sklandžiau, patariu kodą išlaikyti tvarkingą. Pirmiausia galite įsivaizduoti, kad kodas rašomas tarsi laiptais:

laiptelis
{
   laiptelis
   {
       laiptelis
       {
           funkcija( playerid );
           kintamasis = true;
       }
   }
}

  • [*:nxqlsrcf]Kaip matote kiekvieno laiptelio pradžioje padedame { skliaustą.[*:nxqlsrcf]Tuomet spaudžiame ENTER klavišą, kuris žymeklį perkelia į kitą eilutę.[*:nxqlsrcf]Po to spaudžiame TAB klavišą, kuris perkelia žymeklį per 4 vietas į priekį ir tada rašome kitą laiptelį (t.y. kodą).[*:nxqlsrcf]Jei panaudojome { skliaustą, visada baigę rašyti kodą, privalome jį uždaryti su } skliaustu. Lygiuojant pačius laužtinius { ir } skliaustus, tereikia įsiminti, kad jie turi išlikti toje pačioje vertikalioje eilėje.

Pavyzdys

Geriausias netvarkingo kodo pavyzdys - GRP gamemod'ai. Žemiau iš GRP gamemod'o paimsiu nesulygiuotą kodo gabalą ir parodysiu, kaip turėtų atrodyti tvarkingas kodas.

Netvarkingas:

if(dialogid == 6070)
{
if(response)
{
if(listitem == 0)
{



if(!IsPlayerInAnyVehicle(playerid)){
SendClientMessage(playerid,0xB4000BAA,"Jūs esate ne mašinoje!");
return 1;
}
if(GetPlayerMoneyA(playerid)<30)
{
SendClientMessage(playerid,0xB4000BAA,"Norint suremontuoti tr.priemone,reikia turėti 30Lt.!");
return 1;
}
GivePlayerMoneyA(playerid,-30);
SendClientMessage(playerid,0x00A10BAA,"Tr.priemonė suremontuota!");
if(IsPlayerInAnyVehicle(playerid)) SetVehicleHealth(GetPlayerVehicleID(playerid),1000);//vidus
if(IsPlayerInAnyVehicle(playerid)) RepairVehicle(GetPlayerVehicleID(playerid));//isvaisda
return 1;
}


return 1;
}
return 1;
}

Tvarkingas:

if ( dialogid == 6070 )
{
   if ( response )
   {
       if ( listitem == 0 )
       {
           if ( !IsPlayerInAnyVehicle( playerid ) )
               SendClientMessage( playerid, 0xB4000BAA, "Jūs esate ne mašinoje!" );
           else if ( GetPlayerMoneyA( playerid ) < 30 )
               SendClientMessage( playerid, 0xB4000BAA, "Norint suremontuoti tr.priemone,reikia turėti 30Lt.!" );
           else
           {
               GivePlayerMoneyA ( playerid, -30 );
               SendClientMessage( playerid, 0x00A10BAA, "Tr.priemonė suremontuota!" );

               if ( IsPlayerInAnyVehicle( playerid ) ) 
                   SetVehicleHealth( GetPlayerVehicleID( playerid ), 1000 ); // Vidus

               if ( IsPlayerInAnyVehicle( playerid ) ) 
                   RepairVehicle( GetPlayerVehicleID( playerid ) ); // Išvaizda

               return true;
           }
       }
   }

   return true;
}

Pastaba: Kodo logiškumas netaisytas.

Papildomai

Taipogi daugumai iškyla problemų su { ir } skliaustais, tačiau yra situacijų kuomet { ir } skliaustų galite nedėti.

1. Jei po if sąlygos naudojate tik vieną eilutę:

if ( sąlyga )
{
   funkcija( playerid );
}
else
{
   kintamasis = true;
}

Galite rašyti taip:

if ( sąlyga )
   funkcija( playerid );
else
   kintamasis = true;

2. Jei po if sąlygos naudojate tik vieną eilutę, o po else daugiau:

if ( sąlyga )
{
   funkcija( playerid );
}
else
{
   kintamasis  = true;
   kintamasis2 = false;
}

Galite rašyti taip:

if ( sąlyga )
   funkcija( playerid );
else
{
   kintamasis  = true;
   kintamasis2 = false;
}

Pabaiga

Tikiuosi naujokams ši pamoka kiek nors pravertė. P.S. Kartais paprastus dalykus yra sunku paaiškinti, todėl jei ko nesupratote - klauskite. :D Laukiu nuomonių ir komentarų. :)KOPIJUOTI GRIEŽTAI DRAUDŽIAMA.

PAWN patirtis: 3 metai

Pamokos:

[GH #1] [0.3d] Objektų šalinimas

[GH #2] [0.3d] Vartų kūrimas

[GH #3] Laiko žymės (UNIX TIMESTAMPS)

[GH #4] Kodo lygiavimas

[GH #5] Kuriame judantį textdraw

Nesutinku. :)

1. Visi GO nesilanko.

2. Visi profesionalus programuotojai koda raso tvarkingai.

3. Jeigu kodo lygiavimas butu visai nesvarbus, kompiliatorius warningo "lose intendation" nemestu.

PAWN patirtis: 3 metai

Pamokos:

[GH #1] [0.3d] Objektų šalinimas

[GH #2] [0.3d] Vartų kūrimas

[GH #3] Laiko žymės (UNIX TIMESTAMPS)

[GH #4] Kodo lygiavimas

[GH #5] Kuriame judantį textdraw

Šioje temoje atsakymas, kodėl eilinių GRP gamemodes taip ilgai kompilinasi. Na ne vien dėl lygiavimo, bet tik noriu pasakyti, jog ten miškas.

Šis lygiavimas - šioje temoje - priimtiniausias variantas visiems manau, taip pat ir man. :)

GRP gamemod'uose prie to "miško" daug prisideda ir netvarkingas ciklų naudojimas. :lok:

PAWN patirtis: 3 metai

Pamokos:

[GH #1] [0.3d] Objektų šalinimas

[GH #2] [0.3d] Vartų kūrimas

[GH #3] Laiko žymės (UNIX TIMESTAMPS)

[GH #4] Kodo lygiavimas

[GH #5] Kuriame judantį textdraw

  • Parašė po 3 savaičių...
Aš pavyzdžiui padariau tą kur tu minėjai kad netvarkingas lygiavimas. Man nemetė jokio erro'o.

Nemetė eror'o todėl, nes pas tave visi kodai yra nesuligiuoti t.y.,

if( .......... )

{

//

//

//

ir t.t. Pabandyk įdėti nesulygiuotą kodą ir sulygiuotą kodą, tada jau sakysi kitaip :]

PARDUODU UNIKALIĄ " POKER " SISTEMĄ, PRITAIKYTĄ SA:MP ŽAIDIMUI

gta-samp-pardavimai/parduodu-unikali-poker-sistem-t108719.html

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 5267 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Svečias
Ši tema yra užrakinta.
  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...