From c664e40d1e9b4d083f7273646890d4d5560792d5 Mon Sep 17 00:00:00 2001 From: Vortrex <3858226+VortrexFTW@users.noreply.github.com> Date: Sun, 5 Mar 2023 20:45:09 -0600 Subject: [PATCH] Don't delete from database --- scripts/server/npc.js | 2 +- scripts/server/payphone.js | 91 ++++++++++++++++++++++++++++++++------ 2 files changed, 79 insertions(+), 14 deletions(-) diff --git a/scripts/server/npc.js b/scripts/server/npc.js index f8e7045f..86765887 100644 --- a/scripts/server/npc.js +++ b/scripts/server/npc.js @@ -519,7 +519,7 @@ function deleteNPCCommand(command, params, client) { // =========================================================================== function deleteNPC(npcId) { - quickDatabaseQuery(`DELETE FROM npc_main WHERE npc_id=${getNPCData(npcId).databaseId}`); + quickDatabaseQuery(`UPDATE npc_main SET npc_deleted = 1 WHERE npc_id=${getNPCData(npcId).databaseId}`); if (getNPCData(npcId)) { if (getNPCData(npcId).ped != false) { diff --git a/scripts/server/payphone.js b/scripts/server/payphone.js index 2854b695..3cab3a4f 100644 --- a/scripts/server/payphone.js +++ b/scripts/server/payphone.js @@ -22,6 +22,7 @@ class PayPhoneData { this.price = 0; this.whoAdded = 0; this.whenAdded = 0; + this.otherPayPhone = -1; if (dbAssoc) { this.databaseId = toInteger(dbAssoc["payphone_id"]); @@ -86,6 +87,9 @@ function createPayPhone(position, number, addedBy = defaultNoAccountId) { getServerData().payPhones.push(tempPayPhoneData); + setAllPayPhoneIndexes(); + saveAllPayPhonesToDatabase(); + sendPayPhoneToPlayer(null, getServerData().payPhones.length - 1, false, tempPayPhoneData.state, tempPayPhoneData.position); return true; @@ -174,7 +178,7 @@ function deletePayPhoneCommand(command, params, client) { stopUsingPayPhone(getPayPhoneData(payPhoneIndex).usingPlayer); stopUsingPayPhone(getPayPhoneData(payPhoneIndex).connectedPlayer); - quickDatabaseQuery(`DELETE FROM payphone_main WHERE payphone_id = ${getPayPhoneData(payPhoneIndex).databaseId}`); + quickDatabaseQuery(`UPDATE payphone_main SET payphone_deleted = 1, payphone_who_deleted = ${getPlayerData(client).accountData.databaseId}, payphone_when_deleted = UNIX_TIMESTAMP() WHERE payphone_id = ${getPayPhoneData(payPhoneIndex).databaseId}`); getServerData().payPhones.splice(payPhoneIndex, 1); } @@ -221,6 +225,11 @@ function callPayPhoneCommand(command, params, client) { let closestPayPhoneTarget = getClosestPayPhone(getPlayerPosition(targetClient)); + if (closestPayPhoneTarget == closestPayPhone) { + messagePlayerError(client, getLocaleString(client, "UnableToCallPlayer")); + return false; + } + getPayPhoneData(closestPayPhone).state = V_PAYPHONE_STATE_CALLING; getPayPhoneData(closestPayPhone).usingPlayer = client; @@ -238,11 +247,13 @@ function callPayPhoneCommand(command, params, client) { setTimeout(function () { getPayPhoneData(closestPayPhoneTarget).state = V_PAYPHONE_STATE_RINGING; getPayPhoneData(closestPayPhoneTarget).usingPlayer = client; + getPayPhoneData(closestPayPhoneTarget).otherPayPhone = closestPayPhone; + getPayPhoneData(closestPayPhone).otherPayPhone = closestPayPhoneTarget; getPlayerData(client).usingPayPhone = closestPayPhone; - sendPayPhoneStateToClient(null, closestPayPhone, V_PAYPHONE_STATE_CALLING); - sendPayPhoneStateToClient(null, closestPayPhoneTarget, V_PAYPHONE_STATE_RINGING); + sendPayPhoneStateToPlayer(null, closestPayPhone, V_PAYPHONE_STATE_CALLING); + sendPayPhoneStateToPlayer(null, closestPayPhoneTarget, V_PAYPHONE_STATE_RINGING); }, 6000); }, 1000); } @@ -325,8 +336,8 @@ function answerPayPhoneCommand(command, params, client) { getPayPhoneData(closestPayPhone).usingPlayer = client; getPayPhoneData(getPlayerData(otherClient).usingPayPhone).state = V_PAYPHONE_STATE_ACTIVE_CALL; - sendPayPhoneStateToClient(null, closestPayPhone, V_PAYPHONE_STATE_ACTIVE_CALL); - sendPayPhoneStateToClient(null, getPlayerData(otherClient).usingPayPhone, V_PAYPHONE_STATE_ACTIVE_CALL); + sendPayPhoneStateToPlayer(null, closestPayPhone, V_PAYPHONE_STATE_ACTIVE_CALL); + sendPayPhoneStateToPlayer(null, getPlayerData(otherClient).usingPayPhone, V_PAYPHONE_STATE_ACTIVE_CALL); let nearbyPlayers = getPlayersInRange(getPlayerPosition(client), 3); for (let i in nearbyPlayers) { @@ -359,15 +370,17 @@ function hangupPayPhoneCommand(command, params, client) { if (clientPayPhone.state == V_PAYPHONE_STATE_CALLING) { clientPayPhone.state = V_PAYPHONE_STATE_IDLE; clientPayPhone.usingPlayer = null; + clientPayPhone.otherPayPhone = -1; - sendPayPhoneStateToClient(null, clientPayPhoneIndex, V_PAYPHONE_STATE_IDLE); + sendPayPhoneStateToPlayer(null, clientPayPhoneIndex, V_PAYPHONE_STATE_IDLE); let otherPayPhoneIndex = getPayPhoneUsedByPlayer(client); if (clientPayPhoneIndex != otherPayPhoneIndex) { getPayPhoneData(otherPayPhoneIndex).state = V_PAYPHONE_STATE_IDLE; getPayPhoneData(otherPayPhoneIndex).usingPlayer = null; + getPayPhoneData(otherPayPhoneIndex).otherPayPhone = -1; - sendPayPhoneStateToClient(null, otherPayPhoneIndex, V_PAYPHONE_STATE_IDLE); + sendPayPhoneStateToPlayer(null, otherPayPhoneIndex, V_PAYPHONE_STATE_IDLE); let nearbyPlayers = getPlayersInRange(getPlayerPosition(client), 3); for (let i in nearbyPlayers) { @@ -400,10 +413,12 @@ function hangupPayPhoneCommand(command, params, client) { } clientPayPhone.state = V_PAYPHONE_STATE_IDLE; + clientPayPhone.otherPayPhone = -1; otherClientPayPhone.state = V_PAYPHONE_STATE_IDLE; + otherClientPayPhone.otherPayPhone = -1; - sendPayPhoneStateToClient(null, clientPayPhone, V_PAYPHONE_STATE_IDLE); - sendPayPhoneStateToClient(null, otherClientPayPhone, V_PAYPHONE_STATE_IDLE); + sendPayPhoneStateToPlayer(null, clientPayPhone, V_PAYPHONE_STATE_IDLE); + sendPayPhoneStateToPlayer(null, otherClientPayPhone, V_PAYPHONE_STATE_IDLE); getPlayerData(otherClient).payPhoneCallStart = 0; getPlayerData(otherClient).payPhoneOtherPlayer = null; @@ -494,8 +509,8 @@ function savePayPhoneToDatabase(payPhoneIndex) { if (tempPayPhoneData.databaseId == 0) { let queryString = createDatabaseInsertQuery("payphone_main", data); dbQuery = queryDatabase(dbConnection, queryString); - getPayPhoneData(payPhoneIndex).databaseId = getDatabaseInsertId(dbConnection); - getPayPhoneData(payPhoneIndex).needsSaved = false; + tempPayPhoneData.databaseId = getDatabaseInsertId(dbConnection); + tempPayPhoneData.needsSaved = false; } else { let queryString = createDatabaseUpdateQuery("payphone_main", data, `payphone_id=${tempPayPhoneData.databaseId}`); dbQuery = queryDatabase(dbConnection, queryString); @@ -600,7 +615,7 @@ function stopUsingPayPhone(client) { } getPayPhoneData(getPlayerData(client).usingPayPhone).state = V_PAYPHONE_STATE_IDLE; - sendPayPhoneStateToClient(client, getPlayerData(client).usingPayPhone, V_PAYPHONE_STATE_IDLE); + sendPayPhoneStateToPlayer(client, getPlayerData(client).usingPayPhone, V_PAYPHONE_STATE_IDLE); getPlayerData(client).payPhoneCallStart = 0 getPlayerData(client).payPhoneOtherPlayer = null; @@ -648,4 +663,54 @@ function getPayPhoneInfoCommand(command, params, client) { } } -// =========================================================================== \ No newline at end of file +// =========================================================================== + +function resetAllPayPhonesCommand(command, params, client) { + resetAllPayPhones(); +} + +// =========================================================================== + +function resetAllPayPhones() { + for (let i in getServerData().payPhones) { + if (getServerData().payPhones[i].usingPlayer != null) { + getPlayerData(getServerData().payPhones[i].usingPlayer).usingPayPhone = -1; + getPlayerData(getServerData().payPhones[i].usingPlayer).payPhoneCallStart = 0; + getPlayerData(getServerData().payPhones[i].usingPlayer).payPhoneInitiatedCall = false; + getPlayerData(getServerData().payPhones[i].usingPlayer).payPhoneOtherPlayer = null; + } + getServerData().payPhones[i].state = V_PAYPHONE_STATE_IDLE; + } + + sendPayPhoneStateToPlayer(null, -1, V_PAYPHONE_STATE_IDLE); +} + +// =========================================================================== + +function fixDesyncedPayPhones() { + for (let i in getServerData().payPhones) { + switch (getServerData().payPhones[i].state) { + case V_PAYPHONE_STATE_RINGING: + if (getPayPhoneData(getPayPhoneData(i).otherPayPhone).state != V_PAYPHONE_STATE_CALLING) { + getPlayerData(getServerData().payPhones[i].usingPlayer).usingPayPhone = -1; + getPlayerData(getServerData().payPhones[i].usingPlayer).payPhoneCallStart = 0; + getPlayerData(getServerData().payPhones[i].usingPlayer).payPhoneInitiatedCall = false; + getPlayerData(getServerData().payPhones[i].usingPlayer).payPhoneOtherPlayer = null; + setPayPhoneState(i, V_PAYPHONE_STATE_IDLE); + } + break; + + default: + break; + } + } + + sendPayPhoneStateToPlayer(null, -1, V_PAYPHONE_STATE_IDLE); +} + +// =========================================================================== + +function setPayPhoneState(payPhoneIndex, state) { + getPayPhoneData(payPhoneIndex).state = state; + sendPayPhoneStateToPlayer(null, payPhoneIndex, state); +} \ No newline at end of file