Помощь с Lua-скриптами
|
|
Баян | Вторник, 21.02.2012, 20:56 | Сообщение # 1 |
Новичок
Сообщений: 4
Награды: 0
Репутация: -1
Статус: Offline
| В чём ошибка? Как правильно?
|
|
| |
Str_Ghost | Среда, 22.02.2012, 09:08 | Сообщение # 2 |
| Если я не ошибаюсь, то этой строчки вообще быть не должно. Хотя, наверное надо в Language.clevel букву "c" написать большой, должно получиться так: Language.Clevel . Будь осторожен с регистром, кстати, lua не любит когда даже пропускаются заглавные буквы!
P.S. Переместил в более подходящий раздел
|
|
| |
ned18k | Среда, 22.02.2012, 12:55 | Сообщение # 3 |
Страж
Сообщений: 190
Награды: 3
Репутация: 62
Статус: Offline
| Код можно был и простой цитатой вставить, без картинки. Как делают на форумах программистов обычно.
Ошибка может быть много от чего: - нет данных для присвоения - неправильный тип данных - неправильно написан код (ошибки орфографии)
и т.д.
Потом, почему ты считаешь, что ошибка именно в этой строке. К компиляторе (или что там у пк используется) может быть указание на эту строку, а ошибка может быть в другом месте.
Чтобы лучше понять почему ошибка, нужно понимать, что должна делать эта строка. Можешь сказать, что она точно делает?
Добро всегда побеждает зло. Поэтому кто победил, тот и добрый.
Сообщение отредактировал ned18k - Среда, 22.02.2012, 13:04 |
|
| |
ItramariN | Среда, 22.02.2012, 17:42 | Сообщение # 4 |
Аластор
Сообщений: 591
Награды: 12
Репутация: 55
Статус: Offline
| ЛУА различает строчные и прописные буквы, т.е. переменная АБВ и абв - разные переменные. Во вторых, имя класса - CLevel. В третьих, для ответа на данный вопрос недостаточно данных - не указан текст ошибки. В четвертых - строка делает какую-то хрень - в классе CLevel нет и не может быть переменной CLevel, к которой ты обратился. В пятых - обращение к языковым текстам - Languages.Texts[i], как видно из строчки выше. В шестых - отсутствует текст проверки на получение карты, следовательно первые две строчки можно удалить. Quote (ned18k) Потом, почему ты считаешь, что ошибка именно в этой строке. К компиляторе (или что там у пк используется) может быть указание на эту строку, а ошибка может быть в другом месте. ЛУА походу юзает не компилятор, а интерпретатор (первый создает исполняемый файл и доволен. Второй при запуске обрабатывает прогу без создания исполняемого файла). Не в этом суть - если ты что-то неправильно написал, прога тебе скажет, в какой строке ошибка. Но последующие ошибки могут возникнуть из-за самой первой. Итак, если есть вопросы по ошибкам в ЛУА, то выкладываем не только скрипт (желательно помечая измененную вами часть и строку ошибки), но и сообщение Пейнкиллера.
Я люблю людей... особенно - убивать!^__^
|
|
| |
Баян | Среда, 22.02.2012, 19:37 | Сообщение # 5 |
Новичок
Сообщений: 4
Награды: 0
Репутация: -1
Статус: Offline
| Я хочу добавить свой уровень в игру
|
|
| |
Str_Ghost | Среда, 22.02.2012, 20:12 | Сообщение # 6 |
| Баян, Если просто добавить уровень, то эта строчка вообще не нужна.
|
|
| |
Баян | Среда, 22.02.2012, 20:33 | Сообщение # 7 |
Новичок
Сообщений: 4
Награды: 0
Репутация: -1
Статус: Offline
| А как добавить,чтобы через игру запустить?
|
|
| |
Str_Ghost | Среда, 22.02.2012, 20:44 | Сообщение # 8 |
| Через игру карту запускают обычно через Powermad (в консоли набираешь pmloadlevel "названиеуровня", без кавычек) или через PainEditor. А если прямо в игре, то это надо скрипты ковырять, позже посмотрю поподробнее, если хочешь
|
|
| |
Баян | Среда, 22.02.2012, 23:05 | Сообщение # 9 |
Новичок
Сообщений: 4
Награды: 0
Репутация: -1
Статус: Offline
| посмотри
|
|
| |
Str_Ghost | Четверг, 23.02.2012, 15:55 | Сообщение # 10 |
| Посмотрел. Архив со скриптами я приложил, качай и клади в "/Painkiller/Data/". Скрипт не сам придумал, а нагло стащил из Hills, надеюсь, автор мода меня простит Изначально скрипт отвечает за то, что через меню можно запустить карту "Собор".
Изменения в файле PainMenu.lua (ищи в самом низу):
Code function PainMenu:PlaySPMap() local map = "C1L1_Cathedral" local path = "../Data/Levels/C1L1_Cathedral/" local files = FS.FindFiles(path.."*.CLevel",1,0) if table.getn(files)<=0 then CONSOLE.AddMessage("Level 'C1L1_Cathedral' not found!!!") return 0 end CONSOLE.Activate(false) Lev._Name = map EDITOR.PostMessage(1,0) PMENU.MapSetCurrLevel( 1, 1 ) PMENU.SwitchToMenu() PMENU.Activate(false) end
Итак, здесь тебе нужно изменить все "C1L1_Cathedral" на название своего уровня, который и будет грузиться (по названию .lua файла который ты приложил выше, я так понял тебе нужно написать Ruins, обязательно не забудь кавычки!) Code CONSOLE.AddMessage("Level 'C1L1_Cathedral' not found!!!") Эта строчка отвечает за то, что если карта отсутствует, то в консоль будет выведена надпись в скобках. Code if table.getn(files)<=0 then CONSOLE.AddMessage("Level 'C1L1_Cathedral' not found!!!") return 0 end А это отвечает за то, что если карта вдруг не найдётся, то игра ничего не запустит.
Изменения в файле GameMenu.lua:
Code Painkiller = { text = TXT.Menu.Painkiller, desc = "Play Cathedral!", x = -1, y = 300, action = "PainMenu:PlaySPMap()", sndLightOn = "menu/menu/option-light-on_main", },
А это и есть кнопочка, по нажатии которой загрузится наша карта.
P.S. Надеюсь, понятно объяснил. Качайте, используйте в своих картах/модах.
|
|
| |
ItramariN | Четверг, 23.02.2012, 22:05 | Сообщение # 11 |
Аластор
Сообщений: 591
Награды: 12
Репутация: 55
Статус: Offline
| Quote (Баян) Я хочу добавить свой уровень в игру Сингл, мультиплеер? Замена существующей карты или добавление? И не лезь пока в скрипты вообще!
Я люблю людей... особенно - убивать!^__^
|
|
| |
Str_Ghost | Четверг, 23.02.2012, 23:03 | Сообщение # 12 |
| Quote (ItramariN) Сингл, мультиплеер? Разумеется сингл, .lua скрипты с настройками уровня прилагаются только к сингл уровням.
|
|
| |
ItramariN | Пятница, 24.02.2012, 15:20 | Сообщение # 13 |
Аластор
Сообщений: 591
Награды: 12
Репутация: 55
Статус: Offline
| Quote (Str_Ghost) Разумеется сингл, .lua скрипты с настройками уровня прилагаются только к сингл уровням. То, что это сингл понятно, но мало ли что юзверь может написать... А скрипты с настройками теоретически могут прилагаться и к мультиплеерным уровням, только смысла в этом мало. Кстати, Str_Ghost, у тебя помнится идеи для карт Таро были? Излагай, будем думать вместе)
Я люблю людей... особенно - убивать!^__^
Сообщение отредактировал ItramariN - Пятница, 24.02.2012, 15:23 |
|
| |
Str_Ghost | Пятница, 24.02.2012, 20:46 | Сообщение # 14 |
| ItramariN, Идеи? Да вроде не было... Хотя было бы интересно увидеть восстановленную карточку "Summon Fighter". Я так понял, теоритически это так: Призывается (спаунится) уже готовый в папке Template монстр, ходит с игроком и бъёт остальных монстров. Монстров, которые бьют друг друга я видел ещё в Overdose на уровне Riot (полиция и хулиганы, в качестве примера), можно там посмотреть как и что. Вобщем, интересно как-то стало! Попробовать чтоли Только вот на карточках были нарисованы демоны из мультиплеера, но таких я пока даже не представляю как монстрами засунуть.
|
|
| |
ItramariN | Суббота, 25.02.2012, 17:07 | Сообщение # 15 |
Аластор
Сообщений: 591
Награды: 12
Репутация: 55
Статус: Offline
| Quote (Str_Ghost) Хотя было бы интересно увидеть восстановленную карточку "Summon Fighter" Теоретически это более чем возможно - Можно заюзать мультиплеерного бота, а можно обойтись стандартным ИИ, но вот как заставить моба атаковать только монстров - это уже другой вопрос...
Я люблю людей... особенно - убивать!^__^
|
|
| |