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

Проблема Не меняется моделька персонажа

podobaet

Новый участник
8 Апр 2025
10
0
1
Есть следующий серверный ивент для установки модельки персонажа по условию:
JavaScript:
mp.events.add('onCharacterCreation', (player, parameters) => {
    if (parameters.gender === 0) {
        player.model = 1885233650; // Мужская модель
    } else {
        player.model = -1667301416; // Женская модель
    }
});

и есть вызов в коде на клиенте, с условием:
JavaScript:
function handleGenderSubmit() {
    const gender = DOM.inputs.selectedGender.value;

    if (!['male', 'female'].includes(gender))
        return showError('gender', 'Выберите пол персонажа.');

    const genderValue = gender === 'male' ? 0 : 1;
    mp.events.callRemote('onCharacterCreation', { gender: genderValue });

    DOM.sections.gender.style.display = 'none';
    DOM.sections.editor.style.display = 'block';
    document.querySelector('.menyoo').style.display = 'block';

}

но есть проблема - в самой игре ничего не происходит, моделька персонажа не меняется

сама функция на клиенте вызывается
JavaScript:
DOM.buttons.setGender?.addEventListener('click', handleGenderSubmit);
 

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
2,309
236
100
Проверьте, что у вас корректно подключен файл с серверным ивентом к серверной части и что клиентский обработчик handleGenderSubmit вызывается в нужный момент. Также убедитесь, что данные верно передаются между клиентом и сервером. Можете использовать отладочные выводы для проверки значений переменных на каждом этапе.
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,840
1,631
211
28
Это не код на клиенте.
Это код на FrontEnd'е (CEF'е).

Без сторонних скриптов взаимодействия могут выполняться только в таком порядке:
Server <-> Client <-> CEF
То есть сервер может вызвать клиент, чтобы тот вызвал CEF или наоборот: кнопка в интерфейсе может вызвать клиент, чтобы тот потом вызвал сервер.
Промежуток пропустить (и то лишь символически, на самом деле он не будет пропущен никогда, т.к. так работает мультиплеер) можно только с помощью стороннего решения, например RPC.
На CEF'е нет mp.events.callRemote, там есть только mp.invoke - для внутренних ивентов RAGEMP и mp.trigger для ивентов, которые прописываешь ты.
Таким образом тебе нужно на CEF'е (интерфейсе) иметь mp.trigger, который пойдёт в клиент, на клиенте mp.events.add внутри которого mp.events.callRemote и на сервере mp.events.add, который уже делает то, что тебе нужно сделать на сервере.

Так же важно знать, что общение между клиентом и CEF'ом невозможно в виде объектов. Между сервером и клиентом - возможно, но не во всех случаях.
Для передачи данных между CEF и клиентом удобнее всего использовать JSON. Например перед отправкой JSON.stringify(data), а на клиенте JSON.parse(data).
 
Реакции: podobaet

aspidemon

Активный участник
26 Сен 2022
116
42
65
Мой модуль выполняет те функции, которые тебе нужны, я не помню уже, но вроде как я там реализовывал и для CEF'a функции
(P.S. Модулю уже года 2 с лишним, не знаю будет ли работать с последними обновлениями рейджа, так как не пишу уже на рейдже)

В любом случае, ты можешь переписать/дописать все, что тебе там нужно, ну или посмотреть как я реализовал модуль что бы написать что-то подобное для своего сервера