Limpieza del mundo automática

Ver el tema anterior Ver el tema siguiente Ir abajo

Limpieza del mundo automática

Mensaje por Metrosersuah el 22/4/2017, 4:00 pm

Servidor


Agregan este modúlo

mLimpieza:

Código:
Option Explicit

Const MAXITEMS As Integer = 1000
Private ArrayLimpieza(MAXITEMS) As WorldPos

'//Desde acá establecemos el ultimo slot que se uso
Public UltimoSlotLimpieza As Integer


Public Sub AgregarObjetoLimpieza(pos As WorldPos)

    '//Primera pos almacenada
    If UltimoSlotLimpieza = -1 Then
        ArrayLimpieza(0) = pos
        UltimoSlotLimpieza = 0
        Exit Sub
    End If
   
    '//En caso de no ser cero, significa que ya hay objetos, seguimos sumando +1
    UltimoSlotLimpieza = UltimoSlotLimpieza + 1
   
    ArrayLimpieza(UltimoSlotLimpieza) = pos
   
    '¿Alcanzamos los slots que permite almacenar?
    '//Reservamos 100 slots por si cuando empieza a limpiar el mundo, siguen tirando objetos.
    If UltimoSlotLimpieza = MAXITEMS - 100 Then
        counterSV.Limpieza = 30
    End If
End Sub

Public Sub BorrarObjetosLimpieza()
Dim i As Long

    For i = 0 To MAXITEMS
        With ArrayLimpieza(i)
            Call EraseObj(10000, .map, .X, .Y)
        End With
    Next i
End Sub

Declarar
Código:
Private Type tCountersServidor
    Limpieza As Integer
End Type

Public counterSV As tCountersServidor

Buscar en el modúlo general.
Código:
 Call LoadMotd

Abajo ponemos

UltimoSlotLimpieza = -1

En el sub pasarsegundo ponemos

Código:
    'Limpieza del mundo
    If counterSV.Limpieza > 0 Then
        counterSV.Limpieza = counterSV.Limpieza - 1
       
        If counterSV.Limpieza < 6 Then Call SendData(SendTarget.toAll, 0, PrepareMessageConsoleMsg("Limpieza del mundo en " & counterSV.Limpieza & " segundos. ¡¡Atentos!!", FontTypeNames.FONTTYPE_SERVER))
       
        If counterSV.Limpieza = 0 Then
            Call BorrarObjetosLimpieza
            Call SendData(SendTarget.toAll, 0, PrepareMessageConsoleMsg("Limpieza del mundo finalizada.", FontTypeNames.FONTTYPE_SERVER))
            UltimoSlotLimpieza = -1
        End If
    End If

Remplazar este sub

Código:
Sub MakeObj(ByRef obj As obj, ByVal map As Integer, ByVal X As Integer, ByVal Y As Integer)
'***************************************************
'Author: Unknown
'Last Modification: -
'
'***************************************************
   
    If obj.ObjIndex > 0 And obj.ObjIndex <= UBound(ObjData) Then
   
        With MapData(map, X, Y)
            If .ObjInfo.ObjIndex = obj.ObjIndex Then
                .ObjInfo.Amount = .ObjInfo.Amount + obj.Amount
            Else
                .ObjInfo = obj
               
                Call modSendData.SendToAreaByPos(map, X, Y, PrepareMessageObjectCreate(ObjData(obj.ObjIndex).GrhIndex, X, Y))
            End If
           
           
            '//Agregamos las pos de los objetos
            If ObjData(obj.ObjIndex).OBJType <> otFogata And _
                Not EsObjetoFijo(ObjData(obj.ObjIndex).OBJType) Then
                Dim xPos As WorldPos
                xPos.map = map
                xPos.X = X
                xPos.Y = Y
                AgregarObjetoLimpieza xPos
            End If
        End With
    End If
End Sub





avatar
Metrosersuah
Nivel 5
Nivel 5

¿BANEADO? : No.
Premios : Ninguno.
Cantidad de envíos : 206
Localización : 4 Paredes
Fecha de inscripción : 13/02/2016

Ver perfil de usuario http://www.argentumonline.com.ar

Volver arriba Ir abajo

Re: Limpieza del mundo automática

Mensaje por Sativa el 9/8/2017, 4:18 am

Cada cuánto sería esta limpieza ? no seria mas práctico hacerlo desde un timer?
avatar
Sativa
Retirado
Retirado

¿BANEADO? : No.
Premios : Ninguno.
Cantidad de envíos : 2871
Fecha de inscripción : 26/05/2010

Ver perfil de usuario

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

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