Авторизация  
игровой канал Девколиона

Как соединить серверную и клиентскую сторону

В теме 2 сообщения

Здравствуйте, у меня появилась сложность. Я не умею соединять серверную часть с клиентской. Дело в том, что я создаю фракцию, и мне надо, чтобы на команду "setleader ник игрока" открывалось данное окно.

Спойлер

RWzbiBavXJ4.jpg

Это окно выдачи прав лидерства организации. Заранее буду благодарен.

alexandr.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 26.07.2018 в 17:37, игровой канал Девколиона сказал:

Здравствуйте, у меня появилась сложность. Я не умею соединять серверную часть с клиентской. Дело в том, что я создаю фракцию, и мне надо, чтобы на команду "setleader ник игрока" открывалось данное окно.

  Показать контент

Это окно выдачи прав лидерства организации. Заранее буду благодарен.

alexandr.zip

В МТА есть триггеры. С помощью них в одном ресурсе можно работать с той и другой стороной.

triggerClientEvent ( [table/element sendTo=getRootElement()], string name, element sourceElement, [arguments...] )
triggerServerEvent ( string event, element theElement, [arguments...] )

Очень важно понимать толкование каждой функции и их смысл. Всё описано на вики:
TriggerServerEvent
TriggerClientEvent
Element Tree

Итак, на серверной стороне, после ввода команды, внутри функции, нужно обратиться к функции, которая будет обращаться на сторону клиента:

function leader (playerSource, commandName, accountName) 
	if gamer then
        local accName = getAccountName (getPlayerAccount (player))
        local accNick = getPlayerAccount (gamer)
        local groupName = getAccountData(accNick, "group")
		if acc and not isGuestAccount ( acc ) then
			if ( getElementData ( player, "leader.faction" ) or 0 ) > 0 then
				outputChatBox ("Nгрок уже состоит в организации", source, 230, 100, 100 )
				return true
			end
        end
        for i, k in pairs(groups) do
            if aclGetGroup (i) then
                if isObjectInACLGroup ("user."..accName, aclGetGroup (i)) then
                    if not groupName then
                        setAccountData(accNick, "group", i)
                        setPlayerNametagColor(gamer, groups[i][1], groups[i][2], groups[i][3], groups[i][4])
                        triggerClientEvent(playerSource, "setlead", playerSource) -- Обращаемся именно так.
            -- Если обратимся типа: triggerClientEvent("setlead", playerSource), то окно откроется у всех на сервере.
                        return
                    end
                end
            end
        end
    else
        outputChatBox("Ошибка.", player, 250, 50, 50)
    end
end
addCommandHandler ("setleader", leader)

На клиентской стороне:

function setlead()
    openWindow() -- Функция активации курсора, окна и т.д.
end
addEvent("setlead", true) -- Объявляем событие, к которому обратились со стороны сервера.
addEventHandler("setlead", root, setlead) -- Указываем событию обращаться к функции setlead.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Похожий контент

    • От HomoS
      Описание:
      Система домов, квартир, как на ccd planet. За точность копии не отвечаю, так как делал по видео, которое мне прислали. Плюс, добавил от себя и советы тестеров. Так как от основной системы домов эта не сильно отличается, её же взял и дополнил/переделал.
      Преимущества:
      Обновления будут. Глобальные - платно. Мелкие - бесплатно. Стандартная база домов поддерживается. Можно использовать вместе с предыдущей базой данных - заново расставлять дома не придется. Исправление багов бесплатно. Упрощен способ создания домов/квартир. Доработка под ваш сервер - по договору.  
      Хочу Не хочу