Peršokti į turinį

banko grobimo (pavizdines) sistemos kurimas


AimuMedziag

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 2268 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

Sveiki,

Šioje pamokoje parodysiu kaip sukurti banko grobimo sistemą:

 

new bankoboma;
new Text3D:bomboslaikas;
new bombostaimeris;
new skaiciuojamebomboslaika;
new Bombapalaukti;
new Duodamelaikabomb;

new Bankovisipinigai;
new Bankomaksigrob;
new ManoMaiseEsantyspinig[ MAX_PLAYERS ];
new LaikasImtiPIing[ MAX_PLAYERS ];

new Darboseifas;
public OnGameModeInit( )
{
    bankoboma = -1;
    bombostaimeris = -1;
    return 1;
}

COMMAND:bomba(playerid, params[])
{
    if( bankoboma == -1 ) // Jeigu bomba nepadeta, padedame ja
    {
        if( IsPlayerInRangeOfPoint( playerid, 3.0, X,Y,Z ) ) // jeigu zmogus yra tam tikru atstumu nuo duru ar kur reikia padeti bomba
        {
            if( gettime( ) < Bombapalaukti )
            {
                SendClientMessage( playerid, COLOR_RED,"* Dar negalite dėti bombos!");
            }
            else
            {
                bankoboma = CreateDynamicObject( 1252, X,Y,Z,rX,rY,rZ ); // tam tikroje vietoje kur jus norite sukuriate bombos objekta.
                bomboslaikas = CreateDynamic3DTextLabel("Bomba sprogs po:\n500sec", COLOR_RED, X,Y,Z, 10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID);
                skaiciuojamebomboslaika = gettime( ) + 500;
                bombostaimeris = SetTimer("bombossprogimas", 1000, true);
            }
        }
        else
        {
            SendClientMessage( playerid, COLOR_RED,"* Jus per toli nuo duru");
        }
    }
    else
    {
        SendClientMessage( playerid, COLOR_RED,"* Bomba jau padeta.");
    }
    return 1;
}
forward bombostaimeris( );
public bombostaimeris( )
{
    new kieklikolaikoikispro = skaiciuojamebomboslaika - gettime( );
    
    if( kieklikolaikoikispro <= 0 )
    {
        DestroyDynamicObject( bankoboma ); // sunaikiname bomba kai praeina laikas.
        DestroyDynamic3DTextLabel( bomboslaikas ); // sunaikiname labeli
        
        Bombapalaukti = gettime( ) + 3600; // valanda ar kiek tai neleidziama is karto deti kitos bombos
        
        Bankomaksigrob = random(floatround( Bankovisipinigai/10 ) ); // maksimali suma kiek bus galima daugiausia pagrobti yra 10 proc. nuo visos banke esancios pinigu sumos galima koreguotis pagal save
        
        bankoboma = -1;
        KillTimer( bombostaimeris );
        bombostaimeris = -1;
        
        // Taip pat galima cia ir issprogdinti duris. (cia kiekvienas pagal save turi susikurti duru objekta, ir sioje vietoje ji su MoveDynamicObject funkcija ji nukelti, numesti ant zemes).
        // Pvz.: MoveDynamicObject(kazkokiosdurys,X,Y,Z,greitis,rX,rY,rZ);
        
        Duodamelaikabomb = gettime( ) + 60; // 1 minute galima ir savo laika irasyti kiek gales grobti seifus ar ka
        
        
        SetTimer("ZinuteApiepabaiga", 60000, false);
        SetTimer("Atstatomeduris", 60000*60, false); // laikas po kurio vel bus galima sprogdinti tai tuo paciu ir atstatome duris ar ka kas buvo sugadinta sprogimo metu
        
        
        
        new icz;
        foreach(icz : Player)
        {
            if( IsPlayerInRangeOfPoint( icz, 20.0, X,Y,Z ) ) // atstumas ir koordinates kur rasyti informacija kai praeina laikas ir sprogsta durys ar kas
            {
                SendClientMessage( icz, COLOR_GREEN,"* Durys buvo issprogdintos bekite imti grobio! turite 1min");
            }
        }
    }
    else
    {
        new stringf[ 80 ];

        format( stringf, 79,"Bomba sprogs po:\n%dsec", kieklikolaikoikispro );
        UpdateDynamic3DTextLabelText( bomboslaikas, COLOR_RED, stringf );
    }
}
forward Atstatomeduris( );
public Atstatomeduris( )
{
    // Cia taip pat turite buti susikure duris kurias grazinsite i pradine padeti su funkcija
    // MoveDynamicObject(kazkokiosdurys,X,Y,Z,greitis,rX,rY,rZ);
}
forward ZinuteApiepabaiga( );
public ZinuteApiepabaiga( )
{
    new icz;
    foreach(icz : Player)
    {
         if( IsPlayerInRangeOfPoint( icz, 20.0, X,Y,Z ) ) // atstumas ir koordinates kur rasyti informacija kai praeina laikas grobti pinigams, narkotikams
           {
             SendClientMessage( icz, COLOR_GREEN,"* Praejo viena minute, keliaukite i savo bazes!");
        }
    }
}
public OnPlayerConnect( playerid )
{
    ManoMaiseEsantyspinig[ playerid ] = 0; // prisijungus atimame jeigu buvo maise pinigus
    return 1;
}
public OnPlayerDeath( playerid, killerid, reason )
{
    if( ManoMaiseEsantyspinig[ playerid ] != 0 )
    {
        RemovePlayerAttachedObject(playerid, 0); // nuimame kuprine
    }
    ManoMaiseEsantyspinig[ playerid ] = 0; // kai mirsta is maiso atimame pinigus
    return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if( PRESSED( KEY_WALK ) ) // paspausdus kairi alt (galima ir savo mygtuka sugalvoti), bus imamas grobis is seifu ar kur nori
    {
        if( IsPlayerInRangeOfPoint( playerid, 3.0, X,Y,Z ) || IsPlayerInRangeOfPoint( playerid, 3.0, X,Y,Z ) || IsPlayerInRangeOfPoint( playerid, 3.0, X,Y,Z ) ) // zaidejas tam tikru atstumu nuo seifu duru ar ko kur galima paiimti
        {
            if( gettime( ) < Duodamelaikabomb )
            {
                if( ManoMaiseEsantyspinig[ playerid ] < 5000 ) // vietoj 5000 irasome kiek pinigu gali vienas zaidejas daugiausia prigrobti
                {
                    if( gettime( ) > LaikasImtiPIing[ playerid ] )
                    {
                        LaikasImtiPIing[ playerid ] = gettime( ) + 1; // po kiek laiko paspaudus alt ar kita mygtuka bus grobiama, kad nespamintu per daug
                        new kiekbusgaunamapinigu = random( Bankomaksigrob );
                        ManoMaiseEsantyspinig[ playerid ] +=kiekbusgaunamapinigu; // grobimu metu, gauni tam tikra suma zaidejas
                        Bankomaksigrob -=kiekbusgaunamapinigu; // kiekviena karta gavus pinigu maziname likusi galima pinigu kieki
                        ApplyAnimation(playerid, "ROB_BANK", "CAT_Safe_Rob", 4.1, 1, 1, 1, 1, 1, 1); // cia animacija (galite ir savo sugalvoti) kokia bus vygdoma kai bus grobiamas seifas
                        SetPlayerAttachedObject(playerid, 0, 1550, 1); // cia pridedame pinigu maisa prie nugaros, tik turesite patys ji graziai zmogui prideti
                    }
                }
            }
        }
    }
    return 1;
}
public OnPlayerPickUpDynamicPickup(playerid, pickupid)
{
    if( pickupid == darbopickupid ) // jusu pickup id darbo ar kur riekes atgabenti maisa su pinigais, narkotikais ar kuo nors
    {
        if( ManoMaiseEsantyspinig[ playerid ] != 0 ) // jeigu yra pinigu maise tada vygdoma toliau
        {
            Darboseifas +=ManoMaiseEsantyspinig[ playerid ]; // pridedame prie darbo seife esanciu pinigu, jusu atnestus pinigus

            new nameA[MAX_PLAYER_NAME];
            GetPlayerName(playerid, nameA, sizeof(nameA));
    
    
            new Stringt[ 128 ];
            format( Stringt, 127,"* %s atgabeno %d pinigu i darbo seifa", nameA, ManoMaiseEsantyspinig[ playerid ] );
            new pranesame;
            foreach(pranesame : Player)
            {
                if(  ) // cia atliekate tikrinima pagal savo kintamaji kuri tikrinate ar tam tikro darbo zmogus, ar tam tikroje firomoje dirba
                {
                    SendClientMessage(pranesame, COLOR_RED, Stringt );
                }
            }

            ManoMaiseEsantyspinig[ playerid ] = 0;
            RemovePlayerAttachedObject(playerid, 0); // nuimame kuprine
        }
    }
    return 1;
}

Čia žinoma reikia taikyti pagal save gamemod'us, nes kiekvienu atveju skirtingai, galima daryti ir narkotiku grobimus ar ką tik nori, jeigu kam patiks padarysiu pagal pageidavimą. Taip pat dar jeigu kas nors nores padarysiu komanda /atgrobti (ar kokia kita komanda) kad teiseseauga ar kas galetu ja nuimti.

Nuoroda į komentarą
Dalintis per kitą puslapį

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 2268 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!

Prisijungti prie diskusijos

Palikti atsakymą galite iš karto, o užsiregistruoti vėliau. Jeigu jau turite paskyrą mūsų forume, Prisijunkite.

Svečias
Atsakyti šioje temoje...

×   Įklijuotas tekstas turi teksto formatavimą.   Pašalinti teksto formatavimą

  Galimi tik 75 veidukai.

×   Nuoroda buvo automatiškai įterpta.   Įterpti nuorodą paprastai

×   Jūsų ankstesnis pranešimas buvo atkurtas.   Išvalyti redaktorių

×   Jūs negalite įkelti nuotraukas tiesiogiai.Įkelkite arba įdėkite nuotraukas iš URL.

  • Šiame puslapyje naršo:   0 nariai

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

Skelbimai


×
×
  • Sukurti naują...