←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

HotVision // dziala dla gracza ze 'boo...

  • +
  • -
ogieR8 - zdjęcie ogieR8 30.04.2012

~ Witam. Łamigłówką przyznam jest dla mnie dość plugin http://amxx.pl/topic...yli-termowizja/, gdyż chciałbym go zrobić jako moc dla klasy, ale nie umiem wyłapać odpowiednich ku temu momentów na if'y, mógłby to ktoś zrobić, że ma się taki termowizor gdy zmienna[id] = true ? ;x Na pewno wielu użytkownikom się to przyda, chociażby po to jak pisali, na perk/klasę do cod'a ;)

Pozdrawiam.
Odpowiedz

  • +
  • -
Droso - zdjęcie Droso 30.04.2012

register_forward(FM_EmitSound, "EmitSound")



public EmitSound(id, iChannel, szSound[], Float:fVol, Float:fAttn, iFlags, iPitch )
{
if(equal(szSound, "items/nvg_on.wav"))
{
OnNVGToggle[id] = true;  // zmienna

return FMRES_SUPERCEDE;
}
if(equal(szSound, "items/nvg_off.wav"))
{
OnNVGToggle[id] = false;  // zmienna


return FMRES_SUPERCEDE;
}
}
Działa na 100% mam to w Crysis 2 modzie :D

Albo można to zrobić na wykrycie komendy nightvision.
Chociaż nie polecam, bo raczej już tego nie wyłączysz :)
Odpowiedz

  • +
  • -
ogieR8 - zdjęcie ogieR8 30.04.2012

Dziekuje ;) Sprawdze - jak mi zadziała to plusik będzie, bo jest za co :>

Pozdrawiam, a teraz spadam na grilla, wiec jak cos to potem sie wypowiem co z działaniem.

Tak już to w kilku funkcjach widziałem, może ktoś by zrobił tutorial z EmitSound (taki kompletny, z wszystkimi jego zastosowaniami i możliwościami) ? Bo equal znam itd, ale ciekawi mnie cała ta funkcja, widzę z daleka, że można tym nieźle operować dźwiękami, więc może się przydać ;)
Użytkownik ogieR- edytował ten post 30.04.2012 20:41
Odpowiedz

  • +
  • -
Droso - zdjęcie Droso 30.04.2012

Krótko mówiąc przechwytuję nazwę dźwięku aktualnie granego.
Potem sprawdzamy w equal nazwę np. dźwięk noktowizora włączanego i wykonujemy funkcję.
Odpowiedz

  • +
  • -
ogieR8 - zdjęcie ogieR8 30.04.2012

To wiem, ale ogólnie poradnik o EmitSound, bo widzę z parametrów, że nieźle można się tym pobawić ; d (soundami)

// ale jednak brakuje tego tutaj. Jak jest dźwięk - zmienna, okey. ALE : gdzie że jak true to HotVision sie wlacza ? Wlasnie tego co nie podałeś to mam problem. Bo ta zmienna to tylko po to, ze potem dam np., że jak player_class[id] == Mag (np) to ma termowizjer, a reszta pod 'n' ma zwykly noktowizor ;x Chyba mnie nie dokonca zrozumiales.
Użytkownik ogieR- edytował ten post 30.04.2012 21:31
Odpowiedz

  • +
  • -
Droso - zdjęcie Droso 01.05.2012

To czemu nie zrobisz tak

If(OnNVGToggle[id] == false){

client_cmd(id, "nightvision");  // jeżeli jest false włącza noktowizor.
}
Rozumiem, że chcesz zrobić coś takiego wpisujesz Noktowizor = true; to się włącza.
Wykorzystaj ten kod na górze i tego emit sound + publica i gotowe.
Możesz też założyć sztucznego noktowizora, lecz nie zadziała to na termowizje.
Odpowiedz

  • +
  • -
radim - zdjęcie radim 01.05.2012

Bodajże jemu chodzi oto, że np. jak tworzysz klasę do codmod'a to jest zmienna ma_klase, którą trzeba dodać do każdego skilla, gdyż bez tej zmiennej każda klasa będzie miała skilla ( w tym przypadku termowizje )
Odpowiedz

  • +
  • -
Droso - zdjęcie Droso 01.05.2012

#include <amxmodx>
#include <amxmisc>
#include <fakemeta_util>
#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "hubert"

new bool:OnNVGToggle[33];
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_forward(FM_EmitSound, "EmitSound")

}
public EmitSound(id, iChannel, szSound[], Float:fVol, Float:fAttn, iFlags, iPitch )
{

if(equal(szSound, "items/nvg_on.wav"))
{
  OnNVGToggle[id] = true;

  return FMRES_SUPERCEDE;
}
if(equal(szSound, "items/nvg_off.wav"))
{
  OnNVGToggle[id] = false;

  return FMRES_SUPERCEDE;
}



return FMRES_IGNORED;
}

stock CreateVision(const index = 0, bool:vision = true)
{
if(OnNVGToggle[index] == false && vision == true)
  client_cmd(index, "nightvision");


if(OnNVGToggle[index] == true && vision == false)
  client_cmd(index, "nightvision");

}

Użycie
CreateVision(index, bool:)

np.
CreateVision(id, true); - włącza noktowizor
CreateVision(id, false); - wyłącza noktowizor

@up To niech nie daje noktowizora? Klasie, która go mieć nie może?
Albo niech wyłącza noktowizor powyższym kodem.
Odpowiedz

  • +
  • -
ogieR8 - zdjęcie ogieR8 01.05.2012

Nie wiem, czy ja nie ogarniam, chodź przyznam nie spałem i przymulam, ale nie ogarniam. Jak zablokuje klasom noktowizor, ale dam jednej klasie moc termowizji, to to bedzie dzialac według kodu wyżej ? Nie czaję teraz nic, sorry. Opisze to inaczej, są 2 opcje
1. Nikt nie ma noktowizora, chyba że klasa == Mag, wtedy on ma termowizjer
2. Noktowizory sa, tylko termowizjer sie wlacza tylko tym, ktorzy mają klasę Mag.

Obojętnie które, a ja to jutro ew. sprawdzę, bo dziś zamulam strasznie.
Odpowiedz

  • +
  • -
ogieR8 - zdjęcie ogieR8 05.05.2012

Refresh ;x Powtórzę : jeśli ktoś ma 'zmienna[index]=true' to ma HOTVISION, a jesli gracz nie ma 'zmianna[index] to albo w ogóle mu nie działa noktowizor, albo ma noktowizor, ale tylko gracze ze zeminna maja HOTVISION ;>

Zalezy mi bardzo.
Odpowiedz

  • +
  • -
Droso - zdjęcie Droso 05.05.2012

Refresh ;x Powtórzę : jeśli ktoś ma 'zmienna[index]=true' to ma HOTVISION, a jesli gracz nie ma 'zmianna[index] to albo w ogóle mu nie działa noktowizor, albo ma noktowizor, ale tylko gracze ze zeminna maja HOTVISION ;>

Zalezy mi bardzo.

Nie zrobisz takiego czegoś chyba, że będziesz edytował Hotvision.


zrób tak

w plugin_int()
register_clcmd("nighvision", "blokuj");

i potem
public blokuj(id){
if(jezeli nie ma klasy/itemu){
return PLUGIN_HANDLED
}
}
Po prostu zablokuj noktowizor dla nie mających itemu/klasy
Odpowiedz

  • +
  • -
ogieR8 - zdjęcie ogieR8 06.05.2012

Ooo, na to kuźwa nie wpadłem ;) Dzięki wielkie, zaraz to sprawdzę :>
Odpowiedz