PainkilleR

Фан-клуб

ОПРОС

Оцените этот сайт

menuleft3
menuleft4

Помощь с Lua-скриптами

В чём ошибка?

Как правильно?
[signature]
--------------------
{signature}
[/signature]
[fast]Цитировать[/fast] Жалоба
#0
scorcher
Мастера
  • публикаций
  • комментариев
А вот здесь новые.
Сделал переиндексацию и условие выбора таблицы, массив сжал с 40 до 36...

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

Общая проблема такая два слота оригинала и аддона получились перекрестными, в game.lua это проблема решена за счет условия выбора (if game.addon), остается только переброска между режимами

Вот такой вопрос (только сейчас пришел в голову :) ) : когда мы начинаем новую игру - и сохраняем имеющиеся карты - то они сохраняются по принципу индекса или номера слота?
Если сохраняются по индексу - то думаю и не стоило пересылать тебе, тогда проблема решается просто введением нового индекса для перекрестных карт (ведь на номера индекса слава богу ограничения не распространяются)

Но ты все равно глянь на досуге, может что напортачил по неопытности, заранее спасибо
Цитировать Жалоба
dilettante
Мастера
  • публикаций
  • комментариев
Str_Ghost, спасибо, за разъяснения. Но, как я понимаю нельзя сначала положить файл на форум, а потом уже в сообщении дать на него ссылку. Файл отобразится просто как присоединённый. Или я не прав?

scorcher, вот я сделал для тебя своего рода шаблон расширенной доски на базе 1.64. То есть, сохранены оригинальные карты, плюс добавлены места для новых 6 карт. Вроде бы ничего не упустил. Ну, в общем, посмотри, думаю, разберешься, что к чему.
Цитировать Жалоба
Str_Ghost
Посетители
  • публикации
  • комментария
[spoiler]uSpoiler2wprpal
2wprpa'
2wprpa'
2wprpa'
2wprpa')).val('Закрыть спойлер');$(
2wprpa'
2wprpa'
2wprpa')).val('Открыть спойлер
');$(
2wprpa'Открыть спойлер
Quote (dilettante)
Но, как я понимаю нельзя сначала положить файл на форум, а потом уже в сообщении дать на него ссылку. Файл отобразится просто как присоединённый.

Да, ты совершенно прав[/spoiler]
Цитировать Жалоба
scorcher
Мастера
  • публикаций
  • комментариев
dilettante
Спасибо, что не пожалел времени, за оптимизацию кода и за шаблон respect Действительно я много косяков наделал...
А ведь все гениально просто:
if Game.AddOn then MagicCards = MagicCardsAddon else MagicCards = MagicCardsPrim end
Отдельный респект за доработку дизайна доски - я уже и сам сегодня хотел браться, а тут.... Да... и за шаблоны новых карт тоже DD
В Game.lua все же придется немного условия выбора поменять, потому что я хочу, чтобы в аддон не прошли не новые карты, а старые слабые, потому бесполезные (например, половинные повреждение и х2 урон).
Ну а так в принципе все, мне осталось только условия прописать...
Сделаю в двух вариантах для супернатурала и для РК+ВООH
Str_Ghost
Пока собственно новые уровни еще не готовы (не все, и не до конца) - пусть пока просто будет такой шаблон для модеров.
Как пропишу карты Таро, можно будет выложить в каталоге файлов
dilettante
П.С. Я как понимаю этот шаблон можно чуть доработать, и число доступных карт вообще может стать 36+36 (36 в режиме оригинала и 36 совсем новых в режиме аддона). Оно в приниципе и не надо, но просто гипотетически...
П.П.С. Оффтоп: Лексар говорил, что ты сейчас еще занимаешься доработкой конвертации Некровиженских карт, я ничего не путаю? :) Если не путаю, то как успехи?
Цитировать Жалоба
Модераторы
  • публикаций
  • комментариев
Назрел такой вопросец-можно ли придать слабам такие свойства,чтобы через них нельзя было пройти,но можно было стрелять???Реализуемо ли это через скрипты???
Цитировать Жалоба
BlooDFloweR
Администраторы
  • публикаций
  • комментариев
Кто-нибудь может подсказать как сделать чтобы в определённый момент цвет фога поменялся?
Цитировать Жалоба
dilettante
Мастера
  • публикаций
  • комментариев
Попробуй так:

local f = Lev.Fog
f.Color = Color:New(0,0,0,0) -- здесь задать новый цвет
WORLD.SetupFog(f.Mode,f.Start * (Cfg.ClipPlane+100)/200,f.End * (Cfg.ClipPlane+100)/200,f.Density,f.Color:Compose())
Цитировать Жалоба
BlooDFloweR
Администраторы
  • публикаций
  • комментариев
dilettante, чтото не получается, фог просто попадает. конечно может я не правильно делаю. это же нужно в level.lua написать? вообще задумка у меня на уровне C6L4_City после телепорта в другую часть города изменить цвет фога на чёрный (первоначально у меня серый)
Цитировать Жалоба
dilettante
Мастера
  • публикаций
  • комментариев
BlooDFloweR, строчки, которые я привёл нужно добавить в любую, подходящую функцию, исполняемую в нужный момент. Скажем, переход от одной стадии игрового процесса к другой. Ну, а если тебе нужно сменить настройки окружения при переходе из области в область, то, целесообразно использовать объект класса CBox. Создай в нужном месте новый объект этого класса, настрой его размер и сохрани. Затем открой файл этого бокса и добавь туда это:

o.Frozen = false
function o:Tick()
if not self.Frozen then
if self:IsInside(PX,PY+1,PZ) then
self.Frozen = true
local f = Lev.Fog
f.Color = Color:New(0,0,0,0) -- здесь задать новый цвет
WORLD.SetupFog(f.Mode,f.Start * (Cfg.ClipPlane+100)/200,f.End * (Cfg.ClipPlane+100)/200,f.Density,f.Color:Compose())
end
end
end

Ну, это я предлагаю как вариант.
Цитировать Жалоба
BlooDFloweR
Администраторы
  • публикаций
  • комментариев
dilettante, большое спасибо! всё получилось теперь)
Цитировать Жалоба
LexaR
Мастера
  • публикаций
  • комментариев
По иде это должно было быть сразу в Cenveroment / но по каким-то причинам не работает...
В некровижн уже работает...
Цитировать Жалоба
BlooDFloweR
Администраторы
  • публикаций
  • комментариев
ещё такой вопрос, можно ли сделать чтобы скажем на время битвы уровень изменял текстуры? вообще движок такое позволить может?
Цитировать Жалоба
Str_Ghost
Посетители
  • публикации
  • комментария
BlooDFloweR, Можно поставить на одном месте два меша с разными текстурами и по ходу игры их менять когда надо ;)
Цитировать Жалоба
BlooDFloweR
Администраторы
  • публикаций
  • комментариев
Str_Ghost, тоесть это получится как на уровне Ад?
Цитировать Жалоба
Str_Ghost
Посетители
  • публикации
  • комментария
BlooDFloweR, Угу. Там (в Аду) можно подсмотреть какими командами скрывать и показывать меши.
Цитировать Жалоба
Модераторы
  • публикаций
  • комментариев
Возможно ли вообще ввести в Пк способность приседать и ложиться,просто уровни из Сталкера на то и расчитаны,что в некоторых местах надо понапрягаться присевши или лёжа???

Возможно ли создание такового задания-нельзя прыгать?
Цитировать Жалоба
Sviatoslav
Мастера
  • публикаций
  • комментариев
Такой вопрос. Команда Message выдаёт сообщение на экране в одну строчку. Если сообщение длинное, то оно начинается и заканчивается за пределами экрана. Как сделать так, чтобы сообщение выдавалось в несколько строк, например, в десять? %)
Цитировать Жалоба
LexaR
Мастера
  • публикаций
  • комментариев
\n
добавить в строку когда нужно на новую строку

Добавлено (02.08.2012, 00:11)
---------------------------------------------
Тоесть сначала пишем че надо , а на месте где нкжно прыгнуть на новую строчку, ставим \n , и пишем дальше , в игре в месадже будет на новой строчке,
типа ********************\n***********************\n****************

Цитировать Жалоба
Sviatoslav
Мастера
  • публикаций
  • комментариев
LexaR, тут, к сожалению, это не действует. Я так и делал, но это, похоже, зависит от процесса, который запускается при команде. :(
Цитировать Жалоба
LexaR
Мастера
  • публикаций
  • комментариев

Святослав, все работает, попробуй скопировать \n прям с текста с другими такими же мессаджами, мож символ с клавы как то по другому определяется huh
Цитировать Жалоба
dilettante
Мастера
  • публикаций
  • комментариев
Привет, всем. На днях получил личное сообщение от одного из участников форума в котором был ряд вопросов. Решил ответить на форуме, главным образом, потому что я не могу дать исчерпывающих ответов, и возможно к обсуждению присоединится ещё кто-то.

Итак, по мере усложнения (для меня :) ) вопросов:

[spoiler]uSpoiler7KkKTrl
7KkKTr'
7KkKTr'
7KkKTr'
7KkKTr')).val('[\–] Как через Actions поменять музыку на уровне?');$(
7KkKTr'
7KkKTr'
7KkKTr')).val('[+] Как через Actions поменять музыку на уровне?');$(
7KkKTr'[+] Как через Actions поменять музыку на уровне?1. Как через Actions поменять музыку на уровне?

--Определяем функцию (CAction.lua):


function CAction:Action_SetMusic(song)
local pcs = GObjects:GetElementsWithFieldValue("BaseName","PMusicFade*")
for i,p in pcs do GObjects:ToKill(p) end
local vol = Cfg.AmbientVolume
local fadeTime = 5
local prevVolume = SOUND.StreamGetVolume(Lev._freeMSlot)
SOUND.StreamLoad(Lev._freeMSlot,song)
SOUND.StreamPlay(Lev._freeMSlot)
AddObject(Templates["PMusicFade.CProcess"]:New(Lev._freeMSlot,prevVolume,vol,fadeTime))
if Lev._freeMSlot == 1 then Lev._freeMSlot = 0 else Lev._freeMSlot = 1 end
AddObject(Templates["PMusicFade.CProcess"]:New(Lev._freeMSlot,SOUND.StreamGetVolume(Lev._freeMSlot),0,fadeTime,"SOUND.StreamPause("..Lev._freeMSlot..");Lev._fade=false"))
Lev._fade = true
end


--Используем (file_name.CBox)


o.BaseObj = "AmbushForPlayer.CBox"
o.Actions.OnTouch[1] = "SetMusic:\"music_file_name\""[/spoiler]=Как через Actions поменять музыку на уровне?

[spoiler]uSpoilerBZn7qAl
BZn7qA'
BZn7qA'
BZn7qA'
BZn7qA')).val('[\–] Короткий выбор оружия');$(
BZn7qA'
BZn7qA'
BZn7qA')).val('[+] Короткий выбор оружия');$(
BZn7qA'[+] Короткий выбор оружия2. "Короткий" выбор оружия (доступ к слотам с номером выше 7 с помощью клавиш).

Тут всё не так однозначно. В теории, или как я это себе представляю, нажатия клавиш формируют некие байт-коды, значения которых непрерывно оцениваются функцией CPlayer:InterpretAction(delta). Здесь берётся число, сопоставленное с определённым оружием (Main\Definitions.lua) и если это число совпадает с байт-кодом клавиши, то запускается функция CPlayer:TryToChangeWeapon() с указанием нужного слота. Однако, предопределённые клавиши 8, 9, 0, F1, F2, F3, и F4 формируют "не свои" коды. Вдобавок, после того, как клавиша была нажата и отпущена код, формируемый ею продолжает
сыпаться до тех пор, пока не будет нажата какая-нибудь из "правильных" кнопок. Такое поведение, похоже, задано на уровне движка, и как от этого избавиться я не знаю. Тем не менее, назначить оружие с номером слота выше, чем 7 на определённую клавишу всё же можно.

Вариантов два. Покажу на примере слота номер 8. Общим для обоих вариантов будет необходимость отвязать оружие от предопределённых клавиш:

Cfg.KeyAlternativeWeapon8 = "None"
Cfg.KeyPrimaryWeapon8 = "None"

Вариант №1 "Мягкий". Добавляем функцию смены оружия в консольные команды и затем связываем с нужной кнопкой командой Bind.

Console.lua


function Console:Cmd_WEAPONEIGHT()
if Game.GMode ~= GModes.SingleGame then return end
local slot = 8
if Player.EnabledWeapons[slot] and slot ~= Player._CurWeaponIndex then
CPlayer.WeaponChangeConfirmation(Player.ClientID,Player._Entity,slot)
end
end


Cfg.Bind_8 = "WEAPONEIGHT"

Вариант №2 "Жёсткий". Добавляем код, связывающий смену оружия с одной клавишей и только с ней.

Game.lua


function Game:Tick(delta)
...
if INP.Key(Keys.K8) == 1 then
if Game.GMode == GModes.SingleGame then
local slot = 8
if Player.EnabledWeapons[slot] and slot ~= Player._CurWeaponIndex then
CPlayer.WeaponChangeConfirmation(Player.ClientID,Player._Entity,slot)
end
end
end
...
end



Оба варианта не лишены недостатков. В первом случае за гибкость приходится платить возможной потерей связи с клавишей и необходимостью заново переназначать её. Во втором - сама по себе жёсткая привязка уже недостаток и к тому же потребуется "залочить" смену кнопки в меню настроек.

Сама функция приведена в необходимом минимуме, но не является достаточной.[/spoiler]=Короткий выбор оружия

[spoiler]uSpoilerlXcwV0l
lXcwV0'
lXcwV0'
lXcwV0'
lXcwV0')).val('[\–] Как поменять цвет шрифта в консоли/меню выбора уровней/MagicBoard');$(
lXcwV0'
lXcwV0'
lXcwV0')).val('[+] Как поменять цвет шрифта в консоли/меню выбора уровней/MagicBoard');$(
lXcwV0'[+] Как поменять цвет шрифта в консоли/меню выбора уровней/MagicBoard3. Как поменять цвет шрифта в консоли, в меню выбора уровней и в MagicBoard. И в каких скриптах находится описание этих меню?

Тут прямо, ХЗ, где задан глобальный цвет, вероятно, что тоже в самом движке. Потратил некоторое время, но не нашёл в скриптах ничего подходящего. Единственное, что полезного могу сказать (спасибо Паше aka MonochromeRainbow, без него я бы ни за что не догадался) так это то, что консольные отклики имеют скрытый параметр, задающий цвет текста. Использовать можно так:

local color = R3D.RGB(0,0,0) -- black
CONSOLE.AddMessage(string,color)

Что же касается "Колеса" и "Доски", то это - так сказать, hard движка, который не вынесен в скрипты. Доступные настройки MagicBoard находятся в одноимённом скрипте. Основная часть определений меню лежит в HUD\PainMenu.lua.[/spoiler]=Как поменять цвет шрифта в консоли/меню выбора уровней/MagicBoard

Ну, вот вроде всё, надеюсь, не бесполезно напачкал тут на страничке.

PS. Sviatoslav
[spoiler]uSpoilerP1Ba6wl
P1Ba6w'
P1Ba6w'
P1Ba6w'
P1Ba6w')).val('Закрыть спойлер');$(
P1Ba6w'
P1Ba6w'
P1Ba6w')).val('Открыть спойлер
');$(
P1Ba6w'Открыть спойлер
твоё сообщение я получил, напишу немного позднее. И я ведь так и не доделал карты ещё. Просто совсем не хватает времени особенно с учётом моей вдумчивости (читай тугодумия).[/spoiler]
Цитировать Жалоба
Sviatoslav
Мастера
  • публикаций
  • комментариев
LexaR, да, что-то я туплю. :D Спасибо, заработало! :) Единственный косяк, что эта команда не поддерживает слишком длинный текст - игра вылетает. Придётся укорачивать длинные сообщения. Пробовал UnlockMsg из NVN - она поддерживает любую длину, но не понимает разделения на строчки.

dilettante, очень интересно! С музыкой уже поэкспериментировал - работает. Но Bullet Time, видимо, непобедим - после его активации музыка не восстанавливается, как и в MusicEnv. :D
P.S. Ок, буду ждать ответа - может мои вопросы не такие замороченные. :)
Цитировать Жалоба
Havcom
Мастера
  • публикаций
  • комментариев
Quote
dilettante, очень интересно! С музыкой уже поэкспериментировал - работает. Но Bullet Time, видимо, непобедим - после его активации музыка не восстанавливается, как и в MusicEnv.
Тоже опробовал этот Экшен. И всё бы нечего, но не это мне нужно.
Собсно экшен меняет ту музыку, которая проигрывается в данный момент, т.е. если играл Ambient, то экшен заменит Ambient, а если попёрли прокажённые, то экшен меняет боевую музыку. Но только на один раз. А я хочу сделать так, чтобы происходила глобальная замена музыки. Если можно менять FOG, FarClip и всё остальное как хочется, то и музыку можно (я думаю).
Весь этот гемор мне нужен, чтобы победить падение музыки при замедлении (Ну вот пришел такой мне в голову способ).
А ещё я больше чем уверен что в некро этот косяк был исправлен (да там вообще много чего было исправлено). Но как же мне так сделать. Вот это вопрос!!
Цитировать Жалоба
LexaR
Мастера
  • публикаций
  • комментариев
так если нужно изменить полностью музыку на уровне, ведь можно просто использовать CMusicEnv , именно она и меняет музыку на уровне когда заходишь в неё. а её можно так же зафризить и запустить когда надо ...
Цитировать Жалоба
Havcom
Мастера
  • публикаций
  • комментариев
Quote
так если нужно изменить полностью музыку на уровне, ведь можно просто использовать CMusicEnv , именно она и меняет музыку на уровне когда заходишь в неё. а её можно так же зафризить и запустить когда надо
Именно когда игрок находится в зоне такого бокса, во время замедления времени или превращения в демона, которое также использует замедление, происходит отключение (падение) музыки. Можно восстановить Ambient, если зайти в опции звука и перетащить ползунок основной громкости на 0, а потом опять на 100, но это не выход из положения.
В Recurring Evil "разрабы" попытались решить проблему (и решили), создав при этом новый баг с музыкой. Поэтому в последствии потом отключили.
Цитировать Жалоба
dilettante
Мастера
  • публикаций
  • комментариев
Quote (Havcom)
Весь этот гемор мне нужен, чтобы победить падение музыки при замедлении


Ок, теперь понятно чего нужно было. Попробуй тогда так:

[spoiler]uSpoilerkIwji1l
kIwji1'
kIwji1'
kIwji1'
kIwji1')).val('Закрыть спойлер');$(
kIwji1'
kIwji1'
kIwji1')).val('Открыть спойлер
');$(
kIwji1'Открыть спойлер
CAction.lua
--============================================================================
function CAction:Action_SetMusic(battlemusic,ambientmusic)
local pcs = GObjects:GetElementsWithFieldValue("BaseName","PMusicFade*")
for i,p in pcs do GObjects:ToKill(p) end

local vol = Cfg.AmbientVolume
local music = Lev._CurMusic.Ambient
local fadeTime = 5
local newsong = ambientmusic

if not Lev._ambient then
vol = Cfg.MusicVolume
music = Lev._CurMusic.Battle
fadeTime = 2
newsong = battlemusic
Lev._ambient = true
else
Lev._ambient = false
end

local prevVolume = SOUND.StreamGetVolume(Lev._freeMSlot)
if Lev._songInSlot[Lev._freeMSlot] == newsong then
SOUND.StreamResume(Lev._freeMSlot)
else
SOUND.StreamLoad(Lev._freeMSlot,newsong)
SOUND.StreamPlay(Lev._freeMSlot)
Lev._songInSlot[Lev._freeMSlot] = newsong
end

AddObject(Templates["PMusicFade.CProcess"]:New(Lev._freeMSlot,prevVolume,vol,fadeTime))
if Lev._freeMSlot == 1 then Lev._freeMSlot = 0 else Lev._freeMSlot = 1 end
AddObject(Templates["PMusicFade.CProcess"]:New(Lev._freeMSlot,SOUND.StreamGetVolume(Lev._freeMSlot),0,fadeTime,"SOUND.StreamPause("..Lev._freeMSlot..");Lev._fade=false"))
Lev._fade = true
Lev._CurMusic.Battle[1] = battlemusic
Lev._CurMusic.Ambient[1] = ambientmusic
end
--============================================================================

file_name.CBox
--============================================================================
o.BaseObj = "AmbushForPlayer.CBox"
o.Actions.OnTouch[1] = "SetMusic:\"new_fight_music\",\"new_ambient_music\""
--============================================================================

Единственное ограничение - в LevelName.Clevel обязательно должны присутствовать строки:

o.Music.Battle[1] = ""
o.Music.Ambient[1] = ""
--============================================================================

Ну, то есть, если в начале не должно быть совсем никакой музыки, то нужны хотя бы пустые массивы. Или придётся добавить соответствующую проверку. А если нет необходимости менять музыку на ходу, а лишь требуется переопределить настройки уровня, то достаточно этого:

function CAction:Action_SetMusic(battlemusic,ambientmusic)
Lev._CurMusic.Battle[1] = battlemusic
Lev._CurMusic.Ambient[1] = ambientmusic
end[/spoiler]

Может, я опять чего недопонял. Поправляйте. :)
Цитировать Жалоба
BlooDFloweR
Администраторы
  • публикаций
  • комментариев
такой вопрос: сделал аи для нового моба на основе скрипта из некровижн и у меня выходит ошибка на эту функцию из CActor:

if ev[1] <= curAnimTime and ev[2] then
self[ev[2]](self,ev[3], ev[4], ev[5], ev[6], ev[7], ev[8], ev[9])
end

как я понял она нужна для нанесения урона (потому что удалил её, ошибок нет но не этот ни другие монстры урона не наносят при атаке). что можно с этим сделать?
Цитировать Жалоба
Havcom
Мастера
  • публикаций
  • комментариев
У меня тоже была эта ошибка. Хотел научить вампиров стрелять.

Quote
function CAction:Action_SetMusic(battlemusic,ambientmusic)
Lev._CurMusic.Battle[1] = battlemusic
Lev._CurMusic.Ambient[1] = ambientmusic
end
Попробовал, всё работает. Именно это мне и нужно было. dilettante, Спасибо за помощь с музыкой, сам бы не допёр. Прощайте MusicEnv боксы DD
Цитировать Жалоба
BlooDFloweR
Администраторы
  • публикаций
  • комментариев
Havcom, а у меня приблемы с атакой на бегу. я конечно могу убрать эту функцию, но тогда после атаки модель будет возвращаться как бы в исходное положение что ни разу не красиво :( неужели никак не исправить?
Цитировать Жалоба
Havcom
Мастера
  • публикаций
  • комментариев
Quote
Havcom, а у меня приблемы с атакой на бегу. я конечно могу убрать эту функцию, но тогда после атаки модель будет возвращаться как бы в исходное положение что ни разу не красиво неужели никак не исправить?
Немного поконкретнее, что за атака на бегу и для кого ты её делаешь?
Цитировать Жалоба

Добавить комментарий

Автору будет очень приятно узнать обратную связь о своей новости.

Мы в ВК

***
Фан группа по игре
Большая группа по игре
Первая группа по игре
menuright2
menuright3
menuright4
Сайт работает под управлением DataLife Engine.
© PainkillerClub.ru 2011-2023 | © Design by Мария Андрюшечкина.