Войти на сайт

Авторизация, ждите ...
×
Правила раздела:
1 Задавайте конкретные вопросы. Для болтовни есть свободный раздел.
2 По возможности давайте конкретные ответы.
3 Один вопрос=одна тема. Если хотите задать ещё вопрос, то начинайте новую тему.
4 Название темы должно составлять сам вопрос, и быть максимально конкретным. Рекомендуется начинать тему словами "Как", "Что", "Почему". А первый пост повторяет вопрос и даёт расширенные сведения.
5 Рекомендуется указывать версию мейкера (2000, 2003, RMXP, RMVX, ACE, IGM, и.т.д.. Это важно, и всё равно ведь спросят.
6 Темы "Пара вопросов", "Помогите", и подобные им - самый лёгкий путь к бану.
7 Поиск находится вверху справа.
А. Названия подразделов этого раздела уточняются. Советы принимаются.

ТЕМА: [Ace] Вызов скрипта и заметки предметов

[Ace] Вызов скрипта и заметки предметов 7 года 2 мес. назад #95710

  • Paranoid
  • Paranoid аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 688
  • Спасибо получено: 350
Можно ли через вызов скрипта узнать что написано в тегах его экипированного оружия?
Администратор запретил публиковать записи гостям.

[Ace] Вызов скрипта и заметки предметов 7 года 2 мес. назад #95713

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • 3 место1 место в ГотвПисатель 3 местоПрограммист RubyВетеранУчительОрганизатор конкурсовПроект месяца 1 местоПроект месяца 2 место
Можно. Если написать парсер тегов, чтобы узнать, какие значения под каждым тегом находятся.

Получение тегов экипированного оружия происходит вот так (пример для лидера партии):
$game_party.leader.equips.each { |item|
  if item.is_a? RPG::Weapon
    # тут проверка тегов должна быть
  end
}

Но вот значение тегов можно получить, если напишешь список всех тегов с примерами. Тогда можно парсер написать и даже в функцию завернуть, чтобы вызов скрипта одной строкой производился.
Последнее редактирование: 7 года 2 мес. назад от DeadElf79.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Paranoid

[Ace] Вызов скрипта и заметки предметов 7 года 2 мес. назад #95715

  • Paranoid
  • Paranoid аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 688
  • Спасибо получено: 350
Хм, я думал можно как-то проще.

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

[Ace] Вызов скрипта и заметки предметов 7 года 2 мес. назад #95716

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • 3 место1 место в ГотвПисатель 3 местоПрограммист RubyВетеранУчительОрганизатор конкурсовПроект месяца 1 местоПроект месяца 2 место
Способа проще нет. Напишу, скину сюда же.
Администратор запретил публиковать записи гостям.

[Ace] Вызов скрипта и заметки предметов 7 года 2 мес. назад #95717

  • Paranoid
  • Paranoid аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 688
  • Спасибо получено: 350
Нашел у Амфи код для нотов, только во уроков по нему он не делал - rpgmaker.ru/forum/svobodnyj/59321-labora...khiya?start=20#95048

Я так понял чтобы получить ноты можно использовать его Amphicore::TextParser.get_note(item), где item это айди предмета. Но что в таком случае получится?
Администратор запретил публиковать записи гостям.

[Ace] Вызов скрипта и заметки предметов 7 года 2 мес. назад #95718

  • Amphilohiy
  • Amphilohiy аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 547
  • Спасибо получено: 666
  • 2 место ГотвУчительПобедитель Сбитой кодировкиПрограммист RubyОратор
Увы, это не айди предмета, а сам предмет, ибо таких нотов есть и у состояний, и у оружий и у доспехов... Так что цепляй сам через $data_items[id]
Есть вроде как манул. Надо оформлять особым образом, и в мануле описано как. Но в целом результат такой (опять же по манулу)
Вот текст записки:
Amphicore::TextParser.parse_text("
Файербол требует газ, конечно же
<item> require_item 16 => 1 <end>
Ну и анимация конечно же
<item> cast_animation 4 
<+> fail_animation 7 <end>
Я забыл что делает этот ключ, но без него все ломается
<item> sacrifice_to_baal blood of virgin", 
Amphicore::TextParser::NOTE_PARSEKIT)
Результатом будет хэш:
{:require_item => "16 => 1", :cast_animation => "4", :fail_animation => "7", :sacrifice_to_baal => "blood of virgin"}
get_note автоматом берет парскит от нот, ну и сам смотрит в свойство note записи.
Я верю, что иногда компьютер сбоит, и он выдает неожиданные результаты, но остальные 100% случаев это чья-то криворукость.
Последнее редактирование: 7 года 2 мес. назад от Amphilohiy.
Администратор запретил публиковать записи гостям.

[Ace] Вызов скрипта и заметки предметов 7 года 2 мес. назад #95719

  • Paranoid
  • Paranoid аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 688
  • Спасибо получено: 350
Но ты ведь нигде не кидал мануалов или ты про какой-то другой?
Суть в чем, я получаю id оружия и должен получить ноты, в которых прописаны id скиллов. В нотах, например, написано <skill: 1>.
Администратор запретил публиковать записи гостям.

[Ace] Вызов скрипта и заметки предметов 7 года 2 мес. назад #95720

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • 3 место1 место в ГотвПисатель 3 местоПрограммист RubyВетеранУчительОрганизатор конкурсовПроект месяца 1 местоПроект месяца 2 место
Я уже всё написал. Вот, пользуйся. В заметки оружия на каждой отдельной строке пиши skill: 1 (вместо 1 - любое число).
# de79 equips skillz
def weapon_skill_array(id)
  array = []
  $data_weapons[id].note.split(/\n/).each do |line|
    if line =~ /skill:[\s]*[\d+]/
      array.push $1.to_i
    end
  end
  array
end
 
def learn_skill_array(actor_id,array)
  array.each{|skill_id| $game_actors[actor_id].learn_skill(skill_id)}
end
 
def forget_skill_array(actor_id,array)
  array.each{|skill_id| $game_actors[actor_id].forget_skill(skill_id)}
end

Вызов скриптов для изучения такой:
array = weapon_skill_array(123)
learn_skill_array(456,array)

А для забывания такой:
array = weapon_skill_array(123)
forget_skill_array(456,array)

123 - номер оружия из БД. 456 - номер актера из БД.
Последнее редактирование: 7 года 2 мес. назад от DeadElf79.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Paranoid

[Ace] Вызов скрипта и заметки предметов 7 года 2 мес. назад #95721

  • Amphilohiy
  • Amphilohiy аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 547
  • Спасибо получено: 666
  • 2 место ГотвУчительПобедитель Сбитой кодировкиПрограммист RubyОратор
Вот тебе недоманул, он там же в гите.
И тут оформление идет иначе
<item> skill 1 <end>
Закрывать не обязательно, но можно.
Потом делаем Amphicore::TextParser.get_note($data_items[id]) и получаем
{:skill => 1}
PS все по памяти.
Я верю, что иногда компьютер сбоит, и он выдает неожиданные результаты, но остальные 100% случаев это чья-то криворукость.
Последнее редактирование: 7 года 2 мес. назад от Amphilohiy.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Paranoid

[Ace] Вызов скрипта и заметки предметов 7 года 2 мес. назад #95722

  • Paranoid
  • Paranoid аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 688
  • Спасибо получено: 350
Я не думал что это будет сложно, но это прям очень быстро было. Спасибо эльф. Буду разбираться. По сути хотелось бы сделать скрипт самостоятельным.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: DeadElf79, Amphilohiy
Время создания страницы: 0.316 секунд