VAurel Posted December 23, 2019 Posted December 23, 2019 (edited) Salut, am incercat si eu sa fac comanda /d, totul merge perfect dar ... cand dau /d si ai admin primesti de 2 ori textul, se poate sa se rezolve ? PS : Primesti de 2 ori textul daca esti si admin si pd. Comanda : YCMD:departments(playerid, params[], help) { new text[250],sendername[MAX_PLAYER_NAME],string[200]; if(PlayerInfo[playerid][pMuted] == 1) { format(string, sizeof(string), "You can't talk right now! You are muted. (%d seconds)",PlayerInfo[playerid][pMuteTime]); SCM(playerid, COLOR_GREY, string); return true; } GetPlayerName(playerid, sendername, sizeof(sendername)); if(sscanf(params, "s[250]", text)) return SCM(playerid, COLOR_GREY, "Syntax: {FFFFFF}/d <text>"); if(FaceReclama(text)) return RemoveFunction(playerid, text); if(FaceReclama(text)) return Reclama(playerid, text); if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1) format(string, sizeof(string), "* %s %s: %s, over.", GetRankName(playerid), sendername, text); else if(PlayerInfo[playerid][pMember] == 2 || PlayerInfo[playerid][pLeader] == 2) format(string, sizeof(string), "* %s %s: %s, over.", GetRankName(playerid), sendername, text); else if(PlayerInfo[playerid][pMember] == 3 || PlayerInfo[playerid][pLeader] == 3) format(string, sizeof(string), "* %s %s: %s, over.", GetRankName(playerid), sendername, text); else if(PlayerInfo[playerid][pMember] == 13 || PlayerInfo[playerid][pLeader] == 13) format(string, sizeof(string), "* %s %s: %s, over.", GetRankName(playerid), sendername, text); else if(PlayerInfo[playerid][pMember] == 14 || PlayerInfo[playerid][pLeader] == 14) format(string, sizeof(string), "* %s %s: %s, over.", GetRankName(playerid), sendername, text); else if(PlayerInfo[playerid][pScripter] == 2) format(string, sizeof(string), "* Scripter %s: %s, over.", GetRankName(playerid), sendername, text); else if(PlayerInfo[playerid][pAdmin] != 0) format(string, sizeof(string), "* Admin %s: %s, over.", sendername, text); else return SCM(playerid, COLOR_GREY, "Nu faci parte din factiunea politiei."); SendTeamMessage(3, COLOR_DEPART2, string); SendTeamMessage(2, COLOR_DEPART2, string); SendTeamMessage(1, COLOR_DEPART2, string); SendTeamMessage(13, COLOR_DEPART2, string); SendTeamMessage(14, 0x2e64feFF, string); SendAdminMessage(COLOR_DEPART2, string, 1); return true; } function SendUserMessage(color, text[], userid) { foreach(Player, i) { if(PlayerInfo[i][pSQLID] != userid) continue; SCM(i, color, text); } return true; } Multumesc pentru atentie. PS: Vreau in continuare sa apara mesajele si adminilor, dar sa nu mai apara 2 mesaje. Edited December 23, 2019 by jumainkain YouTube : https://www.youtube.com/channel/UCqHZo0HCgfmW5R5d6b5cnxw
Koqs Posted December 27, 2019 Posted December 27, 2019 La 23.12.2019 la 22:49, jumainkain a spus: Salut, am incercat si eu sa fac comanda /d, totul merge perfect dar ... cand dau /d si ai admin primesti de 2 ori textul, se poate sa se rezolve ? PS : Primesti de 2 ori textul daca esti si admin si pd. Comanda : YCMD:departments(playerid, params[], help) { new text[250],sendername[MAX_PLAYER_NAME],string[200]; if(PlayerInfo[playerid][pMuted] == 1) { format(string, sizeof(string), "You can't talk right now! You are muted. (%d seconds)",PlayerInfo[playerid][pMuteTime]); SCM(playerid, COLOR_GREY, string); return true; } GetPlayerName(playerid, sendername, sizeof(sendername)); if(sscanf(params, "s[250]", text)) return SCM(playerid, COLOR_GREY, "Syntax: {FFFFFF}/d <text>"); if(FaceReclama(text)) return RemoveFunction(playerid, text); if(FaceReclama(text)) return Reclama(playerid, text); if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1) format(string, sizeof(string), "* %s %s: %s, over.", GetRankName(playerid), sendername, text); else if(PlayerInfo[playerid][pMember] == 2 || PlayerInfo[playerid][pLeader] == 2) format(string, sizeof(string), "* %s %s: %s, over.", GetRankName(playerid), sendername, text); else if(PlayerInfo[playerid][pMember] == 3 || PlayerInfo[playerid][pLeader] == 3) format(string, sizeof(string), "* %s %s: %s, over.", GetRankName(playerid), sendername, text); else if(PlayerInfo[playerid][pMember] == 13 || PlayerInfo[playerid][pLeader] == 13) format(string, sizeof(string), "* %s %s: %s, over.", GetRankName(playerid), sendername, text); else if(PlayerInfo[playerid][pMember] == 14 || PlayerInfo[playerid][pLeader] == 14) format(string, sizeof(string), "* %s %s: %s, over.", GetRankName(playerid), sendername, text); else if(PlayerInfo[playerid][pScripter] == 2) format(string, sizeof(string), "* Scripter %s: %s, over.", GetRankName(playerid), sendername, text); else if(PlayerInfo[playerid][pAdmin] != 0) format(string, sizeof(string), "* Admin %s: %s, over.", sendername, text); else return SCM(playerid, COLOR_GREY, "Nu faci parte din factiunea politiei."); SendTeamMessage(3, COLOR_DEPART2, string); SendTeamMessage(2, COLOR_DEPART2, string); SendTeamMessage(1, COLOR_DEPART2, string); SendTeamMessage(13, COLOR_DEPART2, string); SendTeamMessage(14, 0x2e64feFF, string); SendAdminMessage(COLOR_DEPART2, string, 1); return true; } function SendUserMessage(color, text[], userid) { foreach(Player, i) { if(PlayerInfo[i][pSQLID] != userid) continue; SCM(i, color, text); } return true; } Multumesc pentru atentie. PS: Vreau in continuare sa apara mesajele si adminilor, dar sa nu mai apara 2 mesaje. SendAdminMessage(COLOR_DEPART2, string, 1); cred ca asta este problema, ai folosit aceeasi culoare, acelasi string si se trimite mesajul de 2 ori, sterge aceasta functie si incearca din nou
BaFFyJunior Posted December 27, 2019 Posted December 27, 2019 La 23.12.2019 la 22:49, jumainkain a spus: Salut, am incercat si eu sa fac comanda /d, totul merge perfect dar ... cand dau /d si ai admin primesti de 2 ori textul, se poate sa se rezolve ? PS : Primesti de 2 ori textul daca esti si admin si pd. Comanda : YCMD:departments(playerid, params[], help) { new text[250],sendername[MAX_PLAYER_NAME],string[200]; if(PlayerInfo[playerid][pMuted] == 1) { format(string, sizeof(string), "You can't talk right now! You are muted. (%d seconds)",PlayerInfo[playerid][pMuteTime]); SCM(playerid, COLOR_GREY, string); return true; } GetPlayerName(playerid, sendername, sizeof(sendername)); if(sscanf(params, "s[250]", text)) return SCM(playerid, COLOR_GREY, "Syntax: {FFFFFF}/d <text>"); if(FaceReclama(text)) return RemoveFunction(playerid, text); if(FaceReclama(text)) return Reclama(playerid, text); if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1) format(string, sizeof(string), "* %s %s: %s, over.", GetRankName(playerid), sendername, text); else if(PlayerInfo[playerid][pMember] == 2 || PlayerInfo[playerid][pLeader] == 2) format(string, sizeof(string), "* %s %s: %s, over.", GetRankName(playerid), sendername, text); else if(PlayerInfo[playerid][pMember] == 3 || PlayerInfo[playerid][pLeader] == 3) format(string, sizeof(string), "* %s %s: %s, over.", GetRankName(playerid), sendername, text); else if(PlayerInfo[playerid][pMember] == 13 || PlayerInfo[playerid][pLeader] == 13) format(string, sizeof(string), "* %s %s: %s, over.", GetRankName(playerid), sendername, text); else if(PlayerInfo[playerid][pMember] == 14 || PlayerInfo[playerid][pLeader] == 14) format(string, sizeof(string), "* %s %s: %s, over.", GetRankName(playerid), sendername, text); else if(PlayerInfo[playerid][pScripter] == 2) format(string, sizeof(string), "* Scripter %s: %s, over.", GetRankName(playerid), sendername, text); else if(PlayerInfo[playerid][pAdmin] != 0) format(string, sizeof(string), "* Admin %s: %s, over.", sendername, text); else return SCM(playerid, COLOR_GREY, "Nu faci parte din factiunea politiei."); SendTeamMessage(3, COLOR_DEPART2, string); SendTeamMessage(2, COLOR_DEPART2, string); SendTeamMessage(1, COLOR_DEPART2, string); SendTeamMessage(13, COLOR_DEPART2, string); SendTeamMessage(14, 0x2e64feFF, string); SendAdminMessage(COLOR_DEPART2, string, 1); return true; } function SendUserMessage(color, text[], userid) { foreach(Player, i) { if(PlayerInfo[i][pSQLID] != userid) continue; SCM(i, color, text); } return true; } Multumesc pentru atentie. PS: Vreau in continuare sa apara mesajele si adminilor, dar sa nu mai apara 2 mesaje. Intrebarea este urmatoarea: adminul se afla in factiunile la care trimiti mesajul? Am o idee despre a folosi foreach si verifici daca playerii din foreach au admin si sa il trimiti cu scm.
VAurel Posted December 28, 2019 Author Posted December 28, 2019 Acum 17 ore, BaFFyJunior a spus: Intrebarea este urmatoarea: adminul se afla in factiunile la care trimiti mesajul? Am o idee despre a folosi foreach si verifici daca playerii din foreach au admin si sa il trimiti cu scm. Da, daca esti din factiunea de tip departament si esti si admin ,primesti de 2 ori textul. YouTube : https://www.youtube.com/channel/UCqHZo0HCgfmW5R5d6b5cnxw
BaFFyJunior Posted December 28, 2019 Posted December 28, 2019 Acum 9 ore, jumainkain a spus: Da, daca esti din factiunea de tip departament si esti si admin ,primesti de 2 ori textul. Pai deaia se trimite... ca idee: fa cu foreach in loc de sendadminmessage cam asa: foreach(new i:Player) { if(PlayerInfo[i][pAdmin] > 0 && PlayerInfo[i][pMember] != 3) SCM .... } Sau fa o functie care sa verifice daca playerul e in departament: function IsInDept(playerid) { if(PlayerInfo[playerid][pMember] == 3 || PlayerInfo[playerid][pMember] == 2 || PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid] [pMember] == 13 || PlayerInfo[playerid][pMember] == 14) { return 1; } return 0; } Si faci asa: in loc de SendAdminMessage pui: foreach(new i:Player) { if(PlayerInfo[i][pAdmin] > 0 && !IsInDept(i)) SCM .... }
VAurel Posted December 29, 2019 Author Posted December 29, 2019 @BaFFyJunior Multumesc, am rezolvat. YouTube : https://www.youtube.com/channel/UCqHZo0HCgfmW5R5d6b5cnxw
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