SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

Participe do fórum, é rápido e fácil

SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

SSGamers - 12 Anos online por você.

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Chegou o novo tema 6.5.5 - SSGamers - Servidores online de qualidade - Aproveite e entre para nossa comunidade, inscreva-se já! - Ouça nossa web radio - Veja nossas novidades - Participe dos nossos setores de jogos online - Parcerias aberta fale já com um administrador.

    [Tutorial] Impedir Friendly Fire

    Weslley_Script
    Weslley_Script
    SS - Fundador
    SS - Fundador


    Steam Steam : WeslleySSGames
    Zello : WeslleySSGames
    Mensagens : 11378
    Moedas : 1031978
    Data de inscrição : 06/10/2011
    Idade : 28
    Localização : Brasil

    [Tutorial] Impedir Friendly Fire Empty [Tutorial] Impedir Friendly Fire

    Mensagem por Weslley_Script Sáb 3 Jun 2023 - 10:14

    O que й?

    Sabe aquele gamemode de Team Deathmatch que vocк criou, e sempre tinha que dar puniзхes administrativas para certos jogadores que nгo respeitavam a regra de nгo matar companheiros de equipe? Existe uma funзгo nativa do SAMP para que vocк consiga impedir o famoso team kill.

    Utilizaзгo
    Se vocк jб possui um sistema de times em seu gamemode, ficarб mais fбcil o uso da funзгo, caso ainda nгo tenha um, o tutorial do nosso amigo arakuta por ajudar

    A utilizaзгo й bem simples, temos duas funзхes bбsicas SetPlayerTeam e GetPlayerTeam.
    Код:

    Código:
    SetPlayerTeam(playerid, teamid)


    Playerid = ID do jogador no qual o time serб definido.
    Teamid = ID do time.
    Код:

    Código:
    GetPlayerTeam(playerid)


    Playerid = ID do jogador a retornar seu time.
    A funзгo irб retornar a id do atual time do player, se nгo houver, irб retornar NO_TEAM ou 255.

    Vocк deve comeзar setando o time do jogador depois do ъltimo momento em que o time й setado, provavelmente serб no OnPlayerSpawn, exemplo:

    Lembrando que nгo irei criar as classes abaixo, й apenas um exemplo do uso bбsico da funзгo.
    Код:

    Código:
    // Topo do GM
    #define TEAM_GROVE 0
    #define TEAM_BALLAS 1

    enum pInfo
    {
         Kills,
         Deaths,
         pTeam
    }
    new PlayerInfo[MAX_PLAYERS][pInfo];

    // OnPlayerRequestClass
    public OnPlayerRequestClass(playerid, classid)
    {
         if(classid == 0) PlayerInfo[playerid][pTeam] = TEAM_GROVE;
         else if(classid == 1) PlayerInfo[playerid][pTeam] = TEAM_BALLAS;
    }

    // OnPlayerSpawn
    public OnPlayerSpawn(playerid)
    {
         if(PlayerInfo[playerid][pTeam] == TEAM_GROVE) SetPlayerTeam(playerid, TEAM_GROVE);
         else if(PlayerInfo[playerid][pTeam] == TEAM_BALLAS) SetPlayerTeam(playerid, TEAM_BALLAS);
    }

    Se ainda houver algum problema com team kills, pode ser que os jogadores estejam desincronizados com o time, entгo na callback OnPlayerStreamIn defina novamente os times, que tudo funcionarб normalmente.
    pawn Код:

    Código:
    public OnPlayerStreamIn(playerid, forplayerid)
    {
        SetPlayerTeam(playerid, PlayerInfo[playerid][pTeam]);
        SetPlayerTeam(forplayerid, PlayerInfo[forplayerid][pTeam]);
        return 1;
    }

    Obrigado a todos os contribuidores.

    Nota: Nгo й recomendado que se utilize SetPlayerTeam na callback OnPlayerRequestClass, considerando que o player irб passar entre os times para escolher o desejado.
    Creditos:  Linow 



    [Tutorial] Impedir Friendly Fire D07Xwqb
    [Tutorial] Impedir Friendly Fire Yjab9HN

      Data/hora atual: Qui 9 maio 2024 - 7:34