Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Co zablokuje wpis w csie: np. "se7en (M4A1) BOT"chodzi mi o zabicie innego gracza (w prawym gornym rogu)


  • Zamknięty Temat jest zamknięty
2 odpowiedzi w tym temacie

#1 se7en

    Zaawansowany

  • Użytkownik

Reputacja: 3
Nowy

  • Postów:112
  • GG:
  • Imię:Konrad
  • Lokalizacja:Łódź
Offline

Napisano 06.08.2011 19:23

Witam ;]

W wielkim skrocie:
Mam taki prosty plugin a w nim funkcje ktora liczy kto zadal ile obrazen przeciwnikowi i w sytuacji ze Gracz1 zadal 99 obrazen Graczowi3, a Gracz2 dobil Gracza3, wyswietla sie informacja (w prawym gornym rogu) Gracz1 + Gracz2 (M4A1) Gracz3

Problem mam taki ze wyswietla sie ten "nowy" wpis oraz ten "stary"
Czyli efekt jest mniejwiecej taki:

Gracz2 (M4A1) Gracz3
Gracz1 + Gracz2 (M4A1) Gracz3

jak widzicie, wpis sie podwaja...
Jak moge zablokowac ten standardowy wpis ?

kawalek mojej funkcji:

public event_deathmsg()
{	
	if( !get_pcvar_num(p_Enabled) )
		return PLUGIN_CONTINUE;
	
	new counted_triple = get_pcvar_num(xp_kill) + get_pcvar_num(xp_triple)
	new counted_ultra = get_pcvar_num(xp_kill) + get_pcvar_num(xp_ultra)
	
	
	new iVictim = read_data(2)
	new iKiller = read_data(1)
	new iHS = read_data(3)
	new szWeapon[24]
	read_data(4, szWeapon, 23)

	g_kills[iKiller]++;

	if(!is_player(iVictim))
	{
		do_deathmsg(iKiller, iVictim, iHS, szWeapon)

		return PLUGIN_CONTINUE
	}

	g_bAlive[iVictim] = false

	if(!is_player(iKiller))
	{
		do_deathmsg(iKiller, iVictim, iHS, szWeapon)

		return PLUGIN_CONTINUE
	}
	

	new iKillerTeam = g_iTeam[iKiller]

	if(iKiller != iVictim && g_iTeam[iVictim] != iKillerTeam)
	{
		new iKiller2 = 0
		new iDamage2 = 0

		
		
		
		for(new p = 1; p <= g_maxplayers; p++)
		{
			if(p != iKiller && g_bOnline[p] && (ch_pCVar_onlyAlive && g_bAlive[p] || !ch_pCVar_onlyAlive) && iKillerTeam == g_iTeam[p] && g_iDamage[p][iVictim] >= ch_pCVar_minDamage && g_iDamage[p][iVictim] > iDamage2)
			{
				iKiller2 = p
				iDamage2 = g_iDamage[p][iVictim]
			}

			g_iDamage[p][iVictim] = 0
		}

		if(iKiller2 > 0 && iDamage2 > ch_pCVar_minDamage)
		{
			new iFrags = get_user_frags(iKiller2)+1

			g_kills[iKiller2]++;

			message_begin(MSG_ALL, msgID_scoreInfo)
			write_byte(iKiller2)
			write_short(iFrags)
			write_short(get_user_deaths(iKiller2))
			write_short(0)
			write_short(iKillerTeam)
			message_end()

			
			new szName1[32], iName1Len, szName2[32], iName2Len, szNames[32], szWeaponLong[32]

			iName1Len = get_user_name(iKiller, szName1, 31)
			iName2Len = get_user_name(iKiller2, szName2, 31)
 
			g_szName[iKiller] = szName1

			if(iName1Len < 14)
			{
				formatex(szName1, iName1Len, "%s", szName1)
				formatex(szName2, 28-iName1Len, "%s", szName2)
			}
			else if(iName2Len < 14)
			{
				formatex(szName1, 28-iName2Len, "%s", szName1)
				formatex(szName2, iName2Len, "%s", szName2)
			}
			else
			{
				formatex(szName1, 13, "%s", szName1)
				formatex(szName2, 13, "%s", szName2)
			}

			formatex(szNames, 31, "%s + %s", szName1, szName2)
			set_msg_block(msgID_sayText, BLOCK_ONCE)
			set_user_info(iKiller, "name", szNames)

			if(equali(szWeapon, "grenade"))
				szWeaponLong = "weapon_hegrenade"
			else
				formatex(szWeaponLong, 31, "weapon_%s", szWeapon)

			new args[4]

			args[0] = iVictim
			args[1] = iKiller
			args[2] = iHS
			args[3] = get_weaponid(szWeaponLong)

			set_task(0.1, "player_diePost", 0, args, 4)
		}	
	}
	return PLUGIN_CONTINUE;
}

public player_diePost(arg[])
{
	new szWeapon[24]
	new iKiller = arg[1]

	get_weaponname(arg[3], szWeapon, 23)
	replace(szWeapon, 23, "weapon_", "")

	do_deathmsg(iKiller, arg[0], arg[2], szWeapon)

	set_msg_block(msgID_sayText, BLOCK_ONCE)
	set_user_info(iKiller, "name", g_szName[iKiller])
	
	return PLUGIN_CONTINUE
}

proszę o pomoc jezeli wiecie o co mi chodzi :]
  • +
  • -
  • 0

#2 diablix

    emeryt

  • Przyjaciel

Reputacja: 507
Wszechwiedzący

  • Postów:663
  • GG:
  • Steam:steam
  • Imię:Daniel
  • Lokalizacja:Warszawa
Offline

Napisano 06.08.2011 19:50

Spróbuj tak

#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>

#define VERSION "0.1"

new bool:g_bHeadShot[0x21];
new g_iTaskDone[0x21];

public plugin_init() {
register_plugin("Wiadomosc", VERSION, "diablix")
RegisterHam(Ham_TraceAttack, "player", "fwTraceAttack", 0);
}

public fwTraceAttack(iVictim, iAttacker, Float:fDamage, Float:fVecDir[3], iTrace){
if((1 >= iAttacker <= get_maxplayers()) && (1 >= iVictim <= get_maxplayers()) && get_user_team(iAttacker) != get_user_team(iVictim)){
new Float:fHealth;
pev(iVictim, pev_health, fHealth);

if((fHealth - fDamage) <= 0.0){
g_bHeadShot[iAttacker] = (get_tr2(iTrace, TR_iHitgroup) == HIT_HEAD);

new any:iData[4];
iData[0] = iAttacker;
iData[1] = iVictim;
iData[2] = get_user_weapon(iAttacker);
iData[3] = _:g_bHeadShot[iAttacker];

set_task(0.1, "taskCreateDeathMsg", _, iData, sizeof iData);

if(task_exists(iAttacker + 1337)) remove_task(iAttacker + 1337);

g_iTaskDone[iAttacker] = 0;

set_task(0.2, "taskBlockMsg", iAttacker + 1337, _, _, "a", 2);
}
}
}

public taskCreateDeathMsg(any:iData[]){
new sWeaponName[64];
get_weaponname(iData[2], sWeaponName, sizeof sWeaponName - 1);

make_deathmsg(iData[0], iData[1], iData[3], sWeaponName);
}

public taskBlockMsg(iAttacker){
iAttacker -= 1337;

switch(g_iTaskDone[iAttacker]){
case 0: set_msg_block(get_user_msgid("DeathMsg"), BLOCK_ONCE);
default:set_msg_block(get_user_msgid("DeathMsg"), BLOCK_NOT);
}

g_iTaskDone[iAttacker] ++;
}

Użytkownik diablix edytował ten post 06.08.2011 19:56

  • +
  • -
  • 0

#3 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 06.08.2011 20:32

jak już wyślesz nowy deathmsg to zwróć PLUGIN_HANDLED, jak nie zablokuje to musisz dać register_message zamiast event
  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych