Jump to content

Tutorial - Centura&Casca


essex
 Share

Recommended Posts

Salut, Leaksanilor.

Astazi va voi arata cum sa creati niste asa zise centuri de siguranta la vehicule si casca pentru motor/atv.

 

Vom avea nevoie de urmatoarele include-uri :

 

 

 



#include <streamer> // Incongnito
#include <sscanf2> // Y_Less
#include <zcmd> // Zeex


 

Primul pas il constiuie variabilele:

 

 

 



new bool:Centura[MAX_PLAYERS];
new bool:Casca[MAX_PLAYERS];
new pornestetimer;


 

Al doilea pas face ca variabilele sa se reseteze la conectarea unui jucator nou.

 

 

 

public OnPlayerConnect(playerid)
{
    Centura[playerid] = false;
    Casca[playerid] = false;
    return 1;
}

 

Al treilea pas vom creea niste stock-uri in care vom defini modelele de biciclete/motorete/atv.

 

 

 



stock IsABike(vehicleid) {
    new model = GetVehicleModel(vehicleid);
    if(model == 509 || model == 481 || model == 510) {
        return 1;
    }
    return 0;
}
stock IsAMotoATV(vehicleid) {
    new modell = GetVehicleModel(vehicleid);
    if(modell == 461 || modell == 462 || modell == 463 || modell == 468 || modell == 521 || modell == 522 || modell == 581 || modell == 586 || modell == 471) {
        return 1;
    }
    return 0;
}


 

Al patrulea pas reprezinta comenziile propriu-zise.

 

 

 

CMD:punecentura(playerid, params[]) {
    new vehicleid;
    vehicleid = GetPlayerVehicleID(playerid);
    if(IsPlayerConnected(playerid)) {
        if(IsPlayerInAnyVehicle(playerid) && !IsABike(vehicleid)) {
            if(Centura[playerid]) {
                Centura[playerid] = false;
                SendClientMessage(playerid, -1, "Ti-ai dat jos centura.");
            }
            else {
                Centura[playerid] = true;
                SendClientMessage(playerid, -1, "Ti-ai pus centura.");
            }
        }
        else {
            SendClientMessage(playerid, -1, "Nu esti in masina.");
            return 1;
        }
    }
    else {
        SendClientMessage(playerid, -1, "Nu esti conectat.");
        return 1;
    }
    return 1;
}
CMD:punecasca(playerid, params[]) {
    new vehicleid;
    vehicleid = GetPlayerVehicleID(playerid);
    if(IsPlayerConnected(playerid)) {
        if(IsAMotoATV(vehicleid)) {
            if(Casca[playerid]) {
                RemovePlayerAttachedObject(playerid, 1);
                Casca[playerid] = false;
                SendClientMessage(playerid, -1, "Ti-ai dat jos casca.");
                KillTimer(pornestetimer);
            }
            else {
                SetPlayerAttachedObject(playerid, 1, 18645, 2, 0.055999, 0.035999, 0.000000, 74.200012, 67.2000004, 14.1999997, 1.000000, 1.000000, 1.000000);
                Casca[playerid] = true;
                SendClientMessage(playerid, -1, "Ti-ai pus casca.");
                pornestetimer = SetTimerEx("VerificaCascaJucator", 1000, true, "i", playerid);
            }
        }
        else {
            SendClientMessage(playerid, -1, "Nu esti pe motoreta/atv.");
            return 1;
        }
    }
    else {
        SendClientMessage(playerid, -1, "Nu esti conectat.");
        return 1;
    }
    return 1;
}

Al cincilea pas reprezinta publicul OnPlayerExitVehicle pentru care il vom apela cand jucatorul iese din vehicul.

 

 

 



public OnPlayerExitVehicle(playerid, vehicleid)
{
    if(Casca[playerid]) {
        Casca[playerid] = false;
        RemovePlayerAttachedObject(playerid, 1);
        KillTimer(pornestetimer);
    }
    if(Centura[playerid]) {
        Centura[playerid] = false;
    }
    return 1;
}


Al saselea pas este sa creeam un forward in care va apela publicul creat la pasul 7 pentru a verifica daca acesta a picat de pe motoreta deoarece cand jucatorul pica de pe motoreta nu se apeleaza publicul OnPlayerExitVehicle.

 

 

 



forward VerificaCascaJucator(playerid);


 

Al saptelea pas reprezinta publicul forward-ului VerificaCascaJucator.

 

 

 



public VerificaCascaJucator(playerid) {
    new vehicleid;
    vehicleid = GetPlayerVehicleID(playerid);
    if(!IsAMotoATV(vehicleid) && Casca[playerid]) {
        RemovePlayerAttachedObject(playerid, 1);
        Casca[playerid] = false;
        KillTimer(pornestetimer);
    } 
    return 1;
}


Al optulea pas este sa distrugem timerul de verificare casca cand jucatorul se deconecteaza.

 

 

 

Al noualea pas reprezinta mesajul meu pt voi:

-sper sa nu intampinati probleme.

-acest tutorial este un tutorial propriu-zis,acesta in gamemode poate fi dezolvtat dupa dorinte.

 

Exemplu de dezvoltare:

a) Comanda la factiunea LSPD pentru verificare. (+amenda in caz contrar).

 

Credite:HonciucGabriel.

Edited by Essex

 

6BHvC.gif.b3b68ca49496ac435560a60fcf91669d.gif

 

Link to comment
Share on other sites

  • 2 weeks later...
  • 3 weeks later...
  • 1 month later...
  • 1 year 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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...