Beiträge von Kaliber

    Hallo liebe Com.,



    ich wollte fragen, ob dieses Szenario [unten auf dem BIld] machbar wäre ?. Das heißt wenn ein Passagier "G" drückt soll er in dieser Ladefläche landen, die SIT_Animation machen und gefreezt sein damit er nicht runterfällt. Wäre das machbar und würde das in der Praxis auch funktionieren ?


    Kannst du eigentlich vergessen :D


    Hat einer evtl ein Runden Kreis als Textdraw?
    Ich krieg den nicht hin sauber zu erstellen


    Ich brauch nur nen einfache Kreis neben der Minimap den rest mach ich weiter
    (sollte die 3/4 größe von der minimap haben)
    Aber bitte kein O sondern ein großer geschlossener kreis in schwarz


    Nimm doch Sprites ? :huh:

    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: