Baseball 2 Odesláno: 20. Červen, 2015 Share Odesláno: 20. Červen, 2015 (upraveno) Port systém Obsah Uložíme pozici Dostaneme na ní hráče Port ON / OFF Napíšeme hlášku Úvod Tento návod je pro nováčky kteří chtějí do svého GM nebo FS /setport a /port pro hráče. Použijeme pouze základní funkce pawna. Vysvětlení Velice jednoduché a rychlé, budeme pracovat v OnPlayerCommandText. Ale nejprve dáme někam nahoru new Float:px,Float:py,Float:pz; do kterého se budou ukládat souřadnice na port. Teď jdeme k samotnému příkazu. if (strcmp("/setport", cmdtext, true, 7) == 0) jako u každého příkazu v OnPlayerCommandText. nyní udělám klasickou závorku kterou začíná příkaz {. Aby jsme měli přehledné tak na další řádek dáme if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,0xFFFFFFFF,"Nedostatečné oprávnění!"); díky tomu bude tato možnost jen pro administrátory. Vysvětlíme si podmínku if(!IsPlayerAdmin(playerid)) if = > Pokud (z angličtiny) (! = > je(kdyby jsme nedaly ! tak pokud není) IsPlayerAdmin(playerid)) = > je / není hráč admin (Pouze RCON) return = > Pokud nesplňuje podmínku SendClientMessage = > Odešle hráči zprávu (playerid => hráči který zadal příkaz 0xFFFFFFFF = > barva (hex) ,"Nedostatečné oprávnění"); = > text který se mu odešle Nyní dáme samotné uložení pozice použijeme GetPlayerPos(playerid, px,py,pz); a teď si to vysvětlíme GetPlayerPos = > zjistíme pozici hráče (playerid = > hráče který zadal příkaz px,py,pz); = > a uložíme jí na tento text Celé to vypadat takto if (strcmp("/setport", cmdtext, true, 7) == 0) { if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,0xFFFFFFff,"Nemáš dostatečný administrační level!"); GetPlayerPos(playerid, px,py,pz); return 1; } Teď je uložená pozice pro port. Ale Teď port zapneme. if (strcmp("/setporton", cmdtext, true, 9) == 0) příkazem /Setporton zapneme port dáme tam zase { na začátek příkazu. vzhledem k tomu že chceme aby to mohl udělat pouze admin dáme znovu podmínku if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,0xFFFFFFff,"Nemáš dostatečný administrační level!"); a teď pod to nastavím pro všechny že je port zapnut aby to udělalo pro všechny musíme to udělat takto: for(new i = 0; i < MAX_PLAYERS; i++) všichni hráči (z počtu na serveru) pod to dáme { a pod ní dáme SetPVarInt(i, "adminport", 1); nastavím adminport na 1 (jako že zapnut) Celý příkaz bude vypadat takto if (strcmp("/setportOn", cmdtext, true, 10) == 0) { if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,0xFFFFFFff,"Nemáš dostatečný administrační level!"); for(new i = 0; i < MAX_PLAYERS; i++) { SetPVarInt(i, "adminport", 1); } return 1; } SetPVarInt(i, "adminport", 1); Vysvětlíme: SetPVarInt = > něco nastavím (nějakou podmínku) i = > všem (pokud by jste chtěli jen pro sebe tak dáte třeba playerid) "adminport" = > pojmenujeme si funkci dle sebe. je to jedno 1 = >nastavíme funkci na 1 (1 = zapnuto 0 = vypnuto) Zase uděláme příkaz if (strcmp("/port", cmdtext, true, 10) == 0) a zase zahájíme příkaz { teď dáme podmínku pokud je adminport zapnutý if(GetPVarInt(playerid, "adminport") == 1) return SendClientMessage(playerid,cervena,"[ ! ] {FFFFFF}Port je vypnutý!"); Vysvětlíme: if = > pokud (GetOvarInt = > pokud je podmínka (playerid = > u hráče "adminport" podmínka s názvem adminport ) == 1) = > pokud se rovná podmínka 1 retrun = > když né SendClientMessage = > odešle hráči zprávu Teď dáme { pod podmínku a nastavíme pozici hráče na px,py,pz pomoci SetPlayerPos(playerid, px,py,pz); Vysvětlíme: SetPlayerPos = > nastavíme hráči pozici (playerid = > hráči který zadal příkaz px,py,pz = > na pozici px, py, pz Teď co když bude hráč ve vozidle? Portneme ho i s vozidlem takže nejprve uložíme ID vozidla do nějakého textu. new vozidlo_Port = GetPlayerVehicleID(playerid); Vysvětlíme: GetPlayerVehicleID = > zjistíme ID vozidla ve kterém je hráč (playerid) = > hráče který zadal příkaz Teď dáme vozidlo na polohu portu SetVehiclePos(vozidlo_Port,px,py,pz); Vysvětlíme: SetVehiclePos = > dáme auto na pozici vozidlo_Port = > do vozidla s Id ve kterém seděl předtím px,py,pz = > na uložené souřadnice Teď aby to hráče po portu dalo do vozidla pomocí PutPlayerInVehicle(playerid, vozidlo_Port, 0); Vysvětlíme: PutPlayerInVehicle = > dá hráče do vozidle (playerid = > po tolikáte už není třeba vysvětlit vozidlo_Port = > do vozidla s Id ve kterém seděl předtím 0 = > na sedadlo 0 (0 = řidič, 1 = spolujezdec, 2 = zadní sedadlo za řidičem, 3 = zadní sedadlo za spolujezdcem) if (strcmp("/port", cmdtext, true, 4) == 0) { if(GetPVarInt(playerid, "adminport") == 1) return SendClientMessage(playerid,cervena,"[ ! ] {FFFFFF}Port je vypnutý!"); { SetPlayerPos(playerid, px,py,pz); new vozidlo_Port=GetPlayerVehicleID(playerid); SetVehiclePos(vozidlo_Port,px,py,pz); PutPlayerInVehicle(playerid, vozidlo_Port, 0); } return 1; } Teď uděláme jaště port off Je to to samé jako /SetPortOn až na to že v SetPVarInt(i, "adminport", 0); musíme dát 0 protože ho chceme vypnout. if (strcmp("/setportOff", cmdtext, true, 11) == 0) { if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,0xFFFFFFff,"Nemáš dostatečný administrační level!"); for(new i = 0; i < MAX_PLAYERS; i++) { SetPVarInt(i, "adminport", 0); } return 1; } Myslím že zde není třeba nic vysvětlovat Příklady Tak teď celý kód newy new Float:px,Float:py,Float:pz; v příkazech if (strcmp("/setport", cmdtext, true, 10) == 4) { if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,0xFFFFFFff,"Nemáš dostatečný administrační level!"); GetPlayerPos(playerid, px,py,pz); return 1; } if (strcmp("/setportOn", cmdtext, true, 10) == 0) { if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,0xFFFFFFff,"Nemáš dostatečný administrační level!"); for(new i = 0; i < MAX_PLAYERS; i++) { SetPVarInt(i, "adminport", 1); } return 1; } if (strcmp("/port", cmdtext, true, 4) == 0) { if(GetPVarInt(playerid, "adminport") == 1) return SCM(playerid,cervena,"[ ! ] {FFFFFF}Port je vypnutý!"); { SetPlayerPos(playerid, px,py,pz); new vozidlo_Port=GetPlayerVehicleID(playerid); SetVehiclePos(vozidlo_Port,px,py,pz); PutPlayerInVehicle(playerid, vozidlo_Port, 0); } return 1; { if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,0xFFFFFFff,"Nemáš dostatečný administrační level!"); for(new i = 0; i < MAX_PLAYERS; i++) { SetPVarInt(i, "adminport", 0); } return 1; } Závěr Doufám že jsem vám pomohl. Pokud najdete chybu napište Také doufám že jste jen nezkopírovali kód Edited 20. Červen, 2015 by Baseball Link to comment Share on other sites More sharing options...
Amenadiel 286 Odesláno: 20. Červen, 2015 Share Odesláno: 20. Červen, 2015 nebylo by prostě lepší udělat boolean a jenom kontrolovat či je true? cyklus je tam zbytečně... + ti tam chyby port off Link to comment Share on other sites More sharing options...
Baseball 2 Odesláno: 20. Červen, 2015 Author Share Odesláno: 20. Červen, 2015 (upraveno) Jejk, hned ho tam dám Je to tam Edited 20. Červen, 2015 by Baseball Link to comment Share on other sites More sharing options...
TheRohlikar 21 Odesláno: 20. Červen, 2015 Share Odesláno: 20. Červen, 2015 (upraveno) Ten SetPVar by šel samozřejmě využít, kdybys to mohl povolovat/zakazovat individuálně - na každého hráče + samozřejmě pro všechny. Jinak totálně zbytečné.. (viz Steam Wallet's comment) Ale jinak GJ ... if(GetPVarInt(playerid, "adminport") == 1) return SendClientMessage(playerid,cervena,"[ ! ] {FFFFFF}Port je vypnutý!"); Podle tohoto... "Pokud je Admin port zapnutý, neportneš se." A k "portOff" nemáš přidaný příkaz.. (v celkovém kódu) Edited 20. Červen, 2015 by TheRohlikar Link to comment Share on other sites More sharing options...
rEf 53 Odesláno: 6. Červenec, 2015 Share Odesláno: 6. Červenec, 2015 Je to blbost. Link to comment Share on other sites More sharing options...
Globální moderátor Hip 191 Odesláno: 6. Červenec, 2015 Globální moderátor Share Odesláno: 6. Červenec, 2015 až na to strašné vysvětlování jak vše vysvětliješ to není zas taková hrůza, nyní udělám klasickou závorku kterou začíná příkaz {. really??? GetOvarInt nakonec ještě jeden překlep co tam máš. je to takovej napůl návod napůl script Link to comment Share on other sites More sharing options...
rEf 53 Odesláno: 7. Červenec, 2015 Share Odesláno: 7. Červenec, 2015 Blbost už jenom ten samotný port... Tady máš lepší. stock Port(playerid, Float:x, Float:y, Float:z){ if(!IsPlayerInAnyVehicle(playerid)){ SetPlayerPos(playerid, x, y, z); }else{ SetVehiclePos(GetPlayerVehicleID(playerid), x, y, z); PutPlayerInVehicle(playerid, GetPlayerVehicleID(playerid), 0); } } Využití: Port(playerid, x, y, z); 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