Para evitar que um jogador perca vida tomando tiro do mesmo membro, vб na callback
OnPlayerWeaponShot e verifique se o jogador que atirou acertou alguйm (se o hittype for igual а 1), abaixo coloque a verificaзгo do time do jogador, se o time do jogador que foi atingido for igual ao de quem atirou, coloque um return 0. O return 0 nгo deixa com que o jogador tome dano.
Exemplo:
PHP код:
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
{
if(hittype == BULLET_HIT_TYPE_PLAYER) //seria a msm coisa de 1, pois BULLET_HIT_TYPE_PLAYER = 1
{
if(hitid != INVALID_PLAYER_ID)
{
if(time[hitid] == time[playerid])
{
SendClientMessage(playerid, -1, "Vocк nгo pode atirar em um membro do seu time.");
return 0;
}
}
}
return 1;
}
Para travar algum jogador, use: TogglePlayerControllable(playerid, 0). Com o valor 0 (falso), irб congelar o jogador. Para destravar, coloque 1 usando a mesma funзгo no escopo (conjunto, local) que o jogador deve ser destravado. Sobre timers, para um jogador apenas, use
SetTimerEx.
Para ficar como modo espectador em algum jogador, usa-se duas funзхes principais:
TogglePlayerSpectating e
PlayerSpectatePlayer.
Faзa um loop em todos os jogadores e veja se ele estб no minigame (vocк deve ter uma variбvel de cada jogador que muda seu valor quando ele entra no minigame para isso), abaixo abra chaves e use TogglePlayerSpectating e PlayerSpectatePlayer, mas nгo esqueзa de parar o loop usando break. Exemplo:
PHP код:
for(new i = 0; i < GetPlayerPoolSize(); ++i)
{
if(IsPlayerConnected(i))
{
if(EstaNoMinigame[i])
{
SetPlayerInterior(playerid, GetPlayerInterior(i));
SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(i));
TogglePlayerSpectating(playerid, 1);
PlayerSpectatePlayer(playerid, i);
break;
}
}
}
Qualquer coisa sу falar ai, se tiver mais dъvidas posso te ajudar, basta me adicionar no Skype. Espero ter ajudado.