Useful Snippets

Practical uses of Bit wise Operators

Gist Link

Many people asked me for what purpose we can use bitwise operators?Is it worth it?
So as to answer these questions im providing some snippets that i learned in high school and might explain the handy uses of bitwise operators Here are some practical uses of bitwise operators.


Swapping two variables without the use of 3rd one using XOR


PHP код:
swap(&a,&b)
{
    
^= b;
    
^= a;
    
^= b;

Checking two numbers have same signs using XOR


PHP код:
bool:IsSameSign(a,b)
{
    return (!((
b) < 0));

Checking is odd using AND

PHP код:
bool:IsOdd(a)
{
    return ((
1) > 0);

Checking is even using AND


PHP код:
bool:IsEven(a)
{
    return ((
1) == 0);

To Lower using OR and Left Shift


PHP код:
ToLower(a)
{
    return (
|(1<<5));

To Upper using Not and AND (NAND) and Left Shift


PHP код:
ToUpper(a)
{
    return (
&~(1<<5));

Reply

Quote:
Originally Posted by Sreyas
Посмотреть сообщение
Swapping two variables without the use of 3rd one using XOR


PHP код:
swap(&a,&b)
{
    
^= b;
    
^= a;
    
^= b;

There is also a very interesting way to accomplish this without using a third variable, by the formula:
PHP код:
new 510;
- (a); //
// a = 10
// b = 5 
Reply

Quote:
Originally Posted by OstGot
Посмотреть сообщение
There is also a very interesting way to accomplish this without using a third variable, by the formula:
PHP код:
new 510;
- (a); //
// a = 10
// b = 5 
Good one but les optimized then using a 3rd variable.
Reply

Quote:
Originally Posted by Dayrion
Посмотреть сообщение
Good one but les optimized then using a 3rd variable.
PHP код:
public OnGameModeInit()
{
    new 
gtc;
    
gtc GetTickCount();
    for(new 
i34628c10_000_000i++)
    {
        
a;
        
b;
        
c;
    }
    
printf("1 (with 3rd variable): %d ms"GetTickCount() - gtc);
    
gtc GetTickCount();
    for(new 
i3462810_000_000i++)
    {
        
- (a);
    }
    
printf("2 (without): %d ms"GetTickCount() - gtc);
    return 
1;

Код:
[22:47:50] 1 (with 3rd variable): 1398 ms
[22:47:51] 2 (without): 1049 ms
Reply

Quote:
Originally Posted by OstGot
Посмотреть сообщение
PHP код:
//CODE 
Код:
[22:47:50] 1 (with 3rd variable): 1398 ms
[22:47:51] 2 (without): 1049 ms
Can't reproduce these results, the 3rd variable is faster for me
Also you could get faster with putting everything in one line ("c = a, a = b, b = c;") (if compiled with debug information -d1,2,3 (deafult is -d1))

Even if I switch the arithmetic with bitwise operations (which should be faster, "a = b | (b = a) & 0;") is not enough to beat it

Anyways use emit if you want to be the fastest within pawn
Reply

Quote:
Originally Posted by Nero_3D
View Post
Can't reproduce these results, the 3rd variable is faster for me
I tested it on my home PC with Windows (10) on board. Hmm, anyway it was just interesting to see the results.
Good to know, thanks

Quote:
Originally Posted by Nero_3D
View Post
Anyways use emit if you want to be the fastest within pawn
It kills any readability and as a consequence isn't worth it
Reply

I know that right now i dont present a script, but this is a cool ideea of making checkpoints for whatever u want.
Image
All those things were coloured using Texture Studio. This was made for a tuning system, and that wrench ive managed to make it spin via a timer. You can actualy replace or remove the wrench if u want to use the checkpoint for something else, for example u can put insead a petrol can if u want the checkpoint for a fuel station. Anyway, to make the checkpoint trigger when i enter in it i use Dynamic Areas from streamer plugin.
Reply

Arrfind

I was told to post it here. So posting it...
This is a very simple macro to find the element index in an array without looping making use of pawn's typless nature and it orginated from this discussion

NOTE:
if we have an element value equal to 0 (as null terminator equals to 0 ) the checking stops on that index and further index would not be checked and will return -1. Therefore it can't be used with array having elements values 0.
PHP Code:
#define arrfind(%0,%1) strfind(%0,{%1},false,0) 
main() 

    new array[]={
6,2,3,3,2340,78}; 
    
printf"index = %d" arrfind(array,3));//will print 2 
     

Reply

Quote:
Originally Posted by OstGot
View Post
PHP Code:
public OnGameModeInit()
{
    new 
gtc;
    
gtc GetTickCount();
    for(new 
i34628c10_000_000i++)
    {
        
a;
        
b;
        
c;
    }
    
printf("1 (with 3rd variable): %d ms"GetTickCount() - gtc);
    
gtc GetTickCount();
    for(new 
i3462810_000_000i++)
    {
        
- (a);
    }
    
printf("2 (without): %d ms"GetTickCount() - gtc);
    return 
1;

Code:
[22:47:50] 1 (with 3rd variable): 1398 ms
[22:47:51] 2 (without): 1049 ms
Credits to @Dutheil

Your function:
PHP Code:
swap(&a, &b)
{
    
- (a);

Code:
proc	; swap
lref.s.pri c
push.pri
lref.s.pri 10
pop.alt
add
push.pri
lref.s.pri c
sref.s.pri 10
pop.alt
sub.alt
sref.s.pri c
zero.pri
retn
The simplest function:
PHP Code:
swap(&a, &b)
{
    new
        
a;
        
    
b;
    
c;

Code:
proc	; swap
stack fffffffc
lref.s.pri c
stor.s.pri fffffffc
lref.s.pri 10
sref.s.pri c
load.s.pri fffffffc
sref.s.pri 10
stack 4
zero.pri
retn
Fatest function without using a 3rd var.
PHP Code:
swap(&a, &b)
{
    
#emit LREF.S.pri a
    #emit LREF.S.alt b
    #emit SREF.S.pri b
    #emit SREF.S.alt a

Reply

Quote:
Originally Posted by Dayrion
View Post
...
Don't forget XOR swap...
Reply

Nothing special but I use it personally for some systems in my script.

PHP Code:
hash(bufwith)
{
    new 
num buf << with;
    if(
IsEven(num)) num *= 2;
    else 
num *= 3;
    return 
num;
}
unhash(bufwith)
{
    new 
num buf >> with;
    if(
IsEven(num)) num /= 2;
    else 
num /= 3;
    return 
num;

Reply

Quote:
Originally Posted by Logic_
View Post
Nothing special but I use it personally for some systems in my script.

PHP Code:
hash(bufwith)
{
    new 
num buf << with;
    if(
IsEven(num)) num *= 2;
    else 
num *= 3;
    return 
num;
}
unhash(bufwith)
{
    new 
num buf >> with;
    if(
IsEven(num)) num /= 2;
    else 
num /= 3;
    return 
num;

that is just:

PHP Code:
hash(bufwith)
{
    return 
buf << (with 1);
}
unhash(bufwith)
{
    return 
buf >> (with 1);

except on huge numbers:

PHP Code:
hash(838860810); // 0
unhash(010); // 0 
or "with" is 0:

PHP Code:
hash(30); // 9
unhash(90); // 3 
Reply

Random Easter Egg Generator (Decoration)

http://imgur.com/a/34czh

PHP Code:
#include <a_samp>
#include <streamer>
#include <colandreas> //OR mapandreas
#include <SAM/3DTryg> //https://sampforum.blast.hk/showthread.php?tid=591010
#define MAX_EASTER_EGG        10000
stock EasterEggCreate(){
    new 
Float:pioxFloat:pioyFloat:pioz;
    
GetRandomPointInRectangle(-3000.0,-3000.0,3000.0,3000.0,piox,pioy);
    while(
IsPointInWater(piox,pioy,0.0)){
        
GetRandomPointInRectangle(-3000.0,-3000.0,3000.0,3000.0,piox,pioy);
    }
    
Tryg3D_MapAndreasFindZ(piox,pioy,pioz);
    new 
tmpobj CreateDynamicObject(19341,piox,pioy,pioz+0.55,0.0,0.0,0.0,0,0,-1,50.0);
    switch(
random(14)){
        case 
1SetDynamicObjectMaterial(tmpobj,0,18841,"MickyTextures","ws_gayflag1");
        case 
2SetDynamicObjectMaterial(tmpobj,0,18841,"MickyTextures","Smileyface2");
        case 
3SetDynamicObjectMaterial(tmpobj,0,18841,"MickyTextures","orang006");
        case 
4SetDynamicObjectMaterial(tmpobj,0,18841,"MickyTextures","brown013");
        case 
5SetDynamicObjectMaterial(tmpobj,0,18841,"MickyTextures","red032");
        case 
6SetDynamicObjectMaterial(tmpobj,0,18841,"MickyTextures","yello007");
        case 
7SetDynamicObjectMaterial(tmpobj,0,18841,"MickyTextures","wood051");
        case 
8SetDynamicObjectMaterial(tmpobj,0,18841,"MickyTextures","waterclear256");
        case 
9SetDynamicObjectMaterial(tmpobj,0,18841,"MickyTextures","tubelite");
        case 
10SetDynamicObjectMaterial(tmpobj,0,18841,"MickyTextures","marb002");
        case 
11SetDynamicObjectMaterial(tmpobj,0,18841,"MickyTextures","grey002");
        case 
12SetDynamicObjectMaterial(tmpobj,0,18841,"MickyTextures","metal013");
        case 
13SetDynamicObjectMaterial(tmpobj,0,18841,"MickyTextures","brick008");
    }
}
public 
OnFilterScriptInit(){
    
    for(new 
0MAX_EASTER_EGGi++){
        
EasterEggCreate();
    }
    
    return 
1;

Reply

Well, I builded it all myself, I tried to take a look at other scripts with audio script and see what they made there, until I've done that, +REP me if you tried it out and you liked it
Code:
Code:
CMD:play4all(playerid, params[])
{
 if (PlayerInfo[playerid][pAdmin] >= 1338)
 {
  if(isnull(params)) return SendClientMessageEx(playerid, COLOR_WHITE, "USAGE: /play4all [Link]");
      for(new i = 0; i < MAX_PLAYERS; i++)
  {
        PlayAudioStreamForPlayer(i, params);
      }
     SendClientMessageToAllEx(COLOR_LIGHTBLUE, "* Use /stopaudio to stop the music.");
 }
     return 1;
}
Code:
CMD:stopmusic(playerid, params[])
{
  	if(PlayerInfo[playerid][pAdmin] >= 3)
  	{
		SendClientMessageToAllEx(COLOR_LIGHTBLUE, "* Music has been stopped.");
	  	for(new i = 0; i < MAX_PLAYERS; i++)
	  	{
	          StopAudioStreamForPlayer(i);
	  	}
 	}
  	return 1;
}
If you find any bugs / errors in the script, tell me & fix it and repost so I'll update the thread
btw here's the cmd of /stopaudio:
Code:
CMD:stopaudio(playerid, params[])
{
    SendClientMessage(playerid, 0xAD1515FF, "You have stopped the music.");
	StopAudioStreamForPlayer(playerid);
    return 1;
If I'll get engouh +reps I'll post DJ System that works with this
EDIT P.W: This plugin was made in Roleplay script which the highest rank was 1338, edit the rank to your server's admin ranks
Reply

Dunno if this is of any use to somebody, but I converted all the card sprites to an array

PHP Code:
enum {
    
BACK_OF_CARD,
    
CARD_SET_SPADES,
    
CARD_SET_HEARTS,
    
CARD_SET_DIAMONDS,
    
CARD_SET_CLOVERS
} ;
enum CardData {
    
card_name 32 ],
    
card_sprite 32 ],
    
card_value ,
    
card_set
} ;
new 
Card [ ] [ CardData ] = {
    { 
"Card Back",             "LD_CARD:cdback",    0,        BACK_OF_CARD },
    { 
"King of Spades",         "LD_CARD:cd13s",    13,        CARD_SET_SPADES },
    { 
"King of Hearts",         "LD_CARD:cd13h",    13,        CARD_SET_HEARTS },
    { 
"King of Diamonds",     "LD_CARD:cd13d",    13,        CARD_SET_DIAMONDS },
    { 
"King of Clovers",        "LD_CARD:cd13c",    13,        CARD_SET_CLOVERS },
    { 
"Queen of Spades",         "LD_CARD:cd12s",    12,        CARD_SET_SPADES },
    { 
"Queen of Hearts",         "LD_CARD:cd12h",    12,        CARD_SET_HEARTS },
    { 
"Queen of Diamonds",     "LD_CARD:cd12d",    12,        CARD_SET_DIAMONDS },
    { 
"Queen of Clovers",        "LD_CARD:cd12c",    12,        CARD_SET_CLOVERS },
    { 
"Jack of Spades",         "LD_CARD:cd11s",    11,        CARD_SET_SPADES },
    { 
"Jack of Hearts",         "LD_CARD:cd11h",    11,        CARD_SET_HEARTS },
    { 
"Jack of Diamonds",     "LD_CARD:cd11d",    11,        CARD_SET_DIAMONDS },
    { 
"Jack of Clovers",        "LD_CARD:cd11c",    11,        CARD_SET_CLOVERS },
    { 
"10 of Spades",         "LD_CARD:cd10s",    10,        CARD_SET_SPADES },
    { 
"10 of Hearts",         "LD_CARD:cd10h",    10,        CARD_SET_HEARTS },
    { 
"10 of Diamonds",     "LD_CARD:cd10d",    10,        CARD_SET_DIAMONDS },
    { 
"10 of Clovers",        "LD_CARD:cd10c",    10,        CARD_SET_CLOVERS },
    { 
"9 of Spades",         "LD_CARD:cd9s",        9,        CARD_SET_SPADES },
    { 
"9 of Hearts",         "LD_CARD:cd9h",        9,        CARD_SET_HEARTS },
    { 
"9 of Diamonds",         "LD_CARD:cd9d",        9,        CARD_SET_DIAMONDS },
    { 
"9 of Clovers",        "LD_CARD:cd9c",        9,        CARD_SET_CLOVERS },
    { 
"8 of Spades",         "LD_CARD:cd8s",        8,        CARD_SET_SPADES },
    { 
"8 of Hearts",         "LD_CARD:cd8h",        8,        CARD_SET_HEARTS },
    { 
"8 of Diamonds",         "LD_CARD:cd8d",        8,        CARD_SET_DIAMONDS },
    { 
"8 of Clovers",        "LD_CARD:cd8c",        8,        CARD_SET_CLOVERS },
    { 
"7 of Spades",         "LD_CARD:cd7s",        7,        CARD_SET_SPADES },
    { 
"7 of Hearts",         "LD_CARD:cd7h",        7,        CARD_SET_HEARTS },
    { 
"7 of Diamonds",         "LD_CARD:cd7d",        7,        CARD_SET_DIAMONDS },
    { 
"7 of Clovers",        "LD_CARD:cd7c",        7,        CARD_SET_CLOVERS },
    { 
"6 of Spades",         "LD_CARD:cd6s",        6,        CARD_SET_SPADES },
    { 
"6 of Hearts",         "LD_CARD:cd6h",        6,        CARD_SET_HEARTS },
    { 
"6 of Diamonds",         "LD_CARD:cd6d",        6,        CARD_SET_DIAMONDS },
    { 
"6 of Clovers",        "LD_CARD:cd6c",        6,        CARD_SET_CLOVERS },
    { 
"5 of Spades",         "LD_CARD:cd5s",        5,        CARD_SET_SPADES },
    { 
"5 of Hearts",         "LD_CARD:cd5h",        5,        CARD_SET_HEARTS },
    { 
"5 of Diamonds",         "LD_CARD:cd5d",        5,        CARD_SET_DIAMONDS },
    { 
"5 of Clovers",        "LD_CARD:cd5c",        5,        CARD_SET_CLOVERS },
    { 
"4 of Spades",         "LD_CARD:cd4s",        4,        CARD_SET_SPADES },
    { 
"4 of Hearts",         "LD_CARD:cd4h",        4,        CARD_SET_HEARTS },
    { 
"4 of Diamonds",         "LD_CARD:cd4d",        4,        CARD_SET_DIAMONDS },
    { 
"4 of Clovers",        "LD_CARD:cd4c",        4,        CARD_SET_CLOVERS },
    { 
"3 of Spades",         "LD_CARD:cd3s",        3,        CARD_SET_SPADES },
    { 
"3 of Hearts",         "LD_CARD:cd3h",        3,        CARD_SET_HEARTS },
    { 
"3 of Diamonds",         "LD_CARD:cd3d",        3,        CARD_SET_DIAMONDS },
    { 
"3 of Clovers",        "LD_CARD:cd3c",        3,        CARD_SET_CLOVERS },
    { 
"2 of Spades",         "LD_CARD:cd2s",        2,        CARD_SET_SPADES },
    { 
"2 of Hearts",         "LD_CARD:cd2h",        2,        CARD_SET_HEARTS },
    { 
"2 of Diamonds",         "LD_CARD:cd2d",        2,        CARD_SET_DIAMONDS },
    { 
"2 of Clovers",        "LD_CARD:cd2c",        2,        CARD_SET_CLOVERS },
    { 
"Ace of Spades",         "LD_CARD:cd1s",        1,        CARD_SET_SPADES },
    { 
"Ace of Hearts",         "LD_CARD:cd1h",        1,        CARD_SET_HEARTS },
    { 
"Ace of Diamonds",     "LD_CARD:cd1d",        1,        CARD_SET_DIAMONDS },
    { 
"Ace of Clovers",        "LD_CARD:cd1c",        1,        CARD_SET_CLOVERS }
} ; 
Reply

This is a PHP function that allows you to search location coords X - Y - Z to find the location of them cords, This could be used to narrow the location of a house for the UCP so on so foruth.

PHP Code:
<?php
// YOU WOULD NEED TO PUT ALL THE LOCATIONS IN FROM THE LOCATION SCRIPT
$locations = array(
    
//       NAME           Xmin,     Ymin,    Zmin   Xmax,    Ymax,    Zmax)    
    
array("Aldea Malvada",               -1372.10,2498.50,0.00,-1277.50,2615.30,200.00),
    array(
"Angel Pine",                  -2324.90,-2584.20,-6.10,-1964.20,-2212.10,200.00),
    array(
"Arco del Oeste",              -901.10,2221.80,0.00,-592.00,2571.90,200.00),
    array(
"Avispa Country Club",         -2361.50,-417.10,0.00,-2270.00,-355.40,200.00),
    array(
"Avispa Country Club",         -2470.00,-355.40,0.00,-2270.00,-318.40,46.10),
    array(
"Avispa Country Club",         -2550.00,-355.40,0.00,-2470.00,-318.40,39.70),
    array(
"Avispa Country Club",         -2646.40,-355.40,0.00,-2270.00,-222.50,200.00),
    array(
"Avispa Country Club",         -2667.80,-302.10,-28.80,-2646.40,-262.30,71.10),
    array(
"Avispa Country Club",         -2831.80,-430.20,-6.10,-2646.40,-222.50,200.00),
    array(
"Back o Beyond",               -1166.90,-2641.10,0.00,-321.70,-1856.00,200.00),
    array(
"Battery Point",               -2741.00,1268.40,-4.50,-2533.00,1490.40,200.00),
    array(
"Bayside Marina",              -2353.10,2275.70,0.00,-2153.10,2475.70,200.00),
    array(
"Bayside",                     -2741.00,2175.10,0.00,-2353.10,2722.70,200.00),
    array(
"Beacon Hill",                 -399.60,-1075.50,-1.40,-319.00,-977.50,198.50),
    array(
"Blackfield Chapel",           1325.60,596.30,-89.00,1375.60,795.00,110.90),
    array(
"Blackfield Chapel",           1375.60,596.30,-89.00,1558.00,823.20,110.90),
    array(
"Blackfield Section",          1166.50,795.00,-89.00,1375.60,1044.60,110.90),
    array(
"Blackfield Section",          1197.30,1044.60,-89.00,1277.00,1163.30,110.90),
    array(
"Blackfield Section",          1277.00,1044.60,-89.00,1315.30,1087.60,110.90),
    array(
"Blackfield Section",          1375.60,823.20,-89.00,1457.30,919.40,110.90),
    array(
"Blackfield",                  964.30,1203.20,-89.00,1197.30,1403.20,110.90),
    array(
"Blackfield",                  964.30,1403.20,-89.00,1197.30,1726.20,110.90),
    array(
"Blueberry Acres",             -319.60,-220.10,0.00,104.50,293.30,200.00),
    array(
"Blueberry",                   104.50,-220.10,2.30,349.60,152.20,200.00),
    array(
"Blueberry",                   19.60,-404.10,3.80,349.60,-220.10,200.00),
    array(
"Caligula's Palace",           2087.30,1543.20,-89.00,2437.30,1703.20,110.90),
    array(
"Caligula's Palace",           2137.40,1703.20,-89.00,2437.30,1783.20,110.90),
    array(
"Calton Heights",              -2274.10,744.10,-6.10,-1982.30,1358.90,200.00),
    array(
"Castillo del Diablo",            -208.50,2123.00,-7.60,114.00,2337.10,200.00),
    array(
"Castillo del Diablo",            -208.50,2337.10,0.00,8.40,2487.10,200.00),
    array(
"Castillo del Diablo",            -464.50,2217.60,0.00,-208.50,2580.30,200.00),
    array(
"Chinatown",                    -2274.10,578.30,-7.60,-2078.60,744.10,200.00),
    array(
"City Hall",                    -2867.80,277.40,-9.10,-2593.40,458.40,200.00),
    array(
"Come-A-Lot",                    2087.30,943.20,-89.00,2623.10,1203.20,110.90),
    array(
"Commerce",                    1323.90,-1722.20,-89.00,1440.90,-1577.50,110.90),
    array(
"Commerce",                    1323.90,-1842.20,-89.00,1701.90,-1722.20,110.90),
    array(
"Commerce",                    1370.80,-1577.50,-89.00,1463.90,-1384.90,110.90),
    array(
"Commerce",                    1463.90,-1577.50,-89.00,1667.90,-1430.80,110.90),
    array(
"Commerce",                    1583.50,-1722.20,-89.00,1758.90,-1577.50,110.90),
    array(
"Commerce",                    1667.90,-1577.50,-89.00,1812.60,-1430.80,110.90),
    array(
"Conference Center",            1046.10,-1804.20,-89.00,1323.90,-1722.20,110.90),
    array(
"Conference Center",            1073.20,-1842.20,-89.00,1323.90,-1804.20,110.90),
    array(
"Cranberry Station",            -2007.80,56.30,0.00,-1922.00,224.70,100.00),
    array(
"Creek",                        2749.90,1937.20,-89.00,2921.60,2669.70,110.90),
    array(
"Dillimore",                    580.70,-674.80,-9.50,861.00,-404.70,200.00),
    array(
"Doherty",                        -2270.00,-324.10,-0.00,-1794.90,-222.50,200.00),
    array(
"Doherty",                     -2173.00,-222.50,-0.00,-1794.90,265.20,200.00),
    array(
"Downtown Los Santos",            1370.80,-1170.80,-89.00,1463.90,-1130.80,110.90),
    array(
"Downtown Los Santos",            1370.80,-1384.90,-89.00,1463.90,-1170.80,110.90),
    array(
"Downtown Los Santos",            1378.30,-1130.80,-89.00,1463.90,-1026.30,110.90),
    array(
"Downtown Los Santos",            1391.00,-1026.30,-89.00,1463.90,-926.90,110.90),
    array(
"Downtown Los Santos",            1463.90,-1290.80,-89.00,1724.70,-1150.80,110.90),
    array(
"Downtown Los Santos",            1463.90,-1430.80,-89.00,1724.70,-1290.80,110.90),
    array(
"Downtown Los Santos",            1507.50,-1385.20,110.90,1582.50,-1325.30,335.90),
    array(
"Downtown Los Santos",            1724.70,-1250.90,-89.00,1812.60,-1150.80,110.90),
    array(
"Downtown Los Santos",            1724.70,-1430.80,-89.00,1812.60,-1250.90,110.90),
    array(
"Downtown",                    -1580.00,744.20,-6.10,-1499.80,1025.90,200.00),
    array(
"Downtown",                    -1700.00,744.20,-6.10,-1580.00,1176.50,200.00),
    array(
"Downtown",                    -1871.70,1176.40,-4.50,-1620.30,1274.20,200.00),
    array(
"Downtown",                    -1982.30,744.10,-6.10,-1871.70,1274.20,200.00),
    array(
"Downtown",                    -1993.20,265.20,-9.10,-1794.90,578.30,200.00),
    array(
"Downtown",                    -2078.60,578.30,-7.60,-1499.80,744.20,200.00),
    array(
"East Beach",                    2632.80,-1668.10,-89.00,2747.70,-1393.40,110.90),
    array(
"East Beach",                    2632.80,-1852.80,-89.00,2959.30,-1668.10,110.90),
    array(
"East Beach",                    2747.70,-1498.60,-89.00,2959.30,-1120.00,110.90),
    array(
"East Beach",                    2747.70,-1668.10,-89.00,2959.30,-1498.60,110.90),
    array(
"East Los Santos",                2222.50,-1628.50,-89.00,2421.00,-1494.00,110.90),
    array(
"East Los Santos",                2266.20,-1494.00,-89.00,2381.60,-1372.00,110.90),
    array(
"East Los Santos",                2281.40,-1372.00,-89.00,2381.60,-1135.00,110.90),
    array(
"East Los Santos",                2381.60,-1454.30,-89.00,2462.10,-1135.00,110.90),
    array(
"East Los Santos",                2381.60,-1494.00,-89.00,2421.00,-1454.30,110.90),
    array(
"East Los Santos",                2421.00,-1628.50,-89.00,2632.80,-1454.30,110.90),
    array(
"East Los Santos",                2462.10,-1454.30,-89.00,2581.70,-1135.00,110.90),
    array(
"Easter Basin",                -1794.90,-50.00,-0.00,-1499.80,249.90,200.00),
    array(
"Easter Basin",                -1794.90,249.90,-9.10,-1242.90,578.30,200.00),
    array(
"Easter Bay Airport",            -1213.90,-50.00,-4.50,-947.90,578.30,200.00),
    array(
"Easter Bay Airport",            -1213.90,-730.10,0.00,-1132.80,-50.00,200.00),
    array(
"Easter Bay Airport",            -1242.90,-50.00,0.00,-1213.90,578.30,200.00),
    array(
"Easter Bay Airport",            -1315.40,-405.30,15.40,-1264.40,-209.50,25.40),
    array(
"Easter Bay Airport",            -1354.30,-287.30,15.40,-1315.40,-209.50,25.40),
    array(
"Easter Bay Airport",            -1490.30,-209.50,15.40,-1264.40,-148.30,25.40),
    array(
"Easter Bay Airport",            -1499.80,-50.00,-0.00,-1242.90,249.90,200.00),
    array(
"Easter Bay Airport",            -1794.90,-730.10,-3.00,-1213.90,-50.00,200.00),
    array(
"Easter Bay Chemical",            -1132.80,-768.00,0.00,-956.40,-578.10,200.00),
    array(
"Easter Bay Chemical",            -1132.80,-787.30,0.00,-956.40,-768.00,200.00),
    array(
"El Corona",                    1692.60,-2179.20,-89.00,1812.60,-1842.20,110.90),
    array(
"El Corona",                    1812.60,-2179.20,-89.00,1970.60,-1852.80,110.90),
    array(
"El Quebrados",                -1645.20,2498.50,0.00,-1372.10,2777.80,200.00),
    array(
"Esplanade East",                -1499.80,578.30,-79.60,-1339.80,1274.20,20.30),
    array(
"Esplanade East",                -1580.00,1025.90,-6.10,-1499.80,1274.20,200.00),
    array(
"Esplanade East",                -1620.30,1176.50,-4.50,-1580.00,1274.20,200.00),
    array(
"Esplanade North",                -1982.30,1274.20,-4.50,-1524.20,1358.90,200.00),
    array(
"Esplanade North",                -1996.60,1358.90,-4.50,-1524.20,1592.50,200.00),
    array(
"Esplanade North",                -2533.00,1358.90,-4.50,-1996.60,1501.20,200.00),
    array(
"Fallen Tree",                    -792.20,-698.50,-5.30,-452.40,-380.00,200.00),
    array(
"Fallow Bridge",               434.30,366.50,0.00,603.00,555.60,200.00),
    array(
"Fern Ridge",                  508.10,-139.20,0.00,1306.60,119.50,200.00),
    array(
"Financial",                   -1871.70,744.10,-6.10,-1701.30,1176.40,300.00),
    array(
"Fisher's Lagoon",             1916.90,-233.30,-100.00,2131.70,13.80,200.00),
    array(
"Flint Intersection",          -187.70,-1596.70,-89.00,17.00,-1276.60,110.90),
    array(
"Flint Range",                 -594.10,-1648.50,0.00,-187.70,-1276.60,200.00),
    array(
"Fort Carson",                 -376.20,826.30,-3.00,123.70,1220.40,200.00),
    array(
"Foster Valley",               -2178.60,-1115.50,0.00,-1794.90,-599.80,200.00),
    array(
"Foster Valley",               -2178.60,-1250.90,0.00,-1794.90,-1115.50,200.00),
    array(
"Foster Valley",               -2178.60,-599.80,-0.00,-1794.90,-324.10,200.00),
    array(
"Foster Valley",               -2270.00,-430.20,-0.00,-2178.60,-324.10,200.00),
    array(
"Four Dragons Casino",         1817.30,863.20,-89.00,2027.30,1083.20,110.90),
    array(
"Frederick Bridge",            2759.20,296.50,0.00,2774.20,594.70,200.00),
    array(
"Gant Bridge",                 -2741.00,1490.40,-6.10,-2616.40,1659.60,200.00),
    array(
"Gant Bridge",                 -2741.40,1659.60,-6.10,-2616.40,2175.10,200.00),
    array(
"Ganton",                      2222.50,-1722.30,-89.00,2632.80,-1628.50,110.90),
    array(
"Ganton",                      2222.50,-1852.80,-89.00,2632.80,-1722.30,110.90),
    array(
"Garcia",                      -2395.10,-222.50,-5.30,-2354.00,-204.70,200.00),
    array(
"Garcia",                      -2411.20,-222.50,-0.00,-2173.00,265.20,200.00),
    array(
"Garver Bridge",               -1213.90,950.00,-89.00,-1087.90,1178.90,110.90),
    array(
"Garver Bridge",               -1339.80,828.10,-89.00,-1213.90,1057.00,110.90),
    array(
"Garver Bridge",               -1499.80,696.40,-179.60,-1339.80,925.30,20.30),
    array(
"Glen Park",                   1812.60,-1100.80,-89.00,1994.30,-973.30,110.90),
    array(
"Glen Park",                   1812.60,-1350.70,-89.00,2056.80,-1100.80,110.90),
    array(
"Glen Park",                   1812.60,-1449.60,-89.00,1996.90,-1350.70,110.90),
    array(
"Green Palms",                 176.50,1305.40,-3.00,338.60,1520.70,200.00),
    array(
"Greenglass College",          964.30,1044.60,-89.00,1197.30,1203.20,110.90),
    array(
"Greenglass College",          964.30,930.80,-89.00,1166.50,1044.60,110.90),
    array(
"Hampton Barns",               603.00,264.30,0.00,761.90,366.50,200.00),
    array(
"Hankypanky Point",            2576.90,62.10,0.00,2759.20,385.50,200.00),
    array(
"Harry Gold Parkway",          1777.30,863.20,-89.00,1817.30,2342.80,110.90),
    array(
"Hashbury",                    -2593.40,-222.50,-0.00,-2411.20,54.70,200.00),
    array(
"Hilltop Farm",                967.30,-450.30,-3.00,1176.70,-217.90,200.00),
    array(
"Hunter Quarry",               337.20,710.80,-115.20,860.50,1031.70,203.70),
    array(
"Idlewood",                    1812.60,-1602.30,-89.00,2124.60,-1449.60,110.90),
    array(
"Idlewood",                    1812.60,-1742.30,-89.00,1951.60,-1602.30,110.90),
    array(
"Idlewood",                    1812.60,-1852.80,-89.00,1971.60,-1742.30,110.90),
    array(
"Idlewood",                    1951.60,-1742.30,-89.00,2124.60,-1602.30,110.90),
    array(
"Idlewood",                    1971.60,-1852.80,-89.00,2222.50,-1742.30,110.90),
    array(
"Idlewood",                    2124.60,-1742.30,-89.00,2222.50,-1494.00,110.90),
    array(
"Jefferson",                    1996.90,-1449.60,-89.00,2056.80,-1350.70,110.90),
    array(
"Jefferson",                    2056.80,-1210.70,-89.00,2185.30,-1126.30,110.90),
    array(
"Jefferson",                    2056.80,-1372.00,-89.00,2281.40,-1210.70,110.90),
    array(
"Jefferson",                    2056.80,-1449.60,-89.00,2266.20,-1372.00,110.90),
    array(
"Jefferson",                    2124.60,-1494.00,-89.00,2266.20,-1449.60,110.90),
    array(
"Jefferson",                    2185.30,-1210.70,-89.00,2281.40,-1154.50,110.90),
    array(
"Julius Thruway East",         2536.40,2442.50,-89.00,2685.10,2542.50,110.90),
    array(
"Julius Thruway East",         2623.10,943.20,-89.00,2749.90,1055.90,110.90),
    array(
"Julius Thruway East",         2625.10,2202.70,-89.00,2685.10,2442.50,110.90),
    array(
"Julius Thruway East",         2685.10,1055.90,-89.00,2749.90,2626.50,110.90),
    array(
"Julius Thruway North",        1377.30,2433.20,-89.00,1534.50,2507.20,110.90),
    array(
"Julius Thruway North",        1534.50,2433.20,-89.00,1848.40,2583.20,110.90),
    array(
"Julius Thruway North",        1704.50,2342.80,-89.00,1848.40,2433.20,110.90),
    array(
"Julius Thruway North",        1848.40,2478.40,-89.00,1938.80,2553.40,110.90),
    array(
"Julius Thruway North",        1938.80,2508.20,-89.00,2121.40,2624.20,110.90),
    array(
"Julius Thruway North",        2121.40,2508.20,-89.00,2237.40,2663.10,110.90),
    array(
"Julius Thruway North",        2237.40,2542.50,-89.00,2498.20,2663.10,110.90),
    array(
"Julius Thruway North",        2498.20,2542.50,-89.00,2685.10,2626.50,110.90),
    array(
"Julius Thruway South",        1457.30,823.20,-89.00,2377.30,863.20,110.90),
    array(
"Julius Thruway South",        2377.30,788.80,-89.00,2537.30,897.90,110.90),
    array(
"Julius Thruway West",         1197.30,1163.30,-89.00,1236.60,2243.20,110.90),
    array(
"Julius Thruway West",         1236.60,2142.80,-89.00,1297.40,2243.20,110.90),
    array(
"Juniper Hill",                -2533.00,578.30,-7.60,-2274.10,968.30,200.00),
    array(
"Juniper Hollow",              -2533.00,968.30,-6.10,-2274.10,1358.90,200.00),
    array(
"KACC Military Fuels",         2498.20,2626.50,-89.00,2749.90,2861.50,110.90),
    array(
"Kincaid Bridge",              -1087.90,855.30,-89.00,-961.90,986.20,110.90),
    array(
"Kincaid Bridge",              -1213.90,721.10,-89.00,-1087.90,950.00,110.90),
    array(
"Kincaid Bridge",              -1339.80,599.20,-89.00,-1213.90,828.10,110.90),
    array(
"King's",                      -2253.50,373.50,-9.10,-1993.20,458.40,200.00),
    array(
"King's",                      -2329.30,458.40,-7.60,-1993.20,578.30,200.00),
    array(
"King's",                      -2411.20,265.20,-9.10,-1993.20,373.50,200.00),
    array(
"LS International",            1249.60,-2394.30,-89.00,1852.00,-2179.20,110.90),
    array(
"LS International",            1382.70,-2730.80,-89.00,2201.80,-2394.30,110.90),
    array(
"LS International",            1400.90,-2669.20,-39.00,2189.80,-2597.20,60.90),
    array(
"LS International",            1852.00,-2394.30,-89.00,2089.00,-2179.20,110.90),
    array(
"LS International",            1974.60,-2394.30,-39.00,2089.00,-2256.50,60.90),
    array(
"LS International",            2051.60,-2597.20,-39.00,2152.40,-2394.30,60.90),
    array(
"LVA Freight Depot",           1236.60,1163.40,-89.00,1277.00,1203.20,110.90),
    array(
"LVA Freight Depot",           1277.00,1087.60,-89.00,1375.60,1203.20,110.90),
    array(
"LVA Freight Depot",           1315.30,1044.60,-89.00,1375.60,1087.60,110.90),
    array(
"LVA Freight Depot",           1375.60,919.40,-89.00,1457.30,1203.20,110.90),
    array(
"LVA Freight Depot",           1457.30,863.20,-89.00,1777.40,1143.20,110.90),
    array(
"Las Barrancas",               -926.10,1398.70,-3.00,-719.20,1634.60,200.00),
    array(
"Las Brujas",                  -365.10,2123.00,-3.00,-208.50,2217.60,200.00),
    array(
"Las Colinas",                 1994.30,-1100.80,-89.00,2056.80,-920.80,110.90),
    array(
"Las Colinas",                 2056.80,-1126.30,-89.00,2126.80,-920.80,110.90),
    array(
"Las Colinas",                 2126.80,-1126.30,-89.00,2185.30,-934.40,110.90),
    array(
"Las Colinas",                 2185.30,-1154.50,-89.00,2281.40,-934.40,110.90),
    array(
"Las Colinas",                 2281.40,-1135.00,-89.00,2632.70,-945.00,110.90),
    array(
"Las Colinas",                 2632.70,-1135.00,-89.00,2747.70,-945.00,110.90),
    array(
"Las Colinas",                 2747.70,-1120.00,-89.00,2959.30,-945.00,110.90),
    array(
"Las Payasadas",               -354.30,2580.30,2.00,-133.60,2816.80,200.00),
    array(
"Las Venturas Airport",        1236.60,1203.20,-89.00,1457.30,1883.10,110.90),
    array(
"Las Venturas Airport",        1457.30,1143.20,-89.00,1777.40,1203.20,110.90),
    array(
"Las Venturas Airport",        1457.30,1203.20,-89.00,1777.30,1883.10,110.90),
    array(
"Las Venturas Airport",        1515.80,1586.40,-12.50,1729.90,1714.50,87.50),
    array(
"Last Dime Motel",             1823.00,596.30,-89.00,1997.20,823.20,110.90),
    array(
"Leafy Hollow",                -1166.90,-1856.00,0.00,-815.60,-1602.00,200.00),
    array(
"Liberty City",                -1000.00,400.00,1300.00,-700.00,600.00,1400.00),
    array(
"Lil' Probe Inn",              -90.20,1286.80,-3.00,153.80,1554.10,200.00),
    array(
"Linden Side",                 2749.90,943.20,-89.00,2923.30,1198.90,110.90),
    array(
"Linden Station",              2749.90,1198.90,-89.00,2923.30,1548.90,110.90),
    array(
"Linden Station",              2811.20,1229.50,-39.50,2861.20,1407.50,60.40),
    array(
"Little Mexico",               1701.90,-1842.20,-89.00,1812.60,-1722.20,110.90),
    array(
"Little Mexico",               1758.90,-1722.20,-89.00,1812.60,-1577.50,110.90),
    array(
"Los Flores",                  2581.70,-1393.40,-89.00,2747.70,-1135.00,110.90),
    array(
"Los Flores",                  2581.70,-1454.30,-89.00,2632.80,-1393.40,110.90),
    array(
"Marina",                      647.70,-1577.50,-89.00,807.90,-1416.20,110.90),
    array(
"Marina",                      647.70,-1804.20,-89.00,851.40,-1577.50,110.90),
    array(
"Marina",                      807.90,-1577.50,-89.00,926.90,-1416.20,110.90),
    array(
"Market Station",              787.40,-1410.90,-34.10,866.00,-1310.20,65.80),
    array(
"Market",                      1072.60,-1416.20,-89.00,1370.80,-1130.80,110.90),
    array(
"Market",                      787.40,-1416.20,-89.00,1072.60,-1310.20,110.90),
    array(
"Market",                      926.90,-1577.50,-89.00,1370.80,-1416.20,110.90),
    array(
"Market",                      952.60,-1310.20,-89.00,1072.60,-1130.80,110.90),
    array(
"Martin Bridge",               -222.10,293.30,0.00,-122.10,476.40,200.00),
    array(
"Missionary Hill",             -2994.40,-811.20,0.00,-2178.60,-430.20,200.00),
    array(
"Montgomery Section",             1546.60,208.10,0.00,1745.80,347.40,200.00),
    array(
"Montgomery Section",             1582.40,347.40,0.00,1664.60,401.70,200.00),
    array(
"Montgomery",                  1119.50,119.50,-3.00,1451.40,493.30,200.00),
    array(
"Montgomery",                  1451.40,347.40,-6.10,1582.40,420.80,200.00),
    array(
"Mulholland Section",             1463.90,-1150.80,-89.00,1812.60,-768.00,110.90),
    array(
"Mulholland",                  1096.40,-910.10,-89.00,1169.10,-768.00,110.90),
    array(
"Mulholland",                  1169.10,-910.10,-89.00,1318.10,-768.00,110.90),
    array(
"Mulholland",                  1269.10,-768.00,-89.00,1414.00,-452.40,110.90),
    array(
"Mulholland",                  1281.10,-452.40,-89.00,1641.10,-290.90,110.90),
    array(
"Mulholland",                  1318.10,-910.10,-89.00,1357.00,-768.00,110.90),
    array(
"Mulholland",                  1357.00,-926.90,-89.00,1463.90,-768.00,110.90),
    array(
"Mulholland",                  1414.00,-768.00,-89.00,1667.60,-452.40,110.90),
    array(
"Mulholland",                  687.80,-860.60,-89.00,911.80,-768.00,110.90),
    array(
"Mulholland",                  737.50,-768.00,-89.00,1142.20,-674.80,110.90),
    array(
"Mulholland",                  768.60,-954.60,-89.00,952.60,-860.60,110.90),
    array(
"Mulholland",                  861.00,-674.80,-89.00,1156.50,-600.80,110.90),
    array(
"Mulholland",                  911.80,-860.60,-89.00,1096.40,-768.00,110.90),
    array(
"Mulholland",                  952.60,-937.10,-89.00,1096.40,-860.60,110.90),
    array(
"North Rock",                  2285.30,-768.00,0.00,2770.50,-269.70,200.00),
    array(
"Ocean Docks",                 2089.00,-2394.30,-89.00,2201.80,-2235.80,110.90),
    array(
"Ocean Docks",                 2201.80,-2418.30,-89.00,2324.00,-2095.00,110.90),
    array(
"Ocean Docks",                 2201.80,-2730.80,-89.00,2324.00,-2418.30,110.90),
    array(
"Ocean Docks",                 2324.00,-2145.10,-89.00,2703.50,-2059.20,110.90),
    array(
"Ocean Docks",                 2324.00,-2302.30,-89.00,2703.50,-2145.10,110.90),
    array(
"Ocean Docks",                 2373.70,-2697.00,-89.00,2809.20,-2330.40,110.90),
    array(
"Ocean Docks",                 2703.50,-2302.30,-89.00,2959.30,-2126.90,110.90),
    array(
"Ocean Flats",                 -2994.40,-222.50,-0.00,-2593.40,277.40,200.00),
    array(
"Ocean Flats",                 -2994.40,-430.20,-0.00,-2831.80,-222.50,200.00),
    array(
"Ocean Flats",                 -2994.40,277.40,-9.10,-2867.80,458.40,200.00),
    array(
"Octane Springs",              338.60,1228.50,0.00,664.30,1655.00,200.00),
    array(
"Old Venturas Strip",          2162.30,2012.10,-89.00,2685.10,2202.70,110.90),
    array(
"Palisades",                   -2994.40,458.40,-6.10,-2741.00,1339.60,200.00),
    array(
"Palomino Creek",              2160.20,-149.00,0.00,2576.90,228.30,200.00),
    array(
"Paradiso",                    -2741.00,793.40,-6.10,-2533.00,1268.40,200.00),
    array(
"Pershing Square",             1440.90,-1722.20,-89.00,1583.50,-1577.50,110.90),
    array(
"Pilgrim",                     2437.30,1383.20,-89.00,2624.40,1783.20,110.90),
    array(
"Pilgrim",                     2624.40,1383.20,-89.00,2685.10,1783.20,110.90),
    array(
"Pilson Intersection",         1098.30,2243.20,-89.00,1377.30,2507.20,110.90),
    array(
"Pirates in Men's Pants",      1817.30,1469.20,-89.00,2027.40,1703.20,110.90),
    array(
"Playa del Seville",           2703.50,-2126.90,-89.00,2959.30,-1852.80,110.90),
    array(
"Prickle Pine",                1117.40,2507.20,-89.00,1534.50,2723.20,110.90),
    array(
"Prickle Pine",                1534.50,2583.20,-89.00,1848.40,2863.20,110.90),
    array(
"Prickle Pine",                1848.40,2553.40,-89.00,1938.80,2863.20,110.90),
    array(
"Prickle Pine",                1938.80,2624.20,-89.00,2121.40,2861.50,110.90),
    array(
"Queens",                      -2411.20,373.50,0.00,-2253.50,458.40,200.00),
    array(
"Queens",                      -2533.00,458.40,0.00,-2329.30,578.30,200.00),
    array(
"Queens",                      -2593.40,54.70,0.00,-2411.20,458.40,200.00),
    array(
"Randolph Ind. Estate",        1558.00,596.30,-89.00,1823.00,823.20,110.90),
    array(
"Redsands East",               1817.30,2011.80,-89.00,2106.70,2202.70,110.90),
    array(
"Redsands East",               1817.30,2202.70,-89.00,2011.90,2342.80,110.90),
    array(
"Redsands East",               1848.40,2342.80,-89.00,2011.90,2478.40,110.90),
    array(
"Redsands West",               1236.60,1883.10,-89.00,1777.30,2142.80,110.90),
    array(
"Redsands West",               1297.40,2142.80,-89.00,1777.30,2243.20,110.90),
    array(
"Redsands West",               1377.30,2243.20,-89.00,1704.50,2433.20,110.90),
    array(
"Redsands West",               1704.50,2243.20,-89.00,1777.30,2342.80,110.90),
    array(
"Regular Tom",                 -405.70,1712.80,-3.00,-276.70,1892.70,200.00),
    array(
"Richman",                     225.10,-1292.00,-89.00,466.20,-1235.00,110.90),
    array(
"Richman",                     225.10,-1369.60,-89.00,334.50,-1292.00,110.90),
    array(
"Richman",                     321.30,-1044.00,-89.00,647.50,-860.60,110.90),
    array(
"Richman",                     321.30,-1235.00,-89.00,647.50,-1044.00,110.90),
    array(
"Richman",                     321.30,-768.00,-89.00,700.70,-674.80,110.90),
    array(
"Richman",                     321.30,-860.60,-89.00,687.80,-768.00,110.90),
    array(
"Richman",                     647.50,-1118.20,-89.00,787.40,-954.60,110.90),
    array(
"Richman",                     647.50,-954.60,-89.00,768.60,-860.60,110.90),
    array(
"Richman",                     72.60,-1235.00,-89.00,321.30,-1008.10,110.90),
    array(
"Richman",                     72.60,-1404.90,-89.00,225.10,-1235.00,110.90),
    array(
"Robada Section",                 -1119.00,1178.90,-89.00,-862.00,1351.40,110.90),
    array(
"Roca Escalante",              2237.40,2202.70,-89.00,2536.40,2542.50,110.90),
    array(
"Roca Escalante",              2536.40,2202.70,-89.00,2625.10,2442.50,110.90),
    array(
"Rockshore East",              2537.30,676.50,-89.00,2902.30,943.20,110.90),
    array(
"Rockshore West",              1997.20,596.30,-89.00,2377.30,823.20,110.90),
    array(
"Rockshore West",              2377.30,596.30,-89.00,2537.30,788.80,110.90),
    array(
"Rodeo",                       225.10,-1501.90,-89.00,334.50,-1369.60,110.90),
    array(
"Rodeo",                       225.10,-1684.60,-89.00,312.80,-1501.90,110.90),
    array(
"Rodeo",                       312.80,-1684.60,-89.00,422.60,-1501.90,110.90),
    array(
"Rodeo",                       334.50,-1406.00,-89.00,466.20,-1292.00,110.90),
    array(
"Rodeo",                       334.50,-1501.90,-89.00,422.60,-1406.00,110.90),
    array(
"Rodeo",                       422.60,-1570.20,-89.00,466.20,-1406.00,110.90),
    array(
"Rodeo",                       422.60,-1684.60,-89.00,558.00,-1570.20,110.90),
    array(
"Rodeo",                       466.20,-1385.00,-89.00,647.50,-1235.00,110.90),
    array(
"Rodeo",                       466.20,-1570.20,-89.00,558.00,-1385.00,110.90),
    array(
"Rodeo",                       558.00,-1684.60,-89.00,647.50,-1384.90,110.90),
    array(
"Rodeo",                       72.60,-1544.10,-89.00,225.10,-1404.90,110.90),
    array(
"Rodeo",                       72.60,-1684.60,-89.00,225.10,-1544.10,110.90),
    array(
"Royal Casino",                2087.30,1383.20,-89.00,2437.30,1543.20,110.90),
    array(
"San Andreas Sound",           2450.30,385.50,-100.00,2759.20,562.30,200.00),
    array(
"Santa Flora",                 -2741.00,458.40,-7.60,-2533.00,793.40,200.00),
    array(
"Santa Maria Beach",           342.60,-2173.20,-89.00,647.70,-1684.60,110.90),
    array(
"Santa Maria Beach",           72.60,-2173.20,-89.00,342.60,-1684.60,110.90),
    array(
"Shady Cabin",                 -1632.80,-2263.40,-3.00,-1601.30,-2231.70,200.00),
    array(
"Shady Creeks",                -1820.60,-2643.60,-8.00,-1226.70,-1771.60,200.00),
    array(
"Shady Creeks",                -2030.10,-2174.80,-6.10,-1820.60,-1771.60,200.00),
    array(
"Sobell Rail Yards",           2749.90,1548.90,-89.00,2923.30,1937.20,110.90),
    array(
"Spinybed",                    2121.40,2663.10,-89.00,2498.20,2861.50,110.90),
    array(
"Starfish Casino",             2162.30,1883.20,-89.00,2437.30,2012.10,110.90),
    array(
"Starfish Casino",             2437.30,1783.20,-89.00,2685.10,2012.10,110.90),
    array(
"Starfish Casino",             2437.30,1858.10,-39.00,2495.00,1970.80,60.90),
    array(
"Temple",                      1096.40,-1026.30,-89.00,1252.30,-910.10,110.90),
    array(
"Temple",                      1096.40,-1130.80,-89.00,1252.30,-1026.30,110.90),
    array(
"Temple",                      1252.30,-1026.30,-89.00,1391.00,-926.90,110.90),
    array(
"Temple",                      1252.30,-1130.80,-89.00,1378.30,-1026.30,110.90),
    array(
"Temple",                      1252.30,-926.90,-89.00,1357.00,-910.10,110.90),
    array(
"Temple",                      952.60,-1130.80,-89.00,1096.40,-937.10,110.90),
    array(
"The Camel's Toe",             2087.30,1203.20,-89.00,2640.40,1383.20,110.90),
    array(
"The Clown's Pocket",          2162.30,1783.20,-89.00,2437.30,1883.20,110.90),
    array(
"The Emerald Isle",            2011.90,2202.70,-89.00,2237.40,2508.20,110.90),
    array(
"The Farm",                    -1209.60,-1317.10,114.90,-908.10,-787.30,251.90),
    array(
"The High Roller",             1817.30,1283.20,-89.00,2027.30,1469.20,110.90),
    array(
"The Mako Span",               1664.60,401.70,0.00,1785.10,567.20,200.00),
    array(
"The Panopticon",              -947.90,-304.30,-1.10,-319.60,327.00,200.00),
    array(
"The Pink Swan",               1817.30,1083.20,-89.00,2027.30,1283.20,110.90),
    array(
"The Sherman Dam",             -968.70,1929.40,-3.00,-481.10,2155.20,200.00),
    array(
"The Strip",                   2027.40,1703.20,-89.00,2137.40,1783.20,110.90),
    array(
"The Strip",                   2027.40,1783.20,-89.00,2162.30,1863.20,110.90),
    array(
"The Strip",                   2027.40,863.20,-89.00,2087.30,1703.20,110.90),
    array(
"The Strip",                   2106.70,1863.20,-89.00,2162.30,2202.70,110.90),
    array(
"The Visage",                  1817.30,1703.20,-89.00,2027.40,1863.20,110.90),
    array(
"The Visage",                  1817.30,1863.20,-89.00,2106.70,2011.80,110.90),
    array(
"Unity Station",               1692.60,-1971.80,-20.40,1812.60,-1932.80,79.50),
    array(
"Valle Ocultado",              -936.60,2611.40,2.00,-715.90,2847.90,200.00),
    array(
"Verdant Bluffs",              1073.20,-2006.70,-89.00,1249.60,-1842.20,110.90),
    array(
"Verdant Bluffs",              1249.60,-2179.20,-89.00,1692.60,-1842.20,110.90),
    array(
"Verdant Bluffs",              930.20,-2488.40,-89.00,1249.60,-2006.70,110.90),
    array(
"Verdant Meadows",             37.00,2337.10,-3.00,435.90,2677.90,200.00),
    array(
"Verona Beach",                1046.10,-1722.20,-89.00,1161.50,-1577.50,110.90),
    array(
"Verona Beach",                1161.50,-1722.20,-89.00,1323.90,-1577.50,110.90),
    array(
"Verona Beach",                647.70,-2173.20,-89.00,930.20,-1804.20,110.90),
    array(
"Verona Beach",                851.40,-1804.20,-89.00,1046.10,-1577.50,110.90),
    array(
"Verona Beach",                930.20,-2006.70,-89.00,1073.20,-1804.20,110.90),
    array(
"Vinewood",                    647.50,-1227.20,-89.00,787.40,-1118.20,110.90),
    array(
"Vinewood",                    647.70,-1416.20,-89.00,787.40,-1227.20,110.90),
    array(
"Vinewood",                    787.40,-1130.80,-89.00,952.60,-954.60,110.90),
    array(
"Vinewood",                    787.40,-1310.20,-89.00,952.60,-1130.80,110.90),
    array(
"Whitewood Estates",           1098.30,1726.20,-89.00,1197.30,2243.20,110.90),
    array(
"Whitewood Estates",           883.30,1726.20,-89.00,1098.30,2507.20,110.90),
    array(
"Willowfield",                 1970.60,-2179.20,-89.00,2089.00,-1852.80,110.90),
    array(
"Willowfield",                 2089.00,-1989.90,-89.00,2324.00,-1852.80,110.90),
    array(
"Willowfield",                 2089.00,-2235.80,-89.00,2201.80,-1989.90,110.90),
    array(
"Willowfield",                 2201.80,-2095.00,-89.00,2324.00,-1989.90,110.90),
    array(
"Willowfield",                 2324.00,-2059.20,-89.00,2541.70,-1852.80,110.90),
    array(
"Willowfield",                 2541.70,-1941.40,-89.00,2703.50,-1852.80,110.90),
    array(
"Willowfield",                 2541.70,-2059.20,-89.00,2703.50,-1941.40,110.90),
    array(
"Yellow Bell Station",         1377.40,2600.40,-21.90,1492.40,2687.30,78.00),
    array(
"The Big Ear",                 -410.00,1403.30,-3.00,-137.90,1681.20,200.00)
);
for(
$i 0$i != sizeof($locations); $i++ )
{
    
// --------------- HERE IS WHERE YOU WOULD DEFINE THE X AND Y COORD FROM THE HOUSE STUFF
    
$x 883.30;
    
$y 1098.30;
    
$z = -3.00;
    
//---------------------------------------------------------------------------------------
    
    
if(($x >= $locations[$i][1] && $x <= $locations[$i][4]) || ($y >= $locations[$i][2] && $y <= $locations[$i][5]) || ($z >= $locations[$i][3] && $z <= $locations[$i][6]))
    {
        echo 
$locations[$i][0];
        break;
    }
}
Reply

Nothing special:

Discord Command processor

PHP Code:
#define DDC_COMMAND_PREFIX '!' 
#define DDCMD:%1(%2) \ 
    
forward ddcmd_%1(%2); \ 
    public 
ddcmd_%1(%2
#define ddcmd(%1,%2,%3) \ 
    
DDCMD:%1(%2, %3, %4
static 
bool:DDC_g_OCM false
public 
OnGameModeInit() 

    
DDC_g_OCM funcidx("DDC_OCS") != -1
    if (
funcidx("DDC_OnGameModeInit") != -1
    { 
        return 
CallLocalFunction("DDC_OnGameModeInit"""); 
    } 
    return 
1

#if defined _ALS_OnGameModeInit 
    #undef OnGameModeInit 
#else 
    #define _ALS_OnGameModeInit 
#endif 
#define OnGameModeInit DDC_OnGameModeInit 
forward DDC_OnGameModeInit(); 
public 
DDC_OnChannelMessage(DDC_Channel:channelDDC_User:author, const message[]) 

    if (
message[0] == DDC_COMMAND_PREFIX
    { 
        new function[
32], pos 0
        while (
message[++pos] > ' '
        { 
            function[
pos 1] = tolower(message[pos]); 
            if (
pos > (sizeof(function) - 1)) 
            { 
                break; 
            } 
        }  
        
format(function, sizeof(function), "ddcmd_%s", function); 
        while (
message[pos] == ' '
        { 
            
pos++; 
        } 
        if (!
message[pos]) 
        { 
            
CallLocalFunction(function, "dds"channelauthor"\1"); 
        } 
        else 
        { 
            
CallLocalFunction(function, "dds"channelauthormessage[pos]); 
        } 
    } 
    if (
DDC_g_OCM
    { 
        return 
CallLocalFunction("DCC_OCM""dds"channelauthormessage); 
    } 
    return 
1

#if defined _ALS_DDC_OnChannelMessage 
    #undef DCC_OnChannelMessage 
#else 
    #define _ALS_DDC_OnChannelMessage 
#endif 
#define DDC_OnChannelMessage DDC_OCM 
forward DDC_OCM(DCC_Channel:channelDDC_User:author, const message[]); 
Reply

27608 Random points in roads.

Function:
PHP Code:
GetRandomRoutePoint(const file_name[],&Float:x,&Float:y,&Float:z,max_points=MAX_ROUTE_RANDOM); 
Library:
route_rand.inc

Data Base (put in /scriptfiles):
route_rand.bin
Reply

send commands from discord to in-game, with or without strlib. (admin command based examples below)

note: make sure say[string] size equals the number of letters in command. for example, in //help cmd, `say` string size should be 5 (h e l p + 1) + add 2 extra heap size for "//". this makes it say[7];


When using strcmp, make sure the number of letter equals. e.g //asay = 6 letters to compare, any more will return you nothing.


non strlib example.

PHP Code:
public DCC_OnChannelMessage(DCC_Channel:channel, const author[], const message[])
{
    new 
channel_name[32];
    
DCC_GetChannelName(channelchannel_name);
    if(!
strcmp(channel_name"staff"false5)
    {
        
//discord commands
        
if(!strcmp(message"//"false2))
        {
            if (
_:g_WelcomeChannelId3 == 0)
                
g_WelcomeChannelId3 DCC_FindChannelById("your channel");
            
DCC_SendChannelMessage(g_WelcomeChannelId3"Use the following commands.");
            
DCC_SendChannelMessage(g_WelcomeChannelId3"cmd: //asay //kick //warn //printids.");
            return 
1;
        }
        if(!
strcmp(message"//asay"false6))
        {
            new 
reason[128], say[7];
            if(
sscanf(message"s[7]s[128]",say,reason)) return DCC_SendChannelMessage(g_WelcomeChannelId3"Command error on sscanf.");
            
DCC_SendChannelMessage(g_WelcomeChannelId3sprintf("(Admin Message)%s: %s",author,reason));
            
SendClientMessageToAll(COLOR_LIMEsprintf("(Admin Message)%s : %s",author,reason));
        }
        if(!
strcmp(message"//kick"false6))
        {
            new 
reason[128], idsay[7];
            if(
sscanf(message"s[7]us[128]",say,id,reason)) return DCC_SendChannelMessage(g_WelcomeChannelId3"Command error on sscanf.");
            
DCC_SendChannelMessage(g_WelcomeChannelId3sprintf("Kicked %s(%d)",GetPlayerNameEx(id),id));
            new 
kickfor[128];
            
format(kickfor,sizeof(kickfor),"%d %s",id,reason);
            
cmd_kick(65535,kickfor);
        }
        if(!
strcmp(message"//warn"false6))
        {
            new 
reason[128], idsay[7];
            if(
sscanf(message"s[7]us[128]",say,id,reason)) return DCC_SendChannelMessage(g_WelcomeChannelId3"Command error on sscanf.");
            
DCC_SendChannelMessage(g_WelcomeChannelId3sprintf("Warned %s(%d)",GetPlayerNameEx(id),id));
            new 
warnfor[128];
            
format(warnfor,sizeof(warnfor),"%d %s",id,reason);
            
cmd_warn(65535,warnfor);
        }
        if(!
strcmp(message"//printids"false11))
        {
            
DCC_SendChannelMessage(g_WelcomeChannelId3"Player List");
            foreach(new 
Player)
            {
                
DCC_SendChannelMessage(g_WelcomeChannelId3sprintf("%s(%d)",GetPlayerNameEx(i),i));
            }
        }
    }
    return 
1;

Reply

PHP Code:
stock PutPlayerInFreeSeat(playerid,vehicleid)
{
    new 
countiSeatoccupied[11];
    for(new 
s=3;s<10;s++)
    {
    foreach(new 
Player)
    {
        if(
GetPlayerVehicleID(i) == vehicleid)
        {
            
count++;
            
iSeat GetPlayerVehicleSeat(i);
            if(
== iSeat)
            {
                
occupied[s] = 1;
            }
        }
        
         if(
!= iSeat && == Iter_Last(Player) && occupied[s] == 0)
        {
            return 
PutPlayerInVehicle(playerid,vehicleid,s);
        }
    }
    }
    
SCM(playerid,COLOR_FIREBRICK,"Vehicle is full of passengers.");
    return 
1;

Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)