admin panel

This commit is contained in:
Sergey Yarkov 2020-08-06 20:46:05 +03:00
parent 1a90fad8ec
commit 960fb40a3f
17 changed files with 959 additions and 39 deletions

View File

@ -13,13 +13,813 @@ const UIMenuCheckboxItem = NativeUI.UIMenuCheckboxItem
const Point = NativeUI.Point
const menuPos = new Point(1450, 150)
const locations = ['airport', 'spawn', 'fibroof', 'epsilon', 'policestation', 'yankton']
let subMenuActive = false
const locations = ['airport', 'fibroof', 'epsilon', 'policestation']
const cars = `ninef
ninef2
blista
asea
asea2
boattrailer
bus
armytanker
armytrailer
armytrailer2
freighttrailer
coach
airbus
asterope
airtug
ambulance
barracks
barracks2
baller
baller2
bjxl
banshee
benson
bfinjection
biff
blazer
blazer2
blazer3
bison
bison2
bison3
boxville
boxville2
boxville3
bobcatxl
bodhi2
buccaneer
buffalo
buffalo2
bulldozer
bullet
blimp
burrito
burrito2
burrito3
burrito4
burrito5
cavalcade
cavalcade2
policet
gburrito
cablecar
caddy
caddy2
camper
carbonizzare
cheetah
comet2
cogcabrio
coquette
cutter
gresley
dilettante
dilettante2
dune
dune2
hotknife
dloader
dubsta
dubsta2
dump
rubble
docktug
dominator
emperor
emperor2
emperor3
entityxf
exemplar
elegy2
f620
fbi
fbi2
felon
felon2
feltzer2
firetruk
flatbed
forklift
fq2
fusilade
fugitive
futo
granger
gauntlet
habanero
hauler
handler
infernus
ingot
intruder
issi2
Jackal
journey
jb700
khamelion
landstalker
lguard
manana
mesa
mesa2
mesa3
crusader
minivan
mixer
mixer2
monroe
mower
mule
mule2
oracle
oracle2
packer
patriot
pbus
penumbra
peyote
phantom
phoenix
picador
pounder
police
police4
police2
police3
policeold1
policeold2
pony
pony2
prairie
pranger
premier
primo
proptrailer
rancherxl
rancherxl2
rapidgt
rapidgt2
radi
ratloader
rebel
regina
rebel2
rentalbus
ruiner
rumpo
rumpo2
rhino
riot
ripley
rocoto
romero
sabregt
sadler
sadler2
sandking
sandking2
schafter2
schwarzer
scrap
seminole
sentinel
sentinel2
zion
zion2
serrano
sheriff
sheriff2
speedo
speedo2
stanier
stinger
stingergt
stockade
stockade3
stratum
sultan
superd
surano
surfer
surfer2
surge
taco
tailgater
taxi
trash
tractor
tractor2
tractor3
graintrailer
baletrailer
tiptruck
tiptruck2
tornado
tornado2
tornado3
tornado4
tourbus
towtruck
towtruck2
utillitruck
utillitruck2
utillitruck3
voodoo2
washington
stretch
youga
ztype
sanchez
sanchez2
scorcher
tribike
tribike2
tribike3
fixter
cruiser
BMX
policeb
akuma
carbonrs
bagger
bati
bati2
ruffian
daemon
double
pcj
vader
vigero
faggio2
hexer
annihilator
buzzard
buzzard2
cargobob
cargobob2
cargobob3
skylift
polmav
maverick
nemesis
frogger
frogger2
cuban800
duster
stunt
mammatus
jet
shamal
luxor
titan
lazer
cargoplane
squalo
marquis
dinghy
dinghy2
jetmax
predator
tropic
seashark
seashark2
submersible
freightcar
freight
freightcont1
freightcont2
freightgrain
tankercar
metrotrain
docktrailer
trailers
trailers2
trailers3
tvtrailer
raketrailer
tanker
trailerlogs
tr2
tr3
tr4
trflat
trailersmall
velum
adder
voltic
vacca
suntrap
submersible2
dukes
dukes2
buffalo3
dominator2
dodo
marshall
blimp2
gauntlet2
stalion
stalion2
blista2
blista3
bifta
speeder
kalahari
paradise
btype
jester
turismor
alpha
vestra
zentorno
massacro
huntley
thrust
rhapsody
warrener
blade
glendale
panto
dubsta3
pigalle
monster
sovereign
innovation
hakuchou
furoregt
miljet
besra
coquette2
swift
jester2
massacro2
ratloader2
slamvan
mule3
velum2
tanker2
casco
boxville4
hydra
insurgent
insurgent2
gburrito2
technical
dinghy3
savage
enduro
guardian
lectro
kuruma
kuruma2
trash2
barracks3
valkyrie
slamvan2
swift2
luxor2
feltzer3
osiris
virgo
windsor
coquette3
vindicator
t20
brawler
toro
chino
faction
faction2
moonbeam
moonbeam2
primo2
chino2
buccaneer2
voodoo
Lurcher
btype2
verlierer2
nightshade
mamba
limo2
schafter3
schafter4
schafter5
schafter6
cog55
cog552
cognoscenti
cognoscenti2
baller3
baller4
baller5
baller6
toro2
seashark3
dinghy4
tropic2
speeder2
cargobob4
supervolito
supervolito2
valkyrie2
tampa
sultanrs
banshee2
btype3
faction3
minivan2
sabregt2
slamvan3
tornado5
virgo2
virgo3
nimbus
xls
xls2
seven70
fmj
bestiagts
pfister811
brickade
rumpo3
volatus
prototipo
reaper
tug
windsor2
lynx
gargoyle
tyrus
sheava
omnis
le7b
contender
trophytruck
trophytruck2
rallytruck
cliffhanger
bf400
tropos
brioso
tampa2
tornado6
faggio3
faggio
raptor
vortex
avarus
sanctus
youga2
hakuchou2
nightblade
chimera
esskey
wolfsbane
zombiea
zombieb
defiler
daemon2
ratbike
shotaro
manchez
blazer4
elegy
tempesta
italigtb
italigtb2
nero
nero2
specter
specter2
diablous
diablous2
blazer5
ruiner2
dune4
dune5
phantom2
voltic2
penetrator
boxville5
wastelander
technical2
fcr
fcr2
comet3
ruiner3
turismo2
infernus2
gp1
ruston
trailers4
xa21
caddy3
vagner
phantom3
nightshark
cheetah2
torero
hauler2
trailerlarge
technical3
insurgent3
apc
tampa3
dune3
trailersmall2
halftrack
ardent
oppressor
vigilante
bombushka
alphaz1
seabreeze
tula
havok
hunter
microlight
rogue
pyro
howard
mogul
starling
nokota
molotok
rapidgt3
retinue
cyclone
visione
z190
viseris
comet5
raiden
riata
sc1
autarch
savestra
gt500
comet4
neon
sentinel3
khanjali
barrage
volatol
akula
deluxo
stromberg
chernobog
riot2
avenger
avenger2
thruster
yosemite
hermes
hustler
streiter
revolter
pariah
kamacho
entity2
cheburek
jester3
caracara
hotring
seasparrow
flashgt
ellie
michelli
fagaloa
dominator3
tyrant
tezeract
gb200
issi3
taipan
blimp3
mule4
pounder2
speedo4
pbus2
patriot2
swinger
terbyte
oppressor2
strikeforce
menacer
scramjet
freecrawler
stafford
bruiser
bruiser2
bruiser3
brutus
brutus2
brutus3
cerberus
cerberus2
cerberus3
clique
deathbike
deathbike2
deathbike3
deveste
deviant
dominator4
dominator5
dominator6
impaler
impaler2
impaler3
impaler4
imperator
imperator2
imperator3
issi4
issi5
issi6
italigto
monster3
monster4
monster5
rcbandito
scarab
scarab2
scarab3
schlagen
slamvan4
slamvan5
slamvan6
toros
tulip
vamos
zr380
zr3802
zr3803
caracara2
drafter
dynasty
emerus
gauntlet3
gauntlet4
hellion
issi7
jugular
krieger
locust
paragon
paragon2
peyote2
nebula
neo
novak
rrocket
s80
thrax
zion3
zorrusso
asbo
formula2
formula
furia
imorgon
jb7002
kanjo
komoda
minitank
outlaw
rebla
retinue2
stryder
sugoi
sultan2
vagrant
vstr
yosemite2
zhaba`.split(/\r?\n/)
const weapons = {
melee: {
dagger: '0x92A27487',
bat: '0x958A4A8F',
bottle: '0xF9E6AA4B',
crowbar: '0x84BD7BFD',
unarmed: '0xA2719263',
flashlight: '0x8BB05FD7',
golfclub: '0x440E4788',
hammer: '0x4E875F73',
hatchet: '0xF9DCBF2D',
knuckle: '0xD8DF3C3C',
knife: '0x99B507EA',
machete: '0xDD5DF8D9',
switchblade: '0xDFE37640',
nightstick: '0x678B81B1',
wrench: '0x19044EE0',
battleaxe: '0xCD274149',
poolcue: '0x94117305',
stone_hatchet: '0x3813FC08'
},
handguns: {
pistol: '0x1B06D571',
pistol_mk2: '0xBFE256D4',
combatpistol: '0x5EF9FEC4',
appistol: '0x22D8FE39',
stungun: '0x3656C8C1',
pistol50: '0x99AEEB3B',
snspistol: '0xBFD21232',
snspistol_mk2: '0x88374054',
heavypistol: '0xD205520E',
vintagepistol: '0x83839C4',
flaregun: '0x47757124',
marksmanpistol: '0xDC4DB296',
revolver: '0xC1B3C3D1',
revolver_mk2: '0xCB96392F',
doubleaction: '0x97EA20B8',
raypistol: '0xAF3696A1',
ceramicpistol: '0x2B5EF5EC',
navyrevolver: '0x917F6C8C'
},
smg: {
microsmg: '0x13532244',
smg: '0x2BE6766B',
smg_mk2: '0x78A97CD0',
assaultsmg: '0xEFE7E2DF',
combatpdw: '0xA3D4D34',
machinepistol: '0xDB1AA450',
minismg: '0xBD248B55',
raycarbine: '0x476BF155'
},
shotguns: {
pumpshotgun: '0x1D073A89',
pumpshotgun_mk2: '0x555AF99A',
sawnoffshotgun: '0x7846A318',
assaultshotgun: '0xE284C527',
bullpupshotgun: '0x9D61E50F',
musket: '0xA89CB99E',
heavyshotgun: '0x3AABBBAA',
dbshotgun: '0xEF951FBB',
autoshotgun: '0x12E82D3D'
},
assault_rifles: {
assaultrifle: '0xBFEFFF6D',
assaultrifle_mk2: '0x394F415C',
carbinerifle: '0x83BF0278',
carbinerifle_mk2: '0xFAD1F1C9',
advancedrifle: '0xAF113F99',
specialcarbine: '0xC0A3098D',
specialcarbine_mk2: '0x969C3D67',
bullpuprifle: '0x7F229F94',
bullpuprifle_mk2: '0x84D6FAFD',
compactrifle: '0x624FE830'
},
machine_guns: {
mg: '0x9D07F764',
combatmg: '0x7FD62962',
combatmg_mk2: '0xDBBD7280',
gusenberg: '0x61012683'
},
sniper_rifles: {
sniperrifle: '0x5FC3C11',
heavysniper: '0xC472FE2',
heavysniper_mk2: '0xA914799',
marksmanrifle: '0xC734385A',
marksmanrifle_mk2: '0x6A6C02E0'
},
heavy_weapons: {
rpg: '0xB1CA77B1',
grenadelauncher: '0xA284510B',
grenadelauncher_smoke: '0x4DD2DC56',
minigun: '0x42BF8A85',
firework: '0x7F7497E5',
railgun: '0x6D544C99',
hominglauncher: '0x63AB0442',
compactlauncher: '0x781FE4A',
rayminigun: '0xB62D1F67'
},
throwables: {
grenade: '0x93E220BD',
bzgas: '0xA0973D5E',
smokegrenade: '0xFDBC8A50',
flare: '0x497FACC3',
molotov: '0x24B17070',
stickybomb: '0x2C3731D9',
proxmine: '0xAB564B93',
snowball: '0x787F0BB',
pipebomb: '0xBA45E8B8',
ball: '0x23C9F95C'
},
misc: {
petrolcan: '0x34A67B97',
fireextinguisher: '0x60EC506',
parachute: '0xFBAB5776',
hazardcan: '0xBA536372'
}
}
const adminMenu = new Menu("Админ Панель", "Выполняйте админ-функции", menuPos)
const kickPlayerMenu = new Menu("Кикнуть игрока", "Сервер кикнет любого игрока", menuPos)
const banPlayerMenu = new Menu('Забанить игрока', "Сервер забанит игрока", menuPos)
const killPlayerMenu = new Menu('Убить игрока', "Сервер моментально убьет игрока", menuPos)
const carSpawnMenu = new Menu("Заспавнить машину", "Сервер заспавнит машину", menuPos)
const teleportToLocationMenu = new Menu("Телепорт к локации", "Телепортируйтесь на выбранную локацию", menuPos)
@ -29,7 +829,6 @@ const teleportToPlayerMenu = new Menu("Телепорт к игроку", "Вы
const teleportToMeMenu = new Menu("Телепорт к себе", "Вы телепортируете игрока к себе", menuPos)
const kickItem = new UIMenuItem('Кикнуть игрока',`Сервер кикнет игрока`)
const banItem = new UIMenuItem('Забанить игрока',`Сервер заблокирует игрока`)
const killItem = new UIMenuItem('Убить игрока',`Убейте моментально любого игрока`)
const spawnCarItem = new UIMenuItem('Заспавнить машину',`Сервер заспавнит машину перед вами`)
const teleportToLocationItem = new UIMenuItem('Телепорт к локации',`Телепортируйтесь к выбранной локации`)
@ -37,26 +836,31 @@ const myPersonItem = new UIMenuItem('Мой персонаж', `Выдайте
const weaponsItem = new UIMenuItem('Выдать себе оружие',`Выдайте любое оружие себе`)
const teleportToPlayerItem = new UIMenuItem('Телепорт к игроку',`Телепортируйтесь к игроку`)
const teleportToMeItem = new UIMenuItem('Телепорт игрока к себе', `Телепортируйте игрока к себе`)
const playersListItem = new UIMenuListItem(
"Игроки",
"Выберите игрока",
new ItemsCollection(alt.Player.all.map(_player => _player.name))
)
myPersonMenu.AddItem(new UIMenuCheckboxItem(
"Неуязвимость",
false,
"Делает вашего персонажа неуязвимым"
))
myPersonMenu.AddItem(new UIMenuItem('Восстановить здоровье', `Восстанавливает 100hp`))
const playersListItem = new UIMenuListItem("Игроки", "Выберите игрока", new ItemsCollection(alt.Player.all.map(_player => _player.name)))
kickPlayerMenu.AddItem(playersListItem)
killPlayerMenu.AddItem(playersListItem)
teleportToPlayerMenu.AddItem(playersListItem)
teleportToMeMenu.AddItem(playersListItem)
myPersonMenu.AddItem(new UIMenuCheckboxItem("Неуязвимость", false, "Делает вашего персонажа неуязвимым"))
myPersonMenu.AddItem(new UIMenuItem('Восстановить здоровье', `Восстанавливает 100hp`))
carSpawnMenu.AddItem(new UIMenuListItem("Список машин","Выберите машину и сервер заспавнит её", new ItemsCollection(cars)))
teleportToLocationMenu.AddItem(new UIMenuListItem("Список локаций", "Выберите локацию для телепортирования", new ItemsCollection(locations)))
weaponsMenu.AddItem(new UIMenuListItem("Ближнее оружие", "Выберите ближнее оружие", new ItemsCollection(Object.keys(weapons["melee"]))))
weaponsMenu.AddItem(new UIMenuListItem("Пистолеты", "Выберите пистолет", new ItemsCollection(Object.keys(weapons["handguns"]))))
weaponsMenu.AddItem(new UIMenuListItem("Пистолет-пулеметы", "Выберите пистолет-пулемет",new ItemsCollection(Object.keys(weapons["smg"]))))
weaponsMenu.AddItem(new UIMenuListItem("Дробовики","Выберите дробовик",new ItemsCollection(Object.keys(weapons["shotguns"]))))
weaponsMenu.AddItem(new UIMenuListItem("Штурмовые винтовки", "Выберите штурмовую винтовку",new ItemsCollection(Object.keys(weapons["assault_rifles"]))))
weaponsMenu.AddItem(new UIMenuListItem("Пулеметы", "Выберите пулемет",new ItemsCollection(Object.keys(weapons["machine_guns"]))))
weaponsMenu.AddItem(new UIMenuListItem("Снайперские винтовки", "Выберите снайп.винтовку",new ItemsCollection(Object.keys(weapons["sniper_rifles"]))))
weaponsMenu.AddItem(new UIMenuListItem("Тяжелое оружие", "Выберите тяжелое оружие", new ItemsCollection(Object.keys(weapons["heavy_weapons"]))))
weaponsMenu.AddItem(new UIMenuListItem("Гранаты","Выберите гранату",new ItemsCollection(Object.keys(weapons["throwables"]))))
weaponsMenu.AddItem(new UIMenuListItem("Разное","Выберите что-то",new ItemsCollection(Object.keys(weapons["misc"]))))
alt.setInterval(() => playersListItem.Collection = new ItemsCollection(alt.Player.all.map(_player => `[${_player.id}]:${_player.name}`)).getListItems(), 300)
adminMenu.BindMenuToItem(myPersonMenu, myPersonItem)
adminMenu.BindMenuToItem(kickPlayerMenu, kickItem)
adminMenu.BindMenuToItem(banPlayerMenu, banItem)
adminMenu.BindMenuToItem(killPlayerMenu, killItem)
adminMenu.BindMenuToItem(carSpawnMenu, spawnCarItem)
adminMenu.BindMenuToItem(teleportToLocationMenu, teleportToLocationItem)
@ -64,11 +868,6 @@ adminMenu.BindMenuToItem(weaponsMenu, weaponsItem)
adminMenu.BindMenuToItem(teleportToPlayerMenu, teleportToPlayerItem)
adminMenu.BindMenuToItem(teleportToMeMenu, teleportToMeItem)
adminMenu.ItemSelect.on(item => {
if (item instanceof UIMenuItem) subMenuActive = true
})
myPersonMenu.ItemSelect.on(item => {
if (item.Text.toLowerCase() === 'восстановить здоровье') alt.emitServer('getHealth')
})
@ -77,10 +876,18 @@ myPersonMenu.CheckboxChange.on(item => {
if (item.Text.toLowerCase() === 'неуязвимость') alt.emitServer('godMode', item.Checked)
})
kickPlayerMenu.ItemSelect.on(item => {
alt.emitServer("kickPlayer", item.SelectedItem.DisplayText);
})
kickPlayerMenu.ItemSelect.on(item => alt.emitServer("kickPlayer", item.SelectedItem.DisplayText))
killPlayerMenu.ItemSelect.on(item => alt.emitServer("killPlayer", item.SelectedItem.DisplayText))
teleportToLocationMenu.ItemSelect.on(item => alt.emitServer("teleportToLocation", item.SelectedItem.DisplayText))
teleportToPlayerMenu.ItemSelect.on(item => alt.emitServer("teleportToPlayer", item.SelectedItem.DisplayText))
teleportToMeMenu.ItemSelect.on(item => alt.emitServer("teleportToMe", item.SelectedItem.DisplayText))
carSpawnMenu.ItemSelect.on(item => {
if (item instanceof UIMenuListItem) return alt.emitServer("spawnCar", item.SelectedItem.DisplayText)
})
weaponsMenu.ItemSelect.on(item => {
if (item instanceof UIMenuListItem) return alt.emitServer("giveWeapon", item.SelectedItem.DisplayText)
})
alt.on('keyup', key => {
if (key === 113) { // F2
@ -91,7 +898,6 @@ alt.on('keyup', key => {
alt.onServer('ui:showAdminPanel', () => {
if (
kickPlayerMenu.Visible
|| banPlayerMenu.Visible
|| killPlayerMenu.Visible
|| carSpawnMenu.Visible
|| teleportToLocationMenu.Visible
@ -102,7 +908,6 @@ alt.onServer('ui:showAdminPanel', () => {
)
{
kickPlayerMenu.Close()
banPlayerMenu.Close()
killPlayerMenu.Close()
carSpawnMenu.Close()
teleportToLocationMenu.Close()

View File

@ -7,7 +7,6 @@ export default {
waitingRoom: { x: 135.901, y: -749.107, z: 258.152 },
locations: {
airport: { x: -1329.613, y: -3038.4901286875747, z: 13.938 },
spawn: { x: 135.901, y: -749.107, z: 258.152 },
fibroof: { x:150.126, y:-754.591, z:262.865 },
policestation: { x:436.491, y: -982.172, z: 30.699 },
epsilon: { x:-695.025, y: 82.955, z: 55.855 }

View File

@ -3,10 +3,16 @@
*/
// Admin ui
import './modules/events/ui/showAdminPanel.mjs'
import './modules/events/ui/getHealth.mjs'
import './modules/events/ui/godMode.mjs'
import './modules/events/ui/kickPlayer.mjs'
import './modules/events/ui/admin/showAdminPanel.mjs'
import './modules/events/ui/admin/getHealth.mjs'
import './modules/events/ui/admin/godMode.mjs'
import './modules/events/ui/admin/kickPlayer.mjs'
import './modules/events/ui/admin/killPlayer.mjs'
import './modules/events/ui/admin/spawnCar.mjs'
import './modules/events/ui/admin/teleportToLocation.mjs'
import './modules/events/ui/admin/giveWeapon.mjs'
import './modules/events/ui/admin/teleportToPlayer.mjs'
import './modules/events/ui/admin/teleportToMe.mjs'
import './modules/events/playerConnect.mjs'
import './modules/events/playerDisconnect.mjs'

View File

@ -16,4 +16,5 @@ registerCmd('gethere', (player, args) => {
}
target.pos = player.pos
target.dimension = player.dimension
})

View File

@ -16,4 +16,5 @@ registerCmd('kill', (player, args) => {
}
target.health = 0
alt.emitClient(target, 'player:notify', `Вы были убиты администратором сервера`)
})

View File

@ -16,4 +16,5 @@ registerCmd('tp', (player, args) => {
}
player.pos = target.pos
player.dimension = target.dimension
})

View File

@ -8,5 +8,6 @@ alt.on('playerDeath', (player) => {
alt.setTimeout(() => {
player.spawn(config.spawn.x, config.spawn.y,config.spawn.z)
player.removeAllWeapons()
alt.emitClient(player, 'player:setInvincible')
}, 5000)
})

View File

@ -1,5 +1,5 @@
import alt from 'alt-server'
import { isPlayerAdmin } from '../../helpers/helpers.mjs'
import { isPlayerAdmin } from '../../../helpers/helpers.mjs'
alt.onClient('getHealth', player => {
if (!isPlayerAdmin(player)) return false

View File

@ -0,0 +1,17 @@
import alt from 'alt-server'
import { isPlayerAdmin } from '../../../helpers/helpers.mjs'
import weapons from '../../../../weapons.json'
alt.onClient('giveWeapon', (player, weaponName) => {
if (!isPlayerAdmin(player)) return false
alt.emitClient(player, 'admin:setStat')
Object.keys(weapons).map(category => {
if (weapons[category].hasOwnProperty(weaponName)) {
player.giveWeapon(weapons[category][weaponName], 9999, true)
return
}
})
})

View File

@ -1,5 +1,5 @@
import alt from 'alt-server'
import { isPlayerAdmin } from '../../helpers/helpers.mjs'
import { isPlayerAdmin } from '../../../helpers/helpers.mjs'
alt.onClient('godMode', (player, checked) => {
if (!isPlayerAdmin(player)) return false

View File

@ -1,10 +1,17 @@
import alt from 'alt-server'
import { broadcast } from 'chat'
import { isPlayerAdmin } from '../../helpers/helpers.mjs'
import { isPlayerAdmin } from '../../../helpers/helpers.mjs'
alt.onClient('kickPlayer', (player, targetId) => {
if (!isPlayerAdmin(player)) return false
const target = alt.Player.getByID(+/\d+/.exec(targetId.split(':')[0]))
const id = +/\d+/.exec(targetId.split(':')[0])
const target = alt.Player.getByID(id)
if (target === null) {
return send(player, `{EE9A00}[SERVER]: {FFF}Игрок с ID: "${id}" не найден`);
}
alt.emitClient(target, 'player:notify', `Вы были кикнуты с этого сервера`)
alt.setTimeout(() => target.kick(), 300)

View File

@ -0,0 +1,16 @@
import alt from 'alt-server'
import { isPlayerAdmin } from '../../../helpers/helpers.mjs'
alt.onClient('killPlayer', (player, targetId) => {
if (!isPlayerAdmin(player)) return false
const id = +/\d+/.exec(targetId.split(':')[0])
const target = alt.Player.getByID(id)
if (target === null) {
return send(player, `{EE9A00}[SERVER]: {FFF}Игрок с ID: "${id}" не найден`)
}
target.health = 0
alt.emitClient(target, 'player:notify', `Вы были убиты администратором сервера`)
})

View File

@ -1,5 +1,5 @@
import alt from 'alt-server'
import { isPlayerAdmin } from '../../helpers/helpers.mjs'
import { isPlayerAdmin } from '../../../helpers/helpers.mjs'
alt.onClient('showAdminPanel', player => {
if (!isPlayerAdmin(player)) return false

View File

@ -0,0 +1,17 @@
import alt from 'alt-server'
import { send } from 'chat'
import { isPlayerAdmin } from '../../../helpers/helpers.mjs'
alt.onClient('spawnCar', (player, carRef) => {
if (!isPlayerAdmin(player)) return false
try {
const newVehicle = new alt.Vehicle(carRef, player.pos.x, player.pos.y, player.pos.z, 0, 0, 0)
newVehicle.numberPlateText = 'ADMIN'
alt.emitClient(player, 'vehicle:setInto', newVehicle)
} catch (error) {
console.log(error)
send(player, `{EE9A00}[SERVER]: {FF0000}Машины "${args[0]}" не существует!`)
}
})

View File

@ -0,0 +1,15 @@
import alt from 'alt-server'
import { send } from 'chat'
import { isPlayerAdmin } from '../../../helpers/helpers.mjs'
import config from '../../../../config.mjs'
alt.onClient('teleportToLocation', (player, location) => {
if (!isPlayerAdmin(player)) return false
const findLocation = Object.keys(config.locations).find(_location => _location === location)
if (findLocation === undefined) return send(player, '{EE9A00}[SERVER]: {FF0000}Локация не найдена!')
player.pos = config.locations[location]
})

View File

@ -0,0 +1,17 @@
import alt from 'alt-server'
import { send } from 'chat'
import { isPlayerAdmin } from '../../../helpers/helpers.mjs'
alt.onClient('teleportToMe', (player, targetId) => {
if (!isPlayerAdmin(player)) return false
const id = +/\d+/.exec(targetId.split(':')[0])
const target = alt.Player.getByID(id)
if (target === null) {
return send(player, `{EE9A00}[SERVER]: {FFF}Игрок с ID: "${id}" не найден`)
}
target.pos = player.pos
target.dimension = player.dimension
})

View File

@ -0,0 +1,17 @@
import alt from 'alt-server'
import { send } from 'chat'
import { isPlayerAdmin } from '../../../helpers/helpers.mjs'
alt.onClient('teleportToPlayer', (player, targetId) => {
if (!isPlayerAdmin(player)) return false
const id = +/\d+/.exec(targetId.split(':')[0])
const target = alt.Player.getByID(id)
if (target === null) {
return send(player, `{EE9A00}[SERVER]: {FFF}Игрок с ID: "${id}" не найден`)
}
player.pos = target.pos
player.dimension = target.dimension
})