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

Jak ukryć celownik podczas strzelania


Najlepsza odpowiedź grankee , 28.11.2014 22:41


RegisterHam(Ham_Weapon_SecondaryAttack, "player", "damage");

 

To nie player jest "PrimaryAttack" tylko jego broń, osobne entity.

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>
new gHideWeapon,celownik_schowany[33]
public plugin_init() {
	register_plugin("G_HideCrosshair", "0.1", "grankee")
	new szWeaponName[32] 
	new NOSHOT_BITSUM = (1<<CSW_KNIFE) | (1<<CSW_HEGRENADE) | (1<<CSW_FLASHBANG) | (1<<CSW_SMOKEGRENADE) 
	for(new iId = CSW_P228; iId <= CSW_P90; iId++) 
	{ 
		if( ~NOSHOT_BITSUM & 1<<iId && get_weaponname(iId, szWeaponName, charsmax(szWeaponName) )) 
		{ 
		    RegisterHam(Ham_Weapon_PrimaryAttack, szWeaponName, "onAttack", 1) 
		} 
	} 
	gHideWeapon = get_user_msgid("HideWeapon")
}
public onAttack(weap)
{
	new id=pev(weap,pev_owner)
	if(celownik_schowany[id]==0)
	{
		message_begin(MSG_ONE, gHideWeapon, _, id)
		write_byte((1<<6))
		message_end()
		celownik_schowany[id]=1
		
	}
	if(!task_exists(id))
	{
		set_task(0.01,"pokaz_celownik",id)
	}
	else
	{
		change_task(id,0.1)
	}
}
public pokaz_celownik(id)
{
	message_begin(MSG_ONE, gHideWeapon, _, id)
	write_byte(0)
	message_end()
	celownik_schowany[id]=0
}
Przejdź do postu


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
6 odpowiedzi w tym temacie

#1 Dziobak?

    Wszechmogący

  • Power User

Reputacja: 271
Wszechwidzący

  • Postów:645
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Radom
Offline

Napisano 28.11.2014 16:22

A więc mam małe pytanko jak ukryć celownik u gracza podczas strzelania, a gdy skończy strzelanie to mu się pokaże. jak by ktoś mógł zapodać kod byłbym wdzięczny :D
  • +
  • -
  • 0

#2 wiwi249

    Wszechobecny

  • Użytkownik

Reputacja: 150
Profesjonalista

  • Postów:440
  • GG:
  • Imię:Wiktor
  • Lokalizacja:Tarnobrzeg
Offline

Napisano 28.11.2014 16:32

message_begin(MSG_ONE, g_msgHideWeapon, _, id)
		write_byte((1<<6))
		message_end()

Tym schowasz celownik, ale jak to ugryźć... Ukryć możesz przy wywołaniu Ham_Weapon_Primaryattack, ale jak go przywrócić, to już nie mam pojecia.

 

EDIT: Przywrócić możesz spróbować tym: https://wiki.alliedm...events#ResetHUD ale nie wiem czym to poskutkuje, bo resetuje cały HUD (możliwe że czat też, do sprawdzenia)


Użytkownik wiwi249 edytował ten post 28.11.2014 16:35

  • +
  • -
  • 0

Wykonuję strony internetowe, zlecenia AMXX i HLDS - w tym pisanie pluginów, ogarnianie serwerów, edycja i tworzenie modeli.

Potrzebujesz czegoś? Pisz!

 

"śpieszmy się pisać posty, tak szybko banują..." ~ sebul


#3 Dziobak?

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 271
Wszechwidzący

  • Postów:645
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Radom
Offline

Napisano 28.11.2014 16:44

No mam taki kod

#include <amxmodx> 
#include <fakemeta> 

#define MAX_PLAYERS 32 

new bool:celownik[MAX_PLAYERS+1] 
new gHideWeapon 

public plugin_init() { 
	register_plugin("Celownik", "1.0", "Play")
	
	register_event("Damage", "event_damage", "b", "2!0", "3=0", "4!0");
	gHideWeapon = get_user_msgid("HideWeapon") 
	
} 
public client_putinserver(id) 
{ 
	celownik[id] = false 
} 
public event_damage(id, this)
{ 
	if(!is_user_alive(id)) 
		return FMRES_IGNORED 
	
	new attacker = get_user_attacker(id);	

	if( attacker ) 
	{ 
		if(!celownik[id]) 
		{ 
			celownik[id] = true 
			ukryj_crosshair(id)
			return FMRES_HANDLED 
		} 
	} 
	else if(celownik[id]) 
	{ 
		celownik[id] = false 
		pokaz_crosshair(id) 
		return FMRES_HANDLED 
	} 
	
	return FMRES_IGNORED 
} 

pokaz_crosshair(id) 
{ 
	message_begin(MSG_ONE_UNRELIABLE, gHideWeapon, _, id) 
	write_byte(0) 
	message_end() 
} 
ukryj_crosshair(id) 
{ 
	message_begin(MSG_ONE_UNRELIABLE, gHideWeapon, _, id) 
	write_byte(1<<6) 
	message_end() 
}	


  • +
  • -
  • 0

#4 wiwi249

    Wszechobecny

  • Użytkownik

Reputacja: 150
Profesjonalista

  • Postów:440
  • GG:
  • Imię:Wiktor
  • Lokalizacja:Tarnobrzeg
Offline

Napisano 28.11.2014 18:51

No dobra, i daje Ci to co chciałeś osiągnąć? Poza tym robisz to na evencie Damage a nie Ham_Weapon_Primaryattack?


  • +
  • -
  • 0

Wykonuję strony internetowe, zlecenia AMXX i HLDS - w tym pisanie pluginów, ogarnianie serwerów, edycja i tworzenie modeli.

Potrzebujesz czegoś? Pisz!

 

"śpieszmy się pisać posty, tak szybko banują..." ~ sebul


#5 Dziobak?

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 271
Wszechwidzący

  • Postów:645
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Radom
Offline

Napisano 28.11.2014 20:34

No dobra, i daje Ci to co chciałeś osiągnąć? Poza tym robisz to na evencie Damage a nie Ham_Weapon_Primaryattack?

 

O to ci chodziło ?

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


#define MAX_PLAYERS 32 

new bool:celownik[MAX_PLAYERS+1] 
new gHideWeapon 

public plugin_init() { 
	register_plugin("Celownik", "1.0", "Play")
	
	RegisterHam(Ham_Weapon_SecondaryAttack, "player", "damage");
	gHideWeapon = get_user_msgid("HideWeapon") 
	
} 
public client_putinserver(id) 
{ 
	celownik[id] = false 
} 
public damage(id, this)
{ 
	if(!is_user_alive(id)) 
		return FMRES_IGNORED 
	
	new attacker = get_user_attacker(id);	

	if(attacker)
	{				
		if(!celownik[id]) 
		{ 
			celownik[id] = true 
			ukryj_crosshair(id)
			return FMRES_HANDLED 
		} 
	} 
	else if(celownik[id]) 
	{ 
		celownik[id] = false 
		pokaz_crosshair(id) 
		return FMRES_HANDLED 
	} 
	
	return FMRES_IGNORED 
} 

pokaz_crosshair(id) 
{ 
	message_begin(MSG_ONE_UNRELIABLE, gHideWeapon, _, id) 
	write_byte(0) 
	message_end() 
} 
ukryj_crosshair(id) 
{ 
	message_begin(MSG_ONE_UNRELIABLE, gHideWeapon, _, id) 
	write_byte(1<<6) 
	message_end() 
}	

bo nie działa....


  • +
  • -
  • 0

#6 wiwi249

    Wszechobecny

  • Użytkownik

Reputacja: 150
Profesjonalista

  • Postów:440
  • GG:
  • Imię:Wiktor
  • Lokalizacja:Tarnobrzeg
Offline

Napisano 28.11.2014 22:19

Nie, zajrzyj do opisu Ham_Weapon_PrimaryAttack. Nie ma takiej broni jak "player" xD

Najlepiej zrobić to tak:

new szWeaponName[32]
new NOSHOT_BITSUM = (1<<CSW_KNIFE) | (1<<CSW_HEGRENADE) | (1<<CSW_FLASHBANG) | (1<<CSW_SMOKEGRENADE)
for(new iId = CSW_P228; iId <= CSW_P90; iId++)
{
      if( !NOSHOT_BITSUM & 1<<iId && get_weaponname(iId, szWeaponName, charsmax(szWeaponName) )
      {
        RegisterHam(Ham_Weapon_PrimaryAttack, szWeaponName, "Ham_WeaponAttack_Post")
      }
 } 

Albo jeśli ma to dotyczyc tylko wybranych broni, to możesz to robić podobną pętlą albo możesz też po kolei wypisywać RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_xx", "Funkcja")


  • +
  • -
  • 0

Wykonuję strony internetowe, zlecenia AMXX i HLDS - w tym pisanie pluginów, ogarnianie serwerów, edycja i tworzenie modeli.

Potrzebujesz czegoś? Pisz!

 

"śpieszmy się pisać posty, tak szybko banują..." ~ sebul


#7 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 28.11.2014 22:41   Najlepsza odpowiedź


RegisterHam(Ham_Weapon_SecondaryAttack, "player", "damage");

 

To nie player jest "PrimaryAttack" tylko jego broń, osobne entity.

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>
new gHideWeapon,celownik_schowany[33]
public plugin_init() {
	register_plugin("G_HideCrosshair", "0.1", "grankee")
	new szWeaponName[32] 
	new NOSHOT_BITSUM = (1<<CSW_KNIFE) | (1<<CSW_HEGRENADE) | (1<<CSW_FLASHBANG) | (1<<CSW_SMOKEGRENADE) 
	for(new iId = CSW_P228; iId <= CSW_P90; iId++) 
	{ 
		if( ~NOSHOT_BITSUM & 1<<iId && get_weaponname(iId, szWeaponName, charsmax(szWeaponName) )) 
		{ 
		    RegisterHam(Ham_Weapon_PrimaryAttack, szWeaponName, "onAttack", 1) 
		} 
	} 
	gHideWeapon = get_user_msgid("HideWeapon")
}
public onAttack(weap)
{
	new id=pev(weap,pev_owner)
	if(celownik_schowany[id]==0)
	{
		message_begin(MSG_ONE, gHideWeapon, _, id)
		write_byte((1<<6))
		message_end()
		celownik_schowany[id]=1
		
	}
	if(!task_exists(id))
	{
		set_task(0.01,"pokaz_celownik",id)
	}
	else
	{
		change_task(id,0.1)
	}
}
public pokaz_celownik(id)
{
	message_begin(MSG_ONE, gHideWeapon, _, id)
	write_byte(0)
	message_end()
	celownik_schowany[id]=0
}

  • +
  • -
  • 1




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

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