[Non Release] RockNetwork GM Tool v4

    • [Non Release] RockNetwork GM Tool v4

      Hallo [COLOR="Orange"]C[/COLOR]ore'ler,

      Da ich sehe das den leuten mein GM Tool gefällt habe ich mir gedacht, dass ihr mir Ideen oder wünsche geben könntet was das Tool beinhalten soll.
      Ich möchte anmerken das es ein reines GM Tool sein wird also keine funktionen wie auf datenbank zugreifen oder resourcen auslesen.

      Was ich mir schon selbst gedacht habe und was mir in der Umsetzung gelungen ist, dass ich einen fehler behoben habe den ich beim programieren von v4 war. Es geht darum, dass wenn man ein befehl kopiert aber die textbox leer ist, das es zu einem Crash kommt. Ebenso wenn FlyFF nicht aktiv war. Ich habe bereits gehindert das es zu einem Crash kommt wenn die textbox leer ist aber mir fehlt ein dummes wissen ^^ Wie ich einen prozess geziehlt suche, es wird in dem fall die "Neuz.exe" sein.

      Viel Text einige lahme augen und mehr. hier das wesendliche was gemacht ist, was ich vorhabe und wo ich hilfe nötig habe.

      [COLOR="Lime"]Was hab ich geändert ?[/COLOR]

      [COLOR="Lime"]-[/COLOR] Ich habe die "Window Name" option gelöscht. Es wird immer zum fenster "FLYFF" gesendet.
      [COLOR="Lime"]-[/COLOR] Items und Pet Commands gesplittet da ich mit den Items was vorhabe.
      [COLOR="Lime"]-[/COLOR] Einen bereich für werbung eingepackt wo nur Server kommen, die das zeig haben etwas zu werden.
      [COLOR="Lime"]-[/COLOR] Das Crashen verhindert.

      [COLOR="Lime"]Was habe ich vor ?[/COLOR]

      [COLOR="Lime"]-[/COLOR] zu den Items ist es ein geheimnis was nur ich und ich wissen.
      [COLOR="Lime"]-[/COLOR] Die Pets werden durch Pics gewählt.

      [COLOR="Lime"]Wo brauche ich hilfe ?[/COLOR]

      [COLOR="Lime"]-[/COLOR] Bei der suche nach dem prozess "Neuz.exe" und das diese überwacht wird von einem Timer der dann überprüft ob der prozess am laufen ist.
      [COLOR="Lime"]-[/COLOR] Bei der Einrichtung der INI, da ich damit noch kaum Erfahrungen habe.

      Was soll ich sons noch schreiben ?

      [COLOR="Lime"]Fell 'de Power![/COLOR]
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

    • Ich weiß nicht womit du programmierst. Aber wie's aussieht arbeitest du mit Dateien oder Datenbanken. Verwundert mich ein wenig, dass du keine *.ini-Dateien einlesen kannst. Für ALLES gibt's Libraries. Du wirst sicher eine finden die dir dabei hilft *.ini-Dateien einzulesen.

      In Bezug auf dein Prozess.

      while(true) { Prozessliste durcharbeiten...; Sleep(10); }

      Mehr sollte es eigentlich nicht sein. Solltest du mit C++ arbeiten:

      Quellcode

      1. while (1)
      2. {
      3. DWORD dwProcessList[1024];
      4. DWORD dwNeeded;
      5. DWORD dwProcesses;
      6. if (!EnumProcesses(dwProcessList, sizeof(dwProcessList), &dwNeeded))
      7. {
      8. return 0;
      9. }
      10. dwProcesses = dwNeeded / sizeof(DWORD);
      11. for (unsigned int i = 0; i < dwProcesses; i++)
      12. {
      13. if (dwProcessList[i] != 0)
      14. {
      15. char szProcessName[256];
      16. HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, dwProcessList[i]);
      17. if (hProcess)
      18. {
      19. HMODULE hModule;
      20. DWORD dwTemp;
      21. if (EnumProcessModules(hProcess, &hModule, sizeof(hModule), &dwTemp))
      22. {
      23. GetModuleBaseNameA(hProcess, hModule, szProcessName, sizeof(szProcessName) / sizeof(char));
      24. }
      25. // printf("%s\n", szProcessName);
      26. }
      27. else
      28. {
      29. // printf(" => %d\n", dwProcessList[i]);
      30. }
      31. if (!strcmp("[COLOR="Red"]Neuz.exe[/COLOR]", szProcessName))
      32. {
      33. // printf("'Neuz.exe wurde gefunden.\n");
      34. return 0;
      35. }
      36. CloseHandle(hProcess);
      37. }
      38. }
      39. Sleep(10);
      40. }
      Alles anzeigen


      #include usw. wirst du sicher selbst auf die Reihe bekommen.
    • Ok Ich hab das hier gefunden ^^

      [COLOR="Lime"]Das is der code[/COLOR]

      Quellcode

      1. #
      2. #
      3. Module ini
      4. #
      5. Private Declare Ansi Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" ( _
      6. #
      7. ByVal lpApplicationName As String, _
      8. #
      9. ByVal lpKeyName As String, _
      10. #
      11. ByVal lpString As String, _
      12. #
      13. ByVal lpFileName As String) _
      14. #
      15. As Integer
      16. #
      17. #
      18. Private Declare Ansi Function WritePrivateProfileStringI Lib "kernel32" Alias "WritePrivateProfileStringA" ( _
      19. #
      20. ByVal lpApplicationName As String, _
      21. #
      22. ByVal lpKeyName As String, _
      23. #
      24. ByVal lpString As Integer, _
      25. #
      26. ByVal lpFileName As String) _
      27. #
      28. As Integer
      29. #
      30. #
      31. Private Declare Ansi Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" ( _
      32. #
      33. ByVal lpApplicationName As String, _
      34. #
      35. ByVal lpKeyName As String, _
      36. #
      37. ByVal lpDefault As String, _
      38. #
      39. ByVal lpReturnedString As String, _
      40. #
      41. ByVal nSize As Integer, _
      42. #
      43. ByVal lpFileName As String) _
      44. #
      45. As Integer
      46. #
      47. #
      48. Private Declare Ansi Function GetPrivateProfileStringI Lib "kernel32" Alias "GetPrivateProfileStringA" ( _
      49. #
      50. ByVal lpApplicationName As String, _
      51. #
      52. ByVal lpKeyName As String, _
      53. #
      54. ByVal lpDefault As String, _
      55. #
      56. ByVal lpReturnedString As Integer, _
      57. #
      58. ByVal nSize As Integer, _
      59. #
      60. ByVal lpFileName As String) _
      61. #
      62. As Integer
      63. #
      64. #
      65. ''' <summary>
      66. #
      67. ''' Gets an integer Value from a specified Ini-File
      68. #
      69. ''' </summary>
      70. #
      71. ''' <param name="INIFile">The File to read from. Full path</param>
      72. #
      73. ''' <param name="Section">The Section name</param>
      74. #
      75. ''' <param name="Key">Name of the Key to read</param>
      76. #
      77. ''' <param name="DefaultValue">This value is returned, if Section or Key is not found</param>
      78. #
      79. ''' <param name="BufferSize">Size of the Buffer, 1024 by default</param>
      80. #
      81. ''' <returns>The integer Value stored in the ini file, or the default value</returns>
      82. #
      83. ''' <remarks></remarks>
      84. #
      85. Public Function GetINIInt(ByVal INIFile As String, ByVal Section As String, ByVal Key As String, Optional ByVal DefaultValue As Integer = 0, Optional ByVal BufferSize As Integer = 1024) As String
      86. #
      87. Dim sTemp As String = Space(BufferSize)
      88. #
      89. Dim Length As Integer = GetPrivateProfileString(Section, Key, DefaultValue, sTemp, BufferSize, INIFile)
      90. #
      91. Return Left(sTemp, Length)
      92. #
      93. End Function
      94. #
      95. #
      96. ''' <summary>
      97. #
      98. ''' Gets a String Value from a specified Ini-File
      99. #
      100. ''' </summary>
      101. #
      102. ''' <param name="INIFile">The File to read from. Full path</param>
      103. #
      104. ''' <param name="Section">The Section name</param>
      105. #
      106. ''' <param name="Key">Name of the Key to read</param>
      107. #
      108. ''' <param name="DefaultValue">This value is returned, if Section or Key is not found</param>
      109. #
      110. ''' <param name="BufferSize">Size of the Buffer, 1024 by default</param>
      111. #
      112. ''' <returns>The String Value stored in the ini file, or the default value</returns>
      113. #
      114. ''' <remarks></remarks>
      115. #
      116. Public Function GetINIString(ByVal INIFile As String, ByVal Section As String, ByVal Key As String, Optional ByVal DefaultValue As String = "", Optional ByVal BufferSize As Integer = 1024) As String
      117. #
      118. Dim sTemp As String = Space(BufferSize)
      119. #
      120. Dim Length As Integer = GetPrivateProfileString(Section, Key, DefaultValue, sTemp, BufferSize, INIFile)
      121. #
      122. Return Left(sTemp, Length)
      123. #
      124. End Function
      125. #
      126. #
      127. ''' <summary>
      128. #
      129. ''' Sets an ini Key to specified value
      130. #
      131. ''' </summary>
      132. #
      133. ''' <param name="INIFile">The File to write to. Full path</param>
      134. #
      135. ''' <param name="Section">The Section name</param>
      136. #
      137. ''' <param name="Key">Name of the Key to update</param>
      138. #
      139. ''' <param name="Value">The Value to set</param>
      140. #
      141. ''' <remarks></remarks>
      142. #
      143. Public Sub SetINIString(ByVal INIFile As String, ByVal Section As String, ByVal Key As String, ByVal Value As String)
      144. #
      145. WritePrivateProfileString(Section, Key, Value, INIFile)
      146. #
      147. End Sub
      148. #
      149. #
      150. ''' <summary>
      151. #
      152. ''' Sets an ini Key to specified value
      153. #
      154. ''' </summary>
      155. #
      156. ''' <param name="INIFile">The File to write to. Full path</param>
      157. #
      158. ''' <param name="Section">The Section name</param>
      159. #
      160. ''' <param name="Key">Name of the Key to update</param>
      161. #
      162. ''' <param name="Value">The Value to set</param>
      163. #
      164. ''' <remarks></remarks>
      165. #
      166. Public Sub SetINIInt(ByVal INIFile As String, ByVal Section As String, ByVal Key As String, ByVal Value As Integer)
      167. #
      168. WritePrivateProfileStringI(Section, Key, Value, INIFile)
      169. #
      170. End Sub
      171. #
      172. End Module
      Alles anzeigen


      [COLOR="Lime"]Zum Schreiben[/COLOR]

      Quellcode

      1. #
      2. ini.SetINIString("test.ini", "config", "FirstKey", "aValue")
      3. #
      4. ini.SetINIString("test.ini", "config", "Key2", "test")
      5. #
      6. ini.SetINIInt("test.ini", "config", "Key3", 5)
      7. #
      8. ini.SetINIString("test.ini", "AnotherConfig", "SomeKey", "SomeValue")


      [COLOR="Lime"]Zum einlesen[/COLOR]

      Quellcode

      1. #
      2. Dim myString as String = ini.GetINIString("test.ini","Config","FirstKey","not found")
      3. #
      4. ' myString is now "aValue"
      5. #
      6. Dim myString2 as string = ini.GetINIString("test.ini","Config","AKeyThatIsntValid","not found")
      7. #
      8. ' myString2 is now "not found"



      [COLOR="Lime"]Das resultat[/COLOR]

      Quellcode

      1. [config]
      2. FirstKey=aValue
      3. Key2=test
      4. Key3=5
      5. [AnotherConfig]
      6. SomeKey=SomeValue
    • Geht doch. Siehst du. Es ist doch gar nicht mal so schlecht. :-)

      Jetzt fehlt nur noch der Teil "Prozesse". Jedoch weiß ich nicht wie man das mit .NET löst. Ich arbeite nicht mit .NET. Aber ich denke, dass du das auch schaffen wirst. :-)

      Kurze Recherche hat folgendes ergeben:

      Quellcode

      1. Dim Prozess As System.Diagnostics.Process
      2. For Each Prozess In System.Diagnostics.Process.GetProcesses()
      3. // Prozess.ProcessName
      4. Next


      Ich habe keine Ahnung ob du in .NET Endlosschleifen nutzen kannst. Ich weiß nicht einmal wie eine If-Anweisung aussieht. Vielleicht genauso wie bei C/C++? Keine Ahnung. Auf jeden Fall sollte dir das weiterhelfen.

      EDIT:
      Gegen ein "Thanks" habe ich nichts. :-P
    • Ok da kommt einiges zusammen^^

      Ich denke mal das mit den Icons würde dauern aber hmm^^
      Ich hab es vorhin (nach neucoden) hinbekommen, dass was in v3 so ca 2000 zeilen gemacht haben in v4 nur 225 zeilen übernehmen ^^

      Und wie sollte man das mit den icons machen ? Da ich die Items aus der ItemList.txt lese.
      Es wird eine Funktion noch kommen, die entscheided aus welcher txt die Items geladen werden ^^ also namen auf DE und ENG (sind nicht alle gleich)

      Und die Ladezeit ist auch extrem bei mir zumindest^^ fast 4k Items in nur 0,006 sek geladen. Das steht auch bei jedem start oben in dem Menüstrip.