Это популярное сообщение. Dennis_Chikin 3 658 Опубликовано 16 Мая 2014 Это популярное сообщение. Поделиться Опубликовано 16 Мая 2014 Ковыряемся в файлах ТЧ Прежде чем писать в тему - внимательно читаем первый пост, и пользуемся поиском. Возможно, ответ на Ваш вопрос уже есть. Касательно телепатии: если Вы передаете Ваши файлы телепатическим путем - ответы будут передаваться тоже телепатически. Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком. 4 8 6 12 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
dPlayer 501 Опубликовано 20 Июля 2016 Поделиться Опубликовано 20 Июля 2016 В примерах встречаются 2 вида записи функции спавна, во втором случае перед алайф:креэйт задаются координаты, типа local x, y, z = 0, 0, 0local LVid, GVid = 0, 0 Зачем? Ссылка на комментарий
Overfirst 631 Опубликовано 20 Июля 2016 Поделиться Опубликовано 20 Июля 2016 @dPlayer, для удобства, чтобы каждый раз не копипастить координаты, если, например, спавнишь в инвентарь ГГ. И запись выходит меньше, и размер файла тоже. local pos = db.actor:position() local gvid = db.actor:game_vertex_id() local lvid = db.actor:level_vertex_id() local id = db.actor:id() local sim = alife() sim:create("section_0",pos,gvid,lvid,id) ... sim:create("section_155",pos,gvid,lvid,id) Ранее был известен под ником BoBaH_671. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 20 Июля 2016 Поделиться Опубликовано 20 Июля 2016 (изменено) 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. И вообще, разработчик мода должен все делать с выключенным монитором, стоя в гамаке, одетый в дубленку и ласты. Ибо нефиг. Изменено 20 Июля 2016 пользователем Dennis_Chikin 2 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Kondr48 314 Опубликовано 20 Июля 2016 Поделиться Опубликовано 20 Июля 2016 (изменено) BoBaH_671, а ещё, думаю лучше db.actor вызвать один раз. local actor = db.actor local sim = alife() local pos = actor:position() local gvid = actor:game_vertex_id() local lvid = actor:level_vertex_id() local id = actor:id() sim:create("section_0",pos,gvid,lvid,id) ... sim:create("section_155",pos,gvid,lvid,id) Изменено 20 Июля 2016 пользователем Kondr48 Ссылка на комментарий
dsh 3 824 Опубликовано 20 Июля 2016 Поделиться Опубликовано 20 Июля 2016 (изменено) @Kondr48, есть тут смайлик фейспалма? Зачем actor = db.actor? У тебя что, этот код выполняется миллиард раз на апдейте актора? Что тебе эти микро-нано-секунды дадут в этом коде? Ну сможешь ты этот кусок выполнить миллиард раз за секунду с этим изменением. А без него только 999999999 раз в секунду. Есть какая-нибудь разница, для этого кода? Уверен, что оно и одного-то раза за секунду не предназначено выполняться. Уффф... Насмотрелся я такого бреда в соляночных скриптах. Выговорился вот. И что бы два раза не вставать. Кто такой braad? За бредятину braad_test нужно руки переставить туда, откуда они растут, судя по скриптам. Изменено 20 Июля 2016 пользователем dsh dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 20 Июля 2016 Поделиться Опубликовано 20 Июля 2016 actor = db.actor Так затем же, зачем и все остальное: чтоб побольше мегабайтов получилось. Как в бредтесте. Впрочем, набить 100500 раз db.actor - тоже полезно. Глядишь, на какой-нибудь 84261й раз получится не db.actor, а bd.actor - то-то всякие "правщики" нелицензированные утомятся это место искать... А обычным пользователем можно сказать, что это у них компьютер нелицензированный. А вот зато те, у кого он в _G сидит, пусть помучаются, и свои дебильные скриптики прежде чем подключать, пусть зарегистрируют в 30 местах, а всех своих actorов найдут, и заменят обратно на db.actor - ибо нефиг выеживаться. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Kondr48 314 Опубликовано 20 Июля 2016 Поделиться Опубликовано 20 Июля 2016 (изменено) dsh, слишком много на форуме споров было, лучше так или нет. Привычка, в конце концов ничего не усложняет, хуже никому не становится. Изменено 20 Июля 2016 пользователем Kondr48 Ссылка на комментарий
dPlayer 501 Опубликовано 21 Июля 2016 Поделиться Опубликовано 21 Июля 2016 (изменено) Функция выдаёт инфопоршень, после этого надо выполнить другую функцию, из этого же скрипта, как правильно записать-то?...if db.actor:object("ivan_case_esc") thendb.actor:give_info_portion("ivan_find_case_esc")esc_function <-эту ф-ию над овыполнитьreturn true...рекомендую таки начать с чтения вот этого:http://www.amk-team.ru/forum/topic/11584-iazyk-lua-obschie-voprosy-programmirovaniia/dc Изменено 21 Июля 2016 пользователем Dennis_Chikin Ссылка на комментарий
Kondr48 314 Опубликовано 21 Июля 2016 Поделиться Опубликовано 21 Июля 2016 dPlayer, если просто выполнить, не передавая в неё никаких аргументов, тогда вот так: ... if db.actor:object("ivan_case_esc") then db.actor:give_info_portion("ivan_find_case_esc") esc_function() <-эту ф-ию над овыполнить return true ... 1 1 Ссылка на комментарий
Карлан 1 049 Опубликовано 21 Июля 2016 Поделиться Опубликовано 21 Июля 2016 Если не ошибаюсь, то тут недавно обсуждали CUIWpnParams. На днях я его разобрал, местами несколько странно все работает, и я так и не решился перенести скриптовый код в движок. Сразу скажу, что скрипт нужно исправлять, так как если опираться на функции движка, то он работает не совсем правильно. Еще добавлю, что у меня в ui_wpn_params падает гейм-объект ствола, так что для каждого объекта можно настроить свои параметры прогресс-баров. Например один баг в том, что hit_power получается только для новичка, то есть нужно переделывать, читать не как число, а как строку, далее распарсивать в таблицу, строить ассоциативный массив, где будет уровень игры, и вычитывать оттуда реальный параметр. Также криво получается ammo_class, на мой взгляд правильнее передавать туда текущий тип патронов в стволе (если таковые есть, если нет - базовые). Сейчас же там читаются только базовые патроны и исходя из их дисперсии идет расчет. Параметры оружия показываются не только для аддонов, но еще и для ножа, в связи с чем я в движке эту функцию исправил: bool CUIWpnParams::Check(const shared_str& wpn_section){ if (pSettings->line_exist(wpn_section, "fire_dispersion_base")) { // Karlan: запретим показывать инфо для аддонов вроде подствольников и прицелов xr_string ws = wpn_section.c_str(); size_t addon = ws.find("wpn_addon"); if (addon != std::string::npos) return false; if (0==xr_strcmp(wpn_section, "wpn_knife")) return false; if (0==xr_strcmp(wpn_section, "wpn_binoc")) return false; if (0==xr_strcmp(wpn_section, "mp_wpn_binoc")) return false; return true; } else return false; } В общем я пока так и не понял, стоит ли уводить это в движок. Как итог, функциональную часть в движке не затронул. Если кому интересно, то я проверял поведение на подобных функциях: float CUIWpnParams::GetRPM(CWeapon *weapon) { float rpm = weapon->fTimeToFire; rpm=rpm*60; float mag_size = (float)weapon->iMagazineSize; if (rpm>200) rpm = powf((rpm - 200)/720,2)*100 + 15; else if (mag_size<5) rpm = 30; else rpm = rpm/14; clamp(rpm, 1.f, 100.f); return rpm; } Ссылка на комментарий
Карлан 1 049 Опубликовано 22 Июля 2016 Поделиться Опубликовано 22 Июля 2016 Дополняю свой пост. Сейчас закончил работы над этим окном. В движке у меня присутствуют два объекта (смотрите видео), поэтому просто так по одному гейм-объекту сделать прямой дамп у меня не вышло, пришлось писать скрипт с учетом второго объекта (его я тоже помещаю на стек). Исправил получение hit_power. Добавил функцию получения текущего типа патронов в стволе и исправил получение дисперсии для обоих объектов. Повторю, в движке переписал только оформление, можно конечно и функциональную часть переписать, у меня вообще есть мысль уже давно написать для всего этого барахла один класс, а то дюже не удобно по куче файлов ходить. В скрипте переписал многое, и одну функцию все-таки засунул в движок, посмотрю на поведение, если будет неплохо, то возможно перенесу и остальное. В общем все достаточно легко оказалось. Результат в целом конечно не отличается, но зато сейчас действительно правильно работает: 1 Ссылка на комментарий
dPlayer 501 Опубликовано 22 Июля 2016 Поделиться Опубликовано 22 Июля 2016 А что, <start_dialog>...</start_dialog> может быть только один? Итого псу под хвост развернутый диалог с несколькими ветками. Ссылка на комментарий
Overfirst 631 Опубликовано 22 Июля 2016 Поделиться Опубликовано 22 Июля 2016 (изменено) start_dialog может быть только один? С чего ты взял? Просто его нужно грамотно вставить в профиль непися. Вот, допустим, твой диалог идет после <actor_dialog>123_dlg</actor_dialog> и этот 123_dlg цикличен - после последней фразы происходит dialogs.break_dialog(). И так до бесконечности. Так что ставь свой start_dialog выше actor_dialog'a. Изменено 22 Июля 2016 пользователем BoBaH_671 Ранее был известен под ником BoBaH_671. Ссылка на комментарий
dPlayer 501 Опубликовано 22 Июля 2016 Поделиться Опубликовано 22 Июля 2016 @BoBaH_671, у него только 2 диалога - и первый старт_диалог уже есть. А если добавить второй старт_диалог, он не появляется по <has_info>. Ссылка на комментарий
HellRatz 2 892 Опубликовано 23 Июля 2016 Поделиться Опубликовано 23 Июля 2016 ... может быть только один? Да, только один. Об этом подробнее написано на stalkerin где-то, на скорую руку не смог найти. Это обычно какое-то приветствие от НПС, а ГГ всегда начинает диалог первым (!), по этому - 1 старт диалог, остальное только актор диалог. Итого псу под хвост развернутый диалог с несколькими ветками. А при чем тут start_dialog? В actor_dialog это не реализуемо? GTA 3 MAP X-Ray | NFS U:2 MAP X-Ray | RTCW MAP X-Ray | L2D | Раритетные моды на моем облаке — на память о былом. Ссылка на комментарий
dPlayer 501 Опубликовано 23 Июля 2016 Поделиться Опубликовано 23 Июля 2016 actor_dialog это не реализуемо? Это ж надо переделывать всё заново)) Ссылка на комментарий
Overfirst 631 Опубликовано 23 Июля 2016 Поделиться Опубликовано 23 Июля 2016 @HellRatz, это почему же? Не знаю, что тут в ТЧ, но сомневаюсь, что есть разница в диалогах с ЗП. У меня у непися 3 старт диалога и всё прекрасно работает. Проговорил один, потом второй и т. д.. Да, вызываю из логики в секции meet с помощью meet_dialog по условию, и все прекрасно работает. Ранее был известен под ником BoBaH_671. Ссылка на комментарий
dPlayer 501 Опубликовано 23 Июля 2016 Поделиться Опубликовано 23 Июля 2016 (изменено) @BoBaH_671, можешь показать как? Изменено 23 Июля 2016 пользователем dPlayer Ссылка на комментарий
Overfirst 631 Опубликовано 23 Июля 2016 Поделиться Опубликовано 23 Июля 2016 Просто менять схемы meet: [walker@8] combat_ignore_cond = true invulnerable = true path_walk = esc_provodnik_walk_2 path_look = esc_provodnik_look_2 on_info = {=npc_in_zone(esc_stop_start_scene) -first_cutscene_complete} %+first_cutscene_complete% meet = meet@start ;-- первая схема meet on_info2 = {+esc_provodnik_dialog_start_done} walker@camp [walker@camp] combat_ignore_cond = true invulnerable = true path_walk = esc_provodnik_camp_walk path_look = esc_provodnik_camp_look meet = meet@camp ;-- вторая схема meet on_info = {+esc_provodnik_camp_dialog_first_done} walker@camp2 ;-- вот эти 2 схемы [meet@start] use = {=actor_enemy} false, {=dist_to_actor_le(15) -esc_provodnik_dialog_start_done} self, true use_wpn = false meet_dialog = {-esc_provodnik_dialog_start_done} esc_provodnik_dialog_start meet_on_talking = true trade_enable = false allow_break = false [meet@camp] use = {=actor_enemy} false, {=dist_to_actor_le(15) -esc_provodnik_camp_dialog_first_done +esc_stop_first_cutscene} self, true use_wpn = false meet_dialog = {-esc_provodnik_camp_dialog_first_done} esc_provodnik_camp_dialog_first meet_on_talking = true trade_enable = false allow_break = false Я даже не знаю, может, можно было сделать все диалоги по условию в одной секции meet, но меня и такой вариант устраивает. ЗЫ: код ЗП-шный, trade_enable и allow_break не работают в ТЧ вроде, но нас интересует meet_dialog - пожалуйста. 1 Ранее был известен под ником BoBaH_671. Ссылка на комментарий
dPlayer 501 Опубликовано 23 Июля 2016 Поделиться Опубликовано 23 Июля 2016 можно было сделать все диалоги по условию в одной секции meet И походу можно. См. ситуация 3 в самом конце http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B8._%D0%A7%D0%B0%D1%81%D1%82%D1%8C_1 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти