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
Best Answer 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 }Go to the full post
#1
Posted 28.11.2014 16:22
#2
Posted 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)
Edited by wiwi249, 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
Posted 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
Posted 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
Posted 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
Posted 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
Posted 28.11.2014 22:41 Best Answer
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 user(s) are reading this topic
0 members, 1 guests, 0 anonymous users