- Map Zones -
Å ta je Map Zones library?Ovaj library ne donosi niÅ¡ta Å¡to već nije viÄ'eno, razlog kreiranja ovog include-a je da se zavrÅ¡i era loÅ¡ih navika vezana za map zones.
Array od ~350 zona koji je verovatno manualno konvertovan iz igre je tu već duže vreme, ali do sada nije viÄ'en ni jedan naÄin koji ispunjava uslove savremenog PAWN skriptanja.
Zašto Map Zones library?
- Brže.
- Sigurnije.
- Bez bagova.
Kako se Map Zones koristi?Naravno, idemo kroz primere :)
[pawn]CMD:gdesenalazim(playerid) //Credits: Kristo
{
new MapZone:zone = GetPlayerMapZone(playerid); // Uzima zonu u kojoj se igraÄ nalazi
if (zone == INVALID_MAP_ZONE_ID)
return SendClientMessage(playerid, 0xFFFFFFFF, "Verovatno u okeanu :D");
new name[MAX_MAP_ZONE_NAME], soundid;
GetMapZoneName(zone, name); // Uzima ime zone, zone id smo dobili u prvoj funkciji gore
GetMapZoneSoundID(zone, soundid); // Fun Fact: Ne znam da li ste zvali ali svaka zona u GTA:SA ima svoj zvuk :D
new string[24 + MAX_MAP_ZONE_NAME]; // MAX_MAP_ZONE_NAME je 27
format(string, sizeof(string), "Vi ste u \"%s\"", name); //Vi ste u "Bayside Tunnel" (primer)
SendClientMessage(playerid, 0xFFFFFFFF, string);
PlayerPlaySound(playerid, soundid, 0.0, 0.0, 0.0);
return 1;
}[/pawn]
Naravno, ovo nije sve...
Da li je moguće uzeti zonu koordinata 2D/3D?Naravno da jeste, da nije - ovo sada ne bi ste Äitali :')
[pawn]
new MapZone:zone = GetMapZoneAtPoint(Float:x, Float:y, Float:z);
// Uzima koordinate x,y,z pozicije, zone varijablu posle koristite kao
// u primeru iznad ovog (za igraca).
new MapZone:zone = GetVehicleMapZone(vehicleid);
// Uzima zonu u kojoj se vozilo nalazi.
new MapZone:zone = GetMapZoneAtPoint2D(Float:x, Float:y);
// Uzima zonu za 2D koordinate (ne uzima u obzir visinu koordinata).
new MapZone:zone = GetVehicleMapZone2D(vehicleid);
// Uzima 2D koordinate vozila i njegovu zonu.
GetMapZoneName(MapZone:id, name[], size = sizeof(name));
// Uzima ime od zone ciji ste ID prethodno pronašli pomoću nekih funkcija od gore.
GetMapZoneSoundID(MapZone:id, &soundid);
// Uzima zvuk koji je u GTA podešen za ID zone koju ste prethodno pronašli ^.
GetMapZoneAreaCount(MapZone:id, &count);
// Uzima broj svih Area koje su vezane za tu zonu.
GetMapZoneAreaPos(MapZone:id, &Float:minX = 0.0, &Float:minY = 0.0, &Float:minZ = 0.0, &Float:maxX = 0.0, &Float:maxY = 0.0, &Float:maxZ = 0.0, start = 0);
// Vraca koordinate od aree koja je vezana za zonu (MapZone:id).
GetMapZoneCount();
// Vraca koliko zona postoji u array-u, može se koristiti za iteratore.[/pawn]
To je to?Da, to bi bilo to, ali naravno i Vi možete dodati svoje funkcije i proširiti ovaj include, primer:
[pawn]stock MapZone:GetPlayerOutsideMapZone(playerid) // Credits: Kristo
{
new House:houseid = GetPlayerHouseID(playerid), Float:x, Float:y, Float:z;
if (houseid != INVALID_HOUSE_ID) // ako je igrac unutar kuce, uzmi koordinate exteriora te kuce
{
GetHouseExteriorPos(houseid, x, y, z);
}
else if (!GetPlayerPos(playerid, x, y, z)) // IgraÄ nije konektovan, funkcija vraća INVALID_MAP_ZONE_ID
{
return INVALID_MAP_ZONE_ID;
}
return GetMapZoneAtPoint(x, y, z);
}[/pawn]
Download Map Zones here! (https://raw.githubusercontent.com/kristoisberg/samp-map-zones/master/map-zones.inc)
konacno neko nesto korisno objavljuje a da je pocetnik na forumu.. (nije bas al mozete se rec)