Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define FILTERSCRIPT
- #include <a_samp>
- #include <a_mysql> // by BlueG & maddinat0r - http://forum.sa-mp.com/showthread.php?t=56564
- #include <a_zones> // by Cueball - http://forum.sa-mp.com/showthread.php?t=27598
- #include <izcmd> // by Yashas - http://forum.sa-mp.com/showthread.php?t=576114
- enum _:E_DIALOGS
- {
- DIALOG_HITMARKET_MENU = 1420,
- DIALOG_HITMARKET_PLACE_1,
- DIALOG_HITMARKET_PLACE_2,
- DIALOG_HITMARKET_ACTIVE_MENU,
- DIALOG_HITMARKET_ACTIVE_LIST,
- DIALOG_HITMARKET_TARGET,
- DIALOG_HITMARKET_MY_HITS,
- DIALOG_HITMARKET_CLAIM,
- DIALOG_HITMARKET_STATS
- }
- enum E_HMPLAYER
- {
- timesTargeted,
- placedHits,
- moneySpent,
- claimedBounties,
- claimedBountyAmount,
- // temp
- bool: hasBounty
- }
- enum E_PAYPHONE
- {
- Float: phoneX, // can
- Float: phoneY, // you
- Float: phoneZ, // hear
- Text3D: phoneLabel // me?
- }
- new
- marketSQLHandle = -1,
- PurgeTimer = -1;
- new
- BountyData[MAX_PLAYERS][E_HMPLAYER],
- SortMode[MAX_PLAYERS],
- ListPage[MAX_PLAYERS];
- new
- PhoneData[][E_PAYPHONE] = {
- {-1661.5938, 1398.0938, 6.8828},
- {-1689.1172, 1359.5469, 6.8828},
- {-1696.6875, 1334.4766, 6.8828},
- {-1964.1406, 162.8672, 27.3516},
- {-1965.2109, 162.8672, 27.3516},
- {-1966.2812, 162.8672, 27.3516},
- {-1967.3594, 162.8672, 27.3516},
- {-2419.3516, 718.2109, 34.8594},
- {1709.9922, -1604.9141, 13.2266},
- {1711.3438, -1606.0391, 13.2266},
- {1721.6719, -1720.3906, 13.2266},
- {1721.6719, -1721.2891, 13.2266},
- {1722.6094, -1720.3906, 13.2266},
- {1722.6094, -1721.2891, 13.2266},
- {1805.4062, -1600.4609, 13.2266},
- {1806.3906, -1599.6172, 13.2266},
- {1807.3828, -1598.7812, 13.2266},
- {1808.3750, -1597.9219, 13.2266},
- {1809.3438, -1597.0859, 13.2266},
- {2068.9375, -1767.8359, 13.2109},
- {2069.0000, -1766.6641, 13.2109},
- {2165.9219, -1154.9609, 24.4141},
- {2165.9219, -1155.8047, 24.4141},
- {2257.6562, -1211.1875, 23.6797},
- {2259.2031, -1211.2109, 23.6797},
- {2279.2578, 2524.9844, 10.5391},
- {2279.2578, 2526.7344, 10.5391},
- {2279.2578, 2528.5547, 10.5391},
- {278.5547, -1630.6719, 32.9297},
- {279.1875, -1630.7812, 32.9297},
- {295.1641, -1573.0625, 33.1562},
- {296.7578, -1573.2969, 33.1562},
- {302.0859, -1593.2031, 32.5156},
- {303.0312, -1593.3125, 32.5156},
- {355.8047, -1364.9531, 14.1641},
- {356.3828, -1364.6797, 14.1641},
- {379.1094, -1717.0469, 23.0391},
- {379.1094, -1717.9141, 22.7734},
- {638.0312, -1228.0234, 17.8203},
- {638.0312, -1228.6641, 17.7891},
- {339.1875, -1398.0469, 14.2266},
- {523.1562, -1516.4219, 14.3438},
- {523.1562, -1525.6172, 14.3438}
- };
- ReturnPlayerName(playerid)
- {
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, MAX_PLAYER_NAME);
- return name;
- }
- GetPlayerID(name[])
- {
- new id = -1;
- for(new i, maxp = GetPlayerPoolSize(); i <= maxp; i++)
- {
- if(!IsPlayerConnected(i)) continue;
- if(!strcmp(ReturnPlayerName(i), name))
- {
- id = i;
- break;
- }
- }
- return id;
- }
- formatInt(intVariable, iThousandSeparator = ',', iCurrencyChar = '$')
- {
- /*
- By Kar
- https://gist.github.com/Kar2k/bfb0eafb2caf71a1237b349684e091b9/8849dad7baa863afb1048f40badd103567c005a5#file-formatint-function
- */
- static
- s_szReturn[ 32 ],
- s_szThousandSeparator[ 2 ] = { ' ', EOS },
- s_szCurrencyChar[ 2 ] = { ' ', EOS },
- s_iVariableLen,
- s_iChar,
- s_iSepPos,
- bool:s_isNegative
- ;
- format( s_szReturn, sizeof( s_szReturn ), "%d", intVariable );
- if(s_szReturn[0] == '-')
- s_isNegative = true;
- else
- s_isNegative = false;
- s_iVariableLen = strlen( s_szReturn );
- if ( s_iVariableLen >= 4 && iThousandSeparator)
- {
- s_szThousandSeparator[ 0 ] = iThousandSeparator;
- s_iChar = s_iVariableLen;
- s_iSepPos = 0;
- while ( --s_iChar > _:s_isNegative )
- {
- if ( ++s_iSepPos == 3 )
- {
- strins( s_szReturn, s_szThousandSeparator, s_iChar );
- s_iSepPos = 0;
- }
- }
- }
- if(iCurrencyChar) {
- s_szCurrencyChar[ 0 ] = iCurrencyChar;
- strins( s_szReturn, s_szCurrencyChar, _:s_isNegative );
- }
- return s_szReturn;
- }
- formatTime(seconds)
- {
- new string[32], days = floatround((seconds % 2592000) / 86400, floatround_floor);
- if(seconds < 0)
- {
- format(string, sizeof(string), "Expired");
- return string;
- }
- if(days > 0) {
- format(string, sizeof(string), "%dd %02dh %02dm %02ds", days, floatround((seconds % 86400) / 3600, floatround_floor), floatround((seconds % 3600) / 60, floatround_floor), seconds % 60);
- }else{
- format(string, sizeof(string), "%02dh %02dm %02ds", floatround((seconds % 86400) / 3600, floatround_floor), floatround((seconds % 3600) / 60, floatround_floor), seconds % 60);
- }
- return string;
- }
- IsPlayerNearAPayphone(playerid)
- {
- for(new i; i < sizeof(PhoneData); i++)
- {
- if(IsPlayerInRangeOfPoint(playerid, 3.5, PhoneData[i][phoneX], PhoneData[i][phoneY], PhoneData[i][phoneZ])) return 1;
- }
- return 0;
- }
- ShowHitMarketMenu(playerid)
- {
- ListPage[playerid] = 0;
- new string[128];
- format(string, sizeof(string), "Hello, %s.\n» Place Hit\n» Active Hits {F1C40F}(%d)\n» My Hits {F1C40F}(%d)\n» Claim Rewards {F1C40F}(%d)\n» My Stats", ReturnPlayerName(playerid), Hitmarket_ActiveHits(), Hitmarket_ActiveHits(playerid), Hitmarket_RewardCount(playerid));
- ShowPlayerDialog(playerid, DIALOG_HITMARKET_MENU, DIALOG_STYLE_TABLIST_HEADERS, "Hit Market", string, "Select", "Close");
- return 1;
- }
- ShowHitStats(playerid)
- {
- new string[128];
- format(string, sizeof(string), "Times Targeted\t%s\nHits Placed\t%s {2ECC71}(%s)\nClaims\t%s {2ECC71}(%s)", formatInt(BountyData[playerid][timesTargeted], .iCurrencyChar = '\0'), formatInt(BountyData[playerid][placedHits], .iCurrencyChar = '\0'), formatInt(BountyData[playerid][moneySpent]), formatInt(BountyData[playerid][claimedBounties], .iCurrencyChar = '\0'), formatInt(BountyData[playerid][claimedBountyAmount]));
- ShowPlayerDialog(playerid, DIALOG_HITMARKET_STATS, DIALOG_STYLE_TABLIST, "Hit Market » {FFFFFF}Stats", string, "Select", "Back");
- return 1;
- }
- ShowClaimList(playerid)
- {
- new Cache: claim_query, query[196];
- mysql_format(marketSQLHandle, query, sizeof(query), "SELECT Target, Bounty, FROM_UNIXTIME(CompletedOn, '%%d/%%m/%%Y %%H:%%i') as CompDate FROM hm_hits WHERE CompletedBy='%e' && Status=1 ORDER BY CompletedOn DESC LIMIT %d, 10", ReturnPlayerName(playerid), ListPage[playerid] * 10);
- claim_query = mysql_query(marketSQLHandle, query);
- new rows = cache_num_rows(), show;
- if(rows) {
- new target[MAX_PLAYER_NAME], date[20], string[1024];
- format(string, sizeof(string), "Target\tBounty\tCompleted On\n");
- for(new i; i < rows; i++)
- {
- cache_get_field_content(i, "Target", target);
- cache_get_field_content(i, "CompDate", date);
- format(string, sizeof(string), "%s%s\t{2ECC71}%s\t%s\n", string, target, formatInt(cache_get_field_content_int(i, "Bounty")), date);
- }
- new title[48];
- format(title, sizeof(title), "Hit Market » {FFFFFF}Claim Rewards (Page %d)", ListPage[playerid] + 1);
- format(string, sizeof(string), "%s\n \n« Previous Page\nNext Page »", string);
- SetPVarInt(playerid, "hitmarket_ListCount", rows);
- ShowPlayerDialog(playerid, DIALOG_HITMARKET_CLAIM, DIALOG_STYLE_TABLIST_HEADERS, title, string, "Claim", "Back");
- }else{
- SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}No completed hits found.");
- show = 1;
- }
- cache_delete(claim_query);
- if(show) ShowHitMarketMenu(playerid);
- return 1;
- }
- ShowActiveHits(playerid)
- {
- new Cache: active_query, query[196];
- mysql_format(marketSQLHandle, query, sizeof(query), "SELECT Target, Bounty, PlacedOn FROM hm_hits WHERE Status=0 ORDER BY %s DESC LIMIT %d, 10", (SortMode[playerid] == 0) ? ("Bounty") : ("PlacedOn"), ListPage[playerid] * 10);
- active_query = mysql_query(marketSQLHandle, query);
- new rows = cache_num_rows(), show;
- if(rows) {
- new placed_on, target[MAX_PLAYER_NAME], string[1024];
- format(string, sizeof(string), "Target\tBounty\tTime Left\n");
- for(new i; i < rows; i++)
- {
- cache_get_field_content(i, "Target", target);
- placed_on = cache_get_field_content_int(i, "PlacedOn");
- format(string, sizeof(string), "%s%s\t{2ECC71}%s\t%s\n", string, target, formatInt(cache_get_field_content_int(i, "Bounty")), formatTime(placed_on + (86400 * 7) - gettime()));
- }
- new title[48];
- format(title, sizeof(title), "Hit Market » {FFFFFF}Active Hits (Page %d)", ListPage[playerid] + 1);
- format(string, sizeof(string), "%s\n \n« Previous Page\nNext Page »", string);
- SetPVarInt(playerid, "hitmarket_ListCount", rows);
- ShowPlayerDialog(playerid, DIALOG_HITMARKET_ACTIVE_LIST, DIALOG_STYLE_TABLIST_HEADERS, title, string, "Details", "Back");
- }else{
- SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}No active hits found.");
- show = 1;
- }
- cache_delete(active_query);
- if(show) ShowHitMarketMenu(playerid);
- return 1;
- }
- ShowHitList(playerid)
- {
- new Cache: list_query, query[196];
- mysql_format(marketSQLHandle, query, sizeof(query), "SELECT Target, Bounty, PlacedOn FROM hm_hits WHERE PlacedBy='%e' && Status=0 ORDER BY PlacedOn DESC LIMIT %d, 10", ReturnPlayerName(playerid), ListPage[playerid] * 10);
- list_query = mysql_query(marketSQLHandle, query);
- new rows = cache_num_rows(), show;
- if(rows) {
- new placed_on, target[MAX_PLAYER_NAME], string[1024];
- format(string, sizeof(string), "Target\tBounty\tTime Left\n");
- for(new i; i < rows; i++)
- {
- cache_get_field_content(i, "Target", target);
- placed_on = cache_get_field_content_int(i, "PlacedOn");
- format(string, sizeof(string), "%s%s\t{2ECC71}%s\t%s\n", string, target, formatInt(cache_get_field_content_int(i, "Bounty")), formatTime(placed_on + (86400 * 7) - gettime()));
- }
- new title[48];
- format(title, sizeof(title), "Hit Market » {FFFFFF}My Hits (Page %d)", ListPage[playerid] + 1);
- format(string, sizeof(string), "%s\n \n« Previous Page\nNext Page »", string);
- SetPVarInt(playerid, "hitmarket_ListCount", rows);
- ShowPlayerDialog(playerid, DIALOG_HITMARKET_MY_HITS, DIALOG_STYLE_TABLIST_HEADERS, title, string, "Cancel", "Back");
- }else{
- SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}No hits found.");
- show = 1;
- }
- cache_delete(list_query);
- if(show) ShowHitMarketMenu(playerid);
- return 1;
- }
- Hitmarket_PlayerInit(playerid)
- {
- new reset_enum[E_HMPLAYER];
- BountyData[playerid] = reset_enum;
- SortMode[playerid] = ListPage[playerid] = 0;
- new query[72];
- mysql_format(marketSQLHandle, query, sizeof(query), "SELECT * FROM hm_players WHERE Player='%e'", ReturnPlayerName(playerid));
- mysql_tquery(marketSQLHandle, query, "Hitmarket_LoadPlayerData", "i", playerid);
- return 1;
- }
- Hitmarket_ActiveHits(playerid = -1)
- {
- new query[96], hit_count = 0, Cache: count_query;
- if(playerid == -1) {
- mysql_format(marketSQLHandle, query, sizeof(query), "SELECT null FROM hm_hits WHERE Status=0");
- }else{
- mysql_format(marketSQLHandle, query, sizeof(query), "SELECT null FROM hm_hits WHERE PlacedBy='%e' && Status=0", ReturnPlayerName(playerid));
- }
- count_query = mysql_query(marketSQLHandle, query);
- hit_count = cache_num_rows();
- cache_delete(count_query);
- return hit_count;
- }
- Hitmarket_RewardCount(playerid)
- {
- new query[96], count = 0, Cache: count_query;
- mysql_format(marketSQLHandle, query, sizeof(query), "SELECT null FROM hm_hits WHERE CompletedBy='%e' && Status=1", ReturnPlayerName(playerid));
- count_query = mysql_query(marketSQLHandle, query);
- count = cache_num_rows();
- cache_delete(count_query);
- return count;
- }
- Hitmarket_ValidName(name[])
- {
- new query[72], count = 0, Cache: count_query;
- mysql_format(marketSQLHandle, query, sizeof(query), "SELECT null FROM hm_players WHERE Player='%e'", name);
- count_query = mysql_query(marketSQLHandle, query);
- count = cache_num_rows();
- cache_delete(count_query);
- return count;
- }
- forward Hitmarket_LoadPlayerData(playerid);
- public Hitmarket_LoadPlayerData(playerid)
- {
- new query[80];
- if(cache_num_rows() > 0) {
- BountyData[playerid][timesTargeted] = cache_get_field_content_int(0, "TimesTargeted");
- BountyData[playerid][placedHits] = cache_get_field_content_int(0, "HitsPlaced");
- BountyData[playerid][moneySpent] = cache_get_field_content_int(0, "HitsPlacedAmount");
- BountyData[playerid][claimedBounties] = cache_get_field_content_int(0, "Claimed");
- BountyData[playerid][claimedBountyAmount] = cache_get_field_content_int(0, "ClaimedAmount");
- mysql_format(marketSQLHandle, query, sizeof(query), "SELECT null FROM hm_hits WHERE Target='%e' && Status=0", ReturnPlayerName(playerid));
- mysql_tquery(marketSQLHandle, query, "Hitmarket_HasBounty", "i", playerid);
- }else{
- mysql_format(marketSQLHandle, query, sizeof(query), "INSERT INTO hm_players SET Player='%e'", ReturnPlayerName(playerid));
- mysql_tquery(marketSQLHandle, query);
- }
- return 1;
- }
- forward Hitmarket_HasBounty(playerid);
- public Hitmarket_HasBounty(playerid)
- {
- BountyData[playerid][hasBounty] = !!cache_num_rows();
- return 1;
- }
- forward PurgeExpiredHits();
- public PurgeExpiredHits()
- {
- mysql_tquery(marketSQLHandle, "DELETE FROM hm_hits WHERE PlacedOn + (86400 * 7) < UNIX_TIMESTAMP()");
- return 1;
- }
- public OnFilterScriptInit()
- {
- // set payphone label ids to -1
- for(new i; i < sizeof(PhoneData); i++) PhoneData[i][phoneLabel] = Text3D: -1;
- // mysql connection
- marketSQLHandle = mysql_connect("host", "user", "dbase", "password");
- if(mysql_errno()) return printf("[Hit Market] Can't connect to the MySQL Database. (Error #%d)", mysql_errno());
- // create tables if they dont exist
- mysql_tquery(marketSQLHandle, "CREATE TABLE `hm_players` (\
- `ID` int(11) NOT NULL AUTO_INCREMENT,\
- `Player` varchar(24) NOT NULL,\
- `TimesTargeted` int(11) NOT NULL,\
- `HitsPlaced` int(11) NOT NULL,\
- `HitsPlacedAmount` int(11) NOT NULL,\
- `Claimed` int(11) NOT NULL,\
- `ClaimedAmount` int(11) NOT NULL,\
- PRIMARY KEY (`ID`)\
- ) ENGINE=MyISAM DEFAULT CHARSET=utf8;");
- mysql_tquery(marketSQLHandle, "CREATE TABLE `hm_hits` (\
- `Target` varchar(24) NOT NULL,\
- `Bounty` int(11) NOT NULL,\
- `PlacedBy` varchar(24) NOT NULL,\
- `PlacedOn` int(11) NOT NULL,\
- `CompletedBy` varchar(24) NOT NULL,\
- `CompletedOn` int(11) NOT NULL,\
- `Status` tinyint(1) NOT NULL,\
- PRIMARY KEY (`Target`)\
- ) ENGINE=MyISAM DEFAULT CHARSET=utf8;");
- // set purge timer
- PurgeTimer = SetTimer("PurgeExpiredHits", 180000, true);
- PurgeExpiredHits();
- // init connected players
- for(new i, maxp = GetPlayerPoolSize(); i <= maxp; i++)
- {
- if(IsPlayerConnected(i)) Hitmarket_PlayerInit(i);
- }
- // create payphone labels
- for(new i; i < sizeof(PhoneData); i++) PhoneData[i][phoneLabel] = Create3DTextLabel("/hitmarket", 0x27AE60FF, PhoneData[i][phoneX], PhoneData[i][phoneY], PhoneData[i][phoneZ] + 1.5, 5.0, 0, 1);
- return 1;
- }
- public OnFilterScriptExit()
- {
- // remove payphone labels
- for(new i; i < sizeof(PhoneData); i++) if(PhoneData[i][phoneLabel] != Text3D: -1) Delete3DTextLabel(PhoneData[i][phoneLabel]);
- // kill purge timer
- KillTimer(PurgeTimer);
- // close mysql connection
- mysql_close(marketSQLHandle);
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- Hitmarket_PlayerInit(playerid);
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- if(IsPlayerConnected(killerid) && BountyData[playerid][hasBounty])
- {
- BountyData[playerid][timesTargeted]++;
- BountyData[playerid][hasBounty] = false;
- new query[140];
- mysql_format(marketSQLHandle, query, sizeof(query), "UPDATE hm_hits SET CompletedOn=UNIX_TIMESTAMP(), CompletedBy='%e', Status=1 WHERE Target='%e'", ReturnPlayerName(killerid), ReturnPlayerName(playerid));
- mysql_tquery(marketSQLHandle, query);
- mysql_format(marketSQLHandle, query, sizeof(query), "UPDATE hm_players SET TimesTargeted=%d WHERE Player='%e'", BountyData[playerid][timesTargeted], ReturnPlayerName(playerid));
- mysql_tquery(marketSQLHandle, query);
- SendClientMessage(killerid, 0x27AE60FF, "[HIT MARKET] {FFFFFF}The person you killed had a hit, find a payphone to claim your reward.");
- }
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- switch(dialogid)
- {
- case DIALOG_HITMARKET_MENU:
- {
- if(!response) return 1;
- if(listitem == 0) ShowPlayerDialog(playerid, DIALOG_HITMARKET_PLACE_1, DIALOG_STYLE_INPUT, "Hit Market » {FFFFFF}Place Hit (Step 1)", "Write the target's name:", "Next", "Back");
- if(listitem == 1)
- {
- if(Hitmarket_ActiveHits() == 0)
- {
- SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}No active hits found.");
- return ShowHitMarketMenu(playerid);
- }
- ShowPlayerDialog(playerid, DIALOG_HITMARKET_ACTIVE_MENU, DIALOG_STYLE_LIST, "Hit Market » {FFFFFF}Active Hits", "Sort By Bounty\nSort By Placement Date", "Select", "Back");
- }
- if(listitem == 2)
- {
- ListPage[playerid] = 0;
- ShowHitList(playerid);
- }
- if(listitem == 3)
- {
- ListPage[playerid] = 0;
- ShowClaimList(playerid);
- }
- if(listitem == 4) ShowHitStats(playerid);
- return 1;
- }
- case DIALOG_HITMARKET_PLACE_1:
- {
- if(!response) return ShowHitMarketMenu(playerid);
- if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_HITMARKET_PLACE_1, DIALOG_STYLE_INPUT, "Hit Market » {FFFFFF}Place Hit (Step 1)", "{E74C3C}Input can't be empty.\n\n{FFFFFF}Write the target's name:", "Next", "Back");
- if(!strcmp(inputtext, ReturnPlayerName(playerid))) return ShowPlayerDialog(playerid, DIALOG_HITMARKET_PLACE_1, DIALOG_STYLE_INPUT, "Hit Market » {FFFFFF}Place Hit (Step 1)", "{E74C3C}You can't place a hit on yourself.\n\n{FFFFFF}Write the target's name:", "Next", "Back");
- if(!Hitmarket_ValidName(inputtext)) return ShowPlayerDialog(playerid, DIALOG_HITMARKET_PLACE_1, DIALOG_STYLE_INPUT, "Hit Market » {FFFFFF}Place Hit (Step 1)", "{E74C3C}Name doesn't exist on our database.\n\n{FFFFFF}Write the target's name:", "Next", "Back");
- SetPVarString(playerid, "hitmarket_TargetName", inputtext);
- ShowPlayerDialog(playerid, DIALOG_HITMARKET_PLACE_2, DIALOG_STYLE_INPUT, "Hit Market » {FFFFFF}Place Hit (Step 2)", "Write the amount you want to place on target's head:", "Done", "Back");
- return 1;
- }
- case DIALOG_HITMARKET_PLACE_2:
- {
- if(!response) return ShowPlayerDialog(playerid, DIALOG_HITMARKET_PLACE_1, DIALOG_STYLE_INPUT, "Hit Market » {FFFFFF}Place Hit (Step 1)", "Write the target's name:", "Next", "Back");
- new amount = strval(inputtext);
- if(!(5000 <= amount <= 5000000)) return ShowPlayerDialog(playerid, DIALOG_HITMARKET_PLACE_2, DIALOG_STYLE_INPUT, "Hit Market » {FFFFFF}Place Hit (Step 2)", "{E74C3C}Amount must be between $5,000 - $5,000,000.\n\n{FFFFFF}Write the amount you want to place on target's head:", "Done", "Back");
- if(amount > GetPlayerMoney(playerid)) return ShowPlayerDialog(playerid, DIALOG_HITMARKET_PLACE_2, DIALOG_STYLE_INPUT, "Hit Market » {FFFFFF}Place Hit (Step 2)", "{E74C3C}You don't have enough money.\n\n{FFFFFF}Write the amount you want to place on target's head:", "Done", "Back");
- new name[MAX_PLAYER_NAME], query[256];
- GetPVarString(playerid, "hitmarket_TargetName", name, MAX_PLAYER_NAME);
- BountyData[playerid][placedHits]++;
- BountyData[playerid][moneySpent] += amount;
- mysql_format(marketSQLHandle, query, sizeof(query), "INSERT INTO hm_hits SET Target='%e', Bounty=%d, PlacedBy='%e', PlacedOn=UNIX_TIMESTAMP() ON DUPLICATE KEY UPDATE Bounty=Bounty+%d", name, amount, ReturnPlayerName(playerid), amount);
- mysql_tquery(marketSQLHandle, query);
- mysql_format(marketSQLHandle, query, sizeof(query), "UPDATE hm_players SET HitsPlaced=%d, HitsPlacedAmount=%d WHERE Player='%e'", BountyData[playerid][placedHits], BountyData[playerid][moneySpent], ReturnPlayerName(playerid));
- mysql_tquery(marketSQLHandle, query);
- new target_id = GetPlayerID(name);
- if(IsPlayerConnected(target_id)) BountyData[target_id][hasBounty] = true;
- SendClientMessage(playerid, 0x27AE60FF, "[HIT MARKET] {FFFFFF}Hit placed.");
- GivePlayerMoney(playerid, -amount);
- return 1;
- }
- case DIALOG_HITMARKET_ACTIVE_MENU:
- {
- if(!response) return ShowHitMarketMenu(playerid);
- SortMode[playerid] = listitem;
- ListPage[playerid] = 0;
- ShowActiveHits(playerid);
- return 1;
- }
- case DIALOG_HITMARKET_ACTIVE_LIST:
- {
- if(!response) return ShowHitMarketMenu(playerid);
- new emptyindex = GetPVarInt(playerid, "hitmarket_ListCount");
- if(listitem == emptyindex) {
- ShowActiveHits(playerid);
- }else if(listitem == emptyindex + 1) {
- ListPage[playerid]--;
- if(ListPage[playerid] < 0) ListPage[playerid] = 0;
- ShowActiveHits(playerid);
- }else if(listitem == emptyindex + 2) {
- ListPage[playerid]++;
- ShowActiveHits(playerid);
- }else{
- new query[172], Cache: hit_query;
- mysql_format(marketSQLHandle, query, sizeof(query), "SELECT Bounty, PlacedOn, FROM_UNIXTIME(PlacedOn, '%%d/%%m/%%Y %%H:%%i:%%s') AS PlaceDate FROM hm_hits WHERE Target='%e' && Status=0", inputtext);
- hit_query = mysql_query(marketSQLHandle, query);
- if(cache_num_rows()) {
- new string[384], last_loc[MAX_ZONE_NAME], placeint, placedate[20];
- placeint = cache_get_field_content_int(0, "PlacedOn");
- cache_get_field_content(0, "PlaceDate", placedate);
- new id = GetPlayerID(inputtext);
- if(!IsPlayerConnected(id)) {
- format(last_loc, sizeof(last_loc), "Unknown");
- }else{
- GetPlayer3DZone(id, last_loc, MAX_ZONE_NAME);
- }
- format(string, sizeof(string), "{FFFFFF}Target: {F1C40F}%s\n{FFFFFF}Last Location: {F1C40F}%s\n{FFFFFF}Bounty: {2ECC71}%s\n\n{FFFFFF}Hit Placed On: {F1C40F}%s\n{FFFFFF}Time Left: {F1C40F}%s", inputtext, last_loc, formatInt(cache_get_field_content_int(0, "Bounty")), placedate, formatTime(placeint + (86400 * 7) - gettime()));
- ShowPlayerDialog(playerid, DIALOG_HITMARKET_TARGET, DIALOG_STYLE_MSGBOX, "Hit Market » {FFFFFF}Target Info", string, "Back", "");
- }else{
- SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}Invalid hit.");
- }
- cache_delete(hit_query);
- }
- return 1;
- }
- case DIALOG_HITMARKET_TARGET:
- {
- ShowActiveHits(playerid);
- return 1;
- }
- case DIALOG_HITMARKET_MY_HITS:
- {
- if(!response) return ShowHitMarketMenu(playerid);
- new emptyindex = GetPVarInt(playerid, "hitmarket_ListCount");
- if(listitem == emptyindex) {
- ShowHitList(playerid);
- }else if(listitem == emptyindex + 1) {
- ListPage[playerid]--;
- if(ListPage[playerid] < 0) ListPage[playerid] = 0;
- ShowHitList(playerid);
- }else if(listitem == emptyindex + 2) {
- ListPage[playerid]++;
- ShowHitList(playerid);
- }else{
- new query[96];
- mysql_format(marketSQLHandle, query, sizeof(query), "DELETE FROM hm_hits WHERE Target='%e' && PlacedBy='%e' && Status=0", inputtext, ReturnPlayerName(playerid));
- mysql_tquery(marketSQLHandle, query);
- format(query, sizeof(query), "[HIT MARKET] {FFFFFF}Hit on {F1C40F}%s {FFFFFF}cancelled.", inputtext);
- SendClientMessage(playerid, 0x27AE60FF, query);
- }
- return 1;
- }
- case DIALOG_HITMARKET_CLAIM:
- {
- if(!response) return ShowHitMarketMenu(playerid);
- new emptyindex = GetPVarInt(playerid, "hitmarket_ListCount");
- if(listitem == emptyindex) {
- ShowClaimList(playerid);
- }else if(listitem == emptyindex + 1) {
- ListPage[playerid]--;
- if(ListPage[playerid] < 0) ListPage[playerid] = 0;
- ShowClaimList(playerid);
- }else if(listitem == emptyindex + 2) {
- ListPage[playerid]++;
- ShowClaimList(playerid);
- }else{
- new query[128], Cache: claim_query;
- mysql_format(marketSQLHandle, query, sizeof(query), "SELECT Bounty FROM hm_hits WHERE Target='%e' && CompletedBy='%e' && Status=1", inputtext, ReturnPlayerName(playerid));
- claim_query = mysql_query(marketSQLHandle, query);
- if(cache_num_rows()) {
- new money = cache_get_field_content_int(0, "Bounty"), string[128];
- GivePlayerMoney(playerid, money);
- mysql_format(marketSQLHandle, query, sizeof(query), "DELETE FROM hm_hits WHERE Target='%e' && CompletedBy='%e' && Status=1", inputtext, ReturnPlayerName(playerid));
- mysql_tquery(marketSQLHandle, query);
- format(string, sizeof(string), "[HIT MARKET] {FFFFFF}Hit on {F1C40F}%s {FFFFFF}completed for {2ECC71}%s.", inputtext, formatInt(money));
- SendClientMessage(playerid, 0x27AE60FF, string);
- BountyData[playerid][claimedBounties]++;
- BountyData[playerid][claimedBountyAmount] += money;
- mysql_format(marketSQLHandle, query, sizeof(query), "UPDATE hm_players SET Claimed=%d, ClaimedAmount=%d WHERE Player='%e'", BountyData[playerid][claimedBounties], BountyData[playerid][claimedBountyAmount], ReturnPlayerName(playerid));
- mysql_tquery(marketSQLHandle, query);
- }else{
- SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}Invalid claim.");
- }
- cache_delete(claim_query);
- }
- return 1;
- }
- case DIALOG_HITMARKET_STATS:
- {
- if(!response) return ShowHitMarketMenu(playerid);
- ShowHitStats(playerid);
- return 1;
- }
- }
- return 0;
- }
- CMD:hitmarket(playerid, params[])
- {
- if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}You can't use this command in a vehicle.");
- if(!IsPlayerNearAPayphone(playerid)) return SendClientMessage(playerid, 0xE74C3CFF, "ERROR: {FFFFFF}You're not near a payphone.");
- ShowHitMarketMenu(playerid);
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement