Перейти к контенту

Рекомендуемые сообщения

9 часов назад, Баба ЯГА сказал:

Я написал это в первом своём посте, так не будет работать.

В твоем посте и у Kirgudu вызываются разные методы для проигрывания звука. Как написал Kirgudu, должно работать.

  • Спасибо 1

Подарки

  • Ссылка на комментарий
    4 часа назад, abramcumner сказал:

    В твоем посте и у Kirgudu вызываются разные методы для проигрывания звука. Как написал Kirgudu, должно работать.

    Да, ты прав, прошу прощения, я не заметил что в моём случае play_no_feedback, а в его - play. В любом случае, проблема решена ещё вчера двумя разными способа. Всем спасибо! Вопрос снимается.

    Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

    Ссылка на комментарий

    Господа, время доброго!

    У меня вот какой интересный вопросец. У меня реализован скрипт, читающий нетпакеты всех НПС, после чего имена всех мне интересующих записываются в таблицу:

    Скрытый текст
    
    for i = 1, 65535 do
    		local sobj = alife():object(i)
    		if (sobj) and IsNpcStalker(sobj) then --отсеиваем все объекты кроме интересующих:нейтралы, свобода, долг 
    		local pk = get_netpk(sobj) --рабоатем с нетпакетом объекта
    			if pk and pk:isOk() 
    			then
    				local data = pk:get() --тягаем нетпакет
    				local charname = data.character_name --получаем имя объекта
    				table.insert(tab,charname) --пишем имя в таблицу tab
    			end	
    		end
    	end
    end

     

    Далее с разными целями я использую рандомные имена существующих НПС из таблицы следующим образом: 

    Скрытый текст
    
    function name_npc()
    return tab[math.random(#tab)]
    end

     

    И вот какой у меня вопрос: каким образом в таблицу одновременно с именем_кличкой НПС записывать его Id? А после каким образом можно через функцию "name_npc()" прочитать только одну из двух переменных?

    Таким образом я хочу реализовать фишку, что когда приходило бы сообщение в сталкерскую сеть от нпс: 

    amk.send_tip("тело сообщения", testt.name_npc(), время, 15, "common_channel")

    , то у этого НПС отнималось определенное кол-во денег, за СМС.

     

    Изменено пользователем _Sk8_AsTeR_

    Подарки

  • Ссылка на комментарий

    @_Sk8_AsTeR_

    Скрытый текст
    
    table.insert(tab, {id = sobj.id, name = data.character_name}) -- пишем id и имя в таблицу tab
    
    function get_npc()
    	return tab[math.random(#tab)]
    end
    
    local npc = testt.get_npc()
    amk.send_tip("тело сообщения", npc.name, время, 15, "common_channel")
    -- аналогично добавляем отъём денег по npc.id

     

     

    • Спасибо 1
    • Нравится 2
    Ссылка на комментарий
    17 часов назад, _Sk8_AsTeR_ сказал:

    то у этого НПС отнималось определенное кол-во денег, за СМС.

    и тут ОПСОСы !!! 

    • Не нравится 2
    • Смешно 1
    Ссылка на комментарий

    Как через скрипт закрыть открытый инвентарь, знает кто?

    Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

    Ссылка на комментарий

    @naxac,  спасибо, работает. Ещё работает вот так:

    function inv_close_1()
      level.hide_indicators()
      level.show_indicators()
    end

    @naxac, можешь подробно описать что именно делает этот код, который ты дал?

    level.start_stop_menu( level.main_input_receiver(), true )

    Хотелось бы понимать, а не просто копировать...

    Изменено пользователем Баба ЯГА

    Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

    Ссылка на комментарий
    1 час назад, Баба ЯГА сказал:

    Хотелось бы понимать, а не просто копировать...

    А почитать соседнюю тему "Справочник по ф-циям и классам", на первой странице раздел "Создание и управление худом и пользовательским интерфейсом"?

    Ссылка на комментарий

    Дня доброго! Подскажите, каким образом можно получить кол-во денег у НПС в конкретный момент, зная его ID?

    Например группировку можно получить с помощью obj:community(), а как кол-во денег получить? Есть мыслишки?

     


    Подарки

  • Ссылка на комментарий

    @Overfirst, Не срабатывает, заранее пробовал

    attempt to call method 'money' (a nil value)

    Изменено пользователем _Sk8_AsTeR_

    Подарки

  • Ссылка на комментарий

    Ты каким объектом манипулируешь? Клиентским или серверным? Метод рабочий.

    Ранее был известен под ником BoBaH_671.

    Ссылка на комментарий

    @Overfirst, вот таким образом мы получаем ID объектов и пишем все в таблицу, работа с нет-пакетами:

    Скрытый текст
    
    function table_update_pda()
    tab = {"пусто"}
    local iid
    tab_newbIes = {"new"}
    	for i = 1, 65535 do
    		local sobj = alife():object(i)
    		if (sobj) and IsNpcStalker(sobj) then 
    		local pk = get_netpk(sobj)
    			if pk and pk:isOk() 
    			then
    				local data = pk:get()
    				local charname = data.character_name
    				table.insert(tab, {id = sobj.id, name = data.character_name})
    			end	
    		end
    	end
    end

     

    А далее пытаемся работать с полученными ID. У меня получилось вывести на экран игровым сообщением ID случайного непися. Теперь задача - вывести на экран кол-во денег у танного ID непися:

    Скрытый текст
    
    function name_npc()
    	local npc = ogo() --рандомируем значение из таблицы tab
    	local iid = npc.id -- присваем id непися. Работает! Проверял - выводил на экран через amk.send_tip. 
    	local obj = alife():object(iid)
    	local mon = obj:money() -- с "money()" не работает. Работает с ":community()". Выводится на экран группировка данного ID непися. Но деньги - никак
    	amk.send_tip(mon, "деньги", 4, 15, "common_channel")
    	return npc.name
    end
    
    function ogo()
    	return tab[math.random(#tab)]
    end

     

    Скрытый текст
    
    attempt to call method 'money' (a nil value)
    
    Ссылка на строку: local mon = obj:money()

     

     


    Подарки

  • Ссылка на комментарий

    @_Sk8_AsTeR_

    local sobj = alife():object(i) - так ты получаешь серверный объект, а метод money() имеется только у клиентских. Вариантов у тебя два: или получать клиентский объект по ID(к примеру так - local obj = level.object_by_id(ID)) и для него вызывать obj:money(), или пытаться вытащить кол-во денег из нет-пакета(если оно там хранится).

    • Согласен 1
    Ссылка на комментарий

    @_Sk8_AsTeR_, можно и деньги в таблицу записать. Например,

    table.insert(tab, {id = sobj.id, name = data.character_name, money = data.money})

    Ну, а дальше так же, как с именем.

    • Согласен 1

    Аддон для ОП-2.09.2: Яндекс/Google/GitHub

    naxac.gif


    Подарки

    Ссылка на комментарий

    Можно, но если выборка из таблицы будет значительно отнесена по времени от её заполнения, реальное кол-во денег будет уже другим. Тогда либо клиентский объект, либо снова считывать нет-пакет.

    Ссылка на комментарий

    @Kirgudu@naxac, господа уважаемые, а сразу вопрос сходу - каким бы образом можно было бы отнять деньги у нпс(записать это в нетпакет?)?

    То есть по большому счету моя основная задача не вывести деньги на экран (вывод денег на экран это метод проверки, что все работает), а отнять у данного ID нпс кол-во денег. 


    Подарки

  • Ссылка на комментарий

    @_Sk8_AsTeR_, примерно так:

    local sum = 10 -- здесь кол-во денег, котрое хотим отнять
    local pk = get_netpk(sobj)
    if pk and pk:isOk() then
    	local data = pk:get()
    	if data.money and data.money > sum then
    		data.money = data.money - sum
    	else
    		data.money = 0 -- отнимаем сколько есть, если не хватает
    	end
    	pk:set(data)
    end	

     

    • Спасибо 1
    Ссылка на комментарий

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

    Комментарии могут оставлять только зарегистрированные пользователи

    Создать аккаунт

    Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

    Зарегистрировать новый аккаунт

    Войти

    Есть аккаунт? Войти.

    Войти
    • Недавно просматривали   0 пользователей

      Ни один зарегистрированный пользователь не просматривает эту страницу.

    AMK-Team.ru

    ×
    ×
    • Создать...