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

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

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


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

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

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

 

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

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

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


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

Здравствуйте! Возникла небольшая идея, но не знаю как её реализовать. Подскажите пожалуйста как можно её сделать.

Идея заключается в переключении между стволами (верхний/нижний), для каждого ствола свой калибр, анимация, звуки и т.д. как можно реализовать подобное?

Я думаю нужно создать новый класс (ammo_class) и переключаться между ними при нажатии на кнопку смены режима стрельбы.

fire_modes = 1, -1                              ;режим стрельбы

ammo_mag_size = 1

 

////////РЕЖИМ_1//////////

ammo_class = ammo_12x70_buck, ammo_12x76_zhekan,ammo_12x76_dart   

////////Характеристика 1////////

дисперсия, отдача, звуки, анимация

 

////////РЕЖИМ_2//////////

ammo_class2 = ammo_9x53                                            

////////Характеристика 1////////

дисперсия, отдача, звуки, анимация

Изменено пользователем Kirgudu
Добавлено Kirgudu,

Перенёс из "справочника по функциям и классам"

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

@evg, что-то я не понял. Предпологается использовать разные снаряды для одной пушки? Тогда без ковыряний движка не обойтись, а это геморрой...

Не соответствует правилам.

Ссылка на комментарий
  25.11.2016 в 19:05, CRAZY_STALKER666 сказал:

@evg, что-то я не понял. Предпологается использовать разные снаряды для одной пушки? Тогда без ковыряний движка не обойтись, а это геморрой...

 

да всё верно, хотелось бы реализовать смену блоков стволов(т.е. при модификации) у ружья (например: ТОЗ-55-1 9мм/9мм; ТОЗ-55-2 12мм/9мм;ТОЗ-55-3 12мм/12мм). 

Добавлено Kirgudu,

Пункт 2.6 правил форума, устное предупреждение.
Рекомендую изучить правила цитирования

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

Добрый день. Делаю следующие действия:

local variable = ini_file("gamedata//config//file.ltx"):r_s32(settings, key)

Вот содержание файла file.ltx:

 

  Показать

 

 

Получается локальная переменная содержит в себе 0., но ловлю такой вылет:

 

  Показать

 

Если просто прописать в переменную 0, то вылета нет.

 

 

@UnLoaded, спасибо, но теперь ещё одна проблема. Данный вылет:

  вылет (Показать)
Изменено пользователем Kober(BRUC)
Ссылка на комментарий

@Kober(BRUC), разницы может не быть, но я бы сделал так:

ini_file("gamedata\\config\\file.ltx")

ИМХО, движок просто не находит файл.

 

@Charsi, точно, я даже не обратил внимания.

Изменено пользователем Kirgudu
  • Спасибо 1

Свои работы и совместные проекты: ИнструментOGSM CSFinal StrokeHARDWARMOD

Полезное: модули АртосаXML парсер

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

Путь до файла пишется относительно папки config.

ini_file("file.ltx")
  • Спасибо 1
  • Согласен 1
Ссылка на комментарий
  UnLoaded писал(а):

local variable = ini_file("gamedata//config//file.ltx"):r_s32(settings, key)

Такое не всегда проходит корректно и поэтому не стоит экономить на строчках кода. Я бы написал:

local sect = ini_file("gamedata//config//file.ltx")
if  sect:section_exist(setting) then local str = sect:r_s32(settings, key) end
Изменено пользователем Serge!
Ссылка на комментарий

Всем привет. можно ли подобным образом реализовать новый режим стрельбы

 

 

  Показать

 

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

@evg, попробуйте сделать это через подствольник,правда анимки и модель вам придётся самим делать.Но насколько я знаю то можно обойтись полностью скриптами. Вот только я бы сам писать такое не решился - слишком муторно, да и пушка довольно специфичная)

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

Привет всем.

Пытаюсь вытащить из Солянки спавн артефактов. Вызываю свой скрипт так:

  код (Показать)

Сталкер - наше всё!

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

 

 

  AndrewMor писал(а):
local math_random=math.random
local math_random = function (min, max)
     return math.random(min,max)
end
Добавлено Kirgudu,

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

В оригинале-то math.random кешируется (что имеет смысл в некоторых случаях, см. курилку и прозекторскую), а тут всё наоборот.

  • Не согласен 1
Ссылка на комментарий
  AndrewMor писал(а):

Собственно, вопрос: почему? Что сделал не так?

У меня встречный вопрос: зачем? 

 

Зачем вызывать функцию спавна артов (generate_arts()) много (несколько тысяч) раз?

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

 

 

  Bak писал(а):
Зачем вызывать функцию спавна артов (generate_arts()) много (несколько тысяч) раз?

Говорю же, пытался вытащить из Солянки. Может, что и неправильно вытащил.

 

 

 

  Serge! писал(а):
AndrewMor сказал(а)local math_random=math.randomlocal math_random = function (min, max) return math.random(min,max) end

Так в Соляночном скрипте прописано. И скрипт-то исправно работал.


 

 

  mortan писал(а):
если судить по логу то похоже что артефактов спавнится дофига.

Похоже, что так. Отсюда и вопрос: почему? И что сделано не так?

Сталкер - наше всё!

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

@mortan,
Ну если человек после первого намека не понял где смотреть, то видимо нужно дать другой намек, а не тот же самый.
Или просто объяснить, раз уж вовсе не понятно.

@AndrewMor,
Смотри.
В actor_binder:net_spawn, при спавне ГГ вызывается функция add_arts() из кода, что ты показал.
Посмотри на эту функцию. Что она делает. Построчно.
local sim = alife()
Кэшируется alife - видимо автор хочет активно использовать доступ к симуляции.
local obj
Понятно, сюда будет что-то записываться из кода этой функции ниже.
for a = 1, 65534 do
Так. Будут перебираться все объекты в игре не считая ГГ (зачем - пока не понятно. будем смотреть).
obj = sim:object(a)
65534 раза получаем объект по ID. Ну допустим получили. И что-же с ним(и) будем делать дальше?
if not levelsIgnoreArts[level.name()] then
65534 раза проверяем что локация, на которой в данное время находится ГГ не является подземной (полагаю).
generate_arts()
И если локация не подземная (упс, не повезло), то 65534 раза спавним артефакты.

Теперь, когда функция разобрана, вернемся в начало.
local sim = alife()
Где используется переменная sim в этой функции? Нигде. Эту строку можно удалить.
local obj
и
obj = sim:object(a)
А где используется переменная obj? Нигде. Значит тоже удалить.

И только участок кода с проверкой
if not levelsIgnoreArts[level.name()] then
является правильным. Только вот совершенно незачем повторят это 65534 раза.
В итоге функция стала такой :

function add_arts()
    if not levelsIgnoreArts[level.name()] then
        generate_arts()
    end
end

И это касается только данной функции. На самом деле тот код (мягко говоря) как-бы не очень ...
Пусть будет просто "не очень".

Изменено пользователем Nazgool
  • Спасибо 1
  • Нравится 1
  • Согласен 1
Ссылка на комментарий

Nazgool, спасибо за подробный комментарий. Тогда, либо я неправильно код вытащил, либо что-то не так, ибо в Солянке-то все пашет.

Сталкер - наше всё!

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

@AndrewMor,

Пожалуйста. Вот только хоть убей, но поверить не смогу, что рассмотренная функция может работать правильно.
Видишь ли - из цикла for a = 1, 65534 do нет преждевременного выхода. Т.е. ни break-а, ни return-а.
И поэтому, ну такие уж законы lua, он отработает все 65534 раза.

И дай Бог, чтобы ты появился где-то в подземелье.
Иначе, как я уже говорил, 65534 раза будут спавнится арты. Же-е-е-есть.

 

Всго ID-шек в игре 65535. До этого было заспавнено N ID-шек (мобы, лут и т.д.) + 65534 твоих артов. Сколько будет?

Точно больше максимально возможного 65535.

 

Да и вообще. К тому коду очень много вопросов.

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

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

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

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

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

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

Войти

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

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

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