Pagrindinis diskusijų puslapis Grand Theft Auto multiplayer Pamokos SA-MP [GH #4] Kodo lygiavimas.

[GH #4] Kodo lygiavimas.

Pamokos sa-mp modifikacijai. Serverio kūrimo pamokos, skriptai.
Standartinė Sausis 29th, 2012, 1:54 am
GuitarHero Vartotojo avataras
Didelis žinovas
Didelis žinovas

Pranešimai: 699
Miestas: Šiauliai
Padėkojo: 5 kartus
Gavo padėkų: 50 kartus
Skype: guitarherolt
Mano serveris: Kuriamas.
Atsiliepimai: 38
Įž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;
        }
    }
}

  • Kaip matote kiekvieno laiptelio pradžioje padedame { skliaustą.
  • Tuomet spaudžiame ENTER klavišą, kuris žymeklį perkelia į kitą eilutę.
  • Po to spaudžiame TAB klavišą, kuris perkelia žymeklį per 4 vietas į priekį ir tada rašome kitą laiptelį (t.y. kodą).
  • 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.


Už šią žinutę autorius GuitarHero gavo 3 padėkojimus
DGeimeris (Gegužė 17th, 2012, 4:18 pm), Inv1s (Sausis 29th, 2012, 2:32 am), svedas (Sausis 29th, 2012, 7:44 pm)
Vertinimas: 33.33%
 

Reklama

Standartinė Sausis 29th, 2012, 2:32 am
Inv1s Vartotojo avataras
Apsipratęs narys
Apsipratęs narys

Pranešimai: 246
Miestas: Panevėžys.
Padėkojo: 6 kartus
Gavo padėkų: 4 kartus
Skype: indexx7
Mano serveris: www.las-venturas.lt
Atsiliepimai: 7
Puiku :) daug kam pravers, taip pat ir man :)
Kitaip žinomas Invision_White.

Paveikslėlis

Standartinė Sausis 29th, 2012, 3:28 am
GuitarHero Vartotojo avataras
Didelis žinovas
Didelis žinovas

Pranešimai: 699
Miestas: Šiauliai
Padėkojo: 5 kartus
Gavo padėkų: 50 kartus
Skype: guitarherolt
Mano serveris: Kuriamas.
Atsiliepimai: 38
Inv1s rašė:
Puiku :) daug kam pravers, taip pat ir man :)

Šaunu, tam ir kuriu pamokas. :)

Standartinė Sausis 29th, 2012, 7:03 pm
jorns Naujokas
Naujokas

Pranešimai: 7
Padėkojo: 0 kartą
Gavo padėkų: 0 kartą
Skype: j00ran6
Mano serveris: Neturiu
Atsiliepimai: 0
Va tokios reikejo :D Dekui.

Standartinė Sausis 29th, 2012, 7:43 pm
svedas Vartotojo avataras
GTA-support.lt komanda

Pranešimai: 3862
Padėkojo: 36 kartus
Gavo padėkų: 144 kartus
Skype: svedas01
Mano serveris: reallife:7777
Atsiliepimai: 19

Prisireikia tokios pamokos naujokams, tad gerai parašei :)

Standartinė Sausis 31st, 2012, 7:12 pm
dzionas Naujokas
Naujokas

Pranešimai: 21
Padėkojo: 0 kartą
Gavo padėkų: 0 kartą
Skype: etahamer
Mano serveris: Neturiu
Atsiliepimai: 0
geras dalikas su ligiavimu galima mini error skaiciu susimazinti zimiai.todel error logas dazniausiai buna beveik tuscias.

Standartinė Sausis 31st, 2012, 8:15 pm
GuitarHero Vartotojo avataras
Didelis žinovas
Didelis žinovas

Pranešimai: 699
Miestas: Šiauliai
Padėkojo: 5 kartus
Gavo padėkų: 50 kartus
Skype: guitarherolt
Mano serveris: Kuriamas.
Atsiliepimai: 38

Standartinė Vasaris 25th, 2012, 10:43 pm
Marius<WiP Vartotojo avataras
Didelis žinovas
Didelis žinovas

Pranešimai: 676
Miestas: Marijampolė
Padėkojo: 2 kartus
Gavo padėkų: 17 kartus
Atsiliepimai: 15
GuitarHero nebūtinai taip lygiuoja grp moduose, čia priklauso nuo pačio žmogaus programavimo stiliaus kaip jam patogiau taip jis rašo tai šitoje vietoje pastebėjimas, šiaip šaunuolis, kad kažką darai :)
Paveikslėlis


M-RPG Server Is Comming 50%

Standartinė Vasaris 26th, 2012, 11:45 pm
Moris Naujokas
Naujokas

Pranešimai: 33
Padėkojo: 3 kartus
Gavo padėkų: 0 kartą
Skype: zilvinass6
Mano serveris: www.Los-Santos.lt
Atsiliepimai: 0
Tikrai naudinga pamoka. Šaunuolis. :)
Paveikslėlis


Paveikslėlis


Paveikslėlis

Standartinė Vasaris 29th, 2012, 5:31 pm
ExStaSy Vartotojo avataras
Naujokas
Naujokas

Pranešimai: 8
Padėkojo: 0 kartą
Gavo padėkų: 0 kartą
Skype: Exstasy94
Mano serveris: Kuriamas :)
Atsiliepimai: 0
Man tai patogiau, kaip per "GRP" parodei, nes lengviau susigaudyti :)

Standartinė Vasaris 29th, 2012, 6:47 pm
itsDomian Vartotojo avataras
Naujokas
Naujokas

Pranešimai: 9
Miestas: Vilnius
Padėkojo: 1 kartą
Gavo padėkų: 0 kartą
Skype: itsdomian
Mano serveris: Just-SAMP.lt
Atsiliepimai: 0


Standartinė Kovas 20th, 2012, 9:56 pm
Domis_Skvem Naujokas
Naujokas

Pranešimai: 8
Padėkojo: 0 kartą
Gavo padėkų: 0 kartą
Skype: Domias
Mano serveris: Neturiu
Atsiliepimai: 0
Das Is Gut Lesson

Standartinė Kovas 21st, 2012, 7:21 pm
donce151 Naujokas
Naujokas

Pranešimai: 11
Padėkojo: 0 kartą
Gavo padėkų: 0 kartą
Mano serveris: Dar kuriamas (18%)
Atsiliepimai: 0
Aš pradėjau scriptint lygiuodamas kitus gamemode, kuriuos parsisiųsdavau, tai darbar tapo žymiai lengviau scriptint, ir man pačiam kai suligiuota lengviau susigaydyti, kada reikia uždaryti su }



  • Reklama

Grįžti į SA-MP