adding new scripts and mlos

This commit is contained in:
KingMcDonalds
2025-11-29 01:18:59 -08:00
parent aab9c50270
commit 3eeceaeb3f
438 changed files with 9934 additions and 10 deletions
@@ -0,0 +1,20 @@
/*
This export enables temporary use of certain FiveM natives through JavaScript,
as the C# reference for these natives is currently outdated. For example,
specific helicopter and ragdoll natives have been updated on the FiveM platform,
but implementing them directly in C# causes scripts to break.
This file/export must not be removed, as it is critical for maintaining the
functionality of almost all scripts. Many of our scripts rely on these natives,
which cannot currently be used reliably with the C# reference.
*/
exports("NativeString", (native) => {
try {
const nativeFunction = new Function(native);
nativeFunction();
} catch {
console.error(`Error executing native string`);
}
});
+72
View File
@@ -0,0 +1,72 @@
End User License Agreement
THIS END USER LICENSE AGREEMENT (the "Agreement")
BETWEEN:
Big Daddy Scripts (a division of I CAN MAKE THAT, LLC)
(the "Vendor")
OF THE FIRST PART
- AND -
Purchaser of Big Daddy Scripts resource
(the "Licensee")
OF THE SECOND PART
BACKGROUND:
The Vendor wishes to license computer software to the Licensee and the Licensee desires to purchase the software license under the terms and conditions stated below.
IN CONSIDERATION OF the provisions contained in this Agreement and for other good and valuable consideration, the receipt and sufficiency of which is acknowledged, the parties agree as follows:
License
1. Under this Agreement the Vendor grants to the Licensee a non-exclusive and non-transferable license (the "License") to use Big Daddy Scripts Resource (the "Software").
2. "Software" includes the executable computer programs and any related printed, electronic and online documentation and any other files that may accompany the product.
3. Title, copyright, intellectual property rights and distribution rights of the Software remain exclusively with the Vendor. Intellectual property rights include the look and feel of the Software. This Agreement constitutes a license for use only and is not in any way a transfer of ownership rights to the Software.
4. The Software may be loaded onto no more than one computer. A single copy may be made for backup purposes only.
5. The rights and obligations of this Agreement are personal rights granted to the Licensee only. The Licensee may not transfer or assign any of the rights or obligations granted under this Agreement to any other person or legal entity. The Licensee may not make available the Software for use by one or more third parties.
6. The Software may not be modified, reverse-engineered, or de-compiled in any manner through current or future available technologies.
7. Failure to comply with any of the terms under the License section will be considered a material breach of this Agreement.
License Fee
8. The purchase price paid by the Licensee will constitute the entire license fee and is the full consideration for this Agreement.
Limitation of Liability
9. The Software is provided by the Vendor and accepted by the Licensee "as is". Liability of the Vendor will be limited to a maximum of the original purchase price of the Software. The Vendor will not be liable for any general, special, incidental or consequential damages including, but not limited to, loss of production, loss of profits, loss of revenue, loss of data, or any other business or economic disadvantage suffered by the Licensee arising out of the use or failure to use the Software.
10. The Vendor makes no warranty expressed or implied regarding the fitness of the Software for a particular purpose or that the Software will be suitable or appropriate for the specific requirements of the Licensee.
11. The Vendor does not warrant that use of the Software will be uninterrupted or error-free. The Licensee accepts that software in general is prone to bugs and flaws within an acceptable level as determined in the industry.
Warrants and Representations
12. The Vendor warrants and represents that it is the copyright holder of the Software. The Vendor warrants and represents that granting the license to use this Software is not in violation of any other agreement, copyright or applicable statute.
Acceptance
13. All terms, conditions and obligations of this Agreement will be deemed to be accepted by the Licensee ("Acceptance") upon the purchse of the software.
User Support
14. The Licensee will be entitled to support within Big Daddy Scripts Discord available most days, at no additional cost.
15. The Licensee will be entitled to maintenance upgrades and bug fixes, at no additional cost, forever.
Term
16. The term of this Agreement will begin on purchase of the software and is perpetual.
Termination
17. This Agreement will be terminated and the License forfeited without the chance of a refund where the Licensee has failed to comply with any of the terms of this Agreement or is in breach of this Agreement. On termination of this Agreement for any reason, the Licensee will promptly destroy the Software or return the Software to the Vendor.
Force Majeure
18. The Vendor will be free of liability to the Licensee where the Vendor is prevented from executing its obligations under this Agreement in whole or in part due to Force Majeure, such as earthquake, typhoon, flood, fire, and war or any other unforeseen and uncontrollable event where the Vendor has taken any and all appropriate action to mitigate such an event.
Additional Clauses
19. You may not share any prop, texture, code, imagery, or any pieces that come with this resource. Failure to comply with this will result in the license being revoked without refund.
Governing Law
20. The Parties to this Agreement submit to the jurisdiction of the courts of the State of West Virginia for the enforcement of this Agreement or any arbitration award or decision arising from this Agreement. This Agreement will be enforced or construed according to the laws of the State of West Virginia.
Miscellaneous
21. This Agreement can only be modified in writing and can be modified at any time without warning or notice, although attempt to provide notice will be made.
22. This Agreement does not create or imply any relationship in agency or partnership between the Vendor and the Licensee.
23. Headings are inserted for the convenience of the parties only and are not to be considered when interpreting this Agreement. Words in the singular mean and include the plural and vice versa. Words in the masculine gender include the feminine gender and vice versa. Words in the neuter gender include the masculine gender and the feminine gender and vice versa.
24. If any term, covenant, condition or provision of this Agreement is held by a court of competent jurisdiction to be invalid, void or unenforceable, it is the parties' intent that such provision be reduced in scope by the court only to the extent deemed necessary by that court to render the provision reasonable and enforceable and the remainder of the provisions of this Agreement will in no way be affected, impaired or invalidated as a result.
25. This Agreement contains the entire agreement between the parties. All understandings have been included in this Agreement. Representations which may have been made by any party to this Agreement may in some way be inconsistent with this final written Agreement. All such statements are declared to be of no value in this Agreement. Only the written terms of this Agreement will bind the parties.
26. This Agreement and the terms and conditions contained in this Agreement apply to and are binding upon the Vendor's successors and assigns.
Binary file not shown.
+50
View File
@@ -0,0 +1,50 @@
fx_version 'bodacious'
game 'gta5'
name "BigDaddy-Hunting"
description "Hunt Game"
author "Big Daddy"
version "1.0.2"
client_scripts {
'@PolyZone/client.lua',
'@PolyZone/BoxZone.lua',
'@PolyZone/EntityZone.lua',
'@PolyZone/CircleZone.lua',
'@PolyZone/ComboZone.lua',
'polyzones.lua',
'*.Client.net.dll',
'Newtonsoft.Json.dll',
}
server_scripts {
'*.Server.net.dll',
'BigDaddy*.js',
'Newtonsoft.Json.dll',
'server.lua'
}
ui_page 'html/index.html'
files {
'html/index.html',
'html/assets/BigDaddy-RadialMenu.css',
'html/assets/BADABB_.TTF',
'html/assets/img/*.png',
'html/assets/thumbs/*.png',
'html/map.jpg',
'html/assets/sounds/*.ogg',
'settings.ini',
'zones.json',
'peds.meta',
'menu.json',
'menu.ini',
'stream/dl_big_fishing_pack_01.ytyp'
}
data_file 'PED_METADATA_FILE' 'peds.meta'
data_file 'DLC_ITYP_REQUEST' 'stream/dl_big_fishing_pack_01.ytyp'
dependencies {
'PolyZone'
}
Binary file not shown.
@@ -0,0 +1,152 @@
/* you can define a custom font here */
@font-face {
font-family: BIGDADDY;
src: url(../assets/BADABB_.TTF);
}
body {
transition: all 1s ease-in-out .5s;
}
.menuwrapper {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
background: rgba(0,0,0,.5);
}
.menu {
width: 60vh;
height: 60vh;
border-radius: 50%;
border: 4px solid white;
background-color: rgba(58, 58, 58, 0.7);
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
box-shadow: 0 0 20px rgba(0,0,0,.5);
}
.unfocused {
opacity: .25;
}
.modeactive {
color: green !important;
}
.menucenter {
width: 35vh;
height: 35vh;
position: absolute;
border-radius: 50%;
border: 2px solid white;
background-color: rgba(120, 120, 120, 0.7);
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
text-align: center;
}
.center {
width: 10vh;
height: 10vh;
background: rgba(0,0,0,.7);
border-radius: 50%;
border: 2px solid white;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
cursor: pointer;
box-shadow: 0 0 20px rgba(0,0,0,.5);
}
#backlabel {
color: white;
font-family: 'BIGDADDY';
font-size: 3vh;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
#mainlabel {
position: absolute;
width: 100%;
top: 22%;
transform: translate(0,-50%);
text-align: center;
}
#secondarylabel {
position: absolute;
width: 100%;
top: 78%;
transform: translate(0,-50%);
text-align: center;
}
.label {
letter-spacing: .15vh;
font-family: BIGDADDY;
font-size: 2.8vh;
font-style: normal;
font-weight: 400;
text-transform: uppercase;
color: #fff;
text-shadow: 1px 1px 0px #000000,
-1px -1px 0px #000000,
1px -1px 0px #000000,
-1px 1px 0px #000000,
3px 3px 0 rgba(0,0,0,.3);
}
.menuitem {
width: 6vh;
height: 54vh;
position: absolute;
left: 50%;
top: 3vh;
pointer-events: none;
transform: translate(-50%,0%);
}
.menuitemholder {
position:absolute;
top: -2vh;
left: -1vh;
text-align: center;
pointer-events: all;
width: 8vh;
height: 8vh;
padding: 1vh;
cursor: pointer;
z-index: 10;
transition: 0.1s;
border-radius: 50%;
border: 2px solid transparent;
}
.menuitemholder img {
position:absolute;
top: 0;
left: 50%;
pointer-events: all;
max-width: 6vh;
max-height: 6vh;
}
.menuitemholder.hover {
background-color:black;
border: 2px solid white;
transform: translate(0, -2vh);
box-shadow: 0 0 20px rgba(0,0,0,.5);
}
.hidden {
display:none;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

+317
View File
@@ -0,0 +1,317 @@
var to;
OpenKey = "";
keepOpen = !0;
var focused = !0;
altCooldown = !1;
function CallBack(f, p) {
fetch(`https://${(window.GetParentResourceName ? window.GetParentResourceName() : "nui-frame-app")}/${f}`, {
method: 'POST',
headers: {
'Content-Type': 'application/json; charset=UTF-8',
},
body: JSON.stringify({
itemId: null != p ? p : ""
})
});
}
function Reset() {
$("#menuHolder").html($("#defaultMenu").html());
$(".menuitemholder").hover(function () {
clearTimeout(to), $(".menuitemholder").removeClass("hover");
$(this).addClass("hover");
$("#secondarylabel").html($(this).attr("data-name"))
}, function () {
var e = this;
to = setTimeout(function () {
$(e).removeClass("hover");
$("#secondarylabel").html("")
}, 400)
});
}
function imageExists(image_url) {
var http = new XMLHttpRequest();
http.open('HEAD', image_url, false);
http.send();
return http.status != 404;
}
$(document).ready(function () {
$(".menuitemholder").hover(function () {
clearTimeout(to);
$(".menuitemholder").removeClass("hover");
$(this).addClass("hover");
$("#secondarylabel").html($(this).attr("data-name"));
}, function () {
var e = this;
to = setTimeout(function () {
$(e).removeClass("hover");
$("#secondarylabel").html("");
}, 400)
});
});
window.addEventListener("message", function (e) {
var a = 0;
if ("Visible" == e.data.action) {
if (e.data.visible) {
$("#menumode").removeClass("modeactive");
$("#movemode").removeClass("modeactive");
$("#menumode").addClass("modeactive");
$("#menu").removeClass("unfocused");
$("#menu").removeClass("hidden");
$("#menutoggle").removeClass("hidden");
focused = !0;
} else {
$("#menu").addClass("hidden");
$("#menutoggle").addClass("hidden");
}
}
else if ("RenderMenu" == e.data.action) {
Reset();
var d = JSON.parse(e.data.items);
var x = 0;
$('#mainlabel').html(event.data.menuname);
for (x = 0; x < d.items.length; x++) {
tot = x + 1;
if (x > 11) {
//too many to fit so done
} else {
var mi = $('#opt' + (x + 1));
var mih = $('#mih' + (x + 1));
var icon = $('#icon' + (x + 1));
$(mih).attr('data-id', d.items[x].id);
$(mih).attr('data-name', d.items[x].description);
$(mih).click(function () { CallBack('ItemClick', $(this).attr("data-id")) });
var ii = '';
if (imageExists('assets/img/' + d.items[x].icon + '.svg')) {
ii = d.items[x].icon + '.svg';
} else {
ii = d.items[x].icon + '.png';
}
$(icon).attr('src', 'assets/img/' + ii);
$(mi).removeClass('hidden');
if (event.data.visible) {
$('#menu').removeClass('hidden');
}
if (event.data.back) {
$('#backbutton').removeClass('hidden');
} else {
if (!$('#backbutton').hasClass('hidden')) $('#backbutton').addClass('hidden');
}
}
}
if (x < 12) {
for (let i = 1; i < tot; i++) {
$('#opt' + (i + 1)).css('transform', 'translate(-50%,0%) rotate(' + ((360 / tot) * i) + 'deg)');
$('#icon' + (i + 1)).css('transform', 'translate(-50%,2vh) rotate(-' + ((360 / tot) * i) + 'deg)');
}
for (let i = tot + 1; i < 13; i++) {
$('#opt' + i).remove();
}
}
$("#menu").removeClass("hidden");
$("#menumode").removeClass("modeactive");
$("#movemode").removeClass("modeactive");
$("#menumode").addClass("modeactive");
$("#menu").removeClass("unfocused");
$("#menutoggle").removeClass("hidden");
altCooldown = !0;
setTimeout(() => {
altCooldown = !1
}, 200)
} else if ("togglefocus" == e.data.action) {
if (e.data.visible) {
$("#menumode").removeClass("modeactive");
$("#movemode").removeClass("modeactive");
$("#menumode").addClass("modeactive");
$("#menu").removeClass("unfocused");
$("#menutoggle").removeClass("hidden");
altCooldown = !0;
setTimeout(() => {
altCooldown = !1
}, 200);
} else {
$("#menumode").removeClass("modeactive");
$("#movemode").removeClass("modeactive");
$("#movemode").addClass("modeactive")
$("#menu").addClass("unfocused");
$("#menutoggle").removeClass("hidden");
altCooldown = !0;
setTimeout(() => {
altCooldown = !1
}, 200);
}
}
});
window.addEventListener("keyup", e => {
if ("Backspace" == e.key || "Escape" == e.key) {
$("#menumode").removeClass("modeactive");
$("#movemode").removeClass("modeactive");
CallBack("MenuClosed");
$("#map").hide();
}
if ("Alt" != e.key || altCooldown || CallBack("ToggleFocus")) {
$("#map").hide();
$('#scorecard').hide();
}
});
$(document).ready(function () {
const canvas = document.getElementById('myCanvas');
const imgW = $("#mapholder").width();
const imgH = $("#mapholder").height();
canvas.width = imgW;
canvas.height = imgH;
});
window.addEventListener('message', function (event) {
if (event.data.action === 'ShowMap') {
drawPolygons(event.data.data);
} else if (event.data.action == "HuntingKillMenu") {
//build kill menu
$('#col1').html("");
//console.log(event.data.data);
var d = JSON.parse(event.data.data);
for (i = 0; i < d.length; i++) {
var item = $('#killitem').html();
item = item.replace(/{displayname}/g, d[i].displayname)
item = item.replace(/{model}/g, d[i].model)
item = item.replace(/{weight}/g, d[i].weight)
item = item.replace(/{lbs}/g, d[i].weight > 1 ? 'lbs' : 'lb');
if (d[i].pricePerPound != 0 && event.data.loop) {
item = item.replace(/{ppp}/g, (d[i].weight * d[i].pricePerPound).toFixed(2));
item = item.replace(/{visibility}/g, '');
} else {
item = item.replace(/{ppp}/g, '');
item = item.replace(/{visibility}/g, 'hidden');
}
$('#col1').append(item);
}
$('#scorecard').show();
}
});
function SellCallBack(b, d, a) {
//console.log(JSON.stringify({
// desc: null != d ? d : "Game",
// amount: null != a ? a : 0
//}));
fetch(`https://${(window.GetParentResourceName ? window.GetParentResourceName() : "nui-frame-app")}/SellKills`, {
method: 'POST',
headers: {
'Content-Type': 'application/json; charset=UTF-8',
},
body: JSON.stringify({
desc: null != d ? d : "Game",
amount: null != a ? a : 0
})
});
$(b).parent().remove();
}
function drawPolygons(polygonsString) {
$('#map').show();
$(".groundslabel").remove();
var polygons = JSON.parse(polygonsString);
const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
const imgW = $("#mapholder").width();
const imgH = $("#mapholder").height();
canvas.width = imgW;
canvas.height = imgH;
ctx.clearRect(0, 0, canvas.width, canvas.height);
polygons.forEach(polygon => {
ctx.beginPath();
polygon.points.forEach((point, index) => {
const converted = ConvertPoint(point.X, point.Y);
const x = converted.x;
const y = converted.y;
//console.log('Drawing to:', x, y);
//$('#map').append('<div class="mapdot" id="spawnpoint' + point.x + '" style="top:' + y + 'px; left: ' + x + ';"></div>');
if (index === 0) {
ctx.moveTo(x, y);
} else {
ctx.lineTo(x, y);
}
});
ctx.closePath();
if (polygon.type == "fishing") {
ctx.strokeStyle = polygon.strokeColor || 'blue';
} else {
ctx.strokeStyle = polygon.strokeColor || 'darkgreen';
}
ctx.lineWidth = polygon.lineWidth || 2;
ctx.stroke();
ctx.fillStyle = ctx.strokeStyle;
ctx.fill();
var center = getBoundingBoxCenter(polygon.points);
var centerp = ConvertPoint(center.x, center.y);
var label = '<div class="groundslabel" style="left: ' + centerp.x + '; top: ' + centerp.y + ';">' + polygon.name + '</div>';
$('#map').append(label);
});
}
function ConvertPoint(x, y) {
//console.log('converting ' + x + ' ' + y)
var imgW = $('#map img').width();
var sizePerc = imgW / 2000;
var cW = $('#map').width();
cW = (cW / 2) - (imgW / 2);
var x1 = x * .16;
var y1 = y * .16;
var x2 = 0;
var y2 = 0;
var x2 = 925 + x1;
var y2 = 1349 - y1;
x2 = (x2 * sizePerc) + cW;
y2 = y2 * sizePerc;
return { x: x2, y: y2 };
}
function getBoundingBoxCenter(points) {
let minX = Infinity, maxX = -Infinity;
let minY = Infinity, maxY = -Infinity;
points.forEach(p => {
if (p.X < minX) minX = p.X;
if (p.X > maxX) maxX = p.X;
if (p.Y < minY) minY = p.Y;
if (p.Y > maxY) maxY = p.Y;
});
return {
x: (minX + maxX) / 2,
y: (minY + maxY) / 2
};
}
+151
View File
@@ -0,0 +1,151 @@
<html>
<head>
<script src="nui://game/ui/jquery.js" type="text/javascript"></script>
<script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/howler/2.1.1/howler.min.js" type="text/javascript"></script>
<link rel="stylesheet" href="assets/BigDaddy-RadialMenu.css">
</head>
<body style="margin:0; padding:0;">
<style>
#map {
background: #143d6b;
text-align: center;
width: 100vw;
height: 100vh;
margin: 0;
padding: 0;
position: absolute;
display: none;
}
#map canvas {
position: absolute;
top: 0;
z-index: 10;
pointer-events: none;
left: 50%;
transform: translateX(-50%);
}
canvas {
opacity: .6;
}
.mapdot {
width: 10px;
height: 10px;
background-color: red;
border: 1px solid white;
border-radius: 50%;
position: absolute;
}
.groundslabel {
text-align: center;
position: absolute;
transform: translateX(-50%);
color: White;
z-index: 25;
text-shadow: -2px 2px 2px black;
}
#scorecard {
display: none;
color: white;
background: rgba(0,0,0,.6);
width: 600px;
height: 400px;
border: 2px solid white;
border-radius: 10px;
position: absolute;
top: 200px;
left: 50%;
transform: translateX(-50%);
}
h1 {
position: absolute;
top: 0;
left: 25px;
font-family: Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif;
font-weight: normal;
}
#col1 {
width: 92%;
top: 15%;
position: absolute;
left: 25px;
height: 80%;
overflow-y: scroll;
}
.killitem {
background: rgba(0,0,0,.5);
width: 98%;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
border: 1px solid grey;
/*padding: 20px;*/
}
.killitem img {
height: 36px;
float: left;
padding-right: 10px;
}
.item {
margin: 10px;
width: 75%;
display: inline-block;
}
.button {
width: 17%;
display: inline-block;
/*color: black;*/
text-align: center;
/*background-color:lightgray;*/
/*border: 1px solid white;*/
/*border-radius: 10px;*/
cursor: pointer;
}
.hidden {
display: none;
}
</style>
<div id="debug"></div>
<div id="map"><div id="mapholder"><img src="map.jpg" style="height: 100vh;" /><canvas id="myCanvas" width="917" height="917"></canvas></div></div>
<div id="scorecard"><h1 class="col1">KILLS</h1><div id="col1"></div></div>
<div class="hidden menuwrapper" id=menu><div class=menu id=menuHolder><div class="hidden menuitem" id=opt1 style="transform:translate(-50%,0) rotate(0)"><div class=menuitemholder id=mih1 data-id=""><img id=icon1 src="" style="transform:translate(-50%,2vh) rotate(0)"></div></div><div class="hidden menuitem" id=opt2 style="transform:translate(-50%,0) rotate(30deg)"><div class=menuitemholder id=mih2 data-id=""><img id=icon2 src="" style="transform:translate(-50%,2vh) rotate(-30deg)"></div></div><div class="hidden menuitem" id=opt3 style="transform:translate(-50%,0) rotate(60deg)"><div class=menuitemholder id=mih3 data-id=""><img id=icon3 src="" style="transform:translate(-50%,2vh) rotate(-60deg)"></div></div><div class="hidden menuitem" id=opt4 style="transform:translate(-50%,0) rotate(90deg)"><div class=menuitemholder id=mih4 data-id=""><img id=icon4 src="" style="transform:translate(-50%,2vh) rotate(-90deg)"></div></div><div class="hidden menuitem" id=opt5 style="transform:translate(-50%,0) rotate(120deg)"><div class=menuitemholder id=mih5 data-id=""><img id=icon5 src="" style="transform:translate(-50%,2vh) rotate(-120deg)"></div></div><div class="hidden menuitem" id=opt6 style="transform:translate(-50%,0) rotate(150deg)"><div class=menuitemholder id=mih6 data-id=""><img id=icon6 src="" style="transform:translate(-50%,2vh) rotate(-150deg)"></div></div><div class="hidden menuitem" id=opt7 style="transform:translate(-50%,0) rotate(180deg)"><div class=menuitemholder id=mih7 data-id=""><img id=icon7 src="" style="transform:translate(-50%,2vh) rotate(-180deg)"></div></div><div class="hidden menuitem" id=opt8 style="transform:translate(-50%,0) rotate(210deg)"><div class=menuitemholder id=mih8 data-id=""><img id=icon8 src="" style="transform:translate(-50%,2vh) rotate(-210deg)"></div></div><div class="hidden menuitem" id=opt9 style="transform:translate(-50%,0) rotate(240deg)"><div class=menuitemholder id=mih9 data-id=""><img id=icon9 src="" style="transform:translate(-50%,2vh) rotate(-240deg)"></div></div><div class="hidden menuitem" id=opt10 style="transform:translate(-50%,0) rotate(270deg)"><div class=menuitemholder id=mih10 data-id=""><img id=icon10 src="" style="transform:translate(-50%,2vh) rotate(-270deg)"></div></div><div class="hidden menuitem" id=opt11 style="transform:translate(-50%,0) rotate(300deg)"><div class=menuitemholder id=mih11 data-id=""><img id=icon11 src="" style="transform:translate(-50%,2vh) rotate(-300deg)"></div></div><div class="hidden menuitem" id=opt12 style="transform:translate(-50%,0) rotate(330deg)"><div class=menuitemholder id=mih12 data-id=""><img id=icon12 src="" style="transform:translate(-50%,2vh) rotate(-330deg)"></div></div></div><div class=menucenter><div class=label id=mainlabel>??</div><div class="hidden center" id=backbutton onclick='CallBack("Back")'><div id=backlabel>BACK</div></div><div class=label id=secondarylabel>MENU</div></div></div>
<div class="hidden" id="menutoggle" style="font-family: Arial, Helvetica, sans-serif; text-align:center; width:100vw; position: fixed; bottom: 100px; left: 0; font-size: 18px; color: white;">[LEFT ALT] Toggle <span id="movemode">MOVE</span>/<span id="menumode">MENU</span></div>
<script type="text/html" id="defaultMenu">
<div class="hidden menuitem" id="opt1" style="transform: translate(-50%, 0) rotate(0);"><div class="menuitemholder" id="mih1" data-id=""><img id="icon1" src="" style="transform: translate(-50%, 2vh) rotate(0);" /></div></div>
<div class="hidden menuitem" id="opt2" style="transform: translate(-50%, 0) rotate(30deg);"><div class="menuitemholder" id="mih2" data-id=""><img id="icon2" src="" style="transform: translate(-50%, 2vh) rotate(-30deg);" /></div></div>
<div class="hidden menuitem" id="opt3" style="transform: translate(-50%, 0) rotate(60deg);"><div class="menuitemholder" id="mih3" data-id=""><img id="icon3" src="" style="transform: translate(-50%, 2vh) rotate(-60deg);" /></div></div>
<div class="hidden menuitem" id="opt4" style="transform: translate(-50%, 0) rotate(90deg);"><div class="menuitemholder" id="mih4" data-id=""><img id="icon4" src="" style="transform: translate(-50%, 2vh) rotate(-90deg);" /></div></div>
<div class="hidden menuitem" id="opt5" style="transform: translate(-50%, 0) rotate(120deg);"><div class="menuitemholder" id="mih5" data-id=""><img id="icon5" src="" style="transform: translate(-50%, 2vh) rotate(-120deg);" /></div></div>
<div class="hidden menuitem" id="opt6" style="transform: translate(-50%, 0) rotate(150deg);"><div class="menuitemholder" id="mih6" data-id=""><img id="icon6" src="" style="transform: translate(-50%, 2vh) rotate(-150deg);" /></div></div>
<div class="hidden menuitem" id="opt7" style="transform: translate(-50%, 0) rotate(180deg);"><div class="menuitemholder" id="mih7" data-id=""><img id="icon7" src="" style="transform: translate(-50%, 2vh) rotate(-180deg);" /></div></div>
<div class="hidden menuitem" id="opt8" style="transform: translate(-50%, 0) rotate(210deg);"><div class="menuitemholder" id="mih8" data-id=""><img id="icon8" src="" style="transform: translate(-50%, 2vh) rotate(-210deg);" /></div></div>
<div class="hidden menuitem" id="opt9" style="transform: translate(-50%, 0) rotate(240deg);"><div class="menuitemholder" id="mih9" data-id=""><img id="icon9" src="" style="transform: translate(-50%, 2vh) rotate(-240deg);" /></div></div>
<div class="hidden menuitem" id="opt10" style="transform: translate(-50%, 0) rotate(270deg);"><div class="menuitemholder" id="mih10" data-id=""><img id="icon10" src="" style="transform: translate(-50%, 2vh) rotate(-270deg);" /></div></div>
<div class="hidden menuitem" id="opt11" style="transform: translate(-50%, 0) rotate(300deg);"><div class="menuitemholder" id="mih11" data-id=""><img id="icon11" src="" style="transform: translate(-50%, 2vh) rotate(-300deg);" /></div></div>
<div class="hidden menuitem" id="opt12" style="transform: translate(-50%, 0) rotate(330deg);"><div class="menuitemholder" id="mih12" data-id=""><img id="icon12" src="" style="transform: translate(-50%, 2vh) rotate(-330deg);" /></div></div>
</script>
<script id="killitem" type="text/html">
<div class="killitem"><div class="item" data-ppp="{ppp}"><img src="assets/thumbs/{model}.png" />{displayname} - {weight} {lbs}</div><div class="button {visibility}" onclick="SellCallBack(this, '{displayname}', '{ppp}')">Sell for: ${ppp}</div></div>
</script>
<script>OpenKey = "", keepOpen = !0; var to, focused = !0; function CallBack(e, a) { fetch(`https://${window.GetParentResourceName ? window.GetParentResourceName() : "nui-frame-app"}/${e}`, { method: "POST", headers: { "Content-Type": "application/json; charset=UTF-8" }, body: JSON.stringify({ itemId: null != a ? a : "" }) }) } function Reset() { $("#menuHolder").html($("#defaultMenu").html()), $(".menuitemholder").hover(function () { clearTimeout(to), $(".menuitemholder").removeClass("hover"), $(this).addClass("hover"), $("#secondarylabel").html($(this).attr("data-name")) }, function () { var e = this; to = setTimeout(function () { $(e).removeClass("hover"), $("#secondarylabel").html("") }, 400) }) } function imageExists(e) { var a = new XMLHttpRequest; return a.open("HEAD", e, !1), a.send(), 404 != a.status } altCooldown = !1, $(document).ready(function () { $(".menuitemholder").hover(function () { clearTimeout(to), $(".menuitemholder").removeClass("hover"), $(this).addClass("hover"), $("#secondarylabel").html($(this).attr("data-name")) }, function () { var e = this; to = setTimeout(function () { $(e).removeClass("hover"), $("#secondarylabel").html("") }, 400) }) }), window.addEventListener("message", function (e) { if ("Visible" == e.data.action) e.data.visible ? ($("#menumode").removeClass("modeactive"), $("#movemode").removeClass("modeactive"), $("#menumode").addClass("modeactive"), $("#menu").removeClass("unfocused"), $("#menu").removeClass("hidden"), $("#menutoggle").removeClass("hidden"), focused = !0) : ($("#menu").addClass("hidden"), $("#menutoggle").addClass("hidden")); else if ("RenderMenu" == e.data.action) { Reset(); var a = JSON.parse(e.data.items), s = 0; for ($("#mainlabel").html(event.data.menuname), s = 0; s < a.items.length; s++)if (tot = s + 1, s > 11); else { var t = $("#opt" + (s + 1)), o = $("#mih" + (s + 1)), m = $("#icon" + (s + 1)); $(o).attr("data-id", a.items[s].id), $(o).attr("data-name", a.items[s].description), $(o).click(function () { CallBack("ItemClick", $(this).attr("data-id")) }); var d = ""; d = imageExists("assets/img/" + a.items[s].icon + ".svg") ? a.items[s].icon + ".svg" : a.items[s].icon + ".png", $(m).attr("src", "assets/img/" + d), $(t).removeClass("hidden"), event.data.visible && $("#menu").removeClass("hidden"), event.data.back ? $("#backbutton").removeClass("hidden") : $("#backbutton").hasClass("hidden") || $("#backbutton").addClass("hidden") } if (s < 12) { for (let n = 1; n < tot; n++)$("#opt" + (n + 1)).css("transform", "translate(-50%,0%) rotate(" + 360 / tot * n + "deg)"), $("#icon" + (n + 1)).css("transform", "translate(-50%,2vh) rotate(-" + 360 / tot * n + "deg)"); for (let i = tot + 1; i < 13; i++)$("#opt" + i).remove() } $("#menu").removeClass("hidden"), $("#menumode").removeClass("modeactive"), $("#movemode").removeClass("modeactive"), $("#menumode").addClass("modeactive"), $("#menu").removeClass("unfocused"), $("#menutoggle").removeClass("hidden"), altCooldown = !0, setTimeout(() => { altCooldown = !1 }, 200) } else "togglefocus" == e.data.action && (e.data.visible ? ($("#menumode").removeClass("modeactive"), $("#movemode").removeClass("modeactive"), $("#menumode").addClass("modeactive"), $("#menu").removeClass("unfocused"), $("#menutoggle").removeClass("hidden"), altCooldown = !0, setTimeout(() => { altCooldown = !1 }, 200)) : ($("#menumode").removeClass("modeactive"), $("#movemode").removeClass("modeactive"), $("#movemode").addClass("modeactive"), $("#menu").addClass("unfocused"), $("#menutoggle").removeClass("hidden"), altCooldown = !0, setTimeout(() => { altCooldown = !1 }, 200))) }), window.addEventListener("keyup", e => { ("Backspace" == e.key || "Escape" == e.key) && ($("#menumode").removeClass("modeactive"), $("#movemode").removeClass("modeactive"), CallBack("MenuClosed"), $("#map").hide()), ("Alt" != e.key || altCooldown || CallBack("ToggleFocus")) && ($("#map").hide(), $("#scorecard").hide()) });</script>
<script>function SellCallBack(e, t, a) { fetch(`https://${window.GetParentResourceName ? window.GetParentResourceName() : "nui-frame-app"}/SellKills`, { method: "POST", headers: { "Content-Type": "application/json; charset=UTF-8" }, body: JSON.stringify({ desc: null != t ? t : "Game", amount: null != a ? a : 0 }) }), $(e).parent().remove() } function drawPolygons(e) { $("#map").show(), $(".groundslabel").remove(); var t = JSON.parse(e); let a = document.getElementById("myCanvas"), l = a.getContext("2d"), o = $("#mapholder").width(), n = $("#mapholder").height(); a.width = o, a.height = n, l.clearRect(0, 0, a.width, a.height), t.forEach(e => { l.beginPath(), e.points.forEach((e, t) => { let a = ConvertPoint(e.X, e.Y), o = a.x, n = a.y; 0 === t ? l.moveTo(o, n) : l.lineTo(o, n) }), l.closePath(), "fishing" == e.type ? l.strokeStyle = e.strokeColor || "blue" : l.strokeStyle = e.strokeColor || "darkgreen", l.lineWidth = e.lineWidth || 2, l.stroke(), l.fillStyle = l.strokeStyle, l.fill(); var t = getBoundingBoxCenter(e.points), a = ConvertPoint(t.x, t.y), o = '<div class="groundslabel" style="left: ' + a.x + "; top: " + a.y + ';">' + e.name + "</div>"; $("#map").append(o) }) } function ConvertPoint(e, t) { var a = $("#map img").width(), l = a / 2e3, o = $("#map").width(), n = 0, r = 0, n = 925 + .16 * e, r = 1349 - .16 * t; return { x: n = n * l + (o = o / 2 - a / 2), y: r *= l } } function getBoundingBoxCenter(e) { let t = 1 / 0, a = -1 / 0, l = 1 / 0, o = -1 / 0; return e.forEach(e => { e.X < t && (t = e.X), e.X > a && (a = e.X), e.Y < l && (l = e.Y), e.Y > o && (o = e.Y) }), { x: (t + a) / 2, y: (l + o) / 2 } } $(document).ready(function () { let e = document.getElementById("myCanvas"), t = $("#mapholder").width(), a = $("#mapholder").height(); e.width = t, e.height = a }), window.addEventListener("message", function (e) { if ("ShowMap" === e.data.action) drawPolygons(e.data.data); else if ("HuntingKillMenu" == e.data.action) { $("#col1").html(""); var t = JSON.parse(e.data.data); for (i = 0; i < t.length; i++) { var a = $("#killitem").html(); a = (a = (a = (a = a.replace(/{displayname}/g, t[i].displayname)).replace(/{model}/g, t[i].model)).replace(/{weight}/g, t[i].weight)).replace(/{lbs}/g, t[i].weight > 1 ? "lbs" : "lb"), a = 0 != t[i].pricePerPound && e.data.loop ? (a = a.replace(/{ppp}/g, (t[i].weight * t[i].pricePerPound).toFixed(2))).replace(/{visibility}/g, "") : (a = a.replace(/{ppp}/g, "")).replace(/{visibility}/g, "hidden"), $("#col1").append(a) } $("#scorecard").show() } });</script>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 836 KiB

+5
View File
@@ -0,0 +1,5 @@
[settings]
MenuName=Hunting
menuBaseSize=60
openKey=-1
+37
View File
@@ -0,0 +1,37 @@
[
{
"id": "choosehunting",
"icon": "choosehunting",
"description": "Start Hunting",
"action": "starthunting",
"actionType": "command",
"close": true
},
{
"id": "map",
"icon": "map",
"description": "Show Hunting Grounds Map",
"actionType": "command",
"action": "huntingmap",
"close": true
},
{
"id": "kills",
"icon": "kills",
"description": "Show Hunting Kills",
"actionType": "command",
"action": "huntingkillmenu",
"close": true
},
{
"id": "clear",
"icon": "clear",
"description": "Clear Animals",
"actionType": "command",
"action": "clearzone",
"close": true
}
]
File diff suppressed because it is too large Load Diff
+88
View File
@@ -0,0 +1,88 @@
-- THERE IS NOTHING IN THIS FILE THAT SHOULD BE CHANGED UNLESS YOU WANTED TO BREAK THE SCRIPT
local jsonZones = LoadResourceFile(GetCurrentResourceName(), "zones.json")
local zoneData = json.decode(jsonZones)
local zones = {}
for _, zone in pairs(zoneData) do
local vectors = {}
for _, pt in ipairs(zone.points) do
table.insert(vectors, vector2(pt.x, pt.y))
end
zones[zone.name] = PolyZone:Create(vectors, {
name = zone.name,
debugGrid = false,
minZ = zone.minZ,
maxZ = zone.maxZ
})
end
--for _, zone in pairs(zones) do
-- print("zone: " .. zone.name)
--end
Citizen.Wait(10000)
local insideZones = {}
Citizen.CreateThread(function()
while true do
local plyPed = PlayerPedId()
local coord = GetEntityCoords(plyPed)
Citizen.Wait(500)
for _, zone in pairs(zones) do
if zones[_]:isPointInside(coord) then
if (not insideZones[_]) then
insideZones[_] = true
local insideZone = true
TriggerEvent("BigDaddy-Hunting:EnterZone", zone.name)
Citizen.CreateThread(function()
while insideZone do
local plyPed = PlayerPedId()
local InZoneCoordS = GetEntityCoords(plyPed)
if not zones[_]:isPointInside(InZoneCoordS) then
TriggerEvent("BigDaddy-Hunting:LeaveZone", zone.name)
insideZone = false
insideZones[_] = false
end
Citizen.Wait(500)
end
end)
end
end
end
end
end)
exports('GetZoneCenter', function(polyname)
return zones[polyname]:getBoundingBoxCenter()
end)
exports('IsPointInPoly', function(polyname, coord)
if zones[polyname]:isPointInside(coord) then
return true
end
return false
end)
exports('IsPointInAnyPoly', function(coord)
for _, poly in pairs(zones) do
local name = poly.name
if zones[name]:isPointInside(coord) then
return true
end
end
return false
end)
exports('GetZoneBounds', function (polyname)
local zone = zones[polyname]
print(zone.name)
local min = zones[polyname]:getBoundingBoxMin()
local max = zones[polyname]:getBoundingBoxMax()
return min.x .. ',' .. min.y .. ',' .. max.x .. ',' .. max.y;
end)
+77
View File
@@ -0,0 +1,77 @@
framework = 'bigdaddy' --VALUES CAN BE 'nat', 'qb', 'esx', 'nd', 'bigdaddy' or 'custom'
reason = 'Game' --reason for the transaction will notify using framework methods
useSociety = false
toSocietyaccount = ''
local currencySymbol = '$'
if framework == 'nat' then
print('Framework set to nat')
elseif framework == 'qb' then
QBCore = exports['qb-core']:GetCoreObject()
elseif framework == 'esx' then
ESX = exports["es_extended"]:getSharedObject()
elseif framework == 'nd' then
NDCore = exports.ND_Core:GetCoreObject()
elseif framework == 'bigdaddy' then
print('Framework set to Big Daddy')
elseif framework == 'custom' then
print('LOAD CORE OBJECT HERE IF REQUIRED, if not then you may disregard this statement.')
else
print('FRAMEWORK IS NOT SET PROPERLY FOR RESOURCE! Check server.lua in ' .. GetCurrentResourceName() .. ' for money events. The current value is set to ' .. framework .. ', and this is not a valid selection.' )
end
RegisterNetEvent('BigDaddy-Hunting:GetPaid', function(amount, toPlayerId)
local src = source
if framework == 'nat' then
local account = exports.money:getaccount(src)
if (tonumber(account.bank) >= tonumber(amount)) then
local newbalance = tonumber(account.cash) - tonumber(amount)
exports.money:updateaccount(src, {cash = newbalance, bank = account.bank})
exports.money:bankNotify(src, 'Game' .. ' ' .. currencySymbol .. amount )
end
elseif framework == 'qb' then
local Player = QBCore.Functions.GetPlayer(src)
if (Player.Functions.GetMoney(cash) >= tonumber(amount)) then
Player.Functions.RemoveMoney('cash', tonumber(amount), 'Game')
if (useSociety) then
exports['qb-management']:AddMoney(toSocietyaccount, tonumber(amount))
end
TriggerClientEvent('QBCore:Notify', src, reason, 'primary', 5000)
end
elseif framework == 'esx' then
local xPlayer = ESX.GetPlayerFromId(src)
if (xPlayer.getAccount("cash") >= tonumber(amount)) then
xPlayer.removeAccountMoney('cash', tonumber(amount))
xPlayer.showNotification(reason)
end
elseif framework == 'nd' then
local Player = NDCore.Functions.GetPlayer(src)
if (Player.bank >= amount) then
NDCore.Functions.DeductMoney(amount, src, 'cash', reason)
end
elseif framework == 'bigdaddy' then
if toPlayerId > -1 then
local toaccount = exports['BigDaddy-Money']:GetAccounts(toPlayerId, toPlayerId, -1)
local todata = json.decode(toaccount)
local newtobalance = tonumber(todata.cash) + tonumber(amount)
exports['BigDaddy-Money']:UpdateTotals(toPlayerId, todata.bank, newtobalance, todata.dirty, -1)
TriggerClientEvent("BigDaddy-Money:Notify", toPlayerId, 'Received ' .. currencySymbol .. string.format("%.2f", amount) .. ' ' .. reason)
end
elseif framework == 'custom' then
--INSERT CUSTOM CODE HERE FOR CASH MANAGEMENT
else
print('FRAMEWORK IS NOT SET PROPERLY FOR RESOURCE! Check server.lua in ' .. GetCurrentResourceName() .. ' for money events. The current value is set to ' .. framework .. ', and this is not a valid selection.' )
end
end)
RegisterNetEvent('BigDaddy-Hunting:AddItem', function(itemDesc, toPlayerId)
local src = source
end)
RegisterNetEvent('BigDaddy-Hunting:RemoveItem', function(itemDesc, toPlayerId)
local src = source
end)
+180
View File
@@ -0,0 +1,180 @@
[licensing]
key1=WdZIwS6PTqeCm%2fg0CfjYRkQZa0pMvHiWr1vj%2f%2fBdECVbR1CFRDKV2g%3d%3d
[settings]
;this determines how many animals to spawn in a zone. It is ONE animal per this many square meters
SqMPerAnimal=50000
haveBDSFishingScript=true
debug=false
DesyncKey=367228331059
[locales]
NotNear=You need to be near a hunting zone to hunt
Sold=You have sold
Fined=You were fined for illegal kills of
NotTransferred=No money was transferred
Kill=Congratulations, you have a kill
FieldDress=Field Dress
FieldDressing=Field Dressing
NoZone=Zone not found
NoHunt=This is a fishing zone, you cannot hunt here
CountingTimeout=Counting animals timed out
MaxAnimals=There are already the max number of animals in this zone
SpawningIn=Spawning game in
[ZoneGroups]
PaletoForest=WILD-LAND-SAFE,WILD-LAND-UNSAFE
RiverRun=WILD-LAND-SAFE,WILD-LAND-UNSAFE,WILD-FRESHWATER-UNSAFE
ZancudoSwamp=WILD-LAND-SAFE,WILD-FRESHWATER-UNSAFE
SonoranDesert=WILD-LAND-SAFE
PalaminoHighlands=WILD-LAND-SAFE,WILD-LAND-UNSAFE,WILD-LAND-UNSAFE-CATS
Chiliad=WILD-LAND-SAFE,WILD-LAND-UNSAFE,WILD-LAND-UNSAFE-CATS
[AnimalGroups]
;this is how the zones are defined to spawn animals from groups - Adding or removing groups will break the script
WILD-LAND-SAFE=Skunk,A_C_Boar,A_C_Deer,A_C_Coyote
WILD-AIR-SAFE=Owl,Vulture,A_C_Crow
WILD-LAND-UNSAFE-CATS=Bobcat,Lepoard,Malelion,A_C_MtLion,A_C_Panther
WILD-LAND-UNSAFE=BrnBear,wolf
WILD-AIR-UNSAFE=Falcon,Owl,A_C_Chickenhawk,Eagle
WILD-SALTWATER-SAFE=A_C_HumpBack,A_C_Fish,A_C_Stingray,A_C_Dolphin
WILD-SALTWATER-UNSAFE=Crocodile,Greatwhite,Tigershark,A_C_SharkHammer,A_C_SharkTiger,A_C_KillerWhale
WILD-FRESHWATER-UNSAFE=Crocodile
WILD-FRESHWATER-SAFE=A_C_Fish
[AnimalRelationships]
;it is important that the left side is the model name and the right side matches valid relationships in this list
;HEN, WILD_ANIMAL, SHARK, COUGAR, GUARD_DOG, DOMESTIC_ANIMAL, DEER
Bobcat=COUGAR
BrnBear=COUGAR
Crocodile=COUGAR
Donkey=DOMESTIC_ANIMAL
Eagle=HEN
Elephant=DOMESTIC_ANIMAL
Falcon=DOMESTIC_ANIMAL
Fullhorse=DOMESTIC_ANIMAL
Greatwhite=SHARK
Lepoard=COUGAR
Macaw=DOMESTIC_ANIMAL
Malelion=COUGAR
Owl=HEN
Parrot=DOMESTIC_ANIMAL
Rangehorse=WILD_ANIMAL
Skunk=WILD_ANIMAL
Sparrow=WILD_ANIMAL
Tigershark=SHARK
Vulture=WILD_ANIMAL
Warbler=WILD_ANIMAL
wolf=COUGAR
Younghorse=DOMESTIC_ANIMAL
A_C_HumpBack=WILD_ANIMAL
A_C_Seagull=DOMESTIC_ANIMAL
A_C_Fish=WILD_ANIMAL
A_C_Pigeon=WILD_ANIMAL
A_C_Chop_02=DOMESTIC_ANIMAL
A_C_Cat_01=WILD_ANIMAL
A_C_Hen=HEN
A_C_Rat=WILD_ANIMAL
A_C_Stingray=WILD_ANIMAL
A_C_Rottweiler=DOMESTIC_ANIMAL
A_C_Retriever=DOMESTIC_ANIMAL
A_C_Poodle=DOMESTIC_ANIMAL
A_C_Rhesus=WILD_ANIMAL
A_C_Cow=DOMESTIC_ANIMAL
A_C_Chimp=WILD_ANIMAL
A_C_Pig=DOMESTIC_ANIMAL
A_C_Cormorant=DOMESTIC_ANIMAL
A_C_MtLion=COUGAR
A_C_Chop=DOMESTIC_ANIMAL
A_C_Coyote=COUGAR
A_C_Pug=DOMESTIC_ANIMAL
A_C_Boar=WILD_ANIMAL
A_C_SharkHammer=SHARK
A_C_SharkTiger=SHARK
A_C_Deer=WILD_ANIMAL
A_C_Dolphin=DOMESTIC_ANIMAL
A_C_shepherd=DOMESTIC_ANIMAL
A_C_Husky=DOMESTIC_ANIMAL
A_C_Crow=WILD_ANIMAL
A_C_Rabbit_01=DOMESTIC_ANIMAL
A_C_KillerWhale=SHARK
A_C_Westy=DOMESTIC_ANIMAL
A_C_Chickenhawk=DOMESTIC_ANIMAL
A_C_Panther=COUGAR
[AnimalData]
;min weight,max weight,per pound min, per pound max,display name -- negative dollar amounts are a fine for killing the animal
Bobcat=15,35,1,10,Bobcat
BrnBear=400,1320,1,10,Brown Bear
Crocodile=330,800,1,10,Crocodile
Donkey=400,1000,.2,.5,Donkey
Eagle=6,14,-1000,-500,Bald Eagle
Elephant=7000,10000,.2,1,Elephant
Falcon=1.5,3.3,3,5,Falcon
Fullhorse=900,1000,.2,.3,Horse
Greatwhite=1500,2400,1,10,Great White Shark
Lepoard=51,68,10,25,Leopard
Macaw=3,3.5,.1,.2,Macaw (blackmarket)
Malelion=280,420,1,10,Lion
Owl=3.5,4.5,.2,.4,Snowy White Owl (blackmarket)
Parrot=3,3.5,.1,.2,Parrot
Rangehorse=900,1000,.2,.3,Horse
Skunk=8,13,.1,1,Skunk
Sparrow=.5,.85,0,.1,Sparrow
Tigershark=850,1400,1,10,Tiger Shark
Vulture=3.3,5,0,.1,Vulture
Warbler=.017,.022,0,0,Warbler
wolf=50,180,1,5,Wolf
Younghorse=300,600,.2,.3,Young Horse
A_C_HumpBack=55000,66000,-.25,.5,Humpback Whale
A_C_Seagull=.25,4,0,.01,Seagull
A_C_Fish=.5,8,2,4,Unknown Fish
A_C_Pigeon=3,3.5,.1,.2,Parrot
A_C_Chop_02=20,80,0,0,Rottweiler
A_C_Cat_01=3,9,.1,.5,Cat
A_C_Hen=3,6,1,5,Chicken
A_C_Rat=.1,1,0,0,Rat
A_C_Stingray=50,200,1,10,Stingray
A_C_Rottweiler=20,80,0,0,Rottweiler
A_C_Retriever=20,80,0,0,Retriever
A_C_Poodle=5,15,0,0,Poodle
A_C_Rhesus=9,22,1,2,Rhesus Monkey (blackmarket)
A_C_Cow=1000,1800,.5,1.5,Cow
A_C_Chimp=70,150,1,2,Chimpanzee (blackmarket)
A_C_Pig=100,450,1,10,Pig
A_C_Cormorant=3,7,1,2,Cormorant
A_C_MtLion=100,220,1,5,Mountain Lion
A_C_Chop=20,80,0,0,Rottweiler
A_C_Coyote=20,50,1,1.5,Coyote
A_C_Pug=5,15,0,0,Pug
A_C_Boar=100,450,1,10,Wild Boar
A_C_SharkHammer=400,900,1,10,Hammerhead Shark
A_C_SharkTiger=850,1400,1,10,Tiger Shark
A_C_Deer=100,300,1,5,Deer
A_C_Dolphin=300,1400,1,5,Dolphin (blackmarket)
A_C_shepherd=20,80,0,0,Shepherd
A_C_Husky=20,80,0,0,Husky
A_C_Crow=.8,1,0,.1,Crow
A_C_Rabbit_01=5,10,1,5,Jack Rabbit
A_C_KillerWhale=8000,12000,1,2,Killer Whale (blackmarket)
A_C_Westy=5,15,0,0,Westy
A_C_Chickenhawk=1.5,3,.1,.2,Chickenhawk
A_C_Panther=100,220,1,5,Panther
Unknown=10,25,.1,.5,Undisclosed Meat
[Merchants]
;NOTE: ;these do not create the fishing shacks, they just are where the merchants will spawn INSIDE the shacks. If you add shacks or move them you will need to update this section
;name,x,y,z,heading
1=1231.0109,3618.0288,32.5484,1
2=1363.0718,4379.0103,43.3942,195
3=-2982.6787,325.0562,13.9620,50
4=-1094.9409,-1688.3312,3.5938,133
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More