Stellet 7 Odesláno: 20. Duben, 2015 Share Odesláno: 20. Duben, 2015 Ahoj, chtěl bych se zeptat jak udělat že když se někdo odpojí, ale něco udělal tak ho musím potrestat normál je to toto: CMD:prison(playerid, params[]) { new string[500]; new Pname[MAX_PLAYER_NAME]; GetPlayerName(playerid, Pname, sizeof(Pname)); format(string, sizeof(string), "/Players/%s.ini",Pname); new ID,Cas,str[128]; if(Hrac[playerid][AdminLevel] <= 2) return SendClientMessage(playerid,-1,"Nejsi Administrátor!"); else if(sscanf(params,"uis",ID,Cas,params)) return SendClientMessage(playerid,-1,"/prison [ID] [CAS] [DUVOD]"); else if(!IsPlayerConnected(ID)) return SendClientMessage(playerid,-1,"Tento hráč není na serveru."); else if(ajail[ID] == 1) return SendClientMessage(playerid,-1,"Tento hráč už je v prisonu."); if(Hrac[playerid][AdminLevel] == 2) { format(str,sizeof(str),"Moderátor %s udělil prison hráči %s na %i minut [Důvod: %s ]",GetName(playerid),GetName(ID),Cas,params); SendClientMessageToAll(COLOR_RED,str); ajail[ID] = 1; SpawnPlayer(ID); SetTimerEx("P_Propust",60000*Cas,false,"i",ID); return 1; } return true; } No ale já potřebuju jak udělat: /oprison [JMENO][CAS][DUVOD] Děkuji Link to comment Share on other sites More sharing options...
0 Quiter 99 Odesláno: 22. Duben, 2015 Share Odesláno: 22. Duben, 2015 Hmm, trošku nechápem... prečo chceš potrestať niekoho, kto už nie je na servery? No dalo by sa to pomocou includov na ukladanie do súborov (konkrétne registrácia). Namiesto ID dáš MENO (namiesto integeru string) v SSCANF. Potom zistíš či je na dané meno vytvorený súbor a ak áno, uložíš tam čas a dôvod... Potom pri spawnutí hráča skontroluješ či je čas viac ako 0 a ak áno, potrestáš ho Dal by som ti aj kód ale v pawne som dobré 2 roky nerobil tak si na to netrúfam Link to comment Share on other sites More sharing options...
0 Stellet 7 Odesláno: 22. Duben, 2015 Author Share Odesláno: 22. Duben, 2015 (upraveno) Pokuď jsem dobře rozuměl myslel jsi to takto: CMD:oprison(playerid, params[]) { new string[150]; new Pname[MAX_PLAYER_NAME]; GetPlayerName(playerid,Pname, sizeof(Pname)); format(string,sizeof(string),"/Players/%s.ini",Pname); new JMENO,Cas,str[128]; if(sscanf(params,"sis",JMENO,Cas,params)) return SendClientMessage(playerid,-1,"/oprison [JMENO] [CAS] [DŮVOD]"); else if(ajail[JMENO] == 1) return SendClientMessage(playerid,-1,"Tento hráč už je v prisonu."); if(Hrac[playerid][AdminLevel] == 7) { if(!DOF2_FileExists(JMENO)) { SendClientMessage(playerid,COLOR_RED,"Hráč %s není zaregistrovanej.",JMENO); } if(DOF2_FileExists(JMENO)) { format(str,sizeof(str),"Administrátor %s udělil Offline Prison hráči %s na 0i minut [Důvod: %s]",GetName(playerid),GetName(JMENO),Cas,params); SendClientMessageToAll(COLOR_RED,str); ajail[JMENO] = 1; SetPlayerPos(JMENO, -1790.7722, 567.2419, 333.3382); prisonTime[JMENO] = Cas; DOF2_SetInt(string, "PrisonTime", Cas); } return 1; } return 1; } Jenže mám tam errory: C:\Users\Milan\Desktop\Český Role-Play Pawning\gamemodes\S-RP.pwn(2518) : error 035: argument type mismatch (argument 1) C:\Users\Milan\Desktop\Český Role-Play Pawning\gamemodes\S-RP.pwn(2520) : warning 202: number of arguments does not match definition C:\Users\Milan\Desktop\Český Role-Play Pawning\gamemodes\S-RP.pwn(2522) : error 035: argument type mismatch (argument 1) C:\Users\Milan\Desktop\Český Role-Play Pawning\gamemodes\S-RP.pwn(2533) : warning 217: loose indentation Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase 2 Errors. No a řádky: 2518: if(!DOF2_FileExists(JMENO)) 2520: SendClientMessage(playerid,COLOR_RED,"Hráč %s není zaregistrovanej.",JMENO); 2522: if(DOF2_FileExists(JMENO)) 2533: return 1; Edited 22. Duben, 2015 by FeedBoss Link to comment Share on other sites More sharing options...
0 Matess 36 Odesláno: 22. Duben, 2015 Share Odesláno: 22. Duben, 2015 (upraveno) SendClientMessage(playerid,COLOR_RED,"Hráč %s není zaregistrovanej.",JMENO);//nelze new str[100]; format(str,sizeof(str),"Hráč %s není zaregistrovanej.",JMENO); SendClientMessage(playerid,COLOR_RED,str); //JMENO tvoříš jako integer, ale ukládáš tam string a dál s nim nakládáš jak s ID. Edited 22. Duben, 2015 by Matess Link to comment Share on other sites More sharing options...
0 Quiter 99 Odesláno: 22. Duben, 2015 Share Odesláno: 22. Duben, 2015 (upraveno) CMD:oprison(playerid, params[]) { new string[60]; new JMENO[MAX_PLAYER_NAME],Cas,str[128]; if(sscanf(params,"sis",JMENO,Cas,params)) return SendClientMessage(playerid,-1,"/oprison [JMENO] [CAS] [DŮVOD]"); if(Hrac[playerid][AdminLevel] == 7) { format(string,sizeof(string),"/Players/%s.ini",JMENO); if(!DOF2_FileExists(string)) { SendClientMessage(playerid,COLOR_RED,"Hráč není zaregistrovanej."); } if(DOF2_FileExists(string)) { format(str,sizeof(str),"Administrátor %s udělil Offline Prison hráči %s na %i minut [Důvod: %s]",GetName(playerid),JMENO,Cas,params); SendClientMessageToAll(COLOR_RED,str); DOF2_SetInt(string, "PrisonTime", Cas); } } return 1; } Dovolil som si upraviť tvoj script, takto by mal vyzerať (aspoň myslím) Ešte 1 pripomienka: nezabudni v OnPlayerSpawn ošetriť aby ho to hodilo do vezenia keď má PrisonTime (vytiahneš zo súboru) väčší ako 0. Edited 22. Duben, 2015 by Quiter Link to comment Share on other sites More sharing options...
0 Stellet 7 Odesláno: 22. Duben, 2015 Author Share Odesláno: 22. Duben, 2015 a ještě šlo by něják udělat že když se připojí, aby věděl od koho dostal prison, tak třeba odemě: Administrátor FeedBoss vám dal Offline Prison na %i minut [Důvod: %d] .. ale jak to udělám že zjistí že jsem mu ho dal já ? Link to comment Share on other sites More sharing options...
0 The hidden face 77 Odesláno: 22. Duben, 2015 Share Odesláno: 22. Duben, 2015 (upraveno) Třeba takto: CMD:oprison(playerid, params[]) { new string[60], Name[24]; //tu jsem přidal proměnnou Name GetPlayerName(playerid, Name, 24); //funkce která zjistí jméno a zapíše ho do pr. Name new JMENO[MAX_PLAYER_NAME],Cas,str[128]; if(sscanf(params,"sis",JMENO,Cas,params)) return SendClientMessage(playerid,-1,"/oprison [JMENO] [CAS] [DŮVOD]"); if(Hrac[playerid][AdminLevel] == 7) { format(string,sizeof(string),"/Players/%s.ini",JMENO); if(!DOF2_FileExists(string)) { SendClientMessage(playerid,COLOR_RED,"Hráč není zaregistrovanej."); } if(DOF2_FileExists(string)) { format(str,sizeof(str),"Administrátor %s udělil Offline Prison hráči %s na %i minut [Důvod: %s]",Name,JMENO,Cas,params); //zde nahradíš GetName(playerid) Name - Quiter na to měl nejspíš nějaký stock, takže mu GetName funguje. Pokud to nechceš udělat jako já, tak si můžeš taky vytvořit stock SendClientMessageToAll(COLOR_RED,str); DOF2_SetInt(string, "PrisonTime", Cas); } } return 1; } Stock pro tento příkaz: (pokud to uděláš přes tento stock, neměl by si nic v příkazu měnit a vše by mělo jet) stock GetName(playerid) { new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); return name; } Edited 22. Duben, 2015 by D@ndys Link to comment Share on other sites More sharing options...
0 Quiter 99 Odesláno: 22. Duben, 2015 Share Odesláno: 22. Duben, 2015 (upraveno) D@ndys totálnu blbosť si mu napísal Aj keďmusím uznať že ten stock sa mu hodí, ale keďže ho použil aj on tak som predpokladal že ho už v kóde má _____________________________________________ Tam kde máš DOF2_SetInt(string, "PrisonTime", Cas); daj pod to: DOF2_SetStr(string, "PrisonReason", str); // POZOR na PRIKAZ!! neviem ako sa v DOF2 ukladá string!! A ešte v OnPlayerSpawn vytiahni ten string a načítaj ho do premennej ktorú mu potom pošlí ako SCM (SendClientMessage) Edited 22. Duben, 2015 by Quiter Link to comment Share on other sites More sharing options...
0 Stellet 7 Odesláno: 22. Duben, 2015 Author Share Odesláno: 22. Duben, 2015 (upraveno) Jo díky if(ajail[playerid] == 0) { new string[500]; new Pname[MAX_PLAYER_NAME]; GetPlayerName(playerid, Pname, sizeof(Pname)); format(string, sizeof(string), "/Players/%s.ini",Pname); SetPlayerPos(playerid,DOF2_GetInt(string,"PoziceX"),DOF2_GetInt(string,"PoziceY"),DOF2_GetInt(string,"PoziceZ")); } else { new string[500]; new Pname[MAX_PLAYER_NAME]; GetPlayerName(playerid, Pname, sizeof(Pname)); format(string, sizeof(string), "/Players/%s.ini",Pname); SetPlayerPos(playerid, -1790.7722, 567.2419, 333.3382); DOF2_GetString(string, "PrisonReason"); SendClientMessage(playerid,COLOR_RED,PrisonReason); } Ale jak načtu ten PrisonReason ? Když to dám takto skočí error, Undefined PrisonReason Edited 22. Duben, 2015 by FeedBoss Link to comment Share on other sites More sharing options...
0 The hidden face 77 Odesláno: 22. Duben, 2015 Share Odesláno: 22. Duben, 2015 D@ndys totálnu blbosť si mu napísal Aj keďmusím uznať že ten stock sa mu hodí, ale keďže ho použil aj on tak som predpokladal že ho už v kóde má Jakou blbost máš na mysli? Link to comment Share on other sites More sharing options...
0 Quiter 99 Odesláno: 22. Duben, 2015 Share Odesláno: 22. Duben, 2015 Jo díky if(ajail[playerid] == 0) { new string[50]; new Pname[MAX_PLAYER_NAME]; GetPlayerName(playerid, Pname, sizeof(Pname)); format(string, sizeof(string), "/Players/%s.ini",Pname); SetPlayerPos(playerid,DOF2_GetInt(string,"PoziceX"),DOF2_GetInt(string,"PoziceY"),DOF2_GetInt(string,"PoziceZ")); } else { new string[50]; new Pname[MAX_PLAYER_NAME]; GetPlayerName(playerid, Pname, sizeof(Pname)); format(string, sizeof(string), "/Players/%s.ini",Pname); SetPlayerPos(playerid, -1790.7722, 567.2419, 333.3382); SendClientMessage(playerid,COLOR_RED,DOF2_GetString(string, "PrisonReason")); } Ale jak načtu ten PrisonReason ? Když to dám takto skočí error, Undefined PrisonReason Takto (hore je upraveny ten script) Link to comment Share on other sites More sharing options...
0 Stellet 7 Odesláno: 22. Duben, 2015 Author Share Odesláno: 22. Duben, 2015 Když to udělám podle vás dohromady, přepsal jsem i na Qwera, napíše to Administrátor %s dal hráči ' Offline prison na %i minut. [Důvod: %s] Jen to jméno + neuloží mu to. Link to comment Share on other sites More sharing options...
0 Quiter 99 Odesláno: 22. Duben, 2015 Share Odesláno: 22. Duben, 2015 Trošku nechápem... To ti to napíše tie %s ? Neviem ako na terajšej verzii, ale v predchádzajúcich to nebolo možné (pri napísaní % padol server) Link to comment Share on other sites More sharing options...
0 Stellet 7 Odesláno: 22. Duben, 2015 Author Share Odesláno: 22. Duben, 2015 nene napíše jména ale tomu komu jsem dal prison to nenapíše jméno. Link to comment Share on other sites More sharing options...
0 Quiter 99 Odesláno: 23. Duben, 2015 Share Odesláno: 23. Duben, 2015 a čo tam je miesto jeho mena ? Link to comment Share on other sites More sharing options...
0 Stellet 7 Odesláno: 23. Duben, 2015 Author Share Odesláno: 23. Duben, 2015 toto: ' Link to comment Share on other sites More sharing options...
0 Quiter 99 Odesláno: 23. Duben, 2015 Share Odesláno: 23. Duben, 2015 A pri udelení toho trestu to napíše správne? Keď admin napíše príkaz tak to napíše do chatu správne? Link to comment Share on other sites More sharing options...
0 Stellet 7 Odesláno: 23. Duben, 2015 Author Share Odesláno: 23. Duben, 2015 Ne. Prostě to napíše: Administrátor Feedboss udělil Offline Prison hráči ' [Důvod: Test-OfflinePrisonu] Link to comment Share on other sites More sharing options...
0 Quiter 99 Odesláno: 25. Duben, 2015 Share Odesláno: 25. Duben, 2015 Skús tam pridať SendClientMessageToAll(farba, JMENO); a povedz čo to napíše Link to comment Share on other sites More sharing options...
Dotaz
Stellet 7
Ahoj, chtěl bych se zeptat jak udělat že když se někdo odpojí, ale něco udělal tak ho musím potrestat normál je to toto:
No ale já potřebuju jak udělat: /oprison [JMENO][CAS][DUVOD] Děkuji
Link to comment
Share on other sites
18 odpovědí na tuto otázku
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