// =========================================================================== // Asshat-Gaming Roleplay // https://github.com/VortrexFTW/gtac_asshat_rp // Copyright (c) 2020 Asshat-Gaming (https://asshatgaming.com) // --------------------------------------------------------------------------- // FILE: event.js // DESC: Provides handlers for built in GTAC and Asshat-Gaming created events // TYPE: Server (JavaScript) // =========================================================================== addEventHandler("OnPlayerJoined", function(event, client) { setTimeout(function() { initClient(client); //triggerNetworkEvent("ag.connectCamera", client, serverConfig.connectCameraPosition[getServerGame()], serverConfig.connectCameraLookAt[getServerGame()]); //client.setData("ag.loginAttemptsRemaining", 3, false); //let tempAccountData = loadAccountFromName(client.name); //let tempSubAccounts = loadSubAccountsFromAccount(tempAccountData.databaseId); //serverData.clients[client.index] = new serverClasses.clientData(client, tempAccountData, tempSubAccounts); //sendAllBlips(client); //if(tempAccountData != false) { // triggerNetworkEvent("ag.showLogin", client); // //messageClient("Welcome back to Asshat Gaming RP, " + String(client.name) + "! Please /login to continue.", client, serverConfig.colour.byName["white"]); //} else { // triggerNetworkEvent("ag.showRegistration", client); // //messageClient("Welcome to Asshat Gaming RP, " + String(client.name) + "! Please /register to continue.", client, serverConfig.colour.byName["white"]); //} }, 500); }); // --------------------------------------------------------------------------- addEventHandler("OnPlayerQuit", function(event, client, quitReasonId) { saveClientToDatabase(client); serverData.clients[client.index] = null; }); // --------------------------------------------------------------------------- addEventHandler("OnPedSpawn", function(event, ped) { if(ped.isType(ELEMENT_PLAYER)) { let client = getClientFromPlayerElement(ped); //triggerNetworkEvent("ag.locations", client, serverData.policeStations[getServerGame()], serverData.fireStations[getServerGame()], serverData.hospitals[getServerGame()], serverData.payAndSprays[getServerGame()], serverData.ammunations[getServerGame()], serverData.jobs[getServerGame()]); ped.setData("ag.name", getClientSubAccountName(client), true); } }); // --------------------------------------------------------------------------- addEventHandler("OnPedWasted", function(event, wastedPed, killerPed, weaponId, pedPiece) { if(ped.isType(ELEMENT_PLAYER)) { let closestHospital = getClosestHospital(wastedPed.position); let client = getClientFromPedElement(wastedPed); client.despawnPlayer(); if(getClientCurrentSubAccount(client).inJail) { let closestJail = getClosestJail(wastedPed.position); spawnPlayer(client, closestJail.position, closestJail.heading, getClientCurrentSubAccount(client).skin); } else { spawnPlayer(client, closestHospital.position, closestHospital.heading, getClientCurrentSubAccount(client).skin); } } }); // --------------------------------------------------------------------------- bindEventHandler("OnResourceStop", thisResource, function(event, resource) { //console.log("[Asshat.Event]: Resource stopping. Saving all data to database ..."); //saveAllClientsToDatabase(); //console.log("[Asshat.Event]: All data saved to database successfully!"); }); // --------------------------------------------------------------------------- bindEventHandler("OnResourceStart", thisResource, function(event, resource) { //initAllClients(); }); // --------------------------------------------------------------------------- addEventHandler("onPedEnterVehicle", function(event, ped, vehicle, seat) { ped.setData("ag.vehSeat", seat, false); let vehicleData = getVehicleData(vehicle); if(ped.isType(ELEMENT_PLAYER)) { let client = getClientFromPlayerElement(ped); let currentSubAccount = getClientCurrentSubAccount(client); if(currentSubAccount.isWorking) { if(vehicleData.ownerType == AG_VEHOWNER_JOB) { if(vehicleData.ownerId == getJobType(currentSubAccount.job)) { if(seat == 0) { getClientCurrentSubAccount(client).lastJobVehicle = vehicle; } } } } if(vehicleData.buyPrice > 0) { messageClientInfo(client, `This vehicle is for sale! Cost $${vehicleData.buyPrice}`); messageClientInfo(client, `Use /buycar if you'd like to buy this vehicle.`); } else { if(vehicleData.rentPrice > 0) { messageClientInfo(client, `This vehicle is for rent! Cost: $${vehicleData.rentPrice} per minute`); messageClientInfo(client, `Use /rentcar if you'd like to rent this vehicle.`); } } } }); // --------------------------------------------------------------------------- addEventHandler("onEntityProcess", function(event, entity) { /* if(entity.isType(ELEMENT_PLAYER)) { let client = getClientFromPlayerElement(entity); if(isNearJobPoint(entity.position) { let jobPoint = getNearbyJobPoint(entity); } } */ }); // --------------------------------------------------------------------------- addEventHandler("onPlayerChat", function(event, client, messageText) { event.preventDefault(); if(!getClientData(client).loggedIn) { messageClientError(client, "You need to login before you can chat!"); return false; } message(`${getClientSubAccountName(client)}: [#FFFFFF]${messageText}`, getClientChatColour(client)); }); // ---------------------------------------------------------------------------