Beiträge von Kaliber

    Ich weis ja nicht wie ich das ändern kann.
    mit das Admins da immer schreiben können.


    Oh hab was vergessen, schreib es so:


    static const a_rang[][] = {"User","Probe Supporter","Supporter","Moderator","Administrator","Rcon.Admin","TeamLeiter","CEO"};
    static bool:oc;


    ocmd:oooc(playerid) {
    if(!GetPVarInt(playerid,"Adminlevel")) return SendClientMessage(playerid,-1,"Du bist kein Administrator!");
    if(!oc) return oc=true,SendClientMessage(playerid,-1,"Du hast den OOC-Chat aktiviert!");
    return oc=false,SendClientMessage(playerid,-1,"Du hast den OOC-Chat deaktiviert!");
    }


    ocmd:ooc(playerid,params[]) {
    if(!oc && !GetPVarInt(playerid,"Adminlevel")) return SendClientMessage(playerid,-1,"Der OOC-Chat ist deaktiviert!");
    if(!params[0]) return SendClientMessage(playerid,-1,"Verwendung: /ooc [Text]");
    new text[144],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    return format(text,144,"* %s %s: %s",a_rang[GetPVarInt(playerid,"Adminlevel")],name,params),SendClientMessageToAll(-1,text);
    }


    mfg. :thumbup:

    sInfo[playerid][level] = cache_get_field_content_int(0,"level",dbhandle); // DIE ZEILE


    Schreib das unten in dein Script:


    stock cache_get_field_content_int(idx,name[]) {
    new temp[12];
    cache_get_field_content(idx, name, temp);
    return strval(temp);
    }


    //Und ändere die Zeile in diese:
    sInfo[playerid][level] = cache_get_field_content_int(0,"level");


    mfg. :thumbup:


    Schreib mal oben in dein Script:


    #define mysql_escape_string mysql_real_escape_string


    und zeig mal wie du cache_get_field_content_int nutzt, also was in dieser Zeile steht ;)


    mfg. :thumbup:

    Mit Freundlichen Grüßen


    Alles klar, dann könntest du es so machen:


    static const a_rang[] = {"User","Probe Supporter","Supporter","Moderator","Administrator","Rcon.Admin","TeamLeiter","CEO"};
    static bool:oc;


    ocmd:oooc(playerid) {
    if(!GetPVarInt(playerid,"Adminlevel")) return SendClientMessage(playerid,-1,"Du bist kein Administrator!");
    if(!oc) return oc=true,SendClientMessage(playerid,-1,"Du hast den OOC-Chat aktiviert!");
    return oc=false,SendClientMessage(playerid,-1,"Du hast den OOC-Chat deaktiviert!");
    }


    ocmd:ooc(playerid,params[]) {
    if(!oc) return SendClientMessage(playerid,-1,"Der OOC-Chat ist deaktiviert!");
    if(!params[0]) return SendClientMessage(playerid,-1,"Verwendung: /ooc [Text]");
    new text[144],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    return format(text,144,"* %s %s: %s",a_rang[GetPVarInt(playerid,"Adminlevel")],name,params),SendClientMessageToAll(-1,text);
    }


    -1 Ist die Farbe (weiß), kannst du überall anpassen wenn du willst ;)


    mfg. :thumbup:


    //Edit: Achso den Namen vergessen.

    Natürlich können wir dir helfen :)


    Aber...dazu bräuchten wir ein paar Informationen, wie ist denn die Verteilung der Adminlevel, sprich ab wann ist man was?


    mfg. :thumbup:

    Hier mal ein Codeschnipsel für die Konvertierung von 1000 in 1.000, gab es zwar schon, aber die hier ist besser:


    stock sMoney(geld) {
    new str[24],i;valstr(str,geld),i=(geld > 0) ? strlen(str)-3 : strlen(str)-4;
    for(; i>0; i-=3) strins(str,".",(geld > 0) ? i : i+1,24);
    return str;
    }


    //Nutzung:
    printf("%s$",sMoney(10000)); //-> Output: 10.000$


    mfg. :thumbup:

    Schreibs so:


    stock Login(playerid,key[])
    {
    new ACC[64],ACCName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,ACCName,sizeof(ACCName));
    format(ACC,sizeof(ACC),"/Accounts/%s.txt",ACCName);
    if(!strcmp(key,dini_Get(ACC,"Passwort"),true))
    {
    SCM(playerid,BLAU,"Sie haben sich erfolgreich eingeloggt");
    }
    else
    {
    SCM(playerid,ROT,"Sie haben ein Falsches Passwort eingegeben , bitte versuchen sie es erneut!");
    }
    return 1;
    }


    mfg. :thumbup:

    und auch nicht zu kompliziert zu machen..


    Naja, du musst ein TextDraw erstellen, es über die Normale Client Anzeige machen und dort kannst du dann folgende Funktion verwenden:


    stock sMoney(geld) //(c) by Kaliber
    {
    new str[24];valstr(str,geld);
    for(new i=strlen(str); i>0; i-=3) {
    if(i==strlen(str)) i = (geld > 0) ? i : i-4;
    if(i!=strlen(str)) strins(str,".",(geld > 0) ? i : i+1,24);
    }
    return str;
    }


    //Beispiel:
    printf("%s$",sMoney(1000)); //Output -> 1.000$


    Damit kannst du dein Geld in einen String mit einem . Konvertieren ;)


    mfg. :thumbup:


    //Edit: So jetzt geht es auch im negativen Bereich.

    Weiß nicht ob du einen Commandprozessor verwendest oder nicht, deshalb schreib ich es mal allgemein:


    //Ganz oben im Script
    new g_SpielerTimer[MAX_PLAYERS];


    // [/start] Command
    g_SpielerTimer[playerid] = GetTickCount();


    //[/stopp] Command
    g_SpielerTimer[playerid] = 0;


    //[/timer] Command
    if(!g_SpielerTimer[playerid]) return SendClientMessage(playerid,-1,"Du hast keinen Timer gestartet!");
    new string[64];
    format(string,64,"Der Timer läuft seid %d Sekunden!",(GetTickCount()-g_SpielerTimer[playerid])/1000);
    SendClientMessage(playerid,-1,string);


    mfg. :thumbup:

    Sehr nice, Danke! FS funktioniert.


    Was ich noch brauche ist ein "Aus dem Krankenhaus holen" Script. Also als Admin sollte man User, die grundlos sterben, aus dem Krankenhaus holen, mit einem speziellen Befehl. /nokh <ID> sollte er sich dann nennen und dann einen text beim Spieler anzeigen lassen "Du wurdest von einem Admin aus dem Krankenhaus geholt".


    :thumbup:


    Wie sind hier keine Community die dir all deine Sachen schreibt :wacko:


    Du solltest hier nur nach Codeschnipseln oder Anregungen fragen :whistling:


    PS: Um dir sowas zu schreiben bräuchte man schon mehr Informationen über dein Script :whistling:


    mfg. :rolleyes:


    Hier kopiers in ein Filterscript und fertig:


    /* Wettersystem Filterscript
    *
    * (c) by Kaliber, 2014
    *
    */


    #include <a_samp>


    #define Farbe -1
    #define SCM(%0) SendClientMessageToAll(Farbe,%0)


    static const wetter[] = {0,9,2,15,16,3};
    static t_ID,idx;


    public OnFilterScriptInit() return @WetterChange(),t_ID=SetTimer("@WetterChange",1000*60*60*2,1);
    public OnFilterScriptExit() return KillTimer(t_ID);


    @WetterChange();@WetterChange() {
    if(idx==sizeof(wetter)) idx=0;
    switch(idx) {
    case 0: SCM("* Wetter News: Es wird ein sonniger Tag werden.");
    case 1: SCM("* Wetter News: Dichter Nebel erscheint plötzlich.");
    case 2: SCM("* Wetter News: Die Wolkendecke reißt auf, es wird sonnig.");
    case 3: SCM("* Wetter News: Dichte Wolken ziehen langsam auf.");
    case 4: SCM("* Wetter News: Es beginnt zu regnen.");
    case 5: SCM("* Wetter News: Der Regen ist vorbei, es wird wieder sonnig.");
    }
    return SetWeather(wetter[idx]),idx++;
    }


    Viel Spaß damit ;)


    mfg. :thumbup:

    GetTickCount fragt ab wie lange man schon auf dem Server is, hat nix mit Timer zu tun.


    Nein tut es nicht ^^


    Mach folgendes:

    new g_SpielerTimer[MAX_PLAYERS];


    //Dann da wo der Timer starten soll
    g_SpielerTimer[playerid] = GetTickCount();


    //Und da wo du prüfen willst wie viel zeit vergangen ist
    printf("Es sind %ds vergangen",(GetTickCount()-g_SpielerTimer[playerid])/1000);


    mfg. :thumbup:

    Prüfen ob der Spieler im Auto sitzt mit:


    if(IsPlayerInAnyVehicle(playerid)) {
    //Hier sitzt er in einem Auto
    }


    //Wenn du prüfen willst, ob er Fahrer eines Autos ist, dann:
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) {
    //Hier wäre er Fahrer eines Wagens
    }


    mfg. :thumbup:

    Bei Code-Teil 2 sieht man ja wie man durch eine schleife alle variablen auf 0 setzen kann, gibt es auch einen weg den namen der variable auszulesen?


    Nein, aber das brauchst du ja auch nicht...du kannst die Variablen direkt ansteuern:


    var[var_enum:0] = 1;


    //Das würde folgendem entsprechen:
    var[var1] = 1;


    mfg. :thumbup: