From 960fb40a3fe2fe198b7fd59765aaaad985aa387a Mon Sep 17 00:00:00 2001 From: Sergey Yarkov Date: Thu, 6 Aug 2020 20:46:05 +0300 Subject: [PATCH] admin panel --- client/ui.mjs | 863 +++++++++++++++++- server/config.mjs | 1 - server/index.mjs | 14 +- server/modules/commands/admin/gethere.mjs | 1 + server/modules/commands/admin/kill.mjs | 1 + server/modules/commands/admin/tp.mjs | 1 + server/modules/events/playerDeath.mjs | 1 + .../events/ui/{ => admin}/getHealth.mjs | 2 +- server/modules/events/ui/admin/giveWeapon.mjs | 17 + .../modules/events/ui/{ => admin}/godMode.mjs | 2 +- .../events/ui/{ => admin}/kickPlayer.mjs | 11 +- server/modules/events/ui/admin/killPlayer.mjs | 16 + .../events/ui/{ => admin}/showAdminPanel.mjs | 2 +- server/modules/events/ui/admin/spawnCar.mjs | 17 + .../events/ui/admin/teleportToLocation.mjs | 15 + .../modules/events/ui/admin/teleportToMe.mjs | 17 + .../events/ui/admin/teleportToPlayer.mjs | 17 + 17 files changed, 959 insertions(+), 39 deletions(-) rename server/modules/events/ui/{ => admin}/getHealth.mjs (79%) create mode 100644 server/modules/events/ui/admin/giveWeapon.mjs rename server/modules/events/ui/{ => admin}/godMode.mjs (87%) rename server/modules/events/ui/{ => admin}/kickPlayer.mjs (60%) create mode 100644 server/modules/events/ui/admin/killPlayer.mjs rename server/modules/events/ui/{ => admin}/showAdminPanel.mjs (73%) create mode 100644 server/modules/events/ui/admin/spawnCar.mjs create mode 100644 server/modules/events/ui/admin/teleportToLocation.mjs create mode 100644 server/modules/events/ui/admin/teleportToMe.mjs create mode 100644 server/modules/events/ui/admin/teleportToPlayer.mjs diff --git a/client/ui.mjs b/client/ui.mjs index 2bad650..3fcfe98 100644 --- a/client/ui.mjs +++ b/client/ui.mjs @@ -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() diff --git a/server/config.mjs b/server/config.mjs index 64a9300..0e33594 100644 --- a/server/config.mjs +++ b/server/config.mjs @@ -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 } diff --git a/server/index.mjs b/server/index.mjs index 6abc13a..7dc17e9 100644 --- a/server/index.mjs +++ b/server/index.mjs @@ -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' diff --git a/server/modules/commands/admin/gethere.mjs b/server/modules/commands/admin/gethere.mjs index 00e78b0..c620868 100644 --- a/server/modules/commands/admin/gethere.mjs +++ b/server/modules/commands/admin/gethere.mjs @@ -16,4 +16,5 @@ registerCmd('gethere', (player, args) => { } target.pos = player.pos + target.dimension = player.dimension }) \ No newline at end of file diff --git a/server/modules/commands/admin/kill.mjs b/server/modules/commands/admin/kill.mjs index b783e0d..5c22f56 100644 --- a/server/modules/commands/admin/kill.mjs +++ b/server/modules/commands/admin/kill.mjs @@ -16,4 +16,5 @@ registerCmd('kill', (player, args) => { } target.health = 0 + alt.emitClient(target, 'player:notify', `Вы были убиты администратором сервера`) }) \ No newline at end of file diff --git a/server/modules/commands/admin/tp.mjs b/server/modules/commands/admin/tp.mjs index ed5c12a..3b3605f 100644 --- a/server/modules/commands/admin/tp.mjs +++ b/server/modules/commands/admin/tp.mjs @@ -16,4 +16,5 @@ registerCmd('tp', (player, args) => { } player.pos = target.pos + player.dimension = target.dimension }) \ No newline at end of file diff --git a/server/modules/events/playerDeath.mjs b/server/modules/events/playerDeath.mjs index dd7190c..ae2d2d8 100644 --- a/server/modules/events/playerDeath.mjs +++ b/server/modules/events/playerDeath.mjs @@ -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) }) \ No newline at end of file diff --git a/server/modules/events/ui/getHealth.mjs b/server/modules/events/ui/admin/getHealth.mjs similarity index 79% rename from server/modules/events/ui/getHealth.mjs rename to server/modules/events/ui/admin/getHealth.mjs index c06de86..b92e7b3 100644 --- a/server/modules/events/ui/getHealth.mjs +++ b/server/modules/events/ui/admin/getHealth.mjs @@ -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 diff --git a/server/modules/events/ui/admin/giveWeapon.mjs b/server/modules/events/ui/admin/giveWeapon.mjs new file mode 100644 index 0000000..b67b817 --- /dev/null +++ b/server/modules/events/ui/admin/giveWeapon.mjs @@ -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 + } + }) +}) \ No newline at end of file diff --git a/server/modules/events/ui/godMode.mjs b/server/modules/events/ui/admin/godMode.mjs similarity index 87% rename from server/modules/events/ui/godMode.mjs rename to server/modules/events/ui/admin/godMode.mjs index 44cdc73..70188d9 100644 --- a/server/modules/events/ui/godMode.mjs +++ b/server/modules/events/ui/admin/godMode.mjs @@ -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 diff --git a/server/modules/events/ui/kickPlayer.mjs b/server/modules/events/ui/admin/kickPlayer.mjs similarity index 60% rename from server/modules/events/ui/kickPlayer.mjs rename to server/modules/events/ui/admin/kickPlayer.mjs index e53e170..1c417d4 100644 --- a/server/modules/events/ui/kickPlayer.mjs +++ b/server/modules/events/ui/admin/kickPlayer.mjs @@ -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) diff --git a/server/modules/events/ui/admin/killPlayer.mjs b/server/modules/events/ui/admin/killPlayer.mjs new file mode 100644 index 0000000..0e8a092 --- /dev/null +++ b/server/modules/events/ui/admin/killPlayer.mjs @@ -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', `Вы были убиты администратором сервера`) +}) \ No newline at end of file diff --git a/server/modules/events/ui/showAdminPanel.mjs b/server/modules/events/ui/admin/showAdminPanel.mjs similarity index 73% rename from server/modules/events/ui/showAdminPanel.mjs rename to server/modules/events/ui/admin/showAdminPanel.mjs index 3508a6b..bedf1f6 100644 --- a/server/modules/events/ui/showAdminPanel.mjs +++ b/server/modules/events/ui/admin/showAdminPanel.mjs @@ -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 diff --git a/server/modules/events/ui/admin/spawnCar.mjs b/server/modules/events/ui/admin/spawnCar.mjs new file mode 100644 index 0000000..da71a84 --- /dev/null +++ b/server/modules/events/ui/admin/spawnCar.mjs @@ -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]}" не существует!`) + } +}) \ No newline at end of file diff --git a/server/modules/events/ui/admin/teleportToLocation.mjs b/server/modules/events/ui/admin/teleportToLocation.mjs new file mode 100644 index 0000000..5da14f6 --- /dev/null +++ b/server/modules/events/ui/admin/teleportToLocation.mjs @@ -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] +}) \ No newline at end of file diff --git a/server/modules/events/ui/admin/teleportToMe.mjs b/server/modules/events/ui/admin/teleportToMe.mjs new file mode 100644 index 0000000..d737791 --- /dev/null +++ b/server/modules/events/ui/admin/teleportToMe.mjs @@ -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 +}) \ No newline at end of file diff --git a/server/modules/events/ui/admin/teleportToPlayer.mjs b/server/modules/events/ui/admin/teleportToPlayer.mjs new file mode 100644 index 0000000..3a84340 --- /dev/null +++ b/server/modules/events/ui/admin/teleportToPlayer.mjs @@ -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 +}) \ No newline at end of file