Jump to content

Recommended Posts

Posted

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;
}
Posted

@@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. 

Posted

faza cu spamul la /report l-am rezolvat, mai ramane ce-l cu /specoff, daca ma puteti ajuta v-as ramane recunoscator.

Posted

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.

Posted

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.

Posted

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.

Posted (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 by Mather
Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

moduri samp