Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 2815 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

(redaguota)

#define     FILTERSCRIPT
#include     <a_samp>
#include    <zcmd>           
#include    <sqlitei>         
#include    <sscanf2>        
#include    <streamer>         

// internal defines
#define     MAX_ZONE_NAME       (28)
#define     MAX_GIFT_BOXES      (200)
#define     MAX_PUMPKINS        (200)

// event config
#define     I_WANT_HATS_DAMMIT      
#define     PUMPKIN_DROPS            
#define     ATTACH_INDEX        (8)     // for SetPlayerAttachedObject

// gift box config
#define     GIFT_AMOUNT         (3)   
#define     GIFT_INTERVAL        (600)  
#define     GIFT_LIFETIME       (300)  
#define     GIFT_MIN_MONEY      (500)
#define     GIFT_MAX_MONEY      (2000)
#define     GIFT_MIN_CANDY      (3)
#define     GIFT_MAX_CANDY      (9)

// pumpkin config
#define     PUMPKIN_LIFETIME    (120) 
#define     PUMPKIN_CANDY       (3)   

// shop config
#define     MEDKIT_PRICE        (5)    
#define     ARMOR_PRICE         (5)    
#define     GIFT_PRICE          (5000) 
#define     GIFT_PRICE_CANDY    (10)  

enum    _:E_DIALOG
{
    DIALOG_UNUSED = 7785,
    DIALOG_CANDY_SHOP,
    DIALOG_BUY_GIFT,
    DIALOG_BUY_WEAPON
}

enum    E_SHOP_WEAPONS
{
    WeaponID,
    WeaponAmmo,
    WeaponPrice
}

enum     E_SAZONE_MAIN
{
    SAZONE_NAME[MAX_ZONE_NAME],
    Float: SAZONE_AREA[6]
}

enum    E_HALLOWEEN
{
    DropTimeLeft,
    EventTimer
}

enum    E_GIFT_BOX_COORDS
{
    Float: GiftBoxSpawnX,
    Float: GiftBoxSpawnY,
    Float: GiftBoxSpawnZ
}

enum    E_GIFT_BOX
{
    Float: GiftBoxX,
    Float: GiftBoxY,
    Float: GiftBoxZ,
    GiftBoxTimeLeft,
    GiftBoxPickup,
    Text3D: GiftBoxLabel,
    GiftBoxTimer,
    bool: GiftBoxExists
}

enum    E_PUMPKIN
{
    PumpkinTimeLeft,
    PumpkinPickup,
    Text3D: PumpkinLabel,
    PumpkinTimer,
    bool: PumpkinExists
}

new
    DB: HalloweenDB,
    DBStatement: LoadFromTable,
    DBStatement: InsertToTable,
    DBStatement: SaveToTable,
    DBStatement: TopCandies;

new
    HalloweenData[E_HALLOWEEN];

new
    GiftBoxData[MAX_GIFT_BOXES][E_GIFT_BOX];

new
    PumpkinData[MAX_PUMPKINS][E_PUMPKIN];

new
    Text: HalloweenText,
    Text: PumpkinIcon,
    Text: TimerText,
    Text: TimerIcon;
    
new
    CandyCount[MAX_PLAYERS],
    PlayerText: CandyText[MAX_PLAYERS];

static const
    ShopWeapons[][E_SHOP_WEAPONS] = {
        // weapon id, ammo, price (candy)
        {WEAPON_BAT, 1, 1},
        {WEAPON_KNIFE, 1, 1},
        {WEAPON_DEAGLE, 50, 20},
        {WEAPON_SHOTGUN, 25, 10},
        {WEAPON_AK47, 90, 15},
        {WEAPON_RIFLE, 25, 15},
        {WEAPON_MINIGUN, 100, 250}
    };

static const
    GiftBoxCoords[][E_GIFT_BOX_COORDS] = {
        {2743.0, 1316.0, 8.0},
        {2168.66, 2267.96, 15.34},
        {2408.0, 1389.0, 22.0},
        {2034.0, 842.0, 10.0},
        {2096.0, 1287.0, 10.8},
        {1987.0, 1543.0, 16.0},
        {1854.0, 912.0, 10.8},
        {2540.38, 2527.85, 10.39},
        {1548.02, 1024.47, 10.39},
        {1592.91, 2053.83, 10.26},
        {1971.29, 2330.26, 10.41},
        {1700.74, 1792.7, 10.41},
        {2581.0, -1491.0, 24.0},
        {2296.0, -1696.0, 14.0},
        {2273.0, -1099.0, 38.0},
        {2716.0, -1048.0, 66.0},
        {2614.0, -2496.0, 33.0},
        {1183.85, -1250.68, 14.7},
        {1970.0, -1158.0, 21.0},
        {734.0, -1137.0, 18.0},
        {2553.76, -2464.31, 13.62},
        {1204.06, -1613.89, 13.28},
        {611.21, -1459.63, 14.01},
        {1116.67, -719.91, 100.17},
        {-1903.1, -466.44, 25.18},
        {-2657.0, -144.0, 4.0},
        {-2454.0, -166.0, 35.0},
        {-2009.0, 1227.0, 32.0},
        {-2120.0, 96.39, 39.0},
        {-2411.0, -334.0, 37.0},
        {-1690.0, 450.0, 13.0},
        {-1991.26, -1144.13, 29.69},
        {-2636.13, -492.83, 70.09},
        {-2022.68, 345.98, 35.17},
        {-2683.2, 784.13, 49.98},
        {-1820.67, -154.12, 9.4},
        {-736.0, 66.0, 24.0},
        {262.33, -149.12, 1.58},
        {1643.0, 264.0, 20.0},
        {601.98, 2150.38, 39.41},
        {-1407.0, -2039.0, 1.0},
        {-2156.0, -2371.0, 31.0},
        {-419.25, 1362.36, 12.21},
        {629.04, 2842.83, 25.21},
        {690.49, -209.59, 25.6},
        {88.82, -125.1, 0.85},
        {215.69, 1089.1, 16.4},
        {-2305.24, 2310.11, 4.98},
        {-213.61, 2717.44, 62.68}
    };


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

GetZoneName(Float: x, Float: y, Float: z)
{
    new zone[28];
     for(new i = 0; i < sizeof(SAZones); i++)
     {
        if(x >= SAZones[SAZONE_AREA][0] && x <= SAZones[SAZONE_AREA][3] && y >= SAZones[SAZONE_AREA][1] && y <= SAZones[SAZONE_AREA][4] && z >= SAZones[SAZONE_AREA][2] && z <= SAZones[SAZONE_AREA][5])
        {
            strcat(zone, SAZones[SAZONE_NAME]);
            return zone;
        }
    }

    strcat(zone, "Unknown");
    return zone;
}

GetCityName(Float: x, Float: y, Float: z)
{
    new city[28];
    for(new i = 356; i < sizeof(SAZones); i++)
    {
        if(x >= SAZones[SAZONE_AREA][0] && x <= SAZones[SAZONE_AREA][3] && y >= SAZones[SAZONE_AREA][1] && y <= SAZones[SAZONE_AREA][4] && z >= SAZones[SAZONE_AREA][2] && z <= SAZones[SAZONE_AREA][5])
        {
            strcat(city, SAZones[SAZONE_NAME]);
            return city;
        }
    }

    strcat(city, "San Andreas");
    return city;
}

RandomEx(min, max)
    return random(max - min) + min;

ReturnPlayerName(playerid)
{
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    return name;
}

formatTime(time)
{
    new string[15];
    format(string, sizeof(string), "%02d:%02d", time / 60, time % 60);
    return string;
}

/* Player Functions */
Halloween_InitPlayer(playerid)
{
    #if defined I_WANT_HATS_DAMMIT
    SetPlayerAttachedObject(playerid, ATTACH_INDEX, 19528, 2, 0.091, 0.025, 0.0, 0.0, 0.0, -26.1, 1.227, 1.395, 1.4);
    #endif

    TextDrawShowForPlayer(playerid, HalloweenText);
    TextDrawShowForPlayer(playerid, PumpkinIcon);
    TextDrawShowForPlayer(playerid, TimerText);
    TextDrawShowForPlayer(playerid, TimerIcon);

    CandyCount[playerid] = 0;

    CandyText[playerid] = CreatePlayerTextDraw(playerid, 499.000000, 98.000000, "000000000");
    PlayerTextDrawBackgroundColor(playerid, CandyText[playerid], 255);
    PlayerTextDrawFont(playerid, CandyText[playerid], 3);
    PlayerTextDrawLetterSize(playerid, CandyText[playerid], 0.580000, 2.199999);
    PlayerTextDrawColor(playerid, CandyText[playerid], 0x9158B6FF);
    PlayerTextDrawSetOutline(playerid, CandyText[playerid], 1);
    PlayerTextDrawSetProportional(playerid, CandyText[playerid], 1);
    PlayerTextDrawSetSelectable(playerid, CandyText[playerid], 0);
    PlayerTextDrawShow(playerid, CandyText[playerid]);
    
    // load from database
    stmt_bind_value(LoadFromTable, 0, DB::TYPE_STRING, ReturnPlayerName(playerid));
    stmt_bind_result_field(LoadFromTable, 0, DB::TYPE_INTEGER, CandyCount[playerid]);

    if(stmt_execute(LoadFromTable))
    {
        if(stmt_rows_left(LoadFromTable) > 0) {
            stmt_fetch_row(LoadFromTable);
            
            new string[10];
            format(string, sizeof(string), "%09d", CandyCount[playerid]);
            PlayerTextDrawSetString(playerid, CandyText[playerid], string);
        }else{
            stmt_bind_value(InsertToTable, 0, DB::TYPE_STRING, ReturnPlayerName(playerid));
            stmt_execute(InsertToTable);
        }
    }
    
    return 1;
}

Halloween_ChangeCandy(playerid, amount)
{
    CandyCount[playerid] += amount;
    
    new string[10];
    format(string, sizeof(string), "%09d", CandyCount[playerid]);
    PlayerTextDrawSetString(playerid, CandyText[playerid], string);
    
    // save to database
    stmt_bind_value(SaveToTable, 0, DB::TYPE_INTEGER, CandyCount[playerid]);
    stmt_bind_value(SaveToTable, 1, DB::TYPE_STRING, ReturnPlayerName(playerid));
    stmt_execute(SaveToTable);
    return 1;
}

Halloween_ShowShopMenu(playerid)
{
    new string[144];
    format(string, sizeof(string), "Item\tPrice\n");
    format(string, sizeof(string), "%sMedkit\t{9158B6}C%d\nBody Armor\t{9158B6}C%d\nGift Box\t{2ECC71}$%d {FFFFFF}/ {9158B6}C%d\nWeapons", string, MEDKIT_PRICE, ARMOR_PRICE, GIFT_PRICE, GIFT_PRICE_CANDY);
    ShowPlayerDialog(playerid, DIALOG_CANDY_SHOP, DIALOG_STYLE_TABLIST_HEADERS, "Saldainiu parduotuvė", string, "Pasirinkti", "Grižti");
    return 1;
}

Halloween_ShowGiftMenu(playerid)
{
    new string[70];
    format(string, sizeof(string), "Buy Using Money {2ECC71}($%d)\nBuy Using Candy {9158B6}(C%d)", GIFT_PRICE, GIFT_PRICE_CANDY);
    ShowPlayerDialog(playerid, DIALOG_BUY_GIFT, DIALOG_STYLE_LIST, "Candy Shop » {FFFFFF}Dovanu Dežė", string, "Pirkti", "Gryžti");
    return 1;
}

Halloween_ShowWeaponsMenu(playerid)
{
    new string[256], w_name[32];
    format(string, sizeof(string), "Weapon\tAmmo\tPrice\n");
    
    for(new i; i < sizeof(ShopWeapons); i++)
    {
        GetWeaponName(ShopWeapons[WeaponID], w_name, sizeof(w_name));
        format(string, sizeof(string), "%s%s\t%d\t{9158B6}C%d\n", string, w_name, ShopWeapons[WeaponAmmo], ShopWeapons[WeaponPrice]);
    }
    
    ShowPlayerDialog(playerid, DIALOG_BUY_WEAPON, DIALOG_STYLE_TABLIST_HEADERS, "Saldainiu Parduotuvė » {FFFFFF}Ginklai", string, "Buy", "Back");
    return 1;
}

#if defined PUMPKIN_DROPS
/* Pumpkin Code */
Halloween_CreatePumpkin(Float: x, Float: y, Float: z, virtualworld, interior)
{
    new id = Pumpkin_FindFreeID();
    if(id == -1) return -1;
    z += 0.15;

    PumpkinData[id][PumpkinTimeLeft] = PUMPKIN_LIFETIME;
    PumpkinData[id][PumpkinPickup] = CreateDynamicPickup(19320, 1, x, y, z, virtualworld, interior);
    Streamer_SetIntData(STREAMER_TYPE_PICKUP, PumpkinData[id][PumpkinPickup], E_STREAMER_EXTRA_ID, id);

    new string[50];
    format(string, sizeof(string), "Pumpkin\n\n{FFFFFF}It's filled with candy!\n%s", formatTime(PumpkinData[id][PumpkinTimeLeft]));
    PumpkinData[id][PumpkinLabel] = CreateDynamic3DTextLabel(string, 0xFFA944FF, x, y, z, 10.0, _, _, 1, virtualworld, interior);

    PumpkinData[id][PumpkinTimer] = SetTimerEx("Pumpkin_Countdown", 1000, true, "i", id);
    PumpkinData[id][PumpkinExists] = true;
    return id;
}

Pumpkin_FindFreeID()
{
    for(new i; i < MAX_PUMPKINS; i++) if(!PumpkinData[PumpkinExists]) return i;
    return -1;
}

Pumpkin_Destroy(id)
{
    if(!(0 <= id <= MAX_PUMPKINS) || !PumpkinData[id][PumpkinExists]) return -1;
    KillTimer(PumpkinData[id][PumpkinTimer]);
    DestroyDynamicPickup(PumpkinData[id][PumpkinPickup]);
    DestroyDynamic3DTextLabel(PumpkinData[id][PumpkinLabel]);
    
    PumpkinData[id][PumpkinTimeLeft] = 0;
    PumpkinData[id][PumpkinPickup] = PumpkinData[id][PumpkinTimer] = -1;
    PumpkinData[id][PumpkinLabel] = Text3D: -1;
    PumpkinData[id][PumpkinExists] = false;
    return 1;
}

forward Pumpkin_Countdown(id);
public Pumpkin_Countdown(id)
{
    new string[50];
    if(PumpkinData[id][PumpkinTimeLeft] > 1) {
        PumpkinData[id][PumpkinTimeLeft]--;
        
        format(string, sizeof(string), "Pumpkin\n\n{FFFFFF}It's filled with candy!\n%s", formatTime(PumpkinData[id][PumpkinTimeLeft]));
        UpdateDynamic3DTextLabelText(PumpkinData[id][PumpkinLabel], 0xFFA944FF, string);
    }else if(PumpkinData[id][PumpkinTimeLeft] == 1) {
        Pumpkin_Destroy(id);
    }
    
    return 1;
}
#endif

/* Gift Box Code */
Halloween_CreateGiftBox(Float: x, Float: y, Float: z, virtualworld, interior)
{
    new id = GiftBox_FindFreeID();
    if(id == -1) return -1;
    z += 0.15;

    GiftBoxData[id][GiftBoxX] = x;
    GiftBoxData[id][GiftBoxY] = y;
    GiftBoxData[id][GiftBoxZ] = z;
    GiftBoxData[id][GiftBoxTimeLeft] = GIFT_LIFETIME;
    GiftBoxData[id][GiftBoxPickup] = CreateDynamicPickup(19054 + random(5), 1, x, y, z, virtualworld, interior);
    Streamer_SetIntData(STREAMER_TYPE_PICKUP, GiftBoxData[id][GiftBoxPickup], E_STREAMER_EXTRA_ID, id);

    new string[128];
    format(string, sizeof(string), "Dovanu Dežėn\n{FFFFFF}Staigmėna viduje\n%s", formatTime(GiftBoxData[id][GiftBoxTimeLeft]));
    GiftBoxData[id][GiftBoxLabel] = CreateDynamic3DTextLabel(string, 0xFFA944FF, x, y, z, 10.0, _, _, 1, virtualworld, interior);

    GiftBoxData[id][GiftBoxTimer] = SetTimerEx("GiftBox_Countdown", 1000, true, "i", id);
    GiftBoxData[id][GiftBoxExists] = true;
    
    format(string, sizeof(string), "HALLOWEEN: {FFFFFF}A gift box dropped at {FFA944}%s, %s!", GetZoneName(x, y, z), GetCityName(x, y, z));
    SendClientMessageToAll(0x9158B6FF, string);
    return id;
}

GiftBox_FindFreeID()
{
    for(new i; i < MAX_GIFT_BOXES; i++) if(!GiftBoxData[GiftBoxExists]) return i;
    return -1;
}

GiftBox_Destroy(id)
{
    if(!(0 <= id <= MAX_GIFT_BOXES) || !GiftBoxData[id][GiftBoxExists]) return -1;
    KillTimer(GiftBoxData[id][GiftBoxTimer]);
    DestroyDynamicPickup(GiftBoxData[id][GiftBoxPickup]);
    DestroyDynamic3DTextLabel(GiftBoxData[id][GiftBoxLabel]);

    GiftBoxData[id][GiftBoxTimeLeft] = 0;
    GiftBoxData[id][GiftBoxPickup] = GiftBoxData[id][GiftBoxTimer] = -1;
    GiftBoxData[id][GiftBoxLabel] = Text3D: -1;
    GiftBoxData[id][GiftBoxExists] = false;
    return 1;
}

forward GiftBox_Countdown(id);
public GiftBox_Countdown(id)
{
    new string[54];
    if(GiftBoxData[id][GiftBoxTimeLeft] > 1) {
        GiftBoxData[id][GiftBoxTimeLeft]--;

        format(string, sizeof(string), "Gift Box\n\n{FFFFFF}It has a surprise inside!\n%s", formatTime(GiftBoxData[id][GiftBoxTimeLeft]));
        UpdateDynamic3DTextLabelText(GiftBoxData[id][GiftBoxLabel], 0xFFA944FF, string);
    }else if(GiftBoxData[id][GiftBoxTimeLeft] == 1) {
        GiftBox_Destroy(id);
    }

    return 1;
}

/* Drop Timer */
forward Halloween_GiftDrop();
public Halloween_GiftDrop()
{
    if(HalloweenData[DropTimeLeft] > 1) {
        HalloweenData[DropTimeLeft]--;
        
        TextDrawSetString(TimerText, formatTime(HalloweenData[DropTimeLeft]));
    }else if(HalloweenData[DropTimeLeft] == 1) {
        new id;
        for(new i; i < GIFT_AMOUNT; i++)
        {
            id = random(sizeof(GiftBoxCoords));
            Halloween_CreateGiftBox(GiftBoxCoords[id][GiftBoxSpawnX], GiftBoxCoords[id][GiftBoxSpawnY], GiftBoxCoords[id][GiftBoxSpawnZ], -1, -1);
        }

        HalloweenData[DropTimeLeft] = GIFT_INTERVAL;
    }
    
    return 1;
}

/* Callbacks */
public OnFilterScriptInit()
{
    // database
    HalloweenDB = db_open("halloween.db");
    db_query(HalloweenDB, "CREATE TABLE IF NOT EXISTS halloween_players (Name TEXT, Candy INTEGER)");
    
    // prepare queries
    LoadFromTable = db_prepare(HalloweenDB, "SELECT Candy FROM halloween_players WHERE Name=?");
    InsertToTable = db_prepare(HalloweenDB, "INSERT INTO halloween_players (Name) VALUES (?)");
    SaveToTable = db_prepare(HalloweenDB, "UPDATE halloween_players SET Candy=? WHERE Name=?");
    TopCandies = db_prepare(HalloweenDB, "SELECT * FROM halloween_players ORDER BY Candy DESC LIMIT 15");
    
    // init
    HalloweenData[DropTimeLeft] = GIFT_INTERVAL;
    HalloweenData[EventTimer] = SetTimer("Halloween_GiftDrop", 1000, true);
    
    for(new i; i < MAX_GIFT_BOXES; i++)
    {
        GiftBoxData[GiftBoxPickup] = GiftBoxData[GiftBoxTimer] = -1;
        GiftBoxData[GiftBoxLabel] = Text3D: -1;
    }
    
    for(new i; i < MAX_PUMPKINS; i++)
    {
        PumpkinData[PumpkinPickup] = PumpkinData[PumpkinTimer] = -1;
        PumpkinData[PumpkinLabel] = Text3D: -1;
    }
    
    // textdraws
    HalloweenText = TextDrawCreate(515.000000, 7.000000, "Happy Halloween!");
    TextDrawBackgroundColor(HalloweenText, 255);
    TextDrawFont(HalloweenText, 2);
    TextDrawLetterSize(HalloweenText, 0.210000, 1.100000);
    TextDrawColor(HalloweenText, 0xFF9922FF);
    TextDrawSetOutline(HalloweenText, 1);
    TextDrawSetProportional(HalloweenText, 1);
    TextDrawSetSelectable(HalloweenText, 0);

    PumpkinIcon = TextDrawCreate(486.000000, -20.000000, "_");
    TextDrawBackgroundColor(PumpkinIcon, 0);
    TextDrawFont(PumpkinIcon, 5);
    TextDrawLetterSize(PumpkinIcon, 0.210000, 1.100000);
    TextDrawColor(PumpkinIcon, -1);
    TextDrawSetOutline(PumpkinIcon, 1);
    TextDrawSetProportional(PumpkinIcon, 1);
    TextDrawUseBox(PumpkinIcon, 1);
    TextDrawBoxColor(PumpkinIcon, 255);
    TextDrawTextSize(PumpkinIcon, 40.000000, 40.000000);
    TextDrawSetPreviewModel(PumpkinIcon, 19320);
    TextDrawSetPreviewRot(PumpkinIcon, 0.000000, 0.000000, 0.000000, 0.550000);
    TextDrawSetSelectable(PumpkinIcon, 0);
    
    TimerText = TextDrawCreate(557.000000, 28.000000, formatTime(GIFT_INTERVAL));
    TextDrawBackgroundColor(TimerText, 255);
    TextDrawFont(TimerText, 1);
    TextDrawLetterSize(TimerText, 0.190000, 1.000000);
    TextDrawColor(TimerText, -1);
    TextDrawSetOutline(TimerText, 1);
    TextDrawSetProportional(TimerText, 1);
    TextDrawSetSelectable(TimerText, 0);
    
    TimerIcon = TextDrawCreate(545.000000, 25.000000, "ld_grav:timer");
    TextDrawBackgroundColor(TimerIcon, 255);
    TextDrawFont(TimerIcon, 4);
    TextDrawLetterSize(TimerIcon, 0.500000, 1.000000);
    TextDrawColor(TimerIcon, -1);
    TextDrawSetOutline(TimerIcon, 1);
    TextDrawSetProportional(TimerIcon, 1);
    TextDrawUseBox(TimerIcon, 1);
    TextDrawBoxColor(TimerIcon, 255);
    TextDrawTextSize(TimerIcon, 11.000000, 13.000000);
    TextDrawSetSelectable(TimerIcon, 0);
    
    // load player data
    for(new i, maxp = GetPlayerPoolSize(); i <= maxp; i++) if(IsPlayerConnected(i)) Halloween_InitPlayer(i);
    return 1;
}

public OnFilterScriptExit()
{
    // remove textdraws
    TextDrawHideForAll(HalloweenText);
    TextDrawHideForAll(PumpkinIcon);
    TextDrawHideForAll(TimerText);
    TextDrawHideForAll(TimerIcon);
    
    TextDrawDestroy(HalloweenText);
    TextDrawDestroy(PumpkinIcon);
    TextDrawDestroy(TimerText);
    TextDrawDestroy(TimerIcon);

    // remove player stuff
    for(new i, maxp = GetPlayerPoolSize(); i <= maxp; i++)
    {
        if(!IsPlayerConnected(i)) continue;
        PlayerTextDrawDestroy(i, CandyText);
        
        #if defined I_WANT_HATS_DAMMIT
        RemovePlayerAttachedObject(i, ATTACH_INDEX);
        #endif
    }
    
    // close database
    db_close(HalloweenDB);
    return 1;
}

public OnPlayerConnect(playerid)
{
    // load player data
    Halloween_InitPlayer(playerid);
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    CandyCount[playerid] = 0;
    return 1;
}

#if defined I_WANT_HATS_DAMMIT
public OnPlayerSpawn(playerid)
{
    SetPlayerAttachedObject(playerid, ATTACH_INDEX, 19528, 2, 0.091, 0.025, 0.0, 0.0, 0.0, -26.1, 1.227, 1.395, 1.4);
    return 1;
}
#endif

#if defined PUMPKIN_DROPS
public OnPlayerDeath(playerid, killerid, reason)
{
    if(IsPlayerConnected(killerid))
    {
        new Float: x, Float: y, Float: z;
        GetPlayerPos(playerid, x, y, z);
        Halloween_CreatePumpkin(x, y, z, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid));
    }
    
    return 1;
}
#endif

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(dialogid)
    {
        case DIALOG_CANDY_SHOP:
        {
            if(response)
            {
                new string[96];
                
                switch(listitem)
                {
                    // medkit
                    case 0:
                    {
                        if(MEDKIT_PRICE > CandyCount[playerid]) return SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}Tu neturi tiek saldainiu."), Halloween_ShowShopMenu(playerid);
                        SetPlayerHealth(playerid, 100.0);
                        Halloween_ChangeCandy(playerid, -MEDKIT_PRICE);
                        
                        format(string, sizeof(string), "CANDY SHOP: {FFFFFF}Nusipirkau {FFA944}medkit {FFFFFF}naudodamas {9158B6}C%d.", MEDKIT_PRICE);
                        SendClientMessage(playerid, 0x9158B6FF, string);
                        Halloween_ShowShopMenu(playerid);
                    }
                    
                    // body armor
                    case 1:
                    {
                        if(ARMOR_PRICE > CandyCount[playerid]) return SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}T u neturi tiek saldainiu."), Halloween_ShowShopMenu(playerid);
                        SetPlayerArmour(playerid, 100.0);
                        Halloween_ChangeCandy(playerid, -ARMOR_PRICE);

                        format(string, sizeof(string), "CANDY SHOP: {FFFFFF}Nusipirkau {FFA944}šarvu {FFFFFF}naudodamas {9158B6}C%d.", ARMOR_PRICE);
                        SendClientMessage(playerid, 0x9158B6FF, string);
                        Halloween_ShowShopMenu(playerid);
                    }
                    
                    // gift box
                    case 2: Halloween_ShowGiftMenu(playerid);
                    
                    // weapons
                    case 3: Halloween_ShowWeaponsMenu(playerid);
                }
            }
            
            return 1;
        }
        
        case DIALOG_BUY_GIFT:
        {
            if(!response) return Halloween_ShowShopMenu(playerid);
            switch(listitem)
            {
                // use money
                case 0:
                {
                    if(GIFT_PRICE > GetPlayerMoney(playerid)) return SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}Tu neturi tiek pinigu."), Halloween_ShowGiftMenu(playerid);
                    new Float: x, Float: y, Float: z, Float: a;
                    GetPlayerPos(playerid, x, y, z);
                    GetPlayerFacingAngle(playerid, a);
                    
                    x += (2.0 * floatsin(-a, degrees));
                    y += (2.0 * floatcos(-a, degrees));
                    
                    if(Halloween_CreateGiftBox(x, y, z, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid)) != -1)
                    {
                        GivePlayerMoney(playerid, -GIFT_PRICE);
                        Halloween_ShowGiftMenu(playerid);
                    }
                }
                
                // use candy
                case 1:
                {
                    if(GIFT_PRICE_CANDY > CandyCount[playerid]) return SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}Tu neturi tiek saldainiu."), Halloween_ShowGiftMenu(playerid);
                    new Float: x, Float: y, Float: z, Float: a;
                    GetPlayerPos(playerid, x, y, z);
                    GetPlayerFacingAngle(playerid, a);

                    x += (2.0 * floatsin(-a, degrees));
                    y += (2.0 * floatcos(-a, degrees));

                    if(Halloween_CreateGiftBox(x, y, z, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid)) != -1)
                    {
                        Halloween_ChangeCandy(playerid, -GIFT_PRICE_CANDY);
                        Halloween_ShowGiftMenu(playerid);
                    }
                }
            }
            
            return 1;
        }
        
        case DIALOG_BUY_WEAPON:
        {
            if(!response) return Halloween_ShowShopMenu(playerid);
            new price = ShopWeapons[listitem][WeaponPrice];
            if(price > CandyCount[playerid]) return SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}Tu neturi saldainiu."), Halloween_ShowWeaponsMenu(playerid);
            GivePlayerWeapon(playerid, ShopWeapons[listitem][WeaponID], ShopWeapons[listitem][WeaponAmmo]);
            Halloween_ChangeCandy(playerid, -price);
            
            new string[128], w_name[32];
            GetWeaponName(ShopWeapons[listitem][WeaponID], w_name, sizeof(w_name));
            format(string, sizeof(string), "CANDY SHOP: {FFFFFF}Bought {FFA944}%s {FFFFFF}using {9158B6}C%d.", w_name, price);
            SendClientMessage(playerid, 0x9158B6FF, string);
            Halloween_ShowWeaponsMenu(playerid);
            return 1;
        }
    }
    
    return 0;
}

public OnPlayerPickUpDynamicPickup(playerid, STREAMER_TAG_PICKUP pickupid)
{
    switch(Streamer_GetIntData(STREAMER_TYPE_PICKUP, pickupid, E_STREAMER_MODEL_ID))
    {
        // gift boxes
        case 19054..19058:
        {
            new id = Streamer_GetIntData(STREAMER_TYPE_PICKUP, pickupid, E_STREAMER_EXTRA_ID), string[144];
            format(string, sizeof(string), "HALLOWEEN: {FFFFFF}%s(%d) has found a gift box at {FFA944}%s, %s!", ReturnPlayerName(playerid), playerid, GetZoneName(GiftBoxData[id][GiftBoxX], GiftBoxData[id][GiftBoxY], GiftBoxData[id][GiftBoxZ]), GetCityName(GiftBoxData[id][GiftBoxX], GiftBoxData[id][GiftBoxY], GiftBoxData[id][GiftBoxZ]));
            SendClientMessageToAll(0x9158B6FF, string);
            
            switch(random(11))
            {
                case 0..2:
                {
                    SetPlayerHealth(playerid, 100.0);
                    SendClientMessage(playerid, 0x9158B6FF, "HALLOWEEN: {FFFFFF}Rado {FFA944}medkit.");
                }
                
                case 4, 5:
                {
                    SetPlayerArmour(playerid, 100.0);
                    SendClientMessage(playerid, 0x9158B6FF, "HALLOWEEN: {FFFFFF}Rado {FFA944}šarvu.");
                }
                
                case 6..8:
                {
                    new money = RandomEx(GIFT_MIN_MONEY, GIFT_MAX_MONEY);
                    GivePlayerMoney(playerid, money);
                    
                    format(string, sizeof(string), "HALLOWEEN: {FFFFFF}Found {2ECC71}$%d.", money);
                    SendClientMessage(playerid, 0x9158B6FF, string);
                }
                
                default:
                {
                    new candy = RandomEx(GIFT_MIN_CANDY, GIFT_MAX_CANDY);
                    Halloween_ChangeCandy(playerid, candy);
                    
                    format(string, sizeof(string), "HALLOWEEN: {FFFFFF}Rado {FFA944}%d saldainiu.", candy);
                    SendClientMessage(playerid, 0x9158B6FF, string);
                }
            }
            
            GiftBox_Destroy(id);
        }
        
        #if defined PUMPKIN_DROPS
        // pumpkin
        case 19320:
        {
            new id = Streamer_GetIntData(STREAMER_TYPE_PICKUP, pickupid, E_STREAMER_EXTRA_ID);
            Halloween_ChangeCandy(playerid, PUMPKIN_CANDY);
            Pumpkin_Destroy(id);
        }
        #endif
    }
    
    return 1;
}

CMD:giftboxes(playerid, params[])
{
    new string[2048], found;
    format(string, sizeof(string), "Area\tCity\tTime Left\n");
    
    for(new i; i < MAX_GIFT_BOXES; i++)
    {
        if(!GiftBoxData[GiftBoxExists]) continue;
        format(string, sizeof(string), "%s%s\t%s\t%s\n", string, GetZoneName(GiftBoxData[GiftBoxX], GiftBoxData[GiftBoxY], GiftBoxData[GiftBoxZ]), GetCityName(GiftBoxData[GiftBoxX], GiftBoxData[GiftBoxY], GiftBoxData[GiftBoxZ]), formatTime(GiftBoxData[GiftBoxTimeLeft]));
        found++;
    }
    
    if(found > 0) {
        new title[24];
        format(title, sizeof(title), "Gift Boxes (%d Found)", found);
        ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_TABLIST_HEADERS, title, string, "Close", "");
    }else{
        ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "Dovanu Dežes", "Nerasta dovanu dežė.", "Close", "");
    }
    
    return 1;
}

CMD:topcollectors(playerid, params[])
{
    new name[MAX_PLAYER_NAME], candies;
    stmt_bind_result_field(TopCandies, 0, DB::TYPE_STRING, name, MAX_PLAYER_NAME);
    stmt_bind_result_field(TopCandies, 1, DB::TYPE_INTEGER, candies);

    if(stmt_execute(TopCandies))
    {
        new idx, string[700], colors[] = {0xF1C40FFF, 0xA8A8A8FF, 0x965A38FF};
        format(string, sizeof(string), "#\tName\tCandies\n");
        
        while(stmt_fetch_row(TopCandies))
        {
            if(idx < 3) {
                format(string, sizeof(string), "%s{%06x}%d\t{%06x}%s\t{%06x}%d\n", string, colors[idx] >>> 8, idx + 1, colors[idx] >>> 8, name, colors[idx] >>> 8, candies);
            }else{
                format(string, sizeof(string), "%s%d\t%s\t%d\n", string, idx + 1, name, candies);
            }
            
            idx++;
        }
        
        ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_TABLIST_HEADERS, "Top Candy Collectors", string, "Close", "");
    }
    
    return 1;
}

CMD:candyshop(playerid, params[])
{
    Halloween_ShowShopMenu(playerid);
    return 1;
}

/* Admin Commands */
CMD:givecandy(playerid, params[])
{
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}Tik RCON administratoriui.");
    new id, amount;
    if(sscanf(params, "ui", id, amount)) return SendClientMessage(playerid, 0xF39C12FF, "SYNTAX: {FFFFFF}/giveplayercandy [player] [amount]");
    if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}Žaidejas atsijunges.");
    Halloween_ChangeCandy(id, amount);
    
    new string[128];
    format(string, sizeof(string), "HALLOWEEN: {FFFFFF}You gave %s(%d) {9158B6}C%d.", ReturnPlayerName(id), id, amount);
    SendClientMessage(playerid, 0x9158B6FF, string);
    
    format(string, sizeof(string), "HALLOWEEN: {FFFFFF}Admin %s(%d) dave visiems {9158B6}C%d.", ReturnPlayerName(playerid), playerid, amount);
    SendClientMessage(id, 0x9158B6FF, string);
    return 1;
}

CMD:giveallcandy(playerid, params[])
{
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}Tik RCON administratoriui.");
    new amount;
    if(sscanf(params, "i", amount)) return SendClientMessage(playerid, 0xF39C12FF, "SYNTAX: {FFFFFF}/giveallcandy [amount]");
    for(new i, maxp = GetPlayerPoolSize(); i <= maxp; i++) if(IsPlayerConnected(i)) Halloween_ChangeCandy(i, amount);

    new string[128];
    format(string, sizeof(string), "HALLOWEEN: {FFFFFF}Admin %s(%d) dave visiems {9158B6}C%d.", ReturnPlayerName(playerid), playerid, amount);
    SendClientMessageToAll(0x9158B6FF, string);
    return 1;
}

CMD:dropgift(playerid, params[])
{
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}Tik RCON administratoriui.");
    new Float: x, Float: y, Float: z, Float: a;
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid, a);

    x += (2.0 * floatsin(-a, degrees));
    y += (2.0 * floatcos(-a, degrees));

    if(Halloween_CreateGiftBox(x, y, z, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid)) != -1)
    {
        new string[128];
        format(string, sizeof(string), "HALLOWEEN: {FFFFFF}Admin %s(%d) atspawnino dovanu dežes.", ReturnPlayerName(playerid), playerid);
        SendClientMessageToAll(0x9158B6FF, string);
    }
    
    return 1;
}

CMD:dropgiftaround(playerid, params[])
{
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}Tik RCON administratoriui.");
    new amount;
    if(sscanf(params, "i", amount)) return SendClientMessage(playerid, 0xF39C12FF, "SYNTAX: {FFFFFF}/dropgiftaround [amount]");
    if(!(1 <= amount <= 10)) return SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}Tu negali daugiau dropinti dežiu kaip 10 kartu.");
    new id, total;
    for(new i; i < amount; i++)
    {
        id = random(sizeof(GiftBoxCoords));
        if(Halloween_CreateGiftBox(GiftBoxCoords[id][GiftBoxSpawnX], GiftBoxCoords[id][GiftBoxSpawnY], GiftBoxCoords[id][GiftBoxSpawnZ], -1, -1) != -1) total++;
    }
    
    if(total > 0)
    {
        new string[128];
        format(string, sizeof(string), "HALLOWEEN: {FFFFFF}Admin %s(%d) atspawnino %d dovanu dežes.", ReturnPlayerName(playerid), playerid, total);
        SendClientMessageToAll(0x9158B6FF, string);
    }
    
    return 1;
}

Redaguota , nario Dovydas.Pawno.LT

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 2815 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Svečias
Ši tema yra užrakinta.
  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...