Beiträge von KeksOfDeath

    Das Array kannste einfach so dran hängen, musst dann aber bei jedem gTeam, dass du verwnedet hast das Array noch mit auswählen... würde dir ovn daher gTeam2 empfehlen... und wie du das auswählen kannst:
    if(gTeam[playerid]==0) {
    gTeam[playerid]=TEAM_ADAC;//nbenn ich jetzt mal so...
    }
    else if(gTeam2[playerid]==0) {
    gTeam2[playerid]=TEAM_ADAC; }

    Achso, das meinst du^^
    //ganz nach oben:
    new KameraCheckTimer[MAX_PLAYERS];
    //OnPlayerConnect:
    KameraCheckTimer[playerid] = SetTimerEx("KameraCheck",1000,0,"d",playerid);
    //ganz nach unten:
    public KameraCheck(playerid)
    {
    new wid, muni;
    GetPlayerWeaponData(playerid,9, wid,muni);
    if(wid==0) {
    SendClientMessage(playerid,ROT,"Du hast keine Kamera mehr.");
    KillTimer(KameraCheckTimer[playerid]);
    }
    return 1;
    }

    Du fragst eifnach anch dem Geburtsdatum und rechnest es aus, wie dus im Kopf auch tust^^
    Habe hier anstatt "/" ein " " (Leerzeichen) als Trennung genommen, damit man die wie Parameter auslesen kann
    //ganz nach oben:
    new machtgeb[MAX_PLAYERS];
    //OnPlayerText:
    if(machtgeb[playerid]==1) {
    new j, m, t, j2, m2, t2;
    if(sscanf(text,"ddd",t2,m2,j2)) return SendClientMessage(playerid,FARBE,"Wann bist du geboren? Beispiel: 27 6 1990");
    getdate(j,m,t);
    if((j2>=j-108 && j2<=j-6) && (t2>=1 && t2<=31) && (m2>=1 && m2<=12)) {
    new geht=1, i;
    if(t2==31) {
    for(i=1; i<12; i+=2) {
    if(m2==i) {
    geht=1;
    i=12; }
    else {
    geht=0; }}
    }
    if(t2>=30 && m2==2) {
    geht=0;
    }
    if(t2==29 && m2==2) {
    for(i=1900; i<j; i+=4) {
    if(j2==i) {
    geht=1;
    i=j; }
    else {
    geht=0; }}
    }
    if(geht==1) {
    geht=j-j2;
    if(m2>m) {
    geht--; }
    else if(m2==m && t2>=t) {
    geht--; }
    new s[35];
    format(s,sizeof(s),"Ok, dann bist du also %d Jahre alt",geht);
    SendClientMessage(playerid,FARBE,s);
    machtgeb[playerid]=0; }
    else { SendClientMessage(playerid,FARBE,"Inkorrektes Datum"); }}
    else { SendClientMessage(playerid,FARBE,"Inkorrektes Datum"); }
    return 0;
    }
    //wenn er gebeten wird, sein Geburtsdatum anzugeben:
    machtgeb[playerid]=1;

    Ich hatte euch das schonmal mit gTeam gemacht, bei Tuners fun Mode
    Ansonsten ist das nix anderen, wie pInfo oder so
    dini_IntSet([filename],[name, wie es in der file heißen soll],gTeam[playerid]);

    Den Denkansatz hatte ich auch schon, alles, was mit TextDrawShow zu tun hat:
    //OnPlayerConnct:
    TextDrawShowForPlayer(playerid,forum);
    //OnPlayerStateChange
    //newstate==2
    TextDrawShowForPlayer(playerid,sprit[playerid]);
    Sonst nix mit TextDrawShow, mit TextDrawHide gibts das:
    //OnPlayerConnect:
    for(new i=0; i<maxon; i++) {
    TextDrawHideForPlayer(playerid,sprit[i]); }
    //OnPlayerDisconnect:
    TextDrawHideForPlayer(playerid,forum);
    TextDrawHideForPlayer(playerid,sprit[playerid]);
    //OnPlayerSpawn:
    for(new i=0; i<maxon; i++) {
    TextDrawHideForPlayer(playerid,sprit[i]); }
    //OnPlayerDeath:
    TextDrawHideForPlayer(playerid,sprit[playerid]);
    //oldstate==2
    TextDrawHideForPlayer(playerid,sprit[playerid]);
    SetTimerEx: gibts nur jeweils 1 Timer, der sich immer wiederholt (1 pro Spieler)
    for: Gibt ganz viele, aber keine in i-nem Timer

    In Sachen wie gTeam kannst du nur eine Varaible abspeichern... da haste recht, aber wie wärs, wenn du Arrays verwendest? Oder eine neue Varaible erstellst?
    Beispiel fürs Array:
    new gTeam[MAX_PLAYERS][2];
    Beispiel für eine neue Variable:
    new gTeam2[MAX_PLAYERS];

    Weil ich ja meistens schon beim connecten den Tacho von anderen sehen (wobei es nicht immer die ID 0 ist, sondern eine zufällige)
    Also will ich für diese Person den Tacho aller Leute verstecken
    //EDIT:
    Es ist nicht nur so, dass wenn man mehrere Tachos sieht, dass die dann übereinander hängen, es kann auch sein, dass man einen Tacho für einen ganz kleinen Moment sieht (kann ich nicht in Zeiteinheiten ausdrücken), dann verschwindet der, dafür kommt ein anderer, wieder für einen ganz kleinen Moment, dann verschwindet dier auch wieder und es kommt noch ein Neuer, dieser bleibt dann die Zeit, was von der einen Sekunde (in diesem Zeitraum aktualisiert der Tacho) noch übrig ist

    Wäre nett, wenn du dazu auch nochmal den /stats Befehl gepostet hättest... jetzt kann mans nur so machen:
    format(.....,".... %d",..,.,.,PlayerInfo[playerid][pBank]);
    Ich weiß jetzt nicht, ob du da so wirklich schlau draus wirst... :S

    //OnPlayerCommandText:
    dcmd(enter,5,cmdtext);
    //außerhalb eines publics
    dcmd_enter(playerid,params[]) {
    {
    #pragma unused params
    if(gTeam[playerid] == TEAM_COPS)
    {
    if (PlayerToPoint(3.0, playerid,1568.4795,-1690.1753,5.8906))// wo man /enter eingeben kann, das 3.0 ist der Radius
    {
    SetPlayerPos(playerid,246.4, 110.84, 1003.22);//Position wo der Spieler hinteleportiert wird bei /enter
    SetPlayerInterior(playerid,10);// Interoir(nur bei selbst gemachten Objekten)
    GameTextForPlayer(playerid, "~w~ Cop-Base", 5000, 1);// Text die kommt wenn man zu dem Punkt Teleoprtiert wird
    }}


    //grove
    if(gTeam[playerid] == TEAM_GROVE)
    {
    if (PlayerToPoint(3.0, playerid,2523.2729,-1679.2501,15.4970))// wo man /enter eingeben kann, das 3.0 ist der Radius
    {
    SetPlayerPos(playerid,2451.1497,-1685.2985,1013.5078);//Position wo der Spieler hinteleportiert wird bei /enter
    SetPlayerFacingAngle( playerid, 180 ); // Dreh grad
    SetPlayerInterior(playerid,2);// Interoir(nur bei selbst gemachten Objekten)
    GameTextForPlayer(playerid, "~w~ GroveStreet Base", 5000, 1);// Text die kommt wenn man zu dem Punkt Teleoprtiert wird
    }}
    //Arme
    if(gTeam[playerid] == TEAM_ARME)
    {
    if (PlayerToPoint(3.0, playerid,2721.1414,-2380.0479,17.3403))// wo man /enter eingeben kann, das 3.0 ist der Radius
    {
    SetPlayerPos(playerid,314.820984, -141.431992, 999.661987);//Position wo der Spieler hinteleportiert wird bei /enter
    SetPlayerFacingAngle( playerid, 180 ); // Dreh grad
    SetPlayerInterior(playerid,7);// Interoir(nur bei selbst gemachten Objekten)
    GameTextForPlayer(playerid, "~w~ Arme Base", 5000, 1);// Text die kommt wenn man zu dem Punkt Teleoprtiert wird
    }
    }
    //Zombie
    if(gTeam[playerid] == TEAM_ZOMBIE)
    {
    if (PlayerToPoint(3.0, playerid,940.7739,-1085.2761,24.2962))// wo man /enter eingeben kann, das 3.0 ist der Radius
    {
    SetPlayerPos(playerid,295.138977, 1474.469971, 1080.519897);//Position wo der Spieler hinteleportiert wird bei /enter
    SetPlayerInterior(playerid,15);// Interoir(nur bei selbst gemachten Objekten)
    GameTextForPlayer(playerid, "~w~ Zombie Base", 5000, 1);// Text die kommt wenn man zu dem Punkt Teleoprtiert wird
    }
    }
    return 1;
    }

    Der Teil vom Timer müsste reichen...

    Spoiler anzeigen

    new aid=GetPlayerVehicleID(i);
    if(GetPlayerState(i)==PLAYER_STATE_DRIVER) {
    if(benziner(aid)) {
    new sstring[160], Float:jx, Float:jy, Float:jz, mid=GetVehicleModel(aid);
    GetPlayerPos(i,jx,jy,jz);
    new Float:distanz=floatsqroot(floatpower(floatabs(floatsub(jx,ax[i])),2)+floatpower(floatabs(floatsub(jy,ay[i])),2)+floatpower(floatabs(floatsub(jz,az[i])),2));
    distanz=floatround(distanz*3000);
    distanz=floatround(distanz/1000);
    new zs[20], Float:aleben;
    GetVehicleHealth(aid,aleben);
    if(aleben<=249) {
    fi[aid][istkaputt]=1;
    SendClientMessage(i,rot,"Dein Fahrzeug ist stark beschädigt, verlasse es mit /aussteigen und rufe das Ordnungsamt an mit der Nummer 111");
    SetVehicleHealth(aid,250);
    TogglePlayerControllable(i,0);
    fi[aid][motor]=0;
    }
    if(aleben>=1000) { format(zs,sizeof(zs),"perfekt"); }
    else if(aleben>=750) { format(zs,sizeof(zs),"gut"); }
    else if(aleben>=500) { format(zs,sizeof(zs),"durchschnittlich"); }
    else if(aleben>=350) { format(zs,sizeof(zs),"schlecht"); }
    else if(aleben<350) { format(zs,sizeof(zs),"katastrophal"); }
    if(fi[aid][istan]==1) {
    fi[aid][kmstand]+=distanz/1000; }
    if(fi[aid][istan]==0) { fi[aid][istan]=1; }
    if(pi[i][machtautoschein]>=1 || pi[i][machtmotorradschein]>=1) {
    if(aleben<=250) {
    RemovePlayerFromVehicle(i);
    DestroyVehicle(pi[i][fahrauto]);
    SendClientMessage(i,gelb,"|________Ergebnis________|");
    SendClientMessage(i,blau,"Du hast wegen zu großer Beschädigung des Fahrzeuges nicht bestanden");
    SendClientMessage(i,blau,"Die Prüfungsgebühr, sowie die Reperatur des Fahrzeuges musst du trotzdem zahlen. Dies sind 500$");
    GivePlayerGeld(i,-500);
    SetPlayerInterior(i,3);
    SetPlayerPos(i,-2022.138305,-116.718391,1035.171875); }
    if(pi[i][automostrecke]<=14 || pi[i][automostrecke]>=19) {
    if(floatround(distanz)>=100) {
    pi[i][fehlerpunkte]++; }}}
    //--------------------------------------------------------------------------
    if(fi[aid][motor]==1) {
    if(fi[aid][tank]>0) {
    fi[aid][tank]-=distanz*0.0004+0.001; }
    else {
    fi[aid][tank]=0;
    SendClientMessage(i,blau,"Dein Tank ist leer, nutze /aussteigen um aus dem Fahrzeug zu gelangen");
    fi[aid][motor]=0;
    TogglePlayerControllable(i,0); }}
    //--------------------------------------------------------------------------
    format(sstring,sizeof(sstring),"Kraftstoff: %.2f/60.00 Liter~n~Geschwindigkeit: %d km/h~n~Fahrzeug: %s~n~Zustand: %s~n~Kilometerstand: %.2f",fi[aid][tank],floatround(distanz),autonamen[mid-400],zs,fi[aid][kmstand]);
    TextDrawSetString(sprit[i],sstring);
    ax[i]=jx;
    ay[i]=jy;
    az[i]=jz;
    }

    PS: Es läuft für jede Person ein einzelnde Timer, also SetTimerEx (mit SetTimer und dann ner for-player-schleife hab ichs auch schon versucht... funktioniert auch nicht)
    PS2: Sollte der gesamte Timerinhalt benötigt werden, postei ch den auch, wollte das jetzt nur nicht, da dieser 300 Zeilen lang ist

    Hallo, ich habe ein Riesenproblem, welches ich einfach nicht behoben bekommen, es sieht so aus:
    Kleine Vorgeschichte: Auf dem Server sind 2 Leute (ID 0 und ID 1)
    Nun connecte ich auf den Server (als ID 2), dann sehe ich den Tacho von ID 0, wenn ID 0 jetzt von seinem Fahrzeug absteigt, sehe ich für eine Sekunde keinen Tacho, danach den von ID 1, wenn ID 0 jetzt wieder in in das Fahrzeug steigt, sehe ich den Tacho von ID 0 und ID 1, welche sich beide auch jede Sekunde aktualisieren
    Wenn ich jetzt noch selbst in ein Fahrzeug steige, sehe ich 3 Tachos, die sich alle 3 auch aktualisieren
    Code ("maxon" steht für 32):
    //ganz oben:
    new Text:sprit[maxon];
    //OnPlayerConnect:
    sprit[playerid]=TextDrawCreate(250.0, 395.0," ");
    for(new i=0; i<maxon; i++) {
    TextDrawHideForPlayer(playerid,sprit[i]); }
    //OnPlayerDisconnect:
    TextDrawHideForPlayer(playerid,sprit[playerid]);
    TextDrawDestroy(sprit[playerid]);
    //bei /login:
    TextDrawSetString(sprit[playerid]," ");
    for(new i=0; i<maxon; i++) {
    TextDrawHideForPlayer(playerid,sprit[i]); }
    //bei OnPlayerSpawn
    for(new i=0; i<maxon; i++) {
    TextDrawHideForPlayer(playerid,sprit[i]); }
    //im timer:
    //bei den "[...]" steht nichts für den TextDraw relevantes und "aid" steht für "Autoid", also "new aid=GetPlayerVehicleID(i);"
    [...]
    format(sstring,sizeof(sstring),"Kraftstoff: %.2f/60.00 Liter~n~Geschwindigkeit: %d km/h~n~Fahrzeug: %s~n~Zustand: %s~n~Kilometerstand: %.2f",fi[aid][tank],floatround(distanz),autonamen[mid-400],zs,fi[aid][kmstand]);
    TextDrawSetString(sprit[i],sstring);
    [...]
    //OnPlayerStateChange:
    //newstate==2:
    TextDrawShowForPlayer(playerid,sprit[playerid]);
    //oldstate==2
    TextDrawSetString(sprit[playerid]," ");
    TextDrawHideForPlayer(playerid,sprit[playerid]);
    Ich hoffe, dass mir jemand helfen kann, ich verzweifel daran

    Ok, nochmal vielen Dank an alle, die beteiligt waren, der Tag ist nun um, dann würd ich ma sagen:
    _####__#_________##_____#####__#####__###
    #______#________#__#____#______#______#__#
    #______#_______#____#___#______#______#___#
    #______#______#______#__#####__#####__#___#
    #______#_______#____#_______#__#______#___#
    #______#________#__#________#__#______#__#
    _####__#####_____##_____#####__#####__###

    Bei Wünschen, bei denen man mit Parametern arbeitet ist es hilfreich, wenn man dabei schreibt, wie man sie ausliest, ansonsten weiß man nciht, ob man die Methode trifft... aber ich probiers mal...
    //ganz nch oben:
    new gwdn[MAX_PLAYERS];
    //OnPlayerrCommandText:
    dcmd(givegw,6,cmdtext);
    dcmd(showgw,6,cmdtext);
    //außerhalb eines publics:
    dcmd_givegw(playerid,params[]) {
    new typ, note;
    if(sscanf(params,"dd"typ,note)) return SendClientMessage(playerid,FARBE,"/givegw ID Note");
    if(IsPlayerConnected(typ)) {
    new s[100], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(s,sizeof(s),"Du hast %s die Grundwehrnote %d gegeben",name,note);
    SendClientMessage(playerid,FARBE,s);
    gwdn[typ]=note; }
    return 1;
    }
    dcmd_showgw(playerid,params[]) {
    if(!strlen(params)) return SendClientMessage(playerid,FARBE,"/showgw ID");
    new typ=strval(params);
    if(IsPlayerConnected(typ)) {
    new s[60], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(s,sizeof(s),"Grundwehrnote von %s: %d",name,gwdn[playerid]);
    SendClientMessage(typ,FARBE,s); }
    return 1;
    }
    Wenn Errors wegen dcmd oder sscanf kommen sollten...
    sscanf: Klick
    dcmd: Suche hier nach der "Define line"