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

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

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


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

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

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

 

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

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

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


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

@Serge!, чем они таинственные? w_open - IWriter; r_open - reader. Но о них лучше забыть, разве что на чтение, но для этого полно других штатных методов. Касаемо записи, файл создать можно, но записать вроде более 300 байт нельзя, если память не изменяет. Давным-давно с этим разбирался.

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

Всем доброго времени суток, появился такой вопрос: возможно ли скриптово реализовать тепловизор? Ну вот к примеру обычный пнв("белая ночь") , а скрипт таким классам как нпс и монстр присваивает эффект другого цвета, ну или что-то типа того?

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

2 groks, про кровососа:

Во-первых, Артосокод и сам по себе громоздкий, а ьбез форматирования это вообще не читается, с форматированием же сразу все более-менее понятно:

  Показать

 

 

Во-вторых, в данном случае оно меня сильно разочаровало. Ну да ладно.

if (self.timer_anim or 0) < iTime then -- то есть, если меньше, то начинает притягивать и озвучивать.

self.timer_anim = iTime + 500 -- а к self.timer_anim добавляет пол секунды. Мало это, или много - тут на усмотрение. Но через пол-секунды повторит.

 

if (self.timer_hit or 0) < iTime and (self.timer_anim and self.timer_anim + 200 >= iTime) then

если 10 миллисекунд хит ни кому не наносился, и 200 ms (чуть меньше половины времени от начала засасывания НЕ прошло, то наносит.

self.timer_hit = iTime + 10 --/ таймер хита ~ 0.1 сек

и еще 10ms добавляет. То есть, аки пионэр, снова будет готов.

Мдя, видал я разные варианты кровососов извращенцев, но этот - вообще какой-то озабоченный.

Ну а дальше он собственно и занимается извращениями всякими нехорошими.

 

Вообще, конечно, все это извращение следует переписать, но, хотя-бы... гм... Да уж...

 

В общем вот здесь:

if self.object:clsid() == clsid.bloodsucker_s and self.object.health > 0.25 then

не хватает чего-то вроде and ( self.tmer_attack or 0 ) < time_global() then

 

а после  self.timer_hit = iTime + 10 --/ таймер хита ~ 0.1 сек

еще self.timer_attack = iTime + сколько надо. -- я бы что-то типа 2000 или даже 5000 поставил.

Тогда один раз анимку запустит, и один раз хит нанесет.

 

Впрочем, все равно уродство редкостное, поскольку вообще не здесь надо править, а здесь все проще закрасить, чем отскребать.

 

 

upd:

if (self.timer_hit or 0) < iTime and (self.timer_anim and self.timer_anim + 200 >= iTime) then

 

-- нет, я вообще не понял, как оно должно работать. Оно ж всегда больше. Пулеметная очередь какая-то. И нафига тогда вообще проверять ?

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

@Dennis_Chikin, оно и не работает (как нужно), функцию нужно заново писать. Хотя выглядит красиво и заманчиво. и каждый незадачливый солянщик считает должным себе это взять, хотя на деле это выглядит/работает весьма... не корректно.

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

Но оно работает. И совершенно без сбоев. Действительно как из пулемёта ... эээ ... присасывается.

Теперь хоть понял, что за паузу отвечает.

Цель привести к состоянию, когда у ГГ хоть с небольшой защитой есть шанс выжить. А то ж будут сплошные сейф-лоады, которые надоедят и геймер бросит мод.

@Dennis_Chikin, Спасибо.

@Карлан, Предложи вариант.

Может проще будет не вертеть ГГ и просто прилепить анимацию опьянения например?

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

Ну вот как-то так уж, что-ли. Не проверял, ибо где я в такую погоду найду вам кровососа, да еще и извращенца ?

 

  Показать

 

upd: 22:15 - и еще поправил. Ибо нефиг прямо на форуме код писать.

 

И, блин, нет ничего хуже, чем постоянно что-то править под древние кривые скрипты, когда у тебя давно вменяемые написаны. 8(

 

2 Zander_driver: на риторический вопрос я могу дать только риторический ответ. Надо ?

По тому что про кровососа был пост на форуме, и этого самого кровососа пытаются впихнуть именно в древний кривой скрипит.

 

Upd2: тьфу, блин. if self.attack_time and tg < self.attack_time -- атака пошла

вот так надо. И дальше тоже на attack_time поменять, для красивости.

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

Раз началась чистка форума, то хочу завершить нашу подвисшую дискуссию об использовании текстовых файлов в модах на движке ТЧ. Это актуально потому, что все мои посты, кроме самого первого с вопросом, уже убраны, а остались только 2 сумбурных по содержанию ответа от Struck, в которых, к тому же, второй противоречит первому. Это говорит лишь о том, что товарищ не достаточно глубоко разобрался в этом вопросе, но, тем не менее, легко берётся учить других. А вот полезной информацией по этому вопросу, как оказалось, не владеет.
Учитывая вышеизложенное, немного предыстории, которую можно и пропустить, т.к. в этом сообщении ни она главная цель.
 

  Напомню (Показать)
Изменено пользователем Serge!
Добавлено Dennis_Chikin,

Не убраны, а перемещены. Можно взять, отредактировать, и оставив нужное вернуть сюда. Или пусть лежат там, где лежат, в неизменном виде. Очевидно, обсуждение пользователя все же к теме не относится.

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

Ну и вообще, если я правильно понял смысл поста, то это давно делают примерно так:

 

  Показать

-- здесь, в частности, чтобы сохранить опции игры независимо от сэйвов.

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

@Serge!, тебе все по делу написали. А это извращение было открыто в 2010. Все об это знают я думаю. io в ТЧ нет и не было. К чему ты тут развел это все я не понимаю. Даже сам Artos такое не использовал, а написал se_stor. Подобное нужно лишь в редких случаях (и то - не уверен), например вот как Денис описал.


Обновленная система ивентов: m_events (031214) [~2.5Kb]

P.S.: не трактую свою систему как хорошую и безупречно работающую, но может кому и сгодится ;)

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

Принцип тот же, имеем какой-то шаблон, который или переименовываем (как в Вашем примере),  или копируем под другим именем (как у меня).

Только я тогда не знал (я ж любитель), как создать исходный файл-шаблон определенной структуры и поэтому сделал, как мог - просто создал пустой файл и работал с ним.

Сейчас я понял, что могу прогнать такую схему в ЗП и, если всё получится, то работать по ней в ТЧ. Буду пробовать

Где ж Вы раньше были, когда вдвоём уговаривали меня использовать не подходящие средства, а не рассказали про это?

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

Просто метод более ограничен, чем другие. Например, вместе со всеми путями здесь не может быть более 250 символов. На сами символы тоже есть ограничения. То есть, это гораздо ХУЖЕ нетпакета. И хуже внешнего конвертера лога в ltx.

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

@Zander_driver, почему "был"?
Его lua_helper, lua_extension, m_netpk, m_timers, se_stor (соответственно, изменённый _g), ты не поверишь, давно и успешно использую.

Каким боком m_events? Что это? Зачем это (=как использовать)?

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

А скажите пожалуйста, что такого уродского в этом коде:

if string.find( obj:section(), "af_" ) then

Интересно в познавательных целях и чтобы не писать "по уродски".

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

@Barmolini, в секции можно написать my_cool_art и это будет артефактом, однако условие не пройдет. Пытаться чтото идентифицировать не по тому ключевому полю - глупо. Это как пробовать вычислить кошку среди собак по наличию хвоста и отсутствию крыльев. Смекаешь? Если кошка - изволь мяукать, в данном случае надо брать clsid или что там у нас.

ТЧ 1.0004. SAP и Trans mod

github

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

@Barmolini, во-первых да, избавляемся от косяков с секциями, и в некоторых модулях не городим ненужные таблицы напрасно тратя время. А во-вторых проверка t[clsid] работает в ~6-7 раз быстрее чем string.find. На всякий (миллион итераций):

strfind 0.022
table 0.003

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

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

Ребят, умоляю вас! Пожалуйста, напишите функцию убийства определённого НПС через скрипт.
Платформа ТЧ

 

А-ааа !!! npc:kill( npc ) - чем не подходит ? Ну и в поиск это же слово - kill, в смысле. dc

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

function mochim_five_nps()

    if has_alife_info("первый_грохнут") and

        has_alife_info("второй_грохнут") and

        has_alife_info("третий_грохнут") and

        has_alife_info("четвертый_грохнут") and

        has_alife_info("и_пятый_наконец") then

        return true 

    else 

        return false

    end

end

 

Удали несколько строк не нужных, смотря сколько убить нужно.

 

Если нужно одного, то будет вот так:

 


function mochim_five_nps()

    if has_alife_info("первый_грохнут") then

        return true 

    else 

        return false

    end

end

Изменено пользователем Macromelyan
Ссылка на комментарий
  10.12.2014 в 16:47, Macromelyan сказал:

 

function mochim_five_nps()
    if has_alife_info("первый_грохнут") and
        has_alife_info("второй_грохнут") and
        has_alife_info("третий_грохнут") and
        has_alife_info("четвертый_грохнут") and
        has_alife_info("и_пятый_наконец") then
        return true 
    else 
        return false
    end
end
 
Удали несколько строк не нужных, смотря сколько убить нужно.
 
Если нужно одного, то будет вот так:
 
function mochim_five_nps()
    if has_alife_info("первый_грохнут") then
        return true 
    else 
        return false
    end
end

 

Спасибо, конечно, за ответ, но я имел в виду немного не то. Возможно, я вопрос не так поставил. Как убить НПС через скрипт - я это имел в виду.

Ссылка на комментарий
  10.12.2014 в 17:34, Dennis_Chikin сказал:

kill() тоже не подходит ?

 

Ну а что тогда надо-то ?

То есть, вот так?

 

  Показать

 

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

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

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

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

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

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

Войти

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

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

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