Advertisement
Kimeraweb

Creador de Mapas de las 5 familias

Jul 7th, 2014
477
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Basic4GL 59.45 KB | None | 0 0
  1. Imports System.Net
  2. Imports System.IO
  3.  
  4.  
  5. Public Class Form1
  6.     Dim ModoDepuracion As Boolean
  7.  
  8.     ' La formula es:
  9.     ' http://realm116.c3.godfather.wonderhill.com/api/map.json?x=10&city_id=0&y=10&_session_id=0&gangster=4238791e6dd7f5e2e376cad3cb291da3dae58fdd&user_id=6108242
  10.     ' Go! Por Kimeraweb
  11.     Dim _x, _y As Integer
  12.     Dim _arraylist_city_wildernesses As New List(Of CityWildernesses)
  13.     Dim _arraylist_terrain As New List(Of Terrain)
  14.     Dim _arraylist_mapCities As New List(Of MapCities)
  15.  
  16.     Dim _c1_a, _c2_a, _c3_a As Integer ' Una idea, contar los terrenos para pasarlos como parametro a los insertquery
  17.     Dim _c1_b, _c2_b, _c3_b As Integer ' Una idea, contar los terrenos para pasarlos como parametro a los insertquery
  18.  
  19.  
  20.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  21.  
  22.         ' Modo depuracion!!
  23.         ModoDepuracion = False
  24.         ' Si el modo de depuracion esta activado, entonces no cargara de internet, sino de los ficheros del disco
  25.         '
  26.         Dim cadena As String = ""
  27.  
  28.         Button1.Enabled = False
  29.         Button1.Text = "..."
  30.         Refresh()
  31.         Dim x, y, contador As Integer
  32.         x = TextBox_ScanX.Text
  33.         y = TextBox_ScanY.Text
  34.         contador = -1
  35.  
  36.         _c1_a = 0
  37.         _c2_a = 0
  38.         _c3_a = 0
  39.         _c1_b = 0
  40.         _c2_b = 0
  41.         _c3_b = 0
  42.  
  43.         While (y <= TextBox_ScanY2.Text And x <= TextBox_ScanX2.Text)
  44.  
  45.             Dim URL = GetURL(x.ToString, y.ToString)
  46.             TextBox_FullURL.Text = URL
  47.             ' Refresh()
  48.             If (ModoDepuracion = False) Then
  49. otraVez:
  50.                 Try
  51.                     Dim request As WebRequest = WebRequest.Create(URL) ' Peticion
  52.                     Dim response As WebResponse = request.GetResponse() ' Respuesta
  53.                     Dim reader As New StreamReader(response.GetResponseStream()) ' Lectura de la cadena de texto
  54.                     cadena = reader.ReadToEnd()
  55.  
  56.                     response.Close()
  57.                     reader.Close()
  58.                 Catch var As System.Net.WebException
  59.                     ' si no hay internet, repetimos hasta que duela
  60.                     GoTo otraVez
  61.  
  62.                 ' Grabando datos
  63.                     ' My.Computer.FileSystem.WriteAllText("datos_puros_" & x & "_" & y & ".sql", cadena, True)
  64.                 End Try
  65.             End If
  66.  
  67.             ' TextBox_JSON.Text = cadena
  68.             ' Solo me interesan los campos city_wildernesses(condos) y terrain y map_cities, saltandome lo de Alcapone que esta suelto por medio
  69.  
  70.             If (ModoDepuracion) Then
  71.                 cadena = My.Computer.FileSystem.ReadAllText("datos_puros_" & x & "_" & y & ".sql")
  72.             End If
  73.  
  74.             ' Escruto de city_wildernesses
  75.             Dim city_pos_ini As Integer = InStr(cadena, "city_wildernesses")
  76.             Dim city_pos_fin As Integer = InStr(city_pos_ini + 1, cadena, "]")
  77.             Dim city As String = Mid(cadena, city_pos_ini + 20, city_pos_fin - city_pos_ini - 20)
  78.             add_City_wildernesses(city) ' Añado la cadena para que sea escrutada
  79.             ' Sacamos los querys de los datos obtenidos
  80.             If (CheckBox_MostrarCityWildness.Checked = True) Then
  81.                 insertQuery_cityPos(1, _c1_a, _c1_b) ' Muestra el resultado en pantalla y crea el SQL
  82.             ElseIf (CheckBox_MostrarCityWildness.Checked = False) Then
  83.                 insertQuery_cityPos(0, _c1_a, _c1_b) ' Solo crea el SQL
  84.             End If
  85.             _c1_b = _c1_a
  86.             '
  87.  
  88.             'Escruto de terrain
  89.             Dim terrain_pos_ini As Integer = InStr(cadena, "terrain")
  90.             Dim terrain_pos_fin As Integer = InStr(terrain_pos_ini + 1, cadena, "]]," & Chr(34))
  91.             If (terrain_pos_fin = 0) Then terrain_pos_fin = InStr(terrain_pos_ini + 1, cadena, "]]]}") ' ]]]}"
  92.             Dim terrain As String = Mid(cadena, terrain_pos_ini + 10, terrain_pos_fin - terrain_pos_ini - 8)
  93.             add_Terrain(terrain) ' Añado la cadena para que sea escrutada
  94.             '
  95.             If (CheckBox_terrain.Checked = True) Then
  96.                 insertQuery_terrainPos(1, _c2_a, _c2_b)
  97.             ElseIf (CheckBox_terrain.Checked = False) Then
  98.                 insertQuery_terrainPos(0, _c2_a, _c2_b)
  99.             End If
  100.  
  101.  
  102.             Dim map_cities As String = ""
  103.             'Try
  104.             'Escruto de map_cities
  105.             Dim map_cities_pos_ini As Integer = InStr(cadena, "map_cities")
  106.             Dim map_cities_pos_fin As Integer = InStr(map_cities_pos_ini + 1 + 2, cadena, "}]," & Chr(34)) ' +2 para quitar 2 sibolos o }]}
  107.             If (map_cities_pos_fin = 0) Then map_cities_pos_fin = InStr(map_cities_pos_ini + 1, cadena, "}]}")
  108.             map_cities = Mid(cadena, map_cities_pos_ini + 10, map_cities_pos_fin - map_cities_pos_ini - 8)
  109.             map_cities = map_cities & "}" ' añado una llave porque add_MapCities cuenta las llaves anidadas. Por defecto el corte no añade una } o ,
  110.             add_MapCities(map_cities, cadena) ' Añado la cadena para que sea escrutada, cadena original para debug.
  111.             ' Sacamos los querys de los datos obtenidos
  112.             If (CheckBox_MapCities.Checked = True) Then
  113.                 insertQuery_mapCities(1, _c3_a, _c3_b) ' Muestra el resultado en pantalla y crea el SQL
  114.             ElseIf (CheckBox_MapCities.Checked = False) Then
  115.                 insertQuery_mapCities(0, _c3_a, _c3_b) ' Solo crea el SQL
  116.             End If
  117.             If (ModoDepuracion) Then
  118.                 '  MsgBox(map_cities)
  119.             End If
  120.  
  121.  
  122.  
  123.             ' TextBox_JSON.Text = map_cities
  124.             'Catch var As Exception
  125.  
  126.             '   My.Computer.FileSystem.WriteAllText("ObjetoActual.txt", cadena, False)
  127.             '    My.Computer.FileSystem.WriteAllText("MapCitiesActual.txt", map_cities, False)
  128.             '   TextBox_JSON.Text = var.ToString
  129.             '   Stop
  130.             'End Try
  131.             x = x + 16
  132.             contador = contador + 1
  133.             If x > 750 Or x > TextBox_ScanX2.Text Then
  134.                 x = 16
  135.                 y = y + 16
  136.             End If
  137.  
  138.             ' Informacion
  139.             Label_progresoX.Text = x 'cx
  140.             Label_ProgresoY.Text = y 'cy
  141.             'showJSON(contador) ' muestra el ultimo objeto cargado
  142.             showProgressBar(x, y, TextBox_ScanX2.Text, TextBox_ScanY2.Text) ' Actualizamos la barra de progreso
  143.             showCuadrantesLeidos(contador * 16)
  144.  
  145.         End While
  146.  
  147.  
  148.  
  149.     End Sub
  150.  
  151.     Private Sub insertQuery_cityPos(ByVal s As Boolean, ByVal a1 As Integer, ByVal a2 As Integer)
  152.         Dim t As CityWildernesses
  153.         Dim q As String = ""
  154.         For x As Integer = a2 To a1 - 1
  155.             t = _arraylist_city_wildernesses.Item(x)
  156.             If (s = 1) Then
  157.                 TextBox_JSON.Text = "1> " & t.getAllianceId & vbCrLf &
  158.                 "2> " & t.getAllianceName & vbCrLf &
  159.                 "3> " & t.getCityWildernessesId & vbCrLf &
  160.                 "4> " & t.getCityWildernessesLastCollectedAt & vbCrLf &
  161.                 "5> " & t.getCityWildernessesLv & vbCrLf &
  162.                 "6> " & t.getCityWildernessesX & vbCrLf &
  163.                 "7> " & t.getCityWildernessesY & vbCrLf &
  164.                 "8> " & t.getOwnerCreatedAt & vbCrLf &
  165.                 "9> " & t.getOwnerFamily & vbCrLf &
  166.                 "10>" & t.getOwnerId & vbCrLf &
  167.                 "11>" & t.getOwnerIsDon & vbCrLf &
  168.                 "12>" & t.getOwnerLastDonMessage & vbCrLf &
  169.                 "13>" & t.getOwnerLastOnline & vbCrLf &
  170.                 "14>" & t.getOwnerLv & vbCrLf &
  171.                 "15>" & t.getOwnerName & vbCrLf &
  172.                 "16>" & t.getOwnerPlataform & vbCrLf &
  173.                 "17>" & t.getOwnerProtectedUntil & vbCrLf &
  174.                 "18>" & t.getOwnerRespect & vbCrLf &
  175.                 "19>" & t.getOwnerTitle
  176.                 Refresh()
  177.             End If
  178.  
  179.             ' Creo el archivo SQL
  180.             q = "Insert into citywildernesses (alliance_Id, alliance_Name, cityWildernesses_Id, cityWildernesses_LastCollectedAt,cityWildernesses_Lv," &
  181.                 "cityWildernesses_X, CityWildernesses_Y, owner_CreatedAt,owner_Family,owner_Id,owner_IsDon,owner_LastDonMessage,owner_LastOnline," &
  182.                 "owner_Lv,owner_Name,owner_Plataform,owner_ProtectedUntil,owner_Respect,owner_Title) VALUES (" &
  183.                 "'" & t.getAllianceId & "'," &
  184.                 "'" & t.getAllianceName & "'," &
  185.                 "'" & t.getCityWildernessesId & "'," &
  186.                 "'" & t.getCityWildernessesLastCollectedAt & "'," &
  187.                 "'" & t.getCityWildernessesLv & "'," &
  188.                 "'" & t.getCityWildernessesX & "'," &
  189.                 "'" & t.getCityWildernessesY & "'," &
  190.                 "'" & t.getOwnerCreatedAt & "'," &
  191.                 "'" & t.getOwnerFamily & "'," &
  192.                 "'" & t.getOwnerId & "'," &
  193.                 "'" & t.getOwnerIsDon & "'," &
  194.                 "'" & t.getOwnerLastDonMessage & "'," &
  195.                 "'" & t.getOwnerLastOnline & "'," &
  196.                 "'" & t.getOwnerLv & "'," &
  197.                 "'" & t.getOwnerName & "'," &
  198.                 "'" & t.getOwnerPlataform & "'," &
  199.                 "'" & t.getOwnerProtectedUntil & "'," &
  200.                 "'" & t.getOwnerRespect & "'," &
  201.                 "'" & t.getOwnerTitle & "');" & vbCrLf
  202.             My.Computer.FileSystem.WriteAllText("citywildnesses.sql", q, True)
  203.         Next
  204.     End Sub
  205.  
  206.     Private Sub insertQuery_terrainPos(ByVal s As Boolean, ByVal b1 As Integer, ByVal b2 As Integer)
  207.         Dim t As Terrain
  208.         Dim q As String = ""
  209.         For x As Integer = b2 To b1 - 1
  210.             t = _arraylist_terrain.Item(x)
  211.             If (s = 1) Then
  212.                 TextBox_Terrain.Text = "1> " & t.get_terrainType & vbCrLf &
  213.                 "2> " & t.get_terrain_lv & vbCrLf &
  214.                 "3> " & t.get_terrain_cx & vbCrLf &
  215.                 "4> " & t.get_terrain_cy
  216.                 Refresh()
  217.             End If
  218.  
  219.             ' Creo el archivo SQL
  220.             q = "Insert into terrain (type, level, cx, cy) VALUES (" &
  221.                 "'" & t.get_terrainType & "'," &
  222.                 "'" & t.get_terrain_lv & "'," &
  223.                 "'" & t.get_terrain_cx & "'," &
  224.                 "'" & t.get_terrain_cy & "');" & vbCrLf
  225.             My.Computer.FileSystem.WriteAllText("terrain.sql", q, True)
  226.         Next
  227.     End Sub
  228.  
  229.     Private Sub insertQuery_mapCities(ByVal s As Boolean, ByVal c1 As Integer, ByVal c2 As Integer)
  230.         Dim t As MapCities
  231.         Dim q As String = ""
  232.         For x As Integer = c2 To c1 - 1
  233.             t = _arraylist_mapCities.Item(x)
  234.             If (s = 1) Then
  235.                 TextBox_MapCities.Text = "1> " & t.getMapCitiesName & vbCrLf &
  236.                 "2> " & t.getMapId & vbCrLf &
  237.                 "3> " & t.getMapCitiesX & vbCrLf &
  238.                 "4> " & t.getMapCitiesY & vbCrLf &
  239.                 "5> " & t.getMapCitiesType & vbCrLf &
  240.                 "6> " & t.getMapCitiesProtectedUntil & vbCrLf &
  241.                 "7> " & t.getMapCitiesProtected & vbCrLf &
  242.                 "8> " & t.getOwnerId & vbCrLf &
  243.                 "9> " & t.getOwnerName & vbCrLf &
  244.                 "10>" & t.getOwnerProtectedUntil & vbCrLf &
  245.                 "11>" & t.getOwnerRespectTtile & vbCrLf &
  246.                 "12>" & t.getOwnerRespect & vbCrLf &
  247.                 "13>" & t.getOwnerLevel & vbCrLf &
  248.                 "14>" & t.getOwnerLastOnline & vbCrLf &
  249.                 "15>" & t.getOwnerName & vbCrLf &
  250.                 "16>" & t.getOwnerFamily & vbCrLf &
  251.                 "17>" & t.getOwnerPlatform & vbCrLf &
  252.                 "18>" & t.getOwnerIsDon & vbCrLf &
  253.                 "19>" & t.getOwnerLastDonMessageSentAt & vbCrLf &
  254.                 "20>" & t.getAllianceName & vbCrLf &
  255.                 "21>" & t.getAllianceId
  256.                 Refresh()
  257.             End If
  258.  
  259.             ' Creo el archivo SQL
  260.             q = "Insert into mapcities (mapcities_name, mapcities_id, mapcities_x, mapcities_y,mapcities_type,mapcities_protected_until," &
  261.                 "mapcities_protected, owner_id, owner_name,owner_protected_until,owner_respect_title,owner_respect,owner_lv,owner_created_at," &
  262.                 "owner_last_online,owner_family,owner_plataform,owner_is_don,owner_last_don_message,alliance_name,alliance_id) VALUES (" &
  263.                 "'" & t.getMapCitiesName & "'," &
  264.                 "'" & t.getMapId & "'," &
  265.                 "'" & t.getMapCitiesX & "'," &
  266.                 "'" & t.getMapCitiesY & "'," &
  267.                 "'" & t.getMapCitiesType & "'," &
  268.                 "'" & t.getMapCitiesProtectedUntil & "'," &
  269.                 "'" & t.getMapCitiesProtected & "'," &
  270.                 "'" & t.getOwnerId & "'," &
  271.                 "'" & t.getOwnerName & "'," &
  272.                 "'" & t.getOwnerProtectedUntil & "'," &
  273.                 "'" & t.getOwnerRespectTtile & "'," &
  274.                 "'" & t.getOwnerRespect & "'," &
  275.                 "'" & t.getOwnerLevel & "'," &
  276.                 "'" & t.getOwnerCreatedAt & "'," &
  277.                 "'" & t.getOwnerLastOnline & "'," &
  278.                 "'" & t.getOwnerFamily & "'," &
  279.                 "'" & t.getOwnerPlatform & "'," &
  280.                 "'" & t.getOwnerIsDon & "'," &
  281.                 "'" & t.getOwnerLastDonMessageSentAt & "'," &
  282.                 "'" & t.getAllianceName & "'," &
  283.                 "'" & t.getAllianceId & "');" & vbCrLf
  284.             My.Computer.FileSystem.WriteAllText("mapcities.sql", q, True)
  285.         Next
  286.     End Sub
  287.  
  288.     Private Function GetURL(ByVal x As String, ByVal y As String)
  289.         Dim FullURL As String = " http://realm116.c3.godfather.wonderhill.com/api/map.json?x=" & x & "&city_id=0&y=" & y & "&_session_id=0&gangster=4238791e6dd7f5e2e376cad3cb291da3dae58fdd&user_id=6108242"
  290.         Return FullURL
  291.     End Function
  292.  
  293.     Private Sub add_City_wildernesses(ByVal data As String)
  294.         ' Estrategia, contar las llaves que se abren y restar las que se cierran para obtener la longitud de cada player en cada city
  295.         ' Los datos se desmontan para crear un solo objeto cada vez
  296.         Dim c As Char
  297.         Dim cw As String
  298.         Dim pos As Integer = 1
  299.         Dim contador_llaves As Integer = 0
  300.  
  301.         ' Ante de empezar, limpiar los campos name de { y }
  302.         Dim bug_ini As Integer = 1
  303.         Dim bug_end As Integer = 1
  304.  
  305.         For x As Integer = bug_ini To data.Length
  306.             bug_ini = InStr(x, data, "name" & Chr(34) & ":" & Chr(34))
  307.             bug_end = InStr(bug_ini + 7, data, Chr(34))
  308.             For y As Integer = bug_ini + 7 To bug_end ' que pongo aqui? -1, -2 o -3?? - Bug de VB, no se puede cambiar la variable del for
  309.                 If (y <= bug_end) Then
  310.                     If (Mid(data, y, 1) = "{") Or (Mid(data, y, 1) = "}") Or (Mid(data, y, 1) = "'" Or (Mid(data, y, 1) = "\")) Then
  311.                         data = data.Remove(y - 1, 1)
  312.                         bug_end = bug_end - 1
  313.                     End If
  314.                 End If
  315.             Next
  316.         Next
  317.         '
  318.  
  319.  
  320.         For contador As Integer = 1 To data.Length
  321.             c = Mid(data, contador, 1)
  322.  
  323.             If c = "{" Then
  324.                 contador_llaves = contador_llaves + 1
  325.                 If c = "{" And contador_llaves = 1 Then pos = contador
  326.             End If
  327.  
  328.             If c = "}" Then
  329.                 contador_llaves = contador_llaves - 1
  330.                 If contador_llaves = 0 Then
  331.                     cw = Mid(data, pos, contador - pos + 1)
  332.                     Dim a As New CityWildernesses
  333.                     a.constructor(cw)
  334.                     _arraylist_city_wildernesses.Add(a)
  335.                     _c1_a = _c1_a + 1 ' conteo de cuantas wildernesses lleva metidas
  336.                 End If
  337.             End If
  338.         Next
  339.  
  340.         'TextBox_JSON.Text = "Numero: " & _arraylist_city_wildernesses.Count.ToString
  341.         'TextBox_JSON.Text = _arraylist_city_wildernesses.Item(0).showData & vbCrLf & vbCrLf
  342.         'TextBox_JSON.Text = TextBox_JSON.Text & vbCrLf & _arraylist_city_wildernesses.Count
  343.         'TextBox_JSON.Text = TextBox_JSON.Text & vbCrLf & _arraylist_city_wildernesses.Item(0).showAll()
  344.         'TextBox_JSON.Text = TextBox_JSON.Text & vbCrLf & _arraylist_city_wildernesses.Item(1).showAll()
  345.     End Sub
  346.  
  347.     Private Sub add_Terrain(ByVal data As String)
  348.         ' Los datos se desmontan para crear un solo objeto cada vez
  349.         ' Estrategia, buscar [[ y ]]],
  350.         ' TextBox_JSON.Text = data
  351.         ' Problema, contar los corchetes para descartar los anidamientos
  352.  
  353.         Dim c As Char
  354.         Dim terrain_type, terrain_lv, terrain_cy, terrain_cx As String
  355.         Dim next_pos, next_pos2 As Integer
  356.  
  357.         For contador As Integer = 1 To data.Length
  358.             c = Mid(data, contador, 1)
  359.             ' Si encuentro una " ya se que lo que sigue es "gang",lv,y,x]
  360.             If (c = Chr(34)) Then
  361.                 ' Nombre del terreno (gang, cityscape...)
  362.                 next_pos = InStr(contador + 1, data, Chr(34))
  363.                 terrain_type = Mid(data, contador + 1, next_pos - contador - 1)
  364.                 ' Lv del terreno
  365.                 next_pos = InStr(contador + 1, data, ",")
  366.                 next_pos2 = InStr(next_pos + 1, data, ",")
  367.                 terrain_lv = Mid(data, next_pos + 1, next_pos2 - next_pos - 1)
  368.                 ' Pos Y
  369.                 next_pos = next_pos2 + 1
  370.                 next_pos2 = InStr(next_pos, data, ",")
  371.                 terrain_cy = Mid(data, next_pos, next_pos2 - next_pos)
  372.                 ' Pos X
  373.                 next_pos = next_pos2 + 1
  374.                 next_pos2 = InStr(next_pos, data, "]")
  375.                 terrain_cx = Mid(data, next_pos, next_pos2 - next_pos)
  376.                 contador = next_pos2
  377.                 'MsgBox(terrain_type & "-" & terrain_lv & "-" & terrain_cy & "-" & terrain_cx)
  378.  
  379.                 Dim a As New Terrain
  380.                 a.constructor(terrain_type, terrain_lv, terrain_cx, terrain_cy)
  381.                 _arraylist_terrain.Add(a)
  382.                 _c2_a = _c2_a + 1
  383.             End If
  384.         Next
  385.  
  386.     End Sub
  387.  
  388.     Private Sub add_MapCities(ByVal data As String, ByVal debug As String)
  389.         ' Los datos se desmontan para crear un solo objeto cada vez
  390.         ' Estrategia, primero sacar al player, luego sacar los barrios, para ello cortar la city.
  391.  
  392.         ' Van dos datos dentro, asi que hay que diferenciarlos.
  393.         ' { { }, }, - usare las llaves, porque puede cambiar a }}
  394.         '
  395.  
  396.         ' Atencion, un bug:
  397.         '
  398.         ' "name":"}ass",
  399.         '
  400.  
  401.         Dim c1 As Char = "{"
  402.         Dim c2 As Char = "}"
  403.         Dim mapCities As String
  404.         Dim pos1, pos2, llavesAbiertas As Integer
  405.  
  406.         ' Resolver el bug de las llaves en el campo name del player
  407.         ' Buscar player para acceder a la propiedad name
  408.         Dim bug_pos1 As Integer
  409.         Dim bug_pos2 As Integer
  410.         Dim bug_pos3 As Integer
  411.         Dim bug_pos4 As Integer
  412.         Dim bug_name As String
  413.  
  414.         bug_pos1 = InStr(data, "player")
  415.  
  416.         ' Esta funcionando? Una info en pantalla
  417.         Label_bitsLeidos.Text = data.Length.ToString
  418.  
  419.         For indice As Integer = bug_pos1 To data.Length
  420.             bug_pos2 = InStr(indice, data, "name" & Chr(34) & ":")
  421.             If (bug_pos2 > 0) Then ' Existe en campo name, seguimos
  422.                 bug_pos3 = InStr(bug_pos2 + 6, data, Chr(34))
  423.                 bug_pos4 = InStr(bug_pos3 + 1, data, Chr(34)) ' DEPURACION: +7
  424.                 bug_name = Mid(data, bug_pos3 + 1, bug_pos4 - bug_pos3 - 1)
  425.                 ' DEPURACION: recorrer la cadena y eliminar el caracter { }
  426.                 ' Al quitar el caracter, hay que quitar una posicion de la cadena, y por un bug en vbasic, no se puede cambiar el valor final de la iteracion
  427.                 Dim fin_iteracion As Integer = bug_pos4
  428.                 For x As Integer = bug_pos3 To bug_pos4
  429.                     If (bug_pos4 <= fin_iteracion) Then
  430.                         If (Mid(data, x, 1) = "{") Or (Mid(data, x, 1) = "}") Or (Mid(data, x, 1) = "'" Or (Mid(data, x, 1) = "\")) Then
  431.                             data = data.Remove(x - 1, 1)
  432.                             fin_iteracion = fin_iteracion - 1
  433.                         End If
  434.                     End If
  435.                 Next
  436.                 'indice = bug_pos4 + 1
  437.                 'If (InStr(bug_name, "}") > 0) Then
  438.                 'data = data.Remove(InStr(bug_pos3, data, "}") - 1, 1)
  439.                 'End If
  440.                 'If (InStr(bug_name, "{") > 0) Then
  441.                 'data = data.Remove(InStr(bug_pos3, data, "{") - 1, 1)
  442.                 'End If
  443.  
  444.                 'If (InStr(bug_pos4 + 1, data, "player") > 0) Then
  445.                 'indice = InStr(bug_pos4 + 1, data, "player")
  446.                 'End If
  447.                 'MsgBox(bug_name & " " & data.Length, , indice)
  448.             End If
  449.  
  450.             ' Esta funcionando? Una info en pantalla
  451.             If (indice * 100 / data.Length Mod 2 = 0) Then
  452.                 Label_bitsProcesados.Text = indice
  453.                 'Refresh()
  454.             End If
  455.  
  456.         Next
  457.         ' --- FIN extraccion de llaves / bug
  458.  
  459.         llavesAbiertas = 0
  460.         For contador As Integer = 1 To data.Length()
  461.  
  462.             If (Mid(data, contador, 1) = c1) Then
  463.                 llavesAbiertas = llavesAbiertas + 1
  464.                 If (llavesAbiertas = 1) Then pos1 = contador
  465.             End If
  466.  
  467.             'My.Computer.FileSystem.WriteAllText("ObjetoActual.txt", data, False)
  468.  
  469.             If (Mid(data, contador, 1) = c2) Then
  470.  
  471.                 llavesAbiertas = llavesAbiertas - 1
  472.  
  473.                 If (llavesAbiertas = 0) Then ' Entonces ya tenemos el bloque de ciudades con los datos del owner
  474.                     pos2 = contador
  475.                     ' Cortar y crear
  476.                     mapCities = Mid(data, pos1, pos2 - pos1)
  477.                     mapCities = mapCities & "}" ' A veces no sale la llave, otras si, asi que pongo otra y siempre tengo al menos 1.
  478.                     Dim a As New MapCities
  479.                     a.constructor(mapCities, debug, TextBox_JSON)
  480.                     _arraylist_mapCities.Add(a)
  481.                     _c3_a = _c3_a + 1
  482.  
  483.                     If (ModoDepuracion) Then
  484.                         'MsgBox(mapCities)
  485.                     End If
  486.                 End If
  487.             End If
  488.         Next
  489.     End Sub
  490.  
  491.     Private Sub showProgressBar(ByVal x As Integer, ByVal y As Integer, ByVal x_lim As Integer, ByVal y_lim As Integer)
  492.         Dim perx As Integer = x * 100 / x_lim
  493.         Dim pery As Integer = y * 100 / y_lim
  494.         If perx > 100 Then perx = 100
  495.         If pery > 100 Then pery = 100
  496.         ProgressBar1.Value = perx
  497.         ProgressBar2.Value = pery
  498.         Refresh()
  499.  
  500.     End Sub
  501.  
  502.     Private Sub showJSON(ByVal indice As Integer)
  503.         TextBox_JSON.Text = _arraylist_city_wildernesses.Item(indice).showAll()
  504.         Refresh()
  505.     End Sub
  506.  
  507.     Private Sub showCuadrantesLeidos(ByVal indice)
  508.         Label_cuadrantesLeidos.Text = indice & " / 562500"
  509.         Refresh()
  510.     End Sub
  511.  
  512.  
  513. End Class
  514.  
  515. Class CityWildernesses
  516.     Dim _data, __data, _info_player, _info_alianza, _info_condo As String
  517.  
  518.     Dim _alliance_id, _alliance_name As String
  519.     Dim _owner_family, _owner_id, _owner_lv, _owner_lastOnline, _owner_title, _owner_lastDonMessage, _owner_createdAt, _owner_protectedUntil, _owner_name, _owner_plataform, _owner_isDon, _owner_respect As String
  520.     Dim _cityWildernesses_id, _cityWildernesses_lv, _cityWildernesses_x, _cityWildernesses_y, _cityWildernesses_last_collected_at As String
  521.  
  522.     Public Sub constructor(ByVal data As String)
  523.  
  524.         ' Inicializa variables
  525.         data = data.Replace("\", "*") ' problemas con el caracter escape en mysql
  526.  
  527.         _data = data
  528.         __data = data   ' Este no cambia
  529.         _info_player = ""
  530.         _info_alianza = ""
  531.         _info_condo = ""
  532.  
  533.         Dim pos_ini As Integer = 1
  534.         Dim pos_end As Integer = 1
  535.         Dim pos_ini_alianza As Integer = 1
  536.         Dim pos_end_alianza As Integer = 1
  537.         ' Atencion, desglosar la info del player, alianza y la info del condo antes de comenzar las busquedas
  538.         '*******************
  539.         ' Info de la alianza
  540.         ' Antencion, bug, el nombre de la alianza lleva } - DEPURACION: ya no lleva
  541.         If (InStr(_data, "alliance")) Then
  542.             pos_ini_alianza = InStr(_data, "" & Chr(34) & "alliance" & Chr(34) & ":")
  543.  
  544.             ' El nombre de la alianza contiene  {}  los quitamos para cerrar el grupo de la alianza
  545.             'Dim pos_ini_alianza_name = InStr(pos_ini_alianza, _data, "name" & Chr(34) & ":" & Chr(34))
  546.             'Dim pos_end_alianza_name = InStr(pos_ini_alianza_name + 1, _data, Chr(34))
  547.             'For x As Integer = pos_ini_alianza_name + 8 To pos_end_alianza_name
  548.             'If (Mid(_data, 1)) = "{" Or (Mid(_data, 1)) = "}" Then
  549.             '_data = _data.Remove(x - 1, 1)
  550.             'End If
  551.             'Next
  552.             ' el nombre de la alianza ya no contiene {}
  553.  
  554.             pos_end_alianza = InStr(pos_ini, _data, "}")
  555.  
  556.             _info_alianza = Mid(_data, pos_ini_alianza + 11, pos_end_alianza - pos_ini_alianza - 11 + 1) ' +1 para que entre el }
  557.  
  558.             Try
  559.                 _data = _data.Remove(pos_ini_alianza - 1, _info_alianza.Length + 11) ' -1 y +1 para que borre la , del inicio y final
  560.             Catch
  561.                 ' Si esta al final de la cadena, hay un caracter menos
  562.                 _data = _data.Remove(pos_ini_alianza - 1, _info_alianza.Length + 11)
  563.             End Try
  564.         End If
  565.  
  566.         ' Atencion, el nombre del player puede contener {} tambien hay que arreglar esto
  567.         ' Info del player
  568.         If (InStr(_data, "player")) Then
  569.  
  570.             pos_ini = InStr(_data, "" & Chr(34) & "player" & Chr(34) & ":")
  571.             ' Busco el nombre del player y le quito los {} - DEPURACION: Ya no lleva
  572.             'Dim pos_ini_name, pos_end_name As Integer
  573.             'pos_ini_name = InStr(pos_ini, _data, "name" & Chr(34) & ":" & Chr(34))
  574.  
  575.             ' Averiguo el name
  576.             'For x As Integer = pos_ini_name + 8 To _data.Length
  577.             'If (Mid(_data, x, 1)) = Chr(34) Then
  578.             'pos_end_name = x
  579.             ' x = _data.Length
  580.             'End If
  581.             'Next
  582.             ' Cambio las llaves por nada - TESTEAR!
  583.             'For x As Integer = pos_ini_name + 8 To pos_end_name
  584.             'If (Mid(_data, x, 1)) = "{" Or (Mid(_data, x, 1)) = "}" Then
  585.             '_data = _data.Remove(x - 1, 1)
  586.             'End If
  587.             'Next
  588.  
  589.             pos_end = InStr(pos_ini, _data, "}")
  590.             _info_player = Mid(_data, pos_ini + 11, pos_end - pos_ini - 11)
  591.             _info_player = Chr(34) & _info_player & "}" ' DEPURACION: Para que tenga una llave al final del contenido y unas comillas al inicio.
  592.             _data = _data.Remove(pos_ini - 2, pos_end - pos_ini + 2) ' -1 y +1 para que borre la , del inicio y final
  593.  
  594.  
  595.             ' Hasta aqui perfecto.
  596.             ' Todo va entre { } y con comillas
  597.  
  598.         End If
  599.         ' El espacio resultante es la info del condo
  600.         _info_condo = _data ' & "}" ' DEPURACION: este sobra
  601.  
  602.         ' Datos del Condominio, condo sin ID? Si, la hay.
  603.         ' DEPURACION: Un condo sin ID es poco probable, pero no descarto un bug en Kaban
  604.         If (InStr(_info_condo, "" & Chr(34) & "id" & Chr(34) & ":")) Then
  605.             Try
  606.                 ' Buscando la ID del condo (DEPURACION: Perfecto)
  607.                 pos_ini = InStr(_info_condo, "" & Chr(34) & "id" & Chr(34) & ":")
  608.                 pos_end = InStr(pos_ini, _info_condo, ",")
  609.                 _cityWildernesses_id = Mid(_info_condo, pos_ini + 5, pos_end - pos_ini - 5)
  610.             Catch
  611.                 pos_ini = InStr(_info_condo, "" & Chr(34) & "id" & Chr(34) & ":")
  612.                 pos_end = InStr(pos_ini, _info_condo, "}")
  613.                 _cityWildernesses_id = Mid(_info_condo, pos_ini + 5, pos_end - pos_ini - 5)
  614.             End Try
  615.         End If
  616.  
  617.         ' Condo sin level...? Pues si...
  618.         ' DEPURACION: Perfecto. Un condo sin Lv es poco probable, pero no descarto un bug en Kaban
  619.         If InStr(_info_condo, "" & Chr(34) & "level" & Chr(34) & ":") Then
  620.             Try
  621.                 ' Buscando el lv del condo
  622.                 pos_ini = InStr(_info_condo, "" & Chr(34) & "level" & Chr(34) & ":")
  623.                 pos_end = InStr(pos_ini, _info_condo, ",")
  624.                 _cityWildernesses_lv = Mid(_info_condo, pos_ini + 8, pos_end - pos_ini - 8)
  625.             Catch
  626.                 pos_ini = InStr(_info_condo, "" & Chr(34) & "level" & Chr(34) & ":")
  627.                 pos_end = InStr(pos_ini, _info_condo, "}")
  628.                 _cityWildernesses_lv = Mid(_info_condo, pos_ini + 8, pos_end - pos_ini - 8)
  629.             End Try
  630.         End If
  631.  
  632.         ' Condos sin coodenadas?? Si... tambien...
  633.         ' DEPURACION: Perfecto. Un condo sin coordenadas es poco probable, pero no descarto un bug en Kaban
  634.         If (InStr(_info_condo, "" & Chr(34) & "x" & Chr(34) & ":")) Then
  635.             Try
  636.                 ' Buscando cx del condo
  637.                 pos_ini = InStr(_info_condo, "" & Chr(34) & "x" & Chr(34) & ":")
  638.                 pos_end = InStr(pos_ini, _info_condo, ",")
  639.                 _cityWildernesses_x = Mid(_info_condo, pos_ini + 4, pos_end - pos_ini - 4)
  640.             Catch
  641.                 pos_ini = InStr(_info_condo, "" & Chr(34) & "x" & Chr(34) & ":")
  642.                 pos_end = InStr(pos_ini, _info_condo, "}")
  643.                 _cityWildernesses_x = Mid(_info_condo, pos_ini + 4, pos_end - pos_ini - 4)
  644.             End Try
  645.         End If
  646.  
  647.         ' Condos sin coodenadas?? Si... tambien...
  648.         ' DEPURACION: Perfecto. Un condo sin Lv es poco probable, pero no descarto un bug en Kaban
  649.         If (InStr(_info_condo, "" & Chr(34) & "y" & Chr(34) & ":")) Then
  650.             Try
  651.                 ' Buscando cy del condo
  652.                 pos_ini = InStr(_info_condo, "" & Chr(34) & "y" & Chr(34) & ":")
  653.                 pos_end = InStr(pos_ini, _info_condo, ",")
  654.                 _cityWildernesses_y = Mid(_info_condo, pos_ini + 4, pos_end - pos_ini - 4)
  655.             Catch
  656.                 pos_ini = InStr(_info_condo, "" & Chr(34) & "y" & Chr(34) & ":")
  657.                 pos_end = InStr(pos_ini, _info_condo, "}")
  658.                 _cityWildernesses_y = Mid(_info_condo, pos_ini + 4, pos_end - pos_ini - 4)
  659.             End Try
  660.         End If
  661.  
  662.         If (InStr(_info_condo, "last_collected_at")) Then ' Si no tiene dueño, no se recolecciona -.- DE
  663.             Try
  664.                 ' Buscando ultima recoleccion del condo
  665.                 pos_ini = InStr(_info_condo, "" & Chr(34) & "last_collected_at" & Chr(34) & ":")
  666.                 pos_end = InStr(pos_ini, _info_condo, ",")
  667.                 _cityWildernesses_last_collected_at = Mid(_info_condo, pos_ini + 20, pos_end - pos_ini - 20)
  668.             Catch
  669.                 'MsgBox(_info_condo)
  670.                 pos_ini = InStr(_info_condo, "" & Chr(34) & "last_collected_at" & Chr(34) & ":")
  671.                 pos_end = InStr(pos_ini, _info_condo, "}")
  672.                 _cityWildernesses_last_collected_at = Mid(_info_condo, pos_ini + 20, pos_end - pos_ini - 20)
  673.             End Try
  674.         Else
  675.             _cityWildernesses_last_collected_at = "-1"
  676.         End If
  677.  
  678.  
  679.         ' Datos del jugador y su clan (si lo hubiera)
  680.         ' Clan / Alianza
  681.         If (_info_alianza.Length > 0) Then
  682.  
  683.             pos_ini = InStr(_info_alianza, "" & Chr(34) & "id" & Chr(34) & ":")
  684.             pos_end = InStr(pos_ini, _info_alianza, "}")
  685.             ' ERROR!!:
  686.             '       "alliance":
  687.             '{
  688.             '"id":300200885,
  689.             '"name":"angeles de la noxe"
  690.             '},
  691.             '
  692.             ' Con esta entrada se consigue: alliance_id = 300200885,"name":"angeles de la noxe"
  693.             ' Estrategia...
  694.             ' Iterar a partir de " y si no es un numero, terminar la iteracion
  695.             Dim nan As Integer
  696.             For x As Integer = pos_ini + 5 To _info_alianza.Length
  697.                 nan = Asc(Mid(_info_alianza, x, 1))
  698.                 If ((nan < 48) Or (nan > 57)) Then ' del cero al 9
  699.                     pos_end = x
  700.                     x = _info_alianza.Length
  701.                 End If
  702.             Next
  703.             ' DEPURACION: PERFECTO.
  704.             _alliance_id = Mid(_info_alianza, pos_ini + 5, pos_end - pos_ini - 5)
  705.  
  706.             ' DEPURACION: PERFECTO, solo se coge lo que hay entre las comillas
  707.             pos_ini = InStr(_info_alianza, "" & Chr(34) & "name" & Chr(34) & ":")
  708.             For x As Integer = pos_ini + 8 To _info_alianza.Length
  709.                 If (Mid(_info_alianza, x, 1) = Chr(34)) Then
  710.                     pos_end = x
  711.                     x = _info_alianza.Length
  712.                 End If
  713.  
  714.             Next
  715.             _alliance_name = Mid(_info_alianza, pos_ini + 8, pos_end - pos_ini - 8)
  716.  
  717.         End If
  718.  
  719.         ' Jugador
  720.         If (_info_player.Length > 0) Then
  721.             If (InStr(_info_player, "protected_until")) Then
  722.                 Try
  723.                     pos_ini = InStr(_info_player, "" & Chr(34) & "protected_until" & Chr(34) & ":")
  724.                     pos_end = InStr(pos_ini, _info_player, ",")
  725.                     _owner_protectedUntil = Mid(_info_player, pos_ini + 18, pos_end - pos_ini - 18)
  726.                 Catch
  727.                     Try
  728.                         'MsgBox(_info_player, , "Protected Until")
  729.                         pos_ini = InStr(_info_player, "" & Chr(34) & "protected_until" & Chr(34) & ":")
  730.                         pos_end = InStr(pos_ini, _info_player, "}")
  731.                         _owner_protectedUntil = Mid(_info_player, pos_ini + 18, pos_end - pos_ini - 18)
  732.                     Catch
  733.                         MsgBox(_info_player, , "Protected Until")
  734.                     End Try
  735.                 End Try
  736.             Else
  737.                 _owner_protectedUntil = "-1"
  738.             End If
  739.  
  740.             If (InStr(_info_player, "last_don_message_sent_at")) Then
  741.                 Try
  742.                     pos_ini = InStr(_info_player, "" & Chr(34) & "last_don_message_sent_at" & Chr(34) & ":")
  743.                     pos_end = InStr(pos_ini, _info_player, ",")
  744.                     _owner_lastDonMessage = Mid(_info_player, pos_ini + 27, pos_end - pos_ini - 27)
  745.                 Catch
  746.                     Try
  747.                         pos_ini = InStr(_info_player, "" & Chr(34) & "last_don_message_sent_at" & Chr(34) & ":")
  748.                         pos_end = InStr(pos_ini, _info_player, "}")
  749.                         _owner_lastDonMessage = Mid(_info_player, pos_ini + 27, pos_end - pos_ini - 27)
  750.                         'MsgBox(_info_player & vbCrLf & pos_end & vbCrLf & pos_ini, , "last_don_message_sent_at")
  751.                     Catch
  752.                         MsgBox(_info_player, , "last Don Message")
  753.                     End Try
  754.                 End Try
  755.             Else
  756.                 _owner_lastDonMessage = "-1"
  757.             End If
  758.  
  759.             If (InStr(_info_player, "created_at")) Then
  760.                 Try
  761.                     pos_ini = InStr(_info_player, "" & Chr(34) & "created_at" & Chr(34) & ":")
  762.                     pos_end = InStr(pos_ini, _info_player, ",")
  763.                     _owner_createdAt = Mid(_info_player, pos_ini + 13, pos_end - pos_ini - 13)
  764.                 Catch
  765.                     'MsgBox(_info_player, , "created_at")
  766.                     pos_ini = InStr(_info_player, "" & Chr(34) & "created_at" & Chr(34) & ":")
  767.                     pos_end = InStr(pos_ini, _info_player, "}")
  768.                     _owner_createdAt = Mid(_info_player, pos_ini + 13, pos_end - pos_ini - 13)
  769.                 End Try
  770.             Else
  771.                 _owner_createdAt = "-1"
  772.             End If
  773.             ' Error, si esta info esta al final, no hay , ni }
  774.             If (InStr(_info_player, "id")) Then
  775.                 Try
  776.                     pos_ini = InStr(_info_player, "" & Chr(34) & "id" & Chr(34) & ":")
  777.                     pos_end = InStr(pos_ini, _info_player, ",")
  778.                     _owner_id = Mid(_info_player, pos_ini + 5, pos_end - pos_ini - 5)
  779.                 Catch
  780.                     'MsgBox(_info_player, , "id")
  781.                     pos_ini = InStr(_info_player, "" & Chr(34) & "id" & Chr(34) & ":")
  782.                     pos_end = InStr(pos_ini, _info_player, "}")
  783.                     _owner_id = Mid(_info_player, pos_ini + 5, pos_end - pos_ini - 5)
  784.                 End Try
  785.             Else
  786.                 'MsgBox(_info_player, , "id")
  787.                 _owner_id = "-1"
  788.             End If
  789.  
  790.             If (InStr(_info_player, "platform")) Then
  791.                 Try
  792.                     pos_ini = InStr(_info_player, "" & Chr(34) & "platform" & Chr(34) & ":")
  793.                     pos_end = InStr(pos_ini, _info_player, ",")
  794.                     _owner_plataform = Mid(_info_player, pos_ini + 12, pos_end - pos_ini - 13)
  795.                 Catch
  796.                     'MsgBox(_info_player, , "platform")
  797.                     pos_ini = InStr(_info_player, "" & Chr(34) & "platform" & Chr(34) & ":")
  798.                     pos_end = InStr(pos_ini, _info_player, "}")
  799.                     _owner_plataform = Mid(_info_player, pos_ini + 12, pos_end - pos_ini - 13)
  800.                 End Try
  801.             Else
  802.                 _owner_plataform = "-1"
  803.             End If
  804.  
  805.             If (InStr(_info_player, "last_online")) Then
  806.                 Try
  807.                     pos_ini = InStr(_info_player, "" & Chr(34) & "last_online" & Chr(34) & ":")
  808.                     pos_end = InStr(pos_ini, _info_player, ",")
  809.                     _owner_lastOnline = Mid(_info_player, pos_ini + 14, pos_end - pos_ini - 14)
  810.                 Catch
  811.                     'MsgBox(_info_player, , "last_online")
  812.                     pos_ini = InStr(_info_player, "" & Chr(34) & "last_online" & Chr(34) & ":")
  813.                     pos_end = InStr(pos_ini, _info_player, "}")
  814.                     _owner_lastOnline = Mid(_info_player, pos_ini + 14, pos_end - pos_ini - 14)
  815.                 End Try
  816.             Else
  817.                 _owner_lastOnline = "-1"
  818.             End If
  819.  
  820.             If (InStr(_info_player, "" & Chr(34) & "respect" & Chr(34) & ":")) Then
  821.                 Try
  822.                     pos_ini = InStr(_info_player, "" & Chr(34) & "respect" & Chr(34) & ":")
  823.                     pos_end = InStr(pos_ini, _info_player, ",")
  824.                     _owner_respect = (Mid(_info_player, pos_ini + 10, pos_end - pos_ini - 10))
  825.                 Catch
  826.                     Try
  827.                         'MsgBox(_info_player)
  828.                         pos_ini = InStr(_info_player, "" & Chr(34) & "respect" & Chr(34) & ":")
  829.                         pos_end = InStr(pos_ini, _info_player, "}")
  830.                         _owner_respect = Mid(_info_player, pos_ini + 10, pos_end - pos_ini - 10)
  831.                     Catch
  832.                         MsgBox(_info_player, , "respect")
  833.                     End Try
  834.                 End Try
  835.             Else
  836.                 _owner_respect = "-1"
  837.             End If
  838.  
  839.  
  840.             If (InStr(_info_player, "is_don")) Then
  841.                 Try
  842.                     pos_ini = InStr(_info_player, "" & Chr(34) & "is_don" & Chr(34) & ":")
  843.                     pos_end = InStr(pos_ini, _info_player, ",")
  844.                     _owner_isDon = (Mid(_info_player, pos_ini + 9, pos_end - pos_ini - 9))
  845.                 Catch
  846.                     pos_ini = InStr(_info_player, "" & Chr(34) & "is_don" & Chr(34) & ":")
  847.                     pos_end = InStr(pos_ini, _info_player, "}")
  848.                     _owner_isDon = Mid(_info_player, pos_ini + 9, pos_end - pos_ini - 9)
  849.                 End Try
  850.             Else
  851.                 _owner_isDon = "-1"
  852.             End If
  853.  
  854.             If (InStr(_info_player, "respect_title")) Then
  855.                 Try
  856.                     pos_ini = InStr(_info_player, "" & Chr(34) & "respect_title" & Chr(34) & ":")
  857.                     pos_end = InStr(pos_ini, _info_player, ",")
  858.                     _owner_title = (Mid(_info_player, pos_ini + 17, pos_end - pos_ini - 18))
  859.                 Catch
  860.                     pos_ini = InStr(_info_player, "" & Chr(34) & "respect_title" & Chr(34) & ":")
  861.                     pos_end = InStr(pos_ini, _info_player, "}")
  862.                     _owner_title = Mid(_info_player, pos_ini + 17, pos_end - pos_ini - 18)
  863.                 End Try
  864.             Else
  865.                 _owner_title = "-1"
  866.             End If
  867.  
  868.             If (InStr(_info_player, "level")) Then
  869.                 Try
  870.                     pos_ini = InStr(_info_player, "" & Chr(34) & "level" & Chr(34) & ":")
  871.                     pos_end = InStr(pos_ini, _info_player, ",")
  872.                     _owner_lv = (Mid(_info_player, pos_ini + 8, pos_end - pos_ini - 8))
  873.                 Catch
  874.                     pos_ini = InStr(_info_player, "" & Chr(34) & "level" & Chr(34) & ":")
  875.                     pos_end = InStr(pos_ini, _info_player, "}")
  876.                     _owner_lv = Mid(_info_player, pos_ini + 8, pos_end - pos_ini - 8)
  877.                 End Try
  878.             Else
  879.                 _owner_lv = "-1"
  880.             End If
  881.  
  882.             If (InStr(_info_player, "family")) Then
  883.                 Try
  884.                     pos_ini = InStr(_info_player, "" & Chr(34) & "family" & Chr(34) & ":")
  885.                     pos_end = InStr(pos_ini, _info_player, ",")
  886.                     _owner_family = (Mid(_info_player, pos_ini + 9, pos_end - pos_ini - 9))
  887.                 Catch
  888.                     pos_ini = InStr(_info_player, "" & Chr(34) & "family" & Chr(34) & ":")
  889.                     pos_end = InStr(pos_ini, _info_player, "}")
  890.                     _owner_family = Mid(_info_player, pos_ini + 9, pos_end - pos_ini - 9)
  891.                 End Try
  892.             Else
  893.                 _owner_family = "-1"
  894.             End If
  895.  
  896.             If (InStr(_info_player, "name")) Then
  897.                 Try
  898.                     pos_ini = InStr(_info_player, "" & Chr(34) & "name" & Chr(34) & ":")
  899.                     pos_end = InStr(pos_ini, _info_player, ",")
  900.                     _owner_name = (Mid(_info_player, pos_ini + 8, pos_end - pos_ini - 9))
  901.                 Catch
  902.                     pos_ini = InStr(_info_player, "" & Chr(34) & "name" & Chr(34) & ":")
  903.                     pos_end = InStr(pos_ini, _info_player, "}")
  904.                     _owner_name = Mid(_info_player, pos_ini + 8, pos_end - pos_ini - 9)
  905.                 End Try
  906.             Else
  907.                 _owner_name = "-1"
  908.             End If
  909.         End If
  910.     End Sub
  911.  
  912.     Public Function showData()
  913.         Return __data
  914.     End Function
  915.  
  916.     Public Function showCondoId()
  917.         Return _cityWildernesses_id
  918.     End Function
  919.  
  920.     Public Function showLasctCollectedAt()
  921.         Return _cityWildernesses_last_collected_at
  922.     End Function
  923.  
  924.     Public Function showAll()
  925.         Dim a As String
  926.         a = "- Info Alianza -" & vbCrLf &
  927.         _info_alianza & vbCrLf & "--------------------" & vbCrLf &
  928.         "- Info player -" & vbCrLf &
  929.         _info_player & vbCrLf & "--------------------" & vbCrLf &
  930.         "- Info Condo -" & vbCrLf &
  931.         _info_condo & vbCrLf & "---------------------" & vbCrLf &
  932.         _cityWildernesses_id & vbCrLf &
  933.         _cityWildernesses_x & vbCrLf &
  934.         _cityWildernesses_y & vbCrLf &
  935.         _cityWildernesses_last_collected_at & vbCrLf & " - Alianza  -" & vbCrLf &
  936.         _alliance_id & vbCrLf &
  937.         _alliance_name & vbCrLf & " - PJ Status - " & vbCrLf &
  938.         _owner_family & vbCrLf &
  939.         _owner_id & vbCrLf &
  940.         _owner_lv & vbCrLf &
  941.         _owner_lastOnline & vbCrLf &
  942.         _owner_title & vbCrLf &
  943.         _owner_lastDonMessage & vbCrLf &
  944.         _owner_createdAt & vbCrLf &
  945.         _owner_protectedUntil & vbCrLf &
  946.         _owner_name & vbCrLf &
  947.         _owner_plataform & vbCrLf &
  948.         _owner_isDon & vbCrLf &
  949.         _owner_respect
  950.         Return a
  951.     End Function
  952.  
  953.     Public Function getCityWildernessesLastCollectedAt()
  954.         Return _cityWildernesses_last_collected_at
  955.     End Function
  956.  
  957.     Public Function getCityWildernessesY()
  958.         Return _cityWildernesses_y
  959.     End Function
  960.  
  961.     Public Function getCityWildernessesX()
  962.         Return _cityWildernesses_x
  963.     End Function
  964.  
  965.     Public Function getCityWildernessesLv()
  966.         Return _cityWildernesses_lv
  967.     End Function
  968.  
  969.     Public Function getCityWildernessesId()
  970.         Return _cityWildernesses_id
  971.     End Function
  972.  
  973.     Public Function getOwnerIsDon()
  974.         Return _owner_isDon
  975.     End Function
  976.  
  977.     Public Function getOwnerRespect()
  978.         Return _owner_respect
  979.     End Function
  980.  
  981.     Public Function getOwnerCreatedAt()
  982.         Return _owner_createdAt
  983.     End Function
  984.  
  985.     Public Function getOwnerProtectedUntil()
  986.         Return _owner_protectedUntil
  987.     End Function
  988.  
  989.     Public Function getOwnerName()
  990.         Return _owner_name
  991.     End Function
  992.  
  993.     Public Function getOwnerPlataform()
  994.         Return _owner_plataform
  995.     End Function
  996.  
  997.     Public Function getOwnerLastOnline()
  998.         Return _owner_lastOnline
  999.     End Function
  1000.  
  1001.     Public Function getOwnerTitle()
  1002.         Return _owner_title
  1003.     End Function
  1004.  
  1005.     Public Function getOwnerLastDonMessage()
  1006.         Return _owner_lastDonMessage
  1007.     End Function
  1008.  
  1009.     Public Function getAllianceId()
  1010.         Return _alliance_id
  1011.     End Function
  1012.  
  1013.     Public Function getAllianceName()
  1014.         Return _alliance_name
  1015.     End Function
  1016.  
  1017.     Public Function getOwnerFamily()
  1018.         Return _owner_family
  1019.     End Function
  1020.  
  1021.     Public Function getOwnerId()
  1022.         Return _owner_id
  1023.     End Function
  1024.  
  1025.     Public Function getOwnerLv()
  1026.         Return _owner_lv
  1027.     End Function
  1028.  
  1029. End Class
  1030.  
  1031. Class Terrain
  1032.     Dim _terrainType, _terrainLv, _terrainCx, _terrainCy As String
  1033.  
  1034.     Public Sub constructor(ByVal terrain_type As String, ByVal terrain_lv As String, ByVal terrain_cx As String, ByVal terrain_cy As String)
  1035.         _terrainType = terrain_type
  1036.         _terrainLv = terrain_lv
  1037.         _terrainCx = terrain_cx
  1038.         _terrainCy = terrain_cy
  1039.     End Sub
  1040.  
  1041.     Public Function showAll()
  1042.         Dim a As String = _terrainCx & vbCrLf & _terrainCy & vbCrLf & _terrainLv & vbCrLf & _terrainType & vbCrLf
  1043.         Return a
  1044.     End Function
  1045.  
  1046.     Public Function get_terrainType()
  1047.         Return _terrainType
  1048.     End Function
  1049.  
  1050.     Public Function get_terrain_lv()
  1051.         Return _terrainLv
  1052.     End Function
  1053.  
  1054.     Public Function get_terrain_cx()
  1055.         Return _terrainCx
  1056.     End Function
  1057.  
  1058.     Public Function get_terrain_cy()
  1059.         Return _terrainCy
  1060.     End Function
  1061. End Class
  1062.  
  1063. Class MapCities
  1064.     Dim _MapCities_name, _MapCities_id, _MapCities_y, _MapCities_x, _MapCities_type, _MapCities_protectedUntil, _MapCities_protected, _MapCities_useCommonBuildings As String
  1065.     Dim _owner_name, _owner_id, _owner_protected_until, _owner_respect_title, _owner_respect, _owner_level, _owner_createdAt, _owner_lastOnline, _owner_family, _owner_plataform, _owner_isDon, _owner_lastDonMessage As String
  1066.     Dim _alliance_name, _alliance_id
  1067.  
  1068.     Dim _data As String
  1069.     Dim longitud_original As Integer
  1070.  
  1071.     ' Sacar al player para obtener los datos de la ciudad
  1072.     Public Sub constructor(ByVal data As String, ByVal debug As String, ByRef textBox As TextBox)
  1073.         Dim pos1, pos2 As Integer
  1074.         Dim alliance, owner As String
  1075.  
  1076.         alliance = "-1"
  1077.         owner = "-1"
  1078.  
  1079.         ' Solo para depuracion
  1080.         _data = data
  1081.         '
  1082.  
  1083.         ' Extraccion de la alianza
  1084.         ' ATENCION!! Los de La Camorra tienen caracteres JSON: "name":"LA CAMORRA {^_^}",
  1085.         '
  1086.         '   "alliance":
  1087.         '   {
  1088.         '     "name":"LA CAMORRA {^_^}",
  1089.         '    "id":300171440
  1090.         '   },
  1091.         '
  1092.  
  1093.         'Try
  1094.         Dim pos1_alliance, pos2_alliance As Integer
  1095.         ' Dim pos1_alliance_name, pos2_alliance_name As Integer
  1096.         If (InStr(data, "alliance")) Then
  1097.             pos1_alliance = InStr(data, "alliance" & Chr(34) & ":")
  1098.             ' DEPURACION: buscar el nombre de la alianza y borrar {}, luego continuar con la busqueda de la llave.
  1099.             ' DEPURACION: Ya no hace falta, lo hago antes de mandar el texto.
  1100.             'pos1_alliance_name = InStr(pos1_alliance, data, "name" & Chr(34) & ":")
  1101.             'pos2_alliance_name = InStr(pos1_alliance_name + 1, data, Chr(34))
  1102.             'For x As Integer = pos1_alliance_name + 7 To pos2_alliance_name
  1103.             'If (Mid(data, x, 1) = "{") Or (Mid(data, x, 1) = "}") Then
  1104.             'data = data.Remove(x - 1, 1)
  1105.             'End If
  1106.             'Next
  1107.             '
  1108.             pos2_alliance = InStr(pos1_alliance + 1, data, "}")
  1109.             alliance = Mid(data, pos1_alliance + 10 + 1, pos2_alliance - pos1_alliance - 10 - 1) ' +1 para no coger la comilla del principio -1 y del final
  1110.  
  1111.             longitud_original = alliance.Length + 12 ' para luego cortar los caracteres en data
  1112.  
  1113.             ' Estrategia, buscar name dentro de la alianza, y en el segundo parametro, eliminar las llaves
  1114.             'Dim pos1_name As Integer = InStr(pos1, alliance, "name" & Chr(34) & ":")
  1115.             'Dim pos2_name As Integer = InStr(pos1_name + 6, alliance, Chr(34))
  1116.             'Dim pos3_name As Integer = InStr(pos2_name + 1, alliance, Chr(34))
  1117.  
  1118.             'For posbug As Integer = pos2_name + 1 To pos3_name
  1119.             'If (Mid(alliance, posbug, 1) = "{") Or (Mid(alliance, posbug, 1) = "}") Then
  1120.             'data = data.Remove(posbug - 1, 1)
  1121.             'End If
  1122.             'Next
  1123.             'data = data & "}" ' por si acaso no hubiese, mejor que sobre.
  1124.  
  1125.             'pos2 = InStr(pos1, data, "}")
  1126.             'If Not (Mid(data, pos2 + 1, 1) = Chr(34)) Then  ' si no encuentra una comilla doble, es un nombre
  1127.             'pos2 = InStr(pos2 + 1, data, "}")       ' entonces busca la siguiente llave
  1128.             'End If
  1129.             'alliance = Mid(data, pos1 + 11, pos2 - pos1 - 11)
  1130.             'alliance = alliance & "," ' de esta manera todos los datos terminan en ,
  1131.             alliance = alliance.Replace(Chr(34), "") ' elimino las comillas, de este modo consigo clave:valor,
  1132.             alliance = alliance & "," ' el ultimo valor no lleva ,
  1133.             ' Corto alliance de data
  1134.             data = data.Remove(pos1_alliance - 3, longitud_original + 2)
  1135.  
  1136.             ' _alliance_name
  1137.             pos1 = InStr(alliance, "name:")
  1138.             pos2 = InStr(pos1, alliance, ",")
  1139.             _alliance_name = Mid(alliance, pos1 + 5, pos2 - pos1 - 5)
  1140.  
  1141.             ' _alliance_id
  1142.             pos1 = InStr(alliance, "id:")
  1143.             pos2 = InStr(pos1, alliance, ",")
  1144.             _alliance_id = Mid(alliance, pos1 + 3, pos2 - pos1 - 3)
  1145.  
  1146.         Else
  1147.             _alliance_id = -1
  1148.             _alliance_name = -1
  1149.         End If
  1150.  
  1151.         Dim player_pos1, player_pos2 As Integer
  1152.         ' Dim player_name_pos1, player_name_pos2 As Integer
  1153.         ' Extracion del jugador
  1154.         player_pos1 = InStr(data, "player" & Chr(34) & ":")
  1155.         ' Borrar las llaves del nombre del jugador
  1156.         ' DEPURACION: Esta hecho ya antes de mandarse
  1157.         'player_name_pos1 = InStr(player_pos1 + 1, data, Chr(34))
  1158.         'player_name_pos2 = InStr(player_name_pos1 + 1, data, Chr(34))
  1159.         'For x As Integer = player_name_pos1 To player_name_pos1
  1160.         'If (Mid(data, x, 1) = "{") Or (Mid(data, x, 1) = "}") Then
  1161.         'data = data.Remove(x - 1, 1)
  1162.         'End If
  1163.         ' Next
  1164.         '
  1165.         player_pos2 = InStr(player_pos1, data, "}")
  1166.         owner = Mid(data, player_pos1 + 9, player_pos2 - player_pos1 - 9)
  1167.         longitud_original = owner.Length + 9 + 2 ' player":     mas     },  o   }}    si acaba al final
  1168.         owner = owner & "," ' de esta manera todos los datos terminan en ,
  1169.         owner = owner.Replace(Chr(34), "") ' elimino las comillas, de este modo consigo clave:valor,
  1170.  
  1171.         ' Eliminando owner de data
  1172.         data = data.Remove(player_pos1 - 2, longitud_original + 1)
  1173.         data = data.Insert(data.Length - 1, ",") ' Antes de } necesito una ,
  1174.         ' Eliminando comillas
  1175.         data = data.Replace(Chr(34), "")
  1176.         ' Eliminando llaves
  1177.         'data = data.Replace("{", "")
  1178.         'data = data.Replace("}", "")
  1179.         ' Eliminando residuo - DEPURACION: Ya no es necesario
  1180.         'If (InStr(data, "p,")) Then
  1181.         'pos1 = (InStr(data, "p,"))
  1182.         'data = data.Remove(pos1 - 1, 2)
  1183.         'End If
  1184.  
  1185.         ' If (InStr(data, "a,")) Then
  1186.         'pos1 = (InStr(data, "a,"))
  1187.         'data = data.Remove(pos1 - 1, 2)
  1188.         'End If
  1189.         ' Añadiendo una coma al fina, de este modo consigo clave:valor, - DEPURACION: No es necesario
  1190.         'data = data & ","
  1191.  
  1192.  
  1193.         ' _mapCities_name
  1194.         pos1 = InStr(data, "name:")
  1195.         pos2 = InStr(pos1, data, ",")
  1196.         _MapCities_name = Mid(data, pos1 + 5, pos2 - pos1 - 5)
  1197.  
  1198.         ' _MapCities_id
  1199.         pos1 = InStr(data, "id:")
  1200.         pos2 = InStr(pos1, data, ",")
  1201.         _MapCities_id = Mid(data, pos1 + 3, pos2 - pos1 - 3)
  1202.  
  1203.         ' _MapCities_x
  1204.         pos1 = InStr(data, "x:")
  1205.         pos2 = InStr(pos1, data, ",")
  1206.         _MapCities_x = Mid(data, pos1 + 2, pos2 - pos1 - 2)
  1207.  
  1208.         ' _MapCities_y
  1209.         pos1 = InStr(data, "y:")
  1210.         pos2 = InStr(pos1, data, ",")
  1211.         _MapCities_y = Mid(data, pos1 + 2, pos2 - pos1 - 2)
  1212.  
  1213.         ' _MapCities_type
  1214.         pos1 = InStr(data, "type:")
  1215.         pos2 = InStr(pos1, data, ",")
  1216.         _MapCities_type = Mid(data, pos1 + 5, pos2 - pos1 - 5)
  1217.  
  1218.         ' _MapCities_protectedUntil
  1219.         pos1 = InStr(data, "protected_until:")
  1220.         pos2 = InStr(pos1, data, ",")
  1221.         _MapCities_protectedUntil = Mid(data, pos1 + 16, pos2 - pos1 - 16)
  1222.  
  1223.         ' _MapCities_protected
  1224.         pos1 = InStr(data, "protected:")
  1225.         pos2 = InStr(pos1, data, ",")
  1226.         _MapCities_protected = Mid(data, pos1 + 10, pos2 - pos1 - 10)
  1227.  
  1228.         ' _MapCities_useCommonBuildings
  1229.         pos1 = InStr(data, "use_common_buildings:")
  1230.         pos2 = InStr(pos1, data, ",")
  1231.         _MapCities_useCommonBuildings = Mid(data, pos1 + 21, pos2 - pos1 - 21)
  1232.  
  1233.  
  1234.         ' ****************************************************
  1235.         ' DEPURACION: Perfecto
  1236.         ' ****************************************************
  1237.         ' _owner_name
  1238.         pos1 = InStr(owner, "name:")
  1239.         pos2 = InStr(pos1, owner, ",")
  1240.         _owner_name = Mid(owner, pos1 + 5, pos2 - pos1 - 5)
  1241.  
  1242.         ' _owner_id
  1243.         pos1 = InStr(owner, "id:")
  1244.         pos2 = InStr(pos1, owner, ",")
  1245.         _owner_id = Mid(owner, pos1 + 3, pos2 - pos1 - 3)
  1246.  
  1247.         ' _owner_protected_until
  1248.         pos1 = InStr(owner, "protected_until:")
  1249.         pos2 = InStr(pos1, owner, ",")
  1250.         _owner_protected_until = Mid(owner, pos1 + 16, pos2 - pos1 - 16)
  1251.  
  1252.         ' _owner_respect_title
  1253.         pos1 = InStr(owner, "respect_title:")
  1254.         pos2 = InStr(pos1, owner, ",")
  1255.         _owner_respect_title = Mid(owner, pos1 + 14, pos2 - pos1 - 14)
  1256.  
  1257.         ' _owner_respect
  1258.         pos1 = InStr(owner, "respect:")
  1259.         pos2 = InStr(pos1, owner, ",")
  1260.         _owner_respect = Mid(owner, pos1 + 8, pos2 - pos1 - 8)
  1261.  
  1262.         ' _owner_level
  1263.         pos1 = InStr(owner, "level:")
  1264.         pos2 = InStr(pos1, owner, ",")
  1265.         _owner_level = Mid(owner, pos1 + 6, pos2 - pos1 - 6)
  1266.  
  1267.         ' _owner_createdAt
  1268.         pos1 = InStr(owner, "created_at:")
  1269.         pos2 = InStr(pos1, owner, ",")
  1270.         _owner_createdAt = Mid(owner, pos1 + 11, pos2 - pos1 - 11)
  1271.  
  1272.         ' _owner_lastOnline
  1273.         pos1 = InStr(owner, "last_online:")
  1274.         pos2 = InStr(pos1, owner, ",")
  1275.         _owner_lastOnline = Mid(owner, pos1 + 12, pos2 - pos1 - 12)
  1276.  
  1277.         ' _owner_family
  1278.         pos1 = InStr(owner, "family:")
  1279.         pos2 = InStr(pos1, owner, ",")
  1280.         _owner_family = Mid(owner, pos1 + 7, pos2 - pos1 - 7)
  1281.  
  1282.         ' _owner_plataform
  1283.         pos1 = InStr(owner, "platform:")
  1284.         pos2 = InStr(pos1, owner, ",")
  1285.         _owner_plataform = Mid(owner, pos1 + 9, pos2 - pos1 - 9)
  1286.  
  1287.         ' _owner_isDon
  1288.         pos1 = InStr(owner, "is_don:")
  1289.         pos2 = InStr(pos1, owner, ",")
  1290.         _owner_isDon = Mid(owner, pos1 + 7, pos2 - pos1 - 7)
  1291.  
  1292.         ' _owner_lastDonMessage
  1293.         pos1 = InStr(owner, "last_don_message_sent_at:")
  1294.         pos2 = InStr(pos1, owner, ",")
  1295.         _owner_lastDonMessage = Mid(owner, pos1 + 25, pos2 - pos1 - 25)
  1296.         ' Catch
  1297.         'Dim d As New Debug
  1298.         ' d.newBug(_data)
  1299.         ' d.newBug(alliance)
  1300.         ' d.newBug(owner)
  1301.         'd.newBug(getAll)
  1302.         'Stop
  1303.         'End Try
  1304.     End Sub
  1305.  
  1306.     Public Function getMapCitiesName()
  1307.         Return _MapCities_name
  1308.     End Function
  1309.  
  1310.     Public Function getMapId()
  1311.         Return _MapCities_id
  1312.     End Function
  1313.  
  1314.     Public Function getMapCitiesX()
  1315.         Return _MapCities_x
  1316.     End Function
  1317.  
  1318.     Public Function getMapCitiesY()
  1319.         Return _MapCities_y
  1320.     End Function
  1321.  
  1322.     Public Function getMapCitiesType()
  1323.         Return _MapCities_type
  1324.     End Function
  1325.  
  1326.     Public Function getMapCitiesProtectedUntil()
  1327.         Return _MapCities_protectedUntil
  1328.     End Function
  1329.  
  1330.     Public Function getMapCitiesProtected()
  1331.         Return _MapCities_protected
  1332.     End Function
  1333.  
  1334.     Public Function getMapCitiesUseCommonBuildings()
  1335.         Return _MapCities_useCommonBuildings
  1336.     End Function
  1337.  
  1338.     Public Function getOwnerName()
  1339.         Return _owner_name
  1340.     End Function
  1341.  
  1342.     Public Function getOwnerPlatform()
  1343.         Return _owner_plataform
  1344.     End Function
  1345.  
  1346.     Public Function getOwnerRespectTtile()
  1347.         Return _owner_respect_title
  1348.     End Function
  1349.  
  1350.     Public Function getOwnerLastDonMessageSentAt()
  1351.         Return _owner_lastDonMessage
  1352.     End Function
  1353.  
  1354.     Public Function getOwnerRespect()
  1355.         Return _owner_respect
  1356.     End Function
  1357.  
  1358.     Public Function getOwnerLevel()
  1359.         Return _owner_level
  1360.     End Function
  1361.  
  1362.     Public Function getOwnerIsDon()
  1363.         Return _owner_isDon
  1364.     End Function
  1365.  
  1366.     Public Function getOwnerCreatedAt()
  1367.         Return _owner_createdAt
  1368.     End Function
  1369.  
  1370.     Public Function getOwnerLastOnline()
  1371.         Return _owner_lastOnline
  1372.     End Function
  1373.  
  1374.     Public Function getOwnerId()
  1375.         Return _owner_id
  1376.     End Function
  1377.  
  1378.     Public Function getOwnerFamily()
  1379.         Return _owner_family
  1380.     End Function
  1381.  
  1382.     Public Function getOwnerProtectedUntil()
  1383.         Return _owner_protected_until
  1384.     End Function
  1385.  
  1386.     Public Function getAllianceName()
  1387.         Return _alliance_name
  1388.     End Function
  1389.  
  1390.     Public Function getAllianceId()
  1391.         Return _alliance_id
  1392.     End Function
  1393.  
  1394.     Public Function getAll()
  1395.         Dim a As String = _MapCities_id & " cityID" & vbCrLf &
  1396.             _MapCities_name & " cityName " & vbCrLf &
  1397.             _MapCities_protected & " cityProtected " & vbCrLf &
  1398.             _MapCities_protectedUntil & " cityProtectedUntil " & vbCrLf &
  1399.             _MapCities_type & " cityType " & vbCrLf &
  1400.             _MapCities_useCommonBuildings & " cityUseCommonBuildings " & vbCrLf &
  1401.             _MapCities_x & " cityX " & vbCrLf &
  1402.             _MapCities_y & " cityY " & vbCrLf &
  1403.             _owner_createdAt & " OwnerCreated " & vbCrLf &
  1404.             _owner_family & " OwnerFamily " & vbCrLf &
  1405.             _owner_id & " OwnerId " & vbCrLf &
  1406.             _owner_isDon & " OwnerIsDon " & vbCrLf &
  1407.             _owner_lastDonMessage & " OwnerLastDonMessage " & vbCrLf &
  1408.             _owner_lastOnline & " OwnerLastOnline " & vbCrLf &
  1409.             _owner_level & " OwnerLevel " & vbCrLf &
  1410.             _owner_name & " OwnerName " & vbCrLf &
  1411.             _owner_plataform & " OwnerPlatform " & vbCrLf &
  1412.             _owner_protected_until & " OwnerUntil " & vbCrLf &
  1413.             _owner_respect & " OwnerRespect " & vbCrLf &
  1414.             _owner_respect_title & " OwnerTtile " & vbCrLf &
  1415.             _alliance_id & " AllianceId " & vbCrLf &
  1416.             _alliance_name & " AllianceName"
  1417.  
  1418.         Return a
  1419.  
  1420.     End Function
  1421.  
  1422.  
  1423. End Class
  1424.  
  1425. Class Debug
  1426.     Public Sub newBug(ByVal data As String)
  1427.         My.Computer.FileSystem.WriteAllText("Debug.txt", data, True)
  1428.         MsgBox("Archivo creado en: " & My.Computer.FileSystem.CurrentDirectory)
  1429.     End Sub
  1430. End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement