Beiträge von Kayer


    public OnPlayerConnect(playerid)
    {
    new lol[100];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name,sizeof name);
    format(lol,sizeof lol,"%s.ini",name);
    if(dini_Exists(lol))
    {
    SendClientMessage(playerid,FABRE,"Verwende: /login ");// Wenn es "lol" gibt
    }
    else
    {
    SendClientMessage(playerid,FABRE,"Verwende: /register ");// und wenn nicht
    }


    ServerInfo[Players] ++;
    dini_IntSet(SFile, "PlayersConnected", ServerInfo[Players]);
    ServerInfo[TotPlayers] ++;
    dini_IntSet(SFile, "TotalConnects", ServerInfo[TotPlayers]);
    new string[256];
    new playrname[MAX_PLAYER_NAME];
    new planame[MAX_PLAYER_NAME];
    new connect[128], string2[256];
    GetPlayerName(playerid, planame, sizeof(planame));
    GetPlayerName(playerid, playrname, sizeof(playrname));
    format(connect, sizeof(string), "V-Admin/Users/%s.djson", playrname);
    format(string2, sizeof(string2), "V-Admin/Users/%s.djson", playrname);
    if(ServerInfo[Locked] == 1)
    {
    SendClientMessage(playerid, COLOR_BRIGHTRED, "Der Server ist geschlossen! (KICKED)");
    Kick(playerid);
    return 1;
    }


    new Flaot: h;
    GetPlayerHealth(playerid,h);
    dini_FloatSet(lol,"Gesundheit",h);


    dini_IntSet(lol,"Handwaffe",GetPlayerWeapon(playerid));
    // => die waffe,die er gezückt hat !


    //für Alle waffen bräuchtest du
    new weapons,ammo;
    GetPlayerWeaponData(playerid, 1, weapons, ammo);
    dini_IntSet(lol,"Waffe1",weapons);
    dini_IntSet(lol,"Ammo1","ammo");




    new weapons2,ammo2;
    GetPlayerWeaponData(playerid,2,weapons2,ammo2);
    dini_IntSet(lol,"Waffe2",weapons2);
    // .......

    Das ginge so bis 12.Dann würdest du alle möglichen (!) Waffen gespeichert haben, doch du kannst auch nur die Slots von den wichtigen nehmen,wie MG´s,MP´s,Pistol´s,Shotgun´s.

    Probier mal mit:

    //Unter GetPlayerName bei OnPlayerDisconnect
    SetTimerEx("DINIloesche",1000,0,"s",name);
    //
    forward DINIloesche(name[]);
    //
    public DINIloesche(name[])
    {
    new lol[100];
    format(lol,sizeof lol,"%s.ini",name);
    if(dini_Exists(lol))
    {
    dini_Remove(lol);
    }
    return 1;
    }

    Edit: Getest und geht ;)

    1. Ban ihn per Console
    2. Auch was du hier tust ist strafbar,glaube ich, denn das Veröffentlichen einer IP ist dir nicht gestattet,solange es sich hier nicht um HeadAdmins von dir handeln ;) ,ich glaube (!) irgendein Datenschutzgesetzt.

    Vielleicht fehlt dir:

    // Unter OnPlayerConnect
    new lol[100];


    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name,sizeof name);
    format(lol,sizeof lol,"%s.ini",name);
    if(dini_Exists(lol))
    {
    SendClientMessage(playerid,FABRE,"Verwende: /login ");// Wenn es "lol" gibt
    return 1;
    }
    else
    {
    SendClientMessage(playerid,FABRE,"Verwende: /register ");// und wenn nicht
    return 1;
    }

    Leider weiß ich das auch nicht genau,aber werde mir was einfallen lassen ;) .


    Doch:
    SetTimer("DINIloeschen",1000*10,0); muss zu SetTimerEx("DINIloeschen",1000*10,0,"i",playerid); ,da SetTimer für den gesamten Server gilt und Funktionen,die jeden Spieler einzeln betreffen,wie SetPlayerHealth(playerid, health );, dann nur für ID 0 wiedergeben würde; für alle User bräuchtest du eine for-Schleife.Da es aber nur für einen User speziel ist, brauchst du SetTimerEx.


    Edit: Teste mal den Namen in einer Datei zu speichern,nach gewisser Zeit wieder aufzurufen, überprüfen , ob eine dini - datei existiert und dann ggf. löschen...ein Denkansatz.Werde es selbst testen

    Du brauchst dazu fdeleteline.
    stock fdeleteline(filename[], line[]){
    if(fexist(filename)){
    new temp[256];
    new File:fhandle = fopen(filename,io_read);
    fread(fhandle,temp,sizeof(temp),false);
    if(strfind(temp,line,true)==-1){return 0;}
    else{
    fclose(fhandle);
    fremove(filename);
    for(new i=0;i<strlen(temp);i++){
    new templine[256];
    strmid(templine,temp,i,i+strlen(line));
    if(equal(templine,line,true)){
    strdel(temp,i,i+strlen(line));
    fcreate(filename);
    fhandle = fopen(filename,io_write);
    fwrite(fhandle,temp);
    fclose(fhandle);
    return 1;
    }
    }
    }
    }
    return 0;
    }

    Doch zunächst musst du rauslesen,was du löschen willst.

    new File: k = fopen("File.txt",io_readwrite)
    new string[100];
    while(fread(k,string))
    {
    if(strcmp(string,was_du_suchst,true,strlen(was_du_suchst))==0)
    {
    fdeleteline("File.txt",string);
    // Und dann beispielsweise überschreiben
    }}

    Oder in dini

    dini_Unset("File.ini.","Key");
    // voher ggf. mit dini_Isset abfragen


    Edit: Innerhalb 4 Minuten zu antworten ist gar unmöglich !

    auf "dini_Exists" folt ein Dateinamen.Du hast nur einen Spielernamen.
    So sähe es inetwa aus:

    new form[100];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof name);
    format(form,sizeof form,"%s.ini",name);


    //


    if(dini_Exists(form))
    {

    Ok moment ich probiers ma
    So die Registersystem.pwn und die .amx kommt dann in den filterscript Ordner?


    Zu den Waffen:
    Also sind die Waffen von GTA automatisch schon im Script oder muss man noch die Waffen die es in gta gibt erst i-wo einfügen?

    Ja die Dateien in den Filterscript Ordner ( nur .amx notwendig ) + bei der server.cfg bei "Filterscripts" den Namen deines Filterscripts hinzufügen.


    Die Waffen gibt es,falls du das meinst.
    Das Spieler sie haben beim Spawnen,durch einen Befehl bekommen wie /waffe oder sie aufnehmen können ,musst du selbst machen.
    ( Oben beschrieben wie im Post )

    Sähe mit dcmd etwa so aus:

    dcmd_register(playerid, params[])
    {
    new pas[100];
    if(sscanf(params,"s",pas))
    {
    SendClientMessage(playerid,COLOR_RED,"Verwende: /register [PASSWORT]");
    return 1;
    }
    if(log[playerid] == 1)
    {
    SendClientMessage(playerid,COLOR_RED,"Du bist bereits eingeloggt");
    return 1;
    }
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name,sizeof name);
    new form[100];
    format(form,sizeof form,"%s.ini",name);
    if(dini_Exists(form))
    {
    SendClientMessage(playerid,COLOR_RED,"Dieser Name ist bereits registriert");
    return 1;
    }
    dini_Create(form);


    dini_Set(form,"Passwort",pas);
    dini_IntSet(form,"Level",1);
    new lol[100];
    format(lol,sizeof lol,"Du hast dich erfolgreich registriert mit dem PW %s",pas);
    SendClientMessage(playerid,COLOR_RED,lol);
    log[playerid] = 1;
    return 1;
    }

    Könnte vllt. daran liegen:
    SetPlayerMoney(playerid,dini_Int(file,"Money"));
    Durch dies wird dein Geld zunächst auf 0 gesetzt, dann liest er aus einer File (wahrscheinlich Userdatei ;) ) wie viel Geld du hast und gibt es dir.
    Wenn du es beim Connecten oder ggf. Spawen wiederhaben willst, musst du es vor dem (bzw. beim ) Verlassen des Servers speichern.


    Unter "OnPlayerDisconnect" könntest du zum Beispiel dies schreiben:

    new name[MAX_PLAYER_NAME];
    new file[100];
    GetPlayerName(playerid,name,sizeof name);
    format(file,sizeof file,"%s.ini",name);
    if(!dini_Exists(file))//Wenn die Datei mit dem Name des Users nicht existiert...
    {
    dini_Create(file);// ... macht er das - er erstellt sie.
    }
    dini_IntSet(file,"Geld",GetPlayerMoney(playerid)); // Allgemein speichert er das Geld.


    Bei OnPlayerConnecten könntest du machen:

    new name[MAX_PLAYER_NAME];
    new file[100];
    GetPlayerName(playerid, name,sizeof name);
    format(file,sizeof file, "%s.ini",name);
    if(dini_Exists(file))//Wenn es die Datei gibt...
    {
    SetPlayerMoney(playerid,dini_Int(file,"Geld"));// ... liest er das Geld raus und gibt dir Geld....wäre hier nicht unbedingt nötig, da man beim Connecten sowieso 0 $ hat
    }
    else
    {
    SendClientMessage(playerid,0x000080AA,"Beim Verlassen wird für dich eine Datei angelegt,damit dein Geld gespeichert bleibt");//Wenn du das erste Mal drauf bist, konnte er ja keine erstellen,wird es aber
    }

    Waffen:
    Wenn du Waffen meinst,die man aufnehmen kann,brauchst du PickUps >
    AddStaticPickup( 1242, 2, 1503.3359, 1432.3585, 10.1191 ); < (Beispiel ).
    Du kannst auch unter "OnPlayerSpawn" >GivePlayerWeapon(playerid, 26, 500);< machen.Damit wird beim Spawnen dem User eine Waffe gegeben.
    Oder bei >AddPlayerClass( 0, 1958.33, 1343.12, 15.36, 269.15, 26, 36, 28, 150, 0, 0 );< ( Letzen 6 Ziffern: Waffe1, Ammo1,Waffe2,Ammo2,Waffe3,Ammo3 ) die Waffen einstellen, die ein bestimmter Skin haben soll.

    Du verwendest "dini_Get" und "dini_Set" wobei Geld eine Zahl ist ( z.B.: 1000$ ) ,also ein Integerwert, und nicht wie du angegeben hast ein String,das einmal bei GivePlayerMoney falsch ist ( "Spielergeld" ) und höchstwahrscheinlich beim Speichern und Aufrufen.



    dini_IntSet("Geld.txt","Geld",GetPlayerMoney(playerid));
    // Speichern
    GivePlayerMoney(playerid,dini_Int("Geld.txt","Geld"));
    // Laden und gleichzeitig Geld geben

    Edit: Dies wird so nicht so sein wie du möchtest.Wenn du das beispielsweise unter OnPlayerSpawn machst, wird zwar das Geld gespeichert über "Geld=..." , doch für alle User.D.h. spawnt einer mit 4000 steht da "Geld=4000", spawnt 2 Sekunden danach wieder jemand mit -300 , steht da:"Geld=-300", usw. !

    new name[100];
    new form[100];
    GetPlayerName(playerid,name,sizeof name);
    format(form,sizeof form,"%s.ini",name); // Eine Variable für den Namen
    if(!dini_Exists(form))
    {
    dini_Create(form);
    }
    dini_IntSet(form,"Geld",GetPlayerMoney(playerid));

    Versuch dies mal :)

    Hi.
    Was genau geht denn nicht bzw. welche Fehlermeldung kommt denn?
    Wenn nicht,poste einmal den Code,damit wir es besser nachvollziehen bzw. beheben können, oder ist es das gewöhnliche GF ohne schwerwiegende Veränderungen an dieser Stelle?
    Hast du die Befehle "/invite" und "/uninvite" auch richtig geschrieben und als Leader ausgeführt?


    P.S.: Falscher Thread... gehört in die GF-Abteilung

    Waffen:
    Ich verstehe nicht genau dein "Problem".Wenn du Waffen meinst,die man aufnehmen kann,brauchst du PickUps >
    AddStaticPickup( 1242, 2, 1503.3359, 1432.3585, 10.1191 ); < (Beispiel ).
    Du kannst auch unter "OnPlayerSpawn" >GivePlayerWeapon(playerid, 26, 500);< machen.Damit wird beim Spawnen dem User eine Waffe gegeben.
    Oder bei >AddPlayerClass( 0, 1958.33, 1343.12, 15.36, 269.15, 26, 36, 28, 150, 0, 0 );< ( Letzen 6 Ziffern: Waffe1, Ammo1,Waffe2,Ammo2,Waffe3,Ammo3 ) die Waffen einstellen, die ein bestimmter Skin haben soll.


    Registersystem:
    Du musst in der "server.cfg" bei "filterscripts" den Namen des FilterScripts schreiben,
    z.B.: " filterscripts Registersystem ".Nachdem du dies so gespeichert hast und die .amx - Datei des FS´s in den Filterscript-Ordner gegeben hast,einfach server.exe starten und loslegen
    ;) .

    Ich habe es aus dem Kopf geschrieben,denn bei mir geht es auch nicht :( ?( 8| , doch bei einem Kollegen funktioniert es einbandfrei !!!
    Liegt wahrscheinlich an einer include,die ich (wir) nicht haben. Doch es geht theoretisch (bzw. praktisch mit der Include) zumindest :thumbup: