This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Проблема Помогите не могу понять ошибку

Ilya Bochenin

Участник портала
28 Май 2022
87
7
23
[ERROR] "anticheat" package loading failed, exception stack:
TypeError: Cannot read property 'GetVariable' of undefined
at Object.<anonymous> (C:\server\packages\anticheat\index.js:3:27)
at Module._compile (internal/modules/cjs/loader.js:1076:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
at Module.load (internal/modules/cjs/loader.js:941:32)
at Function.Module._load (internal/modules/cjs/loader.js:782:14)
at Module.require (internal/modules/cjs/loader.js:965:19)
at require (internal/modules/cjs/helpers.js:88:18)
at loadPackages (file:///C:/server/bin/loader.mjs:2:167)
at file:///C:/server/bin/loader.mjs:4:7
at file:///C:/server/bin/loader.mjs:6:255

код
JavaScript:
const LocalPlayer = mp.players.local;
var isAdmin = LocalPlayer.GetVariable('IS_ADMIN');
mp.events.add('server:CheatDetection', (player,flag) => {
    if(flag=='Unallowed Weapon') {
      player.ban()
    }
    if (isAdmin == true){
        mp.gui.chat.push('!{#ff0000}[AntiCheat] Detected ' + flag + ' from ' + player.name)
    }
    console.log(`Detected ${flag} from ${player.name} SC: ${player.socialClub}`)
})
mp.events.add("playerWeaponChange", (player) => {
    player.call('client:weaponSwap')
});
помогите как ее исправить
 

dooj

Гуру
FrontEnd developer
24 Мар 2022
480
133
120
GetVariable -> getVariable
 

dooj

Гуру
FrontEnd developer
24 Мар 2022
480
133
120
пробовал не помогло
Ну ошибка явно указывает на то, что нету такой функции как "GetVariable".
В Wiki RageMP пишется что функция называется "getVariable()", значит ошибка в регистре.

Если не помогло, тогда появилась другая ошибка.
 

Inoi

/dev/null
Команда форума
Moderator
VIP
15 Окт 2020
3,801
1,859
208
35
Есть мнение, что "Cannot read property 'GetVariable' of undefined" явно указывает не на "такой функции нет", а возможно ближе к "я не могу выполнить GetVariable к ничему"
Проверь сначала, существует ли игрок вообще

Код:
if (LocalPlayer) { var isAdmin = LocalPlayer.getVariable('IS_ADMIN'); }
 
Последнее редактирование:

dooj

Гуру
FrontEnd developer
24 Мар 2022
480
133
120
Ну скорее склоняюсь к тому что она не может отыскать функцию у LocalPlayer, потому что функции "GetVariable" как правило нету. Значит на данный момент, ошибка по предоставленному коду указывает на то, что такой функции нету. Да и LocalPlayer объявляется до
 

Inoi

/dev/null
Команда форума
Moderator
VIP
15 Окт 2020
3,801
1,859
208
35
Мне кажется, что у человека ошибка вываливается в консоль в процессе запуска сервера
Как можно в этот момент выполнить
Код:
const LocalPlayer = mp.players.local;
а потом ещё оттуда что то попытаться получить
у меня не очень укладывается в голове
 

dooj

Гуру
FrontEnd developer
24 Мар 2022
480
133
120
Хм, игрок прогружается быстрее. Была бы ошибка, если бы это прогружалось на моменте прогрузке пакетов.
Многие выносят localPlayer = mp.players.local за ивенты, дабы каждый раз не прописывать это.
 

Inoi

/dev/null
Команда форума
Moderator
VIP
15 Окт 2020
3,801
1,859
208
35

dooj

Гуру
FrontEnd developer
24 Мар 2022
480
133
120
Не совсем понял к чему это
В общем, вести дискуссии тут бессмысленно. То что нужно делать проверку, это верно, но и функции GetVariable к тому же нету)

А так, эта ошибка значит что-то в роде «Я не могу прочитать у объекта свойство, которого нет»
 

Inoi

/dev/null
Команда форума
Moderator
VIP
15 Окт 2020
3,801
1,859
208
35
Ну к тому что в LocalPlayer лежит undefined просто после такого присвоения
Ошибку это никакую не выдаст
А вот getVariable у undefined - ты получить не можешь, очевидно, о чём консоль и пишет
 

dooj

Гуру
FrontEnd developer
24 Мар 2022
480
133
120
Вообще код сам по себе странный. Это вроде серверная часть, но для чего-то объявление localPlayer используется
Либо он на клиентской части вызывает функцию с серверной части playerWeaponChange
 

dooj

Гуру
FrontEnd developer
24 Мар 2022
480
133
120
А, она же не в ивенте. Извиняюсь
 

dooj

Гуру
FrontEnd developer
24 Мар 2022
480
133
120
Предлагаю автору такой вариант:


JavaScript:
mp.events.add('server:CheatDetection', (player,flag) => {
    let isAdmin = player.getVariable('IS_ADMIN')
   
    if(flag=='Unallowed Weapon') player.ban()
    if (isAdmin){
        mp.gui.chat.push('!{#ff0000}[AntiCheat] Detected ' + flag + ' from ' + player.name)
    }
    console.log(`Detected ${flag} from ${player.name} SC: ${player.socialClub}`)
})
mp.events.add("playerWeaponChange", (player) => {
    player.call('client:weaponSwap')
});
 

Ilya Bochenin

Участник портала
28 Май 2022
87
7
23
А теперь код реагирует только на админов, как мне сделать тогда чтобы уведомления видели только админы
 

dooj

Гуру
FrontEnd developer
24 Мар 2022
480
133
120
JavaScript:
mp.gui.chat.push('!{#ff0000}[AntiCheat] Detected ' + flag + ' from ' + player.name) // Удали

player.outputChatBox('!{#ff0000}[AntiCheat] Detected ' + flag + ' from ' + player.name) // Вставь