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
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;
{
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;
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;
{
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;
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;
}
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;
}
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;
}
{
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;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 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);
}
// 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