Sign in to follow this  
Vikos Taredi

Vue.JS и передача данных на сервер.

Recommended Posts

Для менюшек взял это: https://github.com/romgerman/GTAVMenuVueHtml

Получилось это (это в браузере, в игре тоже открывается):

DtZp0wfLVNk.jpg

Вот код:


var menuInfo = new PopupMenu('Создание персонажа', 'пол можно выбрать только сейчас', [
    new MenuItem('Пол', ['Мужской', 'Женский']).SelectionChanged(function (index) { male = index, newChangeSkinC(male, skin);}),
    new MenuItem('Внешность', ['1', '2']).SelectionChanged(function (index) { skin = index, newChangeSkinC(male, skin);})
]);

var app = new Vue({
    el: '#container',
    data: {
        menu: menuInfo
    }
});

var male = 0;
var skin = 0;

function newChangeSkinC(male, skin) {
    mp.events.callRemote("newChangeSkin", male, skin);
}
mp.events.add("newChangeSkinC", newChangeSkinC);

Изменение данных тестил алертами в браузере.

Но, я не могу подключить этот скрипт, чтобы обрабатывалось API rage:mp.

Он пишет, что PopupMenu не определено. Как мне из этого файла изменить переменные и выполнить функцию в другом подключенном к Node.js скрипте?

Share this post


Link to post
Share on other sites
kemperrr    146

Т.е это ничего то что ты и скрипт CEF'а и скрипт клиентсайда все в одно запихал?

Во первых тебе нужно вынести весь функционал связанный с CEF'ом в отдельный JS файл ( код который нужно вынести будет скрином ниже )
lxu0HxV.png

далее тебе нужно создать HTML файл, в котором подключить вынесенный код ранее ( так же как ты подключаешь в браузере )


во вторых тебе нужно создать бразуер ( например HTML файл который ты создал хранится в папке createCharacter на клиентсайде )- const browser = mp.browsers.new('packages://createCharacter/index.html');

 

Далее что бы вызвать что то В браузере тебе нужно будет юзать примерно так - browser.execute(`menuInfo.open()`);  ( !!! на самом деле я не знаю какая функция для открытия меню, просто привел пример !!! )

 

Что бы вызвать какое то событие НА клиентсайде ИЗ браузера тебе нужно юзать функцию mp.trigger('yourEventName', 'агрумент1', 'аргумент2');

И только уже с клиентсайда тебе нужно триггерить событие на серверсайд, получается такая групповушка сервер -> клиент -> cef && cef -> клиент -> сервер

Share this post


Link to post
Share on other sites

Cef ---> client : mp.trigger(event , arguments...)

client ---> server : mp.events.callRemote( event, arguments )

server ---> client : player.call( event, arguments )

server ---> server : mp.events.call(event, arguments)

client ---> cef : instance.execute( ..... )

 

 

если ты юзаешь вуе, на сколько я понял ты используешь подключая vue через файл 

То советую использовать vue-cli  и использовать vuex для управления состояниями. Я тоже пишу на vue и без vuex там не обойтись

 

 

Edited by Paulo Vanetti

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.