[Aportes indexados] Como crear un Cliente Propio para AO-Ready - 100% funcional

Estado
Cerrado para nuevas respuestas.

Kasa

Plus ?ºa change, plus cÔÇÖest la m?¬me chose.
Ex-Staff
Bueno con esto quiero ayudar a todos los que quieran hacer un cliente propio empezemos desde 0 con el codigo base del alkon como ejemplo.
(IMPORTANTE: Siempre hacer una copia antes de realizar cambios)

Codigo Solamente Utilizable en AO 0.11.2 & AO Ready

Vamos al FrmConnect.
y borramos todo el code que tenga adentro y cambiar por esto
[vb]
 
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 27 Then
        frmCargando.Show
        frmCargando.Refresh
        AddtoRichTextBox frmCargando.Status, "Cerrando Argentum Online.", 0, 0, 0, 1, 0, 1
       
        Call SaveGameini
        frmConnect.MousePointer = 1
        frmMain.MousePointer = 1
        prgRun = False
       
        AddtoRichTextBox frmCargando.Status, "Liberando recursos..."
        frmCargando.Refresh
        LiberarObjetosDX
        AddtoRichTextBox frmCargando.Status, "Hecho", 0, 0, 0, 1, 0, 1
        AddtoRichTextBox frmCargando.Status, "¡¡Gracias por jugar Argentum Online!!", 0, 0, 0, 1, 0, 1
        frmCargando.Refresh
        Call UnloadAllForms
End If
End Sub
 
Private Sub Form_Load()
    '[CODE 002]:MatuX
    EngineRun = False
    '[END]
   
 Dim j
 For Each j In Image1()
    j.Tag = "0"
 Next
 
 
 
 
 '
Código:
:MatuX
 '
 '  El código para mostrar la versión se genera acá para
 ' evitar que por X razones luego desaparezca, como suele
 ' pasar a veces <!-- s:) --><img src=\"{SMILIES_PATH}/icon_smile.gif\" alt=\":)\" title=\"Smile\" /><!-- s:) -->
    version.Caption = "v" & App.Major & "." & App.Minor & " Beta"
 '[END]'
 
End Sub
 
 
 
Private Sub Image1_Click(Index As Integer)
 
Call PlayWaveDS(SND_CLICK)
 
Select Case Index
    Case 0
        
        If Musica = 0 Then
            CurMidi = DirMidi & "7.mid"
            LoopMidi = 1
            Call CargarMIDI(CurMidi)
            Call Play_Midi
        End If
        
        
        
        'frmCrearPersonaje.Show vbModal
        EstadoLogin = Dados
#If UsarWrench = 1 Then
        If frmMain.Socket1.Connected Then
            frmMain.Socket1.Disconnect
            frmMain.Socket1.Cleanup
        End If
        frmMain.Socket1.HostName = "acavalaip"
        frmMain.Socket1.RemotePort = "7666"
        frmMain.Socket1.Connect
#Else
        If frmMain.Winsock1.State <> sckClosed Then
            frmMain.Winsock1.Close
        End If
        frmMain.Winsock1.Connect "acavalaip", "7666"
#End If
        Me.MousePointer = 11
Case 1
   
#If UsarWrench = 1 Then
If frmMain.Socket1.Connected Then frmMain.Socket1.Disconnect
#Else
If frmMain.Winsock1.State <> sckClosed Then _
frmMain.Winsock1.Close
#End If
If frmConnect.MousePointer = 11 Then
Exit Sub
End If
 
 
'update user info
UserName = Nametxt.Text
Dim aux As String
aux = passwordTxt.Text
UserPassword = MD5String(aux)
If CheckUserData(False) = True Then
'SendNewChar = False
EstadoLogin = Normal
Me.MousePointer = 11
#If UsarWrench = 1 Then
frmMain.Socket1.HostName = "Acavalaip"
frmMain.Socket1.RemotePort = "7666"
frmMain.Socket1.Connect
#Else
If frmMain.Winsock1.State <> sckClosed Then _
frmMain.Winsock1.Close
frmMain.Winsock1.Connect "Acavalaip", "7666"
#End If
End If
 
End Select
End Sub
 [/vb]

Luego en mod_general buscamos
[vb]
 
Public Sub CargarServidores()
On Error GoTo errorH
Dim f As String
Dim C As Integer
Dim I As Integer
 
f = App.Path & "\init\sinfo.dat"
C = Val(GetVar(f, "INIT", "Cant"))
 
ReDim ServersLst(1 To C) As tServerInfo
For I = 1 To C
    ServersLst(I).desc = GetVar(f, "S" & I, "Desc")
    ServersLst(I).Ip = Trim(GetVar(f, "S" & I, "Ip"))
    ServersLst(I).PassRecPort = Val(GetVar(f, "S" & I, "P2"))
    ServersLst(I).Puerto = Val(GetVar(f, "S" & I, "PJ"))
Next I
CurServer = 1
Exit Sub
 
errorH:
    Call MsgBox("Error cargando los servidores, actualicelos de la web", vbCritical + vbOKOnly, "Argentum Online")
End Sub
 
Public Sub InitServersList(ByVal Lst As String)
 
On Error Resume Next
 
Dim NumServers As Integer
Dim I As Integer, Cont As Integer
I = 1
 
Do While (ReadField(I, RawServersList, Asc(";")) <> "")
    I = I + 1
    Cont = Cont + 1
Loop
 
ReDim ServersLst(1 To Cont) As tServerInfo
 
For I = 1 To Cont
    Dim cur$
    cur$ = ReadField(I, RawServersList, Asc(";"))
    ServersLst(I).Ip = ReadField(1, cur$, Asc(":"))
    ServersLst(I).Puerto = ReadField(2, cur$, Asc(":"))
    ServersLst(I).desc = ReadField(4, cur$, Asc(":"))
    ServersLst(I).PassRecPort = ReadField(3, cur$, Asc(":"))
Next I
 
CurServer = 1
 
 
 
End Sub
 
Public Function CurServerPasRecPort() As Integer
 
If CurServer <> 0 Then
'    CurServerPasRecPort = ServersLst(CurServer).PassRecPort
    CurServerPasRecPort = 7667
    
Else
    CurServerPasRecPort = CInt(frmConnect.PortTxt)
End If
 
End Function
 
 
Public Function CurServerIp() As String
 
If CurServer <> 0 Then
    CurServerIp = ServersLst(CurServer).Ip
Else
    CurServerIp = frmConnect.IPTxt
End If
 
End Function
 
Public Function CurServerPort() As Integer
 
If CurServer <> 0 Then
    CurServerPort = ServersLst(CurServer).Puerto
Else
    CurServerPort = CInt(frmConnect.PortTxt)
End If
End Function
 [/vb]
Y simplemente lo borramos todo.
Luego buscamos
[vb]
 
Call CargarServidores
ServersRecibidos = True
'IPdelServidor =
'PuertoDelServidor = 7666
 [/vb]
y lo borramos
Luego vamos a frmPasswd y buscamos
[vb]
 
#If UsarWrench = 1 Then
    frmMain.Socket1.HostName = Curserverip
    frmMain.Socket1.RemotePort = Curserverport
#End If
 [/vb]
y lo reemplazamos por
[vb]
 
#If UsarWrench = 1 Then
    frmMain.Socket1.HostName = "acavalaip"
    frmMain.Socket1.RemotePort = "7666"
#End If
 [/vb]
Repetimos estos pasos en FrmPasswdSinPadrinos

Lo que sigue lo  es simplemente borrar del frmConnect(objeto) todo lo que no necesiten(es decir todo menos el Image1 de Conectar y CrearPj)
y tienen Que crear Dos TextBox nuevos Uno con nombre "Passwordtxt" y "nameTxt" al passwordtxt en las propiedades en PasswordChar ponen "*" esto es para que muestre asteriscos en ves de nuestra clave.
Creo que con esto es suficiente para lograrlo

EDIT:
Ya si quieren cambiar lo de BorrarPJ y RecuperarPasswd.. es otra cosa.
Ya que el recuperarPasswd y el borrar Pj segun tengo entendido se tienen que configurar...

P.D: el codigo del Launcher lo pueden encontrar buscando en el foro 
---------------------------------------------------------------------------
[b]Creditos:[/b]
By Kasa
Agradecimiento a Chots(ya que gracias a un post de el Logre esto)
----------------------------------------------------------------------------
Olvidense del Sinfo.dat es historia... borrenlo ponganle la ip que quieran ahora es inservible 

EDIT: 
Para ponerle una imagen de Fondo Al Conectar deben de
* Usar la propiedad Picture.
* O directamente ponerle en el Form_load
[vb]
FrmConnect.Picture = LoadPicture(App.Path & "\Graficos\Conectar.jpg")[/vb]
Pongo FrmConnect por si borrar el Image FONDO de no haber borrado el Image FONDO entonces pueden poner
[vb]
 FONDO.Picture = LoadPicture(App.Path & "\Graficos\Conectar.jpg")[/vb]
 

CHOTS

Director LapsusAO
Te felicito... pero me parece q tendrias q especificar q es solo aplicable a 0112 (por el sistemapadrinos y por la ausencia de seguridadalkon) y creo q todo eso q pusiste lo podrias reemplazar sencillamente por cambiar las 2 funciones:

CurserverIp y CurserverPort

Creo, no lei muy bien tu Code... Pero igual me parece bien q lo hayas posteado :wink:
 

Kasa

Plus ?ºa change, plus cÔÇÖest la m?¬me chose.
Ex-Staff
tenes razon me falto este pequeño detalle:
Codigo Solamente Utilizable en AO 0.11.2 & AO Ready
 

nicoland

Aprendiz Lvl 3
perdonen q haga este post ya este tema es de hace mucho tiempo pero yo lo quiero hacer y me surgui la duda de donde ceo esos textbox??
si pueden poner una imagen mejor sino no importa
 

Khalem

Mica
Colaborador
Ex-Staff
Mira, estos son los textbox:
textboxjp9.png


Los seleccionas, y en el formulario las agrandas y achicas a tu gusto :).

Suerte
 

Khalem

Mica
Colaborador
Ex-Staff
Y sí, al FRMConect, en el formulario (pero no en el código), creas los 2 textbox, el agregas las propiedades que gustes, y listo, así de sencillito

Suerte
 

Kasa

Plus ?ºa change, plus cÔÇÖest la m?¬me chose.
Ex-Staff
Los pones en donde te gustaria que el user pusiera el Password y el nombre de Usuario...
Acordate que a los textbox le tenes que cambiar el nombre a PasswordTxt y NameTxt.

Suerte!

P.D: Cualquier duda avisa que no hay drama.
 

nicoland

Aprendiz Lvl 3
mira cuando yo pongo el frmconnect el dondo me parecen puntitos y gris dep el crear pj no me aparece y conectar tampoco osea se me ve como cuadrados pero si la imagen si yo creo esos txt box entonces borro el conectar no? veo si te pongo una imagen ahora



bue nose como la pongo la imagen perdona
 

Kasa

Plus ?ºa change, plus cÔÇÖest la m?¬me chose.
Ex-Staff
No entendi nada de lo que dijiste, Por favor explicate mejor o deja un Foto
(Agarras y la subis a Imageshack.us y dsp pones la ultima dir entre )

P.D: Si es lo que yo pienso es que no te carga la imagen que tenes de conectar, entonces tenes dos opciones Poner desde el VB la imagen con la propiedad Picture O
Agarras y pones en el Sub Form_Load
[vb]<div class="vb" id="{CB}" style="font-family: monospace;"><ol><li style="" class="li1">FONDO.<span style="color: #66cc66;">Picture</span> = <span style="color: #b1b100;">LoadPicture</span><span style="color: #66cc66;">(</span>App.<span style="color: #66cc66;">Path</span> & <span style="color: #ffffff;">"\Graficos\Conectar.jpg"</span><span style="color: #66cc66;">)</span></li></ol></div>[/vb]

Ovbiamente reeemplazas el nombre del jpg por el nombre de tu imagen.

Suerte
 

Kasa

Plus ?ºa change, plus cÔÇÖest la m?¬me chose.
Ex-Staff
Un par de cosas:
*Para ponerle Imagen podes hacer como te dije Arriba.
*Es normal que te aparesca asi en VB.
*En el cliente te aparece asi porque en mi Code borre El Fondo.Picture Por lo tanto no carga ninguna Imagen
*Los Box de Ip y Port BORRALOS xD, La finalidad de un Cliente propio es que no tengas que usar los Box de Ip y port(para borrar apretale arriba y Delete)
*Acordate de O borrar el Sinfo.dat O ponerle una ip Cualquiera ya que no se usa
*Aunque te pueden sacar la Ip mediante un Comando muy facil de DOS si Pones Otra version de cliente entonces ya es otra barrera, Y si tenes Un anti-Cheat efectivo entonces ya ni te preocupes.

Bue era eso no mas.. Cualquier Duda ya sabes.

Acordate que arriba deje Para que puedas ponerle la Imagen.

Suerte!
 

nicoland

Aprendiz Lvl 3
che èro mira como vs abras visto tampoco me aparece lad ecreatr pj ahi le hago lo msuimo para ponerle la imagen tampoco me aprece la imagende fondo.

otra pregunta poneleq ceo los txt box ariba del conectar para q me serviria el conectar?? si ya con los tx box tengo pra el nombre y la passwd
 

Kasa

Plus ?ºa change, plus cÔÇÖest la m?¬me chose.
Ex-Staff
A verr te explico un poco:
Vos a la Interface de conectar de tu servidor la vas a tener que diseñar..ejemplo Pepito AO

Entonces en la imagen de Interface pepito AO tiene que Decir Crear Personaje y Conectar... Corres los cuadraditos al lugar correspondiente y Walaaa.

En cuanto a Porque el conectar??? porque el user pone El nombre y el password normalmente.. pero dsp que hace para entrar al sv?? apreta Conectar ;)

Espero haberte aclarado tus dudas.
Suerte
 

Hello

Oráculo Lvl 6
kasa y si pones el frm en rapidshare porque la mayoria se complica para poner un textbx XD
 

Kasa

Plus ?ºa change, plus cÔÇÖest la m?¬me chose.
Ex-Staff
hello
kasa y si pones el frm en rapidshare porque la mayoria se complica para poner un textbx
Cuando termine mi servidor y este en estado final(no beta) Directamente Libero el Codigo de fuente :).
 

Hello

Oráculo Lvl 6
la mitd de estos pibes nesesitan para un ao q va a estar unos uhmmmm 2 dias on,, no tienen ganas de esperar
 

CHOTS

Director LapsusAO
hello dijo:
la mitd de estos pibes nesesitan para un ao q va a estar unos uhmmmm 2 dias on,, no tienen ganas de esperar

:eek:

Los mataste pobres... yo el dia q abri el visual basic por primera ves supe lo q era "crear un textbox", superdotado no soy
disculpen si ofendi... :oops:
 

Blizzard

Oráculo Lvl 5
Muy buena la inicitativa para ayudar a la gente y muy buena tambien por querer liberar code, la gente tiene que cumplir con la GNU bueno, mucha suerte, y testeen para ver si eze lo manda a desarrollos...

Ssalu2
 

Kasa

Plus ?ºa change, plus cÔÇÖest la m?¬me chose.
Ex-Staff
Es raro en Mi Cliente del Servidor me anda perfecto,
pero cuando lo hize desde 0 en uno cualquiera No anda 0_o.
mmmm Algun voluntario para testear y decirme Si esta bien???

EDIT: Testee de nuevo y Funciono Correctamente Sin errores.. era un Simple error en el cliente(algo que no tenia que ver con este code) jaja^^
 
Estado
Cerrado para nuevas respuestas.
Arriba