Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //By Rhayziin (http://forum.sa-mp.com/showthread.php?t=573829)
- //Topo do Gm
- enum ActorSystem
- {
- Float:Pos[3],
- TimerActor[2]
- }
- new Actor[MAX_ACTORS][ActorSystem];
- public OnFilterScriptInit()
- {
- return 1;
- }
- public OnFilterScriptExit()
- {
- for(new i = 0; i <= MAX_ACTORS; ++i)
- {
- Actor[i][Pos][0] = Actor[i][Pos][1] = Actor[i][Pos][2] = 0.0;
- KillTimer(Actor[i][TimerActor][0]), KillTimer(Actor[i][TimerActor][1]);
- }
- return 1;
- }
- public OnPlayerGiveDamageActor(playerid, damaged_actorid, Float: amount, weaponid, bodypart)
- {
- new StringActor[150], WeaponName[24]; //Criando as variáveis que amazenará o nome da arma(WeaponName) e a mensagem que será transmitida no chat(StringActor)
- GetWeaponName(weaponid, WeaponName, sizeof (WeaponName)); //Pegando o nome da arma que foi usada para causa dano ao Ator
- if(!IsActorInvulnerable(damaged_actorid)) //Verificando se o Ator é vulnerável, se sim, segue o código. Se não, o código abaixo não é executado
- {
- new Float:Actor_Health; //Criando a variável que armazenará a vida do Ator
- GetActorHealth(damaged_actorid, Actor_Health); //Pegando a vida atual do Ator
- SetActorHealth(damaged_actorid, Actor_Health-amount); //Aplicando o dano ao Ator
- format(StringActor, sizeof(StringActor), "ActorID: %d | VW: %d | Arma: %s | BodyPartID: %d | Dano: %.0f | Vida: %.0f", damaged_actorid, GetActorVirtualWorld(damaged_actorid), WeaponName, bodypart, amount, Actor_Health-amount); //Formatando a mensagem que será enviada no chat
- SendClientMessage(playerid, -1, StringActor); //Enviando a mensagem no chat
- if(Actor_Health-amount <= 0.0) //Se a vida do Ator (damaged_actorid) chegar a 0 (ou menos), executa o código abaixo:
- {
- //Dá um intervalo de 2 segundos e teleporta o Ator para outro lugar
- Actor[damaged_actorid][TimerActor][0] = SetTimerEx("TeleportActor", 2000, false, "i", damaged_actorid);
- }
- }
- return 1;
- }
- forward TeleportActor(ActorID);
- public TeleportActor(ActorID)
- {
- GetActorPos(ActorID, Actor[ActorID][Pos][0], Actor[ActorID][Pos][1], Actor[ActorID][Pos][2]); //Pegando a posição do Ator e atribuindo-a as variaveis criadas no inicio do GM/FS
- SetActorHealth(ActorID, 100.0); //Setando a vida do Ator para 100
- SetActorPos(ActorID, 0.0+ActorID, 0.0+ActorID, 0.0); //Colocando o Ator em outro lugar.
- Actor[ActorID][TimerActor][1] = SetTimerEx("ReviveActor", 1500, false, "i", ActorID); //Dá um intervalo de 1 segndo e meio, e chama a função que irá recolocar o Ator na posição que foi 'morto'
- return 1;
- }
- forward ReviveActor(ActorID);
- public ReviveActor(ActorID)
- {
- SetActorPos(ActorID, Actor[ActorID][Pos][0], Actor[ActorID][Pos][1], Actor[ActorID][Pos][2]); //Colocando o Ator na posição que 'morreu'
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement