Beiträge von Kaliber


    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:

    Das macht man so:


    ocmd:tie(playerid,params[])
    {
    if(!isPlayerInFrakt(playerid,2))return SendClientMessage(playerid,ROT,"Du bist nicht in der Frak");
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,ROT,"Du bist in keinem auto!");
    new string[128],pID;
    if(sscanf(params,"u",pID)) return SendClientMessage(playerid,ROT,"Verwendung: /tie [spielerid]");
    if(GetPlayerVehicleID(playerid) != GetPlayerVehicleID(pID)) return SendClientMessage(playerid,ROT,"Dieser Spieler sitzt nicht in deinem Fahrzeug !");
    new name[24];
    GetPlayerName(playerid, name, 24);
    format(string, sizeof(string), "* Du wurdest von %s gefesselt.", name);
    SendClientMessage(pID, BLAU, string);
    GetPlayerName(pID, name, 24);
    format(string, sizeof(string), "Du hast %s gefesselt.", name);
    SendClientMessage(playerid, BLAU, string);
    GameTextForPlayer(pID, "~r~Gefesselt", 2500, 3);
    TogglePlayerControllable(pID,0);
    return 1;
    }


    mfg. :thumbup: