Welcome to Сообщество игровых серверов NETZONA.ORG

Присоединяйтесь к нам сейчас, чтобы получить доступ ко всем нашим функциям. Зарегистрировавшись и войдя в систему, вы сможете создавать темы, публиковать ответы в существующих темах, давать репутацию другим участникам, получать собственный личный мессенджер и многое другое. Это также быстро и совершенно бесплатно, так чего же вы ждете?
  • Приветствуем на сайте, Гость! Обязательно ознакомьтесь с условиями и правилами Публичной оферты Проекта NetZONA.org: https://netzona.org/help/public-offer/

  • Приветствуем на сайте, Гость! Обязательно ознакомьтесь с условиями и правилами использования Ваших файлов cookie на Проекте NetZONA.org: https://netzona.org/help/cookies/

  • Приветствуем на сайте, Гость! Обязательно ознакомьтесь с Политикой конфиденциальности Проекта NetZONA.org: https://netzona.org/pages/privacy-policy/

  • Ответы на основные вопросы: https://netzona.org/threads/populjarnye-voprosy-i-otvety-na-nix.6122/

  • Приветствуем на сайте, Гость! Приобрести (купить) Информационную услугу (в том числе группу "Проверенный") на Проекте NetZONA.org: https://netzona.org/account/upgrades

Рандомное выпадение предметов в NS

Статус
В этой теме нельзя размещать новые ответы.

Scoot

Пользователь
Регистрация
12 Мар 2015
Сообщения
200
Реакции
0
Баллы
27
Здравствуйте, хотел бы узнать как можно сделать рандомное выпадение предметов, как в тф2, то есть через определенный просежуток времения, рандомному игроку в инвентарь поместится рандомный предмет и в чате напишется что ему выпало, хотел бы узнать как реализовать это, рандомный выбор у меня получалось, а вот сама выдача и оповещение нет
 

Neon

Создатель
Команда форума
Проверенный
Регистрация
9 Фев 2013
Сообщения
1,394
Реакции
3
Баллы
49
  1. Таймер. ( timer.Create )
  2. Рандомный выбор игрока.
  3. Рандомный выбор предмета.
  4. Добавление предмета в инвентарь. ( client:getChar():getInv():add() )
  5. Вывод оповещения.
Код:
for k, ply in pairs( player.GetAll() ) do
ply:ChatPrint( "Какому-то игроку выпал предмет" )
end
 

Scoot

Пользователь
Регистрация
12 Мар 2015
Сообщения
200
Реакции
0
Баллы
27
А вот вопрос касательно рандомного выбора предмета, там же все предметы это типа sh_item.lua, так вот я хотел бы уточнить как именно это сделать на нс
 

Neon

Создатель
Команда форума
Проверенный
Регистрация
9 Фев 2013
Сообщения
1,394
Реакции
3
Баллы
49
Сделать выборку из всех предметов - это несколько неудобно, т.к. много вещей окажется ненужными. Поэтому лучше сделать отдельный массив со списком вещей.
Код:
local items = {
"bleach", "food", "beer"
}
print(table.Random(items))
 

Scoot

Пользователь
Регистрация
12 Мар 2015
Сообщения
200
Реакции
0
Баллы
27
Это все как плагин реализуется, я правильно понял?
 

Neon

Создатель
Команда форума
Проверенный
Регистрация
9 Фев 2013
Сообщения
1,394
Реакции
3
Баллы
49
Да, можно сделать через плагин.
 

Scoot

Пользователь
Регистрация
12 Мар 2015
Сообщения
200
Реакции
0
Баллы
27
Я сделал, но почему-то не работает
Код:
function PLUGIN:PlayerLoadout()

    randomply = 0
   
    timer.Create( "itm_timer1", 15, 0, function()
   
    local items = {
    "stunstick",
    "crowbar",
    "pipe",
    "357",
    "stunstick",
    "crowbar",
    "pipe",   
    "ar2",
    "stunstick",
    "crowbar",
    "pipe",   
    "annabelle",
    "stunstick",
    "crowbar",
    "pipe",
    "pistol",
    "rpg",
    "cacid",
    "sword",
    "pistol",
    "pistol",
    "pistol",
    "pistol",
    "pistol",
    "357",
    "smg1",
    "crossbow",
    "sh_stichiyafore",
    "sh_snipergun",
    "stunstick",
    "stunstick",
    "stunstick",
    "stunstick",
    }
   
           for k, v in pairs(player.GetAll()) do
            if IsValid(v) and v:IsPlayer() and v:Alive() then
                randomply = player.GetAll()[math.random(1,#player.GetAll())]
            end
        local randitem = table.Random(items)   
        randomply:getChar():getInv():add(randitem)
        v:ChatPrint( randomply, "нашел предмет", randitem )
        end
    end)   
end
 

Scoot

Пользователь
Регистрация
12 Мар 2015
Сообщения
200
Реакции
0
Баллы
27
Проблема в том, что это оказывается работает, но в чате не появляется сообщение о том что кому выпало, как можно это исправить? Я уже изменил написав вместо
Код:
v:ChatPrint( randomply, "нашел предмет", randitem )
вот это
Код:
pl:ChatPrint( randomply, "нашел предмет", randitem )
но все равно не выводит
 

Neon

Создатель
Команда форума
Проверенный
Регистрация
9 Фев 2013
Сообщения
1,394
Реакции
3
Баллы
49
Код:
randomply:ChatPrint( randomply:Name(), "нашел предмет", randitem )
 

Scoot

Пользователь
Регистрация
12 Мар 2015
Сообщения
200
Реакции
0
Баллы
27
Ну это спс, но задумка такова что это сообщение видят все игроки на сервере
 

Neon

Создатель
Команда форума
Проверенный
Регистрация
9 Фев 2013
Сообщения
1,394
Реакции
3
Баллы
49
Это не проблема. Просто сделай так:
Код:
v:ChatPrint( randomply:Name(), "нашел предмет", randitem )
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху Снизу