Sistemas de viajes.

Ir abajo

Sistemas de viajes.

Mensaje por Toyz el 24/1/2017, 8:30 am

Está aportado mil veces, les traigo uno con una programación distinta. Para añadir viajes:

(Este sistema usamos en Ghamet!)

Código:

[INIT]
CantidadViajes=1

[Viaje1]
Lugar=1-50-50
Costo=50000
Tiempo=15

Ayudas:
Llamadas:

Carga() = Sub Main
Llevame() = Al lugar que el usuario quiere ir (un paquete que envíe ese dato y llamar a este método)
Contador() = PasarSegundo
DesconectaEnViaje() = CloseSocket
-

Variables:
Una de tipo byte en el userflag.
-

Archivos:
Crear un .dat en los dats con los datos que dejé (tanto código (leerlo) y el texto)

¿Problemas para hacer esto?:

http://www.gs-zone.org/temas/para-tener-en-cuenta.96101/
http://www.gs-zone.org/temas/conceptos-basicos-sobre-visual-basic.5388/

Código:

Option Explicit

Private Type tUsuario
    Tiempo As Integer
    ID As Integer
    Lugar As Byte
End Type

Private Type tLugares
    Tiempo As Integer
    Costo As Long
    Lugar As WorldPos
End Type

Private Type tPiratas
    Lugar() As tLugares
    Llevando() As tUsuario
    NumLlevando As Byte
    NumViajes As Byte
End Type

Public Pirata As tPiratas

Public Sub Carga()

    Dim Leer As clsIniManager
    Set Leer = New clsIniManager
    Dim LoopC As Long
    With Pirata
        Call Leer.Initialize(App.Path & "\Dat\Piratas.dat")
        .NumViajes = CByte(Leer.GetValue("INIT", "CantidadViajes"))
        ReDim .Lugar(1 To .NumViajes) As tLugares
        For LoopC = 1 To .NumViajes
            .Lugar(LoopC).Lugar.Map = CInt(ReadField(1, Leer.GetValue("Viaje" & LoopC, "Lugar"), Asc("-")))
            .Lugar(LoopC).Lugar.X = CByte(ReadField(2, Leer.GetValue("Viaje" & LoopC, "Lugar"), Asc("-")))
            .Lugar(LoopC).Lugar.Y = CByte(ReadField(3, Leer.GetValue("Viaje" & LoopC, "Lugar"), Asc("-")))
            .Lugar(LoopC).Costo = CLng(Leer.GetValue("Viaje" & LoopC, "Costo"))
            .Lugar(LoopC).Tiempo = CInt(Leer.GetValue("Viaje" & LoopC, "Tiempo"))
        Next LoopC
    End With
End Sub

Public Sub Llevame(ByVal ID As Integer, ByVal Lugar As Byte)
    With Pirata.Lugar(Lugar)
        If UserList(ID).Stats.GLD >= .Costo Then
            UserList(ID).Stats.GLD = UserList(ID).Stats.GLD - .Costo
            Call WriteUpdateGold(ID)
            Call LlevarAOtro(ID, Lugar)
            Call WriteViajar(ID, .Tiempo)
            Call WritePauseToggle(ID)
        Else
            Call WriteConsoleMsg(ID, "No tienes suficiente oro", FontTypeNames.FONTTYPE_GUILD)
        End If
    End With
End Sub

Private Sub LlevarAOtro(ByVal ID As Integer, ByVal Lugar As Byte)
    With Pirata
        .NumLlevando = .NumLlevando + 1
        ReDim Preserve .Llevando(1 To .NumLlevando) As tUsuario
        .Llevando(.NumLlevando).ID = ID
        .Llevando(.NumLlevando).Tiempo = .Lugar(Lugar).Tiempo
        .Llevando(.NumLlevando).Lugar = Lugar
        UserList(ID).flags.EnViaje = .NumLlevando
    End With
End Sub

Private Sub SacarDelArray(ByVal Pos As Byte, ByVal Lugar As Byte)
    With Pirata
        UserList(.Llevando(Pos).ID).flags.EnViaje = 0
        .Llevando(Pos) = .Llevando(.NumLlevando)
        UserList(.Llevando(Pos).ID).flags.EnViaje = Pos
        .NumLlevando = .NumLlevando - 1
        ReDim Preserve .Llevando(1 To .NumLlevando) As tUsuario
    End With
End Sub

Public Sub Contador()

    Dim LoopC As Long

    With Pirata
        If .NumLlevando > 0 Then
            For LoopC = 1 To .NumLlevando
                If .Llevando(LoopC).Tiempo = 0 Then
                    Call WarpUserChar(.Llevando(LoopC).ID, .Lugar(.Llevando(LoopC).Lugar).Lugar.Map, .Lugar(.Llevando(LoopC).Lugar).Lugar.X, .Lugar(.Llevando(LoopC).Lugar).Lugar.Y, True)
                    Call WritePauseToggle(.Llevando(LoopC).ID)
                    Call SacarDelArray(LoopC, .Llevando(LoopC).Lugar)
                Else
                    .Llevando(LoopC).Tiempo = .Llevando(LoopC).Tiempo - 1
                End If
            Next LoopC
        End If
    End With
End Sub

Public Sub DesconectaEnViaje(ByVal ID As Integer)
    If UserList(ID).flags.EnViaje > 0 Then
        Call SacarDelArray(UserList(ID).flags.EnViaje, Pirata.Llevando(UserList(ID).flags.EnViaje).Lugar)
        UserList(ID).flags.EnViaje = 0
    End If
End Sub


_______________

Como saben yo aporto bastante en Servers-Argentum y les quiero decir que todos tienen derecho de usar y de aportar en otra comunidad mis aportes pero sólo con un requisito y es tan simple que dejar los créditos. Gracias.
Si conocen otra comunidad y en esa misma mis aportes no están aportados, si tenés tiempo y ganas, aportalo! A mucha gente le puede servir. No te olvides del requisito Razz

MIS MEJORES APORTES:

Compra/venta de personajes:
https://goo.gl/A44Av0

Juegos del Hambre:
https://goo.gl/u6aNUG

Deathmatch automático:
https://goo.gl/GQF4fK

Sistema de retos vía MMR con búsqueda, emparejamiento, etc:
https://goo.gl/40uP0f

Sistemas de eventos automáticos de 1vs1 hasta 10vs10:
https://goo.gl/XYKygc

1VS1 - AIM - MELEE - Gana Sigue (Se liberan cupos)
https://goo.gl/qq83wx

Retos 3vs3 - [Items, 2 rounds, múltiples arenas, oro]
https://goo.gl/x8SMnV

Eliminar sistema de Skill (COMPLETO)
https://goo.gl/mKxHzC
avatar
Toyz
Administrador
Administrador

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

Ver perfil de usuario

Volver arriba Ir abajo

Re: Sistemas de viajes.

Mensaje por Axters el 16/2/2017, 2:35 am

Lindo el sistema yo tengo el mismo en millenium un poco mas optimizado. Te recomiendo hacer un comando para recargar los viajes si no cada ves que pones lgo o cambias 1 viaje tenes q reiniciar el sv.

Me parece medio raro que seas s.mod de aca y de tutoriales de gs zone

Axters
Nivel 10
Nivel 10

¿BANEADO? : No.
Premios : Ninguno.
Cantidad de envíos : 1102
Edad : 18
Localización : Adrogue
Fecha de inscripción : 19/05/2012

Ver perfil de usuario

Volver arriba Ir abajo

Re: Sistemas de viajes.

Mensaje por Toyz el 16/2/2017, 3:34 am

Es muy simple, solamente se tiene que rellamar el método Carga().

Subí tu código para ver cómo está hecho y vemos si es más óptimo Razz, admito que no lo hice de la mejor manera, se me ocurren varios métodos más. Subí el tuyo cuando puedas Smile

GS-Zone no es el enemigo de S-A. Doy tutoriales acá y allá, el tema es que allá está más movido. Llegué a ser especialista allá y moderador acá al mismo tiempo.
(No desvirtuemos el tema con esto Razz)



_______________

Como saben yo aporto bastante en Servers-Argentum y les quiero decir que todos tienen derecho de usar y de aportar en otra comunidad mis aportes pero sólo con un requisito y es tan simple que dejar los créditos. Gracias.
Si conocen otra comunidad y en esa misma mis aportes no están aportados, si tenés tiempo y ganas, aportalo! A mucha gente le puede servir. No te olvides del requisito Razz

MIS MEJORES APORTES:

Compra/venta de personajes:
https://goo.gl/A44Av0

Juegos del Hambre:
https://goo.gl/u6aNUG

Deathmatch automático:
https://goo.gl/GQF4fK

Sistema de retos vía MMR con búsqueda, emparejamiento, etc:
https://goo.gl/40uP0f

Sistemas de eventos automáticos de 1vs1 hasta 10vs10:
https://goo.gl/XYKygc

1VS1 - AIM - MELEE - Gana Sigue (Se liberan cupos)
https://goo.gl/qq83wx

Retos 3vs3 - [Items, 2 rounds, múltiples arenas, oro]
https://goo.gl/x8SMnV

Eliminar sistema de Skill (COMPLETO)
https://goo.gl/mKxHzC
avatar
Toyz
Administrador
Administrador

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

Ver perfil de usuario

Volver arriba Ir abajo

Re: Sistemas de viajes.

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba


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