[INCLUDE] Blitzer - System

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • [INCLUDE] Blitzer - System

      Beschreibung:
      Dieses Include ermöglicht dem Scripter einfach hinzufügen bzw. entfernen von Blitzern.
      Beim Erstellen der Blitzer kann man selber die Geschwindigkeit und den Radius angeben. Nützlich für enge Stadtkurven oder breite Schnellstraßen.
      Außerdem ist eine Blitzfunktion vorhanden, welche dem Spieler ein kleines Bußgeld berechnet.

      Funktionen:
      - MAX_BLITZER 15 // Maximale Anzahl von Blitzern
      - BLITZER_TIMER_INTERVALL 500 // Intervall für das Blitzen (in Milliesekunden)
      - BLITZER_PAUSE 2 // Anzahl der Minuten, in denen der Spieler nicht mehr geblitzt werden kann
      - AddBlitzer(playerid,speed,radius); // erstellt einen Blitzer
      - RemoveBlitzer(playerid); // entfernt einen Blitzer in der Nähe des Spielers
      - RemoveAllBlitzer(); // entfernt alle Blitzer
      - CountBlitzer(); // Zählt alle erstellten Blitzer

      Installation:
      Die Installation ist ganz simple und für jeden verständlich.
      Ihr ladet euch "blitzer.inc" runter und fügt diese in euren "Includes" - Ordner ein.
      Danach fügt ihr im Kopf eures Scripts dieses Include ein:

      PAWN-Quellcode

      1. #include <blitzer>

      Als letztes müßt ihr die Timer-Funktion in einen eurer Timer einfügen oder einen neuen erstellen:

      PAWN-Quellcode

      1. public OnGameModeInit(playerid) {
      2. SetTimer("Blitzer_Timer", BLITZER_TIMER_INTERVALL, 1);
      3. return 1;
      4. }


      Möglicher Gebrauch:

      PAWN-Quellcode

      1. dcmd_blitzer(playerid, params[]) {
      2. new speed,radius;
      3. if (sscanf(params, "ii", speed, radius)) {
      4. SendClientMessage(playerid, 0xffffffff, "Benutzung: /blitzer [Geschwindigkeit] [Radius]");
      5. return 1;
      6. }
      7. AddBlitzer(playerid,speed,radius);
      8. return 1;
      9. }

      Download:

      - PasteBin
      - Uploaded
      - breadfish.de/index.php?attachm…d22ae422708d46c2b67632a0d

      Danksagung:
      - danke an Ping, für das Erklären und Optimieren

      Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von ̘ᴄᴛȧᴄ̙ ()

      Beitrag von TPO ()

      Dieser Beitrag wurde vom Autor gelöscht ().
    • Ich sagte immer schon das die Xtreme Roleplay gute Scripter haben.. Du machst deine Arbeit gut :P
      Ich sag mal so: 10/10 Ich werd irgendwann mal Ausprobieren brauch ich eigentlich nicht, ich weiß jetzt schon das es Power Full ist ;)
      I don't make SQL jokes myself....i get them FROM users :thumbup:
      Alter SA:MP Sack
      War hier schon bevor du da warst (95%ige Wahrscheinlichkeit (sagt Opa))

      Opas Objektstreamer v 5.1.1 | Twitter | Coderz | M2MP
    • PAWN-Quellcode

      1. C:\Dokumente und Einstellungen\Alex\Desktop\Blitzersystem.pwn(22) : error 017: undefined symbol "MAX_PLAYERS"
      2. C:\Dokumente und Einstellungen\Alex\Desktop\Blitzersystem.pwn(23) : error 017: undefined symbol "IsPlayerInAnyVehicle"
      3. C:\Dokumente und Einstellungen\Alex\Desktop\Blitzersystem.pwn(24) : error 017: undefined symbol "IsPlayerConnected"
      4. C:\Dokumente und Einstellungen\Alex\Desktop\Blitzersystem.pwn(26) : error 017: undefined symbol "IsPlayerInRangeOfPoint"
      5. C:\Dokumente und Einstellungen\Alex\Desktop\Blitzersystem.pwn(28) : error 017: undefined symbol "GetPVarInt"
      6. C:\Dokumente und Einstellungen\Alex\Desktop\Blitzersystem.pwn(29) : warning 217: loose indentation
      7. C:\Dokumente und Einstellungen\Alex\Desktop\Blitzersystem.pwn(32) : error 017: undefined symbol "SetPVarInt"
      8. C:\Dokumente und Einstellungen\Alex\Desktop\Blitzersystem.pwn(39) : error 017: undefined symbol "SetPVarInt"
      9. C:\Dokumente und Einstellungen\Alex\Desktop\Blitzersystem.pwn(41) : error 017: undefined symbol "SetPVarInt"
      10. C:\Dokumente und Einstellungen\Alex\Desktop\Blitzersystem.pwn(42) : error 017: undefined symbol "PlayerPlaySound"
      11. C:\Dokumente und Einstellungen\Alex\Desktop\Blitzersystem.pwn(43) : error 017: undefined symbol "GivePlayerMoney"
      12. C:\Dokumente und Einstellungen\Alex\Desktop\Blitzersystem.pwn(45) : error 017: undefined symbol "SendClientMessage"
      13. C:\Dokumente und Einstellungen\Alex\Desktop\Blitzersystem.pwn(46) : error 017: undefined symbol "format"
      14. C:\Dokumente und Einstellungen\Alex\Desktop\Blitzersystem.pwn(46) : warning 202: number of arguments does not match definition
      15. C:\Dokumente und Einstellungen\Alex\Desktop\Blitzersystem.pwn(46) : warning 202: number of arguments does not match definition
      16. C:\Dokumente und Einstellungen\Alex\Desktop\Blitzersystem.pwn(46) : warning 202: number of arguments does not match definition
      17. C:\Dokumente und Einstellungen\Alex\Desktop\Blitzersystem.pwn(46) : error 017: undefined symbol "GetPVarInt"
      18. C:\Dokumente und Einstellungen\Alex\Desktop\Blitzersystem.pwn(47) : error 017: undefined symbol "SendClientMessage"
      19. C:\Dokumente und Einstellungen\Alex\Desktop\Blitzersystem.pwn(111) : error 017: undefined symbol "IsPlayerInAnyVehicle"
      20. C:\Dokumente und Einstellungen\Alex\Desktop\Blitzersystem.pwn(111) : error 017: undefined symbol "GetVehicleVelocity"
      21. C:\Dokumente und Einstellungen\Alex\Desktop\Blitzersystem.pwn(111) : error 017: undefined symbol "GetPlayerVelocity"
      22. C:\Dokumente und Einstellungen\Alex\Desktop\Blitzersystem.pwn(111) : fatal error 107: too many error messages on one line
      23. Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
      24. 18 Errors.
      Alles anzeigen


      ;( ;( ;( ;( ;( ;(

      Kann mir das einer einfach als Filterscript verpacken ? X/

    • Ja klar Funktioniert das mit den neusten Includes die ich als Hotkey verlinkt habe, aber mal wieder so Dumm um sie richtig zu Positionieren.
      Ahja, einfach Krass die Inc. Habs ausprobiert und ich denke wirkt mehr RP als sonst ;)
      I don't make SQL jokes myself....i get them FROM users :thumbup:
      Alter SA:MP Sack
      War hier schon bevor du da warst (95%ige Wahrscheinlichkeit (sagt Opa))

      Opas Objektstreamer v 5.1.1 | Twitter | Coderz | M2MP
    • Wo müssen die rein? 8|

      Pawno --> Include ?

      oder Server Ordner --> Include ?

      PAWN-Quellcode

      1. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
      2. // Credits:
      3. // Script erstellt von Stas
      4. // Offizieller Scripter der Xtreme - RolePlay - Community
      5. // www.xtreme-roleplay.eu
      6. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
      7. // Einstellungen
      8. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
      9. #define MAX_BLITZER 15 // Maximale Anzahl von Blitzern
      10. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
      11. // globale Variablen
      12. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
      13. enum eBlitzer {
      14. ID, Float:BlitzerX, Float:BlitzerY, Float:BlitzerZ, Radius, Geschwindigkeit, Erstellt
      15. };
      16. new Blitzer[MAX_BLITZER][eBlitzer];
      17. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
      18. // CallBacks
      19. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
      20. forward Blitzer_Timer();
      21. public Blitzer_Timer() {
      22. for (new playerid = 0; playerid < MAX_PLAYERS; playerid++) {
      23. if(!IsPlayerInAnyVehicle(playerid)) return 1;
      24. if(!IsPlayerConnected(playerid) || IsPlayerNPC(playerid)) continue;
      25. for(new i = 0; i < sizeof(Blitzer); i++) {
      26. if(IsPlayerInRangeOfPoint(playerid, Blitzer[i][Radius], Blitzer[i][BlitzerX], Blitzer[i][BlitzerY], Blitzer[i][BlitzerZ])) {
      27. if(Blitzer[i][Erstellt] == 1) {
      28. new save = GetPVarInt(playerid, "BitzPause");
      29. if(save > 0)
      30. {
      31. save--;
      32. SetPVarInt(playerid, "BitzPause", save);
      33. return 1;
      34. }
      35. new speed = GetPlayerSpeed(playerid,true);
      36. if(speed > Blitzer[i][Geschwindigkeit]) {
      37. new string[128];
      38. // Einstellen des Momentes, in dem der Spieler kein weiteres mal geblitzt werden kann
      39. SetPVarInt(playerid, "BitzPause", 15);
      40. // Strafe für Spieler
      41. SetPVarInt(playerid, "BitzStrafe", (speed*12/6) - Blitzer[i][Geschwindigkeit]);
      42. PlayerPlaySound(playerid, 1132, 0.0, 0.0, 0.0);
      43. GivePlayerMoney(playerid, -GetPVarInt(playerid, "BitzStrafe"));
      44. // Text für Spieler
      45. SendClientMessage(playerid, 0xFF6347AA,"Du wurdest wegen zu hoher Geschwindigkeit geblitzt!");
      46. format(string,sizeof(string), "Du bist %d km/h gefahren und musst $%d Bußgeld bezahlen.", speed, GetPVarInt(playerid, "BitzStrafe"));
      47. SendClientMessage(playerid, 0xFF6347AA, string);
      48. }
      49. }
      50. }
      51. }
      52. }
      53. return 1;
      54. }
      55. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
      56. // Funktionen
      57. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
      58. stock AddBlitzer(playerid,speed,radius) {
      59. new Float:x, Float:y, Float:z;
      60. GetPlayerPos(playerid,x,y,z);
      61. for(new i = 0; i < sizeof(Blitzer); i++) {
      62. if(Blitzer[i][Erstellt] == 0) {
      63. Blitzer[i][BlitzerX] = x + 1.0;
      64. Blitzer[i][BlitzerY] = y + 1.0;
      65. Blitzer[i][BlitzerZ] = z;
      66. Blitzer[i][Geschwindigkeit] = speed;
      67. Blitzer[i][Radius] = radius;
      68. Blitzer[i][Erstellt] = 1;
      69. Blitzer[i][ID] = CreateObject(1278, x + 1.0, y + 1.0, z, 0.0, 0.0, 10);
      70. return 1;
      71. }
      72. }
      73. return 0;
      74. }
      75. stock RemoveBlitzer(playerid) {
      76. for(new i = 0; i < sizeof(Blitzer); i++) {
      77. if(IsPlayerInRangeOfPoint(playerid, Blitzer[i][eRadius], Blitzer[i][BlitzerX], Blitzer[i][BlitzerY], Blitzer[i][BlitzerZ])) {
      78. if(Blitzer[i][Erstellt] == 1) {
      79. Blitzer[i][Erstellt] = 0;
      80. Blitzer[i][BlitzerX] = 0.0;
      81. Blitzer[i][BlitzerY] = 0.0;
      82. Blitzer[i][BlitzerZ] = 0.0;
      83. DestroyObject(Blitzer[i][ID]);
      84. return 1;
      85. }
      86. }
      87. }
      88. return 0;
      89. }
      90. stock RemoveAllBlitzer() {
      91. for(new i = 0; i < sizeof(Blitzer); i++) {
      92. if(Blitzer[i][Erstellt] == 1) {
      93. Blitzer[i][Erstellt] = 0;
      94. Blitzer[i][BlitzerX] = 0.0;
      95. Blitzer[i][BlitzerY] = 0.0;
      96. Blitzer[i][BlitzerZ] = 0.0;
      97. DestroyDynamicObject(Blitzer[i][ID]);
      98. }
      99. }
      100. return 0;
      101. }
      102. stock CountBlitzer() {
      103. new anzahl = 0;
      104. for(new i = 0; i < sizeof(Blitzer); i++) {
      105. if(Blitzer[i][Erstellt] == 1) anzahl++;
      106. }
      107. return anzahl;
      108. }
      109. stock GetPlayerSpeed(playerid,bool:kmh) {
      110. new Float:x,Float:y,Float:z,Float:rtn;
      111. if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),x,y,z); else GetPlayerVelocity(playerid,x,y,z);
      112. rtn = floatsqroot(floatabs(floatpower(x + y + z,2)));
      113. return kmh?floatround(rtn * 100 * 1.61):floatround(rtn * 100);
      114. }
      Alles anzeigen
    • Danke euch, für die guten Bewertungen. Hoffe ich konnte damit einigen das Leben vereinfachen : )
    • Sieht ganz nett aus, allerdings ist OnPlayerUpdate ungünstig um die Position abzufragen.
      Da es ja PRO Spieler etwa 30 mal pro Sekunde (entspricht einem Timer der sich alle 33,3 ms wiederholt) aufgerufen wird und dabei für jeden Spieler der Abstand zum Blitzer gemessen wird kann dass bei vielen Usern zu laggs führen.

      Ich würde eher einen Timer durchlaufen lassen, welcher sich in einem größeren Zeitintervall wiederholt (500 - 1000 ms).

      Nicht jeder, der sich für super hält, ist ein Superheld. :love:
      ------------------------------------------------------------------------------------------------

    • Hast Recht, steht ja auch oben in einen Timer. Wollte halt fürs Beispiel nicht unbedingt einen Timer erstellen, da es eig. nicht jeder weiß, wie es geht.
      Und wenn nicht, sollte er nicht mit Includes arbeiten sondern Grunflagen lernen.

      PS: Optimiere das Script grade noch von der Perfomance her ein bisschen .. hatte einige Sachen schlecht durchdacht.


      // Update: //
      Performance-Optimierung mit Hilfevon Ping durchgeführt!

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ̘ᴄᴛȧᴄ̙ ()