Воскресенье, 05.04.2020, 00:00


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

  • Страница 1 из 33
  • 1
  • 2
  • 3
  • 32
  • 33
  • »
Форум » Модификации Painkiller » Разработка модификаций и контента к ним » Помощь с Lua-скриптами
Помощь с 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





Баян, Если просто добавить уровень, то эта строчка вообще не нужна. wink
 
БаянСреда, 22.02.2012, 20:33 | Сообщение # 7
Новичок
Сообщений: 4
Награды: 0
Репутация: -1
Статус: Offline
А как добавить,чтобы через игру запустить?
 
Str_GhostСреда, 22.02.2012, 20:44 | Сообщение # 8





Через игру карту запускают обычно через Powermad (в консоли набираешь pmloadlevel "названиеуровня", без кавычек) или через PainEditor. А если прямо в игре, то это надо скрипты ковырять, позже посмотрю поподробнее, если хочешь wink
 
БаянСреда, 22.02.2012, 23:05 | Сообщение # 9
Новичок
Сообщений: 4
Награды: 0
Репутация: -1
Статус: Offline
посмотри
 
Str_GhostЧетверг, 23.02.2012, 15:55 | Сообщение # 10





Quote (Баян)
посмотри

Посмотрел. Архив со скриптами я приложил, качай и клади в "/Painkiller/Data/". Скрипт не сам придумал, а нагло стащил из Hills, надеюсь, автор мода меня простит happy Изначально скрипт отвечает за то, что через меню можно запустить карту "Собор".

Изменения в файле 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. Надеюсь, понятно объяснил. Качайте, используйте в своих картах/модах. smile
Прикрепления: LevelLoader.zip(95.4 Kb)
 
ItramariNЧетверг, 23.02.2012, 22:05 | Сообщение # 11
Аластор
Сообщений: 591
Награды: 12
Репутация: 55
Статус: Offline
Quote (Баян)
Я хочу добавить свой уровень в игру

Сингл, мультиплеер? Замена существующей карты или добавление? И не лезь пока в скрипты вообще!


Я люблю людей... особенно - убивать!^__^
 
Str_GhostЧетверг, 23.02.2012, 23:03 | Сообщение # 12





Quote (ItramariN)
Сингл, мультиплеер?

Разумеется сингл, .lua скрипты с настройками уровня прилагаются только к сингл уровням. teehee
 
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 (полиция и хулиганы, в качестве примера), можно там посмотреть как и что. Вобщем, интересно как-то стало! Попробовать чтоли happy Только вот на карточках были нарисованы демоны из мультиплеера, но таких я пока даже не представляю как монстрами засунуть. wacko
 
ItramariNСуббота, 25.02.2012, 17:07 | Сообщение # 15
Аластор
Сообщений: 591
Награды: 12
Репутация: 55
Статус: Offline
Quote (Str_Ghost)
Хотя было бы интересно увидеть восстановленную карточку "Summon Fighter"

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


Я люблю людей... особенно - убивать!^__^
 
Форум » Модификации Painkiller » Разработка модификаций и контента к ним » Помощь с Lua-скриптами
  • Страница 1 из 33
  • 1
  • 2
  • 3
  • 32
  • 33
  • »
Поиск: