Advertisement
Guest User

NODM-Zone Script for Samp 0.3 or higher by Templer

a guest
Jul 12th, 2010
569
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 6.52 KB | None | 0 0
  1. /*                                            NoDM-Zone Include by Templer
  2.                                                (for SAMP 0.3 / or higher)
  3.                                     (Inspiriert durch Marco2406 vom Breadfish Forum)
  4.                                 Dieses Script darf von jedermann verändert und benutzt werden!
  5.                             Mir ist es sogar egal, wenn Ihr was von Ihr für euren Vorteil rauskopiert!
  6.                            
  7.                                             Credits:
  8.                                                 -Marco2406 : Für die geistreiche Idee der NoDM Zone für Neulinge & das Textdraw
  9.                                                 -Double-O-Seven : Für das Zeigen wie Include und GM am besten kommunizieren!
  10.                                                 -Samp-Team : Die es überhaupt ermöglicht haben sowas Programmierbar für GTA zu machen!*/
  11.  
  12. #define MAX_DM_ZONES (50) //Wieviele DM Zonen max. verwendet werden.
  13. #define ACTIVATE_NODM_MAPZONES //Auskommentieren um die NoDM Zonen auf der Karte anzuzeigen!
  14.  
  15. #if defined ACTIVATE_NODM_MAPZONES
  16. #define NoDM_MAPZONE_COLOR (0xFF6347AA) //Welche Farbe ist bei NoDM Zonen die auf Karten angezeigt werden! (Nur wenn ACTIVATE_NODM_MAPZONES auskommentiert wurde!) Default: Hellrot
  17.  
  18. //Ab hier nichts mehr ändern, außer du mit dem Programmieren in PAWN vertraut bist!//
  19.  
  20. new gDMMapZone[MAX_DM_ZONES][1];
  21. #endif
  22.  
  23. new gCountNoDMZone = 0;
  24. new bool:gLoaded = false;
  25. new Text:NoDMTextdraw;
  26. new Float:NoDMInfo[MAX_DM_ZONES][4];
  27.  
  28. forward NoDM_OnGameModeInit();
  29. forward NoDM_OnGameModeExit();
  30. forward NoDM_OnPlayerDisconnect(playerid, reason);
  31. forward NoDM_OnPlayerUpdate(playerid);
  32.  
  33. stock NoDM_IsAPlane(carid)
  34. {
  35.     new model = GetVehicleModel(carid);
  36.     if(model==520||model==476||model==593||model==533||model==513||model==512||model==577||model==592||model==511||model==460||model==519)
  37.     {
  38.         return 1;
  39.     }
  40.     return 0;
  41. }
  42.  
  43. stock NoDM_IsPlayerInArea(playerid,Float:minX,Float:minY,Float:maxX,Float:maxY)
  44. {
  45.     new Float:pX,Float:pY,Float:pZ;
  46.     if(!IsPlayerInAnyVehicle(playerid)) GetPlayerPos(playerid,pX,pY,pZ);
  47.     else GetVehiclePos(GetPlayerVehicleID(playerid),pX,pY,pZ);
  48.     if(pX >= minX && pX <= maxX && pY >= minY && pY <= maxY) return 1;
  49.     else return 0;
  50. }
  51.  
  52. stock AddNoDMZone(Float:minX, Float:maxX, Float:minY, Float:maxY)
  53. {
  54.     if(gLoaded == true) return print("[noDM] Erstellen von NoDM Zonen geht nur beim ScriptStart! (Unter OnGameModeInit!)");
  55.     NoDMInfo[gCountNoDMZone][0] = minX;
  56.     NoDMInfo[gCountNoDMZone][1] = maxX;
  57.     NoDMInfo[gCountNoDMZone][2] = minY;
  58.     NoDMInfo[gCountNoDMZone][3] = maxY;
  59.     #if defined ACTIVATE_NODM_MAPZONES
  60.     gDMMapZone[gCountNoDMZone][0] = GangZoneCreate(minX, minY, maxX, maxY);
  61.     #endif
  62.     gCountNoDMZone++;
  63.     return (gCountNoDMZone-1);
  64. }
  65.  
  66. public OnGameModeInit()
  67. {
  68.     new playerid = 0, zeit[3];
  69.     gettime(zeit[0], zeit[1], zeit[2]);
  70.     for(; playerid < MAX_PLAYERS; playerid++)
  71.     {
  72.         SetPVarInt(playerid, "PastSecond", zeit[2]);
  73.         SetPVarInt(playerid, "BSNTextDrawShowed", 0);
  74.     }
  75.     NoDMTextdraw = TextDrawCreate(44.000000, 313.000000, "NO DM-ZONE");
  76.     TextDrawBackgroundColor(NoDMTextdraw, -16776961);
  77.     TextDrawFont(NoDMTextdraw, 3);
  78.     TextDrawLetterSize(NoDMTextdraw, 0.419999, 2.599998);
  79.     TextDrawColor(NoDMTextdraw, -1);
  80.     TextDrawSetOutline(NoDMTextdraw, 1);
  81.     TextDrawSetProportional(NoDMTextdraw, 1);
  82.     print("NoDM-Zone v1 by Templer loaded...");
  83.     return CallLocalFunction("NoDM_OnGameModeInit","");
  84. }
  85.  
  86. public OnGameModeExit()
  87. {
  88.     #if defined ACTIVATE_NODM_MAPZONES
  89.     new zone = 0;
  90.     for(; zone < gCountNoDMZone; zone++)
  91.     {
  92.         GangZoneDestroy(gDMMapZone[zone][0]);
  93.     }
  94.     #endif
  95.     TextDrawDestroy(NoDMTextdraw);
  96.     return CallLocalFunction("NoDM_OnGameModeExit","");
  97. }
  98.  
  99. public OnPlayerDisconnect(playerid, reason)
  100. {
  101.     #if defined ACTIVATE_NODM_MAPZONES
  102.     new zone = 0, cache[32];
  103.     for(; zone < gCountNoDMZone; zone++)
  104.     {
  105.         format(cache, 32, "ShowedDMZone_%d", zone);
  106.         SetPVarInt(playerid, cache, 0);
  107.         GangZoneHideForPlayer(playerid, gDMMapZone[zone][0]);
  108.     }
  109.     #endif
  110.     return CallLocalFunction("NoDM_OnPlayerDisconnect","dd", playerid, reason);
  111. }
  112.  
  113. public OnPlayerUpdate(playerid)
  114. {
  115.     new zeit[3], slot = 1, zone = 0, cachestring[2][32], cache[13][2];
  116.     gettime(zeit[0], zeit[1], zeit[2]);
  117.     if(zeit[2] < GetPVarInt(playerid, "PastSecond")) SetPVarInt(playerid, "PastSecond", zeit[2]);
  118.     if(zeit[2] > GetPVarInt(playerid, "PastSecond"))
  119.     {
  120.         if(gLoaded == false) gLoaded = true;
  121.         while(zone < gCountNoDMZone)
  122.         {
  123.             SetPVarInt(playerid, "PastSecond", zeit[2]);
  124.             #if defined ACTIVATE_NODM_MAPZONES
  125.             format(cachestring[0], 32, "ShowedDMZone_%d", zone);
  126.             if(GetPVarInt(playerid, cachestring[0]) != 1)
  127.             {
  128.                 SetPVarInt(playerid, cachestring[0], 1);
  129.                 GangZoneShowForPlayer(playerid, gDMMapZone[zone][0], NoDM_MAPZONE_COLOR);
  130.             }
  131.             #endif
  132.             if(NoDM_IsPlayerInArea(playerid, NoDMInfo[zone][0], NoDMInfo[zone][2], NoDMInfo[zone][1], NoDMInfo[zone][3]) && GetPVarInt(playerid, "BSNTextDrawShowed") == 0)
  133.             {
  134.                 for(; slot < 12; slot++)
  135.                 {
  136.                     GetPlayerWeaponData(playerid, slot, cache[slot][0], cache[slot][1]);
  137.                     format(cachestring[0], 32, "WaffenID_%d", slot);
  138.                     format(cachestring[1], 32, "AmmoID_%d", slot);
  139.                     SetPVarInt(playerid, cachestring[0], cache[slot][0]);
  140.                     SetPVarInt(playerid, cachestring[1], cache[slot][1]);
  141.                 }
  142.                 ResetPlayerWeapons(playerid);
  143.                 SetPVarInt(playerid, "BSNTextDrawShowed", 1);
  144.                 TextDrawShowForPlayer(playerid,NoDMTextdraw);
  145.             }
  146.             else if(!NoDM_IsPlayerInArea(playerid, NoDMInfo[zone][0], NoDMInfo[zone][2], NoDMInfo[zone][1], NoDMInfo[zone][3]) && GetPVarInt(playerid, "BSNTextDrawShowed") == 1)
  147.             {
  148.                 for(; slot < 12; slot++)
  149.                 {
  150.                     format(cachestring[0], 32, "WaffenID_%d", slot);
  151.                     format(cachestring[1], 32, "AmmoID_%d", slot);
  152.                     if(GetPVarInt(playerid, cachestring[0]) > 0) GivePlayerWeapon(playerid, GetPVarInt(playerid, cachestring[0]), GetPVarInt(playerid, cachestring[1]));
  153.                     SetPVarInt(playerid, cachestring[0], -1);
  154.                     SetPVarInt(playerid, cachestring[1], -1);
  155.                 }
  156.                 if(IsPlayerInAnyVehicle(playerid) && !NoDM_IsAPlane(GetPlayerVehicleID(playerid)))
  157.                 {
  158.                     new veh = GetPlayerVehicleID(playerid), seat = GetPlayerVehicleSeat(playerid), Float:nvX, Float:nvY, Float:nvZ;
  159.                     GetVehicleVelocity(veh, nvX, nvY, nvZ);
  160.                     GetPlayerPos(playerid, nvX, nvY, nvZ); SetPlayerPos(playerid, nvX, nvY, nvZ);
  161.                     PutPlayerInVehicle(playerid, veh, seat);
  162.                     if(GetPlayerState(playerid) == 2) SetVehicleVelocity(veh, nvX, nvY, nvZ);
  163.                 }
  164.                 SetPVarInt(playerid, "BSNTextDrawShowed", 0);
  165.                 TextDrawHideForPlayer(playerid,NoDMTextdraw);
  166.             }
  167.             zone++;
  168.         }
  169.     }
  170.     return CallLocalFunction("NoDM_OnPlayerUpdate","d", playerid);
  171. }
  172.  
  173. #define OnGameModeInit NoDM_OnGameModeInit
  174. #define OnGameModeExit NoDM_OnGameModeExit
  175. #define OnPlayerDisconnect NoDM_OnPlayerDisconnect
  176. #define OnPlayerUpdate NoDM_OnPlayerUpdate
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement