Ich finde es gut, wie du dir im Text die Titelfrage schon selbst beantwortest ![]()
Wenn die Frage ist, ob es besser geht: Es geht immer besser. ![]()
Ich finde es gut, wie du dir im Text die Titelfrage schon selbst beantwortest ![]()
Wenn die Frage ist, ob es besser geht: Es geht immer besser. ![]()
Wie kann ich denn nun allerdings die Farben erstellen mit Transparenz ?
Der Farbwert ist so aufgebaut: 0xAABBCCDD
AA = Rot Anteil
BB = Grün Anteil
CC = Blau Anteil
DD = Alpha, sprich Transparenz
0xAABBCC00 = unsichtbar, 0xAABBCCFF = maximal sichtbar, Farbe ist nicht durchlässig
Du musst quasi nur hinten die beiden Zahlen zwischen 00-FF etwas setzen, um die Transparenz zu ändern ![]()
Zusätzlich sollte das UPDATE Query vom Gamemode geprüft werden. Vermutlich wird nur ein INSERT gemacht, aber das Update Query schlägt fehl, deshalb werden keine Werte dort eingetragen ![]()
Ich würde dir empfehlen den Code etwas zu refactoren.
Dadurch wird er weniger Fehleranfällig, da alles separiert und getrennt von der eigentlichen Logik ist.
Hier mal als kleine Inspiration:
#include <tutorial> //Unterhalb new PlayerInfo iwo setzen ;)
public OnPlayerSpawn(playerid)
{
if(!PlayerInfo[playerid][pTutorial]) return StartPlayerTutorial(playerid);//pTutorial sollte ein Bool sein
SetCameraBehindPlayer(playerid); //Kannst du generell immer hier reinpacken, wenn du das magst :D
return 1; //Immer 1 zurückgeben, sonst werden Filterscripts ignoriert (brauchst hier kein SetPlayerSpawn, nutz einfach hier die Funktion)
}
// In tutorial.inc
static stock const CAMERA_TIME = 10_000; //in ms (_ kann als Trenner gesetzt wird, wird vom Compiler ignoriert)
stock StartPlayerTutorial(playerid)
{
SetTimerEx(!"Player_Tutorial", CAMERA_TIME, false, !"ii", playerid, 1);
SendClientMessage(playerid, COLOR_ORANGE, !"Das Tutorial startet in 10 Sekunden."); //Das ! vor Strings packt diese, macht diese kleiner und schneller. (nicht bei format anwenden)
return 1;
}
stock EndPlayerTutorial(playerid)
{
PlayerInfo[playerid][pNeuling] = 1;
PlayerInfo[playerid][pTutorial] = 1;
Player_Save(playerid);
SendClientMessage(playerid, COLOR_GREEN, !"Du hast das Tutorial erfolgreich abgeschlossen.");
TogglePlayerSpectating(playerid,0); //Spawnt den Spieler automatisch
return 1;
}
static forward Player_Tutorial(playerid, step);
public Player_Tutorial(playerid, step)
{
switch(step)
{
case 1:
{
InterpolateCameraPos(playerid, -2264.149169, -79.553237, 54.108608, -2258.836914, -133.797988, 38.133533, CAMERA_TIME);
InterpolateCameraLookAt(playerid, -2269.145263, -79.574234, 53.913345, -2263.404052, -131.805282, 37.719944, CAMERA_TIME);
SendClientMessage(playerid, COLOR_YELLOW, !"Der Neulingsspawn");
}
case 2:
{
InterpolateCameraPos(playerid, -2559.761230, 657.360534, 54.506183, -2606.139892, 570.644104, 27.216636, CAMERA_TIME);
InterpolateCameraLookAt(playerid, -2564.715087, 657.393859, 55.183780, -2609.537841, 574.257385, 26.585512, CAMERA_TIME);
SendClientMessage(playerid, COLOR_YELLOW, !"Das Krankenhaus");
}
case 3:
{
InterpolateCameraPos(playerid, -2731.381347, 52.292167, 44.589134, -2696.582275, -60.425365, 6.027071, CAMERA_TIME);
InterpolateCameraLookAt(playerid, -2727.718750, 49.573192, 42.541774, -2693.474609, -56.652973, 7.081593, CAMERA_TIME);
SendClientMessage(playerid, COLOR_YELLOW, !"Das Rathaus");
}
case 4: return EndPlayerTutorial(playerid);
}
SetTimerEx(!"Player_Tutorial", CAMERA_TIME, false, !"ii", playerid, step+1);
return 1;
}
Alles anzeigen
Dann lenkt das nicht so im eigentlichen Gamemode ab ![]()
Eventuell hat Kaliber sonst sobald er Zeit hat noch eine Idee ?
Wie ich gerade sehe, speicherst du Farben als varchar ab.
Das ist natürlich Quatsch, da Hexadezimale Zahlen, ja auch nur Zahlen sind und somit einfach nur Integer.
Ob du 0xF, 0b1111 oder 15 schreibst, ist komplett äquivalent.
Wie ist denn frak_color im enum definiert?
strval struggelt mit Hexzahlen, deshalb geht das so nicht.
Ich empfehle dir, änder den Typ in der MySQL Tabelle auf Integer und nutze natürlich cache_get_value_name_int.
Und im enum lass es eine Zahl sein.
Dann nimm meine erste Funktion und es sollte gehen ![]()
Dann hast beim Laden der Farben einen Fehler...
Wie sieht die db aus?
Wie sieht das Laden aus?
...
Der zurückgegebene Wert ist in diesem Fall 0
Dann stimmt einfach etwas mit deiner Logik nicht.
Was ist denn GfInfo[i][old_fraktion]?
Und du bekommst da keine Fehlermeldung? Du gibst einen String zurück, wo ein Integer erwartet wird...
Wie wäre es denn mit:
GetFrakColor(id)
{
for(new i; i < sizeof(FrakInfo); i++)
{
if(id == FrakInfo[i][frak_id])
{
return FrakInfo[i][frak_color];
}
}
return 0xFFFFFFFF;
}
Alles anzeigen
Interessant wäre auch, welchen Wert frak_colors hat. Evtl fehlen da Alpha Werte, diese könntest du hier auch einfach hinzufügen.
Es ist zum Fehler finden sehr hilfreich, öfter ein System.out.println einzubauen, so kannst du genau nachvollziehen, was an den gewissen geschieht und ob diese überhaupt aufgerufen werden ![]()
while(c.next()) { if(c.wasAdded()) { Lernkarte[] ak = lk.gibAlleKarten(); for(int i = 0; i < ak.length; i++) { liste.add(ak[i].toString()); } } }
Das sieht mir etwas komisch aus.
Müsste es nicht sowas irgendwie sein? 😅
Habe mit JavaFX noch nie etwas gemacht, aber die Logik wäre ja, dass es nur hinzugefügt wird, wenn es noch nicht hinzugefügt wurde. Keine Ahnung, wieso du alles noch einmal hinzufügst :o
Läuft der MySQL-Server auf dem selben Server wie der SA:MP Server?
Dann solltest du 127.0.0.1 einfach verwenden ![]()
-bash: ./samp03svr: No such file or directory
Daaa stimmt vermutlich die Berechtigung nicht. Musst evtl chmod mal nutzen ![]()
Das ist zwar der server_log und nicht der mysql.log, aber abgesehen davon läuft denn mysql überhaupt? ![]()
aber ein Problem ist noch der Server bekommt keine Verbindung zur Datenbank hergestellt.
Dann bräuchten wir einmal den mysql.log ![]()
Der wird entweder beim server_log erstellt, oder im log Verzeichnis.
Wie gesagt, bist du sicher, dass du die richtige Pawno.exe aus genau diesem Verzeichnis öffnest?
Also mal keinen Doppelklick auf das Skript, sondern zuerst die Pawno.exe öffnen und dann darüber die pwn öffnen ![]()
Im Ordner Pawno/Include/ müssen entsprechende Include Dateien liegen.
In diesem Fall streamer.inc
Vermutlich hast du vergessen diese richtig einzufügen.
Oder du öffnest die falsche Pawno.exe ![]()
Ah, sry, da kam was durcheinander, so sollte das sein:
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(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;
}
Alles anzeigen
Das kannst du entfernen, war nur ein Test.
Ist nur die Konsolen Output Kodierung nicht wichtig.
Hier, mal eben zusammengeschrieben, hoffe es hilft dir ![]()
using 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;
}
}
Alles anzeigen
Am Besten immer den ganzen mysql.log kurz hier posten. ![]()
Ja.
MfG
Achso, du willst auch noch wissen, wie das funktioniert und warst zu faul zum googlen ![]()
CREATE TABLE IF NOT EXISTS
Jedem Kek den es in unserer Kapitalistischen Gesellschaft an Geld fehlt ist selbst schuld daran
Wer sowas glaubt, glaubt auch an den Weihnachtsmann, also wirklich. Musst aufpassen mit dem neoliberalen Quatsch. Noch paar so Aussagen und du bekommst n Ehrenplatz in der FDP.
Psychische Probleme, Altersschwäche, Krankheiten und Abhängigkeiten gibt es zum Glück nicht, das alles nur Einbildung. Die sollen sich mal nicht so anstellen.
Also wirklich, kannste keinem Erzählen.
Generell ist dieser Thread leider mal wieder eine große Lachnummer...