TheSheriff Posted July 14, 2015 Posted July 14, 2015 Salut, am si eu 2 probleme pe care nu imi pot da seama cum le pot rezolva. 1.problema cu /specoff merge sa dau /spec, dar cand dau /specoff ma scoate dupa spec si imi da respawn. CMD:spec(playerid, params[]) { if(gPlayerLogged[playerid] == 0) return SendClientMessage(playerid, COLOR_LIGHTRED, "You need to login first."); if(IsPlayerConnected(playerid)) { if(PlayerInfo[playerid][pAdmin] >= 1 || PlayerInfo[playerid][pHelper] >= 1) { new id,giveplayer[25],string[100]; if(sscanf(params, "u", id)) return SCM(playerid,COLOR_WHITE,"{B8DBFF}Synthax: /spec <Name/Playerid>"); { if(IsPlayerConnected(id)) { if(id != INVALID_PLAYER_ID) { Spectate[playerid] = id; new Float:health; GetPlayerHealthEx(Spectate[playerid], health); GetPlayerName(Spectate[playerid], giveplayer, sizeof(giveplayer)); new cash = GetPlayerCash(Spectate[playerid]); format(string, sizeof(string), "Watch: (%d) %s $%s Heal:%.0f",Spectate[playerid],giveplayer,FormatNumber(cash),health); SendClientMessage(playerid, COLOR_GREEN, string); TogglePlayerSpectating(playerid, 1); if(IsPlayerInAnyVehicle(Spectate[playerid])) { new carid = GetPlayerVehicleID(Spectate[playerid]); PlayerSpectateVehicle(playerid, carid); } else { PlayerSpectatePlayer(playerid, Spectate[playerid]); } } } else { SendClientMessage(playerid, COLOR_WHITE, "{FFFFCC}Error: Player not connected."); } } } else { SendClientMessage(playerid, COLOR_WHITE, AdminOnly); return 1; } } return 1; } CMD:specoff(playerid, params[]) { if(gPlayerLogged[playerid] == 0) return SendClientMessage(playerid, COLOR_LIGHTRED, "You need to login first."); if(IsPlayerConnected(playerid)) { if(PlayerInfo[playerid][pAdmin] >= 1 || PlayerInfo[playerid][pHelper] >= 1) { if(Spectate[playerid] < 253 && Spectate[playerid] != 255) { TogglePlayerControllable(playerid, 1); TogglePlayerSpectating(playerid, 0); SetPlayerInterior(playerid,Unspec[playerid][sPint]); PlayerInfo[playerid][pInt] = Unspec[playerid][sPint]; PlayerInfo[playerid][pLocal] = Unspec[playerid][sLocal]; Unspec[playerid][sLocal] = 255; gTeam[playerid] = PlayerInfo[playerid][pTeam]; SetPlayerToTeamColor(playerid); SendClientMessage(playerid, COLOR_GREEN, "You stopped watching a player."); TextDrawHideForPlayer(playerid, TextDrawSpec[playerid][1]); TextDrawHideForPlayer(playerid, TextDrawSpec[playerid][2]); TextDrawHideForPlayer(playerid, TextDrawSpec[playerid][3]); TextDrawHideForPlayer(playerid, TextDrawSpec[playerid][4]); TextDrawHideForPlayer(playerid, TextDrawSpec[playerid][5]); SpawnPlayer(playerid); Spectate[playerid] = 255; return 1; } } else return SendClientMessage(playerid, COLOR_WHITE, AdminOnly); } return 1; } 2.Problema spam /report la gm-ul meu se poate da /report unul dupa altul, fara ca sa existe un timp anume, am incercat o gramada de modalitati dar nu reusesc. CMD:report(playerid, params[]) { if(gPlayerLogged[playerid] == 0) return SendClientMessage(playerid, COLOR_LIGHTRED, "You need to login first."); if(IsPlayerConnected(playerid)) { if(PlayerInfo[playerid][pAdmin] >= 1) return SCM(playerid,0xFFFFFFFF, "{FFB870}Error: Esti admin."); new sendername[MAX_PLAYER_NAME],string[300],helptext[250]; GetPlayerName(playerid, sendername, sizeof(sendername)); if(sscanf(params, "s[250]",helptext)) return SCM(playerid,COLOR_WHITE,"{B8DBFF}Syntax: /report <Message>"); format(string, sizeof(string), "Report from %s (%d): %s.(/accept al %d)", sendername,playerid,helptext,playerid); ABroadCast(COLOR_LIGHTRED,string,1); reportsend[playerid] = 1; if(rTime[playerid] == 1) return SendClientMessage(playerid, COLOR_WHITE, "{C90000}Info: {FFFFFF}Poti trimite un report o data la un minut."); format(string, sizeof(string), "{006699}Report{ffffff}-ul tau a fost trimis catre {006699}admini{ffffff}: ''%s'' .",helptext); SendClientMessage(playerid,COLOR_WHITE,string); SetPVarString(playerid, "Report", helptext); } return 1; }
Vlad Husman Posted July 14, 2015 Posted July 14, 2015 1. /specoff asa e normal sa se intample.(din cate stiu eu)2. nu ma bag, nu stiu.
NewBie. Posted July 15, 2015 Posted July 15, 2015 @@TheSheriff, la rTime faci să fie default cât vrei ( câte secunde ) apoi faci un foreach pe playerul x, și pui rTime[x]--; adică să scadă câte una odată la o secundă, sau poți face un timer.
TheSheriff Posted July 15, 2015 Author Posted July 15, 2015 faza cu spamul la /report l-am rezolvat, mai ramane ce-l cu /specoff, daca ma puteti ajuta v-as ramane recunoscator.
NewBie. Posted July 15, 2015 Posted July 15, 2015 faza cu spamul la /report l-am rezolvat, mai ramane ce-l cu /specoff, daca ma puteti ajuta v-as ramane recunoscator. ce vrei să faci la /specoff? logic și normal ar fi să te scoată de pe spec.
TheSheriff Posted July 16, 2015 Author Posted July 16, 2015 ce vrei să faci la /specoff? logic și normal ar fi să te scoată de pe spec. pai da, comanda te scoate dupa /spec, dar primesc respawn, nu vreau ca sa primesc respawn cand dau /specoff, ci sa mi se salveze locatia care era cand am dat /spec.
NewBie. Posted July 16, 2015 Posted July 16, 2015 pai da, comanda te scoate dupa /spec, dar primesc respawn, nu vreau ca sa primesc respawn cand dau /specoff, ci sa mi se salveze locatia care era cand am dat /spec. când dă /spec faci un float și îi iei poziția jucătorului care a dat /spec, și când dă /specoff îi setezi poziția de la /spec.
L0K3D. Posted July 19, 2015 Posted July 19, 2015 (edited) Salut, am si eu 2 probleme pe care nu imi pot da seama cum le pot rezolva. 1.problema cu /specoff merge sa dau /spec, dar cand dau /specoff ma scoate dupa spec si imi da respawn. CMD:spec(playerid, params[]) { if(gPlayerLogged[playerid] == 0) return SendClientMessage(playerid, COLOR_LIGHTRED, "You need to login first."); if(IsPlayerConnected(playerid)) { if(PlayerInfo[playerid][pAdmin] >= 1 || PlayerInfo[playerid][pHelper] >= 1) { new id,giveplayer[25],string[100]; if(sscanf(params, "u", id)) return SCM(playerid,COLOR_WHITE,"{B8DBFF}Synthax: /spec <Name/Playerid>"); { if(IsPlayerConnected(id)) { if(id != INVALID_PLAYER_ID) { Spectate[playerid] = id; new Float:health; GetPlayerHealthEx(Spectate[playerid], health); GetPlayerName(Spectate[playerid], giveplayer, sizeof(giveplayer)); new cash = GetPlayerCash(Spectate[playerid]); format(string, sizeof(string), "Watch: (%d) %s $%s Heal:%.0f",Spectate[playerid],giveplayer,FormatNumber(cash),health); SendClientMessage(playerid, COLOR_GREEN, string); TogglePlayerSpectating(playerid, 1); if(IsPlayerInAnyVehicle(Spectate[playerid])) { new carid = GetPlayerVehicleID(Spectate[playerid]); PlayerSpectateVehicle(playerid, carid); } else { PlayerSpectatePlayer(playerid, Spectate[playerid]); } } } else { SendClientMessage(playerid, COLOR_WHITE, "{FFFFCC}Error: Player not connected."); } } } else { SendClientMessage(playerid, COLOR_WHITE, AdminOnly); return 1; } } return 1; } CMD:specoff(playerid, params[]) { if(gPlayerLogged[playerid] == 0) return SendClientMessage(playerid, COLOR_LIGHTRED, "You need to login first."); if(IsPlayerConnected(playerid)) { if(PlayerInfo[playerid][pAdmin] >= 1 || PlayerInfo[playerid][pHelper] >= 1) { if(Spectate[playerid] < 253 && Spectate[playerid] != 255) { TogglePlayerControllable(playerid, 1); TogglePlayerSpectating(playerid, 0); SetPlayerInterior(playerid,Unspec[playerid][sPint]); PlayerInfo[playerid][pInt] = Unspec[playerid][sPint]; PlayerInfo[playerid][pLocal] = Unspec[playerid][sLocal]; Unspec[playerid][sLocal] = 255; gTeam[playerid] = PlayerInfo[playerid][pTeam]; SetPlayerToTeamColor(playerid); SendClientMessage(playerid, COLOR_GREEN, "You stopped watching a player."); TextDrawHideForPlayer(playerid, TextDrawSpec[playerid][1]); TextDrawHideForPlayer(playerid, TextDrawSpec[playerid][2]); TextDrawHideForPlayer(playerid, TextDrawSpec[playerid][3]); TextDrawHideForPlayer(playerid, TextDrawSpec[playerid][4]); TextDrawHideForPlayer(playerid, TextDrawSpec[playerid][5]); SpawnPlayer(playerid); Spectate[playerid] = 255; return 1; } } else return SendClientMessage(playerid, COLOR_WHITE, AdminOnly); } return 1; } 2.Problema spam /report la gm-ul meu se poate da /report unul dupa altul, fara ca sa existe un timp anume, am incercat o gramada de modalitati dar nu reusesc. CMD:report(playerid, params[]) { if(gPlayerLogged[playerid] == 0) return SendClientMessage(playerid, COLOR_LIGHTRED, "You need to login first."); if(IsPlayerConnected(playerid)) { if(PlayerInfo[playerid][pAdmin] >= 1) return SCM(playerid,0xFFFFFFFF, "{FFB870}Error: Esti admin."); new sendername[MAX_PLAYER_NAME],string[300],helptext[250]; GetPlayerName(playerid, sendername, sizeof(sendername)); if(sscanf(params, "s[250]",helptext)) return SCM(playerid,COLOR_WHITE,"{B8DBFF}Syntax: /report <Message>"); format(string, sizeof(string), "Report from %s (%d): %s.(/accept al %d)", sendername,playerid,helptext,playerid); ABroadCast(COLOR_LIGHTRED,string,1); reportsend[playerid] = 1; if(rTime[playerid] == 1) return SendClientMessage(playerid, COLOR_WHITE, "{C90000}Info: {FFFFFF}Poti trimite un report o data la un minut."); format(string, sizeof(string), "{006699}Report{ffffff}-ul tau a fost trimis catre {006699}admini{ffffff}: ''%s'' .",helptext); SendClientMessage(playerid,COLOR_WHITE,string); SetPVarString(playerid, "Report", helptext); } return 1; } Am acelasi GM, adica Saints-network. Iti propun sa faci 3 variabile de tip float, adica "Float:posX". Cand a spec sa se salveze coordonatele cu ajutorul acelor varibile. Iar cand da /specoff sa il teleporteze la acele variabile, SetPlayerPos(playerid, PlayerInfo[playerid][pposX], PlayerInfo[playerid][pposY], PlayerInfo[playerid][pposZ]); Iar cu reportul, faci ceva gen: O noua varibila "rTime", cand da report sa-si seteze variabila pe 1. Si pui un timer peste 60 secunde sa zicem, sa i-o seteze pe 0. Adagui la comanda functi if(PlayerInfo[playerid][prTime] == 0) respectiv mesajul pentru restrictie: else SendClientMessage(playerid, COLOR_GREY, "Poti folosi aceasta comanda doar o data pe minut"); Edited July 19, 2015 by Mather
Recommended Posts