GS-Zone

Guía 0.12.1 para armar tu server Ir al Indice

Moderadores: Moderadores de Argentum, Especialistas de Argentum, Especialistas de Programación

65
Este tema se encuentra cerrado.

Nota » 01 May 2009 01:10

PoLiZe escribió:
Kapleo78 escribió:Linda guia :D(Buen Aporte), estaria bueno si poner labels de item seleccionado en inv y otro para que diga el nombre del mapa en el que el pj se encuentra :D..
Por que no lo encuentro a ese code xD!
Suerte :P


Tu firma me conmueve :|



Che no entendi lo qe posteo el otro sobre los mapas :|



estudiá un poco de programación y quiz´s entiendas.

Imagen
Usuario Registrado
153
Aprendiz [2]
Registrado: Años de membresíaAños de membresíaAños de membresía
Mensajes: 253
Aportes: 3

Nota » 01 May 2009 01:19

I AmishaR I escribió:
PoLiZe escribió:
Kapleo78 escribió:Linda guia :D(Buen Aporte), estaria bueno si poner labels de item seleccionado en inv y otro para que diga el nombre del mapa en el que el pj se encuentra :D..
Por que no lo encuentro a ese code xD!
Suerte :P


Tu firma me conmueve :|



Che no entendi lo qe posteo el otro sobre los mapas :|



estudiá un poco de programación y quiz´s entiendas.

No tengo porqué estudiar ya se lo basico y el cliente/server 0.12.1 no necesita ninguna modificacion(que yo sepa) en la programacion para los mapas porque eso va desde un .dat :) asi es en 0.11.5 :|

Usuario Registrado
42
Oraculo [3]
Registrado: Años de membresíaAños de membresíaAños de membresíaAños de membresía
Ubicación: Río Gallegos
Mensajes: 1576
Aportes: 15
Premios: 1
Embajador (1)

#NotaEste post ha sido eliminado por Pato en 01 May 2009 06:56.
Razón: xq me llevo mal con amishar y no le quiero dar la razon :)

Nota » 01 May 2009 23:06

PoLiZe escribió:
Tu firma me conmueve :|



Che no entendi lo qe posteo el otro sobre los mapas :|



PoLiZe escribió:No tengo porqué estudiar ya se lo basico y el cliente/server 0.12.1 no necesita ninguna modificacion(que yo sepa) en la programacion para los mapas porque eso va desde un .dat :) asi es en 0.11.5 :|



te explico acá es la parte de programación de 0.12.x no 0.11.5 y bueno vamos a dar un ejemplo

el maximo de levels es por ejemplo 255 , lo podemos modificar claro...

también existe otras limitaciones y no necesariamente tiene que ser del mapa o si,entonces si tenemos un error te saltan errores,como ocurre a veces run time 9,overflows demás cosas, que uno lo tiene que arreglar, desde todo lo que es el server...y vos podes poner en el map del server 1000 mapas pero ojo si pones 240 mapas reales te haria backup de 1000 mapas y tendrias error...espero comprendas un poco...saludos...

Imagen
Usuario Registrado
153
Aprendiz [2]
Registrado: Años de membresíaAños de membresíaAños de membresía
Mensajes: 253
Aportes: 3

Nota » 01 May 2009 23:16

Hola,me marie haciendo tantas cosas. Pero algunas no las encuentro. Alguien no se tomaria el tiempo y subiria el servidor listo. Y poner el link de descarga en otro aporte.

Si lo pueden hacer estare muy agredecido

Dee Jay Facha
14
Destructor de Mentes [1]
Registrado: Años de membresíaAños de membresíaAños de membresía
Ubicación: Dolores - Buenos Aires - Argentina
Mensajes: 515
Aportes: 3

Nota » 05 May 2009 02:46

bueno ahora ¿cómo hacemos para que el oro del npc vaya directo a la billetera? bien -

buscamos en el servidor :
  1.  Sub NPCTirarOro(MiNPC As npc)
  2.  
  3. 'SI EL NPC TIENE ORO LO TIRAMOS
  4. 'Pablo (ToxicWaste): Ahora se puede poner más de 10k de drop de oro en los NPC.
  5. If MiNPC.GiveGLD > 0 Then
  6.     Dim MiObj As Obj
  7.     Dim MiAux As Double
  8.     MiAux = MiNPC.GiveGLD
  9.     Do While MiAux > 10000
  10.         MiObj.amount = 10000
  11.         MiObj.ObjIndex = iORO
  12.         Call TirarItemAlPiso(MiNPC.Pos, MiObj)
  13.         MiAux = MiAux - 10000
  14.     Loop
  15.     If MiAux > 0 Then
  16.         MiObj.amount = MiAux
  17.         MiObj.ObjIndex = iORO
  18.         Call TirarItemAlPiso(MiNPC.Pos, MiObj)
  19.     End If
  20.    
  21. End If
  22.  
  23. End Sub


y reemplazamos por

  1.   Sub NPCTirarOro(MiNPC As npc, Optional UserIndex As Integer)
  2.  
  3. 'SI EL NPC TIENE ORO LO TIRAMOS
  4. 'Pablo (ToxicWaste): Ahora se puede poner más de 10k de drop de oro en los NPC.
  5. If MiNPC.GiveGLD > 0 Then
  6. MiNPC.GiveGLD = MiNPC.GiveGLD '* Multiplicador(1)
  7. Dim MiObj As Obj
  8. Dim MiAux As Double
  9. MiAux = MiNPC.GiveGLD
  10. Do While MiAux > 10000
  11. MiObj.amount = 10000
  12. MiObj.ObjIndex = iORO
  13. If UserIndex <> 0 Then
  14. UserList(UserIndex).Stats.GLD = UserList(UserIndex).Stats.GLD + MiNPC.GiveGLD
  15. Else
  16. 'Call WriteConsoleMsg(UserIndex, "||Si la criatura no es matada por tí, el oro no lo recibirás", FontTypeNames.FONTTYPE_GIVEORO)
  17. End If
  18. MiAux = MiAux - 10000
  19. Loop
  20. If MiAux > 0 Then
  21. MiObj.amount = MiAux
  22. MiObj.ObjIndex = iORO
  23. If UserIndex <> 0 Then
  24. UserList(UserIndex).Stats.GLD = UserList(UserIndex).Stats.GLD + MiNPC.GiveGLD
  25. Else
  26. 'Call WriteConsoleMsg(UserIndex, "||Si la criatura no es matada por tí, el oro no lo recibirás", FontTypeNames.FONTTYPE_GIVEORO)
  27. End If
  28. End If
  29.  
  30. End If
  31.  
  32. End Sub

Imagen
Usuario Registrado
153
Aprendiz [2]
Registrado: Años de membresíaAños de membresíaAños de membresía
Mensajes: 253
Aportes: 3

Nota » 05 May 2009 12:53

Buena Amishar completando tu Guia!:D

Fijate de ir editando y tratando de que quede todo en el primer post asi queda todo junto!:D

Silver

Imagen
Director y Programador
<Destruction-Ao>
Director y Programador Destruction-Ao
19
Destructor de Mentes [4]
Registrado: 5 Años de membresía!
Mensajes: 659
Aportes: 6

Nota » 05 May 2009 13:08

XSilverX escribió:Buena Amishar completando tu Guia!:D

Fijate de ir editando y tratando de que quede todo en el primer post asi queda todo junto!:D

Silver


Y trata de ponerle unos Spoiler asi esta organizado code por code


Muy buena la guia genio ;)

Segui asi

Imagen
UNUNQUADiO
24
Legendario Inmortal [1]
Registrado: Años de membresíaAños de membresíaAños de membresía
Mensajes: 4899
Aportes: 51
Premios: 2
Embajador (1) Detector de Bugs (1)

Nota » 05 May 2009 16:54

Petin escribió:
XSilverX escribió:Buena Amishar completando tu Guia!:D

Fijate de ir editando y tratando de que quede todo en el primer post asi queda todo junto!:D

Silver


Y trata de ponerle unos Spoiler asi esta organizado code por code


Muy buena la guia genio ;)

Segui asi

Muchas gracias petin...la guia la estoy siguiendo...como bien sabras es una version la cual atrajo muchos bugs y bueno veo la menera de que uno pueda armarla sin que le aparesca los overflows y run time...despues, si bien estamos en la etapa basica despues voy a agregar cosas mas adelantadas, si bien tengo un poyecto en mano, donde todos pueden participar , me gusta ayudar a las personas en el comienzo,no soy ni me la doy de gran programador pero creo que las cosas que aporte les sirva y mucho....despues subo otras cositas

Imagen
Usuario Registrado
153
Aprendiz [2]
Registrado: Años de membresíaAños de membresíaAños de membresía
Mensajes: 253
Aportes: 3

Nota » 05 May 2009 18:06

Proba haciendo como dice Petin, hace un Spoiler con cada uno de los codigos y los metes todos en el principio y te quedan ordenados y Grosos! :D

Cada vez mas compelta tu Guia Amishar!, esperando mas aportes tuyos ;).

Silver

Imagen
Director y Programador
<Destruction-Ao>
Director y Programador Destruction-Ao
19
Destructor de Mentes [4]
Registrado: 5 Años de membresía!
Mensajes: 659
Aportes: 6

Nota » 05 May 2009 18:08

/CARA PARA LA 12.1 , ESTO NO ES UN CIRUJANO COMO LA 11.5 SINO ALGO MAS SIMPLE Y COMPLEJO...Y MAS FACIL.[b]Bien en el servidor:

en protocol.bas buscamos
ahí en esa parte al final está
  1. CheckSlot               '/SLOT
debajo ponemos
Cara

ahora buscamos :

  1. Case ClientPacketID.CheckSlot               '/SLOT
  2.             Call HandleCheckSlot(UserIndex)
debajo ponemos

  1. Case ClientPacketID.Cara
  2.             Call HandleCara(UserIndex)
al terminar donde dice sub end agregamos

  1. Private Function CaraValida(ByVal UserIndex, Cara As Integer) As Boolean
  2. Dim UserRaza As Byte
  3. Dim UserGenero As Byte
  4. UserGenero = UserList(UserIndex).genero
  5. UserRaza = UserList(UserIndex).raza
  6. CaraValida = False
  7. Select Case UserGenero
  8.    Case eGenero.Hombre
  9.         Select Case UserRaza
  10.             Case eRaza.Humano
  11.                 CaraValida = CBool(Cara >= 1 And Cara <= 40)
  12.                 Exit Function
  13.             Case eRaza.Elfo
  14.                 CaraValida = CBool(Cara >= 101 And Cara <= 112)
  15.                 Exit Function
  16.             Case eRaza.Drow
  17.                 CaraValida = CBool(Cara >= 200 And Cara <= 210)
  18.                 Exit Function
  19.             Case eRaza.Enano
  20.                 CaraValida = CBool(Cara >= 300 And Cara <= 306)
  21.                 Exit Function
  22.             Case eRaza.Gnomo
  23.                 CaraValida = CBool(Cara >= 403 And Cara <= 406)
  24.                 Exit Function
  25.         End Select
  26.    Case eGenero.Mujer
  27.         Select Case UserRaza
  28.             Case eRaza.Humano
  29.                 CaraValida = CBool(Cara >= 70 And Cara <= 79)
  30.                 Exit Function
  31.             Case eRaza.Elfo
  32.                 CaraValida = CBool(Cara >= 170 And Cara <= 178)
  33.                 Exit Function
  34.             Case eRaza.Drow
  35.                 CaraValida = CBool(Cara >= 270 And Cara <= 278)
  36.                 Exit Function
  37.             Case eRaza.Enano
  38.                 CaraValida = CBool(Cara >= 370 And Cara <= 372)
  39.                 Exit Function
  40.             Case eRaza.Gnomo
  41.                 CaraValida = CBool(Cara >= 470 And Cara <= 476)
  42.                 Exit Function
  43.         End Select
  44. End Select
  45. CaraValida = False
  46. End Function


bien terminada esta función debajo ponemos :

  1. Private Sub HandleCara(ByVal UserIndex As Integer)
  2. Dim nHead As Integer
  3. Call UserList(UserIndex).incomingData.ReadByte
  4. nHead = UserList(UserIndex).incomingData.ReadInteger
  5. If CaraValida(UserIndex, nHead) Then
  6.     UserList(UserIndex).Char.Head = nHead
  7.     UserList(UserIndex).OrigChar.Head = nHead
  8.     Call ChangeUserChar(UserIndex, UserList(UserIndex).Char.body, UserList(UserIndex).Char.Head, UserList(UserIndex).Char.heading, UserList(UserIndex).Char.WeaponAnim, UserList(UserIndex).Char.ShieldAnim, UserList(UserIndex).Char.CascoAnim)
  9. Else
  10.     Call WriteConsoleMsg(UserIndex, "El número de cabeza no corresponde a tu género o raza.", FontTypeNames.FONTTYPE_CENTINELA)
  11. End If
  12. End Sub

AHORA BIEN YA TENEMOS TODO EN EL SERVIDOR AHORA LO MAS FACIL:

EN EL CLIENTE: En el protocolcmdparse debajo de

  1. Case "/PING"
  2.                 Call WritePing
ponemos

  1. Case "/CARA"
  2.           If notNullArguments Then
  3.            If ValidNumber(ArgumentosRaw, ent_Integer) Then
  4.                     Call WriteHead(ArgumentosRaw)
  5.                     Else
  6.                     Call ShowConsoleMsg("El número de cabeza es incorrecto.")
  7.                     End If
  8.                 Else
  9.                     Call ShowConsoleMsg("Faltan parámetros. Utilice /cara NUMERO.")
  10.                 End If


ahora lo último en protocol.bas

ahí en esa parte al final está
  1. CheckSlot               '/SLOT
debajo ponemos
Cara

al terminar ponemos en el mismo modulo debajo

  1. Public Sub WriteHead(ByVal Head As Integer)
  2. Call outgoingData.WriteByte(ClientPacketID.Cara)
  3. Call outgoingData.WriteInteger(Head)
  4. End Sub






y listo por ejemplo quiero la cara azul , y el pj que me creé tiró buena vida al empezar o me gustó el nombre y pongo /cara 4 y listo


^']Te agregue los cuadros de código para que se vea mas ordenado ^^


saludos.

Imagen
Usuario Registrado
153
Aprendiz [2]
Registrado: Años de membresíaAños de membresíaAños de membresía
Mensajes: 253
Aportes: 3

Nota » 05 May 2009 18:39

Esta bueno el codigo, pero lo que no me gusta de estos codigos es que no puedan elegir la cabeza sabiendo cual es... hay mucha gente que no conoce los numeros de las cabezas y tiene que saber el numero.
Por otro lado no lei bien pero hace el control de Cara por Sexo y Raza?
Si hace el control... no dije anda xD.

Silver

Imagen
Director y Programador
<Destruction-Ao>
Director y Programador Destruction-Ao
19
Destructor de Mentes [4]
Registrado: 5 Años de membresía!
Mensajes: 659
Aportes: 6

Nota » 05 May 2009 18:44

si el control de cara lo hace por raza y género obviamente :D

Imagen
Usuario Registrado
153
Aprendiz [2]
Registrado: Años de membresíaAños de membresíaAños de membresía
Mensajes: 253
Aportes: 3

Nota » 05 May 2009 18:53

la verdad muy bueno... tendrias qur poner los codes con spoilders y lo editas en el principio del th. asi quedaria muy organizado... si tendria algun servidor o pensado hacerlo esta guia me lo falicita

agregame... Sgimz-c.22@hotmail.com

Nota » 05 May 2009 18:59

I AmishaR I escribió:bueno ahora ¿cómo hacemos para que el oro del npc vaya directo a la billetera? bien -

buscamos en el servidor :
  1.  Sub NPCTirarOro(MiNPC As npc)
  2.  
  3. 'SI EL NPC TIENE ORO LO TIRAMOS
  4. 'Pablo (ToxicWaste): Ahora se puede poner más de 10k de drop de oro en los NPC.
  5. If MiNPC.GiveGLD > 0 Then
  6.     Dim MiObj As Obj
  7.     Dim MiAux As Double
  8.     MiAux = MiNPC.GiveGLD
  9.     Do While MiAux > 10000
  10.         MiObj.amount = 10000
  11.         MiObj.ObjIndex = iORO
  12.         Call TirarItemAlPiso(MiNPC.Pos, MiObj)
  13.         MiAux = MiAux - 10000
  14.     Loop
  15.     If MiAux > 0 Then
  16.         MiObj.amount = MiAux
  17.         MiObj.ObjIndex = iORO
  18.         Call TirarItemAlPiso(MiNPC.Pos, MiObj)
  19.     End If
  20.    
  21. End If
  22.  
  23. End Sub


y reemplazamos por

  1.   Sub NPCTirarOro(MiNPC As npc, Optional UserIndex As Integer)
  2.  
  3. 'SI EL NPC TIENE ORO LO TIRAMOS
  4. 'Pablo (ToxicWaste): Ahora se puede poner más de 10k de drop de oro en los NPC.
  5. If MiNPC.GiveGLD > 0 Then
  6. MiNPC.GiveGLD = MiNPC.GiveGLD '* Multiplicador(1)
  7. Dim MiObj As Obj
  8. Dim MiAux As Double
  9. MiAux = MiNPC.GiveGLD
  10. Do While MiAux > 10000
  11. MiObj.amount = 10000
  12. MiObj.ObjIndex = iORO
  13. If UserIndex <> 0 Then
  14. UserList(UserIndex).Stats.GLD = UserList(UserIndex).Stats.GLD + MiNPC.GiveGLD
  15. Else
  16. 'Call WriteConsoleMsg(UserIndex, "||Si la criatura no es matada por tí, el oro no lo recibirás", FontTypeNames.FONTTYPE_GIVEORO)
  17. End If
  18. MiAux = MiAux - 10000
  19. Loop
  20. If MiAux > 0 Then
  21. MiObj.amount = MiAux
  22. MiObj.ObjIndex = iORO
  23. If UserIndex <> 0 Then
  24. UserList(UserIndex).Stats.GLD = UserList(UserIndex).Stats.GLD + MiNPC.GiveGLD
  25. Else
  26. 'Call WriteConsoleMsg(UserIndex, "||Si la criatura no es matada por tí, el oro no lo recibirás", FontTypeNames.FONTTYPE_GIVEORO)
  27. End If
  28. End If
  29.  
  30. End If
  31.  
  32. End Sub


Falto algo aca, asi se va a buguear todo ;S!!en el sub MuereNpc en donde dice Call NPCTirarOro(MiNPC) hay q reemplazar por Call NPCTirarOro(MiNPC, UserIndex)..y en el sub NpcTirarOro hay cosas al pedo ;S, quedaron cosas del sub normal..rinde hacerlo asi

  1. Sub NPCTirarOro(MiNPC As npc, ByVal UserIndex As Integer)
  2.  
  3. If MiNPC.GiveGLD > 0 Then
  4.     UserList(UserIndex).Stats.GLD = UserList(UserIndex).Stats.GLD + MiNPC.GiveGLD
  5.     Call WriteConsoleMsg(UserIndex, "Has ganado " & MiNPC.GiveGLD & " monedas de oro", FontTypeNames.FONTTYPE_INFO)
  6.     Call WriteUpdateUserStats(UserIndex)
  7. End If
  8.  
  9. End Sub


Simple y funcional :)!
Usuario Registrado
327
Destructor de Mentes [4]
Registrado: Años de membresíaAños de membresíaAños de membresía
Mensajes: 670
Aportes: 2

Este tema se encuentra cerrado.
AnteriorSiguiente

Volver a AO 0.12.x

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados