Beiträge von CaptainKevin

    Du weist aber, dass du bei Kick oder Ban ein Adminlevel unter 2 haben musst?
    Ansonsten musst du die Abfragen so macheN:
    if(!PlayerInfo[playerid][pAdminlevel] >= 2)return SendClientMessage(playerid .....

    Glaube ich :D Ich arbeite bei mir selber anders :)

    Hallo, Community!


    Vorab möchte ich sagen, dass dieses Masken System für jedes Script angepasst werden muss!
    Für Support des Maskensystems bin ich nicht zuständig!


    Man könnte dieses Maskensystem für einen Reallife Server gebrauchen oder für jede andere Art des versteckten Namens.


    Ich werde warscheinlich nicht mehr in diesen Thread gehen, da ich vorerst inaktiv werden.
    Ich bitte um Verständniss. Erklärungen stehen hinter den Befehlen


    Fangen wir an:
    //Als aller erstes brauchen wir eine Variable für jeden Spieler, damit die Maske zum späteren Zeitpunkt keine Probleme hat.
    //Diese Variable erstellen wir mit:
    new Maske[MAX_PLAYERS];



    //Beim nächsten Schritt, setzen wir die Maske bei "OnPlayerConnect" und "OnPlayerSpawn" auf 0, damit die Maske beim Connecten & beim
    //Spawnen nicht benutzt wird.
    //Dies machen wir mit folgendem Text:
    Maske[playerid] = 0;



    //Als nächtes müssen wir dafür sorgen, dass bei der Maske Leben abgezogen wird, sobald man verletzt wird.
    //Dazu benutze ich OnPlayerUpdate
    //Wer diese Funktion zu aufwändig findet, kann sich auch einen Timer erstellen! Dazu folgt keine Anleitung!
    public OnPlayerUpdate(playerid)
    {
    if(Maske[playerid] == 1)
    {
    new string[128], Float:hp, Float:am; //Wie brauchen diese Zeile, damit das HP ausgegeben und abgefragt werden kann!
    GetPlayerHealth(playerid,hp);//Hier fragen wir das Leben ab
    GetPlayerArmour(playerid,am);//Hier wird die Rüstung abgefragt
    floatround(hp,floatround_tozero);//Das ganze wird gerundet
    floatround(am,floatround_tozero);//Erneut gerundet
    format(string,sizeof(string),"Unbekannter\nL:%.0f R:%.0f",hp,am);//Der Name undbekannt wird gesetzt, Leben & Rüstung wird eingesetzt
    SetPlayerChatBubble(playerid,string,rot,40.0,10000);//Das ganze steht über dem Namen
    }
    return 1;
    }



    //Gehen wir zu OnPlayerStreamIn
    //Sobald ein Spieler bei einem anderen Spieler erscheint, werden ihm die Rüstung, die Maske, das Leben und der Name erneut gesetzt
    if(Maske[forplayerid]==1)
    {
    SetPlayerAttachedObject(forplayerid, 1, 19036, 2, 0.107, 0.035, 0.0, 90, 90, 0);//Object wird auf den Character gesetzt
    ShowPlayerNameTagForPlayer(playerid,forplayerid,false);//Der Name verschwindet
    }



    //Der eigentliche Befehl:
    ocmd:maske(playerid,params[])//Das, was eingegeben wird
    {
    if(SpielerInfo[playerid][pTeam] != 2)return SendClientMessage(playerid,rot,"Fehler: Du bist nicht bei den Terroristen.");//Die Abfrage der Fraktion
    if(Maske[playerid]==1)//wenn die Maske schon auf dem Gesicht war
    {
    GameTextForPlayer(playerid,"~r~Du setzt deine Maske ab.",100,0);//Eine Nachricht an den Spieler
    Maske[playerid] = 0;//Variable wird auf "Abgesetzt" gestellt
    RemovePlayerAttachedObject(playerid, 1);//Die Maske wird vom Gesicht genommen
    for(new i=0; i<MAX_PLAYERS; i++)//Schleife durch alle Spieler
    {
    ShowPlayerNameTagForPlayer(i,playerid,true);//Name wird wieder gezeigt
    }
    }
    else if(Maske[playerid]==0)//Wenn er keine Maske auf hatte
    {
    new Float:health, Float:armour, string[128];//Leben & Rüstung wird abgefragt
    GetPlayerHealth(playerid,health);//Lebensabfrage
    GetPlayerArmour(playerid,armour);//Rüstungsabfrage
    floatround(health,floatround_tozero);//Runden
    floatround(armour,floatround_tozero);//Runden
    format(string,128,"Unbekannter\nL:%.0f R:%.0f",health,armour);//Leben & Rüstung wird formatiert
    SetPlayerChatBubble(playerid,string,rot,40.0,10000);//Leben wird über den Kopf gesetzt
    GameTextForPlayer(playerid,"~r~Du setzt deine Maske auf.",100,0);//Nachricht an den Spieler
    Maske[playerid] = 1;//Maske wird auf "tragen" gesetzt
    SetPlayerAttachedObject(playerid, 1, 19036, 2, 0.107, 0.035, 0.0, 90, 90, 0);//Objekt erscheint
    for(new i=0; i<MAX_PLAYERS; i++)//Schleife durch alle Spieler
    {
    ShowPlayerNameTagForPlayer(i,playerid,false);//Name verschwindet
    }
    }
    return 1;
    }

    Für den Chat:
    //OnPlayerText....
    if(Maske[playerid] == 1)
    {
    new string[128];
    format(string,128,"Unbekannter sagt: %s",text);
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid,x,y,z);
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && IsPlayerInRangeOfPoint(i,10,X,Y,Z))
    {
    SendClientMessage(i,Farbe,string);
    }
    }
    }

    Ansonsten schau mal unter: OnPlayerInteriorChange

    In der Datei sieht es folgender maßen aus:


    Und dabei fällt mir gerade auf, dass die Z Koordinate garnicht geschrieben wird....
    woran könnte es liegen? Ich meine, ich lese sie doch aus und speichere sie?
    Codes siehe 1. Beitrag


    //Edit: Nach dem ich eine neue erstellt habe, wird nun auch die Z achse genommen.
    Ich habe folgenden Befehl editiert:
    ocmd:matseinzahlen(playerid,params[])
    {
    new mat;
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid,x,y,z);
    if(sscanf(params,"d",mat))return SendClientMessage(playerid,BLAU,"Info: Benutze /matseinzahlen (Anzahl)");
    for(new i=0; i<MAX_FBANK; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,5,Fbank[i][fbankx],Fbank[i][fbanky],Fbank[i][fbankz]))
    {
    SetPVarInt(playerid,"Mats",GetPVarInt(playerid,"Mats")-mat);
    //Fbank[i][Mats] += mat;
    Fbank[i][Mats] += mat;
    SendClientMessage(playerid,GELB,"Du hast erfolgreich Mats eingezahlt.");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,ROT,"Zu weit entfernt!");
    return 1;
    }
    }
    return 1;
    }

    Es kommt dauerhaft die Meldung, dass ich zu weit entfernt bin.
    Heißt, dass etwas mit den Koordinaten nicht stimmt.

    Das kann aber garnicht sein.
    Denn wenn ich sie speichere müssten die Coordinaten ja trotzdem in der Datei stehen.
    Somit kann es nicht daran liegen :)


    //Edit: Ich verbessere mich: Du hattest recht. Daten bleiben nun in der Datenbank stehen.
    Aber: warum kann ich trotzdem noch keine Mats einzahlen?
    Als Beispiel?

    Wenn sie gespeichert werden.
    Wenn ich sie erstelle, stehen dort noch immer die Positionen des jetzigen Standes drinne.
    Aber wenn ich Mats einzahlen möchte(fragt ab, wo die Fbank steht), bekomme ich nicht einmal die Nachricht, dass sie eingezahlt worden sind.

    Ich hab zwar kein BO2, wollte aber nicht extra ein 2. Thema auf machen.
    Hat wer BF3 auf der PS³ und will mit mir zocken?
    Aber nicht wundern: Das Spiel ist heute angekommen und ich habe noch kein Multiplayer gespielt.
    Bin bestimmt voll schlecht. BO und Mw3 KD von 1,5


    Einfach eine PN schreiben.

    Ohne Erfolg. Hat überhaupt nichts gebracht.

    ocmd:deletecars(playerid,params[])
    {
    if(!hatPlayerAdmin(playerid,3))return SendClientMessage(playerid,ROT,"Info: Du hast nicht das passende Adminlevel.");
    new pID, string[128], dat[64], dat2[64];
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,BLAU,"Info: Benutze /deletecars (Spieler/ID)");
    format(dat,64,"/Autos/%s_Auto_0",SName(pID));
    format(dat2,64,"/Autos/%s_Auto_1",SName(pID));
    format(string,128,"[AdmCmd]%s hat deine Fahrzeuge gelöscht!",SName(playerid));
    SendClientMessage(pID,ROT,string);
    SendClientMessage(playerid,ROT,"Du hast dem ausgewähltem Spieler die Fahrzeuge gelöscht.");
    fremove(dat);
    fremove(dat2);
    return 1;
    }


    //Erstellt:
    dini_Create(dat); // Als Beispiel, wie sie erstellt werden


    ocmd:deletecars(playerid,params[])
    {
    if(!hatPlayerAdmin(playerid,3))return SendClientMessage(playerid,ROT,"Info: Du hast nicht das passende Adminlevel.");
    new pID, string[128], dat[64], dat2[64];
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,BLAU,"Info: Benutze /deletecars (Spieler/ID)");
    format(dat,64,"/Autos/%s_Auto_0",SName(pID));
    format(dat2,64,"/Autos/%s_Auto_1",SName(pID));
    format(string,128,"[AdmCmd]%s hat deine Fahrzeuge gelöscht!",SName(playerid));
    SendClientMessage(pID,ROT,string);
    SendClientMessage(playerid,ROT,"Du hast dem ausgewähltem Spieler die Fahrzeuge gelöscht.");
    dini_Remove(dat);
    dini_Remove(dat2);
    return 1;
    }

    -Ordner ist unter Scriptfiles gespeichert


    Mein Problem ist, dass die Dateien nicht gelöscht werden.
    Sie sind weiterhin vorhanden.