Advertisement
Guest User

dBlitzer

a guest
Jun 13th, 2012
531
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 11.48 KB | None | 0 0
  1. /*
  2.  
  3.  
  4. Befehle:
  5. /berstellen [id][radius][geschwindigkeit]
  6.     Mit diesem Befehl kannst du einen Blitzer erstellen.
  7. /bloeschen
  8.     Sobald du in der nähe eines Blitzers bist, wird er automatisch gelöescht.
  9. /addbcreator [playerid]
  10.     Mit diesem Befehl kannst du einem Spieler die Befugnis geben einen Blitzer zu erstellen.
  11. /removebcreator [playerid]
  12.     Mit diesem Befehl kannst du einem Spieler die Befugnis nehmen einen Blitzer zu erstellen.
  13. /addnoblitz [playerid]
  14.     Mit diesem Befehl kannst du einen Spieler aus dem Blitzprogramm ausschließen, d.h. er kann nicht mehr geblitzt werden.
  15. /removenoblitz [playerid]
  16.     Mit diesem Befehl kannst du einen Spieler wieder in das Blitzprogramm hinzufügen, d.h. er kann wieder geblitzt werden.
  17.    
  18. Features:
  19. -Blitzer schnell und einfach ingame erstellen
  20. -Blitzerberechtigung geben
  21. -NoBlitz Funktion, per Befehl kann eingestellt werden ob man geblitzt werden kann oder nicht. Prakitsch für aduty.
  22.  
  23. Gescriptet für Midnight Roleplay.
  24. Erstellt von Dominik. .
  25.  
  26. Mehrmals getestet,
  27. ein kleiner Fehler:
  28. Der Timer überprüft alle 1,5 Sekunden ob man in der nähe eines Blitzers ist.
  29. Bei hohem Blitzradius wird man evtl. 2x geblitzt.
  30.  
  31. */
  32. #define FILTERSCRIPT
  33. #include <a_samp>
  34. #include <SII>
  35. #include <rCmd>
  36. #define MAX_BLITZER 10
  37. #define MIN_RADIUS  10
  38. #define MAX_RADIUS  50
  39. #define MIN_SPEED   10
  40. #define MAX_SPEED   100
  41. #define Verzeichnis "Accounts"
  42. forward BlitzCheck(playerid);
  43. #define cGrün      0x23FF00FF
  44. #define cRot        0xE10000FF
  45. #define cOrange     0xFF8200FF
  46. #define cBlau       0x0A00FFFF
  47. enum BlitzerInfo
  48. {
  49.     Float:bX,
  50.     Float:bY,
  51.     Float:bZ,
  52.     bRadius,
  53.     bGeschwindigkeit,
  54.     Text3D:bLabel,
  55.     bObjekt
  56. };
  57. new Blitzer[MAX_BLITZER][BlitzerInfo];
  58. public OnFilterScriptInit()
  59. {
  60.     for(new b = 1; b < MAX_BLITZER; b++)
  61.     {
  62.         bLoad(b);
  63.     }
  64.     print("\n--------------------------------------");
  65.     print(" dBlitzer loaded ...");
  66.     print(" (c)Midnight Roleplay");
  67.     print(" Script by Dominik. .");
  68.     print("--------------------------------------\n");
  69.     return 1;
  70. }
  71. public BlitzCheck(playerid)
  72. {
  73.     new bool:WurdeGeblitzt[MAX_PLAYERS] = false, speed = GetPlayerSpeed(playerid,true), strafe, sName[24];
  74.     GetPlayerName(playerid,sName,24);
  75.     if(IsPlayerInAnyVehicle(playerid))
  76.     {
  77.         for(new b = 1; b < MAX_BLITZER; b++)
  78.         {
  79.             if(IsPlayerInRangeOfPoint(playerid,Blitzer[b][bRadius],Blitzer[b][bX],Blitzer[b][bY],Blitzer[b][bZ]))
  80.             {
  81.                 if(speed > Blitzer[b][bGeschwindigkeit])
  82.                 {
  83.                     new sFile[64]; format(sFile,64,"%s/%s.ini",Verzeichnis,sName);
  84.                     INI_Open(sFile);
  85.                     if(INI_ReadInt("bNoBlitz") != 1)
  86.                     {
  87.                         WurdeGeblitzt[playerid] = true;
  88.                         strafe = speed * 10 - Blitzer[b][bGeschwindigkeit];
  89.                     } else return SendClientMessage(playerid,cOrange,"Du wurdest geblitzt! musstest aber keine Strafe bezahlen da die einen bNoBlitz Rang hast!");
  90.                 }
  91.             }
  92.         }
  93.     }
  94.     if(WurdeGeblitzt[playerid] == true)
  95.     {
  96.         GivePlayerMoney(playerid,-strafe); new string[128];
  97.         format(string,128,"|| %s wurde mit %d km/h geblitzt! Er musste $%d Strafe bezahlen!",sName,speed,strafe);
  98.         SendClientMessageToAll(cBlau,string);
  99.         return 1;
  100.     }
  101.     return 1;
  102. }
  103. rCmd[]->bloeschen(playerid)
  104. {
  105.     new sFile[64], sName[24];
  106.     GetPlayerName(playerid,sName,24);
  107.     format(sFile,64,"%s/%s.ini",Verzeichnis,sName);
  108.     INI_Open(sFile);
  109.     if(INI_ReadInt("bErsteller") != 1) return SendClientMessage(playerid,cRot,"Du bist nicht berechtigt einen Blitzer zu löschen!");
  110.     for(new b = 1; b < MAX_BLITZER; b++)
  111.     {
  112.         if(!IsPlayerInRangeOfPoint(playerid,5.0,Blitzer[b][bX],Blitzer[b][bY],Blitzer[b][bZ])) return SendClientMessage(playerid,cRot,"Du bist nicht nahe Genug an einem Blitzer!");
  113.         new bFile[64]; format(bFile,64,"Blitzer/%d.ini",b); INI_Remove(bFile);
  114.         DestroyObject(Blitzer[b][bObjekt]); Delete3DTextLabel(Blitzer[b][bLabel]);
  115.         Blitzer[b][bObjekt] = 0; Blitzer[b][bX] = 0; Blitzer[b][bY] = 0; Blitzer[b][bZ] = 0; Blitzer[b][bRadius] = 0; Blitzer[b][bGeschwindigkeit] = 0;
  116.         SendClientMessage(playerid,cGrün,"Blitzer erfolgreich geloescht!"); return 1;
  117.     } return 1;
  118. }
  119. rCmd[ddd]->berstellen(playerid,success,blitzerid,radius,geschwindigkeit)
  120. {
  121.     new sFile[64], sName[24];
  122.     GetPlayerName(playerid,sName,24);
  123.     format(sFile,64,"%s/%s.ini",Verzeichnis,sName); INI_Open(sFile);
  124.     if(INI_ReadInt("bErsteller") != 1) return SendClientMessage(playerid,cRot,"Du bist nicht berechtigt einen Blitzer zu erstellen!");
  125.     INI_Close();
  126.     if(!success) return SendClientMessage(playerid,cRot,"Verwendung: /berstellen [blitzerid][radius][geschwindigkeit]");
  127.     if(blitzerid >= 1 && blitzerid <= MAX_BLITZER)
  128.     {
  129.         if(radius <= MAX_RADIUS && radius >= MIN_RADIUS)
  130.         {
  131.             if(geschwindigkeit <= MAX_SPEED && geschwindigkeit >= MIN_RADIUS)
  132.             {
  133.                 new Float:X,Float:Y,Float:Z;
  134.                 GetPlayerPos(playerid,X,Y,Z); bCreate(blitzerid,X,Y,Z,geschwindigkeit,radius);
  135.                 return 1;
  136.                 } else {
  137.                     new string[64];
  138.                     format(string,64,"Die Geschwindigkeit muss zwischen %d und %d liegen!",MIN_SPEED,MAX_SPEED);
  139.                     return SendClientMessage(playerid,cRot,string); }
  140.             } else {
  141.                 new string[64];
  142.                 format(string,64,"Der Radius muss zwischen %d und %d liegen!",MIN_RADIUS,MAX_RADIUS);
  143.                 return SendClientMessage(playerid,cRot,string); }
  144.         } else {
  145.             new string[64];
  146.             format(string,64,"Die BlitzerID muss zwischen 1 und %d liegen!",MAX_BLITZER);
  147.             return SendClientMessage(playerid,cRot,string); }
  148. }
  149. rCmd[d]->addbcreator(playerid,success,addplayerid)
  150. {
  151.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,cRot,"Du bist kein RCON-Administrator!");
  152.     if(!success) return SendClientMessage(playerid,cRot,"Verwendung: /addbcreator [addplayerid]");
  153.     if(IsPlayerConnected(addplayerid) && addplayerid != INVALID_PLAYER_ID)
  154.     {
  155.         new sFile[64], aName[24], sName[24];
  156.         GetPlayerName(playerid,sName,24); GetPlayerName(addplayerid,aName,24);
  157.         format(sFile,64,"%s/%s.ini",Verzeichnis,aName);
  158.         INI_Open(sFile); INI_WriteInt("bErsteller",1);
  159.         INI_Save(); INI_Close();
  160.         new string[2][64];
  161.         format(string[0],64,"Du hast %s erfolgreich den bErsteller Rang gegeben!",aName);
  162.         format(string[1],63,"%s hat dir den den bErsteller Rang gegeben!",sName);
  163.         SendClientMessage(playerid,cGrün,string[0]); SendClientMessage(addplayerid,cOrange,string[1]);
  164.         return 1;
  165.     } else return SendClientMessage(playerid,cRot,"Ungültige SpielerID!");
  166. }
  167. rCmd[d]->removebcreator(playerid,success,addplayerid)
  168. {
  169.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,cRot,"Du bist kein RCON-Administrator!");
  170.     if(!success) return SendClientMessage(playerid,cRot,"Verwendung: /removebcreator [addplayerid]");
  171.     if(IsPlayerConnected(addplayerid) && addplayerid != INVALID_PLAYER_ID)
  172.     {
  173.         new sFile[64], aName[24], sName[24];
  174.         GetPlayerName(playerid,sName,24); GetPlayerName(addplayerid,aName,24);
  175.         format(sFile,64,"%s/%s.ini",Verzeichnis,aName);
  176.         INI_Open(sFile); INI_WriteInt("bErsteller",0);
  177.         INI_Save(); INI_Close(); new string[2][64];
  178.         format(string[0],64,"Du hast %s erfolgreich den bErsteller Rang entzogen!",aName);
  179.         format(string[1],64,"%s hat dir den den bErsteller Rang entzogen!",sName);
  180.         SendClientMessage(playerid,cGrün,string[0]); SendClientMessage(addplayerid,cOrange,string[1]);
  181.         return 1;
  182.     } else return SendClientMessage(playerid,cRot,"Ungültige SpielerID!");
  183. }
  184. rCmd[d]->removenoblitz(playerid,success,addplayerid)
  185. {
  186.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,cRot,"Du bist kein RCON-Administrator!");
  187.     if(!success) return SendClientMessage(playerid,cRot,"Verwendung: /removenoblitz [addplayerid]");
  188.     if(IsPlayerConnected(addplayerid) && addplayerid != INVALID_PLAYER_ID)
  189.     {
  190.         new sFile[64], aName[24], sName[24], string[2][64];
  191.         GetPlayerName(playerid,sName,24); GetPlayerName(addplayerid,aName,24);
  192.         format(sFile,64,"%s/%s.ini",Verzeichnis,aName);
  193.         INI_Open(sFile); INI_WriteInt("bNoBlitz",0);
  194.         INI_Save(); INI_Close();
  195.         format(string[0],64,"Du hast %s erfolgreich den bNoBlitz Rang entzogen!",aName);
  196.         format(string[1],63,"%s hat dir den den bNoBlitz Rang entzogen!",sName);
  197.         SendClientMessage(playerid,cGrün,string[0]); SendClientMessage(addplayerid,cOrange,string[1]);
  198.         return 1;
  199.     } else return SendClientMessage(playerid,cRot,"Ungültige SpielerID!");
  200. }
  201. rCmd[d]->addnoblitz(playerid,success,addplayerid)
  202. {
  203.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,cRot,"Du bist kein RCON-Administrator!");
  204.     if(!success) return SendClientMessage(playerid,cRot,"Verwendung: /addnoblitz [addplayerid]");
  205.     if(IsPlayerConnected(addplayerid) && addplayerid != INVALID_PLAYER_ID)
  206.     {
  207.         new sFile[64], aName[24], sName[24], string[2][64];
  208.         GetPlayerName(playerid,sName,24); GetPlayerName(addplayerid,aName,24);
  209.         format(sFile,64,"%s/%s.ini",Verzeichnis,aName);
  210.         INI_Open(sFile); INI_WriteInt("bNoBlitz",1);
  211.         INI_Save(); INI_Close();
  212.         format(string[0],64,"Du hast %s erfolgreich den bNoBlitz Rang gegeben!",aName);
  213.         format(string[1],63,"%s hat dir den den bNoBlitz Rang gegeben!",sName);
  214.         SendClientMessage(playerid,cGrün,string[0]); SendClientMessage(addplayerid,cOrange,string[1]);
  215.         return 1;
  216.     } else return SendClientMessage(playerid,cRot,"Ungültige SpielerID!");
  217. }
  218.  
  219. public OnPlayerConnect(playerid)
  220. {
  221.     SetTimerEx("BlitzCheck",1500,true,"i",playerid);
  222.     return 1;
  223. }
  224. stock bCreate(blitzerid,Float:X,Float:Y,Float:Z,geschwindigkeit,radius)
  225. {
  226.     new bFile[64];
  227.     format(bFile,64,"Blitzer/%d.ini",blitzerid);
  228.     INI_Open(bFile);
  229.     INI_WriteFloat("X",X); INI_WriteFloat("Y",Y);
  230.     INI_WriteFloat("Z",Z); INI_WriteInt("Geschwindigkeit",geschwindigkeit);
  231.     INI_WriteInt("Radius",radius);
  232.     INI_Save(); INI_Close();
  233.     new text3dtext[128];
  234.     format(text3dtext,128,"||==========||Blitzer||==========||\nGeschwindigkeit: %d\nRadius: %d\n||==========||Blitzer||==========||",geschwindigkeit,radius);
  235.     Blitzer[blitzerid][bX] = X; Blitzer[blitzerid][bY] = Y; Blitzer[blitzerid][bZ] = Z;
  236.     Blitzer[blitzerid][bGeschwindigkeit] = geschwindigkeit;
  237.     Blitzer[blitzerid][bRadius] = radius;
  238.     Blitzer[blitzerid][bLabel] = Create3DTextLabel(text3dtext,cBlau,X+1,Y+1,Z+1,radius / 2,0);
  239.     Blitzer[blitzerid][bObjekt] = CreateObject(18880,X+1,Y+1,Z-1,0.0,0.0,0.0);
  240.     return 1;
  241. }
  242. stock bLoad(blitzerid)
  243. {
  244.     new bFile[64];
  245.     format(bFile,64,"Blitzer/%d.ini",blitzerid);
  246.     INI_Open(bFile);
  247.     Blitzer[blitzerid][bX] = INI_ReadFloat("X"); Blitzer[blitzerid][bY] = INI_ReadFloat("Y"); Blitzer[blitzerid][bZ] = INI_ReadFloat("Z");
  248.     Blitzer[blitzerid][bGeschwindigkeit] = INI_ReadInt("Geschwindigkeit");
  249.     Blitzer[blitzerid][bRadius] = INI_ReadInt("Radius");
  250.     new text3dtext[128];
  251.     format(text3dtext,128,"||==========||Blitzer||==========||\nGeschwindigkeit: %d\nRadius: %d\n||==========||Blitzer||==========||",Blitzer[blitzerid][bGeschwindigkeit],Blitzer[blitzerid][bRadius]);
  252.     Blitzer[blitzerid][bLabel] = Create3DTextLabel(text3dtext,cBlau,Blitzer[blitzerid][bX]+1,Blitzer[blitzerid][bY]+1,Blitzer[blitzerid][bZ]+1,Blitzer[blitzerid][bRadius] / 2,0);
  253.     Blitzer[blitzerid][bObjekt] = CreateObject(18880,Blitzer[blitzerid][bX]+1,Blitzer[blitzerid][bY]+1,Blitzer[blitzerid][bZ]-1,0.0,0.0,0.0);
  254.     INI_Close();
  255.     return 1;
  256. }
  257. stock GetPlayerSpeed(playerid,bool:kmh)
  258. {
  259.     new Float:Vx,Float:Vy,Float:Vz,Float:rtn;
  260.     if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),Vx,Vy,Vz); else GetPlayerVelocity(playerid,Vx,Vy,Vz);
  261.     rtn = floatsqroot(floatabs(floatpower(Vx + Vy + Vz,2)));
  262.     return kmh?floatround(rtn * 100 * 1.61):floatround(rtn * 100);
  263. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement