GS-Zone

Sistema de Destrabe. Ir al Indice

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

12

Nota » 30 Mar 2009 22:21

SERVER.

Public ReiniciarServer As Long

abajo ponen:
  1. Public Destrabar As Boolean 'Code By Eragon


arriba del /RESUCITAR ponen:
  1. Case "/DESTRABAR" 'Code By Eragon
  2.           If Destrabar = True Then
  3.               Call ClosestStablePos(UserList(UserIndex).Pos, nPos) 'calculo posicion cercana, me tiene que dar mayor a 0 .
  4.             End If
  5.                 If destrabar=true and nPos.X <> 0 And nPos.Y <> 0 Then
  6.                         Call WarpUserChar(UserIndex, nPos.Map, nPos.X, nPos.Y) me dio mayor a 0? entonces teletransport al personaje a esas coordenadas validas.
  7.                 End If
  8.             exit sub 'Code By Eragon


despues en el handledata1 buscan:

case "RPU" y abajo de su exit sub ponen:
  1. Case "NOH" 'Code By Eragon
  2.             If Destrabar = True Then
  3.             Destrabar = False
  4.         End If
  5.             Exit Sub 'Code By Eragon
  6.            
  7.            Case "DES" 'Code By Eragon
  8.            Destrabar = True
  9.            Exit Sub 'Code By Eragon


server LISTO

ahora, CLIENTE , es mas dificil el cliente, si no saben algo de programacion, entonces evitense el copy/paste, pero si les sale, barbaro entonces ...
buscan:


abajo ponen:
  1. Public MeTrabe As Boolean 'JAJA ME TRABE QUE GROSSO :P  'Code By Eragon


luego busquen:
  1. Function LegalPos(X As Integer, Y As Integer) As Boolean


arriba ponen:
  1. Function SeEncontroUserYTambienHayBloqueos(X As Integer, Y As Integer) As Boolean 'funcion creada por Eragon a partir del legalpos, para verificar si hay users o esta blocekado en X y Y coordenadas...
  2.     If MapData(X, Y).Blocked = 1 Then
  3.         SeEncontroUserYTambienHayBloqueos = False
  4.         Exit Function
  5.     End If
  6.    
  7.     '?Hay un personaje?
  8.     If MapData(X, Y).CharIndex > 0 Then
  9.     SeEncontroUserYTambienHayBloqueos = False
  10.         Exit Function
  11.     End If
  12. 'EDIT: POR SI LLEGA A HABER AGUA, NO QUEREMOS IRNOS AL AGUA, Y 'NO TENER BARCA .
  13.     If Not UserNavegando and       HayAgua(X, Y) then
  14.           SeEncontroUserYTambienHayBloqueos = False
  15.             Exit Function
  16.         End If
  17. END IF
  18.  
  19.     SeEncontroUserYTambienHayBloqueos = True
  20. funcion creada por Eragon a partir del legalpos, para verificar si hay users o esta blocekado en X y Y coordenadas...
  21. End Function 'Code By Eragon


esa funcion la cree a partir del legal pos

sigamos, buscan:


abajo ponen esto:
  1. If SeEncontroUserYTambienHayBloqueos(UserPos.X, UserPos.Y - 1) = False And SeEncontroUserYTambienHayBloqueos(UserPos.X + 1, UserPos.Y) = False And SeEncontroUserYTambienHayBloqueos(UserPos.X, UserPos.Y + 1) = False And SeEncontroUserYTambienHayBloqueos(UserPos.X - 1, UserPos.Y) = False Then 'al moverme arriba me fijo las 4 direccines...
  2. MeTrabe = True
  3.                                     'NORTH                                'EAST                                                                 'SOUTH                                                                          'WEST
  4.  AddtoRichTextBox frmMain.RecTxt, "El Cliente , ha reconocido que tienes las 4 direcciones, bloqueadas, por algun usuario, o algun tile de bloequeo, a continuacion tipea /DESTRABAR, para destrabarte. ", 0, 128, 128, 0, 0, False
  5. SendData "DES"
  6. End If 'Code By Eragon


desbues buscan adentro del procedure (osea el sub north) esto:
  1. If LegalPos(UserPos.X, UserPos.Y - 1) Then


y abajo ponen:
  1. If MeTrabe = True Then
  2.   SendData "NOH"
  3.   MeTrabe = False
  4.   End If 'Code By Eragon


sigamos, ahora buscan:


abajo ponen:
  1. If SeEncontroUserYTambienHayBloqueos(UserPos.X, UserPos.Y - 1) = False And SeEncontroUserYTambienHayBloqueos(UserPos.X + 1, UserPos.Y) = False And SeEncontroUserYTambienHayBloqueos(UserPos.X, UserPos.Y + 1) = False And SeEncontroUserYTambienHayBloqueos(UserPos.X - 1, UserPos.Y) = False Then 'al moverme  me fijo las 4 direccines...
  2. MeTrabe = True
  3.                                     'NORTH                                'EAST                                                                 'SOUTH                                                                          'WEST
  4.  AddtoRichTextBox frmMain.RecTxt, "El Cliente , ha reconocido que tienes las 4 direcciones, bloqueadas, por algun usuario, o algun tile de bloequeo, a continuacion tipea /DESTRABAR, para destrabarte. ", 0, 128, 128, 0, 0, False
  5. SendData "DES"
  6. End If 'Code By Eragon


despues buscan esto adentro del sub moveEast
  1. If LegalPos(UserPos.X + 1, UserPos.Y) Then


y abajo ponen:
  1. If MeTrabe = True Then
  2.   SendData "NOH"
  3.   MeTrabe = False
  4.   End If 'Code By Eragon


seguimos, buscan:


abajo ponen:
  1. If SeEncontroUserYTambienHayBloqueos(UserPos.X, UserPos.Y - 1) = False And SeEncontroUserYTambienHayBloqueos(UserPos.X + 1, UserPos.Y) = False And SeEncontroUserYTambienHayBloqueos(UserPos.X, UserPos.Y + 1) = False And SeEncontroUserYTambienHayBloqueos(UserPos.X - 1, UserPos.Y) = False Then 'al moverme  me fijo las 4 direccines...
  2.  MeTrabe = True
  3.                                      'NORTH                                'EAST                                                                 'SOUTH                                                                          'WEST
  4.   AddtoRichTextBox frmMain.RecTxt, "El Cliente , ha reconocido que tienes las 4 direcciones, bloqueadas, por algun usuario, o algun tile de bloequeo, a continuacion tipea /DESTRABAR, para destrabarte. ", 0, 128, 128, 0, 0, False
  5.  SendData "DES"
  6.  End If 'Code By Eragon


despues adentro del movesouth buscan:
  1. if LegalPos(UserPos.X, UserPos.Y + 1) then


y ponen abajo:
  1. If MeTrabe = True Then
  2.   SendData "NOH"
  3.   MeTrabe = False
  4.   End If 'Code By Eragon


listo, ahora vamos por la ultima, yiupii .. no probe el code, igualmente, testeenlo :p...
ahora buscan:


y abajo ponen:
  1. If SeEncontroUserYTambienHayBloqueos(UserPos.X, UserPos.Y - 1) = False And SeEncontroUserYTambienHayBloqueos(UserPos.X + 1, UserPos.Y) = False And SeEncontroUserYTambienHayBloqueos(UserPos.X, UserPos.Y + 1) = False And SeEncontroUserYTambienHayBloqueos(UserPos.X - 1, UserPos.Y) = False Then 'al moverme  me fijo las 4 direccines...
  2.   MeTrabe = True
  3.                                       'NORTH                                'EAST                                                                 'SOUTH                                                                          'WEST
  4.    AddtoRichTextBox frmMain.RecTxt, "El Cliente , ha reconocido que tienes las 4 direcciones, bloqueadas, por algun usuario, o algun tile de bloequeo, a continuacion tipea /DESTRABAR, para destrabarte. ", 0, 128, 128, 0, 0, False
  5.   SendData "DES"
  6.   End If 'Code By Eragon


despues buscan adentro del mismo sub moveWest esto:
  1. if LegalPos(UserPos.X - 1, UserPos.Y) then


y abajo ponemos esto:
  1. If MeTrabe = True Then
  2.    SendData "NOH"
  3.    MeTrabe = False
  4.    End If 'Code By Eragon


terminamos

entonces, repito en que consiste:
consiste, en que cuando te muevas para la izquierda,derecha,arriba y abajo, cada ves que te muevas, analiza los tiles de tu arriba, de tu izquierda, y de tu derecha. osea los 4 tiles que te rodean...
entonces, si vos tenes una pared, y otros tres users que no te podes mover, el cliente los analiza, luego de eso, activa la varialbe booleana de que el pj se trabo, despues manda una data al sv activando una variable booleana que te permite usar el comando /DESTRABAR que te va a teletransportar a un lugar cercano de donde estas, donde NO haya usuarios, ni agua, ni portales.
despues, una ves que te destrabaste, y te moves, vuelve a analizar los 4 tiles, si un tile no llega a estar ni blokeado ni hay un usuario o mas tiles no llegan a estar blokeados ni hay un usuario,, (es deicr, si te pode smover para una sola direccioin o para mas de una direccion ejemplo: 2, 3, 4.) entonces, pone a false la variable de que estas trabado, y manda una data al server, impidiendo usar el comando /DESTRABAR.
util no? espero que funcione... jaa, piensen que uds hacen copy/paste, yo me mate escribiendo todo eso en 10 minutos ...

bueno, muchachos suerte, espero que les ande:
nota:
cuando sde blokeen con 4 usuarios, apretan alguna flecha de direccion asi reconoce que estas blokeado, con apretar 1 sola basta .
suerte, Gamename.
Fuente:http://www.uasuforos.com/programacion/2256-que-no-saben-que-les-traje-o-un-sistema-de-destrabe-muy-bueno-lo-hize-yo-recien.html.
Bueno es medio largo :P,espero que sirva,bye,,

MODS PERDONEN LO PUEDEN MOVER A 0.11.2 Me re equivoque,perdon :D..

Imagen
Usuario Registrado
Newbie [6]
Registrado: Años de membresíaAños de membresíaAños de membresía
Mensajes: 193
Aportes: 4

Nota » 31 Mar 2009 13:13

Porque no pones directamente que al poner /DESTRABAR checkee los 4 tiles :S

Imagen

Imagen
13 (+1)
Legendario Inmortal [1]
Registrado: Años de membresíaAños de membresíaAños de membresíaAños de membresía
Ubicación: Baradero, Buenos Aires
Mensajes: 4765
Aportes: 54
Premios: 1
Participación (1)

Nota » 31 Mar 2009 14:45

Lo hise mas complejo por eso :).. Pera para la proxima si lo hago mas simplificado :)

Imagen
Usuario Registrado
Newbie [6]
Registrado: Años de membresíaAños de membresíaAños de membresía
Mensajes: 193
Aportes: 4

Nota » 31 Mar 2009 19:10

Gamename escribió:Lo hise mas complejo por eso :).. Pera para la proxima si lo hago mas simplificado :)

Hay algo que no entiendo :| Lo hiciste vos o Eragon xD Porque pusite una fuente y ademas el codigo esta cagado en "Code by Eragon" :P
34
Destructor de Mentes [7]
Registrado: Años de membresíaAños de membresíaAños de membresíaAños de membresía
Ubicación: Argentina, Bs As, Martinez
Mensajes: 835
Aportes: 9

Nota » 31 Mar 2009 19:15

Gamename escribió:Lo hise mas complejo por eso :).. Pera para la proxima si lo hago mas simplificado :)



Uh no sabe mentir..

No lo había echo Eragon? Y ahora decis eso?

Medio al pedo el code pero sirve para algo xD

Imagen
Destructor de Mentes [7]
Registrado: Años de membresíaAños de membresíaAños de membresíaAños de membresía
Ubicación: Chascomús
Mensajes: 805
Aportes: 5

Nota » 31 Mar 2009 19:28

capo como veras eragon lo ise cn mil errores en UASU y yo lo adapte y los Arregle,antes de desir q nose mentir y cosas q dijiste fijate un poqito :)

Imagen
Usuario Registrado
Newbie [6]
Registrado: Años de membresíaAños de membresíaAños de membresía
Mensajes: 193
Aportes: 4

Nota » 31 Mar 2009 20:31

Muy buen aporte gamename...se nota que sabes de programacion.Probe ese code y anda muy bien.Espero que sigas aportando asi :mrgreen:
Usuario Registrado
Newbie [1]
Registrado: Años de membresíaAños de membresíaAños de membresía
Mensajes: 15

Nota » 31 Mar 2009 20:47

Gracias CAPO,;)

Imagen
Usuario Registrado
Newbie [6]
Registrado: Años de membresíaAños de membresíaAños de membresía
Mensajes: 193
Aportes: 4

Nota » 31 Mar 2009 20:51

tambien se puede buscar en cliente


y arriva poner

  1. Case vbKeyZ:
  2. call senddata("/DESTRABAR")
  3. exit sub


para destrabarse con la "Z"

Imagen
Imagen
Imagen
SE BUSCA HOST



Firmita que me regalo Azeth =)
[color=#00BFFF]Rahma Nanarak O'al[/color]
Destructor de Mentes [9]
Registrado: Años de membresíaAños de membresíaAños de membresía
Ubicación: ...En un rincón de las sierras...
Mensajes: 914
Aportes: 26

Nota » 31 Mar 2009 20:52

Pero ese ya viene ....

Imagen
Usuario Registrado
Newbie [6]
Registrado: Años de membresíaAños de membresíaAños de membresía
Mensajes: 193
Aportes: 4

Nota » 31 Mar 2009 21:09

Gamename escribió:Pero ese ya viene ....


no..en el code q posteo el tenes q escribir /destrabar,....yo puse para q apretes la z y te destrabes

Imagen
Imagen
Imagen
SE BUSCA HOST



Firmita que me regalo Azeth =)
[color=#00BFFF]Rahma Nanarak O'al[/color]
Destructor de Mentes [9]
Registrado: Años de membresíaAños de membresíaAños de membresía
Ubicación: ...En un rincón de las sierras...
Mensajes: 914
Aportes: 26

Nota » 02 Abr 2009 01:38

Gamename escribió:capo como veras eragon lo ise cn mil errores en UASU y yo lo adapte y los Arregle,antes de desir q nose mentir y cosas q dijiste fijate un poqito :)


Jaja, no flashees, no tiene ningún error mi código, es más, te podes dar cuenta, simplemente por que al final escribi toda la lógica...

Menos mal pibe, que sabes usar copy/paste, sino no te sale, porque eso es mérito mio, no tuyo.


Volver a AO 0.11.2 / AOReady

¿Quién está conectado?

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