SA-MP Forums Archive
[Include] mGates (Easily create automatic gates with one function!) - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Filterscripts (https://sampforum.blast.hk/forumdisplay.php?fid=17)
+---- Forum: Includes (https://sampforum.blast.hk/forumdisplay.php?fid=83)
+---- Thread: [Include] mGates (Easily create automatic gates with one function!) (/showthread.php?tid=348907)

Pages: 1 2


Re: mGates (Easily create automatic gates with one function!) - Jonny5 - 23.06.2012

I been meaning to get around to using this,
and finally have and must say this makes adding gates extremely simple,

thanks.


Re: mGates (Easily create automatic gates with one function!) - MP2 - 23.06.2012

That's the idea

TBH I expected this to be a lot more popular, the amount of people that post in scripting discussion about gates is a lot, and this takes away all the headaches of making automatic gates. Oh well. I made it for my own server and then decided to release it.


Re: mGates (Easily create automatic gates with one function!) - Lorenzo* - 25.06.2012

very cool, makes it so much more easier, rep+


Re: mGates (Easily create automatic gates with one function!) - LavaHDProkiller - 22.01.2013

Quote:
Originally Posted by MP2
View Post
Using OnGateOpenClose and OnPlayerTriggerGate

These two functions are useful for many things. In this example we will create the gates at LS airport, and add 'clang' sounds when they open/close using OnGateOpenClose. We will also play the 'This area is restricted to pilots only.' voice from single-player on OnPlayerRequestGate if entrance is denied, as we only want pilots (skin 61) to enter.

First we need to create the gate, and store its ID in a global variable to handle it later. Two gates are required at the LS airport, but we will only handle one for the sounds, but still need to provide an ID for it for the permissions:

pawn Code:
new GATE_LSAP[2];

public OnGameModeInit()
{
    // LS airport gates
    GATE_LSAP[0] = CreateAutomaticGate(988, 1958.742797, -2189.757324, 13.586877, 0.000000, 0.000000, 180.000000, 1954.142822, -2189.757324, 13.586876, -1000, -1000, -1000, 1961.5413,-2189.3660,13.5469, 15, 4, 1);
    GATE_LSAP[1] = CreateAutomaticGate(988, 1964.242919, -2189.757324, 13.586877, 0.000000, 0.000000, 180.000000, 1968.842895, -2189.757324, 13.586876, -1000, -1000, -1000, 1961.5413,-2189.3660,13.5469, 15, 4, 1);
    return 1;
}
Now, when OnGateOpenClose is called, we want to play the sound of the gate opening to players that are in range:

pawn Code:
public OnGateOpenClose(gateid, openclose, Float:gatex, Float:gatey, Float:gatez)
{
    if(gateid == GATE_LSAP[0])
    {
        if(openclose == GATE_STATUS_OPENING || openclose == GATE_STATUS_CLOSING)
        {
            foreach(new i : Player)
            {
                if(IsPlayerInRangeOfPoint(i, 30, gatex, gatey, gatez)) PlayerPlaySound(i, 1100, gatex, gatey, gatez);
            }
        }
        else
        {
            foreach(new i : Player)
            {
                if(IsPlayerInRangeOfPoint(i, 30, gatex, gatey, gatez)) PlayerPlaySound(i, 1101, gatex, gatey, gatez);
            }
        }
    }
    return 1;
}
When a player triggers the gate, we need to play the 'They'll give a pilot's license to anybody these days!' sound:

pawn Code:
public OnPlayerTriggerGate(playerid, gateid)
{
    if(gateid == GATE_LSAP[0]) SetTimerEx("pilot_speech", 321, 0, "i", playerid);
    return 1;
}

forward pilot_speech(playerid);
public pilot_speech(playerid)
{
    PlayerPlaySound(playerid, 16802+random(2), 0, 0, 0);
    return 1;
}
The reason we have to delay it is so that it does not over-ride the 'clang' sound of the game opening. ~300 miliseconds is good.

Finally we must set the conditions for players to pass, which in this case, they must be using skin ID 61 which is a pilot:

pawn Code:
new pGateTick[MAX_PLAYERS];
public OnPlayerRequestGate(playerid, gateid)
{
    if((gateid == GATE_LSAP[0] || gateid == GATE_LSAP[1]) && GetPlayerSkin(playerid) != 61)
    {
        if(gettime()-pGateTick[playerid] > 10) // If 10 seconds have passed since the last trigger (to prevent spam)
        {
            PlayerPlaySound(playerid, 16800+random(2), 0, 0, 0);
            pGateTick[playerid] = gettime();
        }
        return 0;
    }
    return 1;
}
If they are not using skin 61, entry is denied (return 0 and the 'This area is restricted to pilots only' sound is played. The pGateTick and gettime() stuff is an 'antispam' as this function would be called once a second for a player standing in the trigger zone, so we don't want to 'spam' the sound.

Here's that code in action:

http://www.youtube.com/watch?v=PoJ4qhdoA2U
that is amazing what is your server ip pm me


Re: mGates (Easily create automatic gates with one function!) - MP2 - 22.01.2013

I do not have a server at this moment in time. I am developing one.


Re: mGates (Easily create automatic gates with one function!) - Flashbrot - 26.01.2013

Usefull Good Work !


Re: mGates (Easily create automatic gates with one function!) - freddy smyth - 09.02.2013

Definately will try this. Cheers MP2!


Re: mGates (Easily create automatic gates with one function!) - Simm - 03.05.2013

How to get trigger x, y ,z i know they are range of points but how to get the range of point. I mean how to get trigg x, y and z ? HELP!


Re: mGates (Easily create automatic gates with one function!) - Pottus - 03.05.2013

Just do /save <description> it will save your current coordinates to file


Re: mGates (Easily create automatic gates with one function!) - Lostlife - 03.05.2013

Just want I'm in need of thank you.


Re: mGates (Easily create automatic gates with one function!) - Simm - 03.05.2013

Wait I need to clear it. we need to do /save little far away from the gate and we get x y z in savedpositions. Then we need to increase trigg range to about 20~30 Am i right?


Re: mGates (Easily create automatic gates with one function!) - Simm - 04.05.2013

Код:
public OnGameModeInit()
{
	// Don't use these lines if it's a filterscript
	SetGameModeText("Blank Script");
	AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
        CreateAutomaticGate(2963, 2500.0000000, -1671.5000000, 14.4, 0.0000000, 0.0000000, 0.0000000, 2500.0000000, -1669.5000000, 14.3999996, 0.0000000, 0.0000000, 0.0000000, 2498.6000976563, -1671.8000488281, 13.3, 30, 0.003, 0);
	return 1;
}
I did this code correctly but I am not sure about the trigg x, y and z positions. because when I do /save there are 4 co-ordinates not 3. So I placed a object infront of the gate and got the objects position when I came near the gate it dont open. WANT I NEED TO DO ?


Re: mGates (Easily create automatic gates with one function!) - Simm - 05.05.2013

Why none help me?


Re: mGates (Easily create automatic gates with one function!) - MP2 - 05.05.2013

The fourth coordinate is the angle - which you don't need. Use the first three. The range should be about 30.


Re: mGates (Easily create automatic gates with one function!) - MP2 - 29.06.2013

v2.1 released - added height checks. I think I also changed some minor stuff since the last release, but haven't tested it. Report any problems please.


Re: mGates (Easily create automatic gates with one function!) - Uberanwar - 08.09.2013

Good job MP2! +Rape (° ͜ʖ ͡°)


Re: mGates (Easily create automatic gates with one function!) - Shinta307 - 09.09.2014

To many error :3 please help

Код:
D:\Data Server\pawno\include\mGates.inc(329) : error 010: invalid function or declaration
D:\Data Server\pawno\include\mGates.inc(332) : error 010: invalid function or declaration
D:\Data Server\pawno\include\mGates.inc(333) : error 010: invalid function or declaration
D:\Data Server\pawno\include\mGates.inc(336) : error 010: invalid function or declaration
D:\Data Server\pawno\include\mGates.inc(339) : error 010: invalid function or declaration
D:\Data Server\pawno\include\mGates.inc(340) : error 010: invalid function or declaration
D:\Data Server\pawno\include\mGates.inc(343) : error 010: invalid function or declaration
D:\Data Server\pawno\include\mGates.inc(346) : error 021: symbol already defined: "KillTimer"
D:\Data Server\pawno\include\mGates.inc(347) : error 010: invalid function or declaration
D:\Data Server\pawno\include\mGates.inc(403) : warning 203: symbol is never used: "mgate_trigger_TIMERID"
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


9 Errors.



Re: mGates (Easily create automatic gates with one function!) - stormchaser206 - 06.03.2018

I keep getting tag mismatch warnings when making the gate but it's being written exactly as it should.

Код:
GATE_INDIA1 = CreateAutomaticGate(971, 2720.1001000,-2405.3999000,16.1000000,0.0000000,0.0000000,270.0000000, 2720.1001000,-2413.8999023438,16.1000000, 0.000000, 0.0000000, 270.000000, 2720.1001000,-2405.3999000,16.1000000, 20.0, 3, 1);