Beiträge von Buschmensch

    Was hast'n du da gemacht?

    ocmd:fesseln(playerid,params[])
    {
    if(isPlayerInFrakt(playerid,3) || isPlayerInFrakt(playerid,4) || isPlayerInFrakt(playerid,5) || isPlayerInFrakt(playerid,6) || isPlayerInFrakt(playerid,7) || isPlayerInFrakt(playerid,8))
    {
    if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER)return SendClientMessage(playerid,rot,"Du musst in einem Auto/Motorrad sitzen!");
    new pID, string[128];
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,hellblau,"Benutzung: /fesseln [ID]");
    if(IsPlayerInAnyVehicle(pID))return SendClientMessage(playerid,rot,"Der vorgegebener Spieler sitzt nicht in deinem Auto.");
    TogglePlayerControllable(pID,0);
    format(string,sizeof(string),"Du hast %s gefesselt.",SpielerName(pID));
    SendClientMessage(playerid,weiß,string);
    format(string,sizeof(string),"Du wurdest von %s gefesselt.",SpielerName(playerid));
    SendClientMessage(pID,weiß,string);
    }
    else
    {
    SendClientMessage(playerid,rot,"Du bist kein Mitglied einer Mafia/Gang.");
    }
    return 1;
    }


    Musst du halt an deinem Script anpassen.


    // Edit: Code verbessert


    if(strcmp(cmdtext,"/o",true)==0)
    {
    if(IsPlayerConnected(playerid))
    {
    new nachricht[128], sender, string[128];
    if(sscanf(params,"s",nachricht))return SendClientMessage(playerid,0x0073FFFF,"Benutzung: /o [Text]");
    if(isPlayerAnAdmin(playerid,1)) format(string,sizeof(string),"(( *%d Admin %s : %s ))",GetPVarInt(playerid,"Adminlevel"),string,nachricht);
    else format(string,sizeof(string),"(( %s : %s ))",sender,nachricht);
    SendClientMessageToAll(0xFEFEFEFF,string);
    }
    return 1;
    }


    So geht's auf die einfache Variante ;)

    Also so ganz verstehe ich deine Anforderung jetzt nicht, du meinst das manchmal einige Cheater kommen und einen Befehl eingeben das alle Autos gelöscht werden?
    Hast du das SoL Script?

    Genau, schau dir die Grundlagen Tutorials von Nemesus und MrMonat an, so hab ichs auch gelernt.
    Scripten ist für den ein oder anderen am Anfang schwierig, aber wenn man es richtig gelernt hat kann man das im Schlaf.


    Mfg 8)

    Hallo Leute, und Herzlich Willkommen zu meinem bis jetzt 4. Tutorial im SA:MP Scripting !


    In diesem Tutorial zeige ich euch, wie ihr Kauf Dialoge erstellen könnt, z. B. im Ammu Nation, dass man dort per Dialog Waffen kaufen kann. Und so fangen wir An :
    Wir gehen nach oben zu den ganzen #define's, falls ihr keine Dialoge habt macht ihr das so :
    #define DIALOG_WAFFENKAUF 1
    Aber falls ihr schon Dialoge habt, müsst ihr die Anzahl bestimmen, also wenn ihr jetzt einen z. B. DIALOG_REGISTER 1 habt, müsst ihr jetzt einen DIALOG_WAFFENKAUF 2 machen. Wenn dies geschafft ist müssen wir um überhaupt irgendwie in den Ammu Nation zu kommen, ein Pickup erstellen mit dem wir rein & wieder raus gehen können. Wir erstellen jetzt bei den ganzen globalen Variablen
    new ammuenter;
    und
    new ammuexit;
    Jetzt gehen wir entweder in euren Homeserver oder auf samp_debug, ist egal, und saven und sie Positionen vom Eingang, und wo wir DRAUßEN spawnen wollen. Also wir gehen etwas weiter weg vom Eingang und machen dort eine "Draußen-Spawn-Pos" ( mit /save saved man ). Wenn dies geschafft ist gehen wir unter Dokumente -> GTA San Andreas User Files -> SAMP -> savedpositions. Und dort müssten dann eure gesaveden Positionen sein. Ihr kopiert euch die X,Y,Z Koordinate. Hier ein Beispiel ( Was in den Saved Positions sein sollte ) : AddPlayerClass(0,1369.0000,-1279.5754,13.5469,176.8590,0,0,0,0,0,0)
    Das blaue sind die X,Y,Z Koordinaten, die kopiert ihr euch raus und macht folgendes unter OnGameModeInit
    /*BEISPIEL*/ammuenter=CreatePickup(1559,1,1369.0000,-1279.5754,13.5469);
    Die 1559 ist für die ID des Pickups, alle Pickup ID's findet ihr hier
    Die 1 steht für den Spawn-Typ des Pickups, diese findet ihr hier
    1369.0000,-1279.5754,13.5469 sind wie gesagt, die X,Y,Z Koordinaten.


    Jetzt wird aber noch nichts passieren, denn wir müssen definieren, was passieren sollte wenn wir in dieses Pickup rein laufen, dazu gehen wir unter OnPlayerPickupPickup und machen folgendes

    if(pickupid==ammuenter)
    {
    SetPlayerPos(playerid,286.148986, -40.644397,1001.515625);
    SetPlayerInterior(playerid,1);
    GameTextForPlayer(playerid,"~g~Du hast den Ammu Nation betreten.",3000,3);


    }

    Mit if(pickupid==... wird abgefragt ob das Pickup das Pickup ist was wir oben definiert haben
    SetPlayerPos(playerid,.... erklärt sich von selbst. Die Koordinaten findet ihr hier ( von den Interiors )
    SetPlayerInterior(playerid,0); bedeutet, falls der Spieler in einen anderen Interior gesetzt/geportet wird, das dann die Interior ID auch dem Interior entspricht. Die Interior ID's sind ebenfalls auf der Seite, wo auch die Interior Koordinaten sind.
    GameTextForPlayer ist ein GameText der für den Spieler angezeigt wird, Pawno rechnet in Millisekunden also 3000 Millisekunden = 3 Sekunden, die 3 steht für die Art der Schrift, die findet ihr hier


    Jetzt können wir das Script compilieren, es wird wahrscheinlich ein Warning kommen, das beinhaltet, dass wir ammuexit noch nicht benutzt haben. Das könnt ihr drin lassen. Nun connected ihr auf euren Homeserver und geht nun zum Pickup, und ihr werden in einen Ammu Nation geportet. Jetzt geht ihr auf irgend einen Platz im Ammu Nation wo ihr den Buypoint für den Dialog haben wollt, und den Ausgang ( ammuexit ). Wenn ihr die Positionen gesaved habt, gehen wir wieder ins Script und machen mit dem Exit Pickup wieder genau das gleiche wie mit dem Enter Pickup, bloß die Koordinaten ändern. Das müsst ihr alleine machen ;).


    Jetzt können wir auch schon zum wesentlichen rüber.
    Den Dialog.
    Jetzt müssen wir bei den globalen Variablen wieder eine Variable definieren und die nennen wir mal new ammubuypoint;
    Wenn dies geschafft ist, erstellen wir das Kauf Pickup wieder mit ammubuypoint=CreatePickup(1559,1,X,Y,Z);
    Jetzt müssen wir wieder unter OnPlayerPickupPickup und machen

    if(pickupid==ammubuypoint)
    {
    ShowPlayerDialog(playerid,DIALOG_WAFFENKAUF,DIALOG_STYLE_LIST,"Ammu Nation Shop","Desert Eagle\nM4\nMP 5\nTec 9","Kaufen","Abbruch");
    }

    ShowPlayerDialog bedeutet, dass wir einem Spieler einen Dialog vorzeigen.
    DIALOG_WAFFENKAUF ist der Dialog den wir oben definiert haben
    DIALOG_STYLE_LIST ist der Style des Dialoges
    "Ammu Nation Shop" ist die Überschrift
    "Desert Eagle\nM4\nMP 5\nTec 9","Kaufen" ist das, was in der Liste drin sein sollte; ACHTUNG Wenn ihr einen Zeilen Umbruch machen wollt müsst ihr \n machen! kein /n!!
    "Kaufen","Abbruch" = Kaufen ist der 1. Button und Abbruch ist der 2. Button


    Nun, damit der Dialog überhaupt angezeigt wird, und man auch was bekommt gehen wir unter OnDialogResponse und machen dort folgendes

    if(dialogid==DIALOG_WAFFENKAUF)
    {
    if(response==1)
    {
    switch(listitem)
    {
    case 0 : // Wenn er Desert Eagle nimmt
    {
    GivePlayerWeapon(playerid,24,100);
    GivePlayerMoney(playerid,-1000);
    SendClientMessage(playerid,FARBE,"Du hast dir eine Desert Eagle für 1000$ gekauft.");
    }
    case 2 : //Wenn er die M4 nimmt
    {
    GivePlayerWeapon(playerid,31,100);
    GivePlayerMoney(playerid,-5000);
    SendClientMessage(playerid,FARBE,"Du hast dir eine M4 für 5000$ gekauft.");
    }
    case 3 : // wenn er die MP5 nimmt
    {
    GivePlayerWeapon(playerid,29,100);
    GivePlayerMoney(playerid,-2500);
    SendClientMessage(playerid,FARBE,"Du hast dir eine MP5 für 2500$ gekauft.");
    }
    case 4 : // wenn er die tec 9 nimmt
    {
    GivePlayerWeapon(playerid,32,100);
    GivePlayerMoney(playerid,-3000);
    SendClientMessage(playerid,FARBE,"Du hast dir eine Tec9 für 3000$ gekauft.");
    }
    }
    }
    return 1;
    }

    if(response==1) bedeutet, wenn wir auf kaufen drücken, soll ja was passieren.
    switch(listitem) ist die beste Variante, mehrere Items in einen Dialog zu nehmen.
    case 0 - case 4 wird im Code erklärt.


    Und so einfach geht das auch mit den Dialogen, es kann sein das ich einige Fehler gemacht habe, da ich grade sehr schläfrig bin und die ganze Nacht Battlefield 3 gezockt hab. Bitte klärt mich sofort auf. Ich hoffe euch hat es gefallen ;)


    Mit Freundlichen Grüßen
    __________________________________________


    GoldHamster


    //Edit : Schrift verbessert
    // Edit: Schrift verbessert

    Hallo Community,
    ich habe da eine Frage, und zwar wie mache ich es das ein Admin, der gerade On Duty ist, bei dem Befehl "/admins" angezeigt wird?


    Bin gerade so weit.

    if(strcmp(cmd,"/aduty",true) ==0)
    {
    if(PlayerInfo[playerid][pAdmin] >= 1)
    {
    format(string,sizeof(string),"Admin %s ist nun als Admin On Duty! Er ist Lila markiert.",sendername);
    SendClientMessageToAll(0x23FF00FF,string);
    SetPlayerColor(playerid,0xFF00F5FF);
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Du bist nicht befugt.!");
    }
    return 1;
    }



    if (strcmp(cmd, "/admins", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    SendClientMessage(playerid, COLOR_GOLD, "~~~~~~Administratoren~~~~~~");
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(PlayerInfo[i][pAdmin] == 1337)
    {
    GetPlayerName(i, sendername, sizeof(sendername));
    format(string, 256, "Administrator: %s ", sendername);
    SendClientMessage(playerid, COLOR_RED, string);
    }
    if(PlayerInfo[i][pAdmin] == 4)
    {
    GetPlayerName(i, sendername, sizeof(sendername));
    format(string, 256, "Supporter: %s ", sendername);
    SendClientMessage(playerid, COLOR_LIGHTGREEN, string);
    }
    if(PlayerInfo[i][pAdmin] == 3)
    {
    GetPlayerName(i, sendername, sizeof(sendername));
    format(string, 256, "Supporter: %s ", sendername);
    SendClientMessage(playerid, COLOR_LIGHTGREEN, string);
    }
    if(PlayerInfo[i][pAdmin] == 2)
    {
    GetPlayerName(i, sendername, sizeof(sendername));
    format(string, 256, "Moderator: %s ", sendername);
    SendClientMessage(playerid, COLOR_GREEN, string);
    }
    if(PlayerInfo[i][pAdmin] == 1)
    {
    GetPlayerName(i, sendername, sizeof(sendername));
    format(string, 256, "Moderator: %s ", sendername);
    SendClientMessage(playerid, COLOR_GREEN, string);
    }
    if(PlayerInfo[i][pSupporter] >= 1)
    {
    GetPlayerName(i, sendername, sizeof(sendername));
    format(string, 256, "Supporter: %s ", sendername);
    SendClientMessage(playerid, COLOR_GREEN, string);
    }
    }
    }
    }
    return 1;
    }


    Hoffe jemand kann mir weiter helfen. Mfg


    // Edit : Erledigt!
    /close