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

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

 

 

как стравить двух НПС, а то они не атакуют друг друга

Чудес не бывает - если у них группировки(community) враждебные друг-другу, то они будут атаковать друг-друга. Ищи ошибку, или в профилях одинаковую группировку им прописал, или в логике есть запрет на атаку.

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

А не существует ли "универсального" скрипта для удаления пустых пачек патронов из инвентаря? Не сильно надо, но вдруг уже выкладывали...

http://images.gameru.net/image/direct/feeb3c7175.jpg

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

 

 

для удаления пустых пачек патронов из инвентаря?

Это похоже в каком-то моде накрутили, что пачки имеют 0 патронов ? В оригинале такого вроде не замечал...

А насчет скрипта - так есть ведь древний как ... не важно что, скрипт перепаковки не полных пачек. Он как раз должен такие пустышки прибирать. К примеру этот.

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

 

 

Это похоже в каком-то моде накрутили, что пачки имеют 0 патронов ? В оригинале такого вроде не замечал...

Кстати, да. Dunin_ammo как раз здесь используется, чтобы на пояс полные пачки вешались. Раз в оригинале такого нет, то, стало быть, мелкий побочный эффект от него. Вопрос снимается.

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

Раз в оригинале такого нет, то, стало быть, мелкий побочный эффект от него.

Ни в оригинале, ни с этим скриптом такого бага я не видел.

Смотрите спавн и какое там количество патронов прописано.

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

Давно мне голову забивает одна мысль. Можно ли как-то менять свойства у артефактов? А точнее значение этих самых свойств?

Изменено пользователем vampirnik77
Ссылка на комментарий

@dsh, Спасибо. Я бы рад. Но все эти прелести для ТЧ. Это я забыл указать платформу, извините. Платформа ЗП.

 

P.s Хочется рандомных свойств. А секции плодить не хочется.

Изменено пользователем vampirnik77
Ссылка на комментарий

Забавный эффект:

 

class "my_cls"

function my_cls:__init() end

 

function my_func( st, a ) st.actions = { [a] = true } end

 

 

my_func( t, my_cls() ) - таблица разрушена, при том, что

local a = my_cls(); my_func( t, a ) - работает.

 

Самое забавное, что происходит только в начале игры, и проявляется вылетом

0023:100046A6 xrSound.dll, CSound_manager_interface::CSound_manager_interface()

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

Что-то я не понял... Так все-таки, в ТЧ можно удалять из апдейта объекта этот объект ?

В какой-то момент фокус устойчиво срабатывает. Но именно в какой-то.

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

Забавный эффект:

my_func( t, my_cls() ) - таблица разрушена, при том, что

local a = my_cls(); my_func( t, a ) - работает.

Вроде обычный эффект - выход переменной из области видимости.

Вот так тоже не должно работать:

do local a = my_cls(); my_func( t, a ) end

Что-то я не понял... Так все-таки, в ТЧ можно удалять из апдейта объекта этот объект ?

В какой-то момент фокус устойчиво срабатывает. Но именно в какой-то.

Можно конечно. При удалении удаляется только серверный объект, клиентский, из апдейта которого ты удаляешь, вполне себе еще жив. Он удалится только к следующему апдейту.

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

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

 

 

Чудес не бывает - если у них группировки(community) враждебные друг-другу, то они будут атаковать друг-друга. Ищи ошибку, или в профилях одинаковую группировку им прописал, или в логике есть запрет на атаку.

Да, дело было в community. "freedom" атакует "dolg", но атаковать группировку "bandit" не хочет.

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

 

 

"freedom" атакует "dolg", но атаковать группировку "bandit" не хочет

 

Во, как раз еще помню свое удивление, когда с этим столкнулся. В game_relations.ltx поправь отношения бандитов и свободы, а то они там нейтральны друг к другу. Если тебе именно это нужно.

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

Во, как раз еще помню свое удивление, когда с этим столкнулся. В game_relations.ltx поправь отношения бандитов и свободы, а то они там нейтральны друг к другу. Если тебе именно это нужно.

Спасибо! То что нужно.

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

Вроде обычный эффект - выход переменной из области видимости.

Где там из области видимости ? Обработка внутри выражения должна идти справа налево.

А вот 2 разных выражения - здесь - по порядку.

 

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

Однако вывода в лог после alife():release() уже нет. То есть, объект таки помре.

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

Где там из области видимости ? Обработка внутри выражения должна идти справа налево.

А вот 2 разных выражения - здесь - по порядку.

my_func( t, my_cls() ) - таблица разрушена, при том, что

Это строчка равносильна такому:

do 
  local temp = my_cls()
  my_func(t, temp)
end
После вызова my_func временный объект удалится и в таблице будет ссылка на удаленный объект

 

local a = my_cls(); my_func( t, a )

Здесь а будет жить до следующего end. И какое-то время его даже можно будет получить из таблицы.

 

Однако вывода в лог после alife():release() уже нет. То есть, объект таки помре.

Если вывода нет - значит завис биндер. А биндер может зависнуть в том числе из-за неправильного вызова alife():release()

 

И там и там хорошо бы тестовые примеры для чистого ТЧ.

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

После вызова my_func временный объект удалится и в таблице будет ссылка на удаленный объект

Думаю, сборщик мусора не отупел до того, чтобы удалять объект, который используется как ключ в таблице.

Тов. @Dennis_Chikin чего то недоговаривает, код рабочий:

class "key_obj"

function key_obj:__init(name)
    self.name = name
end

local function log(text)
    get_console():execute("~~~" .. string.gsub(text, " ", "_"))
end

function set_act(t, a)
    t.actions = { [a] = true }
end

function test()
    local mtable = {}
    set_act(mtable, key_obj("key"))
    
    for obj, _ in pairs(mtable.actions) do
        log(obj.name)
    end
end
Добавив в start_game_callback вывел

Сервер: Старт...

! Unknown command: ~~~key

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

ТЧ 1.0004. SAP и Trans mod

github

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

Друзья, я новичок в скриптописании. Подскажите, кому не сложно, как скриптом сделать проверку на то, что актору был нанесен хит и тип хита woundscale? На форуме очень много информации, все пересмотреть не удается, а поиск ничего толкового не выдает, либо я не умею пользоваться им))

Изменено пользователем _Dunay_
Ссылка на комментарий

Думаю, сборщик мусора не отупел до того, чтобы удалять объект, который используется как ключ в таблице. Тов. Dennis_Chikin чего то недоговаривает, код рабочий:

Похоже, что да, таки рабочий.

Проблема откуда-то еще. НИ - имелось в виду именно НИ: то есть, с сэйва - работает. А вот "новая игра" - вылеты идут примерно в 3-х случаях из 10.

 

 

Касательно alife():release(), то вот:

 

function se_respawn:execute()
	local sim = alife()
	local game_time,idle_spawn,idle_time,num,prob,respawn_time,shift_time,timer
	-- проверим, условия автоудаления
	if self.tab_auto_dell then
		self.auto_dell = xr_logic.pick_section_from_condlist(db.actor_proxy,self,self.tab_auto_dell) ~= nil
	end
	-- если условия выполнены и есть флаг спавна - очистим таблицы и удалим респавнер
	if self.auto_dell and self.first_spawned then
		self.spawned_obj = {}
		respawners[self:name()] = nil
		sim:release(self,true)
		return
	end

 

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

Уважаемые знающие, вопрос о class_registrator.script и иже с ними. Хочу добавить свой серверный класс для работы с лампами, ТЧ 1.0006 НС АЕМ. Вот код из регистратора:

1) cs_register (object_factory, "hanging_lamp", "aem_lights.se_lamp", "AEM_LAMP", "aem_lamp")

2) cs_register (object_factory, "hanging_lamp", "se_objects.se_hanging_lamp", "O_HLAMP", "lights_hanging_lamp")
2-й пункт - это то что я хочу добавить. 
Проблема в том что se_objects.se_hanging_lamp биндится только в случае если 1-й пункт заккоментирован. т.е. я не могу клиентский класс (hanging_lamp) связать с разными типами (AEM_LAMP и O_HLAMP) и секциями (aem_lamp и lights_hanging_lamp) и серверными классами? когда я делаю alife:create() - я ведь создаю "по секции" а не по клиентскому классу. Подскажите, пожалуйста, где ошибка в моих рассуждениях? 
Изменено пользователем Winsor
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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