Beiträge von T4125Gamer

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
    Zitat

    Sowas sinnloses, warum alle Waffen abfragen?
    Einfach abfragen ob die Waffe größer als 0 ist.


    Weil wenn der Spieler doch eine bestimmte Waffe haben darf (z. B. Messer) dies dort einfach entfernt werden kann.

    Zitat von IPrototypeI

    katholischen Raum aus Prister die Kinder misshandeln( vergewaltigen)


    Naja, nicht jede Katholische Kirche ist so, und man kann auch nicht überall schauen das so etwas nicht passiert.


    Zitat von IPrototypeI

    Man möge hier nur mal die anderen Religionen ansehen das Christentum wozu du dich bekehrst ist auch der größte Schwachsinn


    Naja, Schwachsinn nicht. Wenn man sich etwas in der Bibel auskennt, dann stößt man auf einiges was in der Zeit auch schon geschehen ist.
    Wie du schon gesagt hast, man kann glauben was man will, aber die Religionen als Schwachsinn zu bezeichnen ist sicherlich nicht ok. Alle Religionen folgen einer höheren Macht. Man sieht es schon alleine daran, dass wenn Leute die ein Problem haben zu Gott beten, diese auch indirekt eine Antwort auf ihr Problem bekommen.

    Zitat von Sveni

    Jesus, unser Herr, hat mit allen Dingen etwas zu tun, mein Lieber.


    Ganz recht, heute vor vielen Jahren ist unser Herr, Jesus Christus, am Kreuz gestorben. Deshalb ist dies heute ein stiller Trauertag.


    Naja, es heißt ja drei Tage und drei Nächte sind vergangen bis zur Wiederauferstehung.
    Und irgendwie sind das ja nur zwei Nächte bis zum Sonntag. Also irgendwie kann das ja dann nicht stimmen...

    Dazu benutzt du GetPlayerWeapon.
    Da ein Timer hier nicht falsch angebracht ist, muss man dazu auch einen Public erstellen, der so aussehen kann:
    forward HatWaffe(playerid);
    public HatWaffe(playerid)
    {
    return 1;
    }
    Dort macht man dann die ganzen Abfragen rein.
    if(GetPlayerWeapon(playerid) == 1 || GetPlayerWeapon(playerid) == 2 || GetPlayerWeapon(playerid) == 3|| GetPlayerWeapon(playerid) == 4|| GetPlayerWeapon(playerid) == 5|| GetPlayerWeapon(playerid) == 6|| GetPlayerWeapon(playerid) == 7|| GetPlayerWeapon(playerid) == 8|| GetPlayerWeapon(playerid) == 9 || GetPlayerWeapon(playerid) == 10 ){return 1;}
    else if(GetPlayerWeapon(playerid) == 11 || GetPlayerWeapon(playerid) == 12 || GetPlayerWeapon(playerid) == 13 || GetPlayerWeapon(playerid) == 14 || GetPlayerWeapon(playerid) == 15 || GetPlayerWeapon(playerid) == 16 || GetPlayerWeapon(playerid) == 17 || GetPlayerWeapon(playerid) == 18 || GetPlayerWeapon(playerid) == 19 ){return 1;}
    else if(GetPlayerWeapon(playerid) == 20 ||GetPlayerWeapon(playerid) == 21 ||GetPlayerWeapon(playerid) == 22 ||GetPlayerWeapon(playerid) == 23 ||GetPlayerWeapon(playerid) == 24 ||GetPlayerWeapon(playerid) == 25 ||GetPlayerWeapon(playerid) == 26 ||GetPlayerWeapon(playerid) == 27 ||GetPlayerWeapon(playerid) == 28 ||GetPlayerWeapon(playerid) == 29 ){return 1;}
    else if(GetPlayerWeapon(playerid) == 30 ||GetPlayerWeapon(playerid) == 31 ||GetPlayerWeapon(playerid) == 32 ||GetPlayerWeapon(playerid) == 33||GetPlayerWeapon(playerid) == 34 ||GetPlayerWeapon(playerid) == 35 ||GetPlayerWeapon(playerid) == 36 ||GetPlayerWeapon(playerid) == 37 ||GetPlayerWeapon(playerid) == 38 ||GetPlayerWeapon(playerid) == 39){return 1;}
    else if(GetPlayerWeapon(playerid) == 40 ||GetPlayerWeapon(playerid) == 41 ||GetPlayerWeapon(playerid) == 42 ||GetPlayerWeapon(playerid) == 43 ||GetPlayerWeapon(playerid) == 44 ||GetPlayerWeapon(playerid) == 45 ||GetPlayerWeapon(playerid) == 46){return 1;}
    Der Public sieht dann so aus:
    public HatWaffe(playerid)
    {
    if(GetPlayerWeapon(playerid) == 1 || GetPlayerWeapon(playerid) == 2 || GetPlayerWeapon(playerid) == 3|| GetPlayerWeapon(playerid) == 4|| GetPlayerWeapon(playerid) == 5|| GetPlayerWeapon(playerid) == 6|| GetPlayerWeapon(playerid) == 7|| GetPlayerWeapon(playerid) == 8|| GetPlayerWeapon(playerid) == 9 || GetPlayerWeapon(playerid) == 10 ||){ Ban(playerid);return 1;}
    else if(GetPlayerWeapon(playerid) == 11 || GetPlayerWeapon(playerid) == 12 || GetPlayerWeapon(playerid) == 13 || GetPlayerWeapon(playerid) == 14 || GetPlayerWeapon(playerid) == 15 || GetPlayerWeapon(playerid) == 16 || GetPlayerWeapon(playerid) == 17 || GetPlayerWeapon(playerid) == 18 || GetPlayerWeapon(playerid) == 19 ||){ Ban(playerid);return 1;}
    else if(GetPlayerWeapon(playerid) == 20 ||GetPlayerWeapon(playerid) == 21 ||GetPlayerWeapon(playerid) == 22 ||GetPlayerWeapon(playerid) == 23 ||GetPlayerWeapon(playerid) == 24 ||GetPlayerWeapon(playerid) == 25 ||GetPlayerWeapon(playerid) == 26 ||GetPlayerWeapon(playerid) == 27 ||GetPlayerWeapon(playerid) == 28 ||GetPlayerWeapon(playerid) == 29 ||){ Ban(playerid);return 1;}
    else if(GetPlayerWeapon(playerid) == 30 ||GetPlayerWeapon(playerid) == 31 ||GetPlayerWeapon(playerid) == 32 ||GetPlayerWeapon(playerid) == 33||GetPlayerWeapon(playerid) == 34 ||GetPlayerWeapon(playerid) == 35 ||GetPlayerWeapon(playerid) == 36 ||GetPlayerWeapon(playerid) == 37 ||GetPlayerWeapon(playerid) == 38 ||GetPlayerWeapon(playerid) == 39||){ Ban(playerid);return 1;}
    else if(GetPlayerWeapon(playerid) == 40 ||GetPlayerWeapon(playerid) == 41 ||GetPlayerWeapon(playerid) == 42 ||GetPlayerWeapon(playerid) == 43 ||GetPlayerWeapon(playerid) == 44 ||GetPlayerWeapon(playerid) == 45 ||GetPlayerWeapon(playerid) == 46){ Ban(playerid); return 1;}
    return 0;
    }
    Nun zum Timer, den machst du unter OnPlayerConnect. Aber zuerst eine Level abfrage, da sonst jeder Spieler überprüft wird, und es soll ja nur der Spieler der unter Level 3 ist überprüft werden.
    if(GetPlayerScore(playerid) < 3)
    {


    }
    Genauso kann man es auch mit SpielerInfo[playerid][Level] machen. Aber so geht es auch. Wenn das nun gemacht ist wird ein Timer erstellt.
    SetTimerEx("HatWaffe",Zeit in Millisekunden,true = wiederholen false = nicht wiederholen,"i",playerid);
    Da hier ja der Timer wiederholt werden soll, wird er auf true oder 1 gesetzt, da es das selbe ist. 30 Sekunden sind 30000 Millisekunden.
    Das ganze sieht dann so aus:
    if(GetPlayerScore(playerid) < 3)
    {
    SetTimerEx("HatWaffe",30000,true,"i",playerid);
    }
    MfG: T4125Gamer

    Nun gut,
    Fangen wir erstmal mit der Grundstrucktur an die so aussehen kann:
    if(strcmp(cmdtext,"/undercover",true) == 0)
    {
    return 1;
    }
    Als erstes müssen wir die Leader bzw. die Fraktionsabfrage vornehmen, denn es soll ja nicht jeder diesen Befehl nutzen können.
    Das macht man mit einer if Abfrage:
    if(SpielerInfo[playerid][Leader] == Hitman Zahl || SpielerInfo[playerid][Member] == Hitman Zahl)
    {


    }
    Jetzt ist gegeben das nur die Member und der Leader von den Hitman diesen Befehl nutzen können. Jetzt kommt das mit dem ShowPlayerNameTagForPlayer. Das sorgt dafür das der Name eines Spielers nicht angezeigt wird, bzw. verschwindet. Aber es soll ja für jeden nicht angezeigt werden, deswegen wird eine Schleife die durch jeden Spieler geht gemacht.
    for(new i = 0; i<MAX_PLAYERS; i++)
    {


    }
    Wofür braucht man die Schleife? Die benötigt man für die showplayerid bei ShowPlayerNameTagForPlayer. Nun kann man ShowPlayerNameTagForPlayer einfügen. Der Befehl sieht dann so aus:
    if(strcmp(cmdtext,"/undercover",true) == 0)
    {
    if(SpielerInfo[playerid][Leader] == Hitman Zahl || SpielerInfo[playerid][Member] == Hitman Zahl)
    {
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    ShowPlayerNameTagForPlayer(playerid,i,0) //0 = Namen Hiden 1 = Namen Zeigen
    }
    }
    return 1;
    }
    Nun wird der Name des Spielers, der /undercover eingibt unsichtbar für jeden Spieler auf der Map.
    Bei wiederholten Befehlseingabe soll der Name ja wieder angezeigt werden. Das geht so, man erstellt eine neue Variable z. B. so eine:
    new HatMaske[MAX_PLAYERS];
    Nun kann man HatMaske auf 1 setzten wenn man die Maske aufsetzt.
    HatMaske[playerid] = 1;
    Nun muss man mit einer if Abfrage erfragen ob die Maske bzw. der Nametag an oder aus ist. Das macht man so:
    if(HatMaske[playerid] == 0)
    {
    //Wenn die Maske nicht auf ist
    }
    else if(HatMaske[playerid] == 1)
    {
    //Wenn die Maske auf ist
    }
    Der Befehl sieht dann so aus:
    if(strcmp(cmdtext,"/undercover",true) == 0)
    {
    if(SpielerInfo[playerid][Leader] == Hitman Zahl || SpielerInfo[playerid][Member] == Hitman Zahl)
    {
    if(HatMaske[playerid] == 0)
    {
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    ShowPlayerNameTagForPlayer(playerid,i,0)
    }
    HatMaske[playerid] = 1;
    }
    else if(HatMaske[playerid] == 1)
    {
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    ShowPlayerNameTagForPlayer(playerid,i,1)
    }
    HatMaske[playerid] = 0;
    }
    }
    return 1;
    }
    Nun zu dem Text, wenn jemand etwas schreibt aber die Maske auf hat. Das macht man unter OnPlayerText.
    if(HatMaske[playerid] == 1)
    {
    new string[128];
    format(string, sizeof(string), "- sagt: %s"text);
    //Dann halt deine Sache zum Text verschicken
    }
    Das mit der Skinauswahl kannst du ja noch selbst ergänzen, aber so geht das mit dem Namenstag hiden.
    MfG: T4125Gamer

    Als erstes machst du wieder einen Command der so aussehen kann:


    ocmd:geld(playerid,params[])
    {
    return 1;
    }
    Dann ist erstmal die Frage wie man den Geldstatus, also wie viel der Spieler besitzt erfragen kann. Das kommt gleich. Zuerst kommen noch die nötigen Defines.
    new pID;
    Wenn ein Text angezeigt werden soll kannst du noch new textA[100], textB[100]; machen, und mit format die nötigen Informationen einspeisen.
    Nun wird folgendes gemacht:
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,FARBE,"Benutze: /geld [id]"); //sollte klar sein
    Jetzt zu der Frage wie man das Geld erfragen kann. Das geht mit GetPlayerMoney, und es wird so angewendet:
    GetPlayerMoney(playerid);
    Jedoch wollen wir ja nicht das Geld von sich selber erfragen, sondern das von dem Spieler wo man wählt. Dazu playerid, in pID ändern.
    GetPlayerMoney(pID);
    Nun ist der Geldstatus abgefragt, doch man kann ihn nicht so anwenden wie man es gerne haben möchte. Also das dass Geld von dem Spieler abgezogen wird und dem anderem gegeben wird.
    Dazu wird jetzt das gemacht:
    new Geld = GetPlayerMoney(pID);
    Jetzt liegt auf der Variable Geld das Geld wo von dem Spieler ausgelesen wird. Jetzt kann man auch mit GivePlayerMoney arbeiten. Das sieht jetzt so aus:
    GivePlayerMoney(playerid,Geld);
    Jetzt erhälst du das gesamte Geld von dem anderem Spieler. Doch bei ihn ist das Geld auch noch vorhanden. Das macht man mit ResetPlayerMoney weg.
    ResetPlayerMoney(pID);
    Nun zu der IsPlayerInRangeOfPoint Abfrage die geht so:
    new Float:x, Float:y, Float:z; //Koordinaten sind Floats und werden deswegen so erstellt.
    GetPlayerPos(pID,x,y,z); //Hier werden die Koordinanten herausgefunden
    So nun ist man im Besitzt der Koordinaten. Jetzt wird die IsPlayerInRangeOfPoint Abfrage erstellt:
    if(IsPlayerInRangeOfPoint(playerid,2.0/*distanz anpassen*/,x,y,z))
    {


    }
    Nun wird erfragt ob der Spieler den man auswählt auch an der Position des anderen Spieler ist.
    Alles in einem sieht der Command dann so aus:
    ocmd:geld(playerid,params[])
    {
    new pID, Float:x,Float:y,Float:z;
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,WEISS,"Benutze: /geld [id]");
    new Geld = GetPlayerMoney(pID);
    GetPlayerPos(pID,x,y,z);
    if(IsPlayerInRangeOfPoint(playerid,2.0/*distanz anpassen*/,x,y,z))
    {
    GivePlayerMoney(playerid,Geld);
    ResetPlayerMoney(pID);
    }
    return 1;
    }


    MfG: T4125Gamer

    du musst das auch in der server.cfg ergänzen.
    Falls eine Zeile mit plugins da ist, dann dahinter einfach schreiben.
    Falls keine Zeile mit plugins da ist, einfach ganz unten ergänzen.


    @Kawasaki:
    ocmd:Serverrestart(playerid,params[])
    {
    SetTimer("Der Server wird in 1 Minute neugestartet!",60000,false);
    SendRconCommand("gmx");
    return 1;
    }
    So wendet man doch keinen Timer an.
    SetTimer("functionsname",zeit in millisekunden,wiederholeung ja/nein);
    Um den Funktionsnamen nutzen zu können benötigt man einen Public. Den hast du auch erstellt.
    forward Serverrestart
    public Serverrestart
    {
    SendRconCommand("gmx);
    return 1;
    }
    Jedoch etwas falsch. Alles zusammen kommt das so hin.


    forward Serverrestart();
    public Serverrestart()
    {
    SendRconCommand("gmx");
    return 1;
    }
    ocmd:Serverrestart(playerid,params[])
    {
    SetTimer("Serverrestart ",60000,false);
    SendClientMessageToAll(FARBE,"Der Server restartet in einer Minute");
    return 1;
    }


    @Robbe:
    http://forum.sa-mp.com/showthread.php?t=249226
    Downloaden und als Plugin laden lassen. Dann Serverlog zeigen. Aber ich denke nicht das dies hierher gehört