Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <streamer>
- #include <izcmd>
- #define INTERVAL (1) // in minutes
- new giftArea;
- new DB:db;
- new playerMinutes[MAX_PLAYERS];
- new playerTimer[MAX_PLAYERS];
- public OnFilterScriptInit()
- {
- db = db_open("gifts.db");
- db_free_result(db_query(db, "CREATE TABLE IF NOT EXIST `PlayerGifts` (`Username` TEXT PRIMARY KEY, `Minutes` NUMBER, `Money` NUMBER, `Score` NUMBER, `Weapons` TEXT, `Ammos` TEXT);"));
- giftArea = CreateDynamicCircle(1221.3690, -1658.2582, 2.0);
- CreateDynamicPickup(1239, 1, 1221.3690, -1658.2582, 11.7969);
- CreateDynamic3DTextLabel("Type /getgift to open your present!", 0xFFFFFFFF, 1221.3690, -1658.2582, 11.7969, 100.0);
- return 1;
- }
- public OnFilterScriptExit()
- {
- db_close(db);
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, MAX_PLAYER_NAME);
- new string[150];
- format(string, sizeof (string), "SELECT `Minutes` FROM `PlayerGifts` WHERE `Username` = '%q';", name);
- new DBResult:result = db_query(db, string);
- if (result)
- {
- playerMinutes[playerid] = db_get_field_int(result, 0);
- db_free_result(result);
- }
- else
- {
- playerMinutes[playerid] = 0;
- format(string, sizeof (string), "INSERT INTO `PlayerGifts` (`Username` = '%q', `Minutes` = 0);", name);
- db_free_result(db_query(db, string));
- }
- playerTimer[playerid] = SetTimerEx("OnPlayerTimeUpdate", 60 * 1000, true, "i", playerid);
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, MAX_PLAYER_NAME);
- new weapons[100];
- weapons = "0";
- new ammos[100];
- ammos = "0";
- new w, a;
- for (new i; i < 14; i++)
- {
- GetPlayerWeaponData(playerid, i, w, a);
- format(weapons, sizeof (weapons), "%s,%i", weapons, w);
- format(ammos, sizeof (ammos), "%s,%i", ammos, a);
- }
- new string[150];
- format(string, sizeof (string), "UPDATE `PlayerGifts` SET `Minutes` = %d, `Moeny` = %d, `Score` = %d, `Weapons` = '%q', `Ammos` = '%q' WHERE `Username` = '%q';", playerMinutes[playerid], GetPlayerMoney(playerid), GetPlayerScore(playerid), weapons, ammos, name);
- db_free_result(db_query(db, string));
- KillTimer(playerTimer[playerid]);
- return 1;
- }
- forward OnPlayerTimeUpdate(playerid);
- public OnPlayerTimeUpdate(playerid)
- {
- playerMinutes[playerid]++;
- }
- strsplit(dest[][], string[], const sub[], bool:ignorecase = false, pos = 0, limit = -1, len = sizeof (dest[]))
- {
- if (pos <= -1)
- return 0;
- if (limit != -1 && limit <= 0)
- return 0;
- new sublen = strlen(sub);
- new count;
- while ((pos = strfind(string, sub, ignorecase, pos)) != -1)
- {
- strmid((dest[count][0] = EOS, dest[count]), string, 0, (pos + sublen), len);
- strdel(string, 0, (pos + sublen));
- count++;
- if (limit > 0 && count >= limit)
- {
- break;
- }
- }
- strcat((dest[count][0] = EOS, dest[count]), string, len);
- return count;
- }
- public OnPlayerSpawn(playerid)
- {
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, MAX_PLAYER_NAME);
- new string[150];
- format(string, sizeof (string), "SELECT * FROM `PlayerGifts` WHERE `Username` = '%q';", name);
- new DBResult:result = db_query(db, string);
- if (result)
- {
- db_get_field_assoc(result, "Weapons", string, sizeof (string));
- new dest[14][10];
- new limit = strsplit(dest, string, ",");
- db_get_field_assoc(result, "Ammos", string, sizeof (string));
- new dest2[14][10];
- strsplit(dest2, string, ",");
- for (new i; i < limit; i++)
- {
- GivePlayerWeapon(playerid, strval(dest[i]), strval(dest2[i]));
- }
- GivePlayerMoney(playerid, db_get_field_assoc_int(result, "Money"));
- SetPlayerScore(playerid, GetPlayerScore(playerid) + db_get_field_assoc_int(result, "Score"));
- db_free_result(result);
- }
- format(string, sizeof (string), "UPDATE `PlayerGifts` SET `Weapons` = '', `Ammos` = '' WHERE `Username` = '%q';", name);
- db_free_result(db_query(db, string));
- return 1;
- }
- CMD:getgift(playerid)
- {
- if (!IsPlayerInDynamicArea(playerid, giftArea))
- {
- GameTextForPlayer(playerid, "~r~You aren't near a gift box!", 5000, 3);
- return 1;
- }
- if (playerMinutes[playerid] < INTERVAL)
- {
- new string[100];
- format(string, sizeof (string), "~r~You should wait %i minutes to collect your gift!", (INTERVAL - playerMinutes[playerid]));
- GameTextForPlayer(playerid, string, 5000, 3);
- return 1;
- }
- switch (random(9))
- {
- case 0:
- {
- GivePlayerMoney(playerid, 10000);
- SendClientMessage(playerid, 0x00FF00FF, "You have got +$10000 in your gift box.");
- }
- case 1:
- {
- GivePlayerWeapon(playerid, 24, 50);
- SendClientMessage(playerid, 0x00FF00FF, "You have got a Desert eagle in your gift box.");
- }
- case 2:
- {
- GivePlayerWeapon(playerid, 17, 3);
- SendClientMessage(playerid, 0x00FF00FF, "You have got 3 Tear gases in your gift box.");
- }
- case 3:
- {
- GivePlayerWeapon(playerid, 34, 50);
- SendClientMessage(playerid, 0x00FF00FF, "You have got a Sniper rifle in your gift box.");
- }
- case 4:
- {
- GivePlayerWeapon(playerid, 46, 1);
- SendClientMessage(playerid, 0x00FF00FF, "You have got a Parachute in your gift box.");
- }
- case 5:
- {
- GivePlayerMoney(playerid, 15000);
- SendClientMessage(playerid, 0x00FF00FF, "You have got +$15000 in your gift box.");
- }
- case 6:
- {
- SetPlayerScore(playerid, GetPlayerScore(playerid) + 5);
- SendClientMessage(playerid, 0x00FF00FF, "You have got +5 Score in your gift box.");
- }
- case 7:
- {
- SetPlayerHealth(playerid, 100);
- SendClientMessage(playerid, 0x00FF00FF, "You have got 100 Health in your gift box.");
- }
- case 8:
- {
- SetPlayerArmour(playerid, 100);
- SendClientMessage(playerid, 0x00FF00FF, "You have got 100 Armour in your gift box.");
- }
- }
- playerMinutes[playerid] -= INTERVAL;
- GameTextForPlayer(playerid, "~g~~h~~h~You have opened your gift!", 5000, 3);
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment