aleksandr 21 Report post Posted March 23, 2016 Уже много раз поднимали вопрос о получении лута в игре. Довольно часто при походах в данжи "нехорошие игроки", старались жать кнопки подбора лута, чтобы им досталось всё, а другим ничего. Можно ли реализовать подбор лута таким образом, чтобы он был рандом? Quote Share this post Link to post Share on other sites
V3ct0r 2,121 Report post Posted March 23, 2016 @aleksandr все таки это элемент игры: кто первый взял того и предмет. Я в свое время поэтому и вырубал игроков, которые рядом со мной пилили сундуки. Что значит подбор лута чтобы он был рендом? Я считаю, что когда несколько человек беспорядочно жмут клавиши подбора лута на клавиатуре, чтобы забрать предмет, и этот предмет потом достается кому-то одному, это и есть настоящий рендом Quote Some useful links / Полезные ссылки Tips for making a topic in 'Questions & Help' / Рекомендации по созданию тем в разделе "Помощь" Server Advertising Section Rules / Правила раздела "Реклама серверов" Available e-mail domains for registration / Допустимые e-mail домены для регистрации User groups / Группы пользователей User ranks / Звания пользователей "Broken" pictures on the forum / "Битые" изображения на форуме Beware of scammers! / Осторожно, мошенники! My developments / Мои разработки Mods for client and server / Моды для клиента и сервера PKOdev.NET website for Tales of Pirates Server / PKOdev.NET веб-обвязка для сервера Пиратии I do not provide any help in private messages and outside the forum. Use 'Questions & Help' section please. Thank you for understanding! Я не оказываю какую-либо помощь в личных сообщениях и вне форума. Пожалуйста, используйте раздел "Пиратия: Помощь". Благодарю за понимание! Share this post Link to post Share on other sites
aleksandr 21 Report post Posted March 23, 2016 (edited) 33 минуты назад, V3ct0r сказал: @aleksandr все таки это элемент игры: кто первый взял того и предмет. Я в свое время поэтому и вырубал игроков, которые рядом со мной пилили сундуки. Что значит подбор лута чтобы он был рендом? Я считаю, что когда несколько человек беспорядочно жмут клавиши подбора лута на клавиатуре, чтобы забрать предмет, и этот предмет потом достается кому-то одному, это и есть настоящий рендом Даже если все выпавшие вещи поднимал один человек, предмет может достаться кому угодно из пати, некий бросок кубика, у кого больше, тому и достается вещь. А сейчас действует такая система - у кого пинг меньше до сервера, тот все и получит Edited March 23, 2016 by aleksandr Quote Share this post Link to post Share on other sites
Katess 2 Report post Posted March 24, 2016 В других играх есть и система без кубика. В настройках отряда: "свободный" - кто поднял, "случайный" - если лутин несколько, по очереди по одной дается членам отряда. В пиратии зачастую решает не пинг, а то что ты круз с авто-подбором, стоящий ближе к мобу, чем хилящий тебя клер. Врядли можно реализовать. Quote Share this post Link to post Share on other sites
V3ct0r 2,121 Report post Posted March 24, 2016 Можно попробовать добавить в GameServer.exe функцию, которая будет вызываться когда игрок подбирает лут, и в ней распределять поднятые предметы по игрокам в отряде. Quote Some useful links / Полезные ссылки Tips for making a topic in 'Questions & Help' / Рекомендации по созданию тем в разделе "Помощь" Server Advertising Section Rules / Правила раздела "Реклама серверов" Available e-mail domains for registration / Допустимые e-mail домены для регистрации User groups / Группы пользователей User ranks / Звания пользователей "Broken" pictures on the forum / "Битые" изображения на форуме Beware of scammers! / Осторожно, мошенники! My developments / Мои разработки Mods for client and server / Моды для клиента и сервера PKOdev.NET website for Tales of Pirates Server / PKOdev.NET веб-обвязка для сервера Пиратии I do not provide any help in private messages and outside the forum. Use 'Questions & Help' section please. Thank you for understanding! Я не оказываю какую-либо помощь в личных сообщениях и вне форума. Пожалуйста, используйте раздел "Пиратия: Помощь". Благодарю за понимание! Share this post Link to post Share on other sites
WVWMK 121 Report post Posted March 25, 2016 Можно так же запилить предмет, который падает члену отряда, и при активации этого предмета будет генерироваться предмет кому-то из отряда(видел вроде на мд) Quote Делай добро и бросай его в воду Share this post Link to post Share on other sites
V3ct0r 2,121 Report post Posted March 27, 2016 @aleksandr Я добавил в GameServer.exe функцию OnPickupItem(). Она вызывается когда игрок подобрал лут. Далее я написал код, который с вероятностью 1 / n, где n - количество игроков в отряде, распределяет лут между игроками: ВНИМАНИЕ, подводные камни: 1) Если игрок выбросит предмет и заново его подберет, то этот предмет может достаться кому-то из отряда; 2) Следует из п. 1 - Два игрока. Один где-то в Аскароне, второй в Шайтане. Они могут дистанционно обмениваться предметами. Исправить довольно легко. Нужно проверять что все игроки из отряда находятся на одной и той же карте и расстояние между ними не слишком большое. -- Событие возникает когда игрок поднял предмет -- -- @role Дескриптор персонажа -- @item_id ID предмета -- @item_num Количество предмета -- @item_pos Номер ячейки -- -- @return void function OnPickupItem(role, item_id, item_num, item_pos) -- Проверяем что игрок в отряде if ( IsInTeam(role) == 1 ) then -- Заполняем массив с игроками в отряде local n = 1 local player = {} player[1] = role for i = 0, 4, 1 do local cha = GetTeamCha(role, i) if (ValidCha(cha) == 1) then n = n + 1 player[n] = cha -- Напишем всем сообщение что игрок поднял предмет SystemNotice(cha, "Игрок [" .. GetChaDefaultName(role) .. "] подобрал [" .. GetItemName(item_id) .. "] x [" .. item_num .. "]!") else break end end -- Случайно распределяем лут между игроками local r = math.random(1, n) if (player[r] ~= role) then -- Забираем предмет у игрока ... DelBagItem(role, item_id, item_num) -- ... и выдаем предмет другому игроку GiveItem(player[r], 0, item_id, item_num, 4) end -- Напишем кому достался предмет for i = 1, n, 1 do SystemNotice(player[i], "Предмет достался игроку [" .. GetChaDefaultName(player[r]) .. "]!") end end end [Pickup]GameServer.exe 1 Quote Some useful links / Полезные ссылки Tips for making a topic in 'Questions & Help' / Рекомендации по созданию тем в разделе "Помощь" Server Advertising Section Rules / Правила раздела "Реклама серверов" Available e-mail domains for registration / Допустимые e-mail домены для регистрации User groups / Группы пользователей User ranks / Звания пользователей "Broken" pictures on the forum / "Битые" изображения на форуме Beware of scammers! / Осторожно, мошенники! My developments / Мои разработки Mods for client and server / Моды для клиента и сервера PKOdev.NET website for Tales of Pirates Server / PKOdev.NET веб-обвязка для сервера Пиратии I do not provide any help in private messages and outside the forum. Use 'Questions & Help' section please. Thank you for understanding! Я не оказываю какую-либо помощь в личных сообщениях и вне форума. Пожалуйста, используйте раздел "Пиратия: Помощь". Благодарю за понимание! Share this post Link to post Share on other sites
aleksandr 21 Report post Posted March 27, 2016 8 часов назад, V3ct0r сказал: @aleksandr Я добавил в GameServer.exe функцию OnPickupItem(). Она вызывается когда игрок подобрал лут. Далее я написал код, который с вероятностью 1 / n, где n - количество игроков в отряде, распределяет лут между игроками: ВНИМАНИЕ, подводные камни: 1) Если игрок выбросит предмет и заново его подберет, то этот предмет может достаться кому-то из отряда; 2) Следует из п. 1 - Два игрока. Один где-то в Аскароне, второй в Шайтане. Они могут дистанционно обмениваться предметами. Исправить довольно легко. Нужно проверять что все игроки из отряда находятся на одной и той же карте и расстояние между ними не слишком большое. -- Событие возникает когда игрок поднял предмет -- -- @role Дескриптор персонажа -- @item_id ID предмета -- @item_num Количество предмета -- @item_pos Номер ячейки -- -- @return void function OnPickupItem(role, item_id, item_num, item_pos) -- Проверяем что игрок в отряде if ( IsInTeam(role) == 1 ) then -- Заполняем массив с игроками в отряде local n = 1 local player = {} player[1] = role for i = 0, 4, 1 do local cha = GetTeamCha(role, i) if (ValidCha(cha) == 1) then n = n + 1 player[n] = cha -- Напишем всем сообщение что игрок поднял предмет SystemNotice(cha, "Игрок [" .. GetChaDefaultName(role) .. "] подобрал [" .. GetItemName(item_id) .. "] x [" .. item_num .. "]!") else break end end -- Случайно распределяем лут между игроками local r = math.random(1, n) if (player[r] ~= role) then -- Забираем предмет у игрока ... DelBagItem(role, item_id, item_num) -- ... и выдаем предмет другому игроку GiveItem(player[r], 0, item_id, item_num, 4) end -- Напишем кому достался предмет for i = 1, n, 1 do SystemNotice(player[i], "Предмет достался игроку [" .. GetChaDefaultName(player[r]) .. "]!") end end end [Pickup]GameServer.exe Ого, это реально клёво! Большое спасибо Quote Share this post Link to post Share on other sites