GTAvision.com - Forum - Grand Theft Auto News, Downloads, Community and more...

Position: Grand Theft Auto: San Andreas » Multiplayer » Scripte und kleine Codes » Auto-Delete Userfile » Druckansicht
TrexXx, 27.08.2008, 19:24
Ich habe eine frage, ich hatte heute eine Idee, nähmlich, dass nach einer Weile, also z.B. jede 24
Stunden macht der Server einen User-File Check, der folgendermaßen aussieht:

Wenn ein User schon Beispielsweise 2 Monate nicht auf dem Server war, dann wirt seine Userfile
gelöscht, da viele Leute sich einmal den Server angucken, aber zum Spawnen eingeloggt/registet sein
müssen und dann nie wieder drauf kommen, weil er ihnen vllt. nicht ins Bild passt!

Wie mache ich das also das mit dem Wann geht ja:

gettime....

auch das saven des tages an dem er zum letzten mal eingeloggt war,

aber wie mache ich das mit dem

if(dini_Exists(???????)), da es ja kein MAX_FILES gibt!!!!

:/

Hat da jemand eine schlaue IDEE?
Recycler, 27.08.2008, 19:25
Plugin nutzen, in C++ einfach zu realisieren.

MfG
Recycler
TrexXx, 27.08.2008, 19:29
Kannst du mir da vllt weiter helfen da ich mit C++ / Plugins keine Erfahrung habe sondern bis jetzt
ohne Plugins ausgekommen bin!
Recycler, 27.08.2008, 20:00
Also...ich kann dir keinen Einstieg in C/C++ bieten, dafür habe ich momentan keine Nerven und keine
Zeit. Erstmal brauchst du, wenn du das realisieren willst, das SDK von den SA-MP Plugins:

http://files.sa-mp.com/sa-mp-0.2-plugin-sdk.zip

Da ist eine ReadMe drin, die wird dir schonmal alles nötige zum Start erklären. Natürlich brauchst
du einen C++ Editor - da gibt es eine Menge, die alle ein wenig unterschiedlich funktionieren,
probiers mal am Anfang mit Dev-C++.

Wenn du es geschafft hast, ein neues Projekt zu starten, dann hilft dir vielleicht folgender Code
ein wenig weiter (ist jetzt nur ein Beispiel, um Dateinamen auszulesen):

Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
HANDLE fHandle;
WIN32_FIND_DATA wfd;

fHandle = FindFirstFile("C:\\*", &wfd);

do
{
if (!( (wfd.cFileName[0] == '.') && ( (wfd.cFileName[1] == '.' && wfd.cFileName[2] == 0) || wfd.cFil
eName[1] == 0 ) ))
{
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
MessageBox(0, wfd.cFileName, "Folgendes Verzeichnis wurde gefunden:", 0);
// Wenn das Script ein Unterverzeichnis gefunden hat, dann sind wa hier
}
else
{
MessageBox(0, wfd.cFileName, "Folgende Datei gefunden:", 0);
// Eine Datei wurde gefunden
}
}
}
while (FindNextFile(fHandle, &wfd));
FindClose(fHandle);


Da du nun aber ein unsigned short* Symbol hast, musst du es in ein char* konvertieren (normaler
String wie in PAWN, in C++ gibts eine Masse an Datentypen):

Code:
1
2
3
size_t nLen = _tcslen(wfd.cFileName) * sizeof(TCHAR);
char* pBuffer = new char[nLen + 1];
wcstombs(pBuffer, wfd.cFileName, nLen + 1);


Wie du vielleicht siehst, ist C++ der Sprache PAWN in gewisser Weise sehr ähnlich, wohl eher
umgekehrt.

Wahrscheinlich kannst du mit alldem nicht viel anfangen, aber im SA-MP Forum findest du bestimmt
ein paar Cracks die Lust haben, mit dir sowas herzustellen.

MfG
Recycler
TrexXx, 27.08.2008, 20:47
Grage warum muss ich dafür ein Plugin verwenden, ich habe eigentlic alles im kopf bis auf das er
alle Teile Prüft

Ich wollte es am liebsten integrieren (ohne FS oder Plugin)
Recycler, 27.08.2008, 20:49
Mh, nur leider ist es in PAWN nicht möglich, die Dateinamen eines Ordners auszulesen. Aber
vielleicht ist es einfacher, wenn du ein PHP Script dazu verwendest, und alle Dateinamen
automatisch alle 24h in eine Datei schreibst, die du mit PAWN lesen kannst.

MfG
Recycler
TrexXx, 27.08.2008, 20:50
Kannst du mir dabei helfen, da ich mich mit html zurechtfinde, aber mit php ==> 0
Recycler, 27.08.2008, 20:57
OK, ich denke das kriege ich hin. Hier wäre erstmal der Code, um Dateien eines Verzeichnisses
auszulesen & in eine .txt zu schreiben:

Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$handle = opendir (".");
if ($handle)  
{
while ($file = readdir($handle))  
{
if (($file != ".") && ($file != ".."))  
{
$filelist[] = $file;
$datafile = "dateiname.txt";
$fp = fopen($datafile, "a");
fputs($fp, $file);
fclose($fp);
}
}
closedir ($handle);
}
?>


Probier es einfach aus, kopier den Code in eine PHP Datei, setze sie in den Ordner mit den
auszulesenen Dateien und führe den Code aus.

MfG
Recycler
Rafioso, 27.08.2008, 21:06
Der richtige Weg wäre:

Code:
1
while (false !== ($file = readdir($handle)))


Nachzulesen auf der php-Seite ;)
Recycler, 27.08.2008, 21:11
Also, ich benutze den Code so für meine Gallery, um die Bildernamen auszulesen, funktioniert ganz
gut :D

MfG
Recycler
Rafioso, 27.08.2008, 21:13
Dann erstell mal ein Verzeichnis namens "0" ;)
TrexXx, 28.08.2008, 00:17
Wieso? Also wir haben ein Verzeichnis Namens user in dem alle Files über unsere Member gespeichert
werden!
dödel, 28.08.2008, 02:00
Du warst damit auch nicht gemeint ;)
TrexXx, 28.08.2008, 13:01
OOH :shy:
Recycler, 28.08.2008, 15:27
Ja, kann ja sein, aber ich glaube es wird kaum jemanden geben der ein Verzeichnis "0" oder auch
"false" nennt. Ich habe ja auch nicht auf diese PHP-Seite geschaut, sondern nur von den Funktionen
und dem Standard-Syntax her diesen Code produziert :D

MfG
Recycler
GTAvision.com :: Forumregeln :: FAQ :: Impressum :: Kontakt :: RDRvision.com :: LANOIREvision.com :: MaxPayneVision.com
NetVisionWork.NET
.: © 2006-2014 by GTAvision.com :.

Rockstar GamesTake-Two Interactive Deutschland

Free Grand Theft Auto Downloads