Futura
вот тебе пример с разными операциями над таблицей - точнее двумя сразу
t ={}
tt = {1,"n",3,4,5,6,7,8,9,10}
x = 100
function name()
table.remove(tt,2) --удаляем одно значение с индексом 2 то есть "n"
for k, v in pairs (tt) do --шмонаем таблицу tt
table.insert(t,v) --пишем ее в пустую таблицу t
end
for i, j in ipairs(t) do -- шмонаем новую таблицу t
rawset(t,5,x) --переписываем значение с индексом 5 на значение локальной переменной x
print(i,j) --печатаем результат в виде пар ключ\значение
end
end
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Futura А откуда доставать визуальные эффекты (какие строчки в файле артефактов)?
добавлено спустя 4 минут
Вот более сложный вопрос:
как сделать из подствольного гранатомета подствольный дробовик - заменить тип боеприпасов (так просто не получалось, а как?) и увеличить объем магазина (скажем до 5ти)?
добавлено спустя 1 минуту
Повторю вопрос (не обижайтесь, пожалуйста - эти ответы для меня важны):
Я хочу сделать супер оружие из стандартного, а именно переделать 6ти зарядный гранатомет в аномальную пушку. Для визуализации мне нужно взять анимацию и звук выстрела из гаусса, а я не умею. Подскажите, пожалуйста.
Ну, это относительно легко. Теперь посложнее: для этого оружия нужны соответствующие боеприпасы (могу обойтись гаусс-патронами, но так будет лучше) - артефакт превратить в боеприпасы, причем не так, что 1 артефакт=1 патрону, а скажем 1 к 2000. Можно ли прописывать артефакт в файл weapons.ltx как патрон? И вообще - это реально превратить артефакт в боеприпас?
И вообще, какие советы дадите по реализации задуманного
добавлено спустя 30 минут
Ладно люди, надоело ждать ответы, задаю следующий вопрос (очень чешется задать):
как переделать подствольный гранатомет в подствольный дробовик я спросил. Усложняем задачу:
переделывание в подствольный огнемет - я вижу это так: аномалию "Жарка" поворачиваем на 90 градусов (главное знать в какую вертеть, а то конфуз получится), и "прикрепить" ее к концу ствола и время жизни - к времени нажатия кнопки "Стрелять". Не знаю насколько это правильно, подскажите.
PS: Для этого оружия нужны боеприпасы - артефакты: эту тему я поднимал выше (так что cм. выше)
PPS: Напишите в личку о том, что ответ готов, а то запарился ждать. Пожалуйста.
отредактировал(а) vhodnoylogin: 16-11-2009 23:48 GMT3 час. Зачем доказывать кому-то, что ты настоящий мужик? Лучше потратьте это время на добрые дела!
vhodnoylogin
с классами оружия поиграйся - без этого никак
попробуй поменять дроби класс на класс подствольной гранаты A_VOG25 или A_M209
затем впиши в конфиг оружия у которого есть подствольник в строчку
grenade_class = имя дробовых патронов
и не забудь в конфиге дроби в строчке
buck_shot = выставить 0 - на всякий случай
2. артефакт превратить в боеприпасы - а смысл какой в этом ? чтобы арт типа превратить в боеприпас достаточно поменять визуал любого патрона или гранаты на визуал арта.
Только зачем? какая фиг разница чем оружие стреляет - главное это эффект, а для эффекта нужно кое что другое - арту нельзя просто так привязать свойства боеприпасов - это долгая история как это сделать...
в итоге какой эффект от выстрела ты хочешь получить?
"чтобы было 1 к 2000 " -тут фиг его знает как.
разве что скрипт писать, который будет спавнить арт обратно определенное кол-во раз.
эффект аномалии к гранате можно (хотя не уверен в этом) привязать через использование соответствующего партикла (ищи названия сам) , который вписать в конфиг гранаты вместо партикла взрыва в строчке
explode_particles = explosions\explosion_01
но тогда надо менять тип хита вот здесь
hit_type_blast = explosion
hit_type_frag = fire_wound
а иначе хит останется такой же как от взрыва гранаты
эффект выстрела гауса - не анимация, а опять же партикл
flame_particles = weapons\generic_weapon_gauss --вот его используй
изучай внимательнее конфиги и параметры - тогда поймешь что можно сделать (и как), а что нельзя.
добавлено спустя 11 минут
насчет дроби - я щас подумал - не получится ей класс поменять скорей всего - так как у нее в конфиге не будет хватать параметров от гранаты и игра на это сильно заругается каким нить логом :-)
так что тебе остается только эксперементировать - готовых рецептов я не знаю.
-Q-W-E-R-T-Y-
Вот что узнал по одному параметру.
bias - это видимо параметр смещения\наклона ( видимо все таки камеры) по геометрическим нормалям - тока вот чем он измеряется - в радианах там или еще в чем - не знаю
сам параметр относится к такому понятию как сплайн.
Нормаль (франц. normal, от лат. normalis — прямой) к кривой (к поверхности) в данной её точке — прямая, проходящая через эту точку и перпендикулярная к касательной прямой (касательной плоскости) в этой же точке кривой (поверхности).& БСЭ
Сплайны - это линии, задаваемые несколькими опорными точками. Простейший тип сплайна состоит из нескольких опорных точек, соединенных прямыми линиями. Всего у них может быть пять параметров
"tension"
"continuity"
"bias"
"ease to"
"ease from"
Значения параметра Bias лежат в пределах от -1 до 1.
Смысловое значение остальных параметров сплайна я пока не нашел.
добавлено спустя 11 минут
а вот еще нашел
цитата из одной статьи по 3D моделированию
'настройте < параметр > Tension (Упругость), чтобы установить значение кривизны. При увеличении степени кривизны кривая функции выпрямляется и немного опускается;
- настройте < параметр > < Continuity > (Непрерывность), чтобы установить значение касательной, действие которого похоже на симметричное регулирование маркеров Bezier;
- настройте < параметр > Bias (Несимметричность), чтобы установить вершину кривой, связанную с ключом. Высокое значение этого < параметра > передвигает вершину впереди ключа, низкое - наоборот."
отредактировал(а) erlik: 17-11-2009 01:09 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Люди.
Кто может расказать по пунктам с примером как создать трех сталкеров сидящих у костра?
Прочитал журналы Сингапура22 по гулагам начал создавать все по пунктам прописал в АллСпавне, в скриптах и логику задал. Вылетов нет но и спавнящиеся НПС не захватываются гулагом.
Делаю вот так.
В АллСпавне
alife_l01_escape
[15001]
; cse_abstract properties
section_name = smart_terrain
name = ukostra
position = -275.677277,-13.356363,-107.354408
direction = 1.72750773685948e-008,-0.0520112030208111,-3.31841903289387e-007
erlik
:-cool)
спасибо.
вот что я нашёл:
в СДК есть редактор *.anm файлов.
Создаем новый объект,задаем ему тип dynamic,добавляем на карту и отмечаем флаг motionable,заходим в его свойства и видим редактор anm
Люди, здравствуйте. Вопрос:
Чем можно обойтись при создании следующего (в плане программ и того, что надо изменять): перед стрельбой все обитатели Зоны должны подносить оружие к глазу, а не стрелять от пуза, надо это исправить (как в GTA).
PS: Какой Сталкер лучше переносит изменения со стороны модов?
добавлено спустя 3 минут
Во, вспомнил:
Как присвоить артефакту способность чинить броню. При этом нужно создать свой артефакт - куда его прописывать, чтоб игра его "заметила"?
добавлено спустя 3 минут
Нужно прицепить подствольник несвойстенному ему оружию: например усилить снайперскую винтовку этим приспособлением - какие строчки списывать и что они дают (это для "общего развития")?
отредактировал(а) vhodnoylogin: 17-11-2009 11:47 GMT3 час. Зачем доказывать кому-то, что ты настоящий мужик? Лучше потратьте это время на добрые дела!
vhodnoyloginТы что с луны свалился? или с дуба упал.
Во первых потрудись изьяснятся яснее.
Во вторых
перед стрельбой все обитатели Зоны должны подносить оружие к глазу, а не стрелять от пуза, надо это исправить (как в GTA)
НПС в Сталкере во время перестрелики могут стрелять как от бедра так и прицеливаясь. Ты еще скажи что мод делаеш на эту тему.
Как присвоить артефакту способность чинить броню. При этом нужно создать свой артефакт - куда его прописывать, чтоб игра его "заметила"?
Ни как. Это все не возможно.
Нужно прицепить подствольник несвойстенному ему оружию: например усилить снайперскую винтовку этим приспособлением - какие строчки списывать и что они дают (это для "общего развития")?
karavan, а неписям прописал :
[smart_terrains]
ukostra = true
я всё не смотрел, а так с ходу тут :
Координаты смарта : position = -275.677277,-13.356363,-107.354408
А координаты кампа : p0:position = -238.843552,-20.021402,-144.568497
Это при радиусе шейпа : shape0:radius = 10.07892799377441
Как присвоить артефакту способность чинить броню. При этом нужно создать свой артефакт - куда его прописывать, чтоб игра его "заметила"?
броню чинит - не вещь (не важно какая), а скрипт.
следовательно пишем скрипт и привязываем его действие к использованию определенного арта у ГГ.
для того, чтобы арт можно было использовать - берем конфиг антирада - называем наш новый антирад новым именем, присваиваем ему визуал арта - и радуемся.
теперь этот итемс можно использовать так же как аптечку или антирад, только нужно избавиться от ненужных свойств лечения: для этого в конфиге выставим в нужных (точнее ненужных :-)) параметрах по нолям.
осталось написать скрипт который будет спавнить арт обратно при его использовании, а на момент использования арта ставим активацию скрипта починки.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
karavan
это действительно невозможно - так как в классе арта не предусмотрены подобные возможности,
(разве что создавать свой класс- но это сложно)
я поэтому дал реальный вариант - пусть в и в несколько другой форме реализации.
добавлено спустя 2 минут
Gun12
привет :-) посмотри почту - я там тебе скрипт кинул интересный.
отредактировал(а) erlik: 17-11-2009 13:35 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
karavan
помог бы если б в этих гулагах разбирался :-) не работал я с ними.
а лог говорит что у тебя менеджер состояний вызывает переполнение стека - что закономерно и приводит к вылету. видимо какая то случайная ошибка
добавлено спустя 8 минут
а что у тебя за функция загрузки состояний такая странная?
function load_states(gname, type)
if type == "ukostra" then
return function(gulag)
return 0
end
end
также нельзя - у singapur22 как написано?
(нашел у себя первый вариант его статьи - у тебя может есть отличия)
вот так:
if type == "твой_тип" then
return function(gulag)
if db.actor ~= nil then
if ( level.get_time_hours() >= 5 and level.get_time_hours() <= 22 ) then
return 0 -- день
else
return 1 -- ночь
end
else
return gulag.state
end
end
end
добавлено спустя 5 минут
и вот функция function checkStalker где пишется, кого под гулаг брать.
у тебя там тож что то не то
в статье так:
if gulag_type == "твой_тип" then
return npc_community == "stalker" -- или кто нужен
end
добавлено спустя 16 минут
karavan
поправляюсь: первая функция - верная - так тоже можно как у тебя
вторая
function checkStalker(npc_community, gulag_type, npc_rank, se_obj)
if gulag_type == "ukostra" then
return true --вот здесь не уверен
end
но в любом случае добавь end
добавлено спустя 4 минут
и в этой функции тоже не хватает end в конце - если она у тебя там и заканчивается
function load_job(sj, gname, type, squad, groups)
отредактировал(а) erlik: 17-11-2009 14:41 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
karavan Самая главная твоя ошибка в том, что ты "путь" прописал не известно кому. Я же уже говорил, и не однократно, что именя путей, в all.spawn прописываются через имя смарта:
[имя смарта_имя пути]
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
singapur22
Поясни пожалуйста работу етой моей функции под спойлером.
я уже сдела правильный - нужный мне - вариант - использовав две таблицы, но пока не въехал в чем здесь была закавыка :-)
--возвращает 10 последних строчек файла + кучу nil
tn = {}
function name_45()
for line in io.lines("C:\\test\\items.ltx", "r") do --читаем все строчки файла
table.insert(tn,line) --каждую строку добавляем как значение в таблицу
end
s = table.maxn(tn) --вычисляем макс. индекс таблицы
x = s-10 --получаем индекс равный десятому с конца
for i, j in ipairs (tn) do
print(tn[i+x]) -- печатаем таблицу начиная с нужного индекса и получаем последние 10 строчек в файле.....+ еще всякую фигню в виде nil
end
tn = nil --уничтожаем таблицу
end
а вот правильный вариант - работает как надо
--возвращает ровно 10 последних строчек и без ненужных nil
ttt ={}
tn = {}
function name_46()
for line in io.lines("C:\\test\\items.ltx", "r") do --читаем все строчки файла
table.insert(ttt,line) --каждую строку добавляем как значение в первую таблицу
end
s = table.maxn(ttt) --вычисляем макс. индекс таблицы
x = s-10 --получаем индекс равный десятому с конца
--x = 9 -- а вот так мы получим все строчки начиная с десятой
for k, v in ipairs (ttt) do --итерируем первую таблицу
n = ttt[k+x]
table.insert(tn,n) --пишем все найденные значения с нужного индекса в новую таблицу
end
for c, j in ipairs (tn) do --итерируем новую таблицу в которой есть только то что нам надо - то есть 10 последних строчек файла
print(tn[c]) --результат - получаем 10 последних строчек файла
end
ttt =nil
tn = nil
end
отредактировал(а) erlik: 17-11-2009 16:18 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
karavan У тебя там всё верно, кроме того, о чём я тебе уже сказал.
erlik А ты сам подумай. Ты производишь итерацию по всей таблице, но при этом пытаешься вывесьти только 10 последних индексов. Соответственно, после этих самых 10 индексов, будем получать значения, значительно выше последнего индекса, что и приводит к выводу значений nil.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik Ну дак ты индексацию по этим десяти и делай:
s = table.maxn(tn)
x = s-10
for j = x, s in ipairs (tn) do
print(tn[j])
end
Решил немного погонять в старые тридэшки. (чисто ради спортивного интереса). Кто помнит, как в Unreal пройти вентилятор? Уже третий раз её запускаю, а дальше вентилятора пройти не могу:-(
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
singapur22
спасибо за вариант - тока одно но
с обобщенным for это у меня не прокатывает -
а вот так - с числовым - вполне
x = s-9
for j= x, #tab do
print(tab[j])
функция стала намного короче - что радует.
кстати на lua форуме для подобных же целей написали мегасложный скрипт - с использованием reverse, rep, gmatch и т.д. у меня как то все проще вышло :-) таблицы в lua - это сила.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik Я вообще не пойму, для какой цели ты использовал оператор table.maxn(t)
Он нужен чисто тогда, когда индексация в таблице производится НЕ в числовом порядке. Например при использовании id объектов, как номера индексов. В этом случае, данный оператор вернёт индекс имеющий максимальное число. А если у тебя производится индексация по числовому порядку, то его использование не имеет никакого смысла.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
singapur22
согласен что в функции в ее нынешнем виде он нафиг не нужен - но просто с него я начал эксперементировать с получением кол-ва строк в файле - (а иначе то никак - только через табличные индексы - если знаешь как по другому - расскажи :-) ), вот он и остался.... пока стал получается уже и не нужен.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik Ну тут уж извини. Не знаю. Не скажу. Я так глубоко в lua не внедрялся. Както всё поверхностно. По большей части то, что допустимо к использованию в Сталкере. Всё остальное, мельком.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
singapur22
точнее говоря получить нужное кол-во строк из файла можно и другим способом - но как то это сложно выглядит. я в тот скрипт на lua форуме пока не очень въехал - ( Gun12 вроде как разобрался - надеюсь пояснит мне)
Кстати - у таблицы есть ограничение по кол-ву (длине там или байтам) записываемых значений? (как то не раньше не задавался этим вопросом)
Или скока хошь столько и пиши в нее - хоть гигабайт инфы?
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.