Воскресенье, 28.04.2024, 19:50


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Форум » Модификации Painkiller » Разработка модификаций и контента к ним » Помощь с Lua-скриптами (Задаем вопросы, отвечаем.)
Помощь с Lua-скриптами
scorcherВторник, 19.06.2012, 11:19 | Сообщение # 61
Страж
Сообщений: 179
Награды: 3
Репутация: 17
Статус: Offline
Quote
scorcher, а может, имеет смысл переиндексировать карты и не делать разрыв посередине набора, сдвинув Addon-карты в конец списка?

Я об этом подумал - но тогда придется переписывать принадлежность карт во всех
levels/название_уровня.lua - правильно я понимаю?

Для тех кто будет работать с уровнями (привык к прежним индексам) - эта переиндексация станет сильным головняком, а разрыв я думаю не особо страшно - но конечно же у порядочного програмера такой способ должен вызывать бурю негодования :D

А так я смогу сделать пока сделать временный патч из трех скриптов и текстур доски/новых карт, который каждый сможет поставить поверх супернатурала (поверх ориганала наверно не пойдет - там по-мойму Святослав тоже что-то в Game.lua нашаманил :) ).

К вечеру уже будет готово и выложу - текстуру доски уже сделал и код прописал, осталось только карты подкрасить.

Добавлено (19.06.2012, 07:55)
---------------------------------------------
Счас дорабатывая game.lua - я обнаружил странную вещь, сверил несупернатуральским game.lua (из ориг.игры) - там тоже самое. А именно действие карты double time bonus закомментирвано - интересно раньше кто-нибудь замечал, что она не работает eek

Добавлено (19.06.2012, 11:19)
---------------------------------------------
Вот блин :( , уже все сделал, и опять я столкнулся с одной проблемой:
Все карты, которые занимают в таблицах:


19-й, 20-й и так далее... слоты - не могут быть взяты с доски. То есть они на ней отображаются (в смысле текстуры), но прилипли намертво, даже при наведении мыши - не вылазит подсказка по ним. Хотя везде прописано, что слотов 20.
Судя по тому что карты отображаются, то дело не в таблицах, уж не в движке ли прописано подобное ограничение?
 
SviatoslavВторник, 19.06.2012, 16:30 | Сообщение # 62
Люцифер
Сообщений: 537
Награды: 22
Репутация: 130
Статус: Offline
dilettante, печаль... Мне эти мысли приходили в голову, но я надеялся, что ошибался. %)
scorcher, я исправлял этот косяк с неработающим двойным бонусом времени в небольшом патчике ещё года три назад. Сейчас посмотрел в свой Game.lua - у меня строчка раскомментирована. :) Может, ты перенёс этот файл из оригинала, когда возвращал вырезанные мной карты?


Модификации: Painkiller: Supernatural и Portal: Supernatural

Сообщение отредактировал Sviatoslav - Вторник, 19.06.2012, 17:17
 
dilettanteВторник, 19.06.2012, 19:43 | Сообщение # 63
PK_GOD_and_KING
Сообщений: 170
Награды: 34
Репутация: 145
Статус: Offline
Индексация вещь вообще условная. Ну, да, придётся подправить немного здесь, чуть-чуть там. Но в данном случае речь идет не столько об индексации, сколько о таблицах слотов. А с учётом вновь вскрывшихся обстоятельств
Quote (scorcher)
19-й, 20-й и так далее... слоты - не могут быть взяты с доски

(и это уже действительно не зависит от сценариев, как и разрядность "колёс"), тем более имеет смысл, навести порядок.

В результате задействовать 15 слотов (30 карт) в оригинальной части и 18 слотов (36 карт) - в Addon-части, выведя на доску только 26 карт из числа первых 30. Таким образом, можно будет опробовать 40 карт Таро.

Quote (scorcher)
действие карты double time bonus закомментирвано - интересно раньше кто-нибудь замечал

Да, это известный промах, который тянется ещё с версии 1.0, и почему-то так и не был устранён даже в 1.64. Наверное в этом есть какой-то тайный смысл :D .
 
scorcherСреда, 20.06.2012, 02:35 | Сообщение # 64
Страж
Сообщений: 179
Награды: 3
Репутация: 17
Статус: Offline
Quote
тем более имеет смысл, навести порядок.

Это не имеет значения... Я всяко пробовал. В принципе-то без разницы как я буду распределять картв по оригиналу и аддону, все равно карта должна быть прописана в таблицах:
timeCards =
{...}
permCards =
{...}
Quote
В результате задействовать 15 слотов (30 карт) в оригинальной части и 18 слотов (36 карт) - в Addon-части, выведя на доску только 26 карт из числа первых 30. Таким образом, можно будет опробовать 40 карт Таро

Идея хорошая, мне она тоже приходила в голову, но за вывод карт отвечает их индекс, а все равно все карты должны быть включены в таблицу. И не важно что за индекс у карты, если она стоит на 19+ месте в таблице - она оказывается вот такой мертвой - и не важно в каком порядке или режиме она выводится :(
Quote
этот файл из оригинала, когда возвращал вырезанные мной карты?

Ну да :) , но не совсем - я сравнивал их на тотал командоре, и переносил туда твои скриптовые доработки, оставляя нетронутой ту часть, которая отвечает за карты Таро.
П.С. Буду еще пробовать, но у меня плохое предчувствие, а жаль я такие прикольные карты наделал, да и овердосовские перебалансировал:
 
scorcherСреда, 20.06.2012, 03:01 | Сообщение # 65
Страж
Сообщений: 179
Награды: 3
Репутация: 17
Статус: Offline
dilettante
Слушай мне сейчас пришла в голову оригинальная идея. Сделать две таблицы, которые будут грузиться в зависимости от режима:



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

П.С. А вот, кстати, что у меня получилось с текстурами:
Прикрепления: 3980414.jpg (244.1 Kb) · 5543411.jpg (258.4 Kb) · 6600233.jpg (259.3 Kb)


Сообщение отредактировал scorcher - Среда, 20.06.2012, 04:18
 
dilettanteСреда, 20.06.2012, 05:39 | Сообщение # 66
PK_GOD_and_KING
Сообщений: 170
Награды: 34
Репутация: 145
Статус: Offline
То, что карты "оригинала" и AddOn'а необходимо разделить по условию, даже не обсуждается, ведь списки слотов будут иметь перекрытие. Просто, на мой взгляд, намного удобнее это делать, когда карты, находящиеся в конце линейки имеют и более высокий номер индекса.
Во-первых, это поможет избежать путаницы, о которой ты, кстати, и сам говоришь.
Во-вторых, уберёт условия типа "меньше или больше".
Ну, и просто, код, даже если в нём пара строчек, должен быть не только рабочим, но и целесообразным, если не сказать больше - изящным. Поэтому и стоит упорядочить индексы, но как говорится, хозяин-барин. Как тебе удобней всё это увязывать, так и делай.

Добавлено (20.06.2012, 05:39)
---------------------------------------------
scorcher, по коду под спойлером. Да, как вариант вполне. Только, наверное, лучше вот так:

if Game.AddOn then
MagicCards =
{
timeCards ={},
permCards ={}
}
else
MagicCards =
{
timeCards ={},
permCards ={}
}
end

То есть, разнести слоты по разным таблицам не прибегая к переименованию. При этом будет меньше исправлений в MagicBoard:Setup() & MagicBoard_UpdateCardsStatus() и в Game.lua, где к таблице с именем MagicCards обращение происходит трижды.

Ага, и по скриншотам :) , не то чтобы критика, но может будет красивее, если под каждой карточкой будет своё "пятнышко", а не сплошная полоса под всеми. Как думаешь? ;)


Сообщение отредактировал dilettante - Среда, 20.06.2012, 19:52
 
scorcherСреда, 20.06.2012, 06:26 | Сообщение # 67
Страж
Сообщений: 179
Награды: 3
Репутация: 17
Статус: Offline
dilettante
уже вовсю занимаюсь переиндексацией и переслотизацией если можно так выразится.
Почти все сделал :)

Теперь вот нужно сделать так чтобы два перекрестных слота в таблице, не переходили в режим аддона.

То есть, например:
14 и 15 слоты по сереб. картам в оригинале - это дважды использовать карты и 150 нач. здоровья
В таблице аддона эти карты я исключил - на их месте реген. здоровья и брони.
Теперь ситуация такая - мы прошли оригинал получили дважды_исп_карты и 150_нач_здор, запускаем режим аддона и открытыми там у нас оказываются рег_здор и рег_брони - потому что там они занимают эти слоты.

Мне кажется тут надо что-то нашаманить с
function MagicBoard_UpdateCardsStatus()
...
if o.index ... then
Game.CardsSelected[o.index] = not MBOARD.IsCardInSlot(
...

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

Quote
но может будет красивее, если под каждой карточкой будет своё "пятнышко", а не сплошная полоса под всеми. Как думаешь?

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

Добавлено (20.06.2012, 06:26)
---------------------------------------------
Предложенная тобой схема не работает:

Quote
if Game.AddOn then
MagicCards =
{
timeCards ={}
permCards ={}
}
else
MagicCards =
{
timeCards ={}
permCards ={}
}
end


мы же обращаемся к функциям загрузки этих таблиц, уже после того как загружен MagicBoard.lua, а когда она загружается естественно Game.AddOn = false, поэтому в режиме аддона, все остается как и в оригинале.

Оставил:
MagicCards
MagicCards1
 
dilettanteСреда, 20.06.2012, 12:15 | Сообщение # 68
PK_GOD_and_KING
Сообщений: 170
Награды: 34
Репутация: 145
Статус: Offline
Quote (scorcher)
Предложенная тобой схема не работает... в режиме аддона, все остается как и в оригинале.


Да, верно MagicBoard.lua грузится единожды, этот момент я упустил из вида, но это можно поправить, например, так:
========================================
MagicBoard.lua

function MagicBoard:Setup()
DoFile("../Data/LScripts/HUD/MagicBoard.lua")
...
end
========================================
Game.lua

function Game:LoadLevel(name)
DoFile("../Data/LScripts/HUD/MagicBoard.lua")
...
end
========================================
 
scorcherСреда, 20.06.2012, 13:22 | Сообщение # 69
Страж
Сообщений: 179
Награды: 3
Репутация: 17
Статус: Offline
Quote
но это можно поправить, например, так

Да все-таки лучше пусть лучше будет одна таблица, а то game.lua выдает какие-то сбои с двумя таблицами - я толком не разобрался...

Ну теперь остается только придумать что-то с пересекающимися слотами.

Я хочу сделать, чтобы они затирались, когда начинаешь играть в аддон.

В каком файле прописаны действия которые происходят при начале новой игры (ну например спрашивается "стереть ли имеющиеся карты") ?
 
dilettanteСреда, 20.06.2012, 20:07 | Сообщение # 70
PK_GOD_and_KING
Сообщений: 170
Награды: 34
Репутация: 145
Статус: Offline
Quote (scorcher)
Ну теперь остается только придумать что-то с пересекающимися слотами.

scorcher, давай мы сделаем так. Ты скинешь файлы со своими наработками, а я посмотрю, в чём проблема. По обрывкам кода не могу составить общую картину и сказать что-либо вразумительное.

Добавлено (20.06.2012, 20:07)
---------------------------------------------
Собственно, нужны только твои Game.lua и MagicBoard.lua. Не знаю, можно ли тут как-то в личку отослать файл, чтобы не маячить им пока он ещё сырой. Может Str_Ghost просветит меня по поводу прикрепления и пересылки файлов.

 
Str_GhostСреда, 20.06.2012, 21:41 | Сообщение # 71





Quote (dilettante)
Может Str_Ghost просветит меня по поводу прикрепления и пересылки файлов

Прикреплять файлы можно не более чем весом 2000 КБ. Чуть выше кнопки "Добавить ответ" можно прикрепить файлы. Думаю, на пару .txt'шек сойдёт. Только файлы по-толще выкладывайте на "narod.ru" или любой другой бесплатный файлообменник, какой удобно (если ссылка публичная, т.е. для всех, то постарайтесь не выкладывать на DepositFiles). А то место на сайте не бесконечное ^_^
 
scorcherЧетверг, 21.06.2012, 03:12 | Сообщение # 72
Страж
Сообщений: 179
Награды: 3
Репутация: 17
Статус: Offline
dilettante
Ты уж извини что заморачиваю, вообщем глянь как время будет вот тут текстуры
ссылка
если надо
А это старые версии скриптов, где я еще хотел 40 карт одновременно, но 2 последних слота прилипали
Прикрепления: LScripts.rar (34.2 Kb)
 
scorcherЧетверг, 21.06.2012, 03:23 | Сообщение # 73
Страж
Сообщений: 179
Награды: 3
Репутация: 17
Статус: Offline
А вот здесь новые.
Сделал переиндексацию и условие выбора таблицы, массив сжал с 40 до 36...

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

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

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

Но ты все равно глянь на досуге, может что напортачил по неопытности, заранее спасибо
Прикрепления: NewLScripts.rar (34.3 Kb)
 
dilettanteПятница, 22.06.2012, 23:37 | Сообщение # 74
PK_GOD_and_KING
Сообщений: 170
Награды: 34
Репутация: 145
Статус: Offline
Str_Ghost, спасибо, за разъяснения. Но, как я понимаю нельзя сначала положить файл на форум, а потом уже в сообщении дать на него ссылку. Файл отобразится просто как присоединённый. Или я не прав?

scorcher, вот я сделал для тебя своего рода шаблон расширенной доски на базе 1.64. То есть, сохранены оригинальные карты, плюс добавлены места для новых 6 карт. Вроде бы ничего не упустил. Ну, в общем, посмотри, думаю, разберешься, что к чему.
 
Str_GhostПятница, 22.06.2012, 23:53 | Сообщение # 75





 
Форум » Модификации Painkiller » Разработка модификаций и контента к ним » Помощь с Lua-скриптами (Задаем вопросы, отвечаем.)
Поиск: