Beiträge von Addickted

    Habe ähnliches Problem, bekomme es grad nicht gelöst. Er schreibt in den Chat "[...] wurde zum Gebannt ernannt". Warum liest er Level 0 aus?


    ocmd:setlevel(playerid,params[])
    {
    new player,level,sname[MAX_PLAYER_NAME],s1[64+MAX_PLAYER_NAME],s2[64+MAX_PLAYER_NAME],rangname[16];
    pInfo[playerid][pLevel] = mysql_GetInt("spieler", "Level", "Name", pInfo[playerid][pName]);
    if(pInfo[playerid][pLevel] == 5)
    {
    if(sscanf(params,"ui",player,level)) return SendClientMessage(playerid,COLOR_RED,"[Fehler]: Benutze /setlevel [ID][Level]");
    {


    if(IsPlayerConnected(player))
    {
    GetPlayerName(player,sname,sizeof(sname));
    mysql_SetInt("spieler", "Level",level, "Name", sname);
    SetPlayerScore(player,level);
    pInfo[playerid][pLevel] = mysql_GetInt("spieler", "Level", "Name", pInfo[player][pName]);
    switch(pInfo[player][pLevel])
    {
    case 0: { rangname="Gebannt"; }
    case 1: { rangname="Spieler"; }
    case 2: { rangname="Supporter"; }
    case 3: { rangname="Co-Admin"; }
    case 4: { rangname="Admin"; }
    case 5: { rangname="Headadmin"; }
    }
    format(s1,sizeof(s1),"[Server]: Du hast %s zum %s ernannt", sname,rangname);
    format(s2,sizeof(s2),"[Server]: %s ist nun %s", sname,rangname);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,s1);
    SendClientMessageToAll(COLOR_LIGHTBLUE,s2);
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"[Fehler]: Dieser Spieler ist nicht Online");
    }
    }
    }
    return 1;
    }

    enum eSpielerDaten
    {
    pSkin,
    pGeld
    }


    new sInfo[MAX_PLAYERS][eSpielerDaten];


    stock SpeichereSpielerDaten(playerid)
    {
    new pName[MAX_PLAYER_NAME], save[13 + MAX_PLAYER_NAME];
    GetPlayerName(playerid, pName, sizeof(pName));
    format(save, sizeof(save), "/Spieler/%s.ini", pName);
    sInfo[playerid][pSkin] = GetPlayerSkin(playerid);
    dini_IntSet(save, "pSkin", sInfo[playerid][pSkin]);
    sInfo[playerid][pGeld] = GetPlayerMoney(playerid);
    return 1;
    }

    Du brauchst einen Part wo du Werte wie Skin, Health, Wanteds abfragst und mittels Dini speicherst. Dazu kann man einen stock nehmen.


    stock stockname(params[])


    Diesen verweist du dann bei deinem Dialog darauf, sonst wird nichts gespeichert.

    Du brauchst ein Speichersystem. Dini und mySQL bevorzugt.


    Wenn du dies dann hast, fragst du im entsprechenden Part sein Geld ab und setzt diesen Wert in eine Datei (Dini) oder in eine DB (MySQL)


    Du solltest etwas konkreter werden.

    mit einem optionalen parameter würde das so aussehen

    if(sscanf(params,"U(-1)",pID))

    wird nix eingegeben wird pID den wert -1 haben den darauf hin abfragen

    Das hat bei mir leider nicht geklappt, habe daraufhin mich für die andere Variante entschieden.


    Neue Frage:


    Hallo,


    Wollte fragen ob es das Script etwas optimiert, wenn man dies so schreibt:


    new string[128];format(string,sizeof(string),"blablabla %s blabla",name)




    oder



    new string[128];format(string,128,"blablabla",name)



    Gruß

    http://forum.sa-mp.com/showthread.php?t=274503
    habs zwar nicht getestet aber kannst ja mal ausprobieren, dir das script mal ansehen und ewas von lernen.


    MfG

    Meine alte Whitelist bestand aus der Abfrage von der Datei Existenz (nach name.ini Modell) und der Abfrage von vorhanden Keys in der Datei, welche dann eingetragen werden. Die Whitelist sollte mySQL basiert sein und Ingame als Befehl funktionieren, da ich kein ACP oder dergleichen besitze.

    Denk bitte dran. Das Samp Wiki sagt, dass seit 0.3x SendClientMessage's VOR einem Kick nicht mehr ausgegeben werden. Man muss hier also mit einem Delay arbeiten mittels Timer.

    Hallo,


    ich hatte bisher ein Script auf dini basierend gebastelt und sammel nun meine ersten Erfahrungen mit MySQL. Wie muss ich die Syntax umgestalten um einen Eintrag in der Datenbank zu ändern, wie z.B. den Userlevel? Ich habe bisher das:


    ocmd:setlevel(playerid,params[]){ new pid,level,sname[MAX_PLAYER_NAME]; pInfo[playerid][pLevel] = mysql_GetInt("spieler", "Level", "Name", pInfo[playerid][pName]); if(pInfo[playerid][pLevel] > 2) { if(sscanf(params,"ii",pid,level)) return SendClientMessage(playerid,COLOR_RED,"[Fehler]: Benutze /setlevel [ID][Level]"); { GetPlayerName(pid,sname,sizeof(sname)); mysql_SetInt("spieler", "Level", pInfo[playerid][pLevel], "Name", pInfo[playerid][pName]); } } return 1;}

    Ich habe ein 500€ Samsung Laptop und der packt zwar keine aktuellen Spiele, aber etwas hochgerechnet, dürften es um die 800€ für einen guten Gamer Laptop sein.

    Du könntest das auch machen per switch/case


    new rangname[16];switch(dini_Int(save,"pFraktion")) // Beispielsweise wenn du in einem Enum das hinterlegt hast{ case 0: {rangname="Polizei"; } case 1: { rangname="Feuerwehr"; } case 2: { rangname="Taxi"; }}

    Du fragst mittels Funktion ab, wieviel Health er hat (GetPlayerHealth) speicherst dieses in einer Variable und addierst deine 5 dazu.