diff --git a/scripts/client/event.js b/scripts/client/event.js index 8e19e0cb..2f4d629a 100644 --- a/scripts/client/event.js +++ b/scripts/client/event.js @@ -10,51 +10,31 @@ function initEventScript() { logToConsole(LOG_DEBUG, "[VRR.Event]: Initializing event script ..."); - addCustomEvents(); addAllEventHandlers(); logToConsole(LOG_DEBUG, "[VRR.Event]: Event script initialized!"); } // =========================================================================== -function addCustomEvents() { - addEvent("OnLocalPlayerEnterSphere", 1); - addEvent("OnLocalPlayerExitSphere", 1); - addEvent("OnLocalPlayerEnteredVehicle", 1); - addEvent("OnLocalPlayerExitedVehicle", 1); - addEvent("OnLocalPlayerSwitchWeapon", 2); -} - -// =========================================================================== - function addAllEventHandlers() { bindEventHandler("OnResourceStart", thisResource, onResourceStart); bindEventHandler("OnResourceReady", thisResource, onResourceReady); bindEventHandler("OnResourceStop", thisResource, onResourceStop); - addEventHandler("OnProcess", onProcess); addEventHandler("OnKeyUp", onKeyUp); addEventHandler("OnDrawnHUD", onDrawnHUD); - addEventHandler("OnPedWasted", onPedWasted); - addEventHandler("OnElementStreamIn", onElementStreamIn); - addEventHandler("OnPedEnteredVehicleEx", onPedEnteredVehicle); addEventHandler("OnPedExitedVehicleEx", onPedExitedVehicle); - addEventHandler("OnPedEnteredSphere", onPedEnteredSphere); - addEventHandler("OnPedExitedSphere", onPedExitedSphere); + addEventHandler("OnPedEnteredSphereEx", onPedEnteredSphere); + addEventHandler("OnPedExitedSphereEx", onPedExitedSphere); addEventHandler("OnPedChangeWeapon", onPedChangeWeapon); - addEventHandler("OnPedInflictDamage", onPedInflictDamage); - addEventHandler("OnLostFocus", onLostFocus); addEventHandler("OnFocus", onFocus); - addEventHandler("OnCameraProcess", onCameraProcess); - addEventHandler("OnMouseWheel", onMouseWheel); - addEventHandler("OnEntityProcess", onEntityProcess); } @@ -91,9 +71,6 @@ function onProcess(event, deltaTime) { processSync(); processLocalPlayerControlState(); processLocalPlayerVehicleControlState(); - processLocalPlayerSphereEntryExitHandling(); - processLocalPlayerVehicleEntryExitHandling(); - processJobRouteSphere(); forceLocalPlayerEquippedWeaponItem(); processWantedLevelReset(); processGameSpecifics(); @@ -121,7 +98,7 @@ function onDrawnHUD(event) { return false; } - if (localPlayer == null) { + if (!localPlayer) { return false; } @@ -198,18 +175,12 @@ function onPedInflictDamage(event, damagedEntity, damagerEntity, weaponId, healt // =========================================================================== function onPedEnteredSphere(event, ped, sphere) { - if (isNull(ped)) { - return false; - } - - if (isNull(localPlayer)) { - return false; - } - - if (ped == localPlayer) { - logToConsole(LOG_DEBUG, `[VRR.Event] Local player entered sphere`); - if (sphere == jobRouteLocationSphere) { - enteredJobRouteSphere(); + if (!isNull(localPlayer) && !isNull(ped)) { + if (ped == localPlayer) { + logToConsole(LOG_DEBUG, `[VRR.Event] Local player entered sphere`); + //if (sphere == jobRouteLocationSphere) { + // enteredJobRouteSphere(); + //} } } } @@ -217,16 +188,10 @@ function onPedEnteredSphere(event, ped, sphere) { // =========================================================================== function onPedExitedSphere(event, ped, sphere) { - if (isNull(ped)) { - return false; - } - - if (isNull(localPlayer)) { - return false; - } - - if (ped == localPlayer) { - logToConsole(LOG_DEBUG, `[VRR.Event] Local player entered sphere`); + if (!isNull(localPlayer) && !isNull(ped)) { + if (ped == localPlayer) { + logToConsole(LOG_DEBUG, `[VRR.Event] Local player exited sphere`); + } } } @@ -263,13 +228,7 @@ function onMouseWheel(event, mouseId, deltaCoordinates, flipped) { // =========================================================================== function onEntityProcess(event, entity) { - if (!isSpawned) { - return false; - } - //if(entity.isType(ELEMENT_PED) && !entity.isType(ELEMENT_PLAYER)) { - // processNPCMovement(entity); - //} } // =========================================================================== \ No newline at end of file diff --git a/scripts/server/event.js b/scripts/server/event.js index 31e7c3a6..670764a2 100644 --- a/scripts/server/event.js +++ b/scripts/server/event.js @@ -19,11 +19,7 @@ function initEventScript() { function addAllEventHandlers() { addEventHandler("onResourceStart", onResourceStart); addEventHandler("onResourceStop", onResourceStop); - addEventHandler("onServerStop", onResourceStop); - addEventHandler("onProcess", onProcess); - addEventHandler("onEntityProcess", onEntityProcess); - addEventHandler("onPlayerConnect", onPlayerConnect); addEventHandler("onPlayerJoin", onPlayerJoin); addEventHandler("onPlayerJoined", onPlayerJoined); @@ -31,14 +27,12 @@ function addAllEventHandlers() { addEventHandler("onPlayerQuit", onPlayerQuit); addEventHandler("onElementStreamIn", onElementStreamIn); addEventHandler("onElementStreamOut", onElementStreamOut); - addEventHandler("onPedSpawn", onPedSpawn); - //addEventHandler("onPedEnterVehicle", onPedEnteringVehicle); - //addEventHandler("onPedExitVehicle", onPedExitingVehicle); addEventHandler("onPedEnteredVehicleEx", onPedEnteredVehicle); addEventHandler("onPedExitedVehicleEx", onPedExitedVehicle); - - //addEventHandler("OnPlayerCommand", onPlayerCommand); + addEventHandler("onPedEnteredSphereEx", onPedEnteredSphere); + addEventHandler("onPedExitedSphereEx", onPedExitedSphere); + addEventHandler("OnPickupPickedUp", onPedPickupPickedUp); } // =========================================================================== @@ -56,9 +50,9 @@ function onPlayerConnect(event, ipAddress, port) { function onPlayerJoin(event, client) { logToConsole(LOG_INFO, `[VRR.Event] Client ${getPlayerName(client)}[${getPlayerId(client)}] joining from ${getPlayerIP(client)}`); - if (isFadeCameraSupported()) { - fadeCamera(client, true, 1.0); - } + //if (isFadeCameraSupported()) { + // fadeCamera(client, true, 1.0); + //} //if(isCustomCameraSupported()) { // showConnectCameraToPlayer(client); @@ -78,7 +72,7 @@ function onPlayerJoin(event, client) { // =========================================================================== function onPlayerJoined(event, client) { - + //initClient(client); } // =========================================================================== @@ -253,161 +247,42 @@ function onResourceStop(event, resource) { saveServerDataToDatabase(); collectAllGarbage(); } + + disconnectFromDatabase(persistentDatabaseConnection, true); } // =========================================================================== -function onPlayerEnteredSphere(client, sphere) { +function onPedEnteredSphere(event, ped, sphere) { + if (ped.isType(ELEMENT_PLAYER)) { + let client = getClientFromPlayerElement(ped); -} - -// =========================================================================== - -function onPlayerExitedSphere(client, sphere) { - -} - -// =========================================================================== - -async function onPlayerEnteredVehicle(client, vehicle, seat) { - if (client == null) { - return false; - } - - if (getPlayerData(client) == false) { - return false; - } - - if (getGame() == AGRP_GAME_GTA_IV) { - vehicle = getVehicleFromIVNetworkId(clientVehicle); - } - //else { - // if (getPlayerPed(client) == null) { - // return false; - // } - // await waitUntil(() => client != null && getPlayerPed(client) != null && getPlayerVehicle(client) != null); - // vehicle = getPlayerVehicle(client); - //} - - if (!getVehicleData(vehicle)) { - return false; - } - - logToConsole(LOG_DEBUG, `[VRR.Event] ${getPlayerDisplayForConsole(client)} entered a ${getVehicleName(vehicle)} (ID: ${vehicle.getData("agrp.dataSlot")}, Database ID: ${getVehicleData(vehicle).databaseId})`); - - getPlayerData(client).lastVehicle = vehicle; - getVehicleData(vehicle).lastActiveTime = getCurrentUnixTimestamp(); - - if (getPlayerVehicleSeat(client) == AGRP_VEHSEAT_DRIVER) { - vehicle.engine = getVehicleData(vehicle).engine; - - if (getVehicleData(vehicle).buyPrice > 0) { - messagePlayerAlert(client, getLocaleString(client, "VehicleForSale", getVehicleName(vehicle), `{ALTCOLOUR}$${makeLargeNumberReadable(getVehicleData(vehicle).buyPrice)}{MAINCOLOUR}`, `{ALTCOLOUR}/vehbuy{MAINCOLOUR}`)); - resetVehiclePosition(vehicle); - } else if (getVehicleData(vehicle).rentPrice > 0) { - if (getVehicleData(vehicle).rentedBy != client) { - messagePlayerAlert(client, getLocaleString(client, "VehicleForRent", getVehicleName(vehicle), `{ALTCOLOUR}$${makeLargeNumberReadable(getVehicleData(vehicle).rentPrice)}{MAINCOLOUR}`, `{ALTCOLOUR}/vehrent{MAINCOLOUR}`)); - resetVehiclePosition(vehicle); - } else { - messagePlayerAlert(client, getLocaleString(client, "CurrentlyRentingThisVehicle", `{vehiclePurple}${getVehicleName(vehicle)}{MAINCOLOUR}`, `{ALTCOLOUR}$${makeLargeNumberReadable(getVehicleData(vehicle).rentPrice)}`, `{ALTCOLOUR}/stoprent{MAINCOLOUR}`)); - } - } else { - let ownerName = "Nobody"; - let ownerType = getLocaleString(client, "NotOwned"); - ownerType = toLowerCase(getVehicleOwnerTypeText(getVehicleData(vehicle).ownerType)); - switch (getVehicleData(vehicle).ownerType) { - case AGRP_VEHOWNER_CLAN: - ownerName = getClanData(getClanIndexFromDatabaseId(getVehicleData(vehicle).ownerId)).name; - ownerType = getLocaleString(client, "Clan"); - break; - - case AGRP_VEHOWNER_JOB: - ownerName = getJobData(getJobIdFromDatabaseId(getVehicleData(vehicle).ownerId)).name; - ownerType = getLocaleString(client, "Job"); - break; - - case AGRP_VEHOWNER_PLAYER: - let subAccountData = loadSubAccountFromId(getVehicleData(vehicle).ownerId); - ownerName = `${subAccountData.firstName} ${subAccountData.lastName}`; - ownerType = getLocaleString(client, "Player"); - break; - - case AGRP_VEHOWNER_BIZ: - ownerName = getBusinessData(getVehicleData(vehicle).ownerId).name; - ownerType = getLocaleString(client, "Business"); - break; - - default: - break; - } - messagePlayerAlert(client, getLocaleString(client, "VehicleBelongsTo", `{vehiclePurple}${getVehicleName(vehicle)}{MAINCOLOUR}`, `{ALTCOLOUR}${ownerName}{MAINCOLOUR}`, `{ALTCOLOUR}${ownerType}{MAINCOLOUR}`)); - } - - if (!getVehicleData(vehicle).engine) { - if (getVehicleData(vehicle).buyPrice == 0 && getVehicleData(vehicle).rentPrice == 0) { - if (doesPlayerHaveVehicleKeys(client, vehicle)) { - if (!doesPlayerHaveKeyBindsDisabled(client) && doesPlayerHaveKeyBindForCommand(client, "engine")) { - messagePlayerTip(client, `This ${getVehicleName(vehicle)}'s engine is off. Press {ALTCOLOUR}${toUpperCase(getKeyNameFromId(getPlayerKeyBindForCommand(client, "engine").key))} {MAINCOLOUR}to start it.`); - } else { - messagePlayerAlert(client, `This ${getVehicleName(vehicle)}'s engine is off. Use /engine to start it`); - } - } else { - messagePlayerAlert(client, `This ${getVehicleName(vehicle)}'s engine is off and you don't have the keys to start it`); - - } - } - resetVehiclePosition(vehicle); - } - - let currentSubAccount = getPlayerCurrentSubAccount(client); - - if (isPlayerWorking(client)) { - if (getVehicleData(vehicle).ownerType == AGRP_VEHOWNER_JOB) { - if (getVehicleData(vehicle).ownerId == getPlayerCurrentSubAccount(client).job) { - getPlayerCurrentSubAccount(client).lastJobVehicle = vehicle; - messagePlayerInfo(client, `Use /startroute to start working in this vehicle`); - } - } - } - - if (isPlayerWorking(client)) { - if (isPlayerOnJobRoute(client)) { - if (vehicle == getPlayerJobRouteVehicle(client)) { - stopReturnToJobVehicleCountdown(client); - } - } - } - } - - if (getVehicleData(vehicle).streamingRadioStation != -1) { - if (getPlayerData(client).streamingRadioStation != getVehicleData(vehicle).streamingRadioStation) { - playRadioStreamForPlayer(client, getServerData().radioStations[getVehicleData(vehicle).streamingRadioStation].url, true, getPlayerStreamingRadioVolume(client)); - } - } -} - -// =========================================================================== - -function onPlayerExitedVehicle(client, vehicle) { - getPlayerData(client).pedState = AGRP_PEDSTATE_READY; - - stopRadioStreamForPlayer(client); - - if (!getVehicleData(vehicle)) { - return false; - } - - if (isPlayerWorking(client)) { if (isPlayerOnJobRoute(client)) { - if (vehicle == getPlayerJobRouteVehicle(client)) { - startReturnToJobVehicleCountdown(client); + if (sphere == getJobRouteLocationData(getPlayerJob(client), getPlayerJobRoute(client), getPlayerJobRouteLocation(client)).marker) { + playerArrivedAtJobRouteLocation(client); } } } +} - getVehicleData(vehicle).lastActiveTime = getCurrentUnixTimestamp(); +// =========================================================================== - logToConsole(LOG_DEBUG, `[VRR.Event] ${getPlayerDisplayForConsole(client)} exited a ${getVehicleName(vehicle)} (ID: ${vehicle.getData("agrp.dataSlot")}, Database ID: ${getVehicleData(vehicle).databaseId})`); +function onPedExitedSphere(event, ped, sphere) { + +} + +// =========================================================================== + +function onPedPickupPickedUp(event, ped, pickup) { + if (ped.isType(ELEMENT_PLAYER)) { + let client = getClientFromPlayerElement(ped); + + if (isPlayerOnJobRoute(client)) { + if (pickup == getJobRouteLocationData(getPlayerJob(client), getPlayerJobRoute(client), getPlayerJobRouteLocation(client)).marker) { + playerArrivedAtJobRouteLocation(client); + } + } + } } // =========================================================================== @@ -769,22 +644,143 @@ function onPlayerCommand(event, client, command, params) { // =========================================================================== -function onPedEnteredVehicle(event, ped, vehicle, seat) { +function onPedExitedVehicle(event, ped, vehicle, seat) { if (ped.isType(ELEMENT_PLAYER)) { let client = getClientFromPlayerElement(ped); if (client != null) { - onPlayerEnteredVehicle(client, vehicle, seat); + getPlayerData(client).pedState = AGRP_PEDSTATE_READY; + + stopRadioStreamForPlayer(client); + + if (!getVehicleData(vehicle)) { + return false; + } + + if (isPlayerWorking(client)) { + if (isPlayerOnJobRoute(client)) { + if (vehicle == getPlayerJobRouteVehicle(client)) { + startReturnToJobVehicleCountdown(client); + } + } + } + + getVehicleData(vehicle).lastActiveTime = getCurrentUnixTimestamp(); + + logToConsole(LOG_DEBUG, `[VRR.Event] ${getPlayerDisplayForConsole(client)} exited a ${getVehicleName(vehicle)} (ID: ${vehicle.getData("agrp.dataSlot")}, Database ID: ${getVehicleData(vehicle).databaseId})`); } } } // =========================================================================== -function onPedExitedVehicle(event, ped, vehicle, seat) { +function onPedEnteredVehicle(event, ped, vehicle, seat) { if (ped.isType(ELEMENT_PLAYER)) { let client = getClientFromPlayerElement(ped); if (client != null) { - onPlayerExitedVehicle(client, vehicle, seat); + if (getPlayerData(client) == false) { + return false; + } + + if (getGame() == AGRP_GAME_GTA_IV) { + vehicle = getVehicleFromIVNetworkId(clientVehicle); + } + + if (!getVehicleData(vehicle)) { + return false; + } + + logToConsole(LOG_DEBUG, `[VRR.Event] ${getPlayerDisplayForConsole(client)} entered a ${getVehicleName(vehicle)} (ID: ${vehicle.getData("agrp.dataSlot")}, Database ID: ${getVehicleData(vehicle).databaseId})`); + + getPlayerData(client).lastVehicle = vehicle; + getVehicleData(vehicle).lastActiveTime = getCurrentUnixTimestamp(); + + if (getPlayerVehicleSeat(client) == AGRP_VEHSEAT_DRIVER) { + vehicle.engine = getVehicleData(vehicle).engine; + + if (getVehicleData(vehicle).buyPrice > 0) { + messagePlayerAlert(client, getLocaleString(client, "VehicleForSale", getVehicleName(vehicle), `{ALTCOLOUR}$${makeLargeNumberReadable(getVehicleData(vehicle).buyPrice)}{MAINCOLOUR}`, `{ALTCOLOUR}/vehbuy{MAINCOLOUR}`)); + resetVehiclePosition(vehicle); + } else if (getVehicleData(vehicle).rentPrice > 0) { + if (getVehicleData(vehicle).rentedBy != client) { + messagePlayerAlert(client, getLocaleString(client, "VehicleForRent", getVehicleName(vehicle), `{ALTCOLOUR}$${makeLargeNumberReadable(getVehicleData(vehicle).rentPrice)}{MAINCOLOUR}`, `{ALTCOLOUR}/vehrent{MAINCOLOUR}`)); + resetVehiclePosition(vehicle); + } else { + messagePlayerAlert(client, getLocaleString(client, "CurrentlyRentingThisVehicle", `{vehiclePurple}${getVehicleName(vehicle)}{MAINCOLOUR}`, `{ALTCOLOUR}$${makeLargeNumberReadable(getVehicleData(vehicle).rentPrice)}`, `{ALTCOLOUR}/stoprent{MAINCOLOUR}`)); + } + } else { + let ownerName = "Nobody"; + let ownerType = getLocaleString(client, "NotOwned"); + ownerType = toLowerCase(getVehicleOwnerTypeText(getVehicleData(vehicle).ownerType)); + switch (getVehicleData(vehicle).ownerType) { + case AGRP_VEHOWNER_CLAN: + ownerName = getClanData(getClanIndexFromDatabaseId(getVehicleData(vehicle).ownerId)).name; + ownerType = getLocaleString(client, "Clan"); + break; + + case AGRP_VEHOWNER_JOB: + ownerName = getJobData(getJobIdFromDatabaseId(getVehicleData(vehicle).ownerId)).name; + ownerType = getLocaleString(client, "Job"); + break; + + case AGRP_VEHOWNER_PLAYER: + let subAccountData = loadSubAccountFromId(getVehicleData(vehicle).ownerId); + ownerName = `${subAccountData.firstName} ${subAccountData.lastName}`; + ownerType = getLocaleString(client, "Player"); + break; + + case AGRP_VEHOWNER_BIZ: + ownerName = getBusinessData(getVehicleData(vehicle).ownerId).name; + ownerType = getLocaleString(client, "Business"); + break; + + default: + break; + } + messagePlayerAlert(client, getLocaleString(client, "VehicleBelongsTo", `{vehiclePurple}${getVehicleName(vehicle)}{MAINCOLOUR}`, `{ALTCOLOUR}${ownerName}{MAINCOLOUR}`, `{ALTCOLOUR}${ownerType}{MAINCOLOUR}`)); + } + + if (!getVehicleData(vehicle).engine) { + if (getVehicleData(vehicle).buyPrice == 0 && getVehicleData(vehicle).rentPrice == 0) { + if (doesPlayerHaveVehicleKeys(client, vehicle)) { + if (!doesPlayerHaveKeyBindsDisabled(client) && doesPlayerHaveKeyBindForCommand(client, "engine")) { + messagePlayerTip(client, `This ${getVehicleName(vehicle)}'s engine is off. Press {ALTCOLOUR}${toUpperCase(getKeyNameFromId(getPlayerKeyBindForCommand(client, "engine").key))} {MAINCOLOUR}to start it.`); + } else { + messagePlayerAlert(client, `This ${getVehicleName(vehicle)}'s engine is off. Use /engine to start it`); + } + } else { + messagePlayerAlert(client, `This ${getVehicleName(vehicle)}'s engine is off and you don't have the keys to start it`); + + } + } + resetVehiclePosition(vehicle); + } + + let currentSubAccount = getPlayerCurrentSubAccount(client); + + if (isPlayerWorking(client)) { + if (getVehicleData(vehicle).ownerType == AGRP_VEHOWNER_JOB) { + if (getVehicleData(vehicle).ownerId == getPlayerCurrentSubAccount(client).job) { + getPlayerCurrentSubAccount(client).lastJobVehicle = vehicle; + messagePlayerInfo(client, `Use /startroute to start working in this vehicle`); + } + } + } + + if (isPlayerWorking(client)) { + if (isPlayerOnJobRoute(client)) { + if (vehicle == getPlayerJobRouteVehicle(client)) { + stopReturnToJobVehicleCountdown(client); + } + } + } + } + + let radioStationIndex = getVehicleData(vehicle).streamingRadioStationIndex; + if (radioStationIndex != -1) { + if (getPlayerData(client).streamingRadioStation != radioStationIndex) { + playRadioStreamForPlayer(client, getRadioStationData(radioStationIndex).url, true, getPlayerStreamingRadioVolume(client)); + } + } } } } @@ -795,7 +791,7 @@ function onPedEnteringVehicle(event, ped, vehicle, seat) { if (ped.isType(ELEMENT_PLAYER)) { let client = getClientFromPlayerElement(ped); if (client != null) { - onPlayerEnteringVehicle(client, vehicle, seat); + } } }