Blitz (Textdraw (Weiß)) nur für den Fahrer anzeigen

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 zusammen,


    ich habe hier mal ein Weißes Textdraw, was über den ganzen Bildschirm geht eingefügt welches ein "Blitz" Darstellen soll
    erstellt.


    Nun soll NUR der Fahrer diesen Blitz sehen.


    Auf der einen Seite kann ich es schlecht testen da ich allein bin


    auf der anderen Seite hab ich jmd gefunden der als Beifahrer fuhr (ID 0, ich ID 1)
    und weder ich noch er sah dieses Textdraw




    hier mal das wichtigste


    Spoiler anzeigen
    ocmd:blitzerhelp(playerid,params[])
    {
    ShowPlayerDialog(playerid,DIALOG_BLITZER,DIALOG_STYLE_MSGBOX,"Blitzer - Befehle","/createblitzer | erstellt einen Blitzer \n /delblitzer | löscht einen Blitzer | \n /delallblitzer | löscht alle Blitzer |\n /countblitzer | Zählt alle erstellten Blitzer","OK","");
    }
    ocmd:createblitzer(playerid, params[])
    {
    new speed,radius;
    if(!isAdmin(playerid,6)) return 0; //if(!isPlayerInFrak(playerid,8)&& !isAdmin(playerid,3))
    if(!isPlayerInFrak(playerid,1))
    if(!isPlayerInFrak(playerid,2))
    if(!isPlayerInFrak(playerid,3))
    if(!isPlayerRang(playerid,3)) return 0;

    Spoiler anzeigen
    if (sscanf(params, "ii", speed, radius))
    {
    SendClientMessage(playerid, 0xffffffff, "Benutzung: /createblitzer [Geschwindigkeit] [Radius]");
    return 1;
    }
    AddBlitzer(playerid,speed,radius);
    return 1;
    }
    ocmd:delblitzer(playerid, params[])
    {

    if(!isAdmin(playerid,6)) return 0;
    if(!isAdmin(playerid,6)) return 0; //if(!isPlayerInFrak(playerid,8)&& !isAdmin(playerid,3))
    if(!isPlayerInFrak(playerid,1))
    if(!isPlayerInFrak(playerid,2))
    if(!isPlayerInFrak(playerid,3))
    if(!isPlayerRang(playerid,3)) return 0;

    Spoiler anzeigen
    SendClientMessage(playerid, 0xffffffff, "Ein Blitzer wurde erfolgreich gelöscht!");
    RemoveBlitzer(playerid);
    return 1;
    }
    ocmd:delallblitzer(playerid, params[])
    {

    if(!isAdmin(playerid,6)) return 0;
    if(!isAdmin(playerid,6)) return 0; //if(!isPlayerInFrak(playerid,8)&& !isAdmin(playerid,3))
    if(!isPlayerInFrak(playerid,1))
    if(!isPlayerInFrak(playerid,2))
    if(!isPlayerInFrak(playerid,3))
    if(!isPlayerRang(playerid,4)) return 0;
    SendClientMessage(playerid, 0xffffffff, "Es wurden alle Blitzer erfolgreich gelöscht!");
    RemoveAllBlitzer();
    return 1;
    }

    Spoiler anzeigen
    ocmd:countblitzer(playerid, params[])
    {

    if(!isAdmin(playerid,6)) return 0;
    if(!isAdmin(playerid,6)) return 0; //if(!isPlayerInFrak(playerid,8)&& !isAdmin(playerid,3))
    if(!isPlayerInFrak(playerid,1))
    if(!isPlayerInFrak(playerid,2))
    if(!isPlayerInFrak(playerid,3))
    if(!isPlayerRang(playerid,3)) return 0;
    SendClientMessage(playerid, 0xffffffff, "Benutzung: /countallblitzer");
    CountBlitzer();

    return 1;
    }

    Spoiler anzeigen
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // Credits:
    // Script erstellt von Stas
    // Offizieller Scripter der Xtreme - RolePlay - Community
    // www.xtreme-roleplay.eu
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // Einstellungen
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    #define MAX_BLITZER 15 // Maximale Anzahl von Blitzern
    // Intervall für das Blitzen (in Milliesekunden)
    #define BLITZER_PAUSE 1 // Anzahl der Minuten, in denen der Spieler nicht mehr geblitzt werden kann
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // globale Variablen
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    enum eBlitzer {
    ID, Float:BlitzerX, Float:BlitzerY, Float:BlitzerZ, eRadius, Geschwindigkeit, Erstellt
    };
    new Blitzer[MAX_BLITZER][eBlitzer];
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // CallBacks
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    forward Blitzer_Timer();
    public Blitzer_Timer()
    {
    new save, strafe, speed;
    //for (new playerid = 0; playerid < MAX_PLAYERS; playerid++)
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    save = GetPVarInt(i, "BlitzPause");
    if(save > 0)
    {
    save--;
    SetPVarInt(i, "BlitzPause", save);
    continue;
    }
    if(!IsPlayerInAnyVehicle(i) || IsPlayerNPC(i)) continue;
    for(new b = 0; b < sizeof(Blitzer); b++)
    {
    if(Blitzer[b][Erstellt] == 1)
    {
    if(IsPlayerInRangeOfPoint(i, Blitzer[b][eRadius], Blitzer[b][BlitzerX], Blitzer[b][BlitzerY], Blitzer[b][BlitzerZ]))
    {
    new playerState = GetPlayerState(i);
    if(playerState == PLAYER_STATE_PASSENGER)return 0;
    speed = ErmittleGeschwindigkeit(i,true);
    if(speed > Blitzer[b][Geschwindigkeit])
    {
    new string[128];
    // Einstellen des Momentes, in dem der Spieler kein weiteres mal geblitzt werden kann
    SetPVarInt(i, "BlitzPause", (BLITZER_TIMER_INTERVALL * BLITZER_PAUSE * 60) / 1000);
    // Strafe für Spieler
    strafe = (speed*2) - Blitzer[b][Geschwindigkeit];
    PlayerPlaySound(i, 1132, 0.0, 0.0, 0.0);
    GivePlayerMoney(i, -strafe);
    // Text für Spieler
    SendClientMessage(i, 0xFF6347AA,"Du wurdest wegen zu hoher Geschwindigkeit geblitzt!");
    format(string,sizeof(string), "Du bist %d km/h gefahren und musst %d€ Bußgeld bezahlen.", speed, strafe);
    SendClientMessage(i, 0xFF6347AA, string);
    TextDrawShowForPlayer(i,BlitzerDraw);
    SetTimerEx("BlitzDelete",1000,false,"i",i);
    }
    }
    }
    }
    }
    return 1;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // Funktionen
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    stock AddBlitzer(playerid,speed,radius) {
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid,x,y,z);
    for(new i = 0; i < sizeof(Blitzer); i++) {
    if(Blitzer[i][Erstellt] == 0) {
    Blitzer[i][BlitzerX] = x + 1.0;
    Blitzer[i][BlitzerY] = y + 1.0;
    Blitzer[i][BlitzerZ] = z;
    Blitzer[i][Geschwindigkeit] = speed;
    Blitzer[i][eRadius] = radius;
    Blitzer[i][Erstellt] = 1;
    Blitzer[i][ID] = CreateObject(1278, x + 1.0, y + 1.0, z, 0.0, 0.0, 10);
    return 1;
    }
    }
    return 0;
    }
    forward BlitzDelete(playerid);
    public BlitzDelete(playerid)
    {
    TextDrawHideForPlayer(playerid,BlitzerDraw);
    return 1;
    }
    stock RemoveBlitzer(playerid) {
    for(new i = 0; i < sizeof(Blitzer); i++) {
    if(Blitzer[i][Erstellt] == 1) {
    if(IsPlayerInRangeOfPoint(playerid, Blitzer[i][eRadius], Blitzer[i][BlitzerX], Blitzer[i][BlitzerY], Blitzer[i][BlitzerZ])) {
    Blitzer[i][Erstellt] = 0;
    Blitzer[i][BlitzerX] = 0.0;
    Blitzer[i][BlitzerY] = 0.0;
    Blitzer[i][BlitzerZ] = 0.0;
    DestroyObject(Blitzer[i][ID]);
    return 1;
    }
    }
    }
    return 0;
    }
    stock RemoveAllBlitzer() {
    for(new i = 0; i < sizeof(Blitzer); i++) {
    if(Blitzer[i][Erstellt] == 1) {
    Blitzer[i][Erstellt] = 0;
    Blitzer[i][BlitzerX] = 0.0;
    Blitzer[i][BlitzerY] = 0.0;
    Blitzer[i][BlitzerZ] = 0.0;
    DestroyObject(Blitzer[i][ID]);
    }
    }
    return 0;
    }
    stock CountBlitzer() {
    new anzahl = 0;
    for(new i = 0; i < sizeof(Blitzer); i++) {
    if(Blitzer[i][Erstellt] == 1) anzahl++;
    }
    //SendClientMessage(i,-1,anzahl);
    return anzahl;
    }
    stock ErmittleGeschwindigkeit(playerid,bool:kmh) {
    new Float:x,Float:y,Float:z,Float:rtn;
    if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),x,y,z); else GetPlayerVelocity(playerid,x,y,z);
    rtn = floatsqroot(x*x+y*y+z*z);
    return kmh?floatround(rtn * 100 * 1.00):floatround(rtn * 100);
    }


    zusätzlich habe ich das poroblem dass ich die ANZAHL der verfügbaren (erstellten) blitzer nicht richtig ausgegeben bekomme



    Falls ihr Fragen habt sagt bescheid



    Vielen dank für jede Hilfe

  • Ist der Textdraw überhaupt erstellt worden im Script unter OnPlayerConnect? Sehe nur, dass er angezeigt/versteckt wird.
    Nebenbei darf, soviel ich weiß, bei einer Schleife kein Return 0 hinein.



    forward Blitzer_Timer();
    public Blitzer_Timer()
    {
    new save, strafe, speed;
    //for (new playerid = 0; playerid < MAX_PLAYERS; playerid++)
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    save = GetPVarInt(i, "BlitzPause");
    if(save > 0)
    {
    save--;
    SetPVarInt(i, "BlitzPause", save);
    continue;
    }
    if(!IsPlayerInAnyVehicle(i) || IsPlayerNPC(i)) continue;
    for(new b = 0; b < sizeof(Blitzer); b++)
    {
    if(Blitzer[b][Erstellt] == 1)
    {
    if(IsPlayerInRangeOfPoint(i, Blitzer[b][eRadius], Blitzer[b][BlitzerX], Blitzer[b][BlitzerY], Blitzer[b][BlitzerZ]))
    {
    new playerState = GetPlayerState(i);
    if(playerState != PLAYER_STATE_PASSENGER) continue; //Hier
    speed = ErmittleGeschwindigkeit(i,true);
    if(speed > Blitzer[b][Geschwindigkeit])
    {
    new string[128];
    // Einstellen des Momentes, in dem der Spieler kein weiteres mal geblitzt werden kann
    SetPVarInt(i, "BlitzPause", (BLITZER_TIMER_INTERVALL * BLITZER_PAUSE * 60) / 1000);
    // Strafe für Spieler
    strafe = (speed*2) - Blitzer[b][Geschwindigkeit];
    PlayerPlaySound(i, 1132, 0.0, 0.0, 0.0);
    GivePlayerMoney(i, -strafe);
    // Text für Spieler
    SendClientMessage(i, 0xFF6347AA,"Du wurdest wegen zu hoher Geschwindigkeit geblitzt!");
    format(string,sizeof(string), "Du bist %d km/h gefahren und musst %d€ Bußgeld bezahlen.", speed, strafe);
    SendClientMessage(i, 0xFF6347AA, string);
    TextDrawShowForPlayer(i,BlitzerDraw);
    SetTimerEx("BlitzDelete",1000,false,"i",i);
    }
    }
    }
    }
    }
    return 1;
    }