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.
|
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
#1
Napisano 28.11.2014 16:22
#2
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
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
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()
}
#4
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?
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
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....
#6
Napisano 28.11.2014 22:19
Nie, zajrzyj do opisu Ham_Weapon_PrimaryAttack. Nie ma takiej broni jak "player" ![]()
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")
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
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
}
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych


Dodatki SourceMod













