[Help] Gates
#3

This is quite basic and hasn't been tested, but it should work absolutely fine for you!

pawn Код:
#include <a_samp>
#include <streamer>
#include <zcmd>

#define MAX_GATES 150 // change 150 to the number of gates you'll have

enum enumGateInformation
{
    gateModel,
    Float:gateClosePosX,
    Float:gateClosePosY,
    Float:gateClosePosZ,
    Float:gateClosePosRX,
    Float:gateClosePosRY,
    Float:gateClosePosRZ,
    Float:gateOpenPosX,
    Float:gateOpenPosY,
    Float:gateOpenPosZ,
    Float:gateOpenPosRX,
    Float:gateOpenPosRY,
    Float:gateOpenPosRZ,
   
    gateObjID
};

new
    gateInfo[MAX_GATES][enumGateInformation];

stock CreateGate(modelid, Float:cx, Float:cy, Float:cz, Float:crx, Float:cry, Float:crz, Float:ox, Float:oy, Float:oz, Float:orx, Float:ory, Float:orz)
    // SYNTAX: model, closex, closey, closez, closerx, closery, closerz, openx, openy, openz, openrx, openry, openrz
{
    for(new i = 0; i < sizeof(gateInfo); i++)
    {
        if(gateInfo[i][gateObjID] == INVALID_OBJECT_ID)
        {
            gateInfo[i][gateModel] = modelid;
            gateInfo[i][gateClosePosX] = cx;
            gateInfo[i][gateClosePosY] = cy;
            gateInfo[i][gateClosePosZ] = cz;
            gateInfo[i][gateClosePosRX] = crx;
            gateInfo[i][gateClosePosRY] = cry;
            gateInfo[i][gateClosePosRZ] = crz;
            gateInfo[i][gateOpenPosX] = ox;
            gateInfo[i][gateOpenPosY] = oy;
            gateInfo[i][gateOpenPosZ] = oz;
            gateInfo[i][gateOpenPosRX] = orx;
            gateInfo[i][gateOpenPosRY] = ory;
            gateInfo[i][gateOpenPosRZ] = orz;
           
           
            gateInfo[i][gateObjID] = CreateObject(modelid, cx, cy, cz, crx, cry, crz);
            break;
        }
    }
    return 1;
}

stock DestroyGate(gateid)
{
    DestroyObject(gateInfo[gateid][gateObjID]);
    for(new i; enumGateInformation:i < enumGateInformation; i++) gateInfo[gateid][enumGateInformation:i] = 0;
    return 1;
}

CMD:opengate(playerid, params[])
{
    new
        i = getNearestGate(playerid);

    MoveObject(gateInfo[i][gateObjID], gateInfo[i][gateOpenPosX], gateInfo[i][gateOpenPosY], gateInfo[i][gateOpenPosZ], 2.0, gateInfo[i][gateOpenPosRX], gateInfo[i][gateOpenPosRY], gateInfo[i][gateOpenPosRZ]);
    return 1;
}

CMD:closegate(playerid, params[])
{
    new
        i = getNearestGate(playerid);

    MoveObject(gateInfo[i][gateObjID], gateInfo[i][gateClosePosX], gateInfo[i][gateClosePosY], gateInfo[i][gateClosePosZ], 2.0, gateInfo[i][gateClosePosRX], gateInfo[i][gateClosePosRY], gateInfo[i][gateClosePosRZ]);
    return 1;
}

stock getNearestGate(playerid) // partial credits to [uL]Pottus
{
    new
        currentGate,
        Float:distance = 9999.9, // the whole map, basically
        Float:odist;
       
    for(new i = 0; i < sizeof(gateInfo); i++)
    {
        odist = GetPlayerDistanceFromPoint(playerid, gateInfo[i][gateClosePosX], gateInfo[i][gateClosePosY], gateInfo[i][gateClosePosZ]);
       
        if (odist < distance)
        {
            currentGate = i;
            distance = odist;
        }
    }
    return currentGate;
}
Reply


Messages In This Thread
[Help] Gates - by xXRealLegitXx - 20.04.2013, 01:11
Re: [Help] Gates - by BigGroter - 20.04.2013, 01:19
Re: [Help] Gates - by Scenario - 20.04.2013, 01:31
Re: [Help] Gates - by Pottus - 20.04.2013, 02:20
Re: [Help] Gates - by Mattakil - 20.04.2013, 02:27
Re: [Help] Gates - by Scenario - 20.04.2013, 02:54
Re: [Help] Gates - by Pottus - 20.04.2013, 03:06
Re: [Help] Gates - by Scenario - 20.04.2013, 03:14
Re: [Help] Gates - by Pottus - 20.04.2013, 03:56
Re: [Help] Gates - by Mattakil - 20.04.2013, 04:07

Forum Jump:


Users browsing this thread: 1 Guest(s)