Nazgool 250 Опубликовано 25 Февраля 2012 Поделиться Опубликовано 25 Февраля 2012 (изменено) Tris Инициализируй функции перед выполнением проверок. function random_time() function function_start_1() ... end -- и т.д. if random_table_function == 1 then function_start_1() end -- и т.д. end Изменено 25 Февраля 2012 пользователем Gun12 Ссылка на комментарий
Boofer 0 Опубликовано 25 Февраля 2012 Поделиться Опубликовано 25 Февраля 2012 (изменено) Artos, в том то и дело что сделал логику почти точ в точ как у той учебной плоти, а всё равно никак. Уже даже укоротил... Сделал самую простейшую. [logic] active = mob_walker1 [mob_walker1] path_walk = dog_walk_1 path_look = dog_look_1 Изменено 25 Февраля 2012 пользователем Boofer Ссылка на комментарий
Nazgool 250 Опубликовано 25 Февраля 2012 Поделиться Опубликовано 25 Февраля 2012 (изменено) Что за запись? function function_start_1(). Один раз function Сорри. Зарапортовался. P.S. Ну ты и назвал. Назови просто start_1, дабы не вводить людей в заблуждение Изменено 25 Февраля 2012 пользователем Gun12 Ссылка на комментарий
ColR_iT 171 Опубликовано 25 Февраля 2012 Поделиться Опубликовано 25 Февраля 2012 Tris Да и вообще, зачем эти громоздкие конструкции с if ... end? Вот тебе твой же код, только гораздо проще и легче: function object_eat(obj) local sect = obj:section() if db.actor:has_info("wpn_porshein") then db.actor:disable_info_portion("wpn_porshein") iTimer = nil db.actor:restore_weapon() end if sect == "medkit" or sect == "medkit_army" or sect == "medkit_scientic" then db.actor:hide_weapon() random_time() end end function random_time() local random_table_function = math.random(1,5) iTimer = time_global() + (3+2*random_table_function)*1000 db.actor:give_info_portion("wpn_porshein") end function Timer_N_minutes() if iTimer and iTimer < time_global() then iTimer = nil db.actor:disable_info_portion("wpn_porshein") db.actor:restore_weapon() end end Нету кучи проверок, не нужно никаких инициализаций, переменная iTimer принимает нужное тебе значение, в зависимости от того, что тебе выдаст random. Ссылка на комментарий
Artos 99 Опубликовано 26 Февраля 2012 Поделиться Опубликовано 26 Февраля 2012 Все чуть дополню ответ Gun12 по вопросу Tris'a: Многие забывают (или не знают) про такое понятие как "область видимости". Очень советую начинающим скриптерам почитать это в мануале по Lua повнимательнее. И, какой бы оптимальный код ни был, не следует обращаться к функциям/переменным или не объявленным или объявленным ниже по коду. Ошибка Tris'а в том, что вначале он пытается выбрать одну из функций, которые определяются ниже по коду этой же (основной) функции - в результате ошибка по отсутствию выбранной функции. Или эти функции должны быть выше по коду данной функции (random_time) или же быть в корне скрипт-файла. "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
strong 2 Опубликовано 26 Февраля 2012 Поделиться Опубликовано 26 Февраля 2012 Доброе время всем! Потихоньку ковыряю ЗП Подключил несколько лок, расставил переходы. Есть необходимость отследить момент первого по времени захода на локу без привязки к конкретному переходу. Подскажите как сделать или направте на мануал по нужному адресу ЗОНА ДОЛЖНА БЫТЬ НЕПРЕДСКАЗУЕМОЙ !!! НЕТ ТАМ ЛОГИКИ И НЕ НУЖНА ОНА ТАМ !!! Ссылка на комментарий
*Shoker* 322 Опубликовано 26 Февраля 2012 Поделиться Опубликовано 26 Февраля 2012 (изменено) strong Ну это можно сделать либо через логику, прописав какому нибудь объекту следить за появлением ГГ, или например сделать напрямую в скриптах. В bind_stalker есть функция function actor_binder:net_spawn(data), она вызывается каждый раз при загрузке карты\сохранения. В самом её конце перед end напиши например проверку вида: if level.name() == "имя_твоей_локации" then if xr_logic.pstor_retrieve(db.actor, "first_visit", false) == false then <тут делаешь что те надо> xr_logic.pstor_store(db.actor, "first_visit", true) end end Этот вариант удобен, если тебе в скриптах надо что то сделать. Если в логике то там скорее всего с инфопоршнями придётся работать, я точно не знаю есть ли легче метод там. И это, у меня скриптов ЗП под рукой щас нету, если там перед последним в функции end-ом есть что то типа return true или просто return, то пиши перед ним, иначе твой код не вызовется. Artos По поводу этого кода: http://www.amk-team.ru/forum/index.php?sho...st&p=675950 Сразу хочу сказать что сейчас я работаю тока с той частью кода, которая отвечает за удаление рестриктора у онлайн объекта (часть с нет пакетами я отключил, т.к у меня она сейчас вызывает вылеты + я использую твою старую версию m_net_utils, а не xStream-овскую, мож из за этого) Щас ковыряю его и назрела пара вопросов: 1) При удалении рестрикторов у онлайн объекта у тебя есть проверка вида: local oRestr = sim:object(sRest) --/#!# only for SHOC|CS if oRestr and Is_ZoneAnom(oRestr) then table.insert(tToRemove,sRest) end Но тут такой недочёт (ли?), может так случится что в момент вызова чистки рестрикторов, один из рестрикторов (как в моём случае) уже удалён из игры, и поэтому oRestr-а не существует и он (по крайнем мере в части что за онлайн отвечает) не удаляется у объекта. Исправил (ли?) это тем, что при отсутствии oRestr добавляю рестриктор в список удаления, даже если это не аномалия. 2) Зачем после удаления рестриктора у клиентского объекта у тебя всё равно вызывается код удаления рестриктора у серверного, так и должно быть? 3) Зачем ты в части, что отвечает за удаление рестриктора у серверного объекта, перезаписываешь нет-пакет если можно (ли?) просто удалить рестриктор через sim:remove_in_restriction(soNPC, idRestr)? В чём смысл записывать оставшиеся рестрикторы, если по идее они и так останутся у НПС? 4) Насколько критичен этот код: tRestrRemoved[idRestr] = true if tAnomsRemove[idRestr] then tAnomsRemove[idRestr] = false --/#?# end В твоей функции он нигде не вызывается, я посчитал что мне он не нужен. 5) Как я упомянул в начале - сейчас я пока удаляю рестрикторы только первой частью кода (где работа с онлайн объектом), и щас после последнего теста рестриктор у клиентского объекта удалился (по крайнем мере проверял на 1 объекте, у него он пропал из списка), хотя вылет пока остался (возможно я не у всех удалил), так вот, в данном случае можно обойтись без чистки рестриктора у серверного объекта или это тоже необходимо? 6) Твою функцию удаления рестрикторов аномалий вызываю из меню\на колбеке спавна аномалии. Я так понял место вызова значения не имеет для моего случая? А то ты что то про скриптовые схемы упоминал. Пример использования в твоём моде (SoC версия) посмотреть не могу, т.к не получается его распаковать ЗЫ: А вообще насколько сильный на практике прирост идёт от паковки мода в db-архив. Изменено 26 Февраля 2012 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
advisor890 1 Опубликовано 26 Февраля 2012 Поделиться Опубликовано 26 Февраля 2012 (изменено) Как сделать так чтобы после определенного диалога нпс пошел в определенную точку? Тебе сюда: >>Click Me<< ColR_iT Изменено 26 Февраля 2012 пользователем ColR_iT Ссылка на комментарий
ColR_iT 171 Опубликовано 26 Февраля 2012 Поделиться Опубликовано 26 Февраля 2012 (изменено) Ребята, поймал ступор... На Волке проверяю простенький диалог актора из последовательности фраз, без ветвления и каких либо условий на появление диалога/фразы. Собственно вот такой: <dialog id="test_dialog"> <phrase_list> <phrase id="0"> <text>Hello, Wolf!</text> <next>1</next> </phrase> <phrase id="1"> <text>Hello, Shooter! What do you want?</text> <next>2</next> </phrase> <phrase id="2"> <text>I conduct an experiment.</text> <next>3</next> </phrase> <phrase id="3"> <text>Ok! What we do?</text> <next>4</next> </phrase> <phrase id="4"> <text>Now I call the function, then you. I'm, now you!</text> <action>escape_dialog.my_phrase</action> <next>5</next> </phrase> <phrase id="5"> <text>Ok, calling.</text> <action>escape_dialog.my_phrase</action> <next>6</next> </phrase> <phrase id="6"> <text>Nice, thank you.</text> <next>7</next> </phrase> <phrase id="7"> <text>Not at all! Come on, if that.</text> <action>dialogs.break_dialog</action> </phrase> </phrase_list> </dialog> В двух фразах ставлю простенькие проверки: function my_phrase(first_speaker, second_speaker) log1("my_phrase function") local obj_npc if first_speaker:id() == -1 then obj_npc = second_speaker log1("Actor is first_speaker.") else obj_npc = first_speaker log1("Actor is second_speaker.") end end function wolf_phrase(first_speaker, second_speaker) log1("wolf_phrase function") local obj_npc if first_speaker:id() == -1 then obj_npc = second_speaker log1("Actor is first_speaker.") else obj_npc = first_speaker log1("Actor is second_speaker.") end end Т.е. как видно функции идентичны, разное лишь название. Обратите внимание, что первую функцию я вызываю из реплики ГГ, вторую из реплики Волка. Вопрос: почему у меня в консоле вот такое: my_phrase function Actor is second_speaker. wolf_phrase function Actor is second_speaker. Почему в обоих случаях, актор является second_speaker? P.S. log1 использую из X-Ray extension, в качестве нормального вывода в лог. ------------- To strong... Загляни вот в этот пост: пост #100, думаю тебя заинтересует. Изменено 26 Февраля 2012 пользователем ColR_iT Ссылка на комментарий
_Призрак_ 11 Опубликовано 26 Февраля 2012 Поделиться Опубликовано 26 Февраля 2012 ColR_iT id в двигателе обозначается чилом типа unsigned short int (2 байта), которое ну никак не может быть равно -1. id у актора = 0 Freedom Ссылка на комментарий
Artos 99 Опубликовано 26 Февраля 2012 Поделиться Опубликовано 26 Февраля 2012 (изменено) ColR_iT, уже _Призрак_ подсказал ошибку в условиях проверок, но добавлю: Зачем проверять на некие сторонние идентификаторы? Диалог возможен только между актором и кем-то - значит условие if first_speaker:id() == db.actor:id() всегда возможно и вернет однозначный результат, от которого и плясать далее ... Добавлено через 21 мин.: *Shoker*, начну с конца и кратко: Упаковка файлов мода выполнена стандартно движковым конвертером (by bardak) и только "нестандартное" длинное расширение мешает распаковке различными батниками и гуишниками. Научи их распознавать расширение и исчезнут проблемы с распаковками. Собственно на какую-либо скорость в игре упаковка в пак-файлы влияет по-разному. Может и ускорить, а может и замедлить, все зависит от конфигурации твоего железа и OC, но это тема иного топика ... Ну а собственно цель упаковки в ином, это удобство установки и моддинга установленного мода. По пунктам (хотя ты так и не оазобрался в сути): Приведенный код НЕ удаляет рестрикторы (в контексте скрипта - аномалии), а чистит упоминания о рестрикторах в параметрах неписей, занося их в таблицу для последующего возможного удаления. 1. Упомянутый кусок кода требует адаптации под ЗП, т.к. в таком виде работает только для ТЧ и ЧН. Т.к. речь идет не про удаление собственно рестриктора а о его записи в параметрах непися - то и чистится в любом случае (существует иль нет). 2. Код был написан в три этапа. Вначале только для онлайн объектов, чего оказалось мало. Потом был написан для всех (через нет-пакеты), но ... изредка появлявшиеся "рельсы" из-за некорректностей старых писалок нет-пакетов, первичная чистка в онлайне осталась (что снизило кол-во ошибок с "рельсами"). вероятно сейчас откажусь от онлайн чисток, оставив тлько через нет-пакеты. Но это уже вопрос излишеств ... 3. Повторю, этот код чистит записи а н удаляет рестрикторы. Удаление рестрикторов происходит уже ПОСЛЕ чистки записей, что и является залогом отсутствия ошибок при удалении аномалий. 4. Данный фрагмент кода (таблица) используется при удалении рестрикторов/аномалий в дальнейшем. 5. Читаем п.2. Чистить нужно все записи рестикторов у всех объектов - если рестриктор/аномалия удаляются. Для моментов записи сэйвов - это залог их "не битья". 6. Вызов чистки записи нужен тогда, когда ты собрался удалять рестриктор/аномалию и существует вероятность, что этот ретриктор может быть прописан какой-либо неписи. Добавлено через 18 мин.: strong, врядл существуют "уроки" по подобным вопросам. Собственно а в чем загвоздка? Например я, при каждом старте игры считываю из сэйва запомненную табличку о "уже известных для ГГ локациях" и, если там нет текущей (или нет таблицы при начале НИ) - значит ГГ попал на локацию впервые. Запомиаем локацию в табличку для последдующего и сохраняем ее при записи в сэйв. Все это стандартные движковые и Lua операции. Изменено 26 Февраля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
demover123 0 Опубликовано 27 Февраля 2012 Поделиться Опубликовано 27 Февраля 2012 (изменено) как сделать проигрования звука при использовании предмета? Эта статья не работает. С чего это вдруг? У других работает, а у тебя нет!? Посмотри ещё вот это: Звук при использовании предмета ColR_iT Изменено 27 Февраля 2012 пользователем ColR_iT Ссылка на комментарий
*Shoker* 322 Опубликовано 27 Февраля 2012 Поделиться Опубликовано 27 Февраля 2012 (изменено) Artos Спасибо Распаковку делал как раз и обычным конвертором. Расширение менял просто на .db Буду ещё пробовать. О том что код не удаляет рестрикторы физически, это я знаю, просто неправильно выразился - под рестрикторами подразумеваю сами записи о них (рестрикторах) у НПС, а не физ. объект (аномалию и прочее) 1) С ЗП не работаю с апреля, давно как вернулся на ЧН, в ЗП с этой ошибкой посчастливилось не столкнутся. 2) А если ты очистишь рестриктор у серверного объекта через нет-пакет, он ведь может остаться у клиентского (если не перегнать его в оффлайн\онлайн, что тоже затратно) 3) Вопрос остался. В качестве рестрикторов подразумеваю сами записи о рестрикторах у НПС. По идее: sim:remove_in_restriction(soNPC, idRestr) удалит из списка НПС нужный рестриктор, оставив другие. Так зачем ещё перезаписывать нет-пакет и вносить туда "оставшиеся" рестрикторы? 4) Но в контексте чистки просто записей о них у НПС (что и является причиной вылета) это ведь не критично и я могу код этот удалить? 5) - 6) - > Запомиаем локацию в табличку для последдующего и сохраняем ее при записи в сэйв. Все это стандартные движковые и Lua операции. Ну ну, сохраняем таблицу в сейв Без доп. кодов (Как у АМК например) этого не сделать. А я сомневаюсь что он хотя бы с пстором на текущий момент умеет работать, куда уж таблицы писать. Изменено 27 Февраля 2012 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Artos 99 Опубликовано 27 Февраля 2012 Поделиться Опубликовано 27 Февраля 2012 *Shoker* Ну не думал, что у модмейкера со стажем возникнут заморочки с распаковкой обычного *.db файла, тренируйся ... ;-) Программирование не терпит двузначностей, поэтому старайся излагать мысли/вопросы однозначно, а не тек, как "удобно". Даже в этом посту продолжаешь талдычить про удаление именно рестриктора, а не о его записи ... Ведь и смысл совершенно иной и не вводи ни себя ни других в заблуждение. 1. Чтобы заработал этот кусок кода в ЗП нужно заменить получение объекта по имени на поиск в списке онлайновых рестрикторов/аномалий по имени, но его нужно организовать (если еще не сделано) или же сканировать все объекты в игре (что конечно же накладно). 2. Ты до сих пор не понял, для чего же удаляется запись о рестрикторе. В отличии от логики работы схем, где до(у)бавление изменяет поведение объекта, в данном случае требуется отсутствие ошибки при появлении объекта в онлайне и попытке сервера инициализировать для него все записи по рестрикторам. Именно не найденный в игре НО прописанный объекту рестриктор и вызывает фатальную ошибку. Ну а для объектов в онлайне не требуется собственно контроль валидности записей "руками", это делает движек автоматически. Если останется запись удаленного - объект будет вести себя как и при наличии. Важно это для тебя - тогда и по факту делай такие чистки, но ставить это на общие коллбэки - ИМХО затратно и неоптимально. 3. Удаление alife():remove_in_restriction(soNPC, idRestr) удалит только одну запись конкретного рестриктора. В данном случае убиваются оба зайца, т.е. и удаляется (гарантированно!) конкретная запись и за тот же цикла чистятся все остальные невалидные, если они имеются. Как говорил ранее, вероятно потестировав, оставлю только общую чистку нет-пакетом, ну а ты - выбирай сам. ;-) 4. Конечно можешь удалить ... Хотя уже давал ремарку: А нафига чистить то, что не будет удалено из игры? Чистка записей предваряет собственно удаление самих рестрикторов из игры и заведомо иметь список рестрикторов, которые можно удалять - и есть одна из основных целей данного кода. Например, если в данном списке нет рестриктора, который я собрался удалять - то я откладываю такое удаление на следующий цикл. (в общем пока ты своих шишек не набьешь этот вопрос для тебя будет открыт). По запоминанию "таблички": А где то написано, что в сэйв таблица 'как есть' пишется? ;-) Если нет нужных кодов - ничего не мешает запоминать в отдельные переменные "key" = "value". Если модмейкер в таких простых вопросах не может разобраться - то и не нужно сувать нос в сложности ... на каждом шагу нет мамок-нянек и расписанных уроков-туторов. "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Malandrinus 615 Опубликовано 27 Февраля 2012 Поделиться Опубликовано 27 Февраля 2012 Удаляются рестрикторы, не удаляются... Переведите название функции remove_in_restriction. Речь не о рестрикторах (restrictor), а об ограничениях (restriction). Удаляются ограничения (задаваемые естественно именем рестриктора). Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Nazgool 250 Опубликовано 27 Февраля 2012 Поделиться Опубликовано 27 Февраля 2012 (изменено) Мля, достали уже. demover123, да и многие другие. Когда-то написал этот скрипт - ДА!. Но только не для тех кто в бронепоезде. Неужели трудно понять что [[Путь_до_звука_относительно_папки_sounds]], да и другое, это... Э-э-х. Чего бисер метать? Изменено 27 Февраля 2012 пользователем Gun12 Ссылка на комментарий
*Shoker* 322 Опубликовано 27 Февраля 2012 Поделиться Опубликовано 27 Февраля 2012 (изменено) malandrinus Не обращал внимание - спасибо. Так будет легче объяснять Artos > Ну не думал, что у модмейкера со стажем возникнут заморочки с распаковкой обычного *.db файла, тренируйся ... ;-) Наверно потому что распаковкой раз в пол года занимаюсь, по праздникам На харде до сих пор распакованный ТЧ, который я распаковывал ещё в начале 2008 года. _____________________________________________ 1) Если дело только в этом, то это не проблема. 2) Ну вот так понятней. В таком случае чистка для онлайн объекта и в прям не особо нужна. 3) И всё таки я шутки дня не понял. Судя по коду: for idx,idRestr in ipairs(data.dynamic_in_restrictions) do local soRestr = idRestr and sim:object(idRestr) if soRestr then if Is_ZoneAnom(soRestr) then --/ проверка: аномалия? tRestrRemoved[idRestr] = true if tAnomsRemove[idRestr] then tAnomsRemove[idRestr] = false --/#?# end sim:remove_in_restriction(soNPC, idRestr) else --/ не удаляемый рестриктор table.insert(tRestrLeft, idRestr) end end в этой части у тебя удаляются все "ограничения" от аномалий, все остальные "валидные" ограничения просто заносятся в табличку и занаво записываются объекту через нет-пакет, хотя они у него уже записаны. Где здесь два зайца я не заметил, единственный плюс что более надёжно, хотя вероятность сбоя alife():remove_in_restriction() мне кажется (надеюсь) довольно низкой. А вот лишний раз трогать такую хрупкую вещь как пакеты тоже не хочется. 4) А где я говорил что не удаляю потом этот рестриктор из игры? Удаление ограничений вызывается сразу после удаления аномалий\рестрикторов и до спавна новых. Я ведь не на твоём моде работаю, у меня по своему всё сделано. А значит этот кусок кода для меня является бесполезным. _____________________________ И вообще, раз удаление "ограничения" у клиентского объекта по сути не так уж и нужно (для лечения вылета) Что мешает весь код вообще упростить и пересадить на одну тока alife():remove_in_restriction() как например тут: --/#+# чистка рестрикторов function Clear_Restriction(idNPC,soNPC) local sim = alife() if not soNPC then soNPC = idNPC and sim:object(idNPC) end if soNPC and IsNPC(soNPC) then --/ для всех (т.е. и оффлайновых) объектов local pk = get_netpk(soNPC,1) --/ запрос нет-пакета ('state') if pk:isOk() then --/ получен доступ к нет-пакету объекта? local data = pk:get() --/ читаем данные из нет-пакета -------- if next(data.dynamic_in_restrictions) then --/ таблица рестрикторов не пуста? local idRestr = nil for idx,idRestr in ipairs(data.dynamic_in_restrictions) do local soRestr = idRestr and sim:object(idRestr) if soRestr then if Is_ZoneAnom(soRestr) then --/ проверка: аномалия? sim:remove_in_restriction(soNPC, idRestr) end end end end -------- end end end Интересуют конкретные причины, подкреплённые фактами и тестами. ЗЫ: А если есть способ получить список "ограничений" без нет-пакета от серверного объекта, тогда нет-пакеты вообще можно выкинуть. Используй, пожалуйста, теги для отделения цитаты от своего ответа. ColR_iT Изменено 27 Февраля 2012 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Artos 99 Опубликовано 28 Февраля 2012 Поделиться Опубликовано 28 Февраля 2012 (изменено) *Shoker*, пора заканчивать мусолить одно и то же, тем более разбирать детально "сторонний" код с целью портировать под "свои" частности ... Тобою была поднята тема по ошибкам при удалении аномалий(рестрикторов). Дан был ответ, что нужно чистить записи о них ... Были даны всевозможные варианты, которые вполне стабильно работают в конкретном моде и уже более года. Последние нововведения в писалки нет-пакетов сняли последнюю заморочку связанную "рельсами". Бери, если считаешь нужным то, что требуется для твоей задачи. А уж оптимизация имеющегося или твоего - это уже дело и субъективное и конкретное, а не погадалки по вырванному контексту или еще не написанному тобою коду. По п.3: Для меня гораздо проще работать именно с такой "хрупкой вещью" как нет-пакеты, т.к. при правильной работе с ними все делается гораздо проще и предсказуемее. sim:remove_in_restriction(soNPC, idRestr) - как уже ранее говорил, остался пока как рудимент, который дублирует то, что делаю нет-пакетами. Учитывая, что мод изменяется мною "по ходу игры", то даже мои ошибки/эксперименты при изменениях в модуле нет-пакетов в этой части не приведут в данном коде к последствиям ... Ну и по п.4: Ты все же не понял, что в отличии от твоего стремления в-первую очередь удалить собственно рестриктор/аномалию, а потом почистить о ней записи, у меня иной алгоритм. Строка tAnomsRemove[idRestr] = false --/#?# - как раз исключает аномалию/рестриктор из списка удаляемых, если она присутствует в записях объекта по ограничениям ... Т.о. мною аномалия НЕ удаляется сразу, а только тогда, когда записей о ней уже нет у объектов. Попробуй понять разницу ... *Shoker*: Интересуют конкретные причины, подкреплённые фактами и тестами. Вам как отчетом или на слово поверите? Помнится с проблемой удаления аномалий возились одновременно с kamikazze (перед OGSE 0692, там тоже были аналогичные проблемы) ... C тех пор проблема была решена и "аномальные" вылеты в модах исчезли. Тебе почти пара лет тестирования игроками в мод о чем-то говорит, или еще какие-то факты нужны? Ну а причина - потребность удалять аномалии/рестрикторы тогда, когда потребно и без ошибок. :-) Изменено 28 Февраля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
student91122 1 Опубликовано 28 Февраля 2012 Поделиться Опубликовано 28 Февраля 2012 (изменено) Подскажите пожайлуста что в этих скриптах не правельно.На ЗП 1.6.00 работает,а на 1.6.02 не работает. function wpn_proverka() if db.actor:has_info("inventory_wpn_proverka") then db.actor:hide_weapon() else db.actor:restore_weapon() end end -- actor_menu_mode ----- -- int mode: -- 0 = Undefined = закрыто -- 1 = Inventory -- 2 = Trade -- 3 = Upgrade -- 4 = DeadBodySearch -- 10 = Talk dialog show -- 11 = Talk dialog hide local last_mode = 0 xr_meet_dialog_closed = false xr_meet_trade_closed = false xr_meet_upgrade_closed = false dead_body_searching = false function actor_menu_mode(mode) if(mode==0) then if(last_mode==1) then inventory_wnd_closed() elseif(last_mode==2) then trade_wnd_closed() elseif(last_mode==3) then upgrade_wnd_closed() elseif(last_mode==4) then dead_body_search_wnd_closed() end last_mode = 0 elseif(mode==1) then last_mode = 1 inventory_wnd_opened() elseif(mode==2) then last_mode = 2 trade_wnd_opened() elseif(mode==3) then last_mode = 3 upgrade_wnd_opened() elseif(mode==4) then last_mode = 4 dead_body_search_wnd_opened() elseif(mode==10) then dialog_wnd_showed() elseif(mode==11) then dialog_wnd_closed() end end function inventory_wnd_opened() give_info("inventory_wpn_proverka") printf("---:>Inventory opened") end function inventory_wnd_closed() disable_info("inventory_wpn_proverka") printf("---:>Inventory closed") end function trade_wnd_opened() give_info("inventory_wpn_proverka") xr_meet_dialog_closed = false printf("---:>Trade opened") end function trade_wnd_closed() disable_info("inventory_wpn_proverka") printf("---:>Trade closed") xr_meet_trade_closed = true end function upgrade_wnd_opened() give_info("inventory_wpn_proverka") xr_meet_dialog_closed = false printf("---:>Upgrade opened") end function upgrade_wnd_closed() disable_info("inventory_wpn_proverka") printf("---:>Upgrade closed") xr_meet_upgrade_closed = true end function dead_body_search_wnd_opened() give_info("inventory_wpn_proverka") printf("---:>DeadBodySearch opened") dead_body_searching = true end function dead_body_search_wnd_closed() disable_info("inventory_wpn_proverka") printf("---:>DeadBodySearch closed") dead_body_searching = false end function dialog_wnd_showed() printf("---:>Talk Dialog show") end function dialog_wnd_closed() printf("---:>Talk Dialog hide") xr_meet_dialog_closed = true end Изменено 28 Февраля 2012 пользователем student91122 Ссылка на комментарий
Daniar299 0 Опубликовано 28 Февраля 2012 Поделиться Опубликовано 28 Февраля 2012 Здрасте, у меня такой вопрос, как прописать переход в один конец скрипом? Я освоил как сделать простой переход по известным точкам туда и обратно, но мне нужно в один конец! Плиз подскажите функцию! Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти