Beiträge von BreadScript
-
-
Es handelt sich hierbei um HEX und nicht um RGB ? Verstehen wir uns da falsch ?
-
Dein Code hat einen Fehler, weil die Funktion "GetFrakColor" eine Zeichenkette zurückgibt, die den Namen der Fraktion enthält, anstatt den Farbcode im richtigen Format "#RRGGBB". Um das Problem zu beheben, kannst du die Funktion so ändern, dass sie den Farbcode im richtigen Format zurückgibt.
Probiere lieber mal das:
Die Funktion gibt mir im Falle eines SendClientMessage bspw den richtigen Wert, allerdings kann ich dann die Funktion nicht für GangZoneShowForPlayer verwenden.
-
Das Laden der Fraktion schaut wie folgt aus
Code
Alles anzeigenpublic OnFraktionLoad() { new count; cache_get_row_count(count); for(new i; i<count; i++) { new id=getFreeFraktionID(); cache_get_value_name_float(i, "f_x", FrakInfo[id][frak_x]); cache_get_value_name_float(i, "f_y", FrakInfo[id][frak_y]); cache_get_value_name_float(i, "f_z", FrakInfo[id][frak_z]); cache_get_value_name_float(i, "if_x", FrakInfo[id][ifrak_x]); cache_get_value_name_float(i, "if_y", FrakInfo[id][ifrak_y]); cache_get_value_name_float(i, "if_z", FrakInfo[id][ifrak_z]); cache_get_value_name_float(i, "spawnx", FrakInfo[id][spawn_x]); cache_get_value_name_float(i, "spawny", FrakInfo[id][spawn_y]); cache_get_value_name_float(i, "spawnz", FrakInfo[id][spawn_z]); cache_get_value_name_int(i, "if_int", FrakInfo[id][frak_interior]); cache_get_value_name_int(i, "id", FrakInfo[id][frak_id]); cache_get_value_name_int(i, "kasse", FrakInfo[id][frakKasse]); cache_get_value_name_int(i, "door", FrakInfo[id][DoorOpen]); cache_get_value_name_int(i, "gang", FrakInfo[id][gang]); cache_get_value_name(i, "fraktion", FrakInfo[id][frak_name], 64); cache_get_value_name(i, "color", FrakInfo[id][frak_color], 64); printf("ID: %i , Color: %s | %s", id, FrakInfo[id][frak_color], FrakInfo[id][frak_name]); updateFraktion(id); } return 1; }
Der Print wird so ausgegeben wie gewünscht.
Datenbank schaut wie folgt aus
-
Dann stimmt einfach etwas mit deiner Logik nicht.
Was ist denn GfInfo[i][old_fraktion]?
Sie gibt die eindeutige Fraktionsid aus
-
Der zurückgegebene Wert ist in diesem Fall 0 was er allerdings nicht sein sollte sondern 0x00800080.
In der Variable ist tatsächlich der richtige Wert hinterlegt, er wird nur falsch abgefragt bzw. ausgegeben
-
Hallo,
ich würde mir gerne eine Gangzone anzeigen lassen bzw mehrere. Folgenden Code habe ich bisher dafür
Code
Alles anzeigenGangZoneShowForPlayer(playerid, gangzone[i], GetFrakColor(GfInfo[i][old_fraktion])); GetFrakColor(id) { new frak[64]; for(new i; i < sizeof(FrakInfo); i++) { if(id == FrakInfo[i][frak_id]) { strcat(frak,FrakInfo[i][frak_color]); return frak; } } strcat(frak,"Unbekannt"); return frak; }
In diesem Falle funktioniert der
wegen der letzten Variable nicht. Hat einer eine Idee wie ich dass ganze gestalten kann ? Mir fällt aktuell kein Weg ein
-
Ah, sry, da kam was durcheinander, so sollte das sein:
C#
Alles anzeigenprivate static String PrepareMessage(String xMessage) { var stringBuilder = new StringBuilder(xMessage.Normalize(NormalizationForm.FormD)); foreach (var keyValuePair in SPECIAL_DIACRITICS) { stringBuilder.Replace(keyValuePair.Key, keyValuePair.Value); } stringBuilder.Append(Convert.ToChar(0x0D)); stringBuilder.Append(Convert.ToChar(CalculateChecksum(stringBuilder.ToString()))); return stringBuilder.ToString(); } private static byte CalculateChecksum(String xMessage) { byte checksum = 0x7F; byte[] bytes = Encoding.ASCII.GetBytes(xMessage); foreach (byte b in bytes) { checksum ^= b; } return checksum; }
Vielen Dank nochmal für deine Hilfe. Scheint allerdings noch ein Problem vorhanden zu sein. Habe mal ein Screen der Seriellen Konsole gepostet in dem der Wert geschrieben wurde. Allerdings ist am Ende jetzt nach dieser 1 ein Punkt den er mit in die Data sendet. Eine Idee warum ?
-
Scheint irgendwo noch ein kleiner Fehler im Code enthalten zu sein. Mir wird ein Rückgabewert mit einer Zahl von Checksum am Wort Ende übergeben. Dies ist überhaupt nicht so gewollt.
Ich habe mal als Beispiel das Wort " Käsesoßenrührlöffel" verwendet.
Als Rückgabewert erhalte ich " K{seso~enr}hrl|ffel58." Alles ab der Zahl ist eigentlich ungültig. Alles davor ist Richtig
Folgende Data / Bytes sollte es enthalten
Enthalten tut es allerdings
Hat da noch jemand ein Tipp für mich ?
-
Hier, mal eben zusammengeschrieben, hoffe es hilft dir
C#
Alles anzeigenusing System; using System.Text; using System.Collections.Generic; public class HelloWorld { private static IReadOnlyDictionary<string, string> SPECIAL_DIACRITICS = new Dictionary<string, string> { { "ä".Normalize(NormalizationForm.FormD), "{".Normalize(NormalizationForm.FormD) }, { "Ä".Normalize(NormalizationForm.FormD), "[".Normalize(NormalizationForm.FormD) }, { "ö".Normalize(NormalizationForm.FormD), "|".Normalize(NormalizationForm.FormD) }, { "Ö".Normalize(NormalizationForm.FormD), "\\".Normalize(NormalizationForm.FormD) }, { "ü".Normalize(NormalizationForm.FormD), "}".Normalize(NormalizationForm.FormD) }, { "Ü".Normalize(NormalizationForm.FormD), "]".Normalize(NormalizationForm.FormD) }, { "ß".Normalize(NormalizationForm.FormD), "~".Normalize(NormalizationForm.FormD) }, }; public static void Main(string[] args) { String newAnzeige = "zA1Tägel"; Console.OutputEncoding = Encoding.UTF8; Console.WriteLine(PrepareMessage(newAnzeige)); } private static String PrepareMessage(String xMessage) { var stringBuilder = new StringBuilder(xMessage.Normalize(NormalizationForm.FormD)); foreach (var keyValuePair in SPECIAL_DIACRITICS) { stringBuilder.Replace(keyValuePair.Key, keyValuePair.Value); } stringBuilder.Append(CalculateChecksum(xMessage)); return stringBuilder.ToString(); } private static byte CalculateChecksum(String xMessage) { xMessage += 0x0D; byte checksum = 0x7F; byte[] bytes = Encoding.ASCII.GetBytes(xMessage); foreach (byte b in bytes) { checksum ^= b; } return checksum; } }
Das sieht schonmal Klasse aus, danke dir dafür. Aktuell zeigt er mir allerdings noch folgendes Problem an,
System.IO.IOException
HResult=0x80070006
Nachricht = Das Handle ist ungültig.
Quelle = mscorlib
Stapelüberwachung:
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.__Error.WinIOError()
at System.Console.set_OutputEncoding(Encoding value)
at Ibis.net_2.Form1.pictureBox1_Click(Object sender, EventArgs e) in C:\Users\user\source\repos\Ibis .net 2\Ibis .net 2\Form1.cs:line 1247
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at Ibis.net_2.Program.Main() in C:\Users\user\source\repos\Ibis .net 2\Ibis .net 2\Program.cs:line 19
handelt sich um einen Fehler bei
-
Hallo,
ich bin aktuell dabei eine Schnittstelle für eine C# Anwendung zu schreiben und habe hierbei noch ein Problem.
Folgende Erklärung habe ich zu meinem vorhaben bereits einmal erhalten gehabt.
String zusammen mit dem Byte 0x0d müssen Sie dann Byte für Byte durchgehen mit einem Loop.
Dazu brauchen Sie noch eine uint8_t Variable für die Checksumme, die SIe mit dem Wert 0x7F initialisieren.
Dann, in dem Loop, nehmen Sie nacheinander jedes Byte aus dem String und wenden den XOR-Operator darauf an, also checksum ^= string[i] zum Beispiel. Vermutlich müssen SIe den String vorher in Bytes umwandeln.
Am Ende hat die checksum-Variable dann irgendeinen Wert nach den ganzen XOR-Operationen, den hängen Sie ganz ans Ende noch mit dran und schicken das ganze raus.
Kann einer genau verstehen was in allen Punkten gemeint ist ?
Mein aktueller Code:
Code
Alles anzeigenprivate static readonly char[] StringUmlaute = new char[7] { 'Ä', 'Ö', 'Ü', 'ä', 'ö', 'ü', 'ß' }; private static readonly char[] IbisUmlaute = new char[7] { '[', '\\', ']', '{', '|', '}', '~' }; public void SetAnzeige() { string newAnzeige = "zA1Tegel"; for (int i = 0; i < newAnzeige.Length; i++) { for(int i2 = 0; i2 < 7; i2++) { if (newAnzeige[i].ToString() == "" + StringUmlaute[i2].ToString()) { newAnzeige = newAnzeige.Replace("" + StringUmlaute[i2].ToString(), "" + IbisUmlaute[i2].ToString()); } } } MessageBox.Show(newAnzeige); }
-
Nimm NAudio, mach dir ne kleine forms app oder console app und schreib dir ein loop back.
Oder willst du die Änderung an der Einstellung schlicht per "script" gesteuert haben?
Soll mit dem Script im Hintergrund gesteuert werden sobald eine bestimmte Taste gedrückt wird.
-
Hallo,
gerne möchte ich das mein Mikrofon nach einer Eingabe in C# direkt an meine Lautsprecher wiedergeben wird, siehe bspw hier: https://www.hna.de/netzwelt/mu…er-leiten-zr-5208074.html
Hat einer eine Idee wie ich dass ganze direkt in C# realisieren könnte ohne jedes mal Änderungen in den Soundeinstellungen vornehmen zu müssen ?
Über jede Hilfe bin ich euch dankbar,
-
irgendwie kann ich keine befehle ausführen genauso wie wenn ich reconnecte er nicht die datenbank richtig lesen kann
Kriegst du Fehler in der Konsole angezeigt?
-
hey, ich hab einige probleme beim aufsetzen eines servers und wollte frage ob mir jemand helfen kann ?
geht eigentlich hauptsächlich um kleine fragen
Was hast du denn genau für Probleme?
-
Die Frage war gewesen ob man eben auch auslesen kann was in welcher Zeile steht und nicht ob es überhaupt im gesamten Text vorhanden ist
-
Alternative zu Memory Hacking wäre mittels OCR (AI), also einem Python Skript oder einer API einfach einen Teil des Bildschirms auszulesen, indem sich der Chat befindet und dann den String interpretieren, bzw durchsuchen xD
Anstatt den Chat auszulesen, wäre auch einfach eine Möglichkeit eine spezielle Taste zu drücken (geht mit einem C# Hook easy oder auch AHK) (wenn man Drogen gedealt hat, und dann wird im Hintergrund einfach n Timer gestartet, der dann am Ende eine mp3 abspielt, oder der Timer wird auch die ganze Zeit angezeigt).
Dann hat man ein Fenster in Python, Java, JS, C++ oder C# (da ich kein AHK mag xD) was über https://github.com/jparnell883…sOnTop/releases/tag/0.6.1 gestartet wurde.
Das ist dann quasi das "Overlay" man kann den Background vom Fenster einfach mit RGBA leicht transparent machen.
(Wobei dafür glaube ich das Game mit ALT + Enter, nicht im Fullscreen Modus laufen darf)
OOOOODER man nutzt einen 2. Monitor #Trick17
Lassen sich auch Chatzeilen in diesem Sinne auslesen oder nur das vorhanden sein eines bestimmten Textes ?
-
https://github.com/agrippa1994/DX9-Overlay-API
Sowas müsste dir jemand für DirectX 11/12 schreiben. Eigentlich wird bei fast jedem Overlay etwas in das Game injected. Könnte von R* also detected werden. Dementsprechend würde ich das nur bei MP mods wie alt:v verwenden.
Für C# sollte es leichter sein etwas zu finden, ist aber wesentlich komplizierter als AHK. Also da mal nach DirectX overlay googeln. Die meisten Ergebnisse kann ich nicht posten, weil das auf Cheating Seiten verweist
Aber wie liest man schlussendlich den Chat aus? Aufgrund der Chatdaten soll es ja ein Ergebnis geben welches das Programm verarbeiten soll.
-
Dafür braucht man einen Chatlog Saver, ich bin ebenfalls auf der Suche nach so etwas bin aber auch nicht fündig geworden außer man hat Zugriff auf den Server und kann hierzu zusätzlich noch was implementieren.
-
Ich persönlich für mich würde Debian nehmen. Wenn du lernen willst nimmst du Ubuntu und lernst erstmal ohne Gameserver und mietest dir eher einen Gameserver bei einem Hoster.
Solltest du ausreichend Erfahrungen haben ist über ein Wechsel auf Debian nachzudenken.
Da du scheinbar keine Erfahrung hast, am besten erst lernen wie man soetwas verwalten tut. Dazu gehört nicht nur aufsetzen, apt-get Update/Upgrade und fertig, noch um vieles mehr solltest du dich da bemühen.