430 lines
14 KiB
TypeScript
430 lines
14 KiB
TypeScript
import { isInAnyNoDMPolygon, listNoDMZones } from "../Player/polygons";
|
|
import polygons from "../polygons";
|
|
import { getWantedCount } from "../Gui/wanteds";
|
|
import { spawnschutzEnabled } from "../Player/spawnschutz";
|
|
import Hits from "./hitmarker";
|
|
|
|
|
|
function isTargetInPolygon(pos): boolean {
|
|
let found = false;
|
|
|
|
listNoDMZones.forEach(zone => {
|
|
if (polygons.isPositionWithinPolygon(pos, zone, zone.dimension)) {
|
|
found = true;
|
|
return;
|
|
}
|
|
});
|
|
if (found) return true;
|
|
|
|
return false;
|
|
}
|
|
|
|
export default function weapondamageUtil(globalData: IGlobalData) {
|
|
let blockInput = false;
|
|
|
|
|
|
mp.players.local.setSuffersCriticalHits(false);
|
|
|
|
mp.players.forEachInStreamRange((player) => {
|
|
player.setSuffersCriticalHits(false);
|
|
|
|
});
|
|
|
|
mp.events.add(RageEnums.EventKey.INCOMING_DAMAGE, (sourceEntity: EntityMp, sourcePlayer: PlayerMp, targetEntity: EntityMp, weapon: number, boneIndex: number, damage: number) => {
|
|
if ((isTargetInPolygon(sourceEntity.position) || isInAnyNoDMPolygon) && getWantedCount() === 0) {
|
|
return true;
|
|
}
|
|
|
|
if (globalData.IsAfk == true && getWantedCount() === 0) {
|
|
return true;
|
|
}
|
|
|
|
if (spawnschutzEnabled && getWantedCount() === 0) {
|
|
return true;
|
|
}
|
|
});
|
|
|
|
mp.events.add(RageEnums.EventKey.OUTGOING_DAMAGE, (sourceEntity, targetEntity, sourcePlayer, weapon, boneIndex, damage) => {
|
|
if (spawnschutzEnabled && getWantedCount() === 0) {
|
|
return true;
|
|
}
|
|
|
|
if (targetEntity.type === 'player') {
|
|
Hits.add(damage, targetEntity.position);
|
|
}
|
|
});
|
|
|
|
mp.events.add("render", () => {
|
|
if (blockInput) {
|
|
mp.game.controls.disableControlAction(32, 142, true);
|
|
mp.game.controls.disableControlAction(32, 140, true);
|
|
mp.game.controls.disableControlAction(32, 263, true);
|
|
}
|
|
});
|
|
|
|
mp.events.add('SERVER:WeaponModifier', (player) => {
|
|
//mp.gui.chat.push("Modifier steht jetzt auf" + modifier);
|
|
//mp.players.local.setWeaponDamageModifier(modifier);
|
|
let modifier = 1;
|
|
let meelemodifier = 1;
|
|
|
|
blockInput = (mp.game.weapon.getWeapontypeGroup(player.weapon) != 2685387236);
|
|
|
|
switch (player.weapon) {
|
|
case 0x1B06D571: // pistol
|
|
modifier = 0.4;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0xBFE256D4: // pistol_mk2
|
|
modifier = 0.4;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x5EF9FEC4: // combatpistol
|
|
modifier = 0.5;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x22D8FE39: // appistol
|
|
modifier = 0.185;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x3656C8C1: // stungun
|
|
modifier = 0;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x99AEEB3B: // pistol50
|
|
modifier = 0.35;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0xBFD21232: // snspistol
|
|
modifier = 0.25;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x88374054: // snspistol_mk2
|
|
modifier = 0.26;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0xD205520E: // heavypistol
|
|
modifier = 0.2;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x83839C4: // vintagepistol
|
|
modifier = 0.2;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x47757124: // flaregun
|
|
modifier = 0;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0xDC4DB296: // marksmanpistol
|
|
modifier = 0.25;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0xC1B3C3D1: // revolver
|
|
modifier = 0.2;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0xCB96392F: // revolver_mk2
|
|
modifier = 0.16;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x97EA20B8: // doubleaction
|
|
modifier = 0.23;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0xAF3696A1: // raypistol
|
|
modifier = 0;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x2B5EF5EC: // ceramicpistol
|
|
modifier = 0.25;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x917F6C8C: // navyrevolver
|
|
modifier = 0.2;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x57A4368C: // gadgetpistol
|
|
modifier = 0.25;
|
|
meelemodifier = 1;
|
|
break;
|
|
|
|
|
|
case 0x13532244: // microsmg
|
|
modifier = 0.25;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x2BE6766B: // smg
|
|
modifier = 0.25;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x78A97CD0: // smg_mk2
|
|
modifier = 0.23;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0xEFE7E2DF: // assaultsmg
|
|
modifier = 0.259;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x0A3D4D34: // combatpdw
|
|
modifier = 0.185;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0xDB1AA450: // machinepistol
|
|
modifier = 0.2;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0xBD248B55: // minismg
|
|
modifier = 0.21;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x476BF155: // raycarbine
|
|
modifier = 0.1;
|
|
meelemodifier = 1;
|
|
break;
|
|
|
|
|
|
case 0x1D073A89: // pumpshotgun
|
|
modifier = 0.2;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x555AF99A: // pumpshotgun_mk2
|
|
modifier = 0.2;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x7846A318: // sawnoffshotgun
|
|
modifier = 0.15;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0xE284C527: // assaultshotgun
|
|
modifier = 0.1;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x9D61E50F: // bullpupshotgun
|
|
modifier = 0.35;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0xA89CB99E: // musket
|
|
modifier = 0.5;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x3AABBBAA: // heavyshotgun
|
|
modifier = 0.11;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0xEF951FBB: // dbshotgun
|
|
modifier = 0.2;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x12E82D3D: // autoshotgun
|
|
modifier = 0.12;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x5A96BA4: // combatshotgun
|
|
modifier = 0.19;
|
|
meelemodifier = 1;
|
|
break;
|
|
|
|
|
|
// TODO
|
|
case 0xBFEFFF6D: // assaultrifle
|
|
modifier = 0.225;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x394F415C: // assaultrifle_mk2
|
|
modifier = 0.15;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x83BF0278: // carbinerifle
|
|
modifier = 0.2;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0xFAD1F1C9: // carbinerifle_mk2
|
|
modifier = 0.22;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0xAF113F99: // advancedrifle
|
|
modifier = 0.2;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0xC0A3098D: // specialcarbine
|
|
modifier = 0.2;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x969C3D67: // specialcarbine_mk2
|
|
modifier = 0.23;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x7F229F94: // bullpuprifle
|
|
modifier = 0.18;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x84D6FAFD: // bullpuprifle_mk2
|
|
modifier = 0.2;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x624FE830: // compactrifle
|
|
modifier = 0.2;
|
|
meelemodifier = 0.1;
|
|
break;
|
|
case 0x9D1F17E6: // militaryrifle
|
|
modifier = 0.22;
|
|
meelemodifier = 1;
|
|
break;
|
|
|
|
|
|
case 0x9D07F764: // mg
|
|
modifier = 0;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x7FD62962: // combatmg
|
|
modifier = 0;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0xDBBD7280: // combatmg_mk2
|
|
modifier = 0;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x61012683: // gusenberg
|
|
modifier = 0.2;
|
|
meelemodifier = 1;
|
|
break;
|
|
|
|
|
|
case 0x05FC3C11: // sniperrifle
|
|
modifier = 0.5;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x0C472FE2: // heavysniper
|
|
modifier = 0.17;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0xA914799: // heavysniper_mk2
|
|
modifier = 0.19;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0xC734385A: // marksmanrifle
|
|
modifier = 0.15;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x6A6C02E0: // marksmanrifle_mk2
|
|
modifier = 0.12;
|
|
meelemodifier = 1;
|
|
break;
|
|
|
|
|
|
case 0xB1CA77B1: // rpg
|
|
modifier = 0;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0xA284510B: // grenadelauncher
|
|
modifier = 0;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x4DD2DC56: // grenadelauncher_smoke
|
|
modifier = 0;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x42BF8A85: // minigun
|
|
modifier = 0.1;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x7F7497E5: // firework
|
|
modifier = 0;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x6D544C99: // railgun
|
|
modifier = 0;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x63AB0442: // hominglauncher
|
|
modifier = 0;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0x0781FE4A: // compactlauncher
|
|
modifier = 0;
|
|
meelemodifier = 1;
|
|
break;
|
|
case 0xB62D1F67: // rayminigun
|
|
modifier = 0.1;
|
|
meelemodifier = 1;
|
|
break;
|
|
|
|
|
|
|
|
case 0xA2719263: // unarmed
|
|
meelemodifier = 0.1;
|
|
modifier = 1;
|
|
break;
|
|
case 0x958A4A8F: // bat
|
|
meelemodifier = 0.15;
|
|
modifier = 1;
|
|
break;
|
|
case 0x8BB05FD7: // flashlight
|
|
meelemodifier = 0.1;
|
|
modifier = 1;
|
|
break;
|
|
case 0xD8DF3C3C: // knuckle
|
|
meelemodifier = 0.1;
|
|
modifier = 1;
|
|
break;
|
|
case 0x678B81B1: // nightstick
|
|
meelemodifier = 0.1;
|
|
modifier = 1;
|
|
break;
|
|
default:
|
|
modifier = 1;
|
|
meelemodifier = 1;
|
|
break;
|
|
}
|
|
|
|
mp.game.invoke("0xCE07B9F7817AADA3", player, modifier);
|
|
mp.game.invoke("0x4A3DC7ECCC321032", player, meelemodifier);
|
|
//mp.gui.chat.push("Modifier: " + modifier + "MeeleModifier: " +meelemodifier);
|
|
});
|
|
|
|
mp.events.add('SERVER:WeaponModifier2', (player, modifier, meelemodifier) => {
|
|
//mp.gui.chat.push("Modifier steht jetzt auf" + modifier);
|
|
//mp.players.local.setWeaponDamageModifier(modifier);
|
|
mp.game.invoke("0xCE07B9F7817AADA3", player, modifier);
|
|
mp.game.invoke("0x4A3DC7ECCC321032", player, meelemodifier);
|
|
//mp.gui.chat.push("Modifier: " + modifier + "MeeleModifier: " + meelemodifier);
|
|
});
|
|
|
|
mp.events.add("entityStreamIn", (entity) => {
|
|
if (entity.type === "player") {
|
|
entity.setSuffersCriticalHits(false);
|
|
}
|
|
});
|
|
|
|
mp.events.add("ADMIN:test", (weapon, pickuphash, weaponhash, ammo, x, y, z, ) => {
|
|
mp.gui.chat.push("angekommen");
|
|
//mp.game.object.createPickupRotate(0xE46E11B4, 100, 100 + 3, 80, 0, 0, 0, 512, 10, 0, true, 1834241177);
|
|
|
|
|
|
let pickup = mp.game.object.createPickupRotate(pickuphash, x + 2, y, z, 0, 0, 0, 512, ammo, 0, true, weaponhash);
|
|
|
|
mp.events.add('render', () => {
|
|
// Draw to screen.
|
|
mp.game.graphics.drawText(weapon, [x + 2, y, z+ 0.5], {
|
|
font: 7,
|
|
color: [255, 255, 255, 185],
|
|
scale: [0.4, 0.4],
|
|
outline: true,
|
|
centre: true
|
|
});
|
|
});
|
|
|
|
|
|
mp.game.object.setPickupRegenerationTime(pickup, 1);
|
|
|
|
mp.gui.chat.push("ausgeführt");
|
|
});
|
|
|
|
/*mp.events.add('playerWeaponShot', (targetPosition, targetEntity) => {
|
|
for (var x in this.weaponAmmo) {
|
|
if (this.weaponAmmo[x].id != this.currentWeapon) {
|
|
continue;
|
|
}
|
|
this.weaponAmmo[x].ammo = this.weaponAmmo[x].ammo - 1;
|
|
}*/
|
|
} |