Beiträge von n0skillg3t

    Was meinst du mit "bei jedem SendClientMessage eine if Abfrage zu machen..." ?


    Meinst du evtl. soetwas:


    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerAdmin(i))
    {
    SendClientMessage(i,0xFF0000FF,"Message!");
    }
    }


    Wenn ja, könntest du einen stock erstellen:


    stock SendAdminMessage(color,text[])
    {
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerAdmin(i))
    {
    SendClientMessage(playerid,color,text);
    }
    }
    return 1;
    }

    new bool:Log[MAX_PLAYERS];


    OnPlayerConnect(playerid)
    {
    Log[playerid] = true;
    }

    OnPlayerSpawn(playerid)
    {
    new string[256];
    new pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pname,sizeof(pname));
    if(Log[playerid])
    {
    format(string,sizeof(string),"~~~~~~~~~~~~~~~~~~~~~~~~~~Herzlich Willkommen %s !~~~~~~~~~~~~~~~~~~~~~~",pname);
    SendClientMessage(playerid,0xFFFFFFFF,string);
    Log[playerid] = false;
    }
    }

    ocmd:setmoney(playerid,params[])
    {
    new Betrag, Spieler, string[256], playername[MAX_PLAYER_NAME], SpielerName[MAX_PLAYER_NAME];
    if(!IsPlayerAnAdmin(playerid,4))return SendClientMessage(playerid,grau,"Du darfst das nicht tun!");
    if(sscanf(params,"ud",Spieler,Betrag))return SendClientMessage(playerid,grau,"Benutze: /setmoney [Spieler/ID] [Betrag]");
    GetPlayerName(playerid,playername,sizeof(playername));
    GetPlayerName(Spieler,SpielerName,sizeof(SpielerName));
    format(string,sizeof(string),"Administrator %s hat dein Geld auf %d€ gestellt.",playername,Betrag);
    SendClientMessage(Spieler,grau,string);
    format(string,sizeof(string),"Du hast Spieler %s's Geld auf %d€ gestellt.",SpielerName,Betrag);
    SendClientMessage(playerid,grau,string);
    SetPlayerMoney(Spieler,Betrag);
    return 1;
    }


    Müsste funktionieren, habs gerade hier im Editor geschrieben.


    MfG
    n0skillg3t

    OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    for(new pv = 0; pv < sizeof(AdminVehs); pv++)
    {
    if(vehicleid == pv)
    {
    if(!IsPlayerAnAdmin(playerid,1))
    {
    SendClientMessage(playerid,0xFF0000FF,"Dieses Fahrzeug ist nur für Administratoren!");
    TogglePlayerControllable(playerid,0);
    TogglePlayerControllable(playerid,1);
    return 1;
    }
    }
    }
    return 1;
    }

    stock Log(logname[],text[])
    {
    new string[256],File:hFile;
    format(string,sizeof(string),"%s\r\n",text);
    hFile=fopen(logname,io_append);
    fwrite(hFile,string);
    fclose(hFile);
    }


    Wenn du jeden Befehl geloggt haben willst, mach es unter OnPlayerCommandText(..)


    OnPlayerCommandText(playerid, cmdtext[])
    {
    new tag, monat, jahr, stunde, minute, sekunde, name[MAX_PLAYER_NAME], string[256];
    GetPlayerName(playerid,name,sizeof(name));
    getdate(jahr,monat,tag);
    gettime(stunde,minute,sekunde);
    format(string,sizeof(string),"[%02d.%02d.%d | %02d:%02d:%02d]Spieler %s hat den Befehl '%s' benutzt.",tag,monat,jahr,stunde,minute,sekunde,name,cmdtext);
    Log("Befehle.log",string);
    return 1;
    }

    DarkZero hat es doch schon geschrieben.


    new TotTimer[MAX_PLAYERS];

    OnPlayerDeath(playerid, killerid)
    {
    TotTimer[playerid] = SetTimerEx("Tot",60000,false,"d",playerid);
    }

    forward Tot(playerid);
    public Tot(playerid)
    {
    //Was passieren soll wenn er wieder lebt..
    }


    Wenn du den Timer jetzt killen möchtest machste das so:


    KillTimer(TotTimer[playerid]);


    MfG

    Wenn der Spieler sich ausloggt musst du seine Position in einer Datei/Datenbank speichern und
    diese beim Connecten auslesen, quasi so:

    OnPlayerDisconnect(playerid, reason)
    {
    SavePlayer(playerid);
    }


    stock SavePlayer(playerid)
    {
    new Float:X, Float:Y, Float:Z;
    new data[124], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(data,sizeof(data),"/Accounts/%s.ini",name);
    GetPlayerPos(playerid,X,Y,Z);
    dini_FloatSet(data,"LastX",X);
    dini_FloatSet(data,"LastY",Y);
    dini_FloatSet(data,"LastZ",Z);
    }


    Dánn wenn sein Account geladen wird:


    stock LoadPlayer(playerid)
    {
    new name[MAX_PLAYER_NAME], data[64];
    new Float:X, Float:Y, Float:Z;
    GetPlayerName(playerid,name,sizeof(name));
    format(data,sizeof(data),"/Accounts/%s.ini",name);
    X = dini_Float(data,"LastX");
    Y = dini_Float(data,"LastY");
    Z = dini_Float(data,"LastZ");
    SetPlayerPos(playerid,X,Y,Z);
    }


    Kann sein das es Fehler enthält habs hier im Editor geschrieben.
    Müsste aber funktionieren.

    Welches Speichersystem benutzt du ?


    dini?
    mysql?
    ..


    Hier für dini mit ocmd:


    new Grundwehrnote[MAX_PLAYERS];//Oben zu deinen #defines etc.


    ocmd:GWNote(playerid,params[])
    {
    new user, note, username[MAX_PLAYER_NAME], playername[MAX_PLAYER_NAME], string[256];
    GetPlayerName(playerid,playername,sizeof(playername));
    if(sscanf(params,"ud",user,note))return SendClientMessage(playerid,grau,"Benutze: /GWNote [Spieler/ID] [Note]");
    if(Grundwehrnote[user] != 0)return SendClientMessage(playerid,grau,"Dieser Spieler hat bereits eine Grundwehrdienst Note bekommen!");
    GetPlayerName(user,username,sizeof(username));
    Grundwehrnote[user] = note;
    format(string,sizeof(string),"General %s hat dir eine Grundwehrdienst Note ausgehändigt. Du kannst sie mit /GWA anschauen.",playername);
    SendClientMessage(user,gelb,string);
    format(string,sizeof(string),"Du hast %s eine Grundwehrdienst Note ausgehändigt.",username);
    SendClientMessage(playerid,gelb,string);
    return 1;
    }

    ocmd:GWA(playerid,params[])
    {
    if(Grundwehrnote[playerid] == 0)return SendClientMessage(playerid,grau,"Du hast den Grundwehrdienst noch nicht ausgeführt!");
    format(string,sizeof(string),"Deine Grundwehrdienst Note: %d",Grundwehrnote[playerid]);
    SendClientMessage(playerid,blau,"<--| ******************************************* |-->");
    SendClientMessage(playerid,weis,string);
    SendClientMessage(playerid,blau,"<--| ******************************************* |-->");
    return 1;
    }


    Wenn sein Account gespeichert wird, machst du das:

    dini_IntSet(dateipfad,"Grundwehrdienstnote",Grundwehrnote[playerid]);


    Wenn er sich einloggt:


    Grundwehrnote[playerid] = dini_IntGet(dateipfad,"Grundwehrdienstnote");


    Musst alles noch anpassen.
    Kann Fehler enthalten, habs hier im Editor geschrieben.


    MfG