Beiträge von coVer

    Kommt in den Scripting - Bereich.



    new Float:x, Float:y, Float:z;
    GetVehiclePos(407,Float:x,Float:y,Float:z);
    if(IsPlayerInRangeOfPoint(playerid,10.0,Float:x,Float:y,Float:z))
    {
    ShowPlayerDialog(playerid,dialogname,style,blablabla);
    return 1;
    }
    return 1;




    ich weiß ned ob dass so schwer war...


    Mit freundlichem Gruß,


    coVer

    Also hier mal die Stocks:



    //Spieler Speichern
    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name);
    if(dini_Exists(Spielerdatei))
    {
    dini_IntSet(Spielerdatei,"Adminlevel",sSpieler[playerid][Adminlevel]);
    }
    }
    return 1;
    }






    Dann beim Login diesen Stock:



    stock LoadAccount(playerid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name);
    if(dini_Exists(Spielerdatei))
    {
    sSpieler[playerid][Adminlevel] = dini_Int(Spielerdatei,"Adminlevel");
    }
    SetPVarInt(playerid,"loggedin",1);
    SpawnPlayer(playerid);
    return 1;
    }



    und registrieren:



    stock Register(playerid,key[])
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name);
    dini_Create(Spielerdatei);
    dini_Set(Spielerdatei,"Passwort",key);
    dini_IntSet(Spielerdatei,"Adminlevel",0);
    SpawnPlayer(playerid);
    return 1;
    }



    Das "SpielerRegistrieren", natürlich beim ersten Connect auf dem Server.


    SpielerLaden bei jedem Login bzw. OnplayerConnect,


    und zu guter letzt, SpielerSpeichern bei OnPlayerDisconnect, so lädt es die Spielerdateien.


    MfG


    ocmd:ban (playerid,params[])
    {
    new MSG[145],Grund[100],TargetID;
    if(!isPlayerAdmin(playerid,2))return SendClientMessage(playerid, FARBE_ROT, "Error: Du bist kein Admin2!");
    if(sscanf(params,"us",TargetID,Grund))return SendClientMessage(playerid, FARBE_GRAU, "Fehler: /ban [Username/ID] [Grund]");
    format(MSG,sizeof(MSG),"Server: %s wurde von Administrator %s gebannt, Grund: %s", SpielerName(TargetID),SpielerName(playerid), Grund);
    SendClientMessageToAll(FARBE_ROT,MSG);
    Ban(TargetID);
    return 1;
    }



    Bitteschön.

    Schick mal den Log.


    Probiers mal so:




    ocmd:makeadmin(playerid,params[])
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    if(GetPVarInt(playerid,"Admin") == 5)
    {
    new pID;
    new rank;
    if(sscanf(params, "ud", Spieler,rank) return SendClientMessage(playerid, COLOR_ROT, "Bitte benutzte: /makeadmin [PlayerID] [Rank]");
    {
    new string[255], string1[255];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    format(string, sizeof(string), "Du wurdest von Administrator %s zum Adminlevel %d befördert.", name,rank);
    SendClientMessage(pID,COLOR_GRüN,string);
    format(string1, sizeof(string1), "Du hast Spieler %s zum Adminlevel %d befördert.", pID, rank);
    SendClientMessage(playerid,COLOR_GRüN,string1);
    SetPVarInt(pID,"Admin",rank);
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_ROT, "Du bist kein Administrator, oder hast nicht die Befugnis");
    }
    }
    return 1;
    }













    //Edit:


    Ich habe deinen Fehler gefunden...



    SetPVarInt(playerid,"Admin",Rank); // Der Spieler der den Command ausführt wird wieder zum Administrator gemacht, da du anstatt "Spieler" - "playerid" gemacht hast, somit kann die gewünschte Zielperson garnicht admin werden.


    Guck mal in den Server-Crashlog, was dort drinnen steht, denke nicht dass es am Befehl liegt.


    Lösche mal den Befehl, versuch dann den Server neuzustarten, wenns nicht klappt liegts an eetwas anderem.


    Mit freundlichem Gruß,


    coVer

    Also das /help wirst du wohl selbst hinkriegen, das sind einfach nur SendClientMessages...


    Zum gethere / goto.


    Goto


    ocmd:goto (playerid,params[])
    {
    new pID;
    if(!isPlayerAdmin(playerid,1))return SendClientMessage(playerid, FARBE_ROT, "Error: Du bist kein Admin!");
    if(sscanf(params,"u", pID))return SendClientMessage(playerid, FARBE_GRAU, "Fehler: /goto Spielername");
    GetPlayerPos(pID,x,y,z);
    SetPlayerPos(playerid, x+1,y,z);
    return 1;
    }




    Gethere


    ocmd:gethere (playerid,params[])
    {
    new pID;
    if(!isPlayerAdmin(playerid,1))return SendClientMessage(playerid, FARBE_ROT, "Error: Du bist kein Admin!");
    if(sscanf(params,"u", pID))return SendClientMessage(playerid, FARBE_GRAU, "Fehler: /gethere Spielername");
    GetPlayerPos(playerid,x,y,z);
    SetPlayerPos(pID, x+1,y,z);
    return 1;
    }












    Bisschen das Köpfchen einschalten, http://wiki.sa-mp.com/wiki/Main_Page benutzen und es klappt von alleine. Gegenbenfalls sogar die SuFu hier im Forum.

    Eventuell noch ein paar kleine Befehle, hier mal meine Version:







    ocmd:handsup(playerid,params[])
    {
    new name[MAX_PLAYER_NAME],string1[128];
    GetPlayerName(playerid, name, sizeof(name));
    ResetPlayerWeapons(playerid);
    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_HANDSUP);
    SendClientMessage(playerid, Grün, "Bleibe hier stehen, sonst wirst du erschossen!");
    for(new i=0; i<GetMaxPlayers(); i++)
    if(IsPlayerInFrak(i,1)) // Behörden
    {
    format(string1,sizeof(string1),"Verdächtiger %s stellt sich!", name);
    SendClientMessage(i,FARBE,string1);
    }
    return 1;
    }











    Mit freundlichem Gruß,


    coVer

    Also, das heißt soviel wie, dass im zcmd.inc das Sybmol "OnPlayerCommandText" schon definiert ist.


    öffne die zcmd.inc mit einem Texteditor, öffne die Suche mit STRG+F und Suche "OnPlayerCommandText".


    Nun löschst du einfach das einfach diese definierung und compilst es nochmal, dann sollte es klappen.


    Mit freundlichem Gruß,


    coVer

    Der "/o Chat".



    ocmd:o(playerid,params[])
    {
    new MSG[255],Text[255] ;
    if(IsPlayerConnected(playerid))return SendClientMessage(playerid,FARBE,"Du bist nicht eingeloggt!");
    if(sscanf(params,"s",Text))return SendClientMessage(playerid,FARBE_GRAU,"Fehler: /o Text");
    format(MSG,sizeof(MSG)," %s: %s",SpielerName(playerid), Text);
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    SendClientMessage(i,FARBE_GELB,MSG);
    }
    return 1;
    }



    und um "SpielerName(playerid)", zu definieren:



    SpielerName(playerid)
    {
    new xname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,xname,sizeof xname);
    return xname;
    }







    Einfach oben irgendwo ins Script einfügen.


    Sollte dann klappen.


    Mit freundlichem Gruß,


    coVer

    Oder du lädst dir einfach die Streamdateien von den Servern der Website runter, lädst sie irgendwo hoch, Webspace (funpic,o.Ä.) wobei ich hier Dropbox empfehle, kopierst den Link und schon spielt es die Audiodatei ab.


    Klappt ganz gut, kannst mal bei mir probieren.


    http://cover0815.co.funpic.de/


    Dort eine Sounddatei auswählen und sie wird direkt abgespielt, genau so etwas benötigt SA-MP.


    Also einfach Webspace (kostenlos) erstellen, http://www.funpic.de/, mit einem FTP Uploader die Dateien hochladen und den Link ins Script einfügen.


    Mit freundlichem Gruß,


    coVer




    ocmd:fesseln(playerid,params[])
    {
    if(gTeam[playerid] == TEAM_ADMIN)
    {
    new pID, string[255];
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,FARBE_GRAU,"Fehler: /fesseln [Spielername]");
    {
    TogglePlayerControllable(pID,1);
    format(string,sizeof(string),"Du hast %s gefesselt!",SpielerName(pID));
    SendClientMessage(playerid,FARBE_GRAU,string);
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,FARBE_ROT,"Du kannst diesen Befehl nicht nutzen!");
    }
    return 1;
    }


    Hier einmal in OCMD, für Uncuff einfach das selbe, nur mit toggleplayercontrollabel 0


    Mit freundlichem Gruß,


    coVer

    Dann mach einfach eine Abfrage rein.



    if(fraktion < 1 || fraktion > 3) return SendClientMessage(playerid,FARBE_ROT, "Die Fraktionsnummer kann nur zwischen 1 und 3 liegen!");



    Jedoch klappt es bei mir ohne Probleme.


    /makeleader ID 0 ist dann halt entleadern.


    MIt freundlichem Gruß

    Also probiers mal so, funktionen auf dein Script umbenennen.




    new TargetID, LeaderMSG[150], fraktion, frak_string[128], string[128];
    if(!isPlayerAdmin(playerid,1337))return SendClientMessage(playerid, FARBE_ROT, "Tja, Plankton!");
    if(sscanf(params,"ui",TargetID,fraktion))return SendClientMessage(playerid,FARBE_GRAU,"Fehler: /makeleader [Username/ID] [Fraktions ID]");
    switch(fraktion)
    {
    case 1:
    {
    frak_string="Frak 1";
    }
    case 2:
    {
    frak_string="Frak 2";
    }
    case 3:
    {
    frak_string="Frak3";
    }
    }
    sSpieler[TargetID][Leader] = 1;
    sSpieler[TargetID][Fraktion] = fraktion;
    sSpieler[TargetID][Leader] = fraktion;
    SpawnPlayer(TargetID);
    SpielerSpeichern(TargetID);
    format(string,sizeof(string),"Du wurdest von Administrator %s zum Leader befördert. Fraktion: %s",SpielerName(playerid),frak_string);
    SendClientMessage(TargetID,FARBE_HELLBLAU,string);
    format(LeaderMSG,sizeof(LeaderMSG), "Du hast %s zum Leader der Fraktion: %s befördert.", SpielerName(TargetID),frak_string);
    SendClientMessage(playerid, FARBE_GELB, LeaderMSG);
    return 1;



    Müsste so klappen.


    Mit freundlichem Gur0

    Spieler Laden:



    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
    GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld"));



    Spieler Speichern:



    dini_IntSet(Spielerdatei,"Level",GetPlayerScore(playerid));
    dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid));





    Das sollte so funktionieren.


    Mit freundloichem Gruß


    ShowPlayerMarkers(0);



    Somit werden keine Markierungen von den Spielern auf der Minimap angezeigt.



    SetPlayerColor(playerid,FARBE_DEINEFARBE);



    Somit setzt du die Farbe eines Spielers in z.B. Rot oder Blau, jenachdem. Diese wird dann in der TAB Leiste angezeigt und auch über dem Spieler.


    Mit freundlichem Gruß