Aldeia RPG

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

Suporte ao desenvolvimento de jogos


    Quebra de texto do Chat desenhado na tela

    Valentine
    Valentine
    Administrador
    Administrador


    Medalhas : Quebra de texto do Chat desenhado na tela ZgLkiRU
    Mensagens : 5336
    Créditos : 1163

    Quebra de texto do Chat desenhado na tela Empty Quebra de texto do Chat desenhado na tela

    Mensagem por Valentine Sex Jan 27, 2012 12:50 am

    Tópico Original
    http://www.touchofdeathforums.com/smf/index.php/topic,75564.0.html

    Ryoku Hasu: Incomoda-me que o texto desenhado na tela se apaga com bastante facilidade, quando o texto é muito longo e maior que a tela. então eu me sentei aqui por seis horas para conseguir finalizar. E desde que eu estou postando isso, eu acho que eu tenho que trabalhar.

    Eu o editei para fazer a quebra de texto, em vez de caracteres embrulho! Woot!

    Isso exibe oito mensagens, NÃO 8 linhas.

    'Corrigido por Rob Janes (não inteiramente certo porque lol)
    Quebra de texto do Chat desenhado na tela Cc4e58aa40168f0c1b02df07057deaa0

    ** Para alterar o comprimento da quebra automática de texto, altere todos os "60" no código abaixo

    Lado do cliente

    em modText

    Enconte "Public Sub DrawChat()" e substitua por
    Código:
    'Evilbunnie's DrawnChat system, Word wrapping by RyokuPublic , lammer by Rob Janes
    Sub DrawChat()
    Dim i As Integer
    Dim x As Integer
    Dim y As Integer
    Dim wrap As Integer
    Dim text As String
    Dim SubString As String
    Dim ChatArray() as String

    x = 0
       For i = 1 To 8   
          text = Chat(i).text   
          y = 1   
          ChatArray = Split(text," ")

          Do While Len(text) > 60       
             If y = 1 Then           
                wrap = Len(text) Mod 60       
             Else           
                wrap = 60       
             End If
                       
             'Our Array has more than 1 Word!
             If UBound(ChatArray) > 0 Then
                Do Until Asc(Mid$(text, Len(text) - wrap, 1)) = 32 'break line on spaces only.           
                   wrap = wrap + 1       
                Loop 
             'Our Array only has 1 Word!
             ElseIf UBound(ChatArray) <= 0 Then
                     Exit Do
                      wrap = 1
                 End If
                 
             SubString = Right$(text, wrap)
         
             Call DrawText(TexthDC, Camera.Left + 10, (Camera.Bottom - 20) - ((i + x) * 20), SubString, Chat(i).Colour)                   
             text = Left$(text, Len(text) - wrap)
                   
             x = x + 1       
             y = y + 1   
          Loop
         
          Call DrawText(TexthDC, Camera.Left + 10, (Camera.Bottom - 20) - ((i + x) * 20), text, Chat(i).Colour)   
       Next I
    End Sub

    Créditos:
    Ryoku Hasu (Por criar o tutorial original no TouchofDeath)
    Valentine (Por traduzir, simplificar a explicação e postar aqui na Aldeia RPG)

      Data/hora atual: Qui Mar 28, 2024 7:17 am