| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481 |
- /*
- /$$ /$$ /$$$$$$ /$$$$$$$ /$$$$$$$
- | $$$ | $$ /$$__ $$ | $$__ $$| $$__ $$
- | $$$$| $$| $$ \__/ | $$ \ $$| $$ \ $$
- | $$ $$ $$| $$ /$$$$ /$$$$$$| $$$$$$$/| $$$$$$$/
- | $$ $$$$| $$|_ $$|______/| $$__ $$| $$____/
- | $$\ $$$| $$ \ $$ | $$ \ $$| $$
- | $$ \ $$| $$$$$$/ | $$ | $$| $$
- |__/ \__/ \______/ |__/ |__/|__/
- Dynamic Crime System
- Next Generation Gaming, LLC
- (created by Next Generation Gaming Development Team)
- * Copyright (c) 2016, Next Generation Gaming, LLC
- *
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are not permitted in any case.
- *
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- #include <YSI\y_hooks>
- #define MAX_CRIMES 150
- forward OnCrimesLoad();
- forward LoadCrimes();
- // Dynamic Charges
- enum eCrimeDatum {
- c_iID, // SQL ID
- c_iType, // how many stars the crime will give
- c_iNation, // Nation, 0 = SA, 1 = TR
- c_szName[32],
- c_iJTime, // Jail Time
- c_iJFine, // Fine
- c_iBail
- }
- new arrCrimeData[MAX_CRIMES][eCrimeDatum];
- public LoadCrimes()
- {
- mysql_tquery(MainPipeline, "SELECT * FROM `crimesdata`", "OnCrimesLoad", "");
- print("[LoadCrimes] Loading Crimes...");
- }
- public OnCrimesLoad()
- {
- szMiscArray[0] = 0;
- new rows;
- cache_get_row_count(rows);
- for(new i = 0; i < rows; i++)
- {
- cache_get_value_name_int(i, "id", arrCrimeData[i][c_iID]);
- cache_get_value_name_int(i, "type", arrCrimeData[i][c_iType]);
- cache_get_value_name_int(i, "nation", arrCrimeData[i][c_iNation]);
- cache_get_value_name(i, "name", arrCrimeData[i][c_szName], 32);
- cache_get_value_name_int(i, "jailtime", arrCrimeData[i][c_iJTime]);
- cache_get_value_name_int(i, "fine", arrCrimeData[i][c_iJFine]);
- cache_get_value_name_int(i, "bail", arrCrimeData[i][c_iBail]);
- }
- print("[LoadCrimes] Crime Data Loaded.");
- }
- stock SaveCrimes()
- {
- for(new i = 0; i < MAX_CRIMES; i++)
- {
- SaveCrime(i);
- }
- }
- stock SaveCrime(id)
- {
- szMiscArray[0] = 0;
- mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "UPDATE `crimesdata` SET \
- `type` = '%i', \
- `nation` = '%i', \
- `name` = '%e', \
- `jailtime` = '%i', \
- `fine` = '%i', \
- `bail` = '%i' \
- WHERE `id` = '%i'",
- arrCrimeData[id][c_iType],
- arrCrimeData[id][c_iNation],
- arrCrimeData[id][c_szName],
- arrCrimeData[id][c_iJTime],
- arrCrimeData[id][c_iJFine],
- arrCrimeData[id][c_iBail],
- arrCrimeData[id][c_iID]);
- mysql_tquery(MainPipeline, szMiscArray, "OnQueryFinish", "i", SENDDATA_THREAD);
- }
- stock ShowCrimesDialog(iPlayerID, iSuspectID = INVALID_PLAYER_ID, iDialogID = DIALOG_SHOW_CRIMES)
- {
- szMiscArray[0] = 0;
- switch(iDialogID)
- {
- case DIALOG_SHOW_CRIMES:
- {
- format(szMiscArray, sizeof(szMiscArray), "----Misdemeanors----\n");
- for(new i = 0; i < MAX_CRIMES; i++)
- {
- if(arrCrimeData[i][c_iNation] == arrGroupData[PlayerInfo[iPlayerID][pMember]][g_iAllegiance] && arrCrimeData[i][c_iType] == 1)
- {
- format(szMiscArray, sizeof(szMiscArray), "%s{FFFF00}%i\t%s\n", szMiscArray, arrCrimeData[i][c_iID], arrCrimeData[i][c_szName]);
- }
- }
- format(szMiscArray, sizeof(szMiscArray), "%s----Felonies----\n", szMiscArray);
- for(new i = 0; i < MAX_CRIMES; i++)
- {
- if(arrCrimeData[i][c_iNation] == arrGroupData[PlayerInfo[iPlayerID][pMember]][g_iAllegiance] && arrCrimeData[i][c_iType] == 2)
- {
- format(szMiscArray, sizeof(szMiscArray), "%s{AA3333}%i\t%s\n", szMiscArray, arrCrimeData[i][c_iID], arrCrimeData[i][c_szName]);
- }
- }
- SetPVarInt(iPlayerID, "suspect_TargetID", iSuspectID);
- ShowPlayerDialogEx(iPlayerID, iDialogID, DIALOG_STYLE_LIST, "Select a committed crime", szMiscArray, "Select", "Exit");
- }
- case DIALOG_EDIT_CRIMES:
- {
- ShowPlayerDialogEx(iPlayerID, iDialogID, DIALOG_STYLE_LIST, "Select a Nation.", "SA\nNE", "Select", "Exit");
- }
- }
- return 1;
- }
- stock ShowOfflineCrimesDialog(playerid)
- {
- szMiscArray[0] = 0;
- format(szMiscArray, sizeof(szMiscArray), "----Misdemeanors----\n");
- for(new i = 0; i < MAX_CRIMES; i++)
- {
- if(arrCrimeData[i][c_iNation] == arrGroupData[PlayerInfo[playerid][pMember]][g_iAllegiance] && arrCrimeData[i][c_iType] == 1)
- {
- format(szMiscArray, sizeof(szMiscArray), "%s{FFFF00}%i\t%s\n", szMiscArray, arrCrimeData[i][c_iID], arrCrimeData[i][c_szName]);
- }
- }
- format(szMiscArray, sizeof(szMiscArray), "%s----Felonies----\n", szMiscArray);
- for(new i = 0; i < MAX_CRIMES; i++)
- {
- if(arrCrimeData[i][c_iNation] == arrGroupData[PlayerInfo[playerid][pMember]][g_iAllegiance] && arrCrimeData[i][c_iType] == 2)
- {
- format(szMiscArray, sizeof(szMiscArray), "%s{AA3333}%i\t%s\n", szMiscArray, arrCrimeData[i][c_iID], arrCrimeData[i][c_szName]);
- }
- }
- ShowPlayerDialogEx(playerid, DIALOG_SHOW_OFFLINE_CRIMES, DIALOG_STYLE_LIST, "Select a committed crime", szMiscArray, "Select", "Exit");
- return 1;
- }
- hook OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
- if(arrAntiCheat[playerid][ac_iFlags][AC_DIALOGSPOOFING] > 0) return 1;
- szMiscArray[0] = 0;
- switch(dialogid)
- {
- case DIALOG_SHOW_CRIMES:
- {
- if(!response) return 1;
- for(new i = 0; i < MAX_CRIMES; i++)
- {
- if(arrCrimeData[i][c_iNation] == arrGroupData[PlayerInfo[playerid][pMember]][g_iAllegiance])
- {
- if(arrCrimeData[i][c_iID] == strval(inputtext))
- {
- new iTargetID = GetPVarInt(playerid, "suspect_TargetID");
- ++PlayerInfo[iTargetID][pCrimes];
- PlayerInfo[iTargetID][pWantedLevel] += arrCrimeData[i][c_iType];
- if(PlayerInfo[iTargetID][pWantedLevel] > 6)
- {
- PlayerInfo[iTargetID][pWantedLevel] = 6;
- }
- SetPlayerWantedLevel(iTargetID, PlayerInfo[iTargetID][pWantedLevel]);
- if(PlayerInfo[iTargetID][pConnectHours] < 64)
- {
- PlayerInfo[iTargetID][pWantedJailTime] += 4;
- PlayerInfo[iTargetID][pWantedJailFine] += 4000;
- }
- else
- {
- PlayerInfo[iTargetID][pWantedJailTime] += arrCrimeData[i][c_iJTime];
- PlayerInfo[iTargetID][pWantedJailFine] += arrCrimeData[i][c_iJFine];
- }
- new szCountry[10], szCrime[128];
- if(arrGroupData[PlayerInfo[playerid][pMember]][g_iAllegiance] == 1)
- {
- format(szCountry, sizeof(szCountry), "[SA] ");
- }
- else if(arrGroupData[PlayerInfo[playerid][pMember]][g_iAllegiance] == 2)
- {
- format(szCountry, sizeof(szCountry), "[NE] ");
- }
- strcat(szCrime, szCountry);
- strcat(szCrime, arrCrimeData[i][c_szName]);
- AddCrime(playerid, iTargetID, szCrime);
- format(szMiscArray, sizeof(szMiscArray), "You've commited a crime ( %s ). Reporter: %s.", szCrime, GetPlayerNameEx(playerid));
- SendClientMessageEx(iTargetID, COLOR_LIGHTRED, szMiscArray);
- format(szMiscArray, sizeof(szMiscArray), "Current wanted level: %d", PlayerInfo[iTargetID][pWantedLevel]);
- SendClientMessageEx(iTargetID, COLOR_YELLOW, szMiscArray);
- foreach(new p: Player)
- {
- if(IsACop(p) && arrGroupData[PlayerInfo[playerid][pMember]][g_iAllegiance] == arrGroupData[PlayerInfo[p][pMember]][g_iAllegiance]) {
- format(szMiscArray, sizeof(szMiscArray), "HQ: All units APB (reporter: %s)",GetPlayerNameEx(playerid));
- SendClientMessageEx(p, TEAM_BLUE_COLOR, szMiscArray);
- format(szMiscArray, sizeof(szMiscArray), "HQ: Crime: %s, suspect: %s", szCrime, GetPlayerNameEx(iTargetID));
- SendClientMessageEx(p, TEAM_BLUE_COLOR, szMiscArray);
- }
- }
- PlayerInfo[iTargetID][pDefendTime] = 60;
- }
- }
- }
- }
- case DIALOG_SHOW_OFFLINE_CRIMES:
- {
- if(!response) return 1;
- for(new i = 0; i < MAX_CRIMES; i++)
- {
- if(arrCrimeData[i][c_iNation] == arrGroupData[PlayerInfo[playerid][pMember]][g_iAllegiance])
- {
- if(arrCrimeData[i][c_iID] == strval(inputtext))
- {
- new PlayerName[MAX_PLAYER_NAME];
- new szCountry[10], szCrime[128];
- if(arrGroupData[PlayerInfo[playerid][pMember]][g_iAllegiance] == 1)
- {
- format(szCountry, sizeof(szCountry), "[SA] ");
- }
- else if(arrGroupData[PlayerInfo[playerid][pMember]][g_iAllegiance] == 2)
- {
- format(szCountry, sizeof(szCountry), "[NE] ");
- }
- strcat(szCrime, szCountry);
- strcat(szCrime, arrCrimeData[i][c_szName]);
- GetPVarString(playerid, "OfflineSU", PlayerName, MAX_PLAYER_NAME);
- Crime_AddOffline(playerid, szCrime, PlayerName);
- }
- }
- }
- }
- case DIALOG_EDIT_CRIMES:
- {
- if(!response) return 1;
- ShowCrimesList(playerid);
- }
- case DIALOG_CRIMES_LIST:
- {
- if(!response) return 1;
- szMiscArray[0] = 0;
- SetPVarInt(playerid, "iEditCrime", strval(inputtext));
- format(szMiscArray, sizeof(szMiscArray), "{80FF00}%s", arrCrimeData[strval(inputtext)-1][c_szName]);
- ShowPlayerDialogEx(playerid, DIALOG_CRIMES_EDIT, DIALOG_STYLE_LIST, szMiscArray, "Edit Type\nnEdit Nation\nEdit Name\nEdit Time\nEdit Fine", "Select", "Cancel");
- }
- case DIALOG_CRIMES_EDIT:
- {
- if(!response) return ShowCrimesList(playerid);
- szMiscArray[0] = 0;
- new iEditCrime = GetPVarInt(playerid, "iEditCrime")-1;
- switch(listitem)
- {
- case 0:
- {
- format(szMiscArray, sizeof(szMiscArray), "{80FF00}%s - {FF0000}EDIT TYPE", arrCrimeData[iEditCrime][c_szName]);
- ShowPlayerDialogEx(playerid, DIALOG_CRIMES_TYPE, DIALOG_STYLE_LIST, szMiscArray, "Misdemeanor\nFelony", "Select", "Cancel");
- }
- case 1:
- {
- format(szMiscArray, sizeof(szMiscArray), "{80FF00}%s - {FF0000}EDIT NATION", arrCrimeData[iEditCrime][c_szName]);
- ShowPlayerDialogEx(playerid, DIALOG_CRIMES_NATION, DIALOG_STYLE_LIST, szMiscArray, "San Andreas\nNew Robada", "Select", "Cancel");
- }
- case 2:
- {
- format(szMiscArray, sizeof(szMiscArray), "{80FF00}%s - {FF0000}EDIT NAME", arrCrimeData[iEditCrime][c_szName]);
- ShowPlayerDialogEx(playerid, DIALOG_CRIMES_NAME, DIALOG_STYLE_INPUT, szMiscArray, "Please input a new name for the crime.", "Select", "Cancel");
- }
- case 3:
- {
- format(szMiscArray, sizeof(szMiscArray), "{80FF00}%s - {FF0000}EDIT TIME", arrCrimeData[iEditCrime][c_szName]);
- ShowPlayerDialogEx(playerid, DIALOG_CRIMES_TIME, DIALOG_STYLE_INPUT, szMiscArray, "Please input a new time for the crime.", "Select", "Cancel");
- }
- case 4:
- {
- format(szMiscArray, sizeof(szMiscArray), "{80FF00}%s - {FF0000}EDIT FINE", arrCrimeData[iEditCrime][c_szName]);
- ShowPlayerDialogEx(playerid, DIALOG_CRIMES_FINE, DIALOG_STYLE_INPUT, szMiscArray, "Please input a new fine for the crime.", "Select", "Cancel");
- }
- }
- }
- case DIALOG_CRIMES_TYPE:
- {
- if(!response) return ShowCrimesList(playerid);
- new iEditCrime = GetPVarInt(playerid, "iEditCrime")-1;
- arrCrimeData[iEditCrime][c_iType] = listitem+1;
- szMiscArray[0] = 0;
- format(szMiscArray, sizeof(szMiscArray), "You have set %s's type to %s", arrCrimeData[iEditCrime][c_szName], inputtext);
- SendClientMessageEx(playerid, COLOR_LIGHTBLUE, szMiscArray);
- SaveCrime(iEditCrime);
- }
- case DIALOG_CRIMES_NATION:
- {
- if(!response) return ShowCrimesList(playerid);
- new iEditCrime = GetPVarInt(playerid, "iEditCrime")-1;
- arrCrimeData[iEditCrime][c_iNation] = listitem+1;
- szMiscArray[0] = 0;
- format(szMiscArray, sizeof(szMiscArray), "You have set %s's nation to %s", arrCrimeData[iEditCrime][c_szName], inputtext);
- SendClientMessageEx(playerid, COLOR_LIGHTBLUE, szMiscArray);
- SaveCrime(iEditCrime);
- }
- case DIALOG_CRIMES_NAME:
- {
- if(!response) return ShowCrimesList(playerid);
- if(isnull(inputtext) || strlen(inputtext) > 32) return SendClientMessageEx(playerid, COLOR_GRAD2, "Please enter a valid name no longer than 32 characters.");
- new iEditCrime = GetPVarInt(playerid, "iEditCrime")-1;
- szMiscArray[0] = 0;
- format(szMiscArray, sizeof(szMiscArray), "You updated crime %s's name to %s", arrCrimeData[iEditCrime][c_szName], inputtext);
- SendClientMessageEx(playerid, COLOR_LIGHTBLUE, szMiscArray);
- format(arrCrimeData[iEditCrime][c_szName], 32, "%s", inputtext);
- SaveCrime(iEditCrime);
- }
- case DIALOG_CRIMES_TIME:
- {
- if(!response) return ShowCrimesList(playerid);
- new iEditCrime = GetPVarInt(playerid, "iEditCrime")-1;
- if(strval(inputtext) < 1) return SendClientMessageEx(playerid, COLOR_GRAD2, "Please input a time above 0 minutes.");
- arrCrimeData[iEditCrime][c_iJTime] = strval(inputtext);
- szMiscArray[0] = 0;
- format(szMiscArray, sizeof(szMiscArray), "You updated crime %s's time to %i minute(s)", arrCrimeData[iEditCrime][c_szName], strval(inputtext));
- SendClientMessageEx(playerid, COLOR_LIGHTBLUE, szMiscArray);
- SaveCrime(iEditCrime);
- }
- case DIALOG_CRIMES_FINE:
- {
- if(!response) return ShowCrimesList(playerid);
- new iEditCrime = GetPVarInt(playerid, "iEditCrime")-1;
- if(strval(inputtext) < 1) return SendClientMessageEx(playerid, COLOR_GRAD2, "Please input a fine above $0.");
- arrCrimeData[iEditCrime][c_iJFine] = strval(inputtext);
- szMiscArray[0] = 0;
- format(szMiscArray, sizeof(szMiscArray), "You updated crime %s's fine to $%s dollars", arrCrimeData[iEditCrime][c_szName], number_format(strval(inputtext)));
- SendClientMessageEx(playerid, COLOR_LIGHTBLUE, szMiscArray);
- SaveCrime(iEditCrime);
- }
- }
- return 0;
- }
- CMD:clist(playerid, params[]) return cmd_crimelist(playerid, params);
- CMD:crimelist(playerid, params[])
- {
- if(PlayerInfo[playerid][pAdmin] < 1337 && !PlayerInfo[playerid][pFactionModerator]) return SendClientMessageEx(playerid, COLOR_WHITE, "SERVER: You are not authorized to use this command.");
- ShowCrimesList(playerid);
- return 1;
- }
- CMD:su(playerid, params[])
- {
- if(IsACop(playerid))
- {
- if(PlayerInfo[playerid][pJailTime] > 0) return SendClientMessageEx(playerid, COLOR_WHITE, "You cannot use this in jail/prison.");
- new iTargetID;
- if(sscanf(params, "u", iTargetID)) return SendClientMessageEx(playerid, COLOR_GREY, "USAGE: (/su)spect [player]");
- if(!IsPlayerConnected(iTargetID)) return SendClientMessageEx(playerid, COLOR_GRAD1, "Invalid player specified.");
- if(iTargetID == playerid) return SendClientMessageEx(playerid, COLOR_GRAD1, "You cannot place charges on yourself.");
- if(IsACop(iTargetID) && arrGroupData[PlayerInfo[playerid][pMember]][g_iAllegiance] == arrGroupData[PlayerInfo[iTargetID][pMember]][g_iAllegiance])
- {
- if(arrGroupData[PlayerInfo[playerid][pMember]][gLEOArrest] == INVALID_RANK || arrGroupData[PlayerInfo[playerid][pMember]][gLEOArrest] > PlayerInfo[playerid][pRank]) return SendClientMessageEx(playerid, COLOR_GREY, "You can't use this command on a law enforcement officer.");
- }
- if(PlayerInfo[iTargetID][pWantedLevel] >= 6) return SendClientMessageEx(playerid, COLOR_GRAD2, "Target is already most wanted.");
- ShowCrimesDialog(playerid, iTargetID);
- }
- else SendClientMessageEx(playerid, COLOR_GRAD2, "You're not a law enforcement officer.");
- return 1;
- }
- CMD:osu(playerid, params[])
- {
- if(IsACop(playerid))
- {
- if(PlayerInfo[playerid][pJailTime] > 0) {
- return SendClientMessageEx(playerid, COLOR_WHITE, "You cannot use this in jail/prison.");
- }
- if(isnull(params)) return SendClientMessageEx(playerid, COLOR_WHITE, "USAGE: /osu(spect) [player name]");
- new PlayerName[MAX_PLAYER_NAME];
- mysql_escape_string(params, PlayerName);
- if(IsPlayerConnected(ReturnUser(PlayerName))) return SendClientMessageEx(playerid, COLOR_GREY, "That player is currently connected, use /su.");
- SetPVarString(playerid, "OfflineSU", PlayerName);
- ShowOfflineCrimesDialog(playerid);
- }
- else SendClientMessageEx(playerid, COLOR_GRAD2, "You're not a law enforcement officer.");
- return 1;
- }
- ShowCrimesList(playerid)
- {
- szMiscArray[0] = 0;
- strcat(szMiscArray, "ID\tName\tTime (min)\tFine");
- for(new i = 0; i < MAX_CRIMES; i++)
- {
- format(szMiscArray, sizeof(szMiscArray), "%s\n%i\t%s\t%d\t$%s", szMiscArray, arrCrimeData[i][c_iID], arrCrimeData[i][c_szName], arrCrimeData[i][c_iJTime], number_format(arrCrimeData[i][c_iJFine]));
- }
- return ShowPlayerDialogEx(playerid, DIALOG_CRIMES_LIST, DIALOG_STYLE_TABLIST_HEADERS, "Select a crime to edit.", szMiscArray, "Select", "Exit");
- }
- Crime_AddOffline(iPlayerID, szAddCrime[], szPName[], iExtra = 0) {
- szMiscArray[0] = 0;
- mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "SELECT `id`, `Username` FROM `accounts` WHERE `Username` = '%s' LIMIT 1", szPName);
- mysql_tquery(MainPipeline, szMiscArray, "OnCrimeAddOffline", "dssd", iPlayerID, szAddCrime, szPName, iExtra);
- return 1;
- }
- forward OnCrimeAddOffline(iPlayerID, szAddCrime[], szPName[], iExtra);
- public OnCrimeAddOffline(iPlayerID, szAddCrime[], szPName[], iExtra)
- {
- new
- iRows,
- iTempID;
- cache_get_row_count(iRows);
- switch(iExtra) {
- case 0: {
-
- if(!iRows) return SendClientMessageEx(iPlayerID, 0xFFFFFF, "That player was not found!");
- cache_get_value_name_int(0, "id", iTempID);
- mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "INSERT INTO `mdc` (`id` ,`time` ,`issuer` ,`crime`, `origin`) VALUES ('%d',NOW(),'%s','%s','%d')", iTempID, GetPlayerNameEx(iPlayerID), szAddCrime, arrGroupData[PlayerInfo[iPlayerID][pMember]][g_iAllegiance]);
- mysql_tquery(MainPipeline, szMiscArray, "OnCrimeAddOffline", "dssd", iPlayerID, szAddCrime, szPName, 1);
- new PlayerName[MAX_PLAYER_NAME];
- GetPVarString(iPlayerID, "OfflineSU", PlayerName, MAX_PLAYER_NAME);
- foreach(new p: Player)
- {
- if(IsACop(p) && arrGroupData[PlayerInfo[iPlayerID][pMember]][g_iAllegiance] == arrGroupData[PlayerInfo[p][pMember]][g_iAllegiance]) {
- format(szMiscArray, sizeof(szMiscArray), "(offline) HQ: All units APB (reporter: %s)",GetPlayerNameEx(iPlayerID));
- SendClientMessageEx(p, TEAM_BLUE_COLOR, szMiscArray);
- format(szMiscArray, sizeof(szMiscArray), "(offline) HQ: Crime: %s, suspect: %s", szAddCrime, PlayerName);
- SendClientMessageEx(p, TEAM_BLUE_COLOR, szMiscArray);
- }
- }
- DeletePVar(iPlayerID, "OfflineSU");
- }
- case 1: {
-
- if(!cache_affected_rows()) return SendClientMessageEx(iPlayerID, 0xFFFFFF, "There was an issue appending that crime!");
- format(szMiscArray, sizeof(szMiscArray), "Crime Added: %s - %s", szPName, szAddCrime);
- SendClientMessage(iPlayerID, 0xFFFFFF, szMiscArray);
- }
- }
- return 1;
- }
|