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 » 24 Abr 2009 03:48

Última edición por I AmishaR I el 06 May 2009 00:32, editado 1 vez en total

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 » 24 Abr 2009 03:59

Y como sigue esta guia?

Silver

P.D: Para vos "AmishaR" :D

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 » 24 Abr 2009 04:01

bien sigamos ya casi tenemos lo básico
ahora supongamos que queremos que los skills suban con 100% de efectividad

bien vamos a usuarios y buscamos esto

  1. Sub SubirSkill(ByVal UserIndex As Integer, ByVal Skill As Integer)
  2.  
  3.     If UserList(UserIndex).flags.Hambre = 0 And UserList(UserIndex).flags.Sed = 0 Then
  4.        
  5.         If UserList(UserIndex).Stats.UserSkills(Skill) = MAXSKILLPOINTS Then Exit Sub
  6.        
  7.         Dim Lvl As Integer
  8.         Lvl = UserList(UserIndex).Stats.ELV
  9.        
  10.         If Lvl > UBound(LevelSkill) Then Lvl = UBound(LevelSkill)
  11.        
  12.         If UserList(UserIndex).Stats.UserSkills(Skill) >= LevelSkill(Lvl).LevelValue Then Exit Sub
  13.    
  14.         Dim Aumenta As Integer
  15.         Dim Prob As Integer
  16.        
  17.         If Lvl <= 3 Then
  18.             Prob = 25
  19.         ElseIf Lvl > 3 And Lvl < 6 Then
  20.             Prob = 35
  21.         ElseIf Lvl >= 6 And Lvl < 10 Then
  22.             Prob = 40
  23.         ElseIf Lvl >= 10 And Lvl < 20 Then
  24.             Prob = 45
  25.         Else
  26.             Prob = 50
  27.         End If        
  28.  
  29. Aumenta = RandomNumber(1, Prob)
  30.        
  31.         If Aumenta = 7 Then
  32.             UserList(UserIndex).Stats.UserSkills(Skill) = UserList(UserIndex).Stats.UserSkills(Skill) + 1
  33.             Call WriteConsoleMsg(UserIndex, "¡Has mejorado tu skill " & SkillsNames(Skill) & " en un punto!. Ahora tienes " & UserList(UserIndex).Stats.UserSkills(Skill) & " pts.", FontTypeNames.FONTTYPE_INFO)
  34.            
  35.             UserList(UserIndex).Stats.Exp = UserList(UserIndex).Stats.Exp + 50
  36.             If UserList(UserIndex).Stats.Exp > MAXEXP Then _
  37.                 UserList(UserIndex).Stats.Exp = MAXEXP
  38.            
  39.             Call WriteConsoleMsg(UserIndex, "¡Has ganado 50 puntos de experiencia!", FontTypeNames.FONTTYPE_FIGHT)
  40.            
  41.             Call WriteUpdateExp(UserIndex)
  42.             Call CheckUserLevel(UserIndex)
  43.         End If
  44.     End If
  45.  
  46. End Sub

y lo reemplazamos por

  1.  
  2. Sub SubirSkill(ByVal UserIndex As Integer, ByVal Skill As Integer)
  3.  
  4.     If UserList(UserIndex).flags.Hambre = 0 And UserList(UserIndex).flags.Sed = 0 Then
  5.        
  6.         If UserList(UserIndex).Stats.UserSkills(Skill) = MAXSKILLPOINTS Then Exit Sub
  7.        
  8.         Dim Lvl As Integer
  9.         Lvl = UserList(UserIndex).Stats.ELV
  10.        
  11.         If Lvl > UBound(LevelSkill) Then Lvl = UBound(LevelSkill)
  12.        
  13.         If UserList(UserIndex).Stats.UserSkills(Skill) >= LevelSkill(Lvl).LevelValue Then Exit Sub
  14.    
  15.         Dim Aumenta As Integer
  16.         Dim Prob As Integer
  17.        
  18.         If Lvl <= 1 Then
  19.             Prob = 100
  20.         ElseIf Lvl > 1 And Lvl < 1 Then
  21.             Prob = 100
  22.         ElseIf Lvl >= 1 And Lvl < 1 Then
  23.             Prob = 100
  24.         ElseIf Lvl >= 1 And Lvl < 1 Then
  25.             Prob = 100
  26.         Else
  27.             Prob = 100
  28.         End If
  29.        
  30.         Aumenta = RandomNumber(100, Prob)
  31.        
  32.         If Aumenta = 100 Then
  33.             UserList(UserIndex).Stats.UserSkills(Skill) = UserList(UserIndex).Stats.UserSkills(Skill) + 1
  34.             Call WriteConsoleMsg(UserIndex, "¡Has mejorado tu skill " & SkillsNames(Skill) & " en un punto!. Ahora tienes " & UserList(UserIndex).Stats.UserSkills(Skill) & " pts.", FontTypeNames.FONTTYPE_INFO)
  35.            
  36.             UserList(UserIndex).Stats.Exp = UserList(UserIndex).Stats.Exp + 50
  37.             If UserList(UserIndex).Stats.Exp > MAXEXP Then _
  38.                 UserList(UserIndex).Stats.Exp = MAXEXP
  39.            
  40.             Call WriteConsoleMsg(UserIndex, "¡Has ganado 50 puntos de experiencia!", FontTypeNames.FONTTYPE_FIGHT)
  41.            
  42.             Call WriteUpdateExp(UserIndex)
  43.             Call CheckUserLevel(UserIndex)
  44.         End If
  45.     End If
  46.  
  47. End Sub
ya está de este modo tenemos los skills fáciles

ahora vienen las clases trabajadoras por ejemplo

Dotalar bueno buscamos esto Sub DoTalar y veremos algo parecido a esto

  1.  If UserList(UserIndex).clase = eClass.Lumberjack Then
  2.         MiObj.amount = RandomNumber(1, 4)
  3.     Else
  4.         MiObj.amount = 1
  5.     End If


simplemente cambiamos esto si quiero que por ejemplo tale de 10 a 25

  1.  If UserList(UserIndex).clase = eClass.Lumberjack Then
  2.         MiObj.amount = RandomNumber(10, 25)
  3.     Else
  4.         MiObj.amount = 1
  5.     End If

lo mismo hacemos en pescar y minar pero ojo si queremos que lingotee de a 50 por ejemplo no se olviden que un lingote pide 14 el de hierro 20 el de plata y 35 el de oro multiplicamos por ejemplo asi

  1. Private Function MineralesParaLingote(ByVal Lingote As iMinerales) As Integer
  2.     Select Case Lingote
  3.         Case iMinerales.HierroCrudo
  4.             MineralesParaLingote = 14
  5.         Case iMinerales.PlataCruda
  6.             MineralesParaLingote = 20
  7.         Case iMinerales.OroCrudo
  8.             MineralesParaLingote = 35
  9.         Case Else
  10.             MineralesParaLingote = 10000
  11.     End Select
  12. End Function

pero como nosotros queremos que lingotee de a 50 lo reemplazamos por


  1. Private Function MineralesParaLingote(ByVal Lingote As iMinerales) As Integer
  2.     Select Case Lingote
  3.         Case iMinerales.HierroCrudo
  4.             MineralesParaLingote = 700
  5.         Case iMinerales.PlataCruda
  6.             MineralesParaLingote = 1000
  7.         Case iMinerales.OroCrudo
  8.             MineralesParaLingote = 1750
  9.         Case Else
  10.             MineralesParaLingote = 10000
  11.     End Select
  12. End Function


última cosita después voy agregando mas a medida que vayan pidiendo a muchos les gustan que los nombres esten siempre visible

esto se hace en el codigo del cliente

  1. If Nombres And Abs(nX - X) < 2 And (Abs(nY - Y)) < 2 Then
  2.  
y ponemos lo reemplazamos por
[code=vb]if nombres then[/code
]

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 » 24 Abr 2009 06:43

Ta wena la guia , te digo que estaria bueno que pongas:
-Cambiar IP y puerto
-Labels de vida/mana/energia/hambre/sed

Imagen
Graficador^
17
Aprendiz [4]
Registrado: Años de membresíaAños de membresíaAños de membresíaAños de membresía
Mensajes: 357
Aportes: 2

Nota » 24 Abr 2009 09:30

tambien labels de armadura, escudo, casco , y arma xd


muchas gracias linda guia

Cancelar "nuestro dios"
Judio lider
83
Oraculo [2]
Registrado: Años de membresíaAños de membresíaAños de membresía
Mensajes: 1479
Aportes: 11

Nota » 24 Abr 2009 09:40

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

Imagen
No existen comentarios tontos.... Sino tontos que comentan.
| Las Pastillas del Abuelo |
120
Aprendiz [7]
Registrado: Años de membresíaAños de membresíaAños de membresía
Mensajes: 466
Aportes: 2
Premios: 1
Campeón de Truco (1)

Nota » 24 Abr 2009 09:49

Lindo aporte AmishaR, parece que lo terminaste xD.
Yo hay algunas cositas que las hubiese optimizado o programado de otra forma, pero funcionar, funciona y eso es lo mas importante!:D
Fijate si tenes ganas de agregar el tema ese de que puedan potear mientras medita(No me acuerdo si en esta version te deja por Default) y sacar la "concentracion" al momento de meditar.

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 » 27 Abr 2009 14:16

Dieh escribió:Ta wena la guia , te digo que estaria bueno que pongas:
-Cambiar IP y puerto
-Labels de vida/mana/energia/hambre/sed



Bueno la ip y demás es algo fácil...la guía no terminó solo que no tuve internet..

Bueno,para poner la ip en el cliente y no en el sinfo del dat

así que ahora después lo agrego bien chicos...si quieren hacer preguntas haganlas

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 » 27 Abr 2009 14:21

Buen Aporte. lo raro es qe yo habia hecho una guia y la aporte pero me la borraron y no se xq entonces me encabrone y subi la del 0.11.5 xD

Twitter: Cris_Conde95
Imagen

For ever and ever.. ALONE
Zona Ganjah and the positive vibration♪
496
Moderador
Registrado: Años de membresíaAños de membresíaAños de membresía
Ubicación: Bs.As Provincia.Florida Oeste
Mensajes: 2290
Aportes: 21
Premios: 3
Mejor amigo del año (1) Embajador (2)

Nota » 27 Abr 2009 15:36

  1.  
  2. Sub SubirSkill(ByVal UserIndex As Integer, ByVal Skill As Integer)
  3.  
  4.     If UserList(UserIndex).flags.Hambre = 0 And UserList(UserIndex).flags.Sed = 0 Then
  5.        
  6.         If UserList(UserIndex).Stats.UserSkills(Skill) = MAXSKILLPOINTS Then Exit Sub
  7.        
  8.         Dim Lvl As Integer
  9.         Lvl = UserList(UserIndex).Stats.ELV
  10.        
  11.         If Lvl > UBound(LevelSkill) Then Lvl = UBound(LevelSkill)
  12.        
  13.         If UserList(UserIndex).Stats.UserSkills(Skill) >= LevelSkill(Lvl).LevelValue Then Exit Sub
  14.    
  15.         Dim Aumenta As Integer
  16.         Dim Prob As Integer
  17.        
  18.         If Lvl <= 1 Then
  19.             Prob = 100
  20.         ElseIf Lvl > 1 And Lvl < 1 Then
  21.             Prob = 100
  22.         ElseIf Lvl >= 1 And Lvl < 1 Then
  23.             Prob = 100
  24.         ElseIf Lvl >= 1 And Lvl < 1 Then
  25.             Prob = 100
  26.         Else
  27.             Prob = 100
  28.         End If
  29.        
  30.         Aumenta = RandomNumber(100, Prob)
  31.        
  32.         If Aumenta = 100 Then
  33.             UserList(UserIndex).Stats.UserSkills(Skill) = UserList(UserIndex).Stats.UserSkills(Skill) + 1
  34.             Call WriteConsoleMsg(UserIndex, "¡Has mejorado tu skill " & SkillsNames(Skill) & " en un punto!. Ahora tienes " & UserList(UserIndex).Stats.UserSkills(Skill) & " pts.", FontTypeNames.FONTTYPE_INFO)
  35.            
  36.             UserList(UserIndex).Stats.Exp = UserList(UserIndex).Stats.Exp + 50
  37.             If UserList(UserIndex).Stats.Exp > MAXEXP Then _
  38.                 UserList(UserIndex).Stats.Exp = MAXEXP
  39.            
  40.             Call WriteConsoleMsg(UserIndex, "¡Has ganado 50 puntos de experiencia!", FontTypeNames.FONTTYPE_FIGHT)
  41.            
  42.             Call WriteUpdateExp(UserIndex)
  43.             Call CheckUserLevel(UserIndex)
  44.         End If
  45.     End If
  46.  
  47. End Sub


Lo que me decias por MSN, yo hubiese optimizado, para sacar una Funcion, la "RandomNumber" y para evitar la condicion hubiese hecho esto.

  1.  
  2. Sub SubirSkill(ByVal UserIndex As Integer, ByVal Skill As Integer)
  3.  
  4.     If UserList(UserIndex).flags.Hambre = 0 And UserList(UserIndex).flags.Sed = 0 Then
  5.        
  6.         If UserList(UserIndex).Stats.UserSkills(Skill) = MAXSKILLPOINTS Then Exit Sub
  7.        
  8.         Dim Lvl As Integer
  9.         Lvl = UserList(UserIndex).Stats.ELV
  10.        
  11.         If Lvl > UBound(LevelSkill) Then Lvl = UBound(LevelSkill)
  12.        
  13.         If UserList(UserIndex).Stats.UserSkills(Skill) >= LevelSkill(Lvl).LevelValue Then Exit Sub  
  14.      
  15.             UserList(UserIndex).Stats.UserSkills(Skill) = UserList(UserIndex).Stats.UserSkills(Skill) + 1
  16.             Call WriteConsoleMsg(UserIndex, "¡Has mejorado tu skill " & SkillsNames(Skill) & " en un punto!. Ahora tienes " & UserList(UserIndex).Stats.UserSkills(Skill) & " pts.", FontTypeNames.FONTTYPE_INFO)
  17.            
  18.             UserList(UserIndex).Stats.Exp = UserList(UserIndex).Stats.Exp + 50
  19.             If UserList(UserIndex).Stats.Exp > MAXEXP Then _
  20.                 UserList(UserIndex).Stats.Exp = MAXEXP
  21.            
  22.             Call WriteConsoleMsg(UserIndex, "¡Has ganado 50 puntos de experiencia!", FontTypeNames.FONTTYPE_FIGHT)
  23.            
  24.             Call WriteUpdateExp(UserIndex)
  25.             Call CheckUserLevel(UserIndex)
  26.         End If
  27.  
  28. End Sub


De esa forma sacamos la Funcion y directamente sacamos la condicion y siempre que entre a esta Sub va a subirle el skill de 1 :D

Silver

P.D: Corrijanme si me equivoco

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 » 28 Abr 2009 14:05

yo creo que así tendrías errores futuros...de onda te lo digo.


bueno el tema de poner la ip y puerto no visible en el cliente lo pueden hacer en el conect

por ejemplo así
  1. Private Sub Image1_Click(index As Integer)
  2.  
  3. Call Audio.PlayWave(SND_CLICK)
  4.  
  5. If ServersRecibidos Then
  6.     If Not IsIp(IPTxt) And CurServer <> 0 Then
  7.         If MsgBox("Atencion, está intentando conectarse a un servidor no oficial, NoLand Studios no se hace responsable de los posibles problemas que estos servidores presenten. ¿Desea continuar?", vbYesNo) = vbNo Then
  8.             If CurServer <> 0 Then
  9.                 IPTxt = ServersLst(CurServer).Ip
  10.                 PortTxt = ServersLst(CurServer).Puerto
  11.             Else
  12.                 IPTxt = IPdelServidor
  13.                 PortTxt = PuertoDelServidor
  14.             End If
  15.             Exit Sub
  16.         End If
  17.     End If
  18. End If
  19. CurServer = 0
  20. IPdelServidor = IPTxt
  21. PuertoDelServidor = PortTxt
  22.  
  23. Select Case index
  24.     Case 0
  25.         Call Audio.PlayMIDI("7.mid")
  26.        
  27.         EstadoLogin = E_MODO.Dados
  28. #If UsarWrench = 1 Then
  29.         If frmMain.Socket1.Connected Then
  30.             frmMain.Socket1.Disconnect
  31.             frmMain.Socket1.Cleanup
  32.             DoEvents
  33.         End If
  34.         frmMain.Socket1.HostName = "190.210.60.20"
  35.         frmMain.Socket1.RemotePort = 18787
  36.         frmMain.Socket1.Connect
  37. #Else
  38.         If frmMain.Winsock1.State <> sckClosed Then
  39.             frmMain.Winsock1.Close
  40.             DoEvents
  41.         End If
  42.         frmMain.Winsock1.Connect "190.210.60.20", 18787
  43. #End If
  44.  
  45.     Case 1
  46.    
  47.         frmOldPersonaje.Show vbModal
  48.        
  49.     Case 2
  50.         On Error GoTo errH
  51.         Call Shell(App.path & "\RECUPERAR.EXE", vbNormalFocus)
  52.  
  53. End Select
  54. Exit Sub
  55.  
  56. errH:
  57.     Call MsgBox("No se encuentra el programa recuperar.exe", vbCritical, "Argentum Online")
  58. End Sub


de este modo no te aparecerá el cartelito de que te estás conectado a un server no oficial, ocultando la ip y puerto ,después hago otro aporte mas,no puedo hacer doble post, es una utildad para los gms, algo simple pero ayuda mucho.

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 » 30 Abr 2009 01:43

y si quiero agregar mas mapas pero desde el dat lo puse de map y no me lo toma que hago?

muy linda guía

Nota » 30 Abr 2009 01:44

mushu escribió:y si quiero agregar mas mapas pero desde el dat lo puse de map y no me lo toma que hago?

muy linda guía

ahi colocas el numero de mapas en map.dat

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)

Nota » 30 Abr 2009 01:50

claro,pero si el mapa tiene lluvia y demás y el cliente no lo toma...tiraría rum time 9 ...en el dat map del server ponés los mapas que tenés pero por ejemplo no podés cargar 300 mapas por ejemplo...un ejemplo claro

sería poner


vamos al cliente general cargararraylluvia

buscamos

y lo reemplazamos por

  1. 'num de cabezas
  2.     Get #N, , Nu
  3. nu=300
de este modo 300 mapas sin problemas...

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:06

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 :|

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)

Este tema se encuentra cerrado.
Siguiente

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