McQueen Posted August 16, 2012 Share Posted August 16, 2012 Делаю карту режима Shooter, есть вопрос, помогите пожалуйста. На карте будут машины 2 видов (к примеру инфернус и туризмо). Можно ли как-нибудь сделать так, чтобы игроков на одной машине было столько же, сколько и на другой. К примеру, на сервере 20 человек, мне нужно, чтобы у 10-ых респавн был на инфернусе, а у остальных-на туризмо. Есть ли какой-нибудь готовый скрипт, т.к. сам в этом не силен. Link to comment
_Dark_ Posted August 16, 2012 Share Posted August 16, 2012 Готового скрипта нет, но реализовать это очень просто. Link to comment
McQueen Posted August 16, 2012 Author Share Posted August 16, 2012 А как это можно сделать? Link to comment
Fella Posted August 17, 2012 Share Posted August 17, 2012 чередовать их. один спаун с инфернусом, другой с туризмо и так далее. Link to comment
Flaker Posted August 18, 2012 Share Posted August 18, 2012 Я бы наверно так сделал: (Если я конечно понял правильно все) Получаешь всех игроков на сервере Получаешь половину размера массива всех игроков сервера Дальше создаешь массив A и в него записываешь первую половину игроков, а в массив B вторую половину. Ну потом, если еще игроки заходят сравниваешь размеры массива, и пихаешь зашедшего игрока в меньший массив... Ну при спавне, проверяешь в каком массиве игрок, и в зависимости от миссва спавнишь его на определенной машине Link to comment
TwiX! Posted August 18, 2012 Share Posted August 18, 2012 и этот способ сожрёт cpu при 30 игроках на сервере Link to comment
Vamp1r Posted August 18, 2012 Share Posted August 18, 2012 Если я тоже правильно понял, то куда проще создать переменную, которую увеличивать на 1 при заходе игрока на сервер и проверять ее на четность. Вместо переменной можно использовать getPlayerCount. Каждому четному игроку давать инфернус, а каждому нечетному туризмо (или наоборот). Link to comment
Flaker Posted August 18, 2012 Share Posted August 18, 2012 Ниче он не сожрет! Lua со своими таблицами на очень хорошей скорости работает! (Память жрет это дело, но не очень много) Насчет кол-во игроков на сервере, это можно только при старте ресурса делать... Вобщем при спавне, одного игрока в первый массив, второго во второй, третьего опять в первый... и тд... Записываем игроков как ключи: [thePlayer] = true; а потом такую проверку можно сделать: if ( MassA[source] ) then Ну и так далее... Вобщем у меня такие комбинации не сильно сервер грузят! Link to comment
Flaker Posted August 18, 2012 Share Posted August 18, 2012 Если я тоже правильно понял, то куда проще создать переменную, которую увеличивать на 1 при заходе игрока на сервер и проверять ее на четность. Вместо переменной можно использовать getPlayerCount. Каждому четному игроку давать инфернус, а каждому нечетному туризмо (или наоборот). Какой то вобще не красивый алгоритм, но можно и так... Только лучше переменную типа bool использовать и менять ее значиния, то true то false P.S. Свое мнение не навязываю... Лучше сделай как считаешь нужным) Link to comment
Vamp1r Posted August 18, 2012 Share Posted August 18, 2012 Какой то вобще не красивый алгоритм, но можно и так... Только лучше переменную типа bool использовать и менять ее значиния, то true то false Не красивый алгоритм? Проще его в данном случае не придумать. Да, с bool будет куда проще. Вот пример: local flag = false addEventHandler("onPlayerJoin", getRootElement(), function() if flag then -- Подключился четный игрок -- Спавн с инфернусом else -- Подключился нечетный игрок -- Спавн с туризмо end flag = not flag end ) Link to comment
Flaker Posted August 18, 2012 Share Posted August 18, 2012 Нормально) Хороший алгоритм) Я же говорю, надо делать как самому нравится, а советы просто почитать можно) Так что все отлично Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now