SA-MP Forums Archive
[Ajuda] on off a filterscript - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] on off a filterscript (/showthread.php?tid=637984)



on off a filterscript - helpmesamp - 25.07.2017

Tenho essa filterscript:
Код:
// Name: 		HidBar
// Author:      Hiddos
// Date: 		21st March 2011
// Version:     1.1
// Don't re-release without permission.

#include <a_samp>
#define HITCOLOR 0xFFFFFFAA
#define MAX_HEALTH_LENGTH 2

new Float:old_hp[MAX_PLAYERS];
new Float:old_ap[MAX_PLAYERS];

public OnPlayerUpdate(playerid)
{
	new Float:new_hp, Float:new_ap;
	GetPlayerArmour(playerid, new_ap);
	GetPlayerHealth(playerid, new_hp);
	if(new_hp >= old_hp[playerid] && new_ap >= old_ap[playerid])
	{
		old_hp[playerid] = new_hp;
		old_ap[playerid] = new_ap;
		return 1;
	}
	new Text3D:hitbar;
	new Float:Pos[3];
	new diff = floatround( (old_hp[playerid] - new_hp) + (old_ap[playerid] - new_ap) );
	new string[MAX_HEALTH_LENGTH + 1];
	GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
	format(string, sizeof string, "%i", diff);
	hitbar = Create3DTextLabel(string, HITCOLOR, Pos[0], Pos[1], Pos[2] + 0.6, 30.0, 0);
	SetTimerEx("UpdateHitBar", 66, 0, "iifffii", _:hitbar, diff, Pos[0], Pos[1], Pos[2] + 0.8, 16, HITCOLOR);
	old_hp[playerid] = new_hp;
	old_ap[playerid] = new_ap;
	return 1;
}

public OnFilterScriptInit()
{
	for(new i; i < MAX_PLAYERS; i++)
	{
		GetPlayerHealth(i, old_hp[i]);
		GetPlayerArmour(i, old_ap[i]);
	}
	return 1;
}

public OnPlayerConnect(playerid)
{
	old_hp[playerid] = 100.0;
	old_ap[playerid] = 0.0;
	return 1;
}

forward UpdateHitBar(Text3D:hitbar, hp, Float:x, Float:y, Float:z, update_no, color);
public UpdateHitBar(Text3D:hitbar, hp, Float:x, Float:y, Float:z, update_no, color)
{
	Delete3DTextLabel(hitbar);
	update_no--;
	if(!update_no) return;

	new string[MAX_HEALTH_LENGTH + 1];
	z += 0.05;
	color -= 12;
	format(string, sizeof string, "%i", hp);
	hitbar = Create3DTextLabel(string, color, x, y, z, 30.0, 0);
	SetTimerEx("UpdateHitBar", 66, 0, "iifffii", _:hitbar, hp, x, y, z, update_no, color);
}
porйm queria ter uma opзгo de ativar/desativar,tem como? Se sim poste eu ficarei mt grato


Re: on off a filterscript - Relaxed - 25.07.2017

Tem, use a funзгo.

PHP код:
SendRconCommand("loadfs nome_do_fs"); // Carregar FS 
PHP код:
SendRconCommand("unloadfs nome_do_fs"); // Descarregar FS 



Re: on off a filterscript - helpmesamp - 25.07.2017

E tipo,quero opзгo para os players ativarem e desativarem sabe? so para elees..
isso й um dano que qnd tu da um tiro aparece o dano na skin,entao individualmente para os players para cada um poder ativar/desativar o seu.


Re: on off a filterscript - augustogdo - 25.07.2017

Quote:
Originally Posted by helpmesamp
Посмотреть сообщение
E tipo,quero opзгo para os players ativarem e desativarem sabe? so para elees..
isso й um dano que qnd tu da um tiro aparece o dano na skin,entao individualmente para os players para cada um poder ativar/desativar o seu.
Nгo tem ligar/desligar um FS "per player", a nгo ser que integrasse o FS em sua gamemode e modificasse o sistema para ser ligado e desligado conforme a vontade do player.


Re: on off a filterscript - helpmesamp - 25.07.2017

Sim,pode ser...


Re: on off a filterscript - MatheusOliveira - 26.07.2017

PHP код:
// Name:         HidBar
// Author:      Hiddos
// Date:         21st March 2011
// Version:     1.1
// Don't re-release without permission.
#include <a_samp>
#include <zcmd>
#define HITCOLOR 0xFFFFFFAA
#define MAX_HEALTH_LENGTH 2
new Float:old_hp[MAX_PLAYERS];
new 
Float:old_ap[MAX_PLAYERS];
new 
bool:ativado[MAX_PLAYERS];
CMD:filterscript(playeridparams[])
{
        if(
ativado[playerid] == false){
                
ativado[playerid] = true
        }
        else
        {
                
ativado[playerid] = false
        }
return 
1;
}
public 
OnPlayerUpdate(playerid)
{
        if(
ativado[playerid] == true){
    new 
Float:new_hpFloat:new_ap;
    
GetPlayerArmour(playeridnew_ap);
    
GetPlayerHealth(playeridnew_hp);
    if(
new_hp >= old_hp[playerid] && new_ap >= old_ap[playerid])
    {
        
old_hp[playerid] = new_hp;
        
old_ap[playerid] = new_ap;
        return 
1;
    }
    new 
Text3D:hitbar;
    new 
Float:Pos[3];
    new 
diff floatround( (old_hp[playerid] - new_hp) + (old_ap[playerid] - new_ap) );
    new 
string[MAX_HEALTH_LENGTH 1];
    
GetPlayerPos(playeridPos[0], Pos[1], Pos[2]);
    
format(stringsizeof string"%i"diff);
    
hitbar Create3DTextLabel(stringHITCOLORPos[0], Pos[1], Pos[2] + 0.630.00);
    
SetTimerEx("UpdateHitBar"660"iifffii"_:hitbardiffPos[0], Pos[1], Pos[2] + 0.816HITCOLOR);
    
old_hp[playerid] = new_hp;
    
old_ap[playerid] = new_ap;
}else{
}
    return 
1;
}
public 
OnFilterScriptInit()
{
    for(new 
iMAX_PLAYERSi++)
    {
        
GetPlayerHealth(iold_hp[i]);
        
GetPlayerArmour(iold_ap[i]);
    }
    return 
1;
}
public 
OnPlayerConnect(playerid)
{
    
old_hp[playerid] = 100.0;
    
old_ap[playerid] = 0.0;
    return 
1;
}
forward UpdateHitBar(Text3D:hitbarhpFloat:xFloat:yFloat:zupdate_nocolor);
public 
UpdateHitBar(Text3D:hitbarhpFloat:xFloat:yFloat:zupdate_nocolor)
{
    
Delete3DTextLabel(hitbar);
    
update_no--;
    if(!
update_no) return;
    new 
string[MAX_HEALTH_LENGTH 1];
    
+= 0.05;
    
color -= 12;
    
format(stringsizeof string"%i"hp);
    
hitbar Create3DTextLabel(stringcolorxyz30.00);
    
SetTimerEx("UpdateHitBar"660"iifffii"_:hitbarhpxyzupdate_nocolor);

fiz isso na correria, vк se funciona.

Й basicamente assim, se o jogador digitar /filterscript vai ativar as funзхes que acontecem em cada jogador pra ele, se ele digitar de novo vai desativar, e assim vai.
Pro comando funcionar й necessбrio ter o processador de comandos ZCMD.