Files
GTA4RP/scripts/server/item/walkie-talkie.js
2021-06-05 03:14:10 -05:00

122 lines
4.5 KiB
JavaScript

// ===========================================================================
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/gtac_roleplay
// ===========================================================================
// FILE: walkie-talkie.js
// DESC: Provides features and usage for the walkie-talkie item type
// TYPE: Server (JavaScript)
// ===========================================================================
// ===========================================================================
function getPlayerActiveWalkieTalkieFrequency(client) {
let walkieTalkieSlot = getPlayerFirstItemSlotByUseType(client, AG_ITEM_USETYPE_WALKIETALKIE);
if(walkieTalkieSlot != -1) {
if(getItemData(getPlayerData(client).hotBarItems[walkieTalkieSlot])) {
if(getItemData(getPlayerData(client).hotBarItems[walkieTalkieSlot]).enabled) {
return getItemData(getPlayerData(client).hotBarItems[walkieTalkieSlot]).value;
}
}
}
return false;
}
// ===========================================================================
function walkieTalkieTransmit(radioFrequency, messageText, transmittingPlayer) {
walkieTalkieOutgoingToNearbyPlayers(transmittingPlayer, messageText);
let clients = getClients();
for(let i in clients) {
if(isPlayerSpawned(clients[i])) {
if(!isSamePlayer(transmittingPlayer, clients[i])) {
if(getPlayerActiveWalkieTalkieFrequency(clients[i]) == radioFrequency) {
if(getItemData(getPlayerData(clients[i]).hotBarItems[getPlayerFirstItemSlotByUseType(clients[i], AG_ITEM_USETYPE_WALKIETALKIE)]).enabled) {
walkieTalkieIncomingToNearbyPlayers(clients[i], messageText);
}
}
}
}
}
}
// ===========================================================================
function walkieTalkieOutgoingToNearbyPlayers(client, messageText) {
let clients = getPlayersInRange(getPlayerPosition(client), getGlobalConfig().talkDistance);
for(let i in clients) {
messagePlayerNormal(clients[i], `[#CCCCCC]${getCharacterFullName(client)} [#AAAAAA](to radio): [#FFFFFF]${messageText}`);
}
}
// ===========================================================================
function walkieTalkieIncomingToNearbyPlayers(client, messageText) {
let clients = getPlayersInRange(getPlayerPosition(client), getGlobalConfig().walkieTalkieSpeakerDistance);
for(let i in clients) {
messagePlayerNormal(clients[i], `[#CCCCCC]${getCharacterFullName(client)} [#AAAAAA](from radio): [#FFFFFF]${messageText}`);
}
}
// ===========================================================================
function setWalkieTalkieFrequencyCommand(command, params, client) {
if(areParamsEmpty(params)) {
messagePlayerSyntax(client, getCommandSyntaxText(command));
return false;
}
if(isNaN(params)) {
messagePlayerError(client, `The frequency channel must be a number!`);
return false;
}
params = toInteger(params);
if(params < 100 || params > 500) {
messagePlayerError(client, `The frequency channel must be between 100 and 500!`);
return false;
}
if(!getPlayerActiveItem(client)) {
messagePlayerError(client, `You aren't holding a walkie talkie!`);
return false;
}
if(!getItemData(getPlayerActiveItem(client))) {
messagePlayerError(client, `You aren't holding a walkie talkie!`);
return false;
}
if(getItemData(getPlayerActiveItem(client)).enabled) {
if(doesPlayerHaveKeyBindForCommand(client, "use")) {
messagePlayerError(client, `Your walkie talkie is turned off. Press ${sdl.getKeyName(getPlayerKeyBindForCommand(client, "use").key)} to turn it on`);
} else {
messagePlayerError(client, `Your walkie talkie is turned off. Type [#AAAAAA]/use [#FFFFFF]to turn it on`);
}
return false;
}
getItemData(getPlayerActiveItem(client)).value = params*100;
messagePlayerSuccess(client, `You set the frequency of you walkie talkie in slot ${getPlayerData(client).activeHotbarSlot} to ${getItemValueDisplayForItem(getPlayerActiveItem(client))}`)
}
// ===========================================================================
function walkieTalkieChatCommand(command, params, client) {
if(areParamsEmpty(params)) {
messagePlayerSyntax(client, getCommandSyntaxText(command));
return false;
}
let walkieTalkieSlot = getPlayerFirstItemSlotByUseType(client, AG_ITEM_USETYPE_WALKIETALKIE);
if(!getItemData(getPlayerData(client).hotBarItems[walkieTalkieSlot]).enabled) {
messagePlayerError(client, "Please turn on a walkie talkie first!");
return false;
}
walkieTalkieTransmit(getPlayerActiveWalkieTalkieFrequency(client), params, client);
}
// ===========================================================================