Poner Triggers (en juego) mucho más fácil (13.0)

Ir abajo

Poner Triggers (en juego) mucho más fácil (13.0)

Mensaje por Toyz el 22/3/2016, 10:52 pm

Explicación:

/TRIGGER = 1 Tile
Formulario = Todos lo tiles que queramos.

De X coordenada hasta X coordenada.
De Y coordenada hasta Y coordenada.

Se forma como un cuadrado, es decir, supongamos que tenemos un mapa de 10 tiles y hacemos 8 x 8 tiles, ponemos en X la coordenada inicial que sumando con lo que queremos no tiene que dar mayor a 10, por lo tanto pongamos 2.
X = 2
Ahora hacemos hasta donde queremos que se coloquen los triggers, como queremos 8 tiles, lo hacemos hasta 9.
X = 9

Ahí ya tenés la coordenada X, ahora con Y.
Le asignamos una coordenada inicial que sumando la cantidad de tiles que queramos no tienen que dar mayor a los que permite el mapa, por lo tanto en este caso son 8 tiles los que queremos y 10 el límite, hago igual que X.
Y = 2 'Con esto hacemos la coordenada inicial
Y = 9 'Con esto hacemos la final.

Por lo tanto se forma así:



También se puede poner en distintas posiciones, por ejemplo si lo pongo en la posición x1 y  y1:



Ahora voy a dar un ejemplo de 4 x 4.

Ponemos la inicial:

X = 4

Y = 4

Las finales:

X = 4

Y = 4

Así queda:




Espero que hayan entendido...

Cliente:

Write:
Código:

''
'
Private Sub WriteTriggers _
                            (ByVal M As Integer, _
                                 ByVal X As Byte, _
                                     ByVal Y As Byte, _
                                         ByVal HASTAX As Byte, _
                                             ByVal HASTAY As Byte, _
                                                 ByVal Trigger As Byte)

'********************
'AUTOR: G Toyz      *
'Creado 22/03       *
'Envío los datos    *
'MODIFICADO: -      *
'********************

    With outgoingData

1        Call .WriteByte(ClientPacketID.Triggers)
2        Call .writeinteger(M)
3        Call .WriteByte(X)
4        Call .WriteByte(Y)
5        Call .WriteByte(HASTAX)
6        Call .WriteByte(HASTAY)
7        Call .WriteByte(Trigger)

    End With

End Sub

Ahora crean un formulario con estos componentes:  (Respetar nombres)

ComboBox
Combo1

ListBox:
List1

Text:
Text1(0)
Text1(1)
Text2(0)
Text2(1)
MapTxt

Label:
Label1
Label2(0)
Label2(1)
Label3(0)
Label3(1)

Commands:
Triggearj3j3

Código del formulario:

Código:
''
'
Private Sub Triggearj3j3_Click()

'*****************************************
'AUTOR: G TOYZ                           *
'CREADO: 22/03                           *
'Le asigno triggers, mapa y coordenadas. *
'MODIFICADO: -                           *
'*****************************************

    Dim X      As Long
    Dim CT1(0 To 1) As Byte
    Dim CT2(0 To 1) As Byte
    Dim MAPA   As Integer
    Dim Y      As Long
    Dim IDTrigger As Byte
    Dim NombreTrigger As String
 
    If Combo1.ListIndex < 0 Then 'Le decimos que si o si tiene que seleccionar un trigger
        MsgBox "Tienes que elegir un Trigger", vbExclamation, "Trigger: ERROR"
        GoTo borrar:
    Else
        IDTrigger = Combo1.ListIndex
    End If
 
        NombreTrigger = Combo1.Text
 
    For X = 0 To 1
        If IsNumeric(Text1(X).Text) Or IsNumeric(Text2(X).Text) Then
            If Text1(X).Text < 10 Or Text1(X).Text > 90 Or Text2(X).Text < 10 Or Text2(X).Text > 90 Then

                MsgBox "No puede poner tiles menores a 10 o mayores a 90."
                GoTo borrar:
               ' Exit For
        
            End If

            CT1(X) = Text1(X).Text
            Label2(X).Caption = "X = " & CT1(X)


            CT2(X) = Text2(X).Text
            Label3(X).Caption = "Y = " & CT2(X)

        End If

    Next X


    If IsNumeric(MapTxT.Text) Then
        MAPA = (MapTxT.Text)
        If MAPA > 290 Then
            MsgBox "El mapa debe ser menor a 290"
            GoTo borrar:
        End If

        Label1.Caption = "Mapa = " & MAPA

    End If
 
 
    Call WriteTriggers(MAPA, CT1(0), CT2(0), CT1(1), CT2(1), IDTrigger)
 
    'no se entiende un pito jaja
    List1.AddItem "En el " & UCase("mapa") & "[" & MAPA & "] Se ha colocado el " & LCase("Trigger") & _
    " (" & UCase(NombreTrigger) & ") " & "ID = [" & IDTrigger & _
    "] -- Desde la posición X: [" & CT1(0) & "]" & _
    " Hasta X: " & CT1(1) & " y desde Y [" & CT2(0) & "] Hasta Y [" _
    & CT2(1) & "]."
 
borrar:
    borrar_

End Sub
''
'
Sub borrar_()

'*******************
'AUTOR: G Toyz     *
'CREADO: 22/03     *
'Borro los textos  *
'MODIFICADO: -     *
'*******************

    Dim B      As Long

    MapTxT.Text = ""

    For B = 0 To 1

        Text2(B).Text = ""
        Text1(B).Text = ""

    Next B

End Sub

Servidor:

Código:

Public Sub HandleTriggers(ByVal Userindex As Integer)

'******************
'AUTOR: G Toyz    *
'CREADO: 22/03    *
'Recibo los datos *
'MODIFICADO: -    *
'******************

    Dim M         As Integer   'Mapa
    Dim X1        As Byte      'Desde
    Dim Y1        As Byte      'Desde
    Dim X2        As Byte      'Hasta
    Dim Y2        As Byte      'Hasta
    Dim IDTrigger As Byte      'Número de Trigger
    Dim i         As Long      'Bucle
    Dim j         As Long      'Bucle 2
 
    With UserList(Userindex)

1       Call .incomingData.ReadByte

2       M = .incomingData.ReadInteger()
3       X1 = .incomingData.ReadByte()
4       Y1 = .incomingData.ReadByte()
5       X2 = .incomingData.ReadByte()
6       Y2 = .incomingData.ReadByte()
7       IDTrigger = .incomingData.ReadByte()
    
        If .flags.Privilegios And (PlayerType.User Or PlayerType.Consejero Or PlayerType.SemiDios Or PlayerType.RoleMaster) Then Exit Sub

        For i = X1 To X2
            For j = Y1 To Y2
                MapData(M, i, j).Trigger = IDTrigger
            Next Y
        Next X
    
        ' Ejemplo:        __________
        ' X1 = 30        |          |
        ' X2 = 40        |          |
        '                |          |  ' 10 x 10 en la posición 30 de alto y 30 de ancho y en 40 de alto y 40 de ancho.
        ' Y1 = 30        |          |
        ' Y2 = 40        |          |
        '                |          |
        '                |          |
        '                |          |
        '                |          |
        '                |__________|
        '
        Call WriteConsoleMsg(Userindex, "Operación realizada con éxito!", FontTypeNames.FONTTYPE_INFO)

    End With
End Sub

Les faltaría hacer la parte del clientpacketid y listo.
avatar
Toyz
Administrador
Administrador

¿BANEADO? : No.
Premios :
[1er puesto] Usuario del año 2016
Cantidad de envíos : 5045
Edad : 17
Localización : Global.
Fecha de inscripción : 28/09/2014

Ver perfil de usuario

Volver arriba Ir abajo

Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.