Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* NoDM-Zone Include by Templer
- (for SAMP 0.3 / or higher)
- (Inspiriert durch Marco2406 vom Breadfish Forum)
- Dieses Script darf von jedermann verändert und benutzt werden!
- Mir ist es sogar egal, wenn Ihr was von Ihr für euren Vorteil rauskopiert!
- Credits:
- -Marco2406 : Für die geistreiche Idee der NoDM Zone für Neulinge & das Textdraw
- -Double-O-Seven : Für das Zeigen wie Include und GM am besten kommunizieren!
- -Samp-Team : Die es überhaupt ermöglicht haben sowas Programmierbar für GTA zu machen!*/
- #define MAX_DM_ZONES (50) //Wieviele DM Zonen max. verwendet werden.
- #define ACTIVATE_NODM_MAPZONES //Auskommentieren um die NoDM Zonen auf der Karte anzuzeigen!
- #if defined ACTIVATE_NODM_MAPZONES
- #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
- //Ab hier nichts mehr ändern, außer du mit dem Programmieren in PAWN vertraut bist!//
- new gDMMapZone[MAX_DM_ZONES][1];
- #endif
- new gCountNoDMZone = 0;
- new bool:gLoaded = false;
- new Text:NoDMTextdraw;
- new Float:NoDMInfo[MAX_DM_ZONES][4];
- forward NoDM_OnGameModeInit();
- forward NoDM_OnGameModeExit();
- forward NoDM_OnPlayerDisconnect(playerid, reason);
- forward NoDM_OnPlayerUpdate(playerid);
- stock NoDM_IsAPlane(carid)
- {
- new model = GetVehicleModel(carid);
- if(model==520||model==476||model==593||model==533||model==513||model==512||model==577||model==592||model==511||model==460||model==519)
- {
- return 1;
- }
- return 0;
- }
- stock NoDM_IsPlayerInArea(playerid,Float:minX,Float:minY,Float:maxX,Float:maxY)
- {
- new Float:pX,Float:pY,Float:pZ;
- if(!IsPlayerInAnyVehicle(playerid)) GetPlayerPos(playerid,pX,pY,pZ);
- else GetVehiclePos(GetPlayerVehicleID(playerid),pX,pY,pZ);
- if(pX >= minX && pX <= maxX && pY >= minY && pY <= maxY) return 1;
- else return 0;
- }
- stock AddNoDMZone(Float:minX, Float:maxX, Float:minY, Float:maxY)
- {
- if(gLoaded == true) return print("[noDM] Erstellen von NoDM Zonen geht nur beim ScriptStart! (Unter OnGameModeInit!)");
- NoDMInfo[gCountNoDMZone][0] = minX;
- NoDMInfo[gCountNoDMZone][1] = maxX;
- NoDMInfo[gCountNoDMZone][2] = minY;
- NoDMInfo[gCountNoDMZone][3] = maxY;
- #if defined ACTIVATE_NODM_MAPZONES
- gDMMapZone[gCountNoDMZone][0] = GangZoneCreate(minX, minY, maxX, maxY);
- #endif
- gCountNoDMZone++;
- return (gCountNoDMZone-1);
- }
- public OnGameModeInit()
- {
- new playerid = 0, zeit[3];
- gettime(zeit[0], zeit[1], zeit[2]);
- for(; playerid < MAX_PLAYERS; playerid++)
- {
- SetPVarInt(playerid, "PastSecond", zeit[2]);
- SetPVarInt(playerid, "BSNTextDrawShowed", 0);
- }
- NoDMTextdraw = TextDrawCreate(44.000000, 313.000000, "NO DM-ZONE");
- TextDrawBackgroundColor(NoDMTextdraw, -16776961);
- TextDrawFont(NoDMTextdraw, 3);
- TextDrawLetterSize(NoDMTextdraw, 0.419999, 2.599998);
- TextDrawColor(NoDMTextdraw, -1);
- TextDrawSetOutline(NoDMTextdraw, 1);
- TextDrawSetProportional(NoDMTextdraw, 1);
- print("NoDM-Zone v1 by Templer loaded...");
- return CallLocalFunction("NoDM_OnGameModeInit","");
- }
- public OnGameModeExit()
- {
- #if defined ACTIVATE_NODM_MAPZONES
- new zone = 0;
- for(; zone < gCountNoDMZone; zone++)
- {
- GangZoneDestroy(gDMMapZone[zone][0]);
- }
- #endif
- TextDrawDestroy(NoDMTextdraw);
- return CallLocalFunction("NoDM_OnGameModeExit","");
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- #if defined ACTIVATE_NODM_MAPZONES
- new zone = 0, cache[32];
- for(; zone < gCountNoDMZone; zone++)
- {
- format(cache, 32, "ShowedDMZone_%d", zone);
- SetPVarInt(playerid, cache, 0);
- GangZoneHideForPlayer(playerid, gDMMapZone[zone][0]);
- }
- #endif
- return CallLocalFunction("NoDM_OnPlayerDisconnect","dd", playerid, reason);
- }
- public OnPlayerUpdate(playerid)
- {
- new zeit[3], slot = 1, zone = 0, cachestring[2][32], cache[13][2];
- gettime(zeit[0], zeit[1], zeit[2]);
- if(zeit[2] < GetPVarInt(playerid, "PastSecond")) SetPVarInt(playerid, "PastSecond", zeit[2]);
- if(zeit[2] > GetPVarInt(playerid, "PastSecond"))
- {
- if(gLoaded == false) gLoaded = true;
- while(zone < gCountNoDMZone)
- {
- SetPVarInt(playerid, "PastSecond", zeit[2]);
- #if defined ACTIVATE_NODM_MAPZONES
- format(cachestring[0], 32, "ShowedDMZone_%d", zone);
- if(GetPVarInt(playerid, cachestring[0]) != 1)
- {
- SetPVarInt(playerid, cachestring[0], 1);
- GangZoneShowForPlayer(playerid, gDMMapZone[zone][0], NoDM_MAPZONE_COLOR);
- }
- #endif
- if(NoDM_IsPlayerInArea(playerid, NoDMInfo[zone][0], NoDMInfo[zone][2], NoDMInfo[zone][1], NoDMInfo[zone][3]) && GetPVarInt(playerid, "BSNTextDrawShowed") == 0)
- {
- for(; slot < 12; slot++)
- {
- GetPlayerWeaponData(playerid, slot, cache[slot][0], cache[slot][1]);
- format(cachestring[0], 32, "WaffenID_%d", slot);
- format(cachestring[1], 32, "AmmoID_%d", slot);
- SetPVarInt(playerid, cachestring[0], cache[slot][0]);
- SetPVarInt(playerid, cachestring[1], cache[slot][1]);
- }
- ResetPlayerWeapons(playerid);
- SetPVarInt(playerid, "BSNTextDrawShowed", 1);
- TextDrawShowForPlayer(playerid,NoDMTextdraw);
- }
- else if(!NoDM_IsPlayerInArea(playerid, NoDMInfo[zone][0], NoDMInfo[zone][2], NoDMInfo[zone][1], NoDMInfo[zone][3]) && GetPVarInt(playerid, "BSNTextDrawShowed") == 1)
- {
- for(; slot < 12; slot++)
- {
- format(cachestring[0], 32, "WaffenID_%d", slot);
- format(cachestring[1], 32, "AmmoID_%d", slot);
- if(GetPVarInt(playerid, cachestring[0]) > 0) GivePlayerWeapon(playerid, GetPVarInt(playerid, cachestring[0]), GetPVarInt(playerid, cachestring[1]));
- SetPVarInt(playerid, cachestring[0], -1);
- SetPVarInt(playerid, cachestring[1], -1);
- }
- if(IsPlayerInAnyVehicle(playerid) && !NoDM_IsAPlane(GetPlayerVehicleID(playerid)))
- {
- new veh = GetPlayerVehicleID(playerid), seat = GetPlayerVehicleSeat(playerid), Float:nvX, Float:nvY, Float:nvZ;
- GetVehicleVelocity(veh, nvX, nvY, nvZ);
- GetPlayerPos(playerid, nvX, nvY, nvZ); SetPlayerPos(playerid, nvX, nvY, nvZ);
- PutPlayerInVehicle(playerid, veh, seat);
- if(GetPlayerState(playerid) == 2) SetVehicleVelocity(veh, nvX, nvY, nvZ);
- }
- SetPVarInt(playerid, "BSNTextDrawShowed", 0);
- TextDrawHideForPlayer(playerid,NoDMTextdraw);
- }
- zone++;
- }
- }
- return CallLocalFunction("NoDM_OnPlayerUpdate","d", playerid);
- }
- #define OnGameModeInit NoDM_OnGameModeInit
- #define OnGameModeExit NoDM_OnGameModeExit
- #define OnPlayerDisconnect NoDM_OnPlayerDisconnect
- #define OnPlayerUpdate NoDM_OnPlayerUpdate
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement