09.01.2013, 02:20
(
Последний раз редактировалось Linow; 09.01.2013 в 14:17.
Причина: Melhor formataзгo, adiзгo de conteъdo.
)
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 poderб lhe ajudar.[Ver tutorial]
A utilizaзгo й bem simples, temos duas funзхes bбsicas SetPlayerTeam e GetPlayerTeam.
Код:
SetPlayerTeam(playerid, teamid)
Teamid = ID do time.
Код:
GetPlayerTeam(playerid)
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.
Код:
// 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); }
pawn Код:
public OnPlayerStreamIn(playerid, forplayerid)
{
SetPlayerTeam(playerid, PlayerInfo[playerid][pTeam]);
SetPlayerTeam(forplayerid, PlayerInfo[forplayerid][pTeam]);
return 1;
}
Adicionais
Fix para desincronizaзгo do player com o team - CyNic
Sugestгo para explanaзгo das funзхes - DiReCt hIt
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.