Страница 60 из 143 ПерваяПервая ... 1050585960616270110 ... ПоследняяПоследняя
Показано с 591 по 600 из 1426

Тема: Помощь с скриптами (RGSS)

  1. #591
    Маститый Аватар для Andrew
    Информация о пользователе
    Регистрация
    08.02.2011
    Адрес
    Беларусь, Витебск
    Сообщений
    1,049
    Записей в дневнике
    3
    Репутация: 30 Добавить или отнять репутацию

    По умолчанию

    Я ActionScript вообще не знаю, видимо, поэтому не понимаю - а в чем тогда вопрос-то? Совершенно верно: bitmap.bitmapData.getPixel(x, y) == 0x*. В чем проблема то? Или при visible == false, не дают доступ к bitmapData? Или пиксели всегда прозрачные? В чем суть вопроса, поясни.
    Ну во превых мне кажеться что БитмапДата будет заплнена тем цветом, который мы ей дали, а во вторых как обращаться к битмап. Он ведь только в библиотеке. У него нет InstanceName


  2. #592

    По умолчанию

    Цитата Сообщение от ReDS Посмотреть сообщение
    Хм... действительно зачем) Я подумал что из-за того что в методе есть параметр @tile_id будет ошибка при использовании с $game_player, оказалось что норм работает.
    Нет, при наследовании переменные экземпляра также наследуются.

    Andrew
    И опять я тебя не понимаю.
    Ну во превых мне кажеться что
    Ты сделал четыре ошибки: "Ну, во-первых, мне кажется, что"
    БитмапДата будет заплнена тем цветом, который мы ей дали
    А какой, пардон, цвет ты хочешь получить?! О_о Который ты ей не давал? Случайный цвет? Wakaranaii!
    как обращаться к битмап. Он ведь только в библиотеке. У него нет InstanceName
    Тут, либо я тебя не понимаю, либо я не знаю каких-то основ AS, либо ты чего-то не понимаешь. Надеюсь, что все-таки ты, ибо тогда я тебе способен ответить:
    В AS есть класс Bitamp, который служит для вывода изображений. В AS есть класс BitmapData - матрица цветов, выводимого изображения. Обе они содержат публичные конструкторы, следовательно могут быть созданы.
    Например так:
    Код:
    var data:BitmapData = new BitmapData(640, 480, false, 0xFFFFFFFF);
    var bitmap:Bitmap = new Bitmap(data);
    Далее, у класса Bitmap есть публичное свойство bitmapData, доступное для чтения и записи. Соответственно уже установленную bitmapData ты можешь извлечь из существующего Bitmap'а.
    У BitmapData, в свою очередь, есть публичный метод getPixel(x, y) : uint, который вернет цвет пикселя в виде беззнакового числа, которое ты можешь превратить в строку. Например так:
    Код:
    var data:BitmapData = new BitmapData(320, 240, true, 0xFFFF00FF);
    var bitmap:Bitmap = new Bitmap(data);
    var color:String = bitmap.bitmapData.getPixel(22, 44).toString(16);
    И дальше как угодно над ним извращаться. Итого: я по-прежнему не понимаю сути вопроса.

    P.S.
    1) Если проходимость ты проверяешь с помощью BitmapData, но сам Bitmap при этом не используешь (ты сказал, что Bitmap у тебя невидимый), то зачем собственно нужен Bitmap? Используй напрямую экземпляр BitmapData.
    2) А нахрена использовать BitmapData невидимого Bitmap'а, если можно просто построить массив array[x, y] и заполнить его значениями проходимости?

  3. #593
    Маститый Аватар для Andrew
    Информация о пользователе
    Регистрация
    08.02.2011
    Адрес
    Беларусь, Витебск
    Сообщений
    1,049
    Записей в дневнике
    3
    Репутация: 30 Добавить или отнять репутацию

    По умолчанию

    Я говорил не про класс Битмап, а про флэшовский Битмап(типа Клип, Кнопка).)))
    А во вторых, как мне имея битмап, заполнить битмапДата также по цвету(там где чёрный в битмап, там чёрный в битмап дата)?

    "2) А нахрена использовать BitmapData невидимого Bitmap'а, если можно просто построить массив array[x, y] и заполнить его значениями проходимости? "
    как, вручную(640*320)?


  4. #594
    Бывалый Аватар для Soliд
    Информация о пользователе
    Регистрация
    24.04.2011
    Адрес
    Далеко за горами
    Сообщений
    907
    Записей в дневнике
    5
    Репутация: 32 Добавить или отнять репутацию

    По умолчанию

    Люди, подскажите как создавать вещи для новых слотов?
    Спойлер Тыц:
    PHP код:
    =begin
    Custom Equipment Slots Script
    by Fomar0153
    Version 1.1
    ----------------------
    Notes
    ----------------------
    No requirements
    Allows you to customise what equipment characters can equip
    e
    .gadd new slots or increase the number of accessories.
    ----------------------
    Instructions
    ----------------------
    You will need to edit the script in two locations both are near
    the top of the script look 
    for:
    Slots[7] = "Spell Tomes"
    return [0,0,2,3,4,4,4,7] if dual_wield?
    and 
    follow the instructions where they are.
    ----------------------
    Changle Log
    ----------------------
    1.0 -> 1.1 Fixed a bug that caused a crash when equipping a weapon.
    ----------------------
    Known bugs
    ----------------------
    None
    =end
    #--------------------------------------------------------------------------
    # ● New Module Extra_Slots
    #--------------------------------------------------------------------------
    module Extra_Slots

      Slots 
    = []
      
    # Edit here to add new slot types
      # Slots[armour_type_id] = "name"
      # I know it is named in the database but I don't believe you can access
      # that name through Vocab
      
    Slots[7] = "Книга"
      
    Slots[8] = "Тотем"
      

    end

    class Game_Actor Game_Battler
      
    #--------------------------------------------------------------------------
      # ● Rewrites equip_slots
      #--------------------------------------------------------------------------
      # Edit here to change what slots are available to your characters
      # 0 - Weapon
      # 1 - Shield
      # 2 - Head
      # 3 - Body
      # 4 - Accessory
      # 5+ a custom slot
      
    def equip_slots
        
    return [0,0,2,3,4,4,4,7,8] if dual_wield?
        return [
    0,1,2,3,4,4,4,7,8]
      
    end
      
    #--------------------------------------------------------------------------
      # ● Rewrites change_equip
      #--------------------------------------------------------------------------
      
    def change_equip(slot_iditem)
        return 
    unless trade_item_with_party(itemequips[slot_id])
        if 
    item == nil
          
    return if item && equip_slots[slot_id] != item.etype_id
        
    else
          if 
    item.is_a?(RPG::Armor)
            if 
    Extra_Slots::Slots[item.atype_id] == nil
              
    return if item && equip_slots[slot_id] != item.etype_id
            
    else
              return if 
    item && equip_slots[slot_id] != item.atype_id
            end
          
    else
            return if 
    item && equip_slots[slot_id] != item.etype_id
          end
        end
        
    @equips[slot_id].object item
        refresh
      end
      
    #--------------------------------------------------------------------------
      # ● Rewrites release_unequippable_items
      #--------------------------------------------------------------------------
      
    def release_unequippable_items(item_gain true)
        @
    equips.each_with_index do |itemi|
          if !
    equippable?(item.object) || item.object.etype_id != equip_slots[i]
            if 
    item.is_armor?
              
    unless Extra_Slots::Slots[equip_slots[i]] == nil
                unless item
    .object.atype_id == equip_slots[i]
                  
    trade_item_with_party(nilitem.object) if item_gain
                  item
    .object nil
                end
              
    else
                
    trade_item_with_party(nilitem.object) if item_gain
                item
    .object nil
              end
            
    else
              
    trade_item_with_party(nilitem.object) if item_gain
              item
    .object nil
            end
          end
        end
      end
    end

    class Window_EquipSlot Window_Selectable
      
    #--------------------------------------------------------------------------
      # ● Rewrites slot_name
      #--------------------------------------------------------------------------
      
    def slot_name(index)
        if @
    actor.equip_slots[index] >= 5
          Extra_Slots
    ::Slots[@actor.equip_slots[index]]
        else
          @
    actor Vocab::etype(@actor.equip_slots[index]) : ""
        
    end
      end
    end

    class Window_EquipItem Window_ItemList
      
    #--------------------------------------------------------------------------
      # ● Rewrites include?
      #--------------------------------------------------------------------------
      
    def include?(item)
        return 
    true if item == nil
        
    return false unless item.is_a?(RPG::EquipItem)
        return 
    false if @slot_id 0
        
    if item.is_a?(RPG::Armor)
          if 
    Extra_Slots::Slots[item.atype_id] == nil
            
    return false if item.etype_id != @actor.equip_slots[@slot_id]
          else
            return 
    false if item.atype_id != @actor.equip_slots[@slot_id]
          
    end
        
    else
          return 
    false if item.etype_id != @actor.equip_slots[@slot_id]
        
    end
        
    return @actor.equippable?(item)
      
    end
    end

    class Scene_Equip Scene_MenuBase
      
    #--------------------------------------------------------------------------
      # ● Aliases create_slot_window
      #--------------------------------------------------------------------------
      
    alias custom_slots_create_slot_window create_slot_window
      def create_slot_window
        custom_slots_create_slot_window
        
    @slot_window.create_contents
        
    @slot_window.refresh
      end
      
    #--------------------------------------------------------------------------
      # ● Aliases on_actor_change
      #--------------------------------------------------------------------------
      
    alias custom_slots_on_actor_change on_actor_change
      def on_actor_change
        custom_slots_on_actor_change
        
    @slot_window.create_contents
        
    @slot_window.refresh
      end
    end 

  5. #595
    Маститый Аватар для Andrew
    Информация о пользователе
    Регистрация
    08.02.2011
    Адрес
    Беларусь, Витебск
    Сообщений
    1,049
    Записей в дневнике
    3
    Репутация: 30 Добавить или отнять репутацию

    По умолчанию

    return [0,0,2,3,4,4,4,7,8] if dual_wield?
    return [0,1,2,3,4,4,4,7,8]
    Я не уверен, но помойму это ид


  6. #596
    Познающий Аватар для 100500
    Информация о пользователе
    Регистрация
    22.05.2011
    Сообщений
    323
    Записей в дневнике
    14
    Репутация: 19 Добавить или отнять репутацию

    По умолчанию

    Блин, ёкарный бабай! Soliд, вот сказал бы сразу, что скрипт для VX Ace, я б тебе сразу ответил, а не ерундой занимался!
    Короче, смотри. В VX Ace появилась функция создавать типы оружия и брони, то есть, например, те же щиты теперь можно разделить ещё и на несколько категорий. Впрочем, раз ты пользуешься Ace, наверное ты об этом знаешь.
    Вот эта строчка в скрипте - Slots[7] = "Книга" - означает, что создав новую категорию брони/аксессуаров под номером 7, ты сможешь одевать предметы из этой категории в слот "Книга". C "тотемами" поступаем аналогично, создав категорию брони/аксессуаров под номером 8. Вот тебе картинка для наглядности:
    Спойлер Клац!:

    Если вдруг непонятно, могу запилить демо-версию
    Последний раз редактировалось 100500; 08.02.2012 в 00:35.

  7. #597

    По умолчанию

    Цитата Сообщение от Andrew Посмотреть сообщение
    Я говорил не про класс Битмап, а про флэшовский Битмап(типа Клип, Кнопка).)))
    А во вторых, как мне имея битмап, заполнить битмапДата также по цвету(там где чёрный в битмап, там чёрный в битмап дата)?

    "2) А нахрена использовать BitmapData невидимого Bitmap'а, если можно просто построить массив array[x, y] и заполнить его значениями проходимости? "
    как, вручную(640*320)?
    Да вы извращенец, батенька. Нет, можешь конечно погуглить на предмет создания скриншотов во флеше, но это очень плохая идея. Есть класс Bitmap, который выводит картинки. Подцепить его (или BitmapData) в качестве исходника к какому-нибудь контролу, способному его корректно отображать, думаю, также не составит труда. Один из первых запросов в гугле, аля "actionscript gallery" выдаст тебе ссылку на подробную статью с примерами кода. Например, эту: http://flashexplained.com/actionscri...ry-in-flash-8/

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

  8. #598
    Познающий Аватар для 100500
    Информация о пользователе
    Регистрация
    22.05.2011
    Сообщений
    323
    Записей в дневнике
    14
    Репутация: 19 Добавить или отнять репутацию

    [VX] Скриптопроблемы

    С некоторых пор начала выскакивать ошибка в скрипте боёвки.
    ---------------------------
    Kurse Kingdom Knights
    ---------------------------
    Script 'Window_Message' line 172: TypeError occurred.

    can't clone NilClass
    ---------------------------
    ОК
    ---------------------------
    Указанная строка содержит такие данные:
    @text += $game_message.texts[i].clone + "\x00"
    Может быть кто-то сможет вот так, не глядя в скрипт, определить, из-за чего такая беда? Мейкер - VX.
    Ошибка появляется не в битве, а при выводе сообщения после битвы. Скрипт позволяет выводить сообщения, содержащие реплики героев, которые комментируют получение опыта и уровней, или изучение навыков. Сообщений для каждого героя много, но показывается лишь одно, выбираемое случайным образом.
    Ошибка появляется не всегда, видимо, только в одной или нескольких репликах что-то не так.
    Последний раз редактировалось 100500; 08.02.2012 в 02:46.

  9. #599

    По умолчанию

    Он же написал: "не могу клонировать несуществующий объект". Это значит, что в массиве $game_message.texts существует запись с номером i, но ее значение не установлено. Не знаю\не помню, что хранится в $game_message.texts, предполагаю, что строки текущего сообщения. В этом случае, есть несколько вариантов. Наиболее очевидный - ругается на последнюю строку, перед которой стоит символ перевода, но сама строка пустая. Возможны и другие варианты. Опять же, если ты в последнее время прикручивал какие-нибудь скрипты альтернативного вывода сообщений - могли повлиять и они, переопределив механизмы вывода текста.
    Костыль:
    Код:
    @text += $game_message.texts[i].clone + "\x00"  if ($game_message.texts[i] != nil)

  10. #600
    Познающий Аватар для 100500
    Информация о пользователе
    Регистрация
    22.05.2011
    Сообщений
    323
    Записей в дневнике
    14
    Репутация: 19 Добавить или отнять репутацию

    По умолчанию

    Equilibrium Keeper, спасибо, снова выручил! Вроде бы помогло - сколько ни тестил, ещё не вылетало.
    Опять же, если ты в последнее время прикручивал какие-нибудь скрипты альтернативного вывода сообщений - могли повлиять и они, переопределив механизмы вывода текста.
    Вот теперь задумался. Недавно прикручивал Neo Message System 3 (по-моему, так называется), и после этого вроде как ошибка и стала появляться. Однако эту систему я удалил, даже не из-за ошибки, а из-за ненужности.
    Может ли такое быть, что ошибка была вызвана тем скриптом системы сообщений, и осталась даже после её удаления?

Страница 60 из 143 ПерваяПервая ... 1050585960616270110 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •