X(Vivo) pasa por arriba de Y(Muerto)

Estado
Cerrado para nuevas respuestas.

Germax

UNC - Ing. Computación
Ex-Staff
Bueno verán mi idea es la siguiente.

Hacer que tan usuario por ejemplo que un usuario no se choque con un casper.
Los que juegan Arduz sabrán.

X(vivo) se choca con Y(Muerto).
Y(Muerto) pasa al lugar inicial de X(Vivo) e X(Vivo) al lugar inicial de Y(muerto).

Si me tiran una idea por donde puedo empezar a ver este tema mejor.

Me refiero si saben en que parte del código se manejan, los char, los usuarios para que no se choquen.

no se como explicar... cualquier cosa pregunten.
 

Enanoh

Destructor Lvl 1
No es más que modificar legalpos... Y como dijo dunkan, está en las últimas versiones de Alkon
 

ElAguSS

Destructor Lvl 1
Acá encontré el sub, pero yo no se adaptar el code de la 12.2 a la 11.5. Te lo dejo a ver si lo adaptas y me ayudas a mi también porque hace mucho buscaba este code.

Código:
Sub MoveUserChar(ByVal UserIndex As Integer, ByVal nHeading As eHeading)
'*************************************************
'Author: Unknown
'Last modified: 13/07/2009
'Moves the char, sending the message to everyone in range.
'30/03/2009: ZaMa - Now it's legal to move where a casper is, changing its pos to where the moving char was.
'28/05/2009: ZaMa - When you are moved out of an Arena, the resurrection safe is activated.
'13/07/2009: ZaMa - Now all the clients don't know when an invisible admin moves, they force the admin to move.
'13/07/2009: ZaMa - Invisible admins aren't allowed to force dead characater to move
'*************************************************
    Dim nPos As WorldPos
    Dim sailing As Boolean
    Dim CasperIndex As Integer
    Dim CasperHeading As eHeading
    Dim CasPerPos As WorldPos
    
    sailing = PuedeAtravesarAgua(UserIndex)
    nPos = UserList(UserIndex).Pos
    Call HeadtoPos(nHeading, nPos)
        
    If MoveToLegalPos(UserList(UserIndex).Pos.map, nPos.X, nPos.Y, sailing, Not sailing) Then
        'si no estoy solo en el mapa...
        If MapInfo(UserList(UserIndex).Pos.map).NumUsers > 1 Then
               
            CasperIndex = MapData(UserList(UserIndex).Pos.map, nPos.X, nPos.Y).UserIndex
            'Si hay un usuario, y paso la validacion, entonces es un casper
            If CasperIndex > 0 Then
                ' Los admins invisibles no pueden patear caspers
                If Not (UserList(UserIndex).flags.AdminInvisible = 1) Then
                    
                    If TriggerZonaPelea(UserIndex, CasperIndex) = TRIGGER6_PROHIBE Then
                        If UserList(CasperIndex).flags.SeguroResu = False Then
                            UserList(CasperIndex).flags.SeguroResu = True
                            Call WriteResuscitationSafeOn(CasperIndex)
                        End If
                    End If
    
                    CasperHeading = InvertHeading(nHeading)
                    CasPerPos = UserList(CasperIndex).Pos
                    Call HeadtoPos(CasperHeading, CasPerPos)
    
                    With UserList(CasperIndex)
                        
                        ' Si es un admin invisible, no se avisa a los demas clientes
                        If Not .flags.AdminInvisible = 1 Then _
                            Call SendData(SendTarget.ToPCAreaButIndex, CasperIndex, PrepareMessageCharacterMove(.Char.CharIndex, CasPerPos.X, CasPerPos.Y))
                        
                        Call WriteForceCharMove(CasperIndex, CasperHeading)
                            
                        'Update map and user pos
                        .Pos = CasPerPos
                        .Char.heading = CasperHeading
                        MapData(.Pos.map, CasPerPos.X, CasPerPos.Y).UserIndex = CasperIndex
                    
                    End With
                
                    'Actualizamos las áreas de ser necesario
                    Call ModAreas.CheckUpdateNeededUser(CasperIndex, CasperHeading)
                End If
            End If
 
            
            ' Si es un admin invisible, no se avisa a los demas clientes
            If Not UserList(UserIndex).flags.AdminInvisible = 1 Then _
                Call SendData(SendTarget.ToPCAreaButIndex, UserIndex, PrepareMessageCharacterMove(UserList(UserIndex).Char.CharIndex, nPos.X, nPos.Y))
            
        End If
        
        ' Los admins invisibles no pueden patear caspers
        If Not ((UserList(UserIndex).flags.AdminInvisible = 1) And CasperIndex <> 0) Then
            Dim oldUserIndex As Integer
            
            oldUserIndex = MapData(UserList(UserIndex).Pos.map, UserList(UserIndex).Pos.X, UserList(UserIndex).Pos.Y).UserIndex
            
            ' Si no hay intercambio de pos con nadie
            If oldUserIndex = UserIndex Then
                MapData(UserList(UserIndex).Pos.map, UserList(UserIndex).Pos.X, UserList(UserIndex).Pos.Y).UserIndex = 0
            End If
            
            UserList(UserIndex).Pos = nPos
            UserList(UserIndex).Char.heading = nHeading
            MapData(UserList(UserIndex).Pos.map, UserList(UserIndex).Pos.X, UserList(UserIndex).Pos.Y).UserIndex = UserIndex
            
            'Actualizamos las áreas de ser necesario
            Call ModAreas.CheckUpdateNeededUser(UserIndex, nHeading)
        Else
            Call WritePosUpdate(UserIndex)
        End If
 
    Else
        Call WritePosUpdate(UserIndex)
    End If
    
    If UserList(UserIndex).Counters.Trabajando Then _
        UserList(UserIndex).Counters.Trabajando = UserList(UserIndex).Counters.Trabajando - 1
 
    If UserList(UserIndex).Counters.Ocultando Then _
        UserList(UserIndex).Counters.Ocultando = UserList(UserIndex).Counters.Ocultando - 1
End Sub

Código:
Public Sub WriteForceCharMove(ByVal UserIndex, ByVal Direccion As eHeading)
'***************************************************
'Author: ZaMa
'Last Modification: 26/03/2009
'Writes the "ForceCharMove" message to the given user's outgoing data buffer
'***************************************************
On Error GoTo Errhandler
    Call UserList(UserIndex).outgoingData.WriteASCIIStringFixed(PrepareMessageForceCharMove(Direccion))
Exit Sub
 
Errhandler:
    If Err.Number = UserList(UserIndex).outgoingData.NotEnoughSpaceErrCode Then
        Call FlushBuffer(UserIndex)
        Resume
    End If
End Sub
Acá esta todo. Saludos
 

Franeg95

CARP
Ex-Staff
Flashero seria que puedan estar en el mismo lugar. Programarlo es facil el tema es que despues tendrias que arreglartela con el Alpha y el casper.
 

Germax

UNC - Ing. Computación
Ex-Staff
Bueno muchas gracias por la info. Chicos.
Ahora voy a intentar adaptarlo si puedo lo libero :)
 

Santty.-

Legendario Inmortal Lvl 2
Yo te decía que el vivo al chocar al muerto el muerto se corra un tile para adelante, pero tu idea es mejor.
 
Estado
Cerrado para nuevas respuestas.
Arriba