Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define FILTERSCRIPT
- #include <a_samp>
- #include <foreach>
- #include <zcmd>
- #include <sscanf2>
- #define DIALOG_INVENTORY 1337
- #define DIALOG_SELL_OR_TAKE 1338
- #define MAX_EXPERIENCE_PICKUPS 50
- new Float:RandomLvlSpawns[][113] = {
- {1568.2250,-1693.5483,5.8906,177.0983},
- {-1604.8442,732.9442,-5.2344,37.6041},
- {2343.4553,2455.5994,14.9688,96.5022},
- {1568.2250,-1693.5483,5.8906,177.0983},
- {-1604.8442,732.9442,-5.2344,37.6041},
- {1609.5922,1820.9641,10.8280,348.1614},
- {2786.2183,-2436.7859,13.6340,82.3043},
- {-1308.4493,504.9661,11.1953,132.5},
- {272.6040,1989.7307,17.6406,268.3605},
- {1751.1097,-2106.4529,13.5469,183.1979}, // El-Corona - Outside random house
- {2652.6418,-1989.9175,13.9988,182.7107}, // Random house in willowfield - near playa de seville and stadium
- {2489.5225,-1957.9258,13.5881,2.3440}, // Hotel in willowfield - near cluckin bell
- {2689.5203,-1695.9354,10.0517,39.5312}, // Outside stadium - lots of cars
- {2770.5393,-1628.3069,12.1775,4.9637}, // South in east beach - north of stadium - carparks nearby
- {2807.9282,-1176.8883,25.3805,173.6018}, // North in east beach - near apartments
- {2552.5417,-958.0850,82.6345,280.2542}, // Random house north of Las Colinas
- {2232.1309,-1159.5679,25.8906,103.2939}, // Jefferson motel
- {2388.1003,-1279.8933,25.1291,94.3321}, // House south of pig pen
- {2481.1885,-1536.7186,24.1467,273.4944}, // East LS - near clucking bell and car wash
- {2495.0720,-1687.5278,13.5150,359.6696}, // Outside CJ's house - lots of cars nearby
- {2306.8252,-1675.4340,13.9221,2.6271}, // House in ganton - lots of cars nearby
- {2191.8403,-1455.8251,25.5391,267.9925}, // House in south jefferson - lots of cars nearby
- {1830.1359,-1092.1849,23.8656,94.0113}, // Mulholland intersection carpark
- {2015.3630,-1717.2535,13.5547,93.3655}, // Idlewood house
- {1654.7091,-1656.8516,22.5156,177.9729}, // Right next to PD
- {1219.0851,-1812.8058,16.5938,190.0045}, // Conference Center
- {1508.6849,-1059.0846,25.0625,1.8058}, // Across the street of BANK - lots of cars in intersection carpark
- {1421.0819,-885.3383,50.6531,3.6516}, // Outside house in vinewood
- {1133.8237,-1272.1558,13.5469,192.4113}, // Near hospital
- {1235.2196,-1608.6111,13.5469,181.2655}, // Backalley west of mainstreet
- {590.4648,-1252.2269,18.2116,25.0473}, // Outside "BAnk of San Andreas"
- {842.5260,-1007.7679,28.4185,213.9953}, // North of Graveyard
- {911.9332,-1232.6490,16.9766,5.2999}, // LS Film Studio
- {477.6021,-1496.6207,20.4345,266.9252}, // Rodeo Place
- {255.4621,-1366.3256,53.1094,312.0852}, // Outside propery in richman
- {281.5446,-1261.4562,73.9319,305.0017}, // Another richman property
- {790.1918,-839.8533,60.6328,191.9514}, // Mulholland house
- {1299.1859,-801.4249,84.1406,269.5274}, // Maddoggs
- {1240.3170,-2036.6886,59.9575,276.4659}, // Verdant Bluffs
- {2215.5181,-2627.8174,13.5469,273.7786}, // Ocean docks 1
- {2509.4346,-2637.6543,13.6453,358.3565}, // Ocean Docks spawn 2
- {1435.8024,2662.3647,11.3926,1.1650}, // Northern train station
- {1457.4762,2773.4868,10.8203,272.2754}, // Northern golf club
- {1739.6390,2803.0569,14.2735,285.3929}, // Northern housing estate 1
- {1870.3096,2785.2471,14.2734,42.3102}, // Northern housing estate 2
- {1959.7142,2754.6863,10.8203,181.4731}, // Northern house 1
- {2314.2556,2759.4504,10.8203,93.2711}, // Northern industrial estate 1
- {2216.5674,2715.0334,10.8130,267.6540}, // Northern industrial estate 2
- {2101.4192,2678.7874,10.8130,92.0607}, // Northern near railway line
- {1951.1090,2660.3877,10.8203,180.8461}, // Northern house 2
- {1666.6949,2604.9861,10.8203,179.8495}, // Northern house 3
- {2808.3367,2421.5107,11.0625,136.2060}, // Northern shopping centre
- {2633.3203,2349.7061,10.6719,178.7175}, // V-Rock
- {2606.6348,2161.7490,10.8203,88.7508}, // South V-Rock
- {2616.5286,2100.6226,10.8158,177.7834}, // North Ammunation 1
- {2491.8816,2397.9370,10.8203,266.6003}, // North carpark 1
- {2531.7891,2530.3223,21.8750,91.6686}, // North carpark 2
- {2340.6677,2530.4324,10.8203,177.8630}, // North Pizza Stack
- {2097.6855,2491.3313,14.8390,181.8117}, // Emerald Isle
- {1893.1000,2423.2412,11.1782,269.4385}, // Souvenir shop
- {1698.9330,2241.8320,10.8203,357.8584}, // Northern casino
- {1479.4559,2249.0769,11.0234,306.3790}, // Baseball stadium 1
- {1298.1548,2083.4016,10.8127,256.7034}, // Baseball stadium 2
- {1117.8785,2304.1514,10.8203,81.5490}, // North carparks
- {1108.9878,1705.8639,10.8203,0.6785}, // Dirtring racing 1
- {1423.9780,1034.4188,10.8203,90.9590}, // Sumo
- {1537.4377,752.0641,11.0234,271.6893}, // Church
- {1917.9590,702.6984,11.1328,359.2682}, // Southern housing estate
- {2089.4785,658.0414,11.2707,357.3572}, // Southern house 1
- {2489.8286,928.3251,10.8280,67.2245}, // Wedding chapel
- {2697.4717,856.4916,9.8360,267.0983}, // Southern construction site
- {2845.6104,1288.1444,11.3906,3.6506}, // Southern train station
- {2437.9370,1293.1442,10.8203,86.3830}, // Wedding chapel (near Pyramid)
- {2299.5430,1451.4177,10.8203,269.1287}, // Carpark (near Pyramid)
- {2214.3008,2041.9165,10.8203,268.7626}, // Central parking lot
- {2005.9174,2152.0835,10.8203,270.1372}, // Central motel
- {2222.1042,1837.4220,10.8203,88.6461}, // Clowns Pocket
- {2025.6753,1916.4363,12.3382,272.5852}, // The Visage
- {2087.9902,1516.5336,10.8203,48.9300}, // Royal Casino
- {2172.1624,1398.7496,11.0625,91.3783}, // Auto Bahn
- {2139.1841,987.7975,10.8203,0.2315}, // Come-a-lot
- {1860.9672,1030.2910,10.8203,271.6988}, // Behind 4 Dragons
- {1673.2345,1316.1067,10.8203,177.7294}, // Airport carpark
- {1412.6187,2000.0596,14.7396,271.3568}, // South baseball stadium houses
- {-2723.4639,-314.8138,7.1839,43.5562}, // golf course spawn
- {-2694.5344,64.5550,4.3359,95.0190}, // in front of a house
- {-2458.2000,134.5419,35.1719,303.9446}, // hotel
- {-2796.6589,219.5733,7.1875,88.8288}, // house
- {-2706.5261,397.7129,4.3672,179.8611}, // park
- {-2866.7683,691.9363,23.4989,286.3060}, // house
- {-2764.9543,785.6434,52.7813,357.6817}, // donut shop
- {-2660.9402,883.2115,79.7738,357.4440}, // house
- {-2861.0796,1047.7109,33.6068,188.2750}, // parking lot
- {-2629.2009,1383.1367,7.1833,179.7006}, // parking lot at the bridge
- {-2079.6802,1430.0189,7.1016,177.6486}, // pier
- {-1660.2294,1382.6698,9.8047,136.2952}, // pier 69
- {-1674.1964,430.3246,7.1797,226.1357}, // gas station]
- {-1954.9982,141.8080,27.1747,277.7342}, // train station
- {-1956.1447,287.1091,35.4688,90.4465}, // car shop
- {-1888.1117,615.7245,35.1719,128.4498}, // random
- {-1922.5566,886.8939,35.3359,272.1293}, // random
- {-1983.3458,1117.0645,53.1243,271.2390}, // church
- {-2417.6458,970.1491,45.2969,269.3676}, // gas station
- {-2108.0171,902.8030,76.5792,5.7139}, // house
- {-2097.5664,658.0771,52.3672,270.4487}, // random
- {-2263.6650,393.7423,34.7708,136.4152}, // random
- {-2287.5027,149.1875,35.3125,266.3989}, // baseball parking lot
- {-2039.3571,-97.7205,35.1641,7.4744}, // driving school
- {-1867.5022,-141.9203,11.8984,22.4499}, // factory
- {-1537.8992,116.0441,17.3226,120.8537}, // docks ship
- {-1708.4763,7.0187,3.5489,319.3260}, // docks hangar
- {-1427.0858,-288.9430,14.1484,137.0812}, // airport
- {-2173.0654,-392.7444,35.3359,237.0159}, // stadium
- {-2320.5286,-180.3870,35.3135,179.6980}, // burger shot
- {-2930.0049,487.2518,4.9141,3.8258} // harbor
- };
- enum e_pInfo
- {
- gID,
- gExperience, gRExperience, gNeededExp, gLevel,
- Slot[4] //Slot 0 - Fist, Slot 1 - Nightstick, Slot 2 - Pool Cue, Slot 3 - Katana!
- }
- enum e_lvlInfo
- {
- bool:IsActive,
- Float:X,
- Float:Y,
- Float:Z,
- gExperienceB,
- Text3D:Info
- }
- new gLevelInfo[MAX_EXPERIENCE_PICKUPS][e_lvlInfo];
- new gPlayerInfo[MAX_PLAYERS][e_pInfo];
- new
- WorkingInventory[MAX_PLAYERS] = 0,
- Text:Stats[MAX_PLAYERS],
- TimerVar,
- bool:JustConnected[ MAX_PLAYERS char ],
- bool:Spawned[ MAX_PLAYERS char ]
- ;
- new DB:Katana;
- #if defined FILTERSCRIPT
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print("Melee Weapons v1 by Kyance\n . . .\nStatus: loaded!");
- print("--------------------------------------\n");
- CreateExpPickups();
- Katana = db_open("KatanaLvls.db");
- db_query(Katana, "CREATE TABLE IF NOT EXISTS `USERS` (`ID`, `NAME`, `EXPERIENCE`, `REALEXPERIENCE`, `NEEDEDEXP`, `LEVEL`, `SLOT0`, `SLOT1`, `SLOT2`, `SLOT3`)");
- foreach(Player, i) OnPlayerConnect(i);
- TimerVar = SetTimer("UpdateStats", 1800, true);
- return 1;
- }
- public OnFilterScriptExit()
- {
- print("\n--------------------------------------");
- print("Melee Weapons v1 by Kyance\n . . .\nStatus: unloaded!");
- print("--------------------------------------\n");
- KillTimer(TimerVar);
- DestroyExpPickups(); foreach(Player, i) SaveData(i), TextDrawDestroy(Stats[i]);
- db_close(Katana);
- return 1;
- }
- #endif
- public OnPlayerConnect(playerid)
- {
- new DBResult:result, Query[88];
- format(Query, sizeof(Query), "SELECT `NAME` FROM `USERS` WHERE `NAME` = '%s'", DB_Escape(GetName(playerid)));
- result = db_query(Katana, Query);
- if(db_num_rows(result)) SendClientMessage(playerid, -1, "{64CC66}Loading Account..."), LoadData(playerid);
- else SendClientMessage(playerid, -1, "{64CC66}Registering Account..."), RegisterData(playerid);
- db_free_result(result);
- WorkingInventory[playerid] = 0;
- JustConnected{ playerid } = true, Spawned{ playerid } = false, SetTimerEx("RemoveJC", 8200, false, "i", playerid);
- SendClientMessage(playerid, -1, "{64CC66}Setting up HUD...");
- Stats[playerid] = TextDrawCreate(142.500000,352.500000,"~y~Loading data. . .");
- TextDrawAlignment(Stats[playerid],0);
- TextDrawBackgroundColor(Stats[playerid],0x000000FF);
- TextDrawFont(Stats[playerid],1);
- TextDrawLetterSize(Stats[playerid],0.199999,1.000000);
- TextDrawColor(Stats[playerid],0xffffffFF);
- TextDrawSetOutline(Stats[playerid],1);
- TextDrawSetProportional(Stats[playerid],1);
- TextDrawSetShadow(Stats[playerid],1);
- TextDrawHideForPlayer(playerid, Stats[playerid]);
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- SaveData(playerid);
- WorkingInventory[playerid] = 0, Spawned{ playerid } = false, JustConnected{ playerid } = true;
- TextDrawDestroy(Stats[playerid]);
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- TextDrawShowForPlayer(playerid, Stats[playerid]);
- WorkingInventory[playerid] = 0, Spawned{ playerid } = true;
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- Spawned{ playerid } = false;
- TextDrawHideForPlayer(playerid, Stats[playerid]);
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if(newkeys & KEY_YES)
- {
- for(new i = 0; i<MAX_EXPERIENCE_PICKUPS;i++)
- {
- if(IsPlayerInRangeOfPoint(playerid, 5, gLevelInfo[i][X], gLevelInfo[i][Y], gLevelInfo[i][Z]))
- {
- GiveExperience(playerid, 0, gLevelInfo[i][gExperienceB]);
- break;
- }
- else
- {
- new Dialog[320]; //Slot 0 - Fist, Slot 1 - Nightstick, Slot 2 - Pool Cue, Slot 3 - Katana!
- if(gPlayerInfo[playerid][Slot][0]) format(Dialog, sizeof(Dialog), "Slot #0 - {64CC66}Fist");
- else format(Dialog, sizeof(Dialog), "Slot #0 - {FC4949}Fist");
- if(gPlayerInfo[playerid][Slot][1]) strcat(Dialog, "\nSlot #1 - {64CC66}Nitestick");
- else strcat(Dialog, "\nSlot #1 - {FC4949}Nitestick");
- if(gPlayerInfo[playerid][Slot][2]) strcat(Dialog, "\nSlot #2 - {64CC66}Pool Cue");
- else strcat(Dialog, "\nSlot #2 - {FC4949}Pool Cue");
- if(gPlayerInfo[playerid][Slot][3]) strcat(Dialog, "\nSlot #3 - {64CC66}Katana");
- else strcat(Dialog, "\nSlot #3 - {FC4949}Katana");
- strcat(Dialog, "\nClicking on a {64CC66}Green {FFFFFF}slot will give you the weapon");
- strcat(Dialog, "\nClicking on a {FC4949}Red {FFFFFF}slot will allow you to buy the weapon");
- strcat(Dialog, "\nIMPORTANT: Selecting 'FIST' will put all of your melee weapons in inventory!");
- ShowPlayerDialog(playerid, DIALOG_INVENTORY, DIALOG_STYLE_LIST, "Your inventory", Dialog, "Select", "Close");
- Dialog = "\0";
- break;
- }
- //else return SendClientMessage(playerid, -1, "{FC4949}You aren't near a 'Experience Box'!");
- }
- return 1;
- }
- else if(newkeys & KEY_NO && !IsPlayerInAnyVehicle(playerid))
- {
- if(gPlayerInfo[playerid][gLevel] == 50)
- {
- ApplyAnimation(playerid,"SWORD","sword_block",47.0,0,1,0,1,1);
- SetTimerEx("AnimFixer", 700, false, "i", playerid);
- SetTimerEx("OPResult", 3000, false, "i", playerid);
- }
- return 1;
- }
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- switch(dialogid)
- {
- case DIALOG_INVENTORY:
- {
- if(response)
- {
- switch(listitem)
- {
- case 0:
- {
- if(gPlayerInfo[playerid][Slot][0])
- {
- if(gPlayerInfo[playerid][Slot][1]) SetPlayerAmmo(playerid, WEAPON_NITESTICK, 0);
- else if(gPlayerInfo[playerid][Slot][2]) SetPlayerAmmo(playerid, WEAPON_POOLSTICK, 0);
- else if(gPlayerInfo[playerid][Slot][3]) SetPlayerAmmo(playerid, WEAPON_KATANA, 0);
- SendClientMessage(playerid, -1, "All melee weapons have been put in your inventory!"), WorkingInventory[playerid] = 0;
- }
- else gPlayerInfo[playerid][Slot][0] = 1;
- }
- case 1:
- {
- if(gPlayerInfo[playerid][Slot][1]) ShowPlayerDialog(playerid, DIALOG_SELL_OR_TAKE, DIALOG_STYLE_MSGBOX, "Your inventory", "{FFFFFF}Do you want to {FC4949}sell{FFFFFF} or {FC4949}equip{FFFFFF} the Nitestick?", "Sell", "Equip"), WorkingInventory[playerid] = 1;
- else
- {
- if(gPlayerInfo[playerid][gRExperience] >= 50) SendClientMessage(playerid, -1, "Nitestick bought for 50 xp!"), TakeExperience(playerid, 50), gPlayerInfo[playerid][Slot][1] = 1;
- else SendClientMessage(playerid, -1, "Not enough xp!");
- }
- }
- case 2:
- {
- if(gPlayerInfo[playerid][Slot][2]) ShowPlayerDialog(playerid, DIALOG_SELL_OR_TAKE, DIALOG_STYLE_MSGBOX, "Your inventory", "{FFFFFF}Do you want to {FC4949}sell{FFFFFF} or {FC4949}equip{FFFFFF} the Pool Cue?", "Sell", "Equip"), WorkingInventory[playerid] = 2;
- else
- {
- if(gPlayerInfo[playerid][gRExperience] >= 75) SendClientMessage(playerid, -1, "Pool Cue bought for 75 xp!"), TakeExperience(playerid, 75), gPlayerInfo[playerid][Slot][2] = 1;
- else SendClientMessage(playerid, -1, "Not enough xp!");
- }
- }
- case 3:
- {
- if(gPlayerInfo[playerid][Slot][3]) ShowPlayerDialog(playerid, DIALOG_SELL_OR_TAKE, DIALOG_STYLE_MSGBOX, "Your inventory", "{FFFFFF}Do you want to {FC4949}sell{FFFFFF} or {FC4949}equip{FFFFFF} the Katana?", "Sell", "Equip"), WorkingInventory[playerid] = 3;
- else
- {
- if(gPlayerInfo[playerid][gRExperience] >= 150) SendClientMessage(playerid, -1, "Katana bought for 150 xp!"), TakeExperience(playerid, 150), gPlayerInfo[playerid][Slot][3] = 1;
- else SendClientMessage(playerid, -1, "Not enough xp!");
- }
- }
- }
- }
- }
- case DIALOG_SELL_OR_TAKE:
- {
- if(response)
- {
- new Text[70], XPAmount;
- if(WorkingInventory[playerid])
- {
- if(WorkingInventory[playerid] == 1)
- {
- XPAmount = random(50);
- format(Text, sizeof(Text), "Nitestick sold for %d experience!", XPAmount), SendClientMessage(playerid, -1, Text);
- GiveExperience(playerid, XPAmount), SetPlayerAmmo(playerid, WEAPON_NITESTICK, 0), gPlayerInfo[playerid][Slot][1] = 0;
- }
- else if(WorkingInventory[playerid] == 2)
- {
- XPAmount = random(75);
- format(Text, sizeof(Text), "Pool Cue sold for %d experience!", XPAmount), SendClientMessage(playerid, -1, Text);
- GiveExperience(playerid, XPAmount), SetPlayerAmmo(playerid, WEAPON_POOLSTICK, 0), gPlayerInfo[playerid][Slot][2] = 0;
- }
- else if(WorkingInventory[playerid] == 3)
- {
- XPAmount = random(120);
- format(Text, sizeof(Text), "Katana sold for %d experience!", XPAmount), SendClientMessage(playerid, -1, Text);
- GiveExperience(playerid, XPAmount), SetPlayerAmmo(playerid, WEAPON_KATANA, 0), gPlayerInfo[playerid][Slot][3] = 0;
- }
- }
- else SendClientMessage(playerid, -1, "{FC4949}Invalid Slot ID selected");
- }
- else
- {
- if(WorkingInventory[playerid])
- {
- if(WorkingInventory[playerid] == 1) GivePlayerWeapon(playerid, WEAPON_NITESTICK, 1), SendClientMessage(playerid, -1, "Equipped the Nitestick!");
- else if(WorkingInventory[playerid] == 2) GivePlayerWeapon(playerid, WEAPON_POOLSTICK, 1), SendClientMessage(playerid, -1, "Equipped the Pool Cue!");
- else if(WorkingInventory[playerid] == 3) GivePlayerWeapon(playerid, WEAPON_KATANA, 1), SendClientMessage(playerid, -1, "Equipped the Katana!");
- }
- else SendClientMessage(playerid, -1, "{FC4949}Invalid Slot ID selected");
- }
- }
- }
- return 1;
- }
- public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid)
- {
- if(issuerid != INVALID_PLAYER_ID)
- {
- new chance = random(10);
- switch(chance)
- {
- case 4:
- {
- if(gPlayerInfo[issuerid][gLevel] >= 10)
- {
- SendClientMessage(playerid, -1, "STRUCK WITH GREAT FORCE!"), SendClientMessage(issuerid, -1, "STRUCK WITH GREAT FORCE!");
- if(weaponid == WEAPON_NITESTICK || weaponid == WEAPON_KATANA)
- {
- new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z);
- CreateExplosionForPlayer(playerid, x, y, z, 12, 5);
- GiveExperience(issuerid, 1+random(20));
- }
- else if(weaponid == WEAPON_POOLSTICK)
- {
- new Float:x, Float:y, Float:z, Float:angle; GetPlayerVelocity(playerid, x, y, z); GetPlayerFacingAngle(playerid, angle);
- x += (5.0 * floatsin(-angle, degrees));
- y += (5.0 * floatcos(-angle, degrees));
- SetPlayerVelocity(playerid, x, y, z);
- }
- }
- }
- case 3, 1:
- {
- if(gPlayerInfo[issuerid][gLevel] >= 5)
- {
- if(weaponid == WEAPON_NITESTICK || weaponid == WEAPON_KATANA || weaponid == WEAPON_POOLSTICK)
- {
- SendClientMessage(playerid, -1, "CRITICAL HIT!"), SendClientMessage(issuerid, -1, "CRITICAL HIT!");
- new Float:hp; GetPlayerHealth(playerid, hp);
- SetPlayerHealth(playerid, hp-amount-random(10));
- }
- }
- }
- }
- }
- return 1;
- }
- CMD:giveexp(playerid, params[]) {
- new id, amount;
- if(!IsPlayerAdmin(playerid)) return 0;
- if(sscanf(params, "ui", id, amount)) return SendClientMessage(playerid, -1, "/giveexp PLAYERID AMOUNT");
- else if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "Invalid ID");
- //else if(amount > gPlayerInfo[id][gNeededExp]) return SendClientMessage(playerid, -1, "ID doesn't need that much experience!");
- if(amount > 0) GiveExperience(id, amount);
- else TakeExperience(id, amount);
- return 1;
- }
- stock DestroyExpPickups()
- {
- for(new i = 0; i<MAX_EXPERIENCE_PICKUPS;i++)
- {
- if(!gLevelInfo[i][IsActive]) continue;
- gLevelInfo[i][IsActive] = false;
- gLevelInfo[i][gExperienceB] = 0, gLevelInfo[i][X] = 0, gLevelInfo[i][Y] = 0, gLevelInfo[i][Z] = 0;
- Delete3DTextLabel(gLevelInfo[i][Info]);
- }
- }
- stock CreateExpPickups()
- {
- new
- randspawn,
- Text[72]
- ;
- for(new i = 0; i<MAX_EXPERIENCE_PICKUPS;i++)
- {
- if(gLevelInfo[i][IsActive]) continue;
- gLevelInfo[i][gExperienceB] = random(60);
- format(Text, sizeof(Text), "{FFFFFF}'Experience Box', press 'Y' to interact\nYou get: {64CC66}%d experience!", gLevelInfo[i][gExperienceB]);
- gLevelInfo[i][Info] = Create3DTextLabel(Text, -1, RandomLvlSpawns[randspawn][0], RandomLvlSpawns[randspawn][1], RandomLvlSpawns[randspawn][2], 25.5, 0, 1);
- gLevelInfo[i][X] = RandomLvlSpawns[randspawn][0], gLevelInfo[i][Y] = RandomLvlSpawns[randspawn][1], gLevelInfo[i][Z] = RandomLvlSpawns[randspawn][2];
- gLevelInfo[i][IsActive] = true;
- }
- Text = "\0";
- }
- stock DestroyExpPickup(pickupid)
- {
- gLevelInfo[pickupid][IsActive] = false;
- gLevelInfo[pickupid][gExperienceB] = 0, gLevelInfo[pickupid][X] = 0, gLevelInfo[pickupid][Y] = 0, gLevelInfo[pickupid][Z] = 0;
- Delete3DTextLabel(gLevelInfo[pickupid][Info]);
- }
- stock GiveExperience(playerid, amount, pickupid = -1)
- {
- new Text[86];
- if(pickupid != -1)
- {
- format(Text, sizeof(Text), "You've received {64CC66}%d experience {FFFFFF}from an 'Experience Box'!", gLevelInfo[pickupid][gExperienceB]), SendClientMessage(playerid, -1, Text);
- gPlayerInfo[playerid][gExperience] += gLevelInfo[pickupid][gExperienceB];
- DestroyExpPickup(pickupid);
- }
- else
- {
- if(amount > 0)
- {
- format(Text, sizeof(Text), "You've received {64CC66}%d experience!", amount), SendClientMessage(playerid, -1, Text);
- gPlayerInfo[playerid][gExperience] += amount;
- gPlayerInfo[playerid][gRExperience] += amount;
- }
- }
- if(gPlayerInfo[playerid][gExperience] >= gPlayerInfo[playerid][gNeededExp] && gPlayerInfo[playerid][gLevel] < 50)
- {
- gPlayerInfo[playerid][gLevel]++;
- gPlayerInfo[playerid][gNeededExp] = gPlayerInfo[playerid][gNeededExp]*2;
- format(Text, sizeof(Text), "Congrats! You've {64CC66}gained a level! {FFFFFF}Current level: {64CC66}%d", gPlayerInfo[playerid][gLevel]), SendClientMessage(playerid, -1, Text);
- format(Text, sizeof(Text), "You now need {64CC66}%d experience{FFFFFF} to {64CC66}level up.", gPlayerInfo[playerid][gNeededExp]), SendClientMessage(playerid, -1, Text);
- }
- if(gPlayerInfo[playerid][gLevel] == 5) SendClientMessage(playerid, -1, "Since you're {64CC66}Level 5{FFFFFF}, you can deal Critical Hits!");
- else if(gPlayerInfo[playerid][gLevel] == 10) SendClientMessage(playerid, -1, "Since you're {64CC66}Level 10{FFFFFF}, you have a chance of giving explosive Katana and Nitestick hits!");
- else if(gPlayerInfo[playerid][gLevel] == 50) SendClientMessage(playerid, -1, "Since you're {64CC66}Level 50{FFFFFF}, you can press 'N' to use the most overpowered thing yet..");
- Text = "\0";
- }
- stock TakeExperience(playerid, amount)
- {
- new Text[86];
- format(Text, sizeof(Text), "You've lost {FC4949}%d experience!", amount), SendClientMessage(playerid, -1, Text);
- gPlayerInfo[playerid][gExperience] -= amount;
- gPlayerInfo[playerid][gRExperience] -= amount;
- if(gPlayerInfo[playerid][gExperience] < 0 && gPlayerInfo[playerid][gLevel] >= 1)
- {
- gPlayerInfo[playerid][gLevel]--;
- gPlayerInfo[playerid][gNeededExp] = gPlayerInfo[playerid][gNeededExp]/2;
- format(Text, sizeof(Text), "Oh no! You've {FC4949}lost a level! {FFFFFF}Current level: {FC4949}%d", gPlayerInfo[playerid][gLevel]), SendClientMessage(playerid, -1, Text);
- format(Text, sizeof(Text), "You need {64CC66}%d experience{FFFFFF} to {64CC66}level up again.", gPlayerInfo[playerid][gNeededExp]), SendClientMessage(playerid, -1, Text);
- }
- Text = "\0";
- }
- forward UpdateStats();
- public UpdateStats()
- {
- new Text[146];
- foreach(Player, i)
- {
- if(JustConnected{ i } == true || Spawned{ i } == false) continue;
- format(Text, sizeof(Text), "~w~Experience Points: ~y~%d~w~/~y~%d~n~~w~Total Experience Points: ~y~%d~n~~w~Level: ~y~%d/50", gPlayerInfo[i][gExperience], gPlayerInfo[i][gNeededExp], gPlayerInfo[i][gRExperience], gPlayerInfo[i][gLevel]);
- TextDrawSetString(Stats[i],Text);
- TextDrawShowForPlayer(i,Stats[i]);
- if(gPlayerInfo[i][gNeededExp] == 0) gPlayerInfo[i][gNeededExp] = 100, gPlayerInfo[i][gExperience] = 0, gPlayerInfo[i][gLevel] = 0;
- }
- return 1;
- }
- forward RemoveJC(playerid);
- public RemoveJC(playerid)
- {
- JustConnected{ playerid } = false;
- SendClientMessage(playerid, -1, "{64CC66}HUD, Data and other information successfully initialized!");
- return 1;
- }
- forward OPResult(playerid);
- public OPResult(playerid)
- {
- SetPlayerHealth(playerid, 99);
- new Float:hp, Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z);
- new RResult;
- foreach(Player, i)
- {
- if(!IsPlayerInRangeOfPoint(i, 20, x, y, z)) continue;
- RResult = random(2);
- switch(RResult)
- {
- case 0:
- {
- hp = GetPlayerHealth(i, hp);
- SetPlayerHealth(i, hp/2);
- }
- case 1: OnPlayerDeath(i, playerid, 47), SendClientMessage(i, -1, "{FC4949}You got terminated!");
- }
- }
- }
- forward AnimFixer(playerid);
- public AnimFixer(playerid)
- {
- ApplyAnimation(playerid,"SWORD","sword_block",43.0,0,1,0,1,1);
- return 1;
- }
- stock DB_Escape(text[])
- {
- new
- ret[80 * 2],
- ch,
- i,
- j
- ;
- while ((ch = text[i++]) && j < sizeof (ret))
- {
- if (ch == '\'')
- {
- if (j < sizeof (ret) - 2)
- {
- ret[j++] = '\'';
- ret[j++] = '\'';
- }
- }
- else if (j < sizeof (ret))
- {
- ret[j++] = ch;
- }
- else
- {
- j++;
- }
- }
- ret[sizeof (ret) - 1] = '\0';
- return ret;
- }
- stock GetName(playerid)
- {
- new pnameid[24];
- GetPlayerName(playerid,pnameid,sizeof(pnameid));
- return pnameid;
- }
- stock LoadData(playerid)
- {
- new DBResult:result, Query[128];
- format(Query, sizeof(Query), "SELECT * FROM `USERS` WHERE `NAME` = '%s'", DB_Escape(GetName(playerid)));
- result = db_query(Katana, Query);
- if(db_num_rows(result))
- {
- new Field[70];
- db_get_field_assoc(result, "ID", Field, 11); gPlayerInfo[playerid][gID] = strval(Field);
- db_get_field_assoc(result, "EXPERIENCE", Field, 15); gPlayerInfo[playerid][gExperience] = strval(Field);
- db_get_field_assoc(result, "REALEXPERIENCE", Field, 15); gPlayerInfo[playerid][gRExperience] = strval(Field);
- db_get_field_assoc(result, "NEEDEDEXP", Field, 15); gPlayerInfo[playerid][gNeededExp] = strval(Field);
- db_get_field_assoc(result, "LEVEL", Field, 2); gPlayerInfo[playerid][gLevel] = strval(Field);
- db_get_field_assoc(result, "SLOT0", Field, 1); gPlayerInfo[playerid][Slot][0] = strval(Field);
- db_get_field_assoc(result, "SLOT1", Field, 1); gPlayerInfo[playerid][Slot][1] = strval(Field);
- db_get_field_assoc(result, "SLOT2", Field, 1); gPlayerInfo[playerid][Slot][2] = strval(Field);
- db_get_field_assoc(result, "SLOT3", Field, 1); gPlayerInfo[playerid][Slot][3] = strval(Field);
- if(result) printf("[sqlite][%s]: successfully loaded data", GetName(playerid)), SendClientMessage(playerid, -1, "{64CC66}Data Loaded!");
- else printf("[sqlite][%s]: couldn't load data", GetName(playerid)), SendClientMessage(playerid, -1, "{FC4949}Failed to Load Data..");
- }
- else
- {
- RegisterData(playerid);
- }
- db_free_result(result);
- }
- stock RegisterData(playerid)
- {
- new Query[240], DBResult:result, DBResult:count = db_query(Katana, "SELECT * FROM `USERS`");
- format(Query, sizeof(Query), "INSERT INTO `USERS` (`ID`, `NAME`, `EXPERIENCE`, `REALEXPERIENCE`, `NEEDEDEXP`, `LEVEL`, `SLOT0`, `SLOT1`, `SLOT2`, `SLOT3`) VALUES ('%d', '%s', '0', '0', '0', '0', '1', '0', '0', '0')", db_num_rows(count)+1, DB_Escape(GetName(playerid)));
- result = db_query(Katana, Query);
- if(result) printf("[sqlite][%s]: successfully registered data", GetName(playerid)), SendClientMessage(playerid, -1, "{64CC66}Data Registered!");
- else printf("[sqlite][%s]: couldn't register data", GetName(playerid)), SendClientMessage(playerid, -1, "{FC4949}Failed to Register Data..");
- db_free_result(result);
- }
- stock SaveData(playerid)
- {
- new DBResult:result, Query[240];
- format(Query, sizeof(Query), "SELECT * FROM `USERS` WHERE `NAME` = '%s'", DB_Escape(GetName(playerid)));
- result = db_query(Katana, Query);
- if(db_num_rows(result))
- {
- format(Query, sizeof(Query), "UPDATE `USERS` SET `NAME` = '%s', `EXPERIENCE` = '%d', `REALEXPERIENCE` = '%d', `NEEDEDEXP` = '%d', `LEVEL` = '%d', `SLOT0` = '%d', `SLOT1` = '%d', `SLOT2` = '%d', `SLOT3` = '%d' WHERE `ID` = '%d'",
- DB_Escape(GetName(playerid)), gPlayerInfo[playerid][gExperience], gPlayerInfo[playerid][gRExperience], gPlayerInfo[playerid][gNeededExp], gPlayerInfo[playerid][gLevel], gPlayerInfo[playerid][Slot][0], gPlayerInfo[playerid][Slot][1], gPlayerInfo[playerid][Slot][2], gPlayerInfo[playerid][Slot][3], gPlayerInfo[playerid][gID]);
- result = db_query(Katana, Query);
- if(result) printf("[sqlite][%s]: successfully saved data", GetName(playerid)), SendClientMessage(playerid, -1, "{64CC66}Data Saved!");
- else printf("[sqlite][%s]: couldn't save data", GetName(playerid)), SendClientMessage(playerid, -1, "{FC4949}Failed to Save Data..");
- }
- else
- {
- RegisterData(playerid);
- }
- db_free_result(result);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement