Jump to content

[Tutorial] Samp Centura si Casca


Recommended Posts

Posted

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).
 
Tutorial realizat de catre HonciucGabriel.

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
×
×
  • Create New...