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

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


Svoboда

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

 

 

АДСКИЕ тормоза

 

Ну, не сказать, что бы адские, но тормозит, да.

 

 

 

кто-то пробовал с этим бороться ?

 

Я решил просто циклические задания, коих больше всего, вынести из заданий вообще.

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


Ссылка на сообщение
@TIGER_VLAD, ну естественно скорость зависит от фпс, т.е. от частоты выполнения апдейта. Ведь ты же на каждом апдейте меняешь позицию. Умножай дельту на кол-во секунд, прошедших с прошлого апдейта, что-ли. Текущее время в миллисекундах возвращает time_global(). На каждом апдейте его сохрани, вычти из него предыдущее значение, раздели на кол-во миллисекунд в секунде и умножь на дельту. В этом случае, дельтой будет задаваться скорость в секунду реального времени. Как-то так.
  • Спасибо 1

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


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

@hi_flyer, под ТЧ что ты понимаешь? В x-ray extensions есть этот метод. Если тебе нужно именно через нетпакет, то вот код, который я некоторое время использовал

function clear_used_ai_locations( sobj )
  local pk = get_netpk( sobj, 1 )
  if pk and pk:isOk() then
    local data = pk:get()
    data.object_flags = bit_and(
      data.object_flags, bit_not( object_flags.UsedAI_Locations )
    )
    pk:set( data )
  end
end

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


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

@Dennis_Chikin, если я ничего не путаю, то true из этого метода говорит движку, что бы он сохранял клиентский объект при его переходе в оффлайн. Иначе, только при сейве в онлайне. Могу напутать, т.к. давно это смотрел.

  • Не согласен 1

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


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

@Dennis_Chikin, у меня осталось в памяти впечатление, что оно делалось для того, что бы сохранять/не сохранять при переходе в оффлайн. Ну а то, как оно работает - это уже второй вопрос. Оно не только в этом вопросе работает совсем не так, как задумывалось и декларировалось.

  • Не согласен 1

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


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

@HellRatz, в смысле? Что-то типа такого?

local s_box = alife():story_object( my_super_uniq_story_id )
local box   = level.object_by_id( s_box.id )
db.actor:iterate_inventory(
  function( npc, item )
    db.actor:trasfer_item( item, box )
  end,
  db.actor
)

По памяти писал. Никаких проверок, типа у нашли-ли мы этот ящик и т.п., нет, а стоит добавить.

  • Спасибо 1

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


Ссылка на сообщение
@Dennis_Chikin, я в некоторых случаях замечал, что движок как бы запланировал вывод в онлайн какие-то объекты и будет пытаться это делать, даже если их удалить после этого и до их net_spawn-а. Вот такое у меня ощущение осталось. Подробно не разбирался. Просто принял к сведению, что возможны чудеса.
  • Полезно 1

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


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

@vampirnik77 ну, например в нетспауне актора проверяешь флаг. Если его нет, делаешь, что нужно и ставишь этот флаг. В качестве флага может использоваться поршень, а может и что угодно другое.

  • Спасибо 1

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


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

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

 

@vampirnik77 ну вот ещё вариант. Выдавать из нетспауна поршень, у которого в action указана функция. Но опять же, это тот же флаг с видом сбоку, просто проверкой будет заниматься движок.

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


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

@Dennis_Chikin а чего их перебирать-то. Отработал свое и давай, как говорится, до свидания, типа вот такого:

on_info = {+night_watch_done} nil %=dsh.release_alive_npc%

А вот этим, которые эту проверку засунули в апдейт, я бы руки сразу на место переставил. А то они там еще и не такое в апдейт засунут.

 

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


Ссылка на сообщение
1 hour ago, Graff46 said:

сделать скролл InitStatic'ку

Я делаю scroll

    <descr_scroll x="247" y="10" width="355" height="150" always_show_scroll="0"/>
  self.descr_scroll = xml:InitScrollView(
    "main_dialog:descr_scroll", self.dialog
  )

и к нему уже аттачу статик с текстом

    <descr_text x="0" y="0" width="335" height="250" complex_mode="1">
      <font font="letterica16" r="255" g="255" b="255"/>
    </descr_text>
  self.item_descr = self.xml:InitStatic(
    "main_dialog:descr_text", self.descr_scroll
  )
  self.item_descr:SetText( self:get_item_description( ui_item.data ) )
  self.item_descr:AdjustHeightToText()

 

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


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

@BossBoroda если нет уборщика трупов, то движок убирает, ориентируясь на эти параметры

	corpse_remove_game_time_interval	= 12 ; in hours
	stay_after_death_time_interval		= 12 ; in hours

 

  • Согласен 1

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


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

@BFG теперь ты слишком усложняешь. Все, что ты описал, нужно только для создания нового рецепта. А для выдачи уже существующего, достаточно выдать соотв. инфопоршень.

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


Ссылка на сообщение
(изменено)

@Graff46 это тебе в исходники надо лезть, выяснять. Я не встречал никакого описания для action(), ни вменяемого, ни невменяемого. Каждый раз приходиться из исходников эту информацию по крупицам вытаскивать. А штука эта мощная, на мой взгляд.

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

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


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

Народ, кто разбирается в математике, подскажите пожалуйста. Вот есть у меня два вектора: направление на объект и направление камеры. И есть у меня угол между этими векторами. Так вот, мне нужно определить, что камера смотри на этот объект. Я могу считать, что если камера на расстоянии 2-ух метров от объекта и угол между этими векторами меньше, скажем, 0.3, то камера смотрит на объект. Но если расстояние будет уменьшаться, ведь допустимый угол должен увеличиться, т.к. объект становится больше в камере. Как мне посчитать этот угол для меньшего расстояния, если я задаю, что на расстоянии 2 метра он должен быть меньше 0.3?

 

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


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

AMK-Team.ru

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