Beiträge von Kaliber

    Schreibe das mal so:


    ocmd:f(playerid, params[])
    {
    new datei[64], text[68], string[84];
    if(sscanf(params,"s",text))return SendClientMessage(playerid,ROT,"/f [TEXT]");
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(!IsPlayerConnected(i)) continue;
    if(PlayerInfo[i][pMember] == PlayerInfo[playerid][pMember] && PlayerInfo[i][pMember] > 0)
    {
    format(datei,sizeof(datei),"/Fraktionen/%d/Ränge/%d.txt",PlayerInfo[playerid][pMember], PlayerInfo[playerid][pRank]);
    format(string,sizeof(string),"* %s %s: %s", dini_Get(datei,"Rankname"),SpielerName(playerid), text);
    SendClientMessage(i,HELLBLAU,string);
    }
    }
    return 1;
    }


    und wenn dir nichts ausgegeben wird, dann ist da etwas nicht möglich (entweder falscher Pfad oder irgentwas leer !


    mfg. :thumbup:


    //Edit: jetzt weiß ich was du machen willst :whistling:


    Da sind ein paar Bugs drinnnen, z.B. du kannst dich selber inviten, du kannst Leader als Member inviten :D


    Schreibe es so:


    //Aus meinem Tutorial
    ocmd:invite(playerid, params[])
    {
    new pID;
    if(sscanf(params,"u",pID)) return SendClientMessage(playerid,rot,"Verwendung: /invite [spielerid]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,rot,"Dieser Spieler ist nicht online !");
    if(pID == playerid) return SendClientMessage(playerid,rot,"Du kannst dich nicht selber inviten !");
    if(SpielerInfo[playerid][sLeader] == 0) return SendClientMessage(playerid,rot,"Du bist kein Leader !");
    if(SpielerInfo[pID][sMember] > 0 || SpielerInfo[pID][sLeader] > 0) return SendClientMessage(playerid,rot,"Dieser Spieler ist bereits in einer Fraktion !");
    new str[128], name[24], pname[24];
    GetPlayerName(pID, name, 24);
    GetPlayerName(playerid, pname, 24);
    format(str, 128,"Du wurdest von %s in die Fraktion invitet !",pname);
    SendClientMessage(pID,blau,str);
    format(str, 128,"Du hast %s in deine Fraktion invitet !!",name);
    SendClientMessage(playerid,blau,str);
    SpielerInfo[pID][sMember] = SpielerInfo[playerid][sLeader];
    SpielerInfo[pID][sRang] = 1;
    return 1;
    }


    mfg. :thumbup:

    Setze den Timer unter OnPlayerConnect und schreibe den Callback so:


    (Du musst den Parameter "playerid" auch schon an den Callback übergeben :whistling: )


    public StatsTDON(playerid)
    {
    TextDrawShowForPlayer(playerid,Statistik0[playerid]);
    TextDrawShowForPlayer(playerid,Statistik1[playerid]);
    TextDrawShowForPlayer(playerid,Statistik2[playerid]);
    TextDrawShowForPlayer(playerid,Statistik3[playerid]);
    TextDrawShowForPlayer(playerid,Statistik4[playerid]);
    TextDrawShowForPlayer(playerid,Statistik5[playerid]);
    TextDrawShowForPlayer(playerid,Statistik6[playerid]);
    TextDrawShowForPlayer(playerid,Statistik7[playerid]);
    TextDrawShowForPlayer(playerid,Statistik8[playerid]);
    TextDrawShowForPlayer(playerid,Statistik9[playerid]);
    new levelstr[50],bankstr[70],paystr[70],handystr[70],geldstr[70];
    format(geldstr, sizeof(geldstr), "~g~$~w~ %d",GetPlayerMoney(playerid));
    TextDrawSetString(Statistik4[playerid], geldstr);
    format(levelstr, sizeof(levelstr),"~b~Level: ~w~%d",SpielerInfo[playerid][pLevel]);
    TextDrawSetString(Statistik6[playerid], levelstr);
    format(bankstr, sizeof(bankstr),"~b~Bank: ~g~$~w~ %d",SpielerInfo[playerid][pGuthaben1]);
    TextDrawSetString(Statistik7[playerid], bankstr);
    format(paystr, sizeof(paystr),"~b~Payday: ~w~in %d Minuten",60-SpielerInfo[playerid][pPlayMinutes]);
    TextDrawSetString(Statistik8[playerid], paystr);
    format(handystr, sizeof(handystr),"~b~Handynr.: ~w~%d",SpielerInfo[playerid][pNummer]);
    TextDrawSetString(Statistik9[playerid], handystr);
    return 1;
    }


    mfg. :thumbup:

    Die Idee stammt ja auch von mir :rolleyes:


    Moment mal, dass stimmt so ja nicht !


    Die Grundidee stammt schon von mir nur, dass mit den pVars stammt von dir :whistling:


    Sieht man auch sofort am Code.Du hast den identischen Ablauf ineinander verschachtelt anstatt es 1x logisch aufzubauen mit einer Schleife.
    Was mach ich eigentlich,wenn ich wirklich mal ein $-Zeichen im Text haben möchte? Solltest zumindest ein Doppel-$ erlauben ( $$ ).
    "Du hast $Bank$$ auf deinem Bankkonto" -> "Du hast 1000$ auf deinem Bankkonto"


    Das mit dem Dollar zeichen, daran habe ich nicht gedacht, werde ich gleich mal machen, aber mit einer for-Schleife ist das nicht direkt möglich, da man mit strfind arbeiten muss und das nicht einfach erhöhen kann...sprich sowas:
    for(new z = strfind(format, "$", true); z<strlen(format); z++)
    macht gar keinen Sinn, hast du da eine bessere Idee ?


    mfg. :thumbup:

    So:


    //Oben im Script
    new rID[MAX_PLAYERS];


    //Bei OnPlayerConnect
    rID[playerid] = -1;


    //Der Befehl
    ocmd:rep(playerid,params[])/*Befehl =/rep*/
    {
    new pID;
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,ROT,"Du sitzt in keinem Auto !");
    if(!istPlayerJob(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Mechaniker!");/*Abfrage ob er den Job id hat*/
    if(sscanf(params,"u",pID)) return SendClientMessage(playerid,ROT,"Verwendung: /rep [spielerid]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,ROT,"Dieser Spieler ist nicht online !");
    if(GetPlayerVehicleID(playerid) != GetPlayerVehicleID(pID)) return SendClientMessage(playerid,ROT,"Du sitzt nicht im selben Auto wie der Spieler !");
    new name[24], string[128];
    GetPlayerName(playerid, name, 24);
    format(string, 128,"Mechaniker %s bietet dir an dein Auto zu reparieren. Tippe: /accept rep",name);
    SendClientMessage(pID, ROT, string);
    GetPlayerName(pID, name, 24);
    format(string, 128,"Du bietest %s an sein Auto zu reparieren !",name);
    SendClientMessage(playerid,ROT,string);
    rID[pID] = playerid;
    return 1;
    }


    //Der accept Befehl
    ocmd:accept(playerid, params[])
    {
    if(!strcmp(params, "rep", true))
    {
    if(rID[playerid] == -1) return SendClientMessage(playerid,ROT,"Dir hat niemand eine Reparatur angeboten !");
    if(!IsPlayerConnected(rID[playerid])) { rID[playerid] = -1; SendClientMessage(playerid,ROT,"Der Spieler der dir dies angeboten hat ist offline !"); return 1; }
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,ROT,"Du sitzt in keinem Auto !");
    new name[24], string[128];
    GetPlayerName(rID[playerid], name, 24);
    format(string, 128,"Dein Auto wurde dir von %s repariert !",name);
    SendClientMessage(playerid,ROT,string);
    GetPlayerName(playerid, name, 24);
    format(string, 128,"Du hast das Auto von %s repariert !",name);
    SendClientMessage(rID[playerid],ROT,string);
    rID[playerid] = -1;
    RepairVehicle(GetPlayerVehicleID(playerid));
    }
    return 1;
    }


    mfg. :thumbup: