Having trouble to get this to run. Any help or advice??
var loggedIn = "0";
var timeUpdate = 0;
var id = 0;
var name = "";
var kills = 0;
var deaths = 0;
var items;
var itemSlots = 0;
var usedSlots = 0;
var currentLoot = -1;
var currentVeh = -1;
var currentBankPos = null;
var backpack = "";
var lootPos = null;
var hunger = 100;
var thirst = 100;
var inWater = false;
var weaponHidden = false;
var lastWeapon = "";
var currentGas = -1;
var res_X = API.getScreenResolutionMantainRatio().Width;
var res_y = API.getScreenResolutionMantainRatio().Height;
var showQR = false;
var playSounds = true;
var openLootTimer = 0;
var openLootCheck = 30;
var interiorTimer = 0;
var interiorCheck = 30;
var lastWeaponTimer = 0;
var lastWeaponCheck = 30;
var blipDistTimer = 0;
var blipDistCheck = 300;
var currentZombies = null;
var zombiePositions = null;
var zombieCount = -1;
var menuPool = API.getMenuPool();
var freqBlips = [];
var freqBlipsCount = -1;
var inSafeZone = false;
var inventoryWindow = API.createMenu("Inventory", -215, 0, 6);
var lootWindow = API.createMenu("Looting", -215, 0, 6);
var useItemWindow = API.createMenu("Item", -215, 0, 6);
var genderWindow = API.createMenu("Select Gender", -215, 0, 6);
var carWindow = API.createMenu("Vehicle", -215, 0, 6);
var bankWindow = API.createMenu("Vault", -315, 0, 6);
var storeWindow = API.createMenu("Store Item", -315, 0, 6);
API.callNative("SET_FRONTEND_RADIO_ACTIVE", false);
API.onUpdate.connect(function (sender, args)
{
if (menuPool != null)
{
menuPool.ProcessMenus();
}
API.callNative("DISABLE_CONTROL_ACTION", 0, 37, true);
API.callNative("DISABLE_CONTROL_ACTION", 0, 81, true);
API.callNative("DISABLE_CONTROL_ACTION", 0, 82, true);
API.callNative("DISABLE_CONTROL_ACTION", 0, 83, true);
API.callNative("DISABLE_CONTROL_ACTION", 0, 84, true);
API.callNative("DISABLE_CONTROL_ACTION", 0, 85, true);
API.callNative("SET_PLAYER_WEAPON_DEFENSE_MODIFIER", 0, -1);
//API.callNative("SET_PLAYER_WEAPON_DAMAGE_MODIFIER", 0, 500);
if (loggedIn == "1")
{/*
if (currentZombies != null)
{
for (var i = 0; i < zombieCount; i++)
{
var zombie = currentZombies[i];
var startPos = API.getEntityPosition(zombie);
var endPos = zombiePositions[i];
API.setEntityPosition(zombie, API.lerpVector(startpos, endPos, 1.5, 1.5));
}
}*/
if (API.isPlayerShooting(API.getLocalPlayer()))
{
var aimPos = API.getPlayerAimingPoint(API.getLocalPlayer());
var camPos = API.getGameplayCamPos();
aimPos = new Vector3 (((aimPos.X-camPos.X) * 12) + camPos.X, ((aimPos.Y-camPos.Y) * 12) + camPos.Y, ((aimPos.Z-camPos.Z) * 12) + camPos.Z);
//var rayCast = API.createRaycast(camPos, aimPos, 1 | 16 | 12, API.getLocalPlayer());
var rayCast = API.createRaycast(camPos, aimPos, 1 | 10 | 12 | 16, API.getLocalPlayer());
if (rayCast.didHitEntity)
{
//Vector3 headPos = API.fetchNativeFromPlayer<Vector3>(player, Hash.GET_PED_BONE_COORDS, victim.handle, 31086, 0, 0, 0);
var headPos = API.returnNative("GET_PED_BONE_COORDS", 5, rayCast.hitEntity, 31086, 0, 0, 0);
API.triggerServerEvent("CheckRaycast", rayCast.hitEntity, rayCast.hitCoords, headPos);
}
}
if (API.isPlayerInFreefall(API.getLocalPlayer()))
{
API.drawText("Left-Click to Deploy Parachute!", res_X / 2, res_y - 380, 2, 255, 255, 255, 255, 7, 1, true, true, 0);
//API.drawText(string caption, double xPos, double yPos, double scale, int r, int g, int b, int alpha, int font, int justify, bool shadow, bool outline, int wordWrap);
}
if (inSafeZone)
{
API.callNative("DISABLE_CONTROL_ACTION", 0, 24, true);
//API.callNative("DISABLE_CONTROL_ACTION", 0, 23, true);
}
inWater = API.returnNative("IS_PED_SWIMMING", 8, API.getLocalPlayer());
if (inventoryWindow.Visible || lootWindow.Visible || useItemWindow.Visible || carWindow.Visible || bankWindow.Visible || storeWindow.Visible)
{
API.callNative("DISABLE_CONTROL_ACTION", 0, 24, true);
API.callNative("DISABLE_CONTROL_ACTION", 0, 25, true);
API.callNative("DISABLE_CONTROL_ACTION", 0, 257, true);
API.callNative("DISABLE_CONTROL_ACTION", 0, 1, true);
API.callNative("DISABLE_CONTROL_ACTION", 0, 2, true);
}
if (openLootTimer < openLootCheck)
openLootTimer++;
if (interiorTimer < interiorCheck)
interiorTimer++;
if (lastWeaponTimer < lastWeaponCheck)
lastWeaponTimer++;
if (lootWindow.Visible)
{
if (currentLoot != null)
{
var currentLootPos = API.getEntityPosition(currentLoot);
if (API.getEntityPosition(API.getLocalPlayer()).DistanceTo(currentLootPos) > 3)
{
lootWindow.Visible = false;
}
}
}
if (bankWindow.Visible || storeWindow.Visible)
{
if (currentBankPos != null)
{
if (API.getEntityPosition(API.getLocalPlayer()).DistanceTo(currentBankPos) > 3)
{
bankWindow.Visible = false;
storeWindow.Visible = false;
}
}
}
if (carWindow.Visible)
{
if (currentVeh != null)
{
var currentCarPos = API.getEntityPosition(currentVeh);
if (API.getEntityPosition(API.getLocalPlayer()).DistanceTo(currentCarPos) > 5)
{
carWindow.Visible = false;
}
}
}
if (inSafeZone)
{
API.drawText("Safe Zone", res_X - 20, 110, 1, 44, 213, 222, 255, 7, 2, true, true, 0);
}
if (showQR) {
var pont = new Point(30, 330);
var size = new Size(200, 200);
API.dxDrawTexture("QRDiscord.png", pont, size);
API.drawText("Discord", 470, 370, 2, 44, 213, 222, 255, 7, 1, true, true, 0);
}
if (thirst < 10)
API.drawText("THIRST", res_X - 90, 221, 0.7, 204, 0, 0, 255, 4, 1, false, false, 0);
else
API.drawText("THIRST", res_X - 90, 221, 0.7, 255, 255, 255, 255, 4, 1, false, false, 0);
API.drawRectangle(res_X - 170, 221, 160, 50, 0, 0, 0, 255);
API.drawRectangle(res_X - 160, 231, 140 * (thirst / 100), 30, 51, 102, 255, 255);
if (hunger < 10)
API.drawText("HUNGER", res_X - 90, 280, 0.7, 204, 0, 0, 255, 4, 1, false, false, 0);
else
API.drawText("HUNGER", res_X - 90, 280, 0.7, 255, 255, 255, 255, 4, 1, false, false, 0);
API.drawRectangle(res_X - 170, 280, 160, 50, 0, 0, 0, 255);
API.drawRectangle(res_X - 160, 290, 140 * (hunger / 100), 30, 102, 102, 51, 255);
if (currentGas != -1)
{
API.drawText("GAS: " + currentGas + "%", res_X - 90, 162, 0.7, 255, 255, 255, 255, 4, 1, false, false, 0);
API.drawRectangle(res_X - 170, 162, 160, 50, 0, 0, 0, 255);
API.drawRectangle(res_X - 160, 172, 140 * (currentGas / 100), 30, 102, 102, 51, 255);
}
if (timeUpdate >= 50)
{
//API.triggerServerEvent("SubtitleRequest");
API.triggerServerEvent("NativeCheck", API.getGamePlayer());
timeUpdate = 0;
}
else
timeUpdate += 1;
}
});
function openInventory()
{
if (!inventoryWindow.Visible)
{
menuPool = API.getMenuPool();
inventoryWindow = API.createMenu(backpack + " (" + usedSlots + "/" + itemSlots + ")", -215, 0, 4);
menuPool.Add(inventoryWindow);
inventoryWindow.Visible = true;
for (var i = 0; i < usedSlots; i++)
{
var item = addInventoryItem(itemCounts[i] + ": " + items[i], items[i])
inventoryWindow.AddItem(item);
}
}
else
inventoryWindow.Visible = false;
}
function openLootWindow(lootItems, lootItemCounts, storageName, bagSlots, usedSlots)
{
menuPool = API.getMenuPool();
lootWindow = API.createMenu(storageName + " (" + usedSlots + "/" + bagSlots + ")", -215, 0, 4);
menuPool.Add(lootWindow);
lootWindow.Visible = true;
for (var i = 0; i < usedSlots; i++)
{
var item = addLootItem(lootItemCounts[i] + ": " + lootItems[i], lootItems[i])
lootWindow.AddItem(item);
}
}
function openBankWindow(lootItems, lootItemCounts, storageName, bagSlots, usedSlots)
{
//playerBank.getItemString(), playerBank.getItemCounts(), playerBank.backpack, playerBank.itemSlots, playerBank.items.Count, closestLoot);
menuPool = API.getMenuPool();
bankWindow = API.createMenu("Vault" + " (" + usedSlots + "/" + bagSlots + ")", -215, 0, 4);
menuPool.Add(bankWindow);
bankWindow.Visible = true;
for (var i = 0; i < usedSlots; i++)
{
var item = addBankItem(lootItemCounts[i] + ": " + lootItems[i], lootItems[i])
bankWindow.AddItem(item);
}
var storeButton = API.createMenuItem("~g~Store Item", "Store an item in your vault.");
bankWindow.AddItem(storeButton);
storeButton.Activated.connect(function (sender, item, index) {
bankWindow.Visible = false;
openStoreItemWindow();
});
}
function openStoreItemWindow() {
if (!storeWindow.Visible) {
menuPool = API.getMenuPool();
storeWindow = API.createMenu("Store Item", -215, 0, 4);
menuPool.Add(storeWindow);
storeWindow.Visible = true;
for (var i = 0; i < usedSlots; i++) {
var item = addStoreItem(itemCounts[i] + ": " + items[i], items[i])
storeWindow.AddItem(item);
}
}
else
storeWindow.Visible = false;
}
function openCarWindow(vehName, gas)
{
if (!carWindow.Visible) {
menuPool = API.getMenuPool();
carWindow = API.createMenu("~b~" + vehName + "~w~ - ~g~GAS: " + gas + "%", -215, 0, 4);
menuPool.Add(carWindow);
carWindow.Visible = true;
var gasButton = API.createMenuItem("~g~Fill Gas", "Requires \"Jerry Can (Full)\"");
carWindow.AddItem(gasButton);
gasButton.Activated.connect(function (sender, item, index) {
carWindow.Visible = false;
API.triggerServerEvent("TryFillGas", currentVeh);
});
var lockButton = API.createMenuItem("~b~Lock/Unlock", "Lock this car for 5 minutes.");
carWindow.AddItem(lockButton);
lockButton.Activated.connect(function (sender, item, index) {
carWindow.Visible = false;
API.triggerServerEvent("TryLockCar", currentVeh);
});
var repairButton = API.createMenuItem("~o~Repair", "Requires \"Repair Kit\"");
carWindow.AddItem(repairButton);
repairButton.Activated.connect(function (sender, item, index) {
carWindow.Visible = false;
API.triggerServerEvent("TryRepair", currentVeh);
});
repairButton.Activated.connect(function (sender, item, index) {
carWindow.Visible = false;
API.triggerServerEvent("TryRepair", currentVeh);
});
/*
for (var i = 0; i < itemSlots; i++)
{
if ((i + 1) <= usedSlots) {
var item = addLootItem(lootItemCounts[i] + ": " + lootItems[i], lootItems[i])
carWindow.AddItem(item);
}
else
{
var emptySlot = API.createMenuItem("EMPTY SLOT", "");
carWindow.AddItem(emptySlot);
emptySlot.Activated.connect(function (sender, item, index) {
carWindow.Visible = false;
//openUseInventory();
});
}
}*/
}
else
{
//openLootTimer = 100;
carWindow.Visible = false;
}
}
function openSelectGender()
{
menuPool = API.getMenuPool();
genderWindow = API.createMenu("Select Gender", -215, 0, 4);
menuPool.Add(genderWindow);
genderWindow.Visible = true;
var maleButton = API.createMenuItem("Male", "");
var femaleButton = API.createMenuItem("Female", "");
genderWindow.AddItem(maleButton);
genderWindow.AddItem(femaleButton);
maleButton.Activated.connect(function (sender, item, index) {
genderWindow.Visible = false;
API.triggerServerEvent("SelectGender", "male");
});
femaleButton.Activated.connect(function (sender, item, index) {
genderWindow.Visible = false;
API.triggerServerEvent("SelectGender", "female");
});
}
function openUseItemWindow(itemName)
{
menuPool = API.getMenuPool();
useItemWindow = API.createMenu(itemName, -215, 0, 4);
menuPool.Add(useItemWindow);
useItemWindow.Visible = true;
var use = API.createMenuItem("Use", "");
var drop = API.createMenuItem("Drop", "");
useItemWindow.AddItem(use);
useItemWindow.AddItem(drop);
use.Activated.connect(function (sender, item, index) {
useItemWindow.Visible = false;
API.triggerServerEvent("RequestUse", itemName, inWater);
});
drop.Activated.connect(function (sender, item, index) {
useItemWindow.Visible = false;
API.triggerServerEvent("RequestDrop", itemName);
});
}
function addLootItem(displayname, itemName) {
var element = API.createMenuItem(displayname, "")
element.Activated.connect(function (menu, item) {
API.triggerServerEvent("TryLoot", itemName, currentLoot);
lootWindow.Visible = false;
});
return element
}
function addInventoryItem(displayname, itemName){
var element = API.createMenuItem(displayname, "Press Enter to Use")
element.Activated.connect(function (menu, item)
{
openUseItemWindow(itemName);
inventoryWindow.Visible = false;
});
return element
}
function addBankItem(displayname, itemName) {
var element = API.createMenuItem(displayname, "")
element.Activated.connect(function (menu, item) {
API.triggerServerEvent("TryLootBank", itemName);
bankWindow.Visible = false;
});
return element
}
function addStoreItem(displayname, itemName)
{
var element = API.createMenuItem(displayname, "")
element.Activated.connect(function (menu, item)
{
API.triggerServerEvent("TryStoreItem", itemName);
storeWindow.Visible = false;
});
return element
}
API.onPlayerEnterVehicle.connect(function (veh) {
API.callNative("SET_VEHICLE_RADIO_ENABLED", veh, false);
});
API.onKeyDown.connect(function (sender, args) {
if (args.KeyCode == Keys.I && loggedIn == "1") {
openInventory();
}
if (args.KeyCode == Keys.Tab && loggedIn == "1")
{
if (lastWeaponTimer >= lastWeaponCheck)
{
lastWeaponTimer = 0;
if (weaponHidden)
API.triggerServerEvent("RequestUse", lastWeapon, inWater);
else
{
API.triggerServerEvent("HideWeapon");
weaponHidden = true;
}
}
}
if (args.KeyCode == Keys.E && loggedIn == "1") {
if (lootWindow.Visible || carWindow.Visible) {
lootWindow.Visible = false;
carWindow.Visible = false;
}
else {
if (openLootTimer >= openLootCheck) {
openLootTimer = 0;
API.triggerServerEvent("FindLoot");
}
}
}
if (args.KeyCode == Keys.Enter && loggedIn == "1") {
if (interiorTimer >= interiorCheck && !bankWindow.Visible && !storeWindow.Visible && !inventoryWindow.Visible && !lootWindow.Visible && !useItemWindow.Visible) {
interiorTimer = 0;
API.triggerServerEvent("EnterKey");
}
}
if (args.KeyCode == Keys.X)
{
}
/*
if (args.KeyCode == Keys.Z) {
var aimingPoint = API.getPlayerAimingPoint(API.getLocalPlayer());
API.triggerServerEvent("SpawnBox2", aimingPoint);
}*/
});
API.onLocalPlayerDamaged.connect(function (enemy, weapon, bone)
{
if (enemy != null)
{
API.triggerServerEvent("HurtPlayer", enemy);
}
var veh = API.returnNative("GET_VEHICLE_PED_IS_USING", 0, API.getLocalPlayer());
var inCar = API.returnNative("IS_PED_IN_VEHICLE", 8, API.getLocalPlayer(), veh);
if (bone == 31086 && inCar == true) // Head
{
API.triggerServerEvent("Headshot", enemy);
API.setPlayerHealth(-1);
}
});
API.onServerEventTrigger.connect(function (eventName, args) {
if (eventName == "Countdown") {
API.showShard("3");
API.sleep(1000);
API.showShard("2");
API.sleep(1000);
API.showShard("1");
API.sleep(1000);
API.showShard("Go!", 2000);
}
else if (eventName == "SetSubtitle")
{
//API.displaySubtitle(args[0], 5000);
}
else if (eventName == "SendShard")
{
API.showShard(args[0], args[1]);
}
else if (eventName == "PlaySound")
{
if (playSounds)
{
API.stopAudio();
//API.startAudio(args[0]);
}
}
else if (eventName == "StopSound")
{
API.stopAudio();
}
else if (eventName == "MakeCamera")
{
var newCamera = API.createCamera(args[0], args[1]);
API.setActiveCamera(newCamera);
}
else if (eventName == "ResetCamera")
{
API.setActiveCamera(null);
}
else if (eventName == "UpdateClientValues")
{
id = args[0];
kills = args[1];
deaths = args[2];
loggedIn = args[3];
items = args[4];
itemCounts = args[5];
itemSlots = args[6];
backpack = args[7];
usedSlots = args[8];
hunger = args[9];
thirst = args[10];
}
else if (eventName == "SetQR")
{
showQR = args[0];
}
else if (eventName == "ToggleSound")
{
playSounds = !playSounds;
if (playSounds)
{
API.sendNotification("Sounds are turned on.");
}
else
{
API.stopAudio();
API.sendNotification("Sounds are turned off.");
}
}
else if (eventName == "OpenLoot")
{
openLootWindow(args[0], args[1], args[2], args[3], args[4]);
currentLoot = args[5];
var playerPos = API.getEntityPosition(API.getLocalPlayer());
API.callNative("CREATE_PED", 1, -1404353274, playerPos.X, playerPos.Y, playerPos.Z, 0, true, true);
//API.callNative("TASK_COMBAT_PED", newPed, API.getLocalPlayer(), 0, 16);
try
{
lootPos = args[6];
} catch (e)
{
}
}
else if (eventName == "SetLastWeapon")
{
lastWeapon = args[0];
weaponHidden = false;
}
else if (eventName == "InterpZombies")
{
zombies = args[0];
positions = args[0];
}
else if (eventName == "OpenGenderSelect")
{
openSelectGender();
}
else if (eventName == "OpenVehicle")
{
//API.triggerClientEvent(player, "OpenVehicle", vehName, gas, closestCar, closestCarPos);
openCarWindow(args[0], args[1]);
currentVeh = args[2];
try
{
lootPos = args[3];
} catch (e) {
}
}
else if (eventName == "SetGas")
{
currentGas = args[0];
}
else if (eventName == "DeleteBlips")
{
var deleteBlips = args[0];
var blipCount = args[1];
for (var i = 0; i < blipCount; i++)
{
API.deleteEntity(deleteBlips[i]);
}
}
else if (eventName == "SetFreqBlips")
{
freqBlips = args[0];
freqBlipsCount = args[1];
}
else if (eventName == "ClearFreqBlips")
{
freqBlipsCount = -1;
}
else if (eventName == "ClearGas")
{
currentGas = -1;
}
else if (eventName == "SetSafeZone")
{
inSafeZone = args[0];
}
else if (eventName == "OpenBank")
{
//playerBank.getItemString(), playerBank.getItemCounts(), playerBank.backpack, playerBank.itemSlots, playerBank.items.Count, closestLoot);
openBankWindow(args[0], args[1], args[2], args[3], args[4]);
try
{
currentBankPos = args[5];
} catch (e)
{
}
}
else if (eventName == "OpenRadioWindow")
{
var newFreq = API.getUserInput("", 4);
API.triggerServerEvent("SetRadio", newFreq)
}
});