VenToReZ куда? А ты присмотрись, есть замечательная тема, называется "Поиск модификаций и модмейкерских утилит".
Artos, futura, erlik, по вопросу того что функции влияют. Я такого вообще не видел. НА карте не отмечаются точки перехода. не работает дин.худ, худ карты и т.д, постэффекты и так далее. Первый раз такое.
FLIKER, у тебя есть программа Notepad++? Если нет, то скачай отсюда: http://notepad-plus.sourceforge.net/ru/site.htm
В ней есть удобная функция Поиск --> Найти в файлах. Пишешь текст который тебе нужно найти и указываешь папку в которой искать. Если найдёт, то укажет имя файла и номер строки.
#karavan :...да и профессия другая, никак не связанная с програмированием.
Флуд, конечно, но скажу.
У подавляющего большинства из нас профессия тоже никак не связанная с программированием.
Просто когда есть желание и возможности (для данного случая я имею в виду интелектуальные), то станешь кем угодно.
(дальше обращаюсь не лично, а ко всем вообще)
Если же таких "возможностей" нет, то хотя бы должны быть "возможности" понять, что это дело вам не под силу.
Ну а если нет и таких "возможностей", то это уже летальный случай. Тут "медицина" бессильна.
отредактировал(а) Gun12: 14-05-2010 10:47 GMT3 час. Не стань номинантом премии Дарвина.
БаЛаБоЛ
Конспектируй
zoom_offset = X,Y,Z
X - горизонтальное поперечное смещение. Чем больше значение - тем правее.
Y - вертикальное смещение. Чем больше значение - тем выше.
Z - продольное смещение. Чем больше значение - тем оружие будет дальше.
zoom_rotate_x = X
X - вертикальный наклон. Чем значение больше - тем ствол (дуло) будет наклонен ниже.
zoom_rotate_y = Y
Y - горизонтальный наклон. Чем значение больше - тем оружие будет наклонено правее.
Готового рецепта нет.
Всё подбирается экспериментальным путем.
он задавал другой вопрос...
ну теперь у меня другой вопрос возникает....
как в этой функции:
function Check_Distanse()
if not Dictanse then Dictanse = 5 end
local PositionActor = db.actor:position() --/ позиция ГГ (вычисляем 1-раз)
local idActor = db.actor:id() --/ Id ГГ, чтобы НЕ проверял себя же!
local function Compare(id) --/ внутренняя локальная функция сравнения
local obj = level.object_by_id(id)
if obj and IsStalker(obj) and id ~= idActor then
if obj:position():distance_to(PositionActor) <= Dictanse then
news_manager.send_tip(db.actor, "текст", 0, "default", 8000)
end
end
end
if obj_id then --/ если задан id конкретного сталкера
Compare(obj_id)
else --/ иначе перебираем всех на локации
for id=1,65534 do
Compare(id)
end
end
end
сделать вызов текста только по айди...
т.е. подходишь к НПСу например к волку (айди 006 ), и эта функция активируетс...
как это осуществить?
Николай ФеНиКс
Нельзя же быть таким ленивым, чтобы не читать хотя бы предыдущие посты.
Не столько для тебя, сколь 'в продолжение', т.е. по мотивам прошедшего:
local bFlag = false --/ флаг-триггер, для однократности выполнения условия/функции
function Check_Distanse()
if bFlag then return end --/ на выход. т.к. уже отработано
if not Dictanse then Dictanse = 5 end
local PositionActor = db.actor:position() --/ позиция ГГ (вычисляем 1-раз)
local idActor = db.actor:id() --/ Id ГГ, чтобы НЕ проверял себя же!
local function Compare(id) --/ внутренняя локальная функция сравнения
local obj = level.object_by_id(id)
if obj and IsStalker(obj) and id ~= idActor then
if obj:position():distance_to(PositionActor) <= Dictanse then
bFlag = true
news_manager.send_tip(db.actor, "кто-то близко от ГГ", 0, "default", 8000)
end
end
end
if obj_id then --/ если задан id конкретного сталкера
Compare(obj_id)
else --/ иначе перебираем всех на локации
for id=1,65534 do
Compare(id)
end
end
end
Выделенное синим - можешь менять по д свои нужды.
Выделенное зеленым - позже сможешь задействовать, если потребуется.
Функция будет выполнятся при каждом запуске игры, т.к. bFlag не сохраняется в сэйвах.
Не путай айди (Id) с сидом (story_id)!
и если был ответ на: "Сколько будет 2х3?", то нужно быть первоклашкой, чтобы вопрошать: "А теперь подскажите 3х2= сколько?"
Как определить Id (айди) объекта? Вариантов множество и зависят от условий и исходных данных.
Если уже известен Story_Id, то взяв уже готовую функцию (азбуку нужно знать!):
local soObj = alife():story_object(Story_Id) --/ серверный объект/персонаж
local Obj_Id = soObj.id --/ искомый id (айди) объекта, который можно и запомнить ...
local bFlag = false --/ флаг-триггер, для однократности выполнения условия/функции
function Check_Distanse(Obj_Id) --/ на входе заданный Id перса
if bFlag then return end --/ на выход. т.к. уже отработано
if not Dictanse then Dictanse = 5 end
local PositionActor = db.actor:position() --/ позиция ГГ (вычисляем 1-раз)
local idActor = db.actor:id() --/ Id ГГ, чтобы НЕ проверял себя же!
local function Compare(id) --/ внутренняя локальная функция сравнения
local obj = level.object_by_id(id)
if obj and IsStalker(obj) and id ~= idActor then
if obj:position():distance_to(PositionActor) <= Dictanse then
bFlag = true
news_manager.send_tip(db.actor, "кто-то близко от ГГ", 0, "default", 8000)
end
end
end
if Obj_Id then --/ если задан id конкретного сталкера
Compare(obj_id)
else --/ иначе перебираем всех на локации
for id=1,65534 do
Compare(id)
end
end
end
Выделенное синим - можешь менять под свои нужды.
Выделенное зеленым - позже сможешь задействовать, если потребуется.
Функция будет выполнятся при каждом запуске игры, т.к. bFlag не сохраняется в сэйвах.
Примечание: Если искомый персонах (Id) - погиб и уже исчез из игры - проверка дистанции будет проводиться в данном варианте уже по ближнему обнаруженному сталкеру.
local soObj = alife():story_object(006) --. серверный объект
local bFlag = false --/ флаг-триггер, для однократности выполнения условия/функции
function Check_Distanse(soObj) --/ на входе заданный Id перса
if bFlag then return end --/ на выход. т.к. уже отработано
bFlag = true
if not Dictanse then Dictanse = 5 end
local PositionActor = db.actor:position() --/ позиция ГГ (вычисляем 1-раз)
local idActor = db.actor:id() --/ Id ГГ, чтобы НЕ проверял себя же!
local function Compare(id) --/ внутренняя локальная функция сравнения
local obj = level.object_by_id(id)
if obj and IsStalker(obj) and id ~= idActor then
if obj:position():distance_to(PositionActor) <= Dictanse then
news_manager.send_tip(db.actor, "кто-то близко от ГГ", 0, "default", 8000)
end
end
end
if Obj_Id then --/ если задан id конкретного сталкера
Compare(obj_id)
else --/ иначе перебираем всех на локации
for id=1,65534 do
Compare(id)
end
end
end
если немного подумать то твой вариант совсем прост:
local bFlag = false --/ флаг-триггер, для однократности выполнения условия/функции
function Check_Distanse(Story_Id,Dictanse) --/ на входе заданный Id перса и дистания до него
if bFlag then return end --/ на выход. т.к. уже отработано
if not Dictanse then Dictanse = 5 end
local obj = alife():story_object(Story_Id)
if obj and obj:position():distance_to(db.actor:position()) <= Dictanse then
bFlag = true
news_manager.send_tip(db.actor, "ГГ близко!", 0, "default", 8000)
end
end
Приравняв Story_Id = 006 и Dictanse = 10 - получишь сообщение при подходе ГГ к Волку (или его трупу) на дистанцию 10 метров.
Сталкер Монолита
В данном (входные аргументы для функции) и подобных случаях это без разницы.
Во многих случаях интерпретатор LUA, разбирая коды, сам управляется с пробелами или их отсутствием.
Если взглянуть на некоторые файлы из АМК v1.41, то он даже специально обезпробелены с целью "защиты" от ковыряльщиков.
Однако это относится к скриптам (*.script), для конфигов (*.ltx) и/или (*.xml) такие вольности порой могут приводить к ошибкам и пр. казусам. Парсеры этих файлов совершенно иные!
Artos
А может для универсальности кое что добавить во внутреннюю функцию Compare ?
скажем id объекта как и положено пускай передается числом, а сид - строкой ( заключаем аргумент в кавычки при вызове функции "6" ) - а внутри функции уже по типам фильтровать - в какой именно метод параметр передать.
вот так например:
local function Compare(id) --/ внутренняя локальная функция сравнения
local obj=0 if type(id)=='string' then --/ если задан sid конкретного сталкера
obj = alife():story_object(tonumber(id))
elseif type(id)== 'number' --/если задан id конкретного сталкера
obj = level.object_by_id(id)
end
if obj and IsStalker(obj) and id ~= idActor then
if obj:position():distance_to(PositionActor) <= Dictanse then
news_manager.send_tip(db.actor, "кто-то близко от ГГ", 0, "default", 8000)
end
end
end
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik
Я же не даю сейчас 'полностью' универсальную :-)
Цель - постепенно дать понятия как делать -> как делать гибко/многофункционально -> как делать универсально.
Конечно можно ввести проверки и ни строка/номер на входе и проверять уже по имени или айди. Можно еще много чего нагородить ...
Хочется чтобы молодые модмейкеры не спрашивали каждый раз сколько будет 3х5 или 4х2, а смогли бы научиться использовать таблицу умножения и применять ее и в более сложных случаях.
Если им дать готовую универсалку, то ... тупо НЕ понимая как она работает, будут каждый раз опять спрашивать банальности, т.к. ничего не может быть полностью универсальным и всегда найдутся варианты, не укладывающиеся в рамки заготовки.
Да и в твоем примере уже для них головоломка, т.к. sid - это все же число. Но оно может фигурировать и как стринг ... впрочем как и тот же айди (id)
уже для них головоломка, т.к. sid - это все же число. Но оно может фигурировать и как стринг ...
ну тут некоторые вроде методом конвертации числа в строку (в тип string ) - tostring(числовое значение) - пользоваться умеют, так что достаточно пояснить что и есть обратный Lua метод - tonumber(строковое значение) - переводящий строковое значение в число (точнее в тип number )- при условии что это значение можно корректно конвертировать - то есть передавать для конвертации строку "десять" разумеется нельзя - а вот "10" можно.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
У меня вопрос (когда-то его задал, но ответа внятного не получил):
Чтобы поставить метку на объект в скелете квеста, обязательно ли он должен иметь SID?
И если можно поставить метку в скелете и без сида, то как?
erlik
Мне кажется, что многим обитателям данного топика пока нужно разобраться и запомнить основы/азбуку, т.к. слова складывать и тем более предложения можно только зная буквы.
Многие путают или не знают что же такое id, story_id, class_id, ... и если им еще не пояснив, что это изначально ЧИСЛА и это совершенно разные понятия, то уж о том, что эти числа могут быть записаны строковыми занчениями или даже словами - стОит говорить несколько позже. А то такой винегрет может получиться, что ...
Хотя именно этот винегрет у многих и есть сейчас, т.к. вместо того, чтобы изучить и понять азбуку - нахватались 'готовых' примеров и не понимая до конца их смысла, пытаются 'сочинять', оперируя только известными словами/предлогами и часто не к месту ...
Сталкер Монолита
Если переведешь свой вопрос с жаргона на общепонятный - может кто и ответит.
Желательно порой и давать пример того, о чем говоришь/спрашиваешь.
Artos
Попробую:
При создании квестов, чтобы поставить метку на к**50016ea8aab1bb10eeba**t_story_id>Escape_novice_lager_volk[/code]
Т.е. создаём метку на Волка. При этом указываем его story_id. А иначе, как игра узнаёт на кого показывать стрелку?!
Так вот, возможно ли поставить эту же метку на того же Волка, только не указывая sid?
Да, это можно сделать скриптом. А в скелете квеста это можно сделать? И как?
И попутный вопрос: если делать метку скриптом, то как "заставить" 'стрелочку-указатель' указывать на объект?
Надеюсь сейчас понятно объяснил? Просто не знаю как ещё написать :-G
есть некая грань, которую не стОит переходить. Тут все же не детский сад и разжевывать какждый раз и все до состояния пюре далеко не каждыйможет/хочет.
Сорри, но что-то в твоем возрасте нужно уже делать/додумывать самому. Или хотя бы попробовать сделать ... даже если и не совем все понял.
Сталкер Монолита
Ты как раз дал иллюстрацию к моему предудущему посту, когда оперируют словами или не понимая их значение или наделяя их собственными значениями.
Это: Это_значение_стори_айди_таска - тэги, которые определяют конкретный идентификатор задания. Никакой это не story_id, хотя в кодах, с целью как то обозвать переменную и не выдумывать экзотику, программеры нередко применяют уже имеющиеся.
В данном случае может быть уместнее было бы в скриптах подобное назначить на task_story_id
И уж никакого это не имеет отношения к Story_Id (006) Волка, если не считать того, что в "task_manager.ltx" иль аналогичном этот task_story_id не привязан parent'ом или target'ом к нему (Волку).
Т.о. привязав конкретный task_story_id к выдавшему его parent'у или целевому target'у можно и указывать на кто дал/где искать.
Т.к. в данном случае это движковая обработка, то соблюдение данного формата привязки - вынужденно.
Artos
Т.е. если я правильно понял, не нужно регистрировать объект в game_story_**50076ea8aab1bb10eeba**ode]esc_wolf[/code]
И если я опять неправильно понял... отправьте меня туда, где можно лицезреть готовые примеры, дабы не мучать Вас и других этими глупыми вопросами. Может быть хоть тогда я разберусь...
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.