Перейти к контенту

Рекомендуемые сообщения

Тема для обсуждения скриптов всего и всех в серии игр STALKER.


Задавая вопрос (!):
1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего;
2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме);
3. Изучите информацию которая может вам помочь:

  Информация (Показать)

4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос;
5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе;
6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода;
7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины.
8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ.
9. И помните: «Правильно заданный вопрос – половина ответа».

 

Какие вопросы следует задавать, а какие нет...

  Читать рекомендуется. (Показать)

И последнее: очень рекомендовано к прочтению Правила форума
 


  • Спасибо 1
  • Полезно 2
Ссылка на комментарий

Подскажите пожалуйста в чём причина. Использую обычный скрипт на передачу предмета

  + (Показать)
  Большая Зона - ещё не конец (Показать)
Ссылка на комментарий

riddik121, стандартная диалоговая функция немного капризная, лучше заменить ее на мою функцию:

  Показать

Изменено пользователем ColR_iT
Ссылка на комментарий

proger_Dencheek, а можешь по подробнее описать куда вставить твой скрипт и как потом будет выглядеть непосредственный скрипт передачи конкретного предмета (и денег).

  Большая Зона - ещё не конец (Показать)
Ссылка на комментарий

riddik121 Стандартный скрипт "dialogs.script". В нем ищешь эту функцию и заменяешь на мою.

 

Shredder, конфиги монстров не редактировались. Причина в другом.

Ссылка на комментарий

proger_Dencheek, интересно, чем же твоя функция лучше? Парой дополнительных проверок и возможностью указывать количество предметов для передачи? Боюсь, что в данном случае "твоя" функция так же не поможет...

 

 

riddik121, вероятнее всего ты не правильно передаешь в функцию "кто-есть-кто". Вызывая на реплике НПС, ты передаёшь предмет от актора к актору. Попробуй вызвать функцию так:

function anarhist_pkm_done(first_speaker, second_speaker)
  dialogs.relocate_item_section(first_speaker, "wpn_pkm", "out")
end

 

Что касается функции по универсальнее, то позволь тебе предложить следующее:

  Показать

 

  • Нравится 3
Ссылка на комментарий

я так понимаю first_speaker - первый говорящий (ГГ), second_speaker - второй говорящий (НПС). Т.е., к примеру

 

function название функции(first_speaker, second_speaker)

dialogs.relocate_item_section(first_speaker, "предмет на отдачу", "out") - передача предмета от ГГ к НПС

dialogs.relocate_item_section(second_speaker, "получение предмета","in") - получение предмета от НПС к ГГ

end

  Большая Зона - ещё не конец (Показать)
Ссылка на комментарий

riddik121, это зависит от того, кто говорит фразу, в которой вызвана функция. Вообще первым аргументом передаётся говорящий, вторым - оппонент.

Ссылка на комментарий

Похоже тема превращается из "Школы ...", в обменник: "это не знаю, но это плохо, а вот это мое вроде как лучше"... :-(

Если задан вопрос, то нужно давать ответ по существу, а не тупо предлагать нечто, что может и позволит обойти ошибку, но не отвечает на вопрос и не учит в подобных ситуациях не наступать на грабли!

 

riddik121, при вызовах функций из диалогов важна фаза диалога, а точнее кто же ее произносит.

Ту или иную фразу может произносить как актор, так и его собеседние (НПС), и таким образом аргументы на входе функции (first_speaker, second_speaker) могут иметь порялок: актор,НПС или наоборот НПС,актор.

В твоем случае, если фразу произносит актор (first_speaker), то и не будет ничего у него "забираться", т.к. у тебя забирается у second_speaker'а.

Т.о. потрудись либо отслеживать фазы диалога и использовать аргументы по назначению, или же определяй внутри твоей функции "ху из ху" и применяй...

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

ColR_iT, моя функция не требует объявления first_speaker, second_speaker. По этому она точно пригодится тому, кто задал вопрос, ведь у него с этими аргументами проблемы.

Ссылка на комментарий

proger_Dencheek, а когда это родная функция требовала "объявления first_speaker, second_speaker"? И у просившего проблемы как раз не с аргументами, а с определением того, на кокой реплике вызывать функцию, либо кого именно передавать в неё.

P.S. Постарайся в следующий раз давать конкретный ответ на вопрос, а не распространять копи-паст. На этом оффтоп окончен.

Ссылка на комментарий

Господа! Может не в тему, но вот я иногда заглядываю в эту тему и просто восторгаюсь терпению Артоса и иже с ним. Можно я скажу тем кто не может разобраться со спикерами, передачей предметов и прочими я бы сказал, очевидными вещами: вы просто скачайте последнюю солянку а лучше оп1, перенесите в отдельную папку папку config и scripts, поставьте себе notepad++ и используйте поиск фразы по файлам. И смотрите, как ваши пожелания сделаны у пысов или в солянке.

Проблемы со спикерами? Поиск по файлам фразы first_speaker ответит на все ваши вопросы. Просто скопируйте уже рабочий код и поправьте на свои значения. Не перекладывается предмет из гг к неписю или в нычку - поиск по фразе transfer_item решит ее.

А если не знаете с чего начать поиск - вспомните, где в игре есть подобное, найдите этот код по любой фразе, по диалогу например, или по описанию и дальше по цепочке поиском по ключевым словам.

А если вы хотите научиться азам ООП на сталкере, просто ковыряя файлы - то у вас ничего не выйдет - вы начали с конца. Настоятельно рекомендую купить книгу основы ООП или похожую и внимательно изучить ее. Без этих знаний вы простоянно будете блудить в очевидных вещах, так ничему и не научитесь, и только зафлуживаете тему.

Чтобы научиться читать - нужно как минимум выучить алфавит. Чтобы научиться считать - нужно как минимум выучить цифры. Чтобы научиться программировать в сталкере - нужно как минимум понять что такое объект, класс, наследование и чем конфиги отличаются от скриптов, а также чем серверный объект отличается от клиентского. Иначе у вас ничего не выйдет и для вас только один вариант - тупое копирование уже рабочих скриптов.

Я не хочу хвастаться, но я 99% всех своих проблем решил простым поиском по скриптам и конфигам. Конечно, я знаком с основами ООП и это очень сильно мне помогало в пониманиии скриптов. Это поможет и вам)

Изменено пользователем proper70
  • Нравится 2
Ссылка на комментарий

В соседней теме "Ковыряемся в файлах (ЗП)" я спрашивал о тормозах при выходе НПС в онлайн. Одним из таких "тормозных" мест является вызов sound_theme.init_npc_sound(self.object) в net_spawn NPC. Стал разбираться, в чём дело. Оказывается в sound_theme при инициализации создаётся очень много объектов от классов npc_sound, actor_sound и т.д., при выполнении init_npc_sound НПС регестрируется в каждом объекте класса npc_sound. Как-то в одной из тем была информация о том, что методы объекта выполняются гораздо дольше, чем просто функции. Вспомнив об этом, решил ещё раз проверить этот факт:

  код теста (Показать)
Изменено пользователем Shredder
  • Полезно 1
Ссылка на комментарий

ИМХО

Если есть возможность и желание, конечно надо переписать. И по возможности, не только усовершенствовать, но и расширить.

 

"+"

И не только "sound_theme" - другие менеджеры и схемы то-же, есть куда и для чего совершенствовать и расширять.

Изменено пользователем 7.9

всё легко

Ссылка на комментарий

Другие тоже можно, но далеко не все. Скажем, все классы, унаследованные от object_binder нет возможности переписать.

И что ты имеешь ввиду под "расширить"?

Изменено пользователем Shredder
Ссылка на комментарий

Прежде чем переписывать, неплохо было бы выяснить соотношение времени полезной нагрузки и вызова функции/метода. Т.е. в сравнении выше сравниваются накладные расходы на вызов соответственно метода класса и просто функции. Но я подозреваю, что фризы вовсе не связаны с расходами на вызов методов класса, а скорее всего это звуки так долго грузятся. При этом, могу предположить, что на фоне времени загрузки звуков расходы на вызов что метода, что обычной функции - это копейки. Так что рекомендую сначала это проверить, а потом уже что-то переписывать.

  Полезный утиль (Показать)
Ссылка на комментарий

Много писать не буду... :)

Если про "sound_theme" - то тут (с ходу) требуется расширение общего скриптового управления звуками...

Ну там: "Менеджер торговли" - точно, явно нуждается в расширении и модернизации функционала...

Ну и ещё там.... расширение каждого менеджера (схемы) лучше обсуждать одельно и подробно, так-сказать: "анализировать, фильтровать... и прочая"...

всё легко

Ссылка на комментарий
  12.01.2013 в 11:01, malandrinus сказал:

... скорее всего это звуки так долго грузятся.

Это первое на что я грешил, getFS():exist(), т.е. проверка на существование. Тогда я добавил кэширование в таблицу, т.е. проверка осуществлялась один раз, затем результат заносился в таблицу и для следующего НПС, выходящего в онлайн проверка не осуществлялась. Но такой подход увеличил быстродействие только в 2 раза, что тоже не плохо, но не достаточно. Да и если посмотреть на функцию:

  init_npc_sound (Показать)
Изменено пользователем Shredder
Ссылка на комментарий
  12.01.2013 в 11:26, Shredder сказал:

Но такой подход увеличил быстродействие только в 2 раза, что тоже не плохо, но не достаточно.

Фризы то хоть уменьшились?

 

при отказе от классов протестируй еще такой вариант:

for i = 1, 1000000 do
local n = b.num
end

Без функций вообще все летать будет. :ny_megalol:

 

Ты кстати, проверил, что фризы из-за скриптов, если из-за скриптов, то именно из-за net_spawn? А то я недавно читал, что у кого-то фризы из-за моделей были. И при выходе в онлайн не только net_spawn вызывается.

Время выполнения инициализации звуков я так понимаю ты замерил? Напиши цифирки, сколько функция выполняется и сколько весь net_spawn.

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...