Плохо! Плохо!:  0
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 14

Тема: Лица 1.0

  1. #1
    Создатель Аватар для Рольф
    Информация о пользователе
    Регистрация
    14.04.2008
    Адрес
    Южно- Сахалинск/Пенза
    Сообщений
    10,081
    Записей в дневнике
    2
    Репутация: 108 Добавить или отнять репутацию

    По умолчанию Лица 1.0

    Лица 1.0

    Автор: Рольф (я)
    Описание: скрипт меняет убогую графику движения в меню, на аватары. Скрипт я писал к статье в журнал светлой. Единственное отличие то, что в статье я объяснял путем изменения стандартных, а тут достаточно вставить в отдельную ячейку. Так же как и многие скрипты.
    Скрипт:
    Спойлер 1:
    Код:
    #==============================================================================
    #Скрипт Лица версия 1.0 28.05.08
    #Автор Гриднев Александр (Рольф)
    #Скрипт меняет в главном меню графику героев на аватары.
    # Аватары должны называться как чары героев только с дополнением которое 
    # прописываеться в $li = "а". В нашем случае а. Находиться в папке Characters.
    #==============================================================================
    $li = "а" #дополниние к названию
    
    class Window_Base < Window
    
      def initialize(x, y, width, height)
        super()
        @windowskin_name = $game_system.windowskin_name
        self.windowskin = RPG::Cache.windowskin(@windowskin_name)
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.z = 100
      end
    
     
      
    def draw_actor_graphic(actor, x, y)
        bitmap = RPG::Cache.character(actor.character_name+$li, actor.character_hue)
        cw = bitmap.width 
        ch = bitmap.height 
        src_rect = Rect.new(0,0, cw, ch)
        self.contents.blt(x - cw / 4, y - ch+20, bitmap, src_rect)
      end
    
      def draw_actor_name(actor, x, y)
        self.contents.font.color = normal_color
        self.contents.draw_text(x+50, y, 200, 32, actor.name)
      end
      
    
    def draw_actor_level(actor, x, y)
        self.contents.font.color = system_color
        self.contents.draw_text(x+50, y, 32, 32, "Lv")
        self.contents.font.color = normal_color
        self.contents.draw_text(x + 82, y, 24, 32, actor.level.to_s, 2)
      end
      
     
     def draw_actor_state(actor, x, y, width = 120)
        text = make_battler_state_text(actor, width, true)
        self.contents.font.color = actor.hp == 0 ? knockout_color : normal_color
        self.contents.draw_text(x+30, y, width, 32, text)
      end
    
      def draw_actor_exp(actor, x, y)
        self.contents.font.color = system_color
        self.contents.draw_text(x+50, y, 24, 32, "E")
        self.contents.font.color = normal_color
        self.contents.draw_text(x + 34, y, 84, 32, actor.exp_s, 2)
        self.contents.draw_text(x + 118, y, 12, 32, "/", 1)
        self.contents.draw_text(x + 130, y, 84, 32, actor.next_exp_s)
      end
      
    end  
    #Коректировка в статусе
    
    class Window_Status < Window_Base
    
      def initialize(actor)
        super(0, 0, 640, 480)
        self.contents = Bitmap.new(width - 32, height - 32)
        self.contents.font.name = $fontface
        self.contents.font.size = $fontsize
        @actor = actor
        refresh
      end
    
      def refresh
        self.contents.clear
        draw_actor_graphic(@actor, 20, 112)
        draw_actor_name(@actor, -30, 0)
        draw_actor_class(@actor, 4 + 144, 0)
        draw_actor_level(@actor, 96, 32)
        draw_actor_state(@actor, 96, 64)
        draw_actor_hp(@actor, 96, 112, 172)
        draw_actor_sp(@actor, 96, 144, 172)
        draw_actor_parameter(@actor, 96, 192, 0)
        draw_actor_parameter(@actor, 96, 224, 1)
        draw_actor_parameter(@actor, 96, 256, 2)
        draw_actor_parameter(@actor, 96, 304, 3)
        draw_actor_parameter(@actor, 96, 336, 4)
        draw_actor_parameter(@actor, 96, 368, 5)
        draw_actor_parameter(@actor, 96, 400, 6)
        self.contents.font.color = system_color
        self.contents.draw_text(320, 48, 80, 32, "EXP")
        self.contents.draw_text(320, 80, 80, 32, "NEXT")
        self.contents.font.color = normal_color
        self.contents.draw_text(320 + 80, 48, 84, 32, @actor.exp_s, 2)
        self.contents.draw_text(320 + 80, 80, 84, 32, @actor.next_rest_exp_s, 2)
        self.contents.font.color = system_color
        self.contents.draw_text(320, 160, 96, 32, "Equipment")
        draw_item_name($data_weapons[@actor.weapon_id], 320 + 16, 208)
        draw_item_name($data_armors[@actor.armor1_id], 320 + 16, 256)
        draw_item_name($data_armors[@actor.armor2_id], 320 + 16, 304)
        draw_item_name($data_armors[@actor.armor3_id], 320 + 16, 352)
        draw_item_name($data_armors[@actor.armor4_id], 320 + 16, 400)
      end
      def dummy
        self.contents.font.color = system_color
        self.contents.draw_text(320, 112, 96, 32, $data_system.words.weapon)
        self.contents.draw_text(320, 176, 96, 32, $data_system.words.armor1)
        self.contents.draw_text(320, 240, 96, 32, $data_system.words.armor2)
        self.contents.draw_text(320, 304, 96, 32, $data_system.words.armor3)
        self.contents.draw_text(320, 368, 96, 32, $data_system.words.armor4)
        draw_item_name($data_weapons[@actor.weapon_id], 320 + 24, 144)
        draw_item_name($data_armors[@actor.armor1_id], 320 + 24, 208)
        draw_item_name($data_armors[@actor.armor2_id], 320 + 24, 272)
        draw_item_name($data_armors[@actor.armor3_id], 320 + 24, 336)
        draw_item_name($data_armors[@actor.armor4_id], 320 + 24, 400)
      end
    end

    Демка: http://ifolder.ru/6751208

    Последний раз редактировалось Inca; 05.06.2013 в 15:14. Причина: префикс добавил

  2. #2
    Пользователь Аватар для insider
    Информация о пользователе
    Регистрация
    24.04.2008
    Сообщений
    86
    Репутация: 1 Добавить или отнять репутацию

    По умолчанию

    Слишком большой скрипт для такого незначительного исправления, можно было написать почти в 5 раз короче. Да и удобнее использовать отдельную директорию, чем постфикс к названию.
    Код:
    class Window_Base < Window
      def draw_actor_graphic(actor, x, y)
        bitmap = RPG::Cache.character("../Faces/" + actor.character_name, actor.character_hue)
        fw = bitmap.width
        fh = bitmap.height
        src_rect = Rect.new(0, 0, fw, fh)
        self.contents.blt(x - fw / 2, y - fh / 2, bitmap, src_rect)
      end
    end
    #==============================================================================
    class Window_MenuStatus
      def refresh
        self.contents.clear
        @item_max = $game_party.actors.size
        for i in 0...$game_party.actors.size
          x = 64
          y = i * 116
          actor = $game_party.actors[i]
          draw_actor_graphic(actor, x - 16, y + 50)
          draw_actor_name(actor, x + 44, y)
          draw_actor_class(actor, x + 188, y)
          draw_actor_level(actor, x + 44, y + 32)
          draw_actor_state(actor, x + 134, y + 32)
          draw_actor_exp(actor, x + 44, y + 64)
          draw_actor_hp(actor, x + 236, y + 32)
          draw_actor_sp(actor, x + 236, y + 64)
        end
      end
    end

  3. #3
    Создатель Аватар для Рольф
    Информация о пользователе
    Регистрация
    14.04.2008
    Адрес
    Южно- Сахалинск/Пенза
    Сообщений
    10,081
    Записей в дневнике
    2
    Репутация: 108 Добавить или отнять репутацию

    По умолчанию

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

  4. #4
    Новичок Аватар для Arykray
    Информация о пользователе
    Регистрация
    24.04.2008
    Адрес
    Минск
    Сообщений
    24
    Репутация: 1 Добавить или отнять репутацию

    По умолчанию

    Вот моя альтернатива!!!

    Код:
    #==============================================================================
    # RPG::Cache
    #==============================================================================
    
    module RPG
      #--------------------------------------------------------------------------
      module Cache
        #--------------------------------------------------------------------------
        def self.face(filename)
          self.load_bitmap("Graphics/Face/", filename)
        end
      end
    end
    примечание: лица добовляются сторкой draw_actor_face(actor, x - 16 , y + 96), и хранятся в папке ...Graphics\Face
    Давайте мериться у кого короче???
    Последний раз редактировалось Arykray; 02.06.2008 в 23:53.
    Я живу в машинном коде, мне порой очень сложно понять человеческую логику.



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

  5. #5
    Пользователь Аватар для insider
    Информация о пользователе
    Регистрация
    24.04.2008
    Сообщений
    86
    Репутация: 1 Добавить или отнять репутацию

    По умолчанию

    ага, вот и попробуй вставить где-нить вызов draw_actor_face, на что получишь [s]хуй[/s] ошибку. этот метод для начала надо хотя бы объявить, умник

  6. #6
    Создатель Аватар для Рольф
    Информация о пользователе
    Регистрация
    14.04.2008
    Адрес
    Южно- Сахалинск/Пенза
    Сообщений
    10,081
    Записей в дневнике
    2
    Репутация: 108 Добавить или отнять репутацию

    По умолчанию

    Это забыл.
    def draw_actor_face(actor, x, y)
    bitmap = RPG::Cache.face(actor.character_name)
    cw = bitmap.width
    ch = 96
    src_rect = Rect.new(0, 0, cw, ch)
    self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
    end

  7. #7
    Новичок Аватар для Arykray
    Информация о пользователе
    Регистрация
    24.04.2008
    Адрес
    Минск
    Сообщений
    24
    Репутация: 1 Добавить или отнять репутацию

    По умолчанию

    Рольф, спасибо. Ток название класса class Base < Window еще добавить...

    Цитата Сообщение от insider Посмотреть сообщение
    ага, вот и попробуй вставить где-нить вызов draw_actor_face, на что получишь [s]хуй[/s] ошибку. этот метод для начала надо хотя бы объявить, умник
    Мля точно...

    обявляем метод.

    Код:
    class Base < Window
      def draw_actor_face(actor, x, y)
        bitmap = RPG::Cache.face(actor.character_name)
        cw = bitmap.width
        ch = bitmap.height
        src_rect = Rect.new(0, 0, cw, ch)
        self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
      end
    end
    Забыл сказать, что лица должны иметь точно такие же названия как и Чары. Пример: 001-Fighter01.png
    Последний раз редактировалось Arykray; 03.06.2008 в 06:46.
    Я живу в машинном коде, мне порой очень сложно понять человеческую логику.



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

  8. #8
    Создатель Аватар для Рольф
    Информация о пользователе
    Регистрация
    14.04.2008
    Адрес
    Южно- Сахалинск/Пенза
    Сообщений
    10,081
    Записей в дневнике
    2
    Репутация: 108 Добавить или отнять репутацию

    По умолчанию

    В методе insider тоже такие как названия. Это я сделал чтобы разные, так как у меня без папки. Думаю больше способов нет.

  9. #9
    Пользователь Аватар для insider
    Информация о пользователе
    Регистрация
    24.04.2008
    Сообщений
    86
    Репутация: 1 Добавить или отнять репутацию

    По умолчанию

    Это забыл.
    Ага, а еще забыл поставить вызов draw_actor_face в Window_MenuStatus, Window_Status и в Window_NameEdit, а с этим короче никак не будет

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

    По умолчанию

    Рольф, перезалей.
    Файл удалён.
    А то мне лица надо


Страница 1 из 2 12 ПоследняяПоследняя

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

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

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

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

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

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

Ваши права

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