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

Скриптование


Svoboда

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

for i=1,65535 do
    local obj = alife():object(i)
    if obj then
        if string.find(obj:name(),"_portal_npc") then
            alife():release(se_obj, true)
        end
    end
end

Изменено пользователем _Призрак_

Freedom

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


Ссылка на сообщение
Всем привет, кто-нибудь знает как выглядит скрипт по ограблению ГГ т.е. каким образом можно удалить всё из инвентаря, и забрать у ГГ все деньги? Речь идет о ЗП. Зарание спасибо.

Удалить все вещи из инвентаря ГГ легко, но очень часто требуется скинуть их в тайник, откуда они потом могут опять попасть к ГГ. Вот функция которую написал я:

function actor_look_at_sitnik_hit_to_actor_2()
    local cbox = level.object_by_id(alife():story_object(2026).id)      --получаем тайник около Борова по sid
    db.actor:inventory_for_each(
    function (item, actor)
    local section = item:section()
    if section == "hand_radio_f"
    or section == "device_pda"
    or section == "device_torch"
    or section == "separator"
    or section == "mobile_changer"
    or section == "bolt" then                          --Сюда пишем исключения
        return
    end
    
    if system_ini():line_exist(section, "quest_item") then      --не удаляем квестовые предметы
        if system_ini():r_bool(section, "quest_item") then
            return
        end
    end
    db.actor:transfer_item(item,cbox)     --перемещаем
end, db.actor)
end

 

 

Кстати в твоей функции есть небольшая ошибка - ты начинаешь переберать с 10 объекта, а вдруг нам не повезло и наш НПС получил id 7?

Я использую 3 варианта:

Варианты:

function delete()
   for a=10,65635,1 do
      local obj=alife():object(a)
      if obj then
         if string.find(obj:name(),"name") then
            alife():release(obj,true)
         end
      end
   end
end

 

 

Если вы уверены что НПС в онлайне

function delete()
   for k,v in pairs(db.storage) do
      local obj = level.object_by_id(k)
      if obj then
         if string.find(obj:name(),"aaaa") then
            alife():release(alife():object(k),true)
         end
      end
   end
end

 

 

Как вариант можно при спавне запомнить id НПС

local obj = alife():create(......
amk.save_variable("my_obj_id",obj.id)
....
local sobj = alife():object(amk.load_variable("my_obj_id"))
if sobj then
   alife():release(,true)
end

 

Изменено пользователем _Призрак_

Freedom

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


Ссылка на сообщение

ColR_iT

Не правильно

метод set_condition(number) работает только для game_object* (т.е. для клиентских объектов), а функция amk.spawn_item_in_inv работает на функции alife():create которая возвращает серверный объект.

Тут есть пара вариантов, но самый красивый из них таков:

function spawn()
local wpn = amk.spawn_item_in_inv("wpn_ak74")
level.client_spawn_manager():add( wpn.id, 0, weapon_in_alife)    --ставим каллбек на выход в онлайн
end

function weapon_in_alife(first,id,obj)
obj:set_condition(0)     --выставляем кондишн
level.client_spawn_manager():remove(id, 0) -- убраем установленный колбек
end

Freedom

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


Ссылка на сообщение

Только вот если присвоить SID НПС'у при спавне через нет-пакеты то получить НПС через СИД можно только после сейф-лоада. Я прав или тут есть какой нибудь обходной путь?

 

Artos

Ах, забыл про перевод в оффлайн. Спасибо

Изменено пользователем _Призрак_

Freedom

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


Ссылка на сообщение

Можно, но код у тебя не правильный

Нужно так:

local stalker_gopnik = {"stalker_bandit_", "stalker_bandit_veteran", "stalker_bandit_master", "stalker_bandit_exoskeleton"}

for i=1,#stalker_gopnik do

if string.find(vis,stalker_gopnik) then return section end

end

Freedom

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


Ссылка на сообщение

Есть ли готовая функция для перевода вектора, возвращаемого функцией db.actor:direction() в direction прописываемый в алл.спавне?

Freedom

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


Ссылка на сообщение

Попробуй так:

combat_ignore_cond = {=fighting_actor -my_info}

my_info - инфопоршень после которого НПС перестает игнорить актора

И не забудь в logic дописать comabt_ignore = combat_ignore

И где нибудь в этом файле вставить:

[combat_ignore]
combat_ignore_cond = {=fighting_actor -my_info}

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

Freedom

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


Ссылка на сообщение

Раз уж зашел разговор о UI то у меня тоже давно был вопрос как с кастом статика убрать текстурку?

Я создал статик и установил текстуру:

self.picture = xml:InitStatic("picture", self)

self.picture:InitTexture("ui\\ui_disk_io")

Но как теперь убрать эту текстуру со статика?

 

Вариант 1: Убить старый объект и пересоздать без инициализации текстуры;

Вариант 2: Заменить прежнюю текстуру на 'пустышку' иль на прозрачную;

Вариант 3; Установить размер текстуры/окна в 1 пиксель ...

--/ Artos

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

Freedom

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


Ссылка на сообщение

Как поставить машину на тормоз?

Ситуация такая: Спавню машину около остановки на Кордоне. Там небольшой склон. Рядом с машиной обязательно во время боя взрывается пара гранат. Из-за них машина в 100% случаях машина скатывается в овраг. Как бы мне сделать так чтобы машина не скатывалась в овраг от каждой шальной пули?

 

Для Artos'а

Ты сейчас скажешь что изначально машина спавнится точно по координатам и на нее не действуют законы физики и только когда по машине наносится хит, законы физики начинают на нее действовать, и она скатывается. Но у меня при старте игры наносится всем машинам хиты и машина при старте стоит нормально, она откатывается именно от взрывов других машин и от взрывов гранат.

Не знал, что на форуме имеются оракулы-предсказатели. Бум иметь ввиду и вместо 'Кашпировсого' направлять по адресу ... ;)

Может не стОит за меня что-то предсказывать и заранее приписывать что я могу сказать?! :angry:

--/ Artos

 

Я ни в коем случае не хотел тебя оскорбить, я просто хотел сказать что я предусмотрел этот вариант

Оскорбить и рассердить - разные вещи, но в любом случае не стОит заранее думать и говорить за другого ...

--/ Artos

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

Freedom

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


Ссылка на сообщение

А если мы не открывали раньше инвентарь? В билдах была функция CUIInventoryWnd() возвращающая инвентарь, но что с ней случилось в финалке?

Изменено пользователем _Призрак_

Freedom

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


Ссылка на сообщение

А зачем размером со всю локацию? У меня инфопоршни выдавались по on_info даже когда спейс_рестриктор был за пределами а-лайфа

Freedom

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


Ссылка на сообщение

Как узнать код клавиши из user.ltx? Поясню:

Нужно чтобы при нажатии кнопки открытия второго слота активировалась функция. Функция для того чтобы отследить нажатие какой либо клавиши у меня есть, но я не знаю как узнать на какую клавишу игрок установил активирование второго оружейного слота

Freedom

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


Ссылка на сообщение

zoidberg123456789, у тебя почему то нет смарта darkscape_stalker_smart. Проверь запаковал ли ты спавн, без ошибок запаковался ли спавн, не забыл ли ты его потом переименовать из all.spawn.new в all.spawn

 

Указывай, плз, адресата в своем ответе. --/ Artos

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

Freedom

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


Ссылка на сообщение

dark_stalker

Могу тебе посоветовать проверить еще раз на наличие путей (помни что имя путя это имя_Смарта_имя_путя), отселидить нпс который вызывает такую ошибку и выложить все по нему в этой теме

Freedom

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


Ссылка на сообщение

Да, там.

Забекапь геймдату и начинай удалять НПС один за другим и тогда ты узнаешь какой вызывает вылет

Freedom

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


Ссылка на сообщение

Здравствуйте. Для чего используется o_torso в параметрах НПС? Почему ПЫС не хватило такого параметра как direction?

Изменено пользователем _Призрак_

Freedom

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


Ссылка на сообщение

Tris

В программировании очень популярен псевдокод. Перевожу твой скрипт на псевдокод:

функция:
   Если нет предмета "Предмет" то
      Создать в рюкзаке предмет "Антирадар"
      Отослать сообщение
      Если есть предмет "Предмет" то
         --что-то
      конец
   конец
конец

 

А теперь найди ошибку в логике функции

Freedom

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


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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