home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 September / Chip_2002-09_cd1.bin / zkuste / vbasic / Data / Utils / XZipComp.exe / XceedWinsock.Cab / F112736_Parser.bas < prev    next >
Encoding:
BASIC Source File  |  2000-03-27  |  2.6 KB  |  80 lines

  1. Attribute VB_Name = "Parsers"
  2. '
  3. ' Xceed Winsock Library Sample: Tron Sample
  4. ' Copyright (c) 2000 Xceed Software Inc.
  5. '
  6. ' [Code module with parser(s) for XML-style data]
  7. '
  8. ' This sample application for the Xceed Winsock Library demonstrates
  9. ' service advertising and service lookup using the SAP protocol, as
  10. ' well as connectionless asynchronous byte transfers using the IPX
  11. ' protocol. All transfer events are handled via the "Implements"
  12. ' statement. To successfully create a game, you must have the SAP
  13. ' protocol installed on your system. Otherwise, you can only list
  14. ' and join games.
  15. '
  16. ' This file is part of the Xceed Winsock Library Samples.
  17. ' The source code in this file is only intended as a supplement
  18. ' to Xceed Winsock Library's documentation, and is provided "as is",
  19. ' without warranty of any kind, either expressed or implied.
  20. '
  21.  
  22. Option Explicit
  23.  
  24. ' This function parses XML-style strings to extract player update information
  25. ' that was broadcast by the game server.
  26. '
  27. Public Function ParsePlayerData(Data As String, PlayerID As Integer) As PlayerUpdate
  28.     
  29.     Dim Player As PlayerUpdate
  30.     Dim Pnum As Integer
  31.     Dim PlayerData As String
  32.     Dim Pstart As Integer
  33.     Dim Pend As Integer
  34.     Dim Ptag As Integer
  35.     Dim Ptag2 As Integer
  36.  
  37.     ' Find the start of the player information
  38.  
  39.     Pstart = InStr(Data, "<player playerid=" & CStr(PlayerID))
  40.     
  41.     If Pstart > 0 Then
  42.         Player.Found = True
  43.         Pend = InStr(Pstart, Data, "</player>")
  44.         PlayerData = Mid$(Data, Pstart, Pend - Pstart + 9)
  45.         
  46.         ' Obtain player's name
  47.         
  48.         Ptag = InStr(PlayerData, "name=" & Chr$(34))
  49.         Ptag2 = InStr(Ptag + 6, PlayerData, Chr$(34))
  50.         
  51.         If Ptag > 0 And Ptag2 > Ptag Then
  52.             Player.Name = Mid$(PlayerData, Ptag + 6, Ptag2 - Ptag - 6)
  53.         End If
  54.         
  55.         ' Obtain X, Y position
  56.         
  57.         Ptag = InStr(PlayerData, "<pos x=")
  58.         Player.X = Val(Mid$(PlayerData, Ptag + 7))
  59.         Ptag = InStr(PlayerData, "y=")
  60.         Player.Y = Val(Mid$(PlayerData, Ptag + 2))
  61.         
  62.         Player.IsAlive = (InStr(PlayerData, "alive=TRUE") > 0)
  63.                 
  64.         Ptag = InStr(PlayerData, "updbrakes=")
  65.         If Ptag > 0 Then
  66.             Player.UpdateBrakes = Val(Mid$(PlayerData, Ptag + 10))
  67.         End If
  68.         
  69.         Ptag = InStr(PlayerData, "updnitro=")
  70.         If Ptag > 0 Then
  71.             Player.UpdateNitro = Val(Mid$(PlayerData, Ptag + 9))
  72.         End If
  73.     Else
  74.         Player.Found = False
  75.     End If
  76.     
  77.     ParsePlayerData = Player
  78.     
  79. End Function
  80.