Jump to content

Recommended Posts

Posted

Astazi va voi prezenta creatia mea facuta in 30 min.

Cu totii vrem sa aflam mai in amanunt cate ceva, asadar m-am gandit sa fac intr-un fel sa fie posibil, in lumea virtuala evident.

Pe scurt o sa va arat cum sa gasiti un vehicul, iar daca va intrebati si daca acel vehicul este aflat in miscare ? Eu va voi spune sa stati calmi pentru ca am gasit o solutie in care la fiecare secunda ii se va lua coordonatele vehiculului pe care doriti sa il gasiti, insfarsit.

 

Sa incepem.

 

1. Va mai aduceti aminte de inclu, desigur de include-uri.


#include <a_samp>
#include <streamer> // thank Incongnito
 
#include <sscanf2> // thanks Y_Less
#include <zcmd> // thanks Zeex

2. Este vorba de variabile.


new id_car[MAX_PLAYERS];
new Float:old_pos[3][MAX_PLAYERS];
new Float:new_pos[3][MAX_PLAYERS];
new pornestecautarea;
 
new bool:cp_destination[MAX_PLAYERS];

3. Atunci cand un jucator se deconecteaza variabilele raman salvate id-ului generat iar atunci cand altul se conecteaza ii se incarca variabilele cele salvate id-ului generat anterior.


public OnPlayerConnect(playerid)
{
    id_car[playerid] = -1;
    old_pos[0][playerid] = (0.0); new_pos[0][playerid] = (0.0);
    old_pos[1][playerid] = (0.0); new_pos[1][playerid] = (0.0);
    old_pos[2][playerid] = (0.0); new_pos[2][playerid] = (0.0);
    cp_destination[playerid] = false;
    return 1;
 
}

 

4.La fel si cu timerul timerele, trebuie distruse cand jucatorul se deconecteaza, astfel:

 


public OnPlayerDisconnect(playerid, reason)
{
    KillTimer(pornestecautarea);
    return 1;
 
}

 

5.Am creat un forward care acesta va apela un public evident, astfel:

 


forward GasesteMasina(playerid);
public GasesteMasina(playerid) {
    GetVehiclePos(id_car[playerid], new_pos[0][playerid], new_pos[1][playerid], new_pos[2][playerid]);
    if(old_pos[0][playerid] != new_pos[0][playerid] || old_pos[1][playerid] != new_pos[1][playerid] || old_pos[2][playerid] != new_pos[2][playerid]) {
        old_pos[0][playerid] = new_pos[0][playerid];
        old_pos[1][playerid] = new_pos[1][playerid];
        old_pos[2][playerid] = new_pos[2][playerid];
        SetPlayerCheckpoint(playerid, old_pos[0][playerid], old_pos[1][playerid], old_pos[2][playerid], 5.0);
    }
    else {
        SetPlayerCheckpoint(playerid, old_pos[0][playerid], old_pos[1][playerid], old_pos[2][playerid], 5.0);
    }
    cp_destination[playerid] = true;
    return 1;
}

 

6. Am creat o comanda oarecare, o puteti denumii dupa dorinta, o puteti restrictiona, etc...

 


CMD:gasestevehicul(playerid, params[]) {
    if(!IsPlayerConnected(playerid))
        return SendClientMessage(playerid, COLOR_GREY, "Nu esti conectat.");
    if(!IsPlayerAdmin(playerid))
        return SendClientMessage(playerid, COLOR_GREY, "Nu esti admin.");
    new target,
    Float:Pos[3];
    if(sscanf(params, "i", target))
        return SendClientMessage(playerid, -1, "{FFFF00}USE: {FFFFFF}/gasestevehicul [vehicleid]");
    if(!IsValidVehicle(target))
        return SendClientMessage(playerid, COLOR_GREY, "Vehicul inexistent.");
    GetVehiclePos(target, Pos[0], Pos[1], Pos[2]);
    id_car[playerid] = target;
    old_pos[0][playerid] = Pos[0];
    old_pos[1][playerid] = Pos[1];
    old_pos[2][playerid] = Pos[2];
    pornestecautarea = SetTimerEx("GasesteMasina", 1000, 1, "i", playerid);
    return 1;
 
}

 

7.In momentul cand jucatorul este in apropierea checkpointului sau chiar in el, asta depinde de marimea lui, eu i-am pus 5.0, va indeplinii  urmatoarele lucruri:

 


public OnPlayerEnterCheckpoint(playerid)
{
    if(cp_destination[playerid]) {
        cp_destination[playerid] = false;
        DisablePlayerCheckpoint(playerid);
        KillTimer(pornestecautarea);
    }
    return 1;
 
}

 

8.Un foarte important lucru este acela de a defini disponibilitatea vehiculului pe server.

 


native IsValidVehicle(vehicleid);

 

9. Culoarea gri reprezinta urmatorul cod pawno:

 

 

#define COLOR_GREY 0xAFAFAFAA

 

Iata ca am ajuns si la sfarsitul acestui tutorial, toate cele bune.

 

 

 

Iata ca am ajuns si la sfarsitul acestui tutorial, toate cele bune.

 

Tutorial postats de KUNT si realizat de El_Verdugo 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...