Abfrage Welchen rank er Ändert

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
  • Hallo ich wollte ein Befehl machen mit dem man von seiner Fraktion die Rank Namen ändern kann Z.B.S /setfrank [Rank 1-12] [Rangname]


    nur jetzt weiß ich nicht wie ich es machen kann das er wenn er rank 1 eingibt das nur er geändert wird.


    HIER DER BEFEHL:


    ocmd:setfrank(playerid,params[])
    {
    new rID,name[50];
    if(sInfo[playerid][Rank] < 11)return SendClientMessage(playerid,rot,"Du bist nicht der Leader");
    if(sscanf(params,"is[50]",rID,name)) return SendClientMessage(playerid,rot,"Verwendung: /setfrank [Rank 1-12] [Name]");
    new query[500];
    new message[250];
    format(message,sizeof(message),"Du hast den Name von Rank: %i in %s geändert.",rID,name);
    SendClientMessage(playerid,grün,message);
    return 1;
    }

  • Speichern soll er in dem der Leader ihn setzt.



    Und das Abfragen kommt durchs laden.


    public OnFrakLoad()
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,handle);
    if(!num_rows)return 1;
    for(new i = 0;i<num_rows;i++)
    {
    new id=getFreeFrakID();
    //NAME
    new tmp_name[35];
    cache_get_field_content(i,"Name",tmp_name,handle);
    strmid(fInfo[id][f_name],tmp_name,0,sizeof(tmp_name),sizeof(tmp_name));
    //X
    fInfo[id][f_spawnX] = cache_get_field_content_float(i,"spawnX",handle);
    //Y
    fInfo[id][f_spawnY] = cache_get_field_content_float(i,"spawnY",handle);
    //Z
    fInfo[id][f_spawnZ] = cache_get_field_content_float(i,"spawnZ",handle);
    //R
    fInfo[id][f_spawnR] = cache_get_field_content_float(i,"spawnR",handle);
    //INT
    fInfo[id][f_int] = cache_get_field_content_int(i,"Interior",handle);
    //WORLD
    fInfo[id][f_world] = cache_get_field_content_int(i,"World",handle);
    //ID
    fInfo[id][f_id] = cache_get_field_content_int(i,"id",handle);
    //SKIN
    fInfo[id][f_skin] = cache_get_field_content_int(i,"Skin",handle);
    //RANKE
    cache_get_field_content(i,"f_Rank1",tmp_name,handle);
    strmid(fInfo[id][f_Rank1],tmp_name,0,sizeof(tmp_name),sizeof(tmp_name));
    cache_get_field_content(i,"f_Rank2",tmp_name,handle);
    strmid(fInfo[id][f_Rank2],tmp_name,0,sizeof(tmp_name),sizeof(tmp_name));
    cache_get_field_content(i,"f_Rank3",tmp_name,handle);
    strmid(fInfo[id][f_Rank3],tmp_name,0,sizeof(tmp_name),sizeof(tmp_name));
    cache_get_field_content(i,"f_Rank4",tmp_name,handle);
    strmid(fInfo[id][f_Rank4],tmp_name,0,sizeof(tmp_name),sizeof(tmp_name));
    cache_get_field_content(i,"f_Rank5",tmp_name,handle);
    strmid(fInfo[id][f_Rank5],tmp_name,0,sizeof(tmp_name),sizeof(tmp_name));
    cache_get_field_content(i,"f_Rank6",tmp_name,handle);
    strmid(fInfo[id][f_Rank6],tmp_name,0,sizeof(tmp_name),sizeof(tmp_name));
    cache_get_field_content(i,"f_Rank7",tmp_name,handle);
    strmid(fInfo[id][f_Rank7],tmp_name,0,sizeof(tmp_name),sizeof(tmp_name));
    cache_get_field_content(i,"f_Rank8",tmp_name,handle);
    strmid(fInfo[id][f_Rank8],tmp_name,0,sizeof(tmp_name),sizeof(tmp_name));
    cache_get_field_content(i,"f_Rank9",tmp_name,handle);
    strmid(fInfo[id][f_Rank9],tmp_name,0,sizeof(tmp_name),sizeof(tmp_name));
    cache_get_field_content(i,"f_Rank10",tmp_name,handle);
    strmid(fInfo[id][f_Rank10],tmp_name,0,sizeof(tmp_name),sizeof(tmp_name));
    cache_get_field_content(i,"f_Rank11",tmp_name,handle);
    strmid(fInfo[id][f_Rank11],tmp_name,0,sizeof(tmp_name),sizeof(tmp_name));
    cache_get_field_content(i,"f_Rank12",tmp_name,handle);
    strmid(fInfo[id][f_Rank12],tmp_name,0,sizeof(tmp_name),sizeof(tmp_name));
    printf("Name: %s | ID: %i",fInfo[id][f_Rank9],fInfo[id][f_id]);
    }
    return 1;
    }

  • Klar


    enum fracEnum {


    f_id,
    f_name[128],
    Float:f_spawnX,
    Float:f_spawnY,
    Float:f_spawnZ,
    Float:f_spawnR,
    f_int,
    f_world,
    f_skin,
    f_Rank1[50],
    f_Rank2[50],
    f_Rank3[50],
    f_Rank4[50],
    f_Rank5[50],
    f_Rank6[50],
    f_Rank7[50],
    f_Rank8[50],
    f_Rank9[50],
    f_Rank10[50],
    f_Rank11[50],
    f_Rank12[50]
    }

  • Also eine kurze Erklärung:


    Es wäre gut möglich sowas mit einem switch zu machen. Im Spoiler ist das Beispiel dafür:



    Aber wie du siehst, würde das ziemlich lang werden.
    Man kann hier auch tricksen. Da bei deinem enum das erste Element in diesem Fall f_id die ID 0 hat und dann hochgezählt wird um 1 immer, hat also f_Rank1 die id 9.


    Folglich könntest du es einfach so machen:



    Damit der Trick auch in Zukunft immer funktioniert, einfach im Enum bitte jetzt wenn etwas neues hinzukommt unten anfügen ^^


    Wenn dir das zu unsicher ist, kannst du auch Methode 1 verwenden :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ja, einfach wenn der Server mal neugestartet werden sollte bzw mit einem restart Befehl vorher sowas wie:


    SaveAllFraks() oder so aufrufen und in der Funktion speicherst du alle Fraktionen.


    Wenn du auch das zu unsicher ist, kannst du auch direkt beim ändern ein Update Query ausführen oder alle 30min die Funktion aufrufen.


    Das ist ja dir überlassen, wie man allgemein etwas speichert sollte dir bekannt sein, da du ja per MySQL laden kannst...


    Mit einem UPDATE Query einfach alles speichern.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Achso, dann so:


    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Der Rankname hat sich nicht verändert.

    Wo?
    In der Variable oder in der Datenbank?


    Hast du auch das wo ich Kommentare gemacht habe überall angepasst?


    Richtige Tabellenname und Fraktionsvariable und nutzt du auch das sscanf Plugin?

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • ocmd:setfrank(playerid,params[])
    {
    new rID,name[50],string[200];
    if(sInfo[playerid][Rank] < 11)return SendClientMessage(playerid,rot,"Du bist nicht der Leader");
    if(sscanf(params,"is[50]",rID,name)) return SendClientMessage(playerid,rot,"Verwendung: /setfrank [Rank 1-12] [Name]");
    if(rID <= 0 || rID > 12) return SendClientMessage(playerid,rot,"Der Rank muss zwischen 1-12 liegen!");
    new frak = sInfo[playerid][Fraktion]; //Hier sInfo evtl anpassen, da ich nicht den Namen für die Frak kenne
    format(fInfo[frak][fracEnum:(rID+8)],50,name);
    format(string,sizeof(string),"UPDATE `fraktion` SET `f_Rank%d`='%s' WHERE `id`='%d'",rID,name,fInfo[frak][f_id]); //Tabellennamen anpassen :)
    mysql_tquery(handle,string,"","");
    format(string,sizeof(string),"Du hast den Name von Rank: %i in %s geändert.",rID,name);
    SendClientMessage(playerid,grün,string);
    return 1;
    }

  • Printe dir mal den query den du sendest und dann für ihn evtl mal in phpmyadmin aus und dann schau ob es da funktioniert.


    Oder du schaust mal in den mysql log. bzw aktivierst den mit mysql_log(ALL); unter OnGameModeInit und schaust, was er dir so alles ausgibt :)


    Ein Screen evtl was in der Datenbank steht wäre dann auch gut :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • format(string,sizeof(string),"UPDATE `fraks` SET `f_Rank%d`='%s' WHERE `id`='%d'",rID,name,fInfo[frak][f_id]); //Tabellennamen anpassen :)
    mysql_tquery(handle,string,"");

    Unter die Zeile schreib mal:


    print(string);


    und dann sag mal, was er da ausgibt :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S