Desenhar a bandeira da Guilda Hitskin_logo Hitskin.com

Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o temaVoltar para a ficha do tema

Aldeia RPG
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Desenhar a bandeira da Guilda

+22
NowaDraco
djgabriel99
The Suspect
イアゴル
Satheios
SrºJokker
clavrie
Gabriel Lenz
Pablo Kawan
Lucas FM
Samuka_Maker
XGreenDayX
Laxus
mazorki
jiraya
DeaN
urbios
Paulo Soreto
Lucky
LeonM²
Jonny
RD12
26 participantes

Página 1 de 4 1, 2, 3, 4  Seguinte

Ir para baixo

Desenhar a bandeira da Guilda Empty Desenhar a bandeira da Guilda

Mensagem por RD12 Sáb Jan 19, 2013 10:44 pm

Desenhar bandeira

Primeiro quero dizer que provavelmente este será meu último script. Estou fazendo a pedido de um amigo.
Esse script eu já tinha feito a bastante tempo para um jogo, mas agora está 999% melhor.

Informações:
Lag gerado: Mínimo. Fiz o máximo para encurtar os códigos e compactar envios de dados.
Com este sistema os jogadores poderão desenhar a própria bandeira.
A bandeira é exibida na Window_guild e em um ícone ao lado dos nomes dos jogadores.
É possível modificar o tamanho da bandeira nas configurações.

Imagens:

Spoiler:


Colocando no jogo:

OBS: Antes de por no seu jogo, faça uma cópia do seu projeto para o caso de der erro, assim você poderá refazer de novo.


Para por no jogo temos que modificar bastantes scripts. Vamos começar substituindo alguns.

Substitua o script [GD] Window_CreateGuild por este:

Código:
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#|Autor: RD12|      Criar guilda e Desenhar Bandeira
#------------------------------------------------------------------------------
# Chame o script -> $guild_w.open
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=

#Configure aqui a palheta de Cores
module Flag_Config
  #Tamanho da bandeira na Window_Guilld
  Flag_Size = 7
  #Tamanho do ícone da bandeira dos jogadores
  Icon_Size = 3
  #Cores da palheta da bandeira
  Colors = []
  Colors[0] = Color.new(0,0,0)#Preto
  Colors[1] = Color.new(150,150,150)#Cinza
  Colors[2] = Color.new(255,255,255)#Branco
  Colors[3] = Color.new(255,0,0)#Vermelho
  Colors[4] = Color.new(255,100,0)#Laranja
 
  Colors[5] = Color.new(255,255,128)#Amarelo
  Colors[6] = Color.new(0,255,0)#Verde escuro
  Colors[7] = Color.new(0,160,0)#Verde claro
  Colors[8] = Color.new(0,162,232)#Azul
  Colors[9] = Color.new(255,150,185)#Rosa
end

class Window_CreateGuild < Window_Base
 
  def initialize
    super(220,100,270,325)
    self.contents = Bitmap.new(self.width-32, self.height-32)
    self.back_opacity = 200
    @dragable = true
    @closable = true
    self.z = 99999
    $guild_input = Text_Box.new(self,60,260,90,10,1,true)
    @criar_guild1 = Button.new(self,10,290,LANGUAGE::NEWGUILDCREATE) {criar; $fechando_ativar = true}
    @sair_guild1 = Button.new(self,70,290,LANGUAGE::NEWGUILDBACK) {self.visible = false; self.active = false; $fechando_ativar = true}
    @color = 0
  end
 
  def update
    super
    refresh
    draw_flag
  end
 
  def draw_flag
    #==Pegar cor da Palheta==#
    if Input.pressed(Input::Mouse_Left)
      for i in 0..4
      if in_area?([70+i*22, 195+15, 17, 17])
        @color = i
      end
      if in_area?([70+i*22, 195+35, 17, 17])
        @color = i+5
      end
      end 
    #==Desenhar a cor na bandeira==#
    for x in 0..5
      for y in 0..5
        if in_area?([60+x*21, 75+y*21, 20, 20])
          $flag_contents[y][x] = @color
        end
      end
    end
  end
  end
 
  def refresh
    self.contents.clear
    return if $flag_contents.nil?
    #Desenha a bandeira da guilda
    for x in 0..5
      for y in 0..5
        rect = Rect.new(45+x*21, 60+y*21, 20, 20)
        cor = $flag_contents[y][x]
        self.contents.fill_rect(rect, Flag_Config::Colors[cor])
      end
    end
    #Desenha a Palheta de cores
    for i in 0..4
      rect = Rect.new(55+i*22, 195, 17, 17)
      self.contents.fill_rect(rect, Flag_Config::Colors[i])
      #cores de baixo
      rect = Rect.new(55+i*22, 195+20, 17, 17)
      self.contents.fill_rect(rect, Flag_Config::Colors[i+5])
    end
    #textos
    self.contents.font.size = 17
    self.contents.draw_text(0, 0, self.width-44, 42, "Desenhe a bandeira da sua guilda", 1)
    self.contents.font.size = 14
    self.contents.draw_text(0, 237, self.width-64, 32, LANGUAGE::NEWGUILDNAME)
  end
 
  def open
    if $guild_name == ""
      $guild_w.visible = true
      $guild_w.active = true
    else
      $msg.set_text(LANGUAGE::HAVEGUILD,20, -3)
      $msg.visible = true
      $msg.active = true
    end
  end 
 
  def on_close
    self.visible = false
    self.active = false
    $fechando_ativar = true
  end 
 
  def criar
    if $guild_input.text.size < 4
      $guild_w.visible = false
      $guild_w.active = false
      $msg.set_text(LANGUAGE::ERROGUILDNAME,45, -3)
      $msg.visible = true
      $msg.active = true
      return
    end 
    if Network::Main.user_exist?($guild_input.text+"-Guild") == true
      $guild_w.visible = false
      $guild_w.active = false
      $msg.set_text(LANGUAGE::NEWGUILDEXIST,45, -3)
      $msg.visible = true
      $msg.active = true
      $guild_input.text = ""
      $guild_input.active = false
      return
    end
    $guild_name = $guild_input.text
    $guild_w.visible = false
    $guild_w.active = false
    $game_party.actors[0].guild = $guild_input.text
    $guild_points = 0
    $game_player.refresh
    $scene = Scene_Map.new
    Network::Main.send_start
    $guild_position = LANGUAGE::GUILDLEADER
    Network::Main.send_register($guild_input.text+"-Guild" , $guild_input.text)
  end
 
end
$flag_contents = []
$flag_contents[0] = [1,1,1,1,1,1]
$flag_contents[1] = [1,1,1,1,1,1]
$flag_contents[2] = [1,1,1,1,1,1]
$flag_contents[3] = [1,1,1,1,1,1]
$flag_contents[4] = [1,1,1,1,1,1]
$flag_contents[5] = [1,1,1,1,1,1]

Agora substitua o [GD] Window_Guild por este:

Código:
#==============================================================================
# ** Guild
#------------------------------------------------------------------------------
#  By Valentine
#  Editado por RD12
#==============================================================================
class Window_Guild < Window_Base
 
  def initialize(x,y,a,b)
    super(x,y,a,b)
    self.contents = Bitmap.new(self.width-32, self.height-32)
    self.back_opacity = 200
    @dragable = true
    @closable = true
    self.z = 99999
    @sair_guild2 = Button.new(self,10,180,LANGUAGE::LEAVEGUILD) {sair}
    @member_guild = Button.new(self,108,180,LANGUAGE::GUILDMEMBERS) { $member_list.refresh;self.visible = false; self.active = false; $member_list.visible = true; $member_list.active = true }
    if $guild_position == LANGUAGE::GUILDLEADER
      $guild_created_input = Text_Box.new(self,64,117,77,10)
      $guild_created_input2 = Text_Box.new(self,64,137,77,10)
      @ok_guild = Button.new(self,145,117,LANGUAGE::ADDGUILDMEMBER) {ok}
      @delet_guild = Button.new(self,145,137,LANGUAGE::DELGUILDMEMBER) {del}
    else
      $guild_created_input = Text_Box.new(self,200,207,77,10)
    end
    refresh
  end

  def on_close
    self.visible = false
    self.active = false
#  $flag2.visible = false
    $member_list.visible = false
    $member_list.active = false
    $fechando_ativar = true
  end
 
  def update
    super
    refresh if something_changed?
  end
 
  def something_changed?
    return true if @old_guild != $game_party.actors[0].guild
    return true if @old_position != $guild_position
    return true if @old_pontos != $guild_points
    return true if @old_lider != $guild_lider_name
    return true if @old_flag != $flag_contents
    return false
  end
 
  def refresh
    @old_guild = $game_party.actors[0].guild
    @old_position = $guild_position
    @old_pontos = $guild_points
    @old_lider = $guild_lider_name
    @old_flag = $flag_contents
    self.contents.clear
    flag_size = Flag_Config::Flag_Size
    #Desenhar bandeira
    for x in 0..5
      for y in 0..5
        rect = Rect.new(x*flag_size, 5+y*flag_size, flag_size, flag_size)
        cor = $flag_contents[y][x]
        self.contents.fill_rect(rect, Flag_Config::Colors[cor])
      end
    end   
    self.contents.font.size = 17
    self.contents.draw_text(75, 10, self.width-22, 20, $game_party.actors[0].guild)
    self.contents.font.size = 14
    self.contents.draw_text(0,53, self.width-44, 42, LANGUAGE::GUILDPOSITION + $guild_position.to_s)
    self.contents.draw_text(0,69, self.width-44, 42, LANGUAGE::GUILDPOINTS + $guild_points.to_s)
    if $guild_position == LANGUAGE::GUILDLEADER
      self.contents.draw_text(0, 87, self.width-44, 42, LANGUAGE::GUILDCALL)
      self.contents.draw_text(0, 107, self.width-44, 42, LANGUAGE::GUILDOUT)
    else
      self.contents.draw_text(0, 85, self.width-44, 42, LANGUAGE::GUILDLEADER+": "+$guild_lider_name.to_s)
    end
  end
 
  def del
    for p in Network::Main.players.values
      if p.nome == $guild_created_input2.text
        if p.guild == $game_party.actors[0].guild
          jogador = p.nome
          return if p.position == LANGUAGE::GUILDLEADER
          Network::Main.pchat(p.netid,"[COM] [GDS] #{jogador}")
        end
      end
    end 
  end 
 
  def ok
    for p in Network::Main.players.values
      if p.nome == $guild_created_input.text
        flag = $flag.to_s
        jogador = p.nome
        lider_name = $game_party.actors[0].name
        Network::Main.pchat(p.netid,"[COM] [GDD] #{$guild_name} #{jogador} #{flag} #{lider_name}")
      end
    end
  end
 
  def sair
    if $guild_position == LANGUAGE::GUILDLEADER
      Network::Main.send_register($guild_name.to_s+"-Guild-DEL" , $guild_name.to_s)
    end 
    $guild_created.visible = false
    $guild_created.active = false
    $member_list.visible = false
    $member_list.active = false
    $guild_name = ""
    $game_party.actors[0].guild = ""
    $game_player.refresh
    $scene = Scene_Map.new
    Network::Main.send_start
    $guild_position = LANGUAGE::GUILDRANK
    $guild_points = 0
#    $flag2.visible = false
    $fechando_ativar = true
    $flag = 1
  end
 
end

Agora vamos no script [SPR] Sprite_NetCharacter, na linha 40 procure por:
Código:
        icon = RPG::Cache.icon("Mini-Flag#{@character.flag}")
        bitmap.blt(55-@character.guild.size,8,icon,icon.rect)

Delete ele e no lugar coloque este código:

Código:
        #Desenha o íncone da bandeira do lado do nome
        icon_size = Flag_Config::Icon_Size
        @net_flag = @character.flag_icon.split("|")
        for i in 0..5
          for x in 0..5
          rect = Rect.new((50-@character.guild.size)+x*icon_size, 8+(i)*icon_size, icon_size, icon_size)
          cor = @net_flag[x+(i*6)].to_i
          bitmap.fill_rect(rect, Flag_Config::Colors[cor])
          end 
        end

Agora no script [GM] Game_NetPlayer, adicione essa linha em baixo da linha 21:
Código:
  attr_accessor :flag_icon

Neste mesmo script, em baixo da linha 75 adicione esta linha:
Código:
    @flag_icon = ""

Agora vá para o script [SC] Net Rmxp Hud, na linha 191 procure por:
Código:
          flag = $flag.to_s
Apague e substitue por este:


Código:
          #Enviar dados da bandeira
          flag = ""
          for x in 0..5
            for y in 0..5
            flag += $flag_contents[x][y].to_s+"|"
            end
          end


No mesmo script, na linha 242 procure por:
Código:
      $flag = $flag_nominho

Apague e adicione este código no lugar:

Código:
      #Descompactar dados da bandeira     
      @flag_cont = $flag_nominho.split("|")
        for x in 0..5
          for y in 0..5
          $flag_contents[x][y] = @flag_cont[y+(x*6)].to_i
          end 
        end


Agora vá para o script [EXT] Event Text Display, na linha 188 procure por:
Código:
    icon = RPG::Cache.icon("Mini-Flag#{$flag}")
    bitmap.blt(55-actor.guild.size,8,icon,icon.rect)
Apague e coloque este no lugar:

Código:
    flag_size = Flag_Config::Icon_Size
    for x in 0..5
      for y in 0..5
        rect = Rect.new((50-actor.guild.size)+x*flag_size, 8+y*flag_size, flag_size, flag_size)
        cor = $flag_contents[y][x]
        bitmap.fill_rect(rect, Flag_Config::Colors[cor])
      end
    end   

Agora no script [ACT] Auto Save

linha 38 procure por file.close.
Em cima cole isto:
Código:
  Marshal.dump($flag_contents, file)

Agora no script [SC] Scene_Title, linha 320 procure por
Código:
    $game_map.setup($game_map.map_id)

Em cima dessa linha coloque esta:
Código:
    $flag_contents      = Marshal.load(file)

Agora no script [NET] Network, na linha 387 procure por

Código:
send += "start(#{self.id});"

EM CIMA, cole este código:

Código:
    #Envia as cores da bandeira pro server
    @flag_color = ""
    if !$flag_contents.nil?
      for x in 0..5
      for y in 0..5
        @flag_color += $flag_contents[x][y].to_s+"|"
      end
      end
      send += "@flag_icon = '#{@flag_color}';"
    else
      send += "@flag_icon = ''"
    end

Agora no script [SC] Net Rmxp Hud de novo, procure por:
Código:
    #Criar Guild
    $guild_w = Window_CreateGuild.new(220,100,200,200)

Apague esse pedaço dele: (220,100,200,200)

Agora, aperte Ctrl+Shift+F, na busca procure por $flag1, repita a busca apagando todas as linhas que vc achar com esse código.
Faça o mesmo para $flag2

Pronto, eu fiz tudo isso em um netplay zerado e deu certo! Por favor, façam com cuidado antes de virem postar erros que foram cometidos por vocês!
:^.^:
Criado por RD12
RD12
RD12
Lenda
Lenda

Medalhas : Desenhar a bandeira da Guilda 48080450Desenhar a bandeira da Guilda Trophy11Desenhar a bandeira da Guilda GIueZDesenhar a bandeira da Guilda ZgLkiRU
Mensagens : 1946
Créditos : 745

Ir para o topo Ir para baixo

Desenhar a bandeira da Guilda Empty Re: Desenhar a bandeira da Guilda

Mensagem por Jonny Sáb Jan 19, 2013 10:46 pm

Legal.. Sistema estilo Mu Online Very Happy
Obrigado por disponivilisar. asi ajudara a muita personas :)

Desenhar a bandeira da Guilda 582465_160077237473609_1987241093_n


Última edição por Jonny Kun em Sáb Jan 19, 2013 11:15 pm, editado 2 vez(es)

_________________
Spoiler:


Desenhar a bandeira da Guilda KVIdx
Jonny
Jonny
Aldeia Friend
Aldeia Friend

Medalhas : Desenhar a bandeira da Guilda Trophy11Desenhar a bandeira da Guilda 9P5Gx
Mensagens : 1936
Créditos : 327

http://fanmakers.ultimaterpg.net/

Ir para o topo Ir para baixo

Desenhar a bandeira da Guilda Empty Re: Desenhar a bandeira da Guilda

Mensagem por LeonM² Sáb Jan 19, 2013 10:48 pm

MT FODA, pode ser util para alguém mas não para mim atualmente Razz
Cred UP
LeonM²
LeonM²
Lenda
Lenda

Mensagens : 1802
Créditos : 153

Ir para o topo Ir para baixo

Desenhar a bandeira da Guilda Empty Re: Desenhar a bandeira da Guilda

Mensagem por Lucky Sáb Jan 19, 2013 10:48 pm

Nossa, muito bom 1+ cred

_________________
Belive in your dreams.


Se você quer vencer, não fique olhando a escada, comece a subir degrau por degrau até chegar ao topo e não espere o incentivo de outros, o primeiro a acreditar no seu sonho tem que ser você.

Desenhar a bandeira da Guilda Good_t10
[size=10]Eu Apoio Esse Projeto![/size]
Desenhar a bandeira da Guilda B9M26iU

assinatura:
Lucky
Lucky
Colaborador
Colaborador

Mensagens : 654
Créditos : 75

Ir para o topo Ir para baixo

Desenhar a bandeira da Guilda Empty Re: Desenhar a bandeira da Guilda

Mensagem por Paulo Soreto Sáb Jan 19, 2013 11:22 pm

Hum... Ficou bacana cara, esse é o seu sistema mais bem feito.

_________________
Desenhar a bandeira da Guilda FwYnoXI
Paulo Soreto
Paulo Soreto
Lenda
Lenda

Mensagens : 1980
Créditos : 367

Ficha do personagem
Nível: 1
Experiência:
Desenhar a bandeira da Guilda Left_bar_bleue0/0Desenhar a bandeira da Guilda Empty_bar_bleue  (0/0)
Vida:
Desenhar a bandeira da Guilda Left_bar_bleue30/30Desenhar a bandeira da Guilda Empty_bar_bleue  (30/30)

https://www.aldeiarpg.com/

Ir para o topo Ir para baixo

Desenhar a bandeira da Guilda Empty Re: Desenhar a bandeira da Guilda

Mensagem por urbios Sáb Jan 19, 2013 11:43 pm

Desenhar a bandeira da Guilda 2945825175 ty RD 12 ^o^

_________________
RPG maker XP in android? Razz :
urbios
urbios
Iniciante
Iniciante

Mensagens : 73
Créditos : 22

Ir para o topo Ir para baixo

Desenhar a bandeira da Guilda Empty Re: Desenhar a bandeira da Guilda

Mensagem por DeaN Dom Jan 20, 2013 12:47 am

Show mani, gostei demais 1+

_________________
Dean, Programador Geral :)

Contato: Skype:matucarvalho e Facebook
The Enze - Vulzt

Shield Block
Anti-Cheat para jogos de FPS, agora vou adaptar para jogos de RPG principalmente para o RMXP.
www.shieldblock.net
fb.com/shieldblockoficial

Desenhar a bandeira da Guilda MiB0H
DeaN
DeaN
Colaborador
Colaborador

Mensagens : 1243
Créditos : 48

http://www.shieldblock.net

Ir para o topo Ir para baixo

Desenhar a bandeira da Guilda Empty Re: Desenhar a bandeira da Guilda

Mensagem por jiraya Dom Jan 20, 2013 12:50 am

HUM, Parabéns RD12 Fodicimo. :love: Meu Prescioso... kkkk

_________________
[roll="Ataque nível 1"]

Se escrevam no meu Canal no Youtube:  Eberton Munhoz
       
jiraya
jiraya
Membro Ativo
Membro Ativo

Mensagens : 293
Créditos : 26

http://nucleorpg.forumeiros.com/

Ir para o topo Ir para baixo

Desenhar a bandeira da Guilda Empty Re: Desenhar a bandeira da Guilda

Mensagem por mazorki Dom Jan 20, 2013 3:20 pm

deu um erro...
Quando eu abro a aba 'Guild' o ícone 'flag1' aparece na tela e não some mais, só some quando deleta a guild.
mazorki
mazorki
Iniciante
Iniciante

Mensagens : 30
Créditos : 0

http://batalhadearcanjos.blogspot.com.br/

Ir para o topo Ir para baixo

Desenhar a bandeira da Guilda Empty Re: Desenhar a bandeira da Guilda

Mensagem por Laxus Dom Jan 20, 2013 3:26 pm

cara ta perfeito mt bom parabens seus scripts sempre são perfeitos parabens brow

_________________
"Não importa o quão forte o cara é, o que importa é encara-lo de frente sem fraquejar"
                                                                                                                                                    Laxus ~ Fairy Tail
Laxus
Laxus
Aldeia Friend
Aldeia Friend

Mensagens : 1150
Créditos : 78

Ir para o topo Ir para baixo

Desenhar a bandeira da Guilda Empty Re: Desenhar a bandeira da Guilda

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Página 1 de 4 1, 2, 3, 4  Seguinte

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos