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

[SoC] Ковыряемся в файлах


Halford

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

Ящик появляется в онлайне примерно через 50-2000мс после появления.

 

Я лично такие вещи делаю как-то так: https://dl.dropboxusercontent.com/u/27871782/mob_effects.script

 

Про функции биндсталкера читать в "прозекторской".

 

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

Изменено пользователем Dennis_Chikin
  • Спасибо 1

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


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

local x, y, z = 0, 0, 0

local LVid, GVid = 0, 0

 

Чтобы было. Люди работают, понимаете-ли, в поте лица.

 

А писать for k, v in pairs( { "item_1", ... "item_n" } ) do alife():create( v, vector(), 0, 0, 0 ) end - это - бездуховно.

 

P.S. И вообще, разработчик мода должен все делать с выключенным монитором, стоя в гамаке, одетый в дубленку и ласты. Ибо нефиг.

Изменено пользователем Dennis_Chikin
  • Нравится 2
  • Согласен 1

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


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

actor = db.actor

 

Так затем же, зачем и все остальное: чтоб побольше мегабайтов получилось. Как в бредтесте.

 

Впрочем, набить 100500 раз db.actor - тоже полезно. Глядишь, на какой-нибудь 84261й раз получится не db.actor, а bd.actor - то-то всякие "правщики" нелицензированные утомятся это место искать... А обычным пользователем можно сказать, что это у них компьютер нелицензированный.

 

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

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


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

А есть кому эту секцию в ТАКОМ формате разбирать ?

Или все-ж что-нибудь по-проще туда вписать, типа

ignore_distance = 0 ?

 

 

"В каких character_desc_....xml" - пути мододелов неисповедимы. В оригинале там, вроде, единственным ограничением является коммунити, а дальше - кто дошел, тот и дошел.

name = yan_st_stalker3

...

type = general_lager

capacity = 5

communities = dolg

Изменено пользователем Dennis_Chikin
  • Спасибо 1

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


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

CGameTask, можно верстать прямо с ноля

Все хорошо, но вот текст описания ему скормить не получается. Воспринимает его только в качестве id для текста из xml.

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


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

А разве это плохо ?

Да, это плохо. В принципе, делать вариативные задания (принеси фиговину от атп/принеси фиговину от моста) - это не есть грамотный гэймплэй, и вешать такое на таски - не есть грамотный программизм, но если уж таск можно генерить, то часть, прибитая гвоздями, весь смысл данной возможности убивает на корню.

  • Согласен 1

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


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

Не вырезать, а поставить 0/100. И посмотреть, будут ли анимации.

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


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

А теперь ставим ноли, и, действительно, все становится очевидно.

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


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

 

function action_wounded:execute()

...

state_mgr.set_state(self.object,wound_manager_state,nil,nil,{look_object = victim},emerg,synsound)

 

function init_wounded( npc, ini, section, st, scheme )

...

st.psy_state = xr_meet.parse_data(npc,utils.cfg_get_string(ini,section,"psy_state",npc,false,"",def.psy_state))

  • Нравится 1

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


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

Блин, прочитал как infoportion_fail.

 

set - соответственно, выдача, а не проверка.

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

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


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

Не, граждане, вы определенно издеваетесь.

Все, что делает рестриктор - это по пинками из акторовского биндера пытается запустить набор функций из того же самого xr_logic и xr_conditions.

 

А если вы собираетесь разбрасываться предметами - так может повесить на дроп предмета проверку расстояния до нужной вам точки ?

 

Или задача все-таки - заставить пользователя купить себе новый пентиум i100500 о 100500 ядрах на 100500 терагерц ? А пользователь вас с такими заявками точно ни куда не пошлет ?

 

2 UnLoaded: издеваются не по тому, что кто-то кому-то нужен, а по тому, что сам процесс нравится.

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

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


Ссылка на сообщение
Поэтому, по минимуму - убери урон от костров

 

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

Поскольку "на ходу" класс поменять можно отнюдь не во всех случаях - ставим в 0 effective_radius.

 

Ну а так в процессе модостроения все ж стоит сразу прописывать пути *_task.

И в xr_kamp таки запретить использовать точку центра (прописать -1 в таблицу).

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

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


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

xr_effect.script:

 

function run_cam_effector(actor, npc, p)
    if p[1] then
        local loop, num = false, (1000 + math.random(100))
        
        if p[2] and type(p[2]) == "number" and p[2] > 0 then
            num = p[2]
        end

        if p[3] and p[3] == "true" then
            loop = true
        end
        
        --level.add_pp_effector(p[1] .. ".ppe", num, loop)
      level.add_cam_effector("camera_effects\\" .. p[1] .. ".anm", num, loop, "")                   
    end
end

function stop_cam_effector(actor, npc, p)
    if p[1] and type(p[1]) == "number" and p[1] > 0 then
        level.remove_cam_effector(p[1])
    end
end

 

Вот прямо следующая функция после функции добавления.

Цифра - уникальная. Я лично рекомендую использовать дату + порядковый номер. Например 16092401 - 16 год, 9й месяц, 24 число, сегодня это у нас первый, который мы куда-то прописали. Ну или списочек отдельный ведите.

  • Спасибо 1

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


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

массив сохраняем.

Это вполне бессмысленное занятие, ибо овер 99.9999% всех эффектов всегда привязано к вполне конкретной ситуации. А сохранение самих эффектов - вообще вредно.

 

Заучивать ничего не надо, а надо знать последний id, чтобы новый эффект не пересекся с каким-нибудь древним.

 

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

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

Все, что здесь можно сделать - это научить движок понимать строку вместо u32 на случай, если зачем-то ну очень сильно захотелось писать буквами вместо цифр.

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

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


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

"непись обязан произвести одновременно кучу действий."

 

Пф... Здесь все элементарно: https://dl.dropboxusercontent.com/u/27871782/xr_meet.script

 

 

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

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

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


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

Ну вот как бы делалось специально для того, чтобы было понятно.

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


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

функцию set_meet. Чего ему надо то?

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

 

Смотрите, как работает - благо, вся "китайская лапша" распутана, и переносите к себе то, что нужно.

 

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

 

P.S. И, да, я попробую посмотреть, где данному конкретному скрипту чего не хватает такого, что у меня есть, а у других нет, и добавлю комментарии "как сломать все обратно". Но не более того.

 

 

К вопросу о "логике" - я ж уже писал: если там получается конструкция более сложная, чем пара строк по 15 символов - рассмотрите возможность заменить на вызов СВОЕЙ функции, которая сделает все нужные проверки. Ибо синтаксис с плюсиками и закорючками явно разрабатывался исходя из того, что все это будет генерировать робот, а не человек.

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


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

Снял рядом с трупами координаты, да поковырялся в олл_спавне)))

И это говорит человек, у которого в tipsе на "use" выводятся все имена и черт знает что еще. ;)

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


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

Хех, касательно координат:

 

local pause_check = 100

-- 
function time_check()
	if pause_check >= 1 then pause_check = pause_check - 1
	elseif db.actor and device():is_paused() then	-- actor добавляется из bind_stalker
		if pause_check == 0 then
			pause_check = -1
			if dc_info then	-- вот сюда вещается вывод всякой полезной информации по паузе
				dc_info.info()
			end
			log( "log", "paused !" )
			return false
		end
	else pause_check = 100
	end
	global_time_ms = time_global()
	game_time_time = game.get_game_time()	-- полное игровое время
	game_time_sec = game_time_time:diffSec( game_time_base )	-- секунд от загрузки
	local _, _, _, _, _, _, ms = game_time_time:get()		-- y, m, d, hh, mm, ss, ms
	game_time_ms = game_time_sec * 1000 + ms			-- ms от загрузки
	return false
end


function init_time_check()	-- инициализация при загрузке смартов, до этого game.get_game_time() нет.
	game_time_time = game.get_game_time()
	game_time_base = game_time_time
	game_time_sec = game_time_time:diffSec( game_time_base )
	_, _, _, _, _, _, game_time_ms = game_time_time:get()
	level.add_call( time_check, dummy_action )
end

 

между делом так...

 

Ага, на самом деле довольно удобно, когда разная инфа сбрасывается в лог именно при паузах.

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


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

2 Nazgool: Очень сильно хочу порт под gcc. Чтоб make, и собралось.

 

Студию не воспринимаю от слова совсем.

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

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


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

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