![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#51
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
У локальных переменных есть числовые значения. Я боюсь ты не вдавался в тонкости этого вопроса (IMG:style_emoticons/kolobok_light/smile.gif) Или вдавался?
Приведи пример скрипта, мы поможем с оптимизацией. |
![]()
Сообщение
#52
|
|
Level 6 ![]() ![]() Класс: Волшебник Характер: Chaotic Good Раса: Человек ![]() |
Aiwan, denis0k, спасибо. Кажется, я правильно вас понял. Правда, не совсем усвоил насчет знака минус. В ПЛ я скоммуниздил очень нужный мне скрип, который регулирует отношения хеньша к игроку. И решил проверить, может ли он переходить за ноль. Оказалось, еще как может. Заставил ПС постоянно хамить хеньше, довел отношения до -100, после чего портнул хеньша в клозет (то есть на закрытую арену), а ПС закатал в тюрягу "за попытку изнасилования собственной помощницы" (IMG:style_emoticons/kolobok_light/biggrin.gif) Это все на "Полигоне", я говорил, что есть у меня специальный полезный мод для издевательств над ПС.
denis0k, ты что-то подобное имел ввиду, когда говорил о знаке минус, или совсем другое? Насчет цифровых значений тоже вроде вникал. Правда, довольно поверхностно и скорее интуитивно. Aiwan, вот, к примеру, твой скрипт из Андры: Neverwinter Script //::////////////////////////////////////////////// //:: Created By: WRG! Aiwan aiwan@e-mail.ru //::////////////////////////////////////////////// //:: ЗАКРЫВАЕТ СТРОКУ НПС ПОСЛЕ РАЗГОВОРА //::////////////////////////////////////////////// int StartingConditional() { if (!GetLocalInt(OBJECT_SELF,"SPEAK_1")) { SetLocalInt(OBJECT_SELF,"SPEAK_1",TRUE); return TRUE; } return FALSE; } Очень полезный скрипт, иногда просто незаменим. Одна беда: он, зараза, действителен для всех без исключения неписей модуля. То есть если тебе надо закрыть еще одну веточку в диалоге любого непися, будь любезен, пиши: "SPEAK_2", потом "SPEAK_3" ну и так далее... Таким макаром можно наплодить стопитьсот этих "SPEAK_ов" и просто в них запутаться. Я этот скрипт немного переделал. Примерно так: Neverwinter Script int StartingConditional() { if (!GetLocalInt(OBJECT_SELF,"SPEAK_1"+ GetTag(OBJECT_SELF))) { SetLocalInt(OBJECT_SELF,"SPEAK_1"+ GetTag(OBJECT_SELF),TRUE); return TRUE; } return FALSE; } То есть теперь он привязан к конкретному неписю, на другого его можно смело ставить с тем же номером, ветка диалога закроется. Проверил - работает. Естественно, я сохранил его под другим названием. Потому что оказываться от твоего, Aiwan, скрипта, я не собираюсь, иногда требуется заткнуть рот на определенную тему именно всем неписям... Это как, можно считать "вниканием" в числовые значения, или я очередную глупость сморозил? (IMG:style_emoticons/kolobok_light/prankster2.gif) Ну, а за предложение помощи в отладке просто и не знаю, как благодарить! И тут уж, без обид, ловлю на слове. Потому что где она точно понадобится - это когда у меня дело дойдет до фильмов. Я говорил, что шарахался от катсцен, запуганный "висяками" ПЛ-овского бандита. Но теперь бояться перестал и очень даже начинаю увлекаться. Так что спасибо еще раз. З.Ы. Кстати, Aiwan, у тебя я тоже занял скрипты Алишан, очень понравилось, что они регулируют отношения независимо от того, хеньша она или еще нет. Надеюсь на их основе налаживать отношения с фракцией очаровательных дикарок, которых мой робинзон найдет ближе к середине мода. Причем тут надо разные значения. Ну, с конкретной дикаркой, которой ПС принес рыбину вкусную или ожерелье какое красивое сразу Love+10 и одновременно с фракцией Love+1. Вот так и пахай, парень, пока фракция ТруЪ_Нейтрал не перейдет во фракцию Друг_ПС. Только тогда с тобой заговорит Великий Шаман (нарыл фотку настолько татуированного полинезийца, что понять не могу, как он выжил, бедняга). Тут тоже в отладке, боюсь, без вас, ребята, вряд ли что выйдет путное... З.Ы.Ы. Сорри за многабукафф. Говорил уже, профессионально-нравственная деформация. Лечению не поддается Сообщение отредактировал Chiffa - Dec 1 2017, 15:07 |
![]()
Сообщение
#53
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Разговор вроде был о количестве локалок, так что я о нём. Поясню.
Как ни крути, локалки сохраняются в массиве, у массива есть размер. Если предположить, что размер массива не зарезан специально до какого-то абсурдного числа (типа 10, 50 и т.п., что в 21-м веке редко, но таки бывает), то ограничивает нас тип переменной индекса этого массива. Самый минимум, что могли сделать биовари - 1 байт (8 бит, 2^8=256 "значений"). И тут два варианта: - знаковый int8/char: диапазон -128...127, но т.к. индекс массива обычно 0+, то это даёт размер в 128 (этот же диапазон, например, у скиллов и абилок); - беззнаковый unsigned int8/char: диапазон 0...255, размер 256. Это именно тот минус, о котором я говорил, - часть реализации массива, а не особенности внутри скрипта. Хотя я ни разу не замечал проблем с локалками. Местами использовал довольно много, даже массивы на локалках реализовывал, да и не только я. А на старых серверах без внешней бд даже все фишки чара/акка хранили в локалках на итемах. |
![]()
Сообщение
#54
|
|
Level 6 ![]() ![]() Класс: Волшебник Характер: Chaotic Good Раса: Человек ![]() |
Это именно тот минус, о котором я говорил, - часть реализации массива, а не особенности внутри скрипта. Хотя я ни разу не замечал проблем с локалками. Местами использовал довольно много, даже массивы на локалках реализовывал, да и не только я. А на старых серверах без внешней бд даже все фишки чара/акка хранили в локалках на итемах. Спасибо, denis0k, теперь понятно. Просто я видел, что в тулсете на модельку можно повесить очень небольшое количество переменных. Ну и подумал, что движок поступает также. Вот и забеспокоился. А того количества, которое ты озвучил, хватит выше крыши. Даже если говорить о минимальном количестве. Тем более, что благодаря подсказке Aiwanа я уж точно не стану грузить на ПС лишнее. Стоит наковальня, статичный плейс - так пусть хоть локалки хранит, все польза. Это ведь только с мультитулом герой по всему острову бегает. А все остальные "инструменты" вполне могут поработать "чемоданами". Спасибо. |
![]()
Сообщение
#55
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
В кастомных ELC значения из 2да вешались массивами на 1 объект, это тысячи локалок. Все работало как часы.
|
![]()
Сообщение
#56
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Насчет цифровых значений тоже вроде вникал. Правда, довольно поверхностно и скорее интуитивно. Aiwan, вот, к примеру, твой скрипт из Андры: Ну я тебя читаю на раз два (IMG:style_emoticons/kolobok_light/smile.gif) Скорее всего из-за того, что я сам был точно такой как ты, гуманитарий скорее чем скриптер-логик. Короче, ты все понял не так (IMG:style_emoticons/kolobok_light/snoozer_17.gif) Разжевываю, хоть это и есть в мануале по авроре, почитай вниматочно. Локальная переменная это как название улицы. Например, переменная "УЛИЦА_СТРОИТЕЛЕЙ", и это "стринг" буквенное обозначение. Но, кроме всего оно имеет и числовое обозначение "интеджер" типа номер дома. Если мы не указываем его конкретное значение, то оно будет 1 или TRUE (что значит ИСТИНА для языка компьютера). Итак что имеем: Neverwinter Script int StartingConditional() { object oPC = GetPCSpeaker(); SetLocalInt(oPC,"QUEST_KILL_BILL", 1); } Это вторая часть Марлезонского балета. Neverwinter Script int StartingConditional() { object oPC = GetPCSpeaker(); SetLocalInt(oPC,"QUEST_KILL_BILL", 2); } Это третья часть... Neverwinter Script int StartingConditional() { object oPC = GetPCSpeaker(); SetLocalInt(oPC,"QUEST_KILL_BILL", 3); } И таких частей может быть сто тыщ мульонов. А ты делаешь так: Neverwinter Script int StartingConditional() { object oPC = GetPCSpeaker(); SetLocalInt(oPC,"QUEST_KILL_BILL_1", TRUE); } Часть два Neverwinter Script int StartingConditional() { object oPC = GetPCSpeaker(); SetLocalInt(oPC,"QUEST_KILL_BILL_2", TRUE); } Часть три: Neverwinter Script int StartingConditional() { object oPC = GetPCSpeaker(); SetLocalInt(oPC,"QUEST_KILL_BILL_3", TRUE); } Что в принципе работает но реализовано через задний проход. В общем быстро в тему для скриптов для начинающих и грызи PDF по авроре, что я писал. |
![]()
Сообщение
#57
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Нужны базовые знания по программированию и составлению алгоритмов. После этого язык значения не имеет вовсе, можно со справочником писать на любом после пары-тройки дней знакомства с синтаксисом.
Я изучал программирование в вузе (правда при этом я занимался им с 5-го или 7-го класса школы), абсолютное большинство студентов просто зубрит конструкции. Экзамены сдать это позволяет, а вот программировать - не очень. Рекомендую искать инфу по основам программирования, где рассказывается про алгоритмы, блок-схемы и т.п. |
![]()
Сообщение
#58
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Я тоже учил языки программирования, и тоже был ни в зуб ногой. Только Аврора дала понять что ЭТО такое и как там все просто и сложно.
|
![]()
Сообщение
#59
|
|
Level 6 ![]() ![]() Класс: Волшебник Характер: Chaotic Good Раса: Человек ![]() |
В общем быстро в тему для скриптов для начинающих и грызи PDF по авроре, что я писал. Слушаюсь, мой генерал! (IMG:style_emoticons/kolobok_light/prankster2.gif) Нет, серьезно, спасибо за разжевывание. Твой труд не пропал даром, все-таки ты имеешь дело не с самым безнадежным тупицей. Нужны базовые знания по программированию и составлению алгоритмов. После этого язык значения не имеет вовсе, можно со справочником писать на любом после пары-тройки дней знакомства с синтаксисом. Я изучал программирование в вузе (правда при этом я занимался им с 5-го или 7-го класса школы), абсолютное большинство студентов просто зубрит конструкции. Экзамены сдать это позволяет, а вот программировать - не очень. Рекомендую искать инфу по основам программирования, где рассказывается про алгоритмы, блок-схемы и т.п. Кстати, весьма заметно, что программирование ты постигал именно вниканием, а уж не зубрежкой. По твоей логике заметно. Это я понял, просто прочитав два-три твоих поста. Тут как у Жванецкого: "Я не разбираюсь в автомобильных шинах, моя работа - разбираться в людях." К слову, "зубрежный" подход универсален для любых ВУЗов, не обязательно технических. У нас тоже таких хватало: вызубрят в чем отличие статьи от корреспонденции, к примеру, экзамен сдадут на "отлично". Только потом над их писаниной покатывается со смеху весь Мухосранск. За совет спасибо. Попробую именно вникать. В базу. ГСУ сильно мешает, ясен пень, но ... попробую... |
![]() ![]() |
Текстовая версия | Сейчас: 26th April 2025 - 07:08 |