st-al-ke-rs-ha насмешил. Самый стабильный патч - это всегда последний (за редким исключением, не относящийся к Сталкеру). Ты никогда не задумывался, почему правки для движка сделаны под шестой патч а не под четвёртый? Наверно по тому, что он глючнутый...
st-al-ke-rs-ha, весьма зря, имхо. Пока не поздно поищите в интернете (а найти можно быстро, хотя бы вот здесь: >>Click Me<<) все плюсы шестого патча и перейдите на него.
Анатолий Давлятов твоя просьба из разряда "хочу всё и сразу". В этой теме ответы дают по конкретным проблемам/ошибкам. Всю информацию (а её очень много) ищи в интернете. то тебе мешает вбить в гугл/яндекс фразу "Модостроение на сталкер" и нажать волшебную кнопочку "Найти"? На заметку возьми себе сайты "Амк-форум", Википедиа, Инсайд.
ColR_iT по поводу лекций, хотелось бы присутствовать, но что-то я не нашел там кнопочки "зарегится", а так заявку не примут?st-al-ke-rs-ha По поводу бессмертного НПС уже было, нужно в м-сталкер создать свою секцию, и дать на нее ссылку твоего НПС
добавлено спустя 17 минут
st-al-ke-rs-ha Через аллспавн:
присваивай соему НПС напаример:
Код:
[123]
; cse_abstract properties
section_name = stalker_moy
name = informator
Затем в своем плагине добавляй его:
Код:
#######################################################################
package alife_object;
use strict;
use stkutils::data_packet;
use constant section_to_class => {
actor => 'cse_alife_creature_actor',
здесь он бессмертен, но можно поиграть параметрами, и настроить "трудноубиваемость"
Кстати, было обсуждение и спавна через скрипт подобного НПС, но тогда нужно давать ссылку на m_stalker в спавн-секшион кажется, точно не помню.
Сообщение было успешно отредактировано frankenshtayn (08-07-2012 02:59 GMT3 часа, назад)
У меня возникла проблема, точнее глюк или как его назвать.
Сталкер ТЧ 1.0004.
Беру задание у Лукаша замочить Долговцев на хуторе, болтаю с Максом - идём мочить. Нахуторе жде пока Свободовцы завалят Долг....и тишина...Все Долговцы лежат, а задание так и висит на стадии "Уничтожить группу", от чего может быть такой глюк? Пробовал и сам всехДолговцев убивать, всё равно задание не обновляется.
Arist, читай по порядку, не "прыгая глазами" вверх - вниз, тогда для тебя написанное будет приятной неожиданностью, а главное - понятной...
Ух... попробую разъяснить...
Первое, что бросилось в глаза, это то, что ты зачем-то используешь this для вызова функций из одного файла - это лишне.
Во-вторых, да - ты как то странно вызываешь функцию get_game_object. Смотри как работает логический оператор or. or возвращает свой первый параметра, если он отличен от nil и false. В твоём случае это всегда будет первый арумент, т.е. первый рестриктор (ты можешь в этом убедиться, если поменяешь какие-то имена в вызове функции get_game_object местами, например, gar_tualet_restrictor и vagon_angar_restrictor). Почему происходит именно так? Для этого нужно разобрать саму функцию get_game_object...
Функция принимает строковый параметр в качестве аргумента. Проверяет переданный параметр на неравенство nil и на то, что параметр является строкой, а если это не так, то возвращает nil. Далее возвращает клиентский объект по id серверного.
А теперь попробуй уловить ход мыслей: передаёшь ты в функцию имя рестриктора, оно не равно nil и это действительно строка, вот функция тебе и вернёт первый аргумент, потому что все условия удовлетворяют требованиям... Ещё раз: эта функция всегда будет возвращать клиентский объект рестриктора по его имени секции.
Проблема заключается в том, что функция не проверят наличие либо отсутствие актора внутри, чтобы вернуть именно тот рестриктор, в котором ГГ находится в данный момент времени. Вместо этого, ты в функции radiation_no_zone проверяешь расстояние от актора до рестриктора, причём всегда одного и того же (не знаю почему у тебя и последний рестриктор тоже работает, функция не доходит и до второго, не говоря уже о последнем).
Поэтому, чтобы ты правильно определил нахождение актора в рестрикторе, проверять тебе это нужно не в функции radiation_no_zone, когда у тебя уже есть клиентский объект, а нужно делать это в функции get_game_object, возвращая true, если актор внутри и false если его там нет.
Я немного переделал твой код используя более подходящие функции, поэтому протестируй и сравни со своим:
>>Click Me<<
Закинул в файле, потому что форум нещадно удаляет отступы.
Когда откроешь и разберёшь код, то определи для себя несколько правил:
1. Не проверяй отсутствие параметров переданных в функцию, а их наличие, т.е. если они есть, то продолжаем, а не возвращаем тут же false, принцип остаётся тот же, но так код работает быстрее и сам он становиться читабельнее;
2. Везде, где возможно, ставь комментарии, это поможет не только в дальнейшем не забыть, что именно делает тот или иной код, но и поможет отследить правильно ли ты его пишешь.
Код должен работать, но я не проверял, если что...
А теперь вариант, как бы сделал я:
Сделал бы несколько иначе и на мой взгляд в тысячу раз проще:
Для каждого "спасительного" рестриктора прописал бы логику:
Записал бы логику в отдельный файл, а ссылку на файл, через cfg прописал бы каждому рестриктору и чуток бы изменил код функции radiation_no_zone (осторожно, много текста):
Код:
--# Функция радиактивного дождя.
function radiation_no_zone()
--# Определим интенсивность дождя в данный момент времени.
local intensity_rain = level.rain_factor()
--# Если дождь идёт и мы не внутри рестриктора, то на нас капает радиактивный дождь имы получаем радиацию.
--# Если дождя нет и у нас есть "спасительный" инфопоршень, то ничего не происходит.
if intensity_rain ~= nil and intensity_rain ~= 0 and db.actor:dont_has_info("radiation_rain_deactivate") then
db.actor.radiation = intensity_rain * 0.0009
end
end
Я уверен, этот вариант будет работать, во-первых - быстрее, во-вторых - за меня рестрикторы определят внутри я или нет, как следствие - на глаза меньше кода, в-третих - он будет работать.
Всё, вешаешь эту функцию на апдейт и у тебя в игре радиоактивный дождь.
Не за что. Рад был помочь.
Сам скрипт то понятен? Тот который в файле я скинул или тоже не до конца?
На заметку возьми предложенные правила, о проверке на существование параметра и о комментариях - не пожалеешь.
P.S. будут вопросы - спрашивай.
Arist
О! Ну тут я проглядел. В рестрикторе выдаётся radiation_rain_deactivate, а забирается radiation_rain_deactivete. Правильно через "а".
Кстати, если слегка изменить логику, на эту:
[sr_tip@actor_inside]
name = you_safe
showtime = 6000
single = true
on_actor_outside = {+radiation_rain_deactivate} sr_idle@wait_actor %-radiation_rain_deactivate%
То помимо того, что радиоактивный дождь не будет действовать в таких рестрикторах, так ещё и при входе в него будет выдаваться сообщение о том, что "Вы в безопасности". Только сам текст нужно будет зарегистрировать в одном из файлов в папке config\text\rus, вот так:
Код:
<string id="you_safe">
<text>Вы в безопасности.</text>
</string>
Всё работает, я проверял.
Сообщение было успешно отредактировано ColR_iT (08-07-2012 20:24 GMT3 часа, назад)
Анатолий Давлятов- ну прежде всего тебе нужно скачать универсальный распаковщик для файлов под названием STALKER_Data_Unpacker, и распаковываешь всё это в папку Gamedata (только не забудь создать эту папку в корне игры) , а потом вписываешь в адресную строку вот этот адрес
http://www.stalker-portal.ru/plug.php?e=faq&cid=10&o=order&w=asc&d=0#Q:840
Там есть базовые знания о создании модов! Удачи!
Ребята привет. Наверно необычной покажется моя просьба. Я играл во многие крупные и мелкие моды, не мало в них мне понравилось и не мало же нет. В результате чего возникла идея создать свой собственный мод. Но проблема в том, что я вообще ноль в этих делах. Зная свою дотошность с уверенностью могу сказать, что на сбор всей необходимой информации уйдёт несколько месяцев. Так может опытные и знающие люди помогут мне быстрее войти в курс дела модостроительства; помогут ссылками советами, подскажут необходимые программы и как ими пользоваться и т.д. Ведь, если быстрее освою, быстрее выйдет в свет мод и если он получиться очень интересным от этого все выиграют.
Что скажите ? Направите новичка на путь истинный...
PROPOVEDNIK, уж очень много "если": "если быстрее освою", "если он получиться". А ты не задавался вопросом, для чего это нужно другим, зачем тебе помогать? Модостроение это дело добровольное и требовать здесь не с кого. Поэтому искореняй свою "дотошность" засучивай рукава и с чистой совестью в Google за помощью, а вот когда, что-то будет непонятно - милости просим, тема как раз для этого и создана, чтобы отвечать на возникшие вопросы.
Вопрос вот в чем: почему по приходу в точку p1:name = wp01|sig=vrag, НПС не всегда сразу открывает огонь по ГГ, а иногда "замерзает" и пока ГГ не "шевельнется" не реагирует на него?
frankenshtayn, здесь скорее небольшой глюк со стороны самой функции killactor, она как бы просто ставит специальный флаг НПС, который говорит ему о том, что актор теперь враг. Возможно НПС не видит ГГ в момент выполнения этой функции, поэтому и ничего не делает, пока не "услышит" игрока.
ColR_iT возможно расстояние тут тоже играет роль, т.к. если ГГ довольно близко, то НПС сразу отрабатывает эту функцию, а у меня он примерно 20-30 метров от ГГ
Всем привет! Подскажите функцию спавна мутанта с логикой в ТЧ, пожалуйста. Пробовал так:
function Kontroller_SHAES_spawn()
local obj=alife():create("m_controller_old_fat",vector():set(76.3504,-0.0004,-61.3328),49812,2375)
local params=amk.read_monster_params(obj)
params.custom="[logic]ncfg = scripts\\Kontroller_CHAES.ltx"
amk.write_monster_params(params,obj)
end
(амк скрипт есть)
получаю вылет:
Expression : fatal error
Function : CScriptEngine::lua_error
File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line : 73
Description : <no expression>
Arguments : LUA error: ...adow of chernobyl\gamedata\scripts\moi_kvestj.script:455: attempt to call field 'read_monster_params' (a nil value)
И ещё вопрос: заспавнил контроллёра,присвоил логику другим способом, в ней следующее:
[logic]
active = nil
on_death = death
[death]
on_info = %+Zaitcev_kontroller_ubil%
Однако при убийстве контроллёра поршень не выдаётся. Может,я логику не правильно написал?
Сообщение было успешно отредактировано Fagot_ (10-07-2012 17:10 GMT3 часа, назад)
Бовер во-первых эта тема не по SDK, во-вторых у тебя на локации много лодов, которые не умещаются в текстуру. Поставь больше одинаковых деревьев, замени объекты с лодами на объекты без лодов (например, УАЗ военные, есть с лодами, есть без) и т.д.
крысобелка скачай программу stalk mus creator, она перегоняет музыку под ТЧ.
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.