Ich versuche dabei zu sein
Anders als beim ersten mal, da haben meinen sich meine Mandeln vorher für eine Entzündung entschieden...
Beiträge von Tion
-
-
Das zieht viele Betrüger auf sich.
Deswegen habe ich ihn auf die Seite verwiesen. Auch wenn ich sie "nicht" nutze / ich bin zwar drauf, sammle aber kein Feedback.
Oder hier auf die Beiträge gucken, am Besten jemand, der mindestens 2 Jahre hier ist und 500+ Beiträge hat -
Eine Betaphase, ist ja dazu gedacht das erstellte auf Fehler und Funktionalität zu prüfen. In dieser Zeit kann man bestehende System geringfügig ergänzen und beheben.
Wenn man jetzt in diesem Fall z.b. Casino's hinzufügt ist das mehr als etwas geringfügig ergänzen. Das meinte ich damit.
... dann haben Ubisoft ( "Ghost Recon Online" ), Mojang ( "Minecraft" ) und viele andere Hersteller das Prinzip nicht verstanden
Ich glaube, wir legen das Thema beiseite -
Unter "mein-mittelsmann.de" findest du ganz viele mit Skype / ..., da kannst du dir einen aussuchen
Sonst zur allerallerallerallerallerhöchsten Not kann ich einspringen, auch wenn ich keine Lust habe, um 7 aufzustehen *gähn* -
Richtig, die aber im Normalfall, alle Funktionen (die Grundlegenden) beinhaltet.
Wie genau unterscheiden sich Grundlegend und nicht Grundlegend ? -
Ist das die FSK 16 oder die FSK 18 Version?
Die deutsche ab 16, ab 18 darf man nicht verkaufen - habe ich extra noch mal nachgegucktIch kann 15€ PSC abbuchen - von 2 10ern oder 1 25er oder oder oder
-
Tion, versteh mich bitte nicht falsch. Eine Beta, sollte aber die Grundlegenden Funktionen schon enthalten und dann nur noch Fehler behoben werden. So ist der allgemeine Begriff in dieser Sektion. Kenne mich als Informatiker ganz gut da aus. Jetzt verstehst Du eventuell meine Hintergedanken, bei meinem Post.
Nichts gegen dich, aber eine Beta-Version ist "eine unfertige Version eines Computerprogramms".
Also kann ich das jetzt noch weiter bearbeiten, und es ist noch BetaPabloEscobar: Danke für das Feedback, was können wir besser machen ?
-
Ich biete euch hier Counter-Strike: Source an. Es handel sich um eine deutsche Steam-Version.
Das ganze wird bei Steam als GIFT übergeben - nicht mein Account, sondern als Geschenk.
Zitat von Über das SpielSpielinfos, Anforderungen, ... DIE NÄCHSTE VERSION DES BELIEBTESTEN ONLINE-ACTION-SPIELS DER WELT
Counter-Strike: Source kombiniert die preisgekrönte Teamplay-Funktion von Counter-Strike mit der Spitzentechnologie von Source™. Atemberaubende Grafik sowie brandneue Sounds und Steuermöglichkeiten machen Counter-Strike: Source zu einem Muss für jeden Gamer.Zitat von AnforderungenSpielinfos, Anforderungen, ... Mindestanforderung:
1,7-GHz-Prozessor, 512 MB RAM, DirectX® 8.1-fähige Grafikkarte (SSE-Unterstützung erforderlich), Windows® 7 (32/64-bit) / Vista / XP, Maus, Tastatur, InternetverbindungEmpfohlen:
Pentium 4-Prozessor (3,0 GHz oder höher), 1 GB RAM, DirectX® 9-fähige Grafikkarte, Windows® 7 (32/64-bit)/Vista/XP, Maus, Tastatur, InternetverbindungAktueller Preis Steam: 19,99€
Aktueller Preis MediaMarkt: 19,99€
Mein Preis Paysafecard: 15€
Mein Preis Paypal: 12,99€Bis zu 7,01€ Ersparnis :O
Alle Marken sind Eigentum ihrer jeweiligen Besitzer in den USA und anderen Ländern. Quelle: Steam-Seite
______
Unverbindlicher Hinweis: Die Sicherheit einer Transaktion kann am besten durch die Einschaltung eines Mittelsmannes gewährleistet werden. Weitere Informationen dazu gibt es hier. -
Zitat
Do not distribute anything we've made. This includes, but not limited
to, the client or the server software for the game. This also includes
modified versions of anything we've made. Also, you may not resell any
gift codes or licence keys - but of course you can give gift codes as
gifts. This is necessary so that we can help stop piracy and fraud - and
especially users buying keys that have been fraudulently obtained.Verteielt nichts, was wir gemacht haben. Das enthält z.B. die Client- oder Serversoftware von dem Spiel.
Das enthält auch veränderte Versionen von allen unseren Erzeugnissen. Auch dürft ihr wedergift codes noch Lizensen
weiterverkaufen - trotzdem dürft ihr die gift codes verschenken. Das ist benötigt, um Piraterie und (Kreditkarten-) Betrug
zu stoppen.Mal etwas frei übersetzt
-
Was soll ich mit 8€ amazon gutschein machen ?
Tu eine 10er PSC drauf und du kriegst CS:S per Steam ( anstadt 20€, 2 € Gewinn :O ) -
Dann bringt Euer Anticheat genauso viel wie die 100 anderen. Naja, an guten Code kommt man heutzutage sowieso nie umsonst ;-)^^
Arbeit ist gut, aber ich mach doch entweder 100%ig Sachen oder ich lass es ganz. Ist meine Meinung.
Sollte jetzt auch kein Angriff auf Eure Person(en) sein, ist lediglich meine Meinung.
... das ist Beta - steht sogar im Titel. Ist noch nicht fertigTheGrudgee: In dem Ordner "DT_Anticheat" sollte eine "log.txt" sein - kannst du die bitte posten ?
Btw., kommt nur das, oder crasht der Server ?
Oder, kannst du mal das Plugin "CrashDetect" ( Link ) laden ? Das sollte dann anzeigen, woran das liegt.@[RMR]FloH: Setze ich mal auf die "ToDo"-Liste
-
Denke mal, dass Ihr die Casinos nicht detected habt oder?
NopeWas passiert wenn ich am Automaten Esse und gleichzeit Leben cheate ?
... dann musst du ganz schön gutes Timing haben -
Thema als erledigt markiert ?
Kommentiere mal alle Update() aus - vielleicht überschneiden die sich...
-
Hast du den Ordner scriptfiles mit hochgeladen ?
-
ok aber was ist da problem
Hast du den Code mal versucht ?
Und poste bitte die ganze "Update"-Funktion, mit "Kopfbereich" bis zur letzten "}", alle "if"s usw. -
zabus: Ok, dann habe ich diesen Installations-Artikel missverstanden
Dann entschuldigung -
public OnPlayerDisconnect(playerid, reason)
{
if(Eingeloggt[playerid] == 1)
Update(playerid);
Eingeloggt[playerid] = 0;
new spielername[24];
new string[64];
GetPlayerName(playerid,spielername,24);
format(string,64,"{7F7F7F}%s {FFFFFF}hat den Server {E50000}verlassen.",spielername);
SendAdminMessage(Weiß,string);
return 1;
}
Spart Recourcen -
Blödsinn, kann man natürlich auch Manuell machen
Wie genau Manuell ?und bringen keine nennenswerte Vorteile außer das man damit das OOP Konzept verfolgen kann.
Zitat von TionIch nutze die Klassen gerne, wenn ich etwas programmiere, da ich gerade in einer "OOP-Phase" bin, in der alles in eine Klasse getan werden muss.
Zitat von Vincent PetritzOOP würde ich das auch nicht unbedingt nennen, nur weil er mit Klassen arbeitet.
... kein Kommentar. -
Nichts, was e snicht schon länsgt in besser gäbe: http://pear.php.net/
... klingt cool, unterwelcher Lizenz steht das ? Finde auf der Webseite nichts(e: Dafür braucht man Zugriff auf die Shell, um die Packages zu installieren - was man bei 99% der Hoster wohl nicht hat
)
-
Hey Leute,
habe die schon ein paar Wochen auf meiner Festplatte rumgammeln, und dachte mir, dass ich sie einfach mal veröffentliche.
Ich nutze die Klassen gerne, wenn ich etwas programmiere, da ich gerade in einer "OOP-Phase" bin, in der alles in eine Klasse getan werden muss.Wie läuft das ganze ab ?
Ich habe ein paar Klassen geschrieben, die über meinen "ComponentLoader" eingebunden werden. Das sieht dann in etwa so aus:
Der erste Parameter gibt eine Art "Kategorie", der zweite den Klassennamen an.Werbung:
Hier könnte Ihre Werbung stehen. Jetzt buchen - nur 299€ die Stunde.Was können die lassen bis jetzt ?
Bis jetzt kann man mit den Klassen mit ZIP-Archiven arbeiten, auf FTP-Servern tüfteln, ein eigenes Session-System ( anstelle dem PHP-eigenem ) nutzen & ein paar kleine Sachen mehr.Hast du eine Liste der Kategorien und Klassen ?
Klar, sogar mit Beispielen- client
- Session
- connection
- FTPConnection
- files
- IniParser
- ZIPReader
- ZIPWriter
-
Update( nicht zu empfehlen, die zu nutzen, könnt ihr euch angucken, aber kommt aus meiner Anfänger-Zeit )
- server
- GlobalVar
- OutputStream
- templates
- InformationStorage
- InformationStorageInterface
Beispiel-Liste:
CodeDieses Beispiel wird eine Datei via FTP downloaden und wieder hochladen.Die Datei auf dem FTP-Server heißt "downloadme.txt" und wird auf dem Webspace "uploadme.txt" heißen.##########Benötigte Komponenten: connection:FTPConnection########## include_once('./includes/ComponentLoader.class.php'); ComponentLoader::load('connection', 'FTPConnection'); $ftpcon = new FTPConnection('83.133.224.53'); $ftpcon->auth('root', 'kalaga33'); $ftpcon->get('downloadme.txt', 'uploadme.txt'); $ftpcon->put('downloadme.txt', 'uploadme.txt');########## Als Parameter bei der Initialisierung wird die IP oder die Domain übergeben. Per "auth" wird sich eingeloggt. Per "get" gedownloaded, dabei ist der erste Parameter die Datei auf dem FTP-Server, der zweite die 'lokale'. Per "put" geuploaded, dabei ist wieder der erste Parameter die Datei auf dem FTP-Sevrer und die zweite die 'lokale' Per "cd" ( "Change Dir" ) kann das Verzeichnis gewechselt werden - Dabei wird als einziger Parameter das neue Verzeichnis übergeben
CodeHier werden wir eine Variable setzen und wieder auslesen.##########Benötigte Komponenten: server:GlobalVar########## include_once('./includes/ComponentLoader.class.php'); ComponentLoader::load('server', 'GlobalVar'); GlobalVar::assign('version', '0.1a'); GlobalVar::get('version');########## Ich nutze diese Klasse oft, wenn ich Variablen zwischen den Klassen und Dateien austauschen muss.
CodeEin "InformationStorage" ist eine SQLite-Datenbank, die OOP ist und schon viele Sachen vorimplementiert hat.Man muss sich zum Beispiel nicht mehr um den Check, ob die DB existiert, kümmern.Anders als die anderen Komponenten muss hier eine eigene Klasse geschrieben werden, die von "InformationStorage" erbt.##########Benötigte Komponenten: templates:InformationStorage templates:InformationStorageInterface########## include_once('./includes/ComponentLoader.class.php'); ComponentLoader::load('templates', 'InformationStorage'); ComponentLoader::load('templates', 'InformationStorageInterface'); class MyStorage extends InformationStorage implements InformationStorageInterface { function __construct($dbname) { parent::init($this, $dbname); } // Wenn die Datenbank erzeugt wird / noch nicht existiert public function onCreate($dbname) { parent::exec('CREATE TABLE user (id INTEGER PRIMARY KEY, name TEXT, email TEXT, password TEXT);'); } // Immer, wenn eine Query per "exec" ausgefuehrt wird - egal, ob INSERT, SELECT, ALTER, UPDATE, ... public function onQuery($query) { // Hier evtl. etwas loggen ? // auf jeden Fall nicht in die Datenbank schreiben, sonst koennte es zu einer Endlosschleife kommen ;) } // Hier können eigene Funktionen folgen }########## Ich habe mir mal die Freiheit genommen, eine eigenen "Login-Storage" zu schreiben: include_once('./includes/ComponentLoader.class.php'); ComponentLoader::load('templates', 'InformationStorage'); ComponentLoader::load('templates', 'InformationStorageInterface'); class MyStorage extends InformationStorage implements InformationStorageInterface { function __construct($dbname) { parent::init($this, $dbname); } public function onCreate($dbname) { parent::exec('CREATE TABLE user (id INTEGER PRIMARY KEY, name TEXT, email TEXT, password TEXT);'); } public function onQuery($query) { } // EIGENE FUNKTIONEN public function createUser($name, $email, $password) { $name = parent::escape($name); $email = parent::escape($email); $password = parent::escape(md5($password)); $sql = 'INSERT INTO user (name, email, password) VALUES ("'. $name .'", "'. $email .'", "'. $password .'");'; parent::exec($sql); } public function getUser($email) { $email = parent::escape($email); $sql = 'SELECT id FROM user WHERE email = "'. $email .'";'; $result = parent::exec($sql); if(parent::numRows($result) != 0) { $row = parent::fetchArray($result); return $row['id']; } else return -1; } public function checkUserPassword($userid, $password) { if(!is_numeric($userid)) return false; // $userid muss jetzt nicht escaped werden, da es zu 100% aus Zahlen besteht ( siehe chack oben ) $sql = 'SELECT password FROM user WHERE id = '. $userid .';'; $result = parent::exec($sql); $row = parent::fetchArray($result); return md5($password) == $row['password']; } } // Benutzen der Klasse: $userstorage = new MyStorage('testdb'); $userstorage->createUser('MaxMustermann', 'max@muster.mann', 'passwort'); $userstorage->createUser('MauriceMustermann', 'maurice@muster.mann', 'passwort2'); $userstorage->createUser('PizzaLieferMann', 'pizza@liefer.mann', 'passwort3'); $pizza = $userstorage->getUser('pizza@liefer.mann'); echo'Der Pizza-Mann hat die ID '. $pizza ."\r\n"; if($userstorage->checkUserPassword($pizza, 'passwort')) // false echo'Sein Passwort lautet "passwort"'."\r\n"; else if($userstorage->checkUserPassword($pizza, 'passwort2')) // false echo'Sein Passwort lautet "passwort2"'."\r\n"; else if($userstorage->checkUserPassword($pizza, 'passwort3')) // true echo'Sein Passwort lautet "passwort3"'."\r\n";
CodeDieses Beispiel wird eine INI-Datei auslesen, ein paar Werte ändern und wieder speichern.##########Benötigte Komponenten: files:IniParser########## include_once('./includes/ComponentLoader.class.php'); ComponentLoader::load('files', 'IniParser'); $player = IniParser::parse('user.txt'); $player['Passwort'] = 'NeuesPassword'; IniParser::save($player, 'user.txt');########## Bei Version > 0.2 wird die PHP-hauseigene Funktion "parse_ini_file" genutzt.
PHPIn diesem Beispiel werden wir Ausgaben abfangen, löschen und andere senden.##########Benötigte Komponenten: server:OutputStream########## include_once('./includes/ComponentLoader.class.php'); ComponentLoader::load('server', 'OutputStream'); OutputStream::record(); echo'Diesen Text wird niemand zu sehen bekommen'; OutputStream::stop(false); // Das "false" sagt, das alle Ausgaben bis jetzt nicht gesendet und gelöscht werden. Bei weglassen oder "true" würden sie gesendet werden. echo'Hallo :)'; OutputStream::record(); echo'3.1415'; $text = OutputStream::get(); // in $text ist jetzt "3.1415" OutputStream::stop(); // Der Benutzer bekommt jetzt "3.1415" gesendet########## Diese Klasse kann genutzt werden, um an beliebigen Stellen des Scriptes die Header zu verändern oder eigene Fehlerbildschirme zu erzeugen, die ein eigenes Design haben. Die OutputStream-Klasse fängt sogar Text außerhalb der "<?php"-Tags ab.
CodeIn diesem Beispiel werden wir eine neue "Session" initialisieren, ein paar Variablen setzen und sie wieder auslesen.Wichtig: Für dieses Beispiel muss eine Verbindung zu einer MySQL-Datenbank bestehen und die Tabellen, wie sie ganz unten als Dumb stehen,müssen importiert sein !##########Benötigte Komponenten: client:Session########## include_once('./includes/ComponentLoader.class.php'); ComponentLoader::load('client', 'Session'); Session::initialisize(); if(Session::firstinit()) { // Der Benutzer ist zum ersten Mal auf der Seite Session::set('logedin', false); } if(Session::get('logedin') == false) { echo'Du bist nicht eingeloggt'; } else { if(Session::exists('username') == false) { Session::set('username', 'IrgendeinName'); } else { echo'Wilkommen, '. Session::get('username'); } }##########Hinweis: Session::initialisize MUSS vor jedem Output via "echo", ... aufgerufen werden. Sollte es nicht anders gehen, kann die "OutputStream"-Komponente genutzt werden.##########CREATE TABLE `session_indexes`( `id` int(5) NOT NULL AUTO_INCREMENT, `session` text NOT NULL, `useragent` text NOT NULL, `lastvisit` int(11) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT = 2;CREATE TABLE `session_variables`( `id` int(4) NOT NULL AUTO_INCREMENT, `session` int(2) NOT NULL, `typ` int(1) NOT NULL, `var` text NOT NULL, `value` text NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT = 4;
CodeDieses Beispiel wird eine ZIP-Datei öffnen, die Namen auslesen und anzeigen, und entpacken.##########Benötigte Komponenten: files:ZIPReader########## include_once('./includes/ComponentLoader.class.php'); ComponentLoader::load('files', 'ZIPReader'); $archiv = new ZIPReader('archiv.zip'); echo'<pre>'; print_r($archiv->getFiles()); echo'</pre>'; $archiv->extractAll('.');########## Diese Komponente wird nicht auf allen Webservern unterstützt, da einige Hoster ihren PHP-Kernel ohne die ZIP-Bibliothek compiliert haben.
CodeDieses Beispiel wird eine ZIP-Datei öffnen und 2 Dateien hinzufügen.Dabei wird eine Datei nicht wirklich existieren, sondern als String der Inhalt übergeben werden.##########Benötigte Komponenten: files:ZIPWriter########## include_once('./includes/ComponentLoader.class.php'); ComponentLoader::load('files', 'ZIPWriter'); $archiv = new ZIPWriter('archiv.zip'); $archiv->addFile('addme.txt', 'addme.txt'); // lokal | im Archiv - letzteres kann weggelassen werden $archiv->addStringAsFile('virtual.file', 'Ich bin eine Datei im ZIP-Archiv :O'); //$archiv->addFolder('folder'); //$archiv->import('.'); // ein ganzes Verzeichnis rekursiv importieren########## Diese Komponente wird nicht auf allen Webservern unterstützt, da einige Hoster ihren PHP-Kernel ohne die ZIP-Bibliothek compiliert haben.
Lizenz-Bestimmungen:
Nutzt es einfach, wenn ihr es braucht. Ihr dürft es nur nicht als eures ausgeben, verkaufen, bla, bla, bla.
Als Hinweis: Ihr dürft es auch in Systeme einbinden, die ihr anderen kostenpflichtig zur Verfügung stellt, wenn ihr meinen Namen irgendwo ins Kleingedruckte schreibt, oder erwähnt, dass dieses "Mini-Framework" drinne ist.Source-Code:
Das sind etliche DateienDa kann man nicht einfach den Sourcecode posten
Hier einfach mal der Source von dem ComponentLoader:PHP<?php /* @class: ComponentLoader * @type: static * @author: Tion * @container: . * @version: 3.3.4 */ class ComponentLoader { private static $libs = array(); public static function load($container, $class) { $mypath = dirname(__FILE__); if(substr($mypath, strlen($mypath) - 1) != '/') $mypath .= '/'; $fullpath = $mypath . $container .'/'. $class .'.class.php'; if(!file_exists($fullpath)) return false; require_once($fullpath); $lib = array('container' => $container, 'class' => $class); self::$libs[] = $lib; return true; } public static function isLoad($container, $class) { for($i = 0; $i < sizeof(self::$libs); $i++) { if(self::$libs[$i]['container'] == $container && self::$libs[$i]['class'] == $class) return true; } return false; } }?>
Feedback:
Jaaaaaaaa, bitte auch melden, falls ich eine wichtige Klasse vergessen habe ( was ich 100%ig getan habe)
Tion
- client