Scydo 397 Odesláno: 4. Květen, 2016 Share Odesláno: 4. Květen, 2016 SHORT BUT ADVANCED PORTY Jde o takovou sérii includů, které mají nějaký jednoduchý základ nebo jsou velice často publikované, ale budou jednoduše zpracované(nemenší možný počet řádků, dobrá optimalizace, výborná přehlednost aj.) s nějakým zajímavým doplňkem, bez použití jiného includu než a_samp. Stardartní porty jsou velice často zpracované ve formě scriptu, tak, že se nachází v callbacku OnPlayerCommandText a s příkazy /setport /port a /delport.Já se to rozhodl zpracovat ve formě includu, takže s tím může uživatel jednoduše pracovat a aby to nebylo málo, lze povolit(založit/spustit) více portů najednou. Zde je seznam fcí, které obsahuje tento includ:SetGlobalLocation() - Hlavní fce. Uloží pozice daného port(id) a zpřístupní ho všem.RemoveGlobalLocation() - Zruší možnost warpnut se na daný port(id).SetPlayerPortID() - Warpne hráče/hráče včetně vozidla na daný port(id).IsPortEnabled() - Zjistí, zda je daný port(id) zpřístupněn.ArePortsEnabled() - Zjistí, zda jsou všechny port(id) zpřístupněny.GetFreePortID() - Zjistí nejbližší port(id), které je zpřístupněné.SetGlobalLocationParametry:(iPortID, bool:bVehicles, Float:fXpos, Float:fYpos, Float:fZpos)iPortID - ID daného portu.bVehicles - Povolit(true) či zakázat(false) hráčům se portou i s vozidlem.fXpos - X-ová pozice portu.fYpos - Y-nová pozice portu.fZpos - Z-tová pozice portu. Return:Tato funkce nevrací nic zvláštního. RemoveGlobalLocationParametry:(iPortID)iPortID - ID daného portu. Return:Tato funkce nevrací nic zvláštního. SetPlayerPortIDParametry:(playerid, iPortID)playerid - ID hráče, kterého má warpnout.iPortID - ID daného portu. Return:Dle fcí(SetPlayerPos či SetVehiclePos). IsPortEnabledParametry:(iPortID)iPortID - ID daného portu.. Return:Proměnná s hodnotou true či false. ArePortsEnabledParametry:Neobsahuje žádné parametry. Return:true - v případě, že je jen jediný z portů(id) zpřístupněn.false - v případě, že žádný z portů(id) není zpřístupněn. GetFreePortIDParametry:Neobsahuje žádné parametry. Return:PortID - v případě, že nalezne neblížší zpřístupněné port(id).-1 - vrátí, jestli-že nenajde. Jelikož jsou zpracovaný jen jako ve formě hodnot a ne jako již "před připraveného scriptu", lze s nimi vytvořit několik způsobů port systémů. Například si můžete zvolit jen jediný port(id) a s nim pracovat jako u normálních častých scriptů: #include <sba_porty> #include <zcmd> /* http://forum.sa-mp.com/showthread.php?t=576114 */ #define DEFAULT_PORT_ID (0) CMD:setport(playerid, params[]) { if (!IsPlayerAdmin(playerid)) return (true); /* V případě, že již port nastaven: */ if (IsPortEnabled(DEFAULT_PORT_ID)) return (true); new Float: fXpos, Float: fYpos, Float: fZpos; GetPlayerPos(playerid, fXpos, fYpos, fZpos); /* Povolí(založí) globální Port(ID) pro všechny */ SetGlobalLocation(DEFAULT_PORT_ID, true, fXpos, fYpos, fZpos); SendClientMessageToAll(0xFF000000, "Administrátor ... založil veřejný /port"); return (true); } CMD:stopport(playerid, params[]) { if (!IsPlayerAdmin(playerid)) return (true); /* V případě, že již není nastaven: */ if (!IsPortEnabled(DEFAULT_PORT_ID)) return (true); /* Zamezí možnost warpu na Port(ID): */ RemoveGlobalLocation(DEFAULT_PORT_ID); SendClientMessageToAll(0xFF000000, "Administrátor ... zrušil veřejný /port"); return (true); } CMD:port(playerid, params[]) { /* V případě, že již není nastaven: */ if (!IsPortEnabled(DEFAULT_PORT_ID)) return (true); /* Portne hráče na pozice daného Portu(ID): */ SetPlayerPortID(playerid, DEFAULT_PORT_ID); SendClientMessageToAll(0xFF000000, "Hráč ... se warpnul na veřejný /port"); return (true); } A nebo tedy si udělat systém, kde bude možno se portout na více portů: #include <sba_porty> CMD:port(playerid, params[]) { /* /port 0 | /port 1 / port 2 */ if (!strlen(params)) return (true); new PortID = strval(params); /* Jestli-že zadá jiné ID portu do příkazu než od 0 do 10(dMaxPortsID): */ if (PortID < 0 || PortID > dMaxPortsID) return SendClientMessage(playerid, -1, "/port ID_PORTU"); /* Jestli-že daný Port(ID) není povolen(založen): */ if (!IsPortEnabled(PortID)) return (true); SetPlayerPortID(playerid, PortID); return (true); } DOWNLOADPawno.cz Pastebin Link to comment Share on other sites More sharing options...
Quiter 99 Odesláno: 4. Květen, 2016 Share Odesláno: 4. Květen, 2016 Podla popisu to znie dobre Len sa mi nepáči tá myšlienka že si "pawner" sám musí zvoliť ID portu. Samozrejme si to napravil funkciou GetFreePortID. Nuž ale to je každého osobný názor Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now