Oh sorry auf dem Server läuft Linux
Wichtig wäre hier die Distribution.
Oft ist in Containern wie Docker kein sudo verfügbar.
Dann ist die Frage, mach mal whoami und versuch es ohne sudo.
Aber je nachdem auf Fedora/CentOS etc gibt es andere cmds.
Oh sorry auf dem Server läuft Linux
Wichtig wäre hier die Distribution.
Oft ist in Containern wie Docker kein sudo verfügbar.
Dann ist die Frage, mach mal whoami und versuch es ohne sudo.
Aber je nachdem auf Fedora/CentOS etc gibt es andere cmds.
Was für ein Betriebssystem hast du denn?
Wieso machst es dir so kompliziert und magst das manuell machen, lass doch einfach den Paketmanager das updaten, einfach mit:
sudo apt update && sudo apt upgrade sqlite3
Das kann man auch ohne Texturenmode hinbekommen, indem man einfach Grafikmods holt
Und was machen Grafikmods? Verändern die Textur
Meinte das natürlich in die Richtung, weil das GTA extremst danach aussieht.
Hast du diesen Screenshot gemacht?
Es kann sein, dass die Textur (bzw das Objekt) einfach gemoddet ist und du sie deshalb nicht findest 😅
Nein
Wie der Glow ist hängt tatsächlich stark von dem Wetter ab
Kannst ja mal rumspielen.
Wo hänge ich ? :x
Also da hast du deine Tabelle nicht schön normalisiert. Sonst würde man das über eine extra Tabelle lösen.
Aber in dem Fall, kannst du auch einfach bevor du die Query abfeuerst das kurz prüfen, da du eh eine Query abfeuerst, um vom Namen des Spielers auf die ID zu kommen, kannst direkt ja haus1,haus2,haus3 noch mitholen.
Und dann eben:
Hey, wenn du magst, kann ich dir erklären, was da passiert.
Auf den Ersten Blick dachte ich, das wäre eine Obfuscation Taktik, das wird bei JS öfters angewendet, um den Quellcode zu verschleiern. Ist es in diesem Fall aber nicht.
Das sind einfach nur Spaßfunktionen und ganz harmlos.
Die Trap-Funktion ersetzt einfach Buchstaben mit einem zufälligen Unicode Zeichen, was aussieht wie der Buchstabe.
Also z.B. a: ['@', 'Ą', 'Ⱥ', 'Ʌ', 'Δ', 'Λ', 'Д'], das steht da eigentlich. Gibst du jetzt einen Text wie: "Anton" ein, erhältst du: "ȺŋŁõŋ" oder "ĄΠŦ๏ŋ".
Wird halt immer ein zufälliges Zeichen aus dem Array für den jeweiligen Buchstaben gepickt.
Und bei Zalgo, wird einfach ein String generiert, der ähnlich wie die Matrix ist, bzw den Text unleserlich macht und gruselig ist. Entstanden ist das hier durch: https://creepypastavillains.fandom.com/wiki/Zalgo
"Zalgo verfälscht normalerweise Three-Strip-Comics, indem er die Charaktere, die Schriftarten und die Handlung selbst zu einer unsinnigen und doch schrecklichen Travestie des Originalmaterials verdreht"
Und genau das macht die Funktion, generiert halt eine komische Zeichenfolge, die gruselig aussieht.
Also sind beides ganz harmlose Spielerein. Kein Backdoor o.ä.
Nostalgie pur
Bei beiden Pfaden setzt du die Geschwindigkeit.
Das brauchst nur bei Einem von Beidenn
Wie speichert denn regulär das Skript die Daten der Spieler?
In einer Text Datei oder in einer Datenbank?
Wenn es die Datenbank ist, dann gerne mal hier die MySQL Logs reinposten
Preislich sollte er so 30€ - 50€ kosten
pro Monat oder Jahr? 😅
Was genau hindert dich omp zu nutzen? 😅
Ist das nicht ein JSON Datei?
Ja, die Rückgabe ist im JSON Format.
Was du wiederum in ein Objekt konvertieren kannst.
Man macht das genau so, wie ich es gezeigt hatte.
<table id="dataTable">
<thead>
<tr>
<th>score</th>
<th>date</th>
<th>away</th>
<th>home</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
Alles anzeigen
//Hier holen wir uns alle Daten :)
fetch("https://api.collectapi.com/football/results?data.league=super-lig", {
method: "GET",
headers: {
"content-type": "application/json",
"authorization": "apikey your_token"
}
})
.then(response => response.text())
.then(responseText => fillTable(responseText))
.catch(error => console.error('Error:', error));
////
function fillTable(jsonData)
{
const data = JSON.parse(jsonData); //Jetzt haben wir ein JS-Objekt
const tableBody = document.querySelector('#dataTable tbody'); //Wir holen uns im DOM die Tabelle
//Hier gehen wir alle Daten durch und fügen sie einzeln der Tabelle hinzu
data.result.forEach(match => {
const row = document.createElement("tr");
//Jetzt fügen wir die einzelnen Elemente aus dem JSON dem tr-Objekt für die Tabelle hinzu
const scoreCell = document.createElement("td");
scoreCell.textContent = match.score;
row.appendChild(scoreCell);
const dateCell = document.createElement("td");
dateCell.textContent = match.date;
row.appendChild(dateCell);
const awayCell = document.createElement("td");
awayCell.textContent = match.away;
row.appendChild(awayCell);
const homeCell = document.createElement("td");
homeCell.textContent = match.home;
row.appendChild(homeCell);
// Und nun fügen wir alles der Tabelle hinzu
tableBody.appendChild(row);
});
}
Alles anzeigen
Mir geht es darum, wie ich aus der JS Datei, das ganze in HTML und/oder PHP Datei umwandele
Verstehe deine Frage immer noch nicht.
<table id="dataTable">
<thead>
<tr>
<th>Name</th>
<th>Email</th>
<th>Tel</th>
</tr>
</thead>
<tbody>
<tr><td>Test</td><td>test@test.de</td><td>1234</td></tr>
</tbody>
</table>
Alles anzeigen
So sieht ja z.B. eine Tabelle in HTML aus.
Hast du jetzt z.B. Daten kannst du diese via JS einfach hinzufügen:
const data = [
["A", "bla@bla.de", "123"],
["B", "bla@bla.de", "456"],
["C", "bla@bla.de", "789"]
];
const tableBody = document.querySelector('#dataTable tbody'); //Wir holen uns im DOM die Tabelle
// Wir laufen durch alle Daten im Array
data.forEach(row => { //row wäre im 1. Durchlauf: ["A","bla","123"]
const tr = document.createElement('tr'); //tr Element wird erstellt
row.forEach(cell => { //cell wäre "A", dann im nächsten Durchlauf "bla", dann "123"
const td = document.createElement('td'); //td Element wird erstellt
td.textContent = cell;
tr.appendChild(td); //Wir fügen es dem tr-Element hinzu
});
tableBody.appendChild(tr); //Daten werden einfach an die Tabelle gehangen
});
Alles anzeigen
Gibt es die Möglichkeit dies in HTML/PHP anzeigen zu lassen
Hä?
Struktur Elemente, wie eine Tabelle werden mit HTML erstellt und mit CSS designt.
Was ist konkret deine Frage? Wie du sie füllen kannst mit PHP oder mit Javascript?
PHP ist ja auf der Server-Seite. Zum Beispiel, wenn du die Einträge in einer Datenbank hast, kannst du diese über PHP auslesen und direkt das entsprechende HTML-Konstrukt generieren und an den Client zurückgeben.
Oder du machst es asynchron und lädst zuerst die Seite leer und dann lädst du per Ajax (und somit Javascript) die Daten und füllst diese in die Tabelle.
Hier hast du eine Liste von allen modelids: https://sampwiki.blast.hk/wiki/Vehicles:All
Hier z.B. nur von Bikes: https://sampwiki.blast.hk/wiki/Vehicles:Bikes
new vehID = GetPlayerVehicleID(playerid);
new model = GetVehicleModel(vehID);
//Und dann brauchst z.B. Funktionen wie:
stock bool:IsBike(model)
{
switch(model)
{
case 448, 461, 462, 463: return true; // etc
}
return false;
}
Alles anzeigen
Kannst OnPlayerStateChange nutzen
Gibt auch schon Includes, die das auflisten: https://sampforum.blast.hk/showthread.php?tid=243814 (GetVehicleType)
Sollen ihm nur die angezeigt werden von Spielern, die gerade online sind?
Nochmal zu dieser Frage, soll das so sein?
Denn dein aktuelles System funktioniert nur so.
ich hab mir das so gedacht das wenn Spieler 1 einen Report schreibt das eine 1.txt erstellt wird und das selbe bei Spieler 2 und 3 diese werden dann ingame angezeigt. Wenn Spieler 2 z.B. einen zweiten Report schreibt soll der erste von ihm „überschrieben“ werden.
Dann wäre es logischer, die Datei nach dem Spieler zu benennen, so weißt du direkt, von wem sie ist, und ob bereits ein Report von dem Spieler existiert.
Das Dumme ist nur, dass nativ in SAMP keine Schleife durch das Dateisystem möglich ist. Dafür bräuchtest du ein Plugin, wie https://github.com/JaTochNietDan/SA-MP-FileManager
Aber grundsätzlich ist eher davon abzuraten, da das sehr ineffizient ist.
ocmd:showreport(playerid,params[])
{
if(PlayerInfo[playerid][pEingeloggt] < 1 ) return SendClientMessage(playerid,Rot,"Du kannst diesen Befehl nicht nutzen, weil du nicht eingeloggt bist.");
if(PlayerInfo[playerid][pAdminlevel] < 1)return SendClientMessage(playerid,Grau,"Du bist nicht befugt, diesen Befehl zu nutzen!");
const MAX_REPORTS = 15;
new string[MAX_REPORTS * MAX_PLAYER_NAME], dir:dHandle = dir_open("./"), item[40], type, i;
while(dir_list(dHandle, item, type))
{
if(type != FM_FILE) continue;
strcat(string, item), strcat(string, "\n");
if(++i >= MAX_REPORTS) break;
}
dir_close(dHandle);
ShowPlayerDialog(playerid,DIALOG_SHOWREPORT,DIALOG_STYLE_LIST,"Reportsystem",string,"Schließen","");
return 1;
}
Alles anzeigen
Das zeigt dir z.B. die ersten 15 reports. Ein Seitensystem ist hier auch bissl kniffliger. Am Besten wäre es wohl das in eine Funktion auszulagern und n Start Parameter festzulegen.
Wenn jetzt eine Datei ausgewählt wird, dann steht im "inputtext" der Dateiname. Dann kannst du einfach mit fread diese auslesen und anzeigen