Premium

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Ích glaube das wird schwer zu scripten sein einfacher wäre es wenn die premium user ein Admin fragen und der Admin dan den Namen ändert

    Einmal editiert, zuletzt von ‪[GSR]Taschentuch ()

  • ja,schließe mich Tscheche an,
    mach es lieber so,Ein User hat Premium,
    Dieser will seinen Namen von "UserD" in "UserY" ändern,dann schreibt er das einem Admin,und dieser ändert den namen der .ini Datei des Users,schon hat er einen anderen Namen ;)


    Dann könnt ihr ja im forum nen Bereich für Admins machen,indem ihr alle Premium User eintragt,und dort könnt ihr dann immer hinschreiben,ob der User den namen schon geändertbekahm,und wann oder so,das wäre unnötig zu scripten,wenn es auch leichter geht


    Scripten dauert bestimmt 2 stunden,dieses system was ich meine gerade mal 5 minutn,mit foren bereich einrichten ;)


    Gruß

  • ja,schließe mich Tscheche an,

    Da warst du wohl grade in Gedanken xD



    Naja muss noch dazu sagen es ist am einfachsten zu Skripten und dauert keine ewichkeit vorallem kann dort kein bug oder so auftreten :D


    Naja ich denke das müsstes du auch selbst hin bekommen wenn nicht es gibt ein paar scripts die diese Systeme drin haben musst du ebent ein paar runterladen und mal durch gucken :D

  • Jo einfach wie sonstwas, es gibt standart eine Variable die wird nur einmalig gesetzt und danach nie wieder...
    pReg oder pTut z.B.


    Also einfach eine neue Variable die dafür steht ob der Name schonmal geändert wurde z.B. pNameChanged
    Bei OnPlayerConnect diese auf 0 setzen und natürlich Laden/Speichern


    Der NameChange sollte dann so aufgebaut sein, wenn er premium ist und wenn pNameChanged auf 0 ist dann ändert es den Namen und setzt die Variable auf 1
    Und ansonsten sind das noch 2 else Nachrichten "Du bist kein Premium" und "Du hast deinen Namen schonmal geändert"


    Desweiteren müsste man danach noch Abfragen ob er einen Hausschlüssel hat, wenn ja ob ihm das haus gehört, jenachdem muss man den HouseOwner-Namen noch ändern sonst kann er das nichtmehr verkaufen ;)


    //Edit
    Achja und Datei müsste man auch neu schreiben aber das ist ja nicht schwer, passiert ja z.B. auch beim Registrieren, den Code einfach von da nehmen

  • So ich hab da mal was gebastelt und eben bei mir lokal getestet = funktioniert. Eines vorab dieser Code ist etwas zum nachdenken, solltest du garkeine Erfahrung darin haben kannst du den Code gleich vergessen, da du ziemlich viel an dein Script anpassen musst!


    COMMAND:premium(playerid,params[])
    {
    if(SpielerInfo[playerid][pLevel]==3)
    {
    new pID,name[20],premium,string[256],query[128],ausgabe[256]; GetPlayerName(pID,name,sizeof(name));
    format(ausgabe,sizeof(ausgabe),"`Name`='%s'",name);
    if(sscanf(params,"ii",pID,premium)) return SendClientMessage(playerid,COLOR_WHITE,"Verwendung: /premium [ID] [premiumlevel]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,COLOR_WHITE,"kein Spieler mit der angegebenen ID online");
    if(premium>2) return SendClientMessage(playerid,COLOR_WHITE,"es gibt nur 2 Premiumlevel");
    if(premium==2) return SendClientMessage(playerid,COLOR_WHITE,"Premium level 2 ist derzeit deaktiviert");
    if(premium<0) return SendClientMessage(playerid,COLOR_WHITE,"unter 0 gibts nichts");
    else
    {
    SpielerInfo[pID][PlrP] = premium;
    SetPVarInt(pID,"premium",1);
    format(string,sizeof(string),"%s hat nun Premiumstatus Level %i",name,premium);
    SendClientMessageToAll(COLOR_WHITE,string);
    format(query, 256, "UPDATE `player_info` SET `premium` = '%i' WHERE %s", SpielerInfo[pID][PlrP], ausgabe);
    mysql_query(query);
    }
    }
    else return SendClientMessage(playerid,COLOR_WHITE,"Du bist nicht autorisiert diesen Befehl zu benutzen!");
    return 1;
    }


    COMMAND:changename(playerid,params[])
    {
    if(GetPVarInt(playerid,"premium")==1)
    {
    new newName[20],string[256],nameold[20]; GetPlayerName(playerid,nameold,sizeof(nameold));format(ausgabe,sizeof(ausgabe),"`Name`='%s'",nameold);
    if(sscanf(params,"s",newName)) return SendClientMessage(playerid,COLOR_WHITE,"Verwendung: /changename [Name]");
    else
    {
    SetPlayerName(playerid,newName);
    format(string,sizeof(string),"%s hat seinen Namen in %s geändert",nameold,newName);
    SendClientMessageToAll(COLOR_WHITE,string); DeletePVar(playerid,"premium");
    format(query, 256, "UPDATE `player_info` SET `Name` = '%s' WHERE %s", newName, ausgabe);
    }
    }
    else return SendClientMessage(playerid,COLOR_WHITE,"Du bist nicht autorisiert diesen Befehl zu benutzen!");
    return 1;


    // ein Enum könnte etwa so aussehen


    enum SpielerDaten
    {
    pName[MAX_PLAYER_NAME],
    pLevel,
    PlrP
    // rest hab ich mal entnommen, dies sind die Relevanten Variablen
    }
    new SpielerInfo[MAX_PLAYERS][SpielerDaten];
    }


    Benötigte Plugins:

    • Sscanf2
    • mysql
    • Hirn !

    Sollte man leicht auf DINI umstellen können, war gerade zu faul und hab es auch erst zu spät gelesen. Pass es deinen Bedürnissen an und gut ist.
    Dies hat mich etwa 15 - 20 min gekostet. Support kannst du dir per PN holen, was diesen Code angeht(kein GF support, da ich GF nicht leiden kann und lieber Selfmade schreibe!)


    //EDIT: speichern des neuen Namens in der DB eingefügt !

    2 Mal editiert, zuletzt von no.Ob ()

  • Hast du mal die Hirn.inc zum Download? Fehlt mir :)

    Wer ist der Mensch hinter der Uniform? Ist euch das bekannt?
    Es ist der selbe der noch eben in Zivil neben euch stand.
    Warum wird er gehasst und so selten respektiert?
    Warum ist er derjenige der seinen Hals für euch riskiert?
    Trägt der Bulle eine Weste, das hat er früher nie gemacht,
    die Zeiten haben sich geändert und jeder Dienst ist ein Kampf!
    Warum gibt’s das SEK und warum sind sie so brutal?
    Und wieso hat wieder einer mit seinem Leben bezahlt?