Es gibt PCs unter 100€ *hust* Raspberry Pie */hust*, alles eine Frage der Leistung ![]()
Beiträge von Tion
-
-
Einfach darüber new tmp[128];
-
@BlackAce: Du hast aber auch ständig Pausen

... zumal die Admins wohl kaum Lust haben, täglich Reports zu bearbeiten - und wohl auch dieses RealLife-Ding haben

-
Naja, wenn jeder am Tag 1 Beitrag meldet, und am Tag 200 on sind, haben die Admins sicher nicht die Möglichkeit, schnell zu reagieren... Außer @BlackAce

-
Bei V2 je Höher der Wert desto Besser oder Schlechter?
Der Wert gibt an, wie schnell dein Rechner das gerechnet hat - also je niedriger, desto besser

Ein Linux-Computer ist übrigens schneller als ein Windows-Computer, wenn sie die gleiche Hardware haben & nicht überfüllt sind

-
Wenn einem da mehr geholfen wird bzw man schneller eine Antwort bekommt, wieso sollte man dass dann nicht in Anspruch nehmen?
... warum soll ich auf Toilette gehen, wenn ich genau so gut an jede Ecke pinkeln kann ? Geht doch schneller ?
... vielleicht weil das der falsche Bereich ist ? Auch in meinem Beispiel ?
-
Vielleicht auch die Distanz zum Punkt betrachten, um mehr/weniger Damage zu geben ? Float damage = 100.0 - ((bombex - playerx)^2.0 + (bombey - playery)^2.0)^0.5; Wenn die Bombe auf einem platzt, verliert man 100 leben, je weiter weg man ist, desto mehr

e: Code correction
-
... was ?

Atome, die Leben verlieren ?
-
Alles anzeigen
Was dauert daran länger?
new v = 0,string[12];for(new i=0; i<sizeof(Polizeiauto); i++)
{
v++;
format(string,sizeof(string),"PD %d",v) ;
SetVehicleNumberPlate(Polizeiauto[i],string);
}Was dauert daran jetzt länger?
Woher willst du wissen worauf andere lust haben?
Was ist daran schwer?Warum nutzt du noch extra "v" zum Zählen, wo i doch sowieso gezählt wird ? :O
new string[12];for(new i=0; i<sizeof(Polizeiauto); i++)
{
format(string,sizeof(string),"PD %d",(i + 1)) ;
SetVehicleNumberPlate(Polizeiauto[i],string);
}
Frisst doch nur mehr Resourcen - wenn auch nur kurz, aber trotzdem
-
Bei OnPlayerSpawn: RemoveBuildingForPlayer(playerid, MODELLID, X DES MODELLES, Y DES MODELLES, Z DES MODELLES, RADIUS);Dann entfernt er die Modelle mit der ID MIDELLID in einem Radius von RADIUS um den Punkt X/Y/Z
-
Ich finde es auch ok

Ich mag diese shwarzen dicken eckigen Dinger nicht so, aber das ist ok
-
Ein paar mal nachgefragt, ein paar Ankündigungen & ich bin erster

Vorab: Das hier sind nur die Basics - um Sachen wie Shops etc. müsst ihr euch selber kümmern

Ich werde hier auch nur die Funktionen vorstellen, also werde ihr hier nichts OOP sehen - nicht mal selbstgeschriebene Funktionen
Fangen wir direkt an, indem wir eine Session initialisieren.
Wichtig: Die Session muss initialisiert werden, bevor das erste Zeichen ausgegeben wird - das liegt damit zusammen, dass die Session ein Cookie erstellt, was der Webserver im Header sendet - also muss es vor der ersten Ausgabe kommen
Den Anfang legt das HTML-Grundgerüst ( HTML5 ), was wir sicher alle kennen
PHP<?php session_start(); ?><html lang="de"> <head> <meta charset="utf-8" /> <title>Mein UCP</title> </head> <body> [ Webseiteninhalt hier rein ] </body></html>
Fangen wir mit unserer ersten Abfrage ab, ob der Benutzer eingeloggt ist:PHP<?php if(isset($_SESSION['logedin']) && $_SESSION['logedin'] == true) { // Hier ist der Benutzer eingeloggt } else { // Hier nicht }?>
Wenn er nicht eingeloggt ist, unterscheiden wir noch mal, ob er das Formular abgesendet hat, oder nicht:PHP<?php if(isset($_SESSION['logedin']) && $_SESSION['logedin'] == true) { // Hier ist der Benutzer eingeloggt } else { // Der Benutzer ist nicht eingeloggt if(isset($_POST['username']) && isset($_POST['password'])) { // Das Formular ist abgesendet worden -> verarbeiten } else { // Das Formular ist nicht abgesendet echo <<<FORMULAR <form action="index.php" method="post"> Benutzername:<br /> <input type="text" name="username" /><br /> Passwort:<br /> <input type="password" name="password" /><br /> <input type="submit" value="Absenden" /> </form>FORMULAR; } }?>
Wenn wir die Seite jetzt in einem Browser aufrufen, werden wir das Formular sehen, und beim Absenden, nichts.
Was wir jetzt machen, wir verbinden uns auf den FTP-Server und downloaden die Benutzerdatei. Dann prüfen wir, ob sie erfolgreich gedownloaded wurde - falls ja, prüfen wir das Passwort. Ist auch das richtig, loggen wir den Benutzer ein:PHP<?php if(isset($_SESSION['logedin']) && $_SESSION['logedin'] == true) { // Hier ist der Benutzer eingeloggt } else { // Der Benutzer ist nicht eingeloggt if(isset($_POST['username']) && isset($_POST['password'])) { // Das Formular ist abgesendet worden -> verarbeiten // Verbinden zu dem FTP-Server "127.0.0.1" auf Port 21 $ftp = ftp_connect("127.0.0.1", 21); // Einloggen mit dem Benutzer "bla" und dem Passwort "blub" ftp_login($ftp, "bla", "blub"); // Wechseln in das Verzeichnis "scriptfiles/Accounts" ftp_chdir($ftp, "scriptfiles/Accounts"); // Versuche, die Datei "benutzername.ini" zu downloaden. // Der zweite Parameter gibt den Namen auf dem Webspace an, der dritte auf dem FTP-Server. Mit dem viertem sagen wir, dass wir die Datei in dem ASCII-Modus haben wollen. ftp_get($ftp, 'cache/'. $_POST['username'] .'.ini.cache', $_POST['username'] .'.ini', FTP_ASCII); // Prüfen, ob die Datei existiert. Wenn ja, download erfolgreich if(file_exists('cache/'. $_POST['username'] .'.ini.cache')) { // Der Benutzer existiert - wir lesen seine Datei aus ( die wir gedownloaded haben ) // Dazu nutzen wir parse_ini_file - das geht die Datei zeilenweise durch und macht aus einer Zeile "Key=xxx" folgendes: $array['Key'] = "xxx" $player = parse_ini_file('cache/'. $_POST['username'] .'.ini.cache'); // Jetzt prüfen wir, ob das Passwort stimmt. WICHTIG: Bei einem GF müsst ihr das PW evtl. verschlüsseln ! if($player['Key'] == $_POST['password']) { // Der Benutzer hat sich erfolgreich eingeloggt echo 'Du hast dich erfolgrecih eingeloggt.'; // Jetzt setzen wir die Session-werte: $_SESSION['logedin'] = true; $_SESSION['user'] = $_POST['username']; } else { // Die Passwörter stimme nicht überein echo 'Das Passwort ist falsch !'; } } else { // Der Benutzer existiert nicht echo 'Der Loginist falsch !'; } } else { // Das Formular ist nicht abgesendet echo <<<FORMULAR <form action="index.php" method="post"> Benutzername:<br /> <input type="text" name="username" /><br /> Passwort:<br /> <input type="password" name="password" /><br /> <input type="submit" value="Absenden" /> </form>FORMULAR; } }?>
Aus Übersichtsgründen kommt jetzt nur noch der obere Teil
PHP<?php if(isset($_SESSION['logedin']) && $_SESSION['logedin'] == true) { // Hier ist der Benutzer eingeloggt $player = parse_ini_file('cache/'. $_POST['username'] .'.ini.cache'); echo'Wilkommen im Controlpanel, '. $_SESSION['username'] .'<br />'; // <- erinnert ihr euch ? Die haben wir bei dem Login gesetzt ;) echo'Du bist Level '. $player['Level'] .'<br />'; // In der Datei steht "Level=5", dann steht hier "Du bist Level 5" if($player['ALevel'] >= 1) // Wenn das ALevel ( Godfatherisch für AdminLevel ) größer als 1 ist, das auch ausgeben echo'Du bist Admin Level '. $player['ALevel'] .'<br />'; } else { [...]
Und hier noch mal alles zusammen:PHP<?php session_start(); // Eine neue Session-ID bei jedem Aufruf generieren - nur beim Login geht schlecht, // da vorher Text ausgegeben wird und ich euch nicht mit OutputStream-Bufferring belästigen möchte // „false“ bedeutet, alle Variablen nicht löschen. session_regenerate_id(false);?><html lang="de"> <head> <meta charset="utf-8" /> <title>Mein UCP</title> </head> <body><?php // Einrücken müsst ihr selber :P if(isset($_SESSION['logedin']) && $_SESSION['logedin'] == true) { // Hier ist der Benutzer eingeloggt $player = parse_ini_file('cache/'. $_POST['username'] .'.ini.cache'); echo'Wilkommen im Controlpanel, '. $_SESSION['username'] .'<br />'; // <- erinnert ihr euch ? Die haben wir bei dem Login gesetzt ;) echo'Du bist Level '. $player['Level'] .'<br />'; // In der Datei steht "Level=5", dann steht hier "Du bist Level 5" if($player['ALevel'] >= 1) // Wenn das ALevel ( Godfatherisch für AdminLevel ) größer als 1 ist, das auch ausgeben echo'Du bist Admin Level '. $player['ALevel'] .'<br />'; } else { // Der Benutzer ist nicht eingeloggt if(isset($_POST['username']) && isset($_POST['password'])) { // Das Formular ist abgesendet worden -> verarbeiten // Verbinden zu dem FTP-Server "127.0.0.1" auf Port 21 $ftp = ftp_connect("127.0.0.1", 21); // Einloggen mit dem Benutzer "bla" und dem Passwort "blub" ftp_login($ftp, "bla", "blub"); // Wechseln in das Verzeichnis "scriptfiles/Accounts" ftp_chdir($ftp, "scriptfiles/Accounts"); // Versuche, die Datei "benutzername.ini" zu downloaden. // Der zweite Parameter gibt den Namen auf dem Webspace an, der dritte auf dem FTP-Server. Mit dem viertem sagen wir, dass wir die Datei in dem ASCII-Modus haben wollen. ftp_get($ftp, 'cache/'. $_POST['username'] .'.ini.cache', $_POST['username'] .'.ini', FTP_ASCII); // Prüfen, ob die Datei existiert. Wenn ja, download erfolgreich if(file_exists('cache/'. $_POST['username'] .'.ini.cache')) { // Der Benutzer existiert - wir lesen seine Datei aus ( die wir gedownloaded haben ) // Dazu nutzen wir parse_ini_file - das geht die Datei zeilenweise durch und macht aus einer Zeile "Key=xxx" folgendes: $array['Key'] = "xxx" $player = parse_ini_file('cache/'. $_POST['username'] .'.ini.cache'); // Jetzt prüfen wir, ob das Passwort stimmt. WICHTIG: Bei einem GF müsst ihr das PW evtl. verschlüsseln ! if($player['Key'] == $_POST['password']) { // Der Benutzer hat sich erfolgreich eingeloggt echo 'Du hast dich erfolgrecih eingeloggt.'; // Jetzt setzen wir die Session-werte: $_SESSION['logedin'] = true; $_SESSION['user'] = $_POST['username']; } else { // Die Passwörter stimme nicht überein echo 'Das Passwort ist falsch !'; } } else { // Der Benutzer existiert nicht echo 'Der Loginist falsch !'; } } else { // Das Formular ist nicht abgesendet echo <<<FORMULAR <form action="index.php" method="post"> Benutzername:<br /> <input type="text" name="username" /><br /> Passwort:<br /> <input type="password" name="password" /><br /> <input type="submit" value="Absenden" /> </form>FORMULAR; } }?> </body></html>
Werde das später noch um das Updaten der Benutzerdatei erweitern
Fragen und Feedback drüft ihr gerne posten, solange es sachlich + begründet(Fragen braucht ihr nicht begründen) ist und keine Beleidigungen enthält ( muss man in diesem Board leider sagen
)Neu: SFTP-Version - benötigt ssh2-lib, einfach Packet ssh2-php nachinstallieren, wenn noch nicht getan

Liebe Grüße

Tion
e1: Session regenerate id
e2: SFTP Versiob -
Jetzt weiss ich was ich vergessen hab komisch dass es keine errors gab
Er kann die bei SetTimerEx keine Errors geben, weil Pawn beim compilieren ja nicht weiß, was SetTimerEx ist

Es muss übrigens als public sein
-
Wir brauchen dein Public "hack"

-
Auf der Seite war ich auch schon, das Problem ist, dass ich unter JAVA arbeite und somit sehr beschränkt bin

Und es können ja durchaus mehrere Prozesse mit dem Namen "samp-server.exe" sein - deswegen darf ich den nicht einfach abknallen
Ich arbeite auch aktuell unter 7 - habe keinen Windows-Server - ich bin jedoch am überlegen, ob ich den Server einfach unter Linux betreibe
-
Ich greife von extern auf Windows zu, habe eine Clientanwendung die per Sockets angesteuert wird - das wird alles per Java exec gesteuert

"Screen" kennt Windows nicht, und laut "help cmd" kann ich der CMD-Konsole keinen Identifier geben

e: Stichwort Abbildname, man kann Prozesse per abbildname abschießen - nur wie setzt man den Abbildnamen

Ich bin noch googlen, wenn jemand weiß, wie, ich würde mich freuen
-
Hey Leute,
Unter Linux gibt es ein supertolles Tool, was sich screen nennt.
Für die, die es nicht kennen, damit kann man verschiedene Terminals starten und denen "Namen" ( "Session" ) geben, mit denen man die dann ansteuern kann.Zum Beispiel Session "server1", in der "samp-03csvr" läuft und "server2" in der "samp-03bsvr" läuft.
Die lassen sich dann per "screen -x server1 -X quit" abschießen, und dann sind sie abgeschossen
Gibt es das auch bei Windows ? Also etwa so:
e: Plötzlich abgesendet :O
Ich würde mich freuen, wenn mir jemand helfen kann

Tion
-
-
Du brauchst den strtok-Code - einfach mal Google fragen

Und... Time kenne ich als public inc nicht...
-
forward CarSurfing();
public Carsurfing()
{
new Float:x, Float:y, Float:z;
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
GetPlayerPos(i, x, y, z);
if(!(GetPlayerSurfingVehicleID(i) == INVALID_VEHICLE_ID))
{
SetPlayerPos(i, x+2, y+2, z);
}
}
}
}e: /pwn