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

cs_set_user_zoom - AWP/SCOUT ZOOM w AUG


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

#1 ogieR8

    Wszechmogący

  • Power User

Reputacja: 203
Profesjonalista

  • Postów:641
  • Imię:Mariusz
  • Lokalizacja:Ruda Śląska
Offline

Napisano 07.12.2014 17:30

~ Siemka. 

Kolejne pytanie ! Wiem, że można dodawać zoom'a do broni dzięki użyciu cs_set_user_zoom. Mam przerobioną broń opartą o 'aug', gdy zabijemy widzę, że byt zadający obrażenia to CSW_AUG. Ale jest to bardzo dobra broń myśliwska (SvDEX), strasznie celna.. jednak oryginalny zoom mnie w niej nie zadowala i chciałbym go zmienić, ale coś mi nie wychodzi i nie wiem czemu. Najpierw do sprawdzenia czy gracz ma zoom'a użyłem zmiennej typu bool i ustawiało CS_SET_FIRST_ZOOM, jednak później nie chciało resetować. Tak z powodu desperacji zmieniłem na zmienną na ogólną i teraz.. wogóle zoom nie działa. Chodzi mi tylko o 1 tryb zoomu z AWP/scout

new ma_zoom[33];

public give_svdex(id) {
	if(!is_user_alive(id) || !is_user_connected(id)) return PLUGIN_HANDLED
	give_item(id, "weapon_aug");
	ma_zoom[id]=0
	g_has_svdex[id]=1

public client_PreThink(id) {
	new szClip, szAmmo
	new szWeapID = get_user_weapon(id, szClip, szAmmo)
	if(szWeapID == CSW_AUG && g_has_svdex[id]) {
		if(entity_get_int(id,EV_INT_button) & IN_ATTACK2) {
			if(ma_zoom[id]==0) {
				cs_set_user_zoom(id,CS_SET_SECOND_ZOOM,1);
				ma_zoom[id] = 1;
			}
			if(ma_zoom[id]==1) {
				cs_set_user_zoom(id,CS_RESET_ZOOM,0);
				ma_zoom[id] = 0;
			}
		}
	}
}

I moje pytanie: czy niedziała to jak powinno, bo może nie da się dodawać zoom'a do broni, które już go mają - ale inny ?

 

Pozdrawiam i z góry dziękuje, ogieR8


  • +
  • -
  • 0

Irytuje mnie nieczytelny kod, jeśli oczekujesz ode mnie pomocy - zmień to !


#2 psilocybe

    Toasty!

  • Power User

Reputacja: 252
Wszechwidzący

  • Postów:524
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:PL
Offline

Napisano 07.12.2014 17:36

Chyba nie będzie to takie łatwe.

 

Podglądnij sobie jak to jest zrobione w tym pluginie: http://amxx.pl/topic...n-zoom-changer/


  • +
  • -
  • 0

Dołączona grafika

Dołączona grafika


#3 ogieR8

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 203
Profesjonalista

  • Postów:641
  • Imię:Mariusz
  • Lokalizacja:Ruda Śląska
Offline

Napisano 07.12.2014 18:05

Poradziłem sobie zmieniając wszystkie weapon_ i CSW_ z aug/AUG na ak47/AK47. Jednak pytanie mnie dalej ciekawi, czy jest na to 'zgrabny' sposób jak 'nadpisać' zoom :)

 

z client_PreThink przeniosłem funkcję do FM_CmdStart i wygląda to teraz tak:

new ma_zoom[33];

public give_svdex(id) {
	if(!is_user_alive(id) || !is_user_connected(id)) return PLUGIN_HANDLED
	give_item(id, "weapon_aug");
	ma_zoom[id]=0
	g_has_svdex[id]=1

public fw_CmdStart(id, uc_handle, seed) {
	if(!is_user_alive(id))
		return PLUGIN_HANDLED
		
	new szClip, szAmmo
	new szWeapID = get_user_weapon(id, szClip, szAmmo)

	if((get_uc(uc_handle, UC_Buttons) & IN_ATTACK2) && !(pev(id, pev_oldbuttons) & IN_ATTACK2) && g_has_svdex[id] && szWeapID == CSW_AK47) {
		if(ma_zoom[id]==0) {
			ma_zoom[id]=1;
			cs_set_user_zoom(id, CS_SET_FIRST_ZOOM, 1);
			emit_sound(id, CHAN_ITEM, "weapons/zoom.wav", 0.20, 2.40, 0, 100)
		}
		else if(ma_zoom[id]==1) {
			ma_zoom[id]=2;
			cs_set_user_zoom(id, CS_SET_SECOND_ZOOM, 1);
		}
		else if(ma_zoom[id]==2) {
			ma_zoom[id]=0;
			cs_set_user_zoom(id, CS_RESET_ZOOM, 0);
		}
	}

	return PLUGIN_HANDLED
}

Bo chciałem, aby działało to jak zoom z AWP, czyli w 2 trybach przybliżenia, dodatkowo zeruję zmienną zoom'a po zmianie broni, oraz zeruje i resetuje zoom przy przeładowaniu, ale.. teraz wygląda to tak:

 

bez zooma

PPM

zoom first
PPM
zoom second

 

 

do tego momentu jest dobrze, ale to co się dalej dzieje jest już w pętli..

PPM 

zoom first
PPM

zoom first

PPM

zoom_second

 

PPM 

zoom first
PPM

zoom first

PPM 

zoom_second

 

 

nie resetuje, gdy powinno, a ustawia na zoom first w tym momencie, nie mam pojęcia dlaczego :/ dopiero resetuje przy przeładowaniu i zmianie broni.


  • +
  • -
  • 0

Irytuje mnie nieczytelny kod, jeśli oczekujesz ode mnie pomocy - zmień to !


#4 ogieR8

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 203
Profesjonalista

  • Postów:641
  • Imię:Mariusz
  • Lokalizacja:Ruda Śląska
Offline

Napisano 07.12.2014 19:38

1. próbowałem to rozłożyć na IF, ELSE IF, ELSE <- to samo

2. próbowałem to rozłożyć na IF, ELSE (IF, ELSE) <- to samo

3. przypomniała mi się deklaracja 'switch', więc operowałem nią na wartościach zmiennej 'ma_zoom[index]' < - to samo

4. zamiast uzywać wartości zmiennej 'ma_zoom[index]' pobieram teraz bezpośrednio wartość zoom'a z funkcji: cs_get_user_zoom(index) <- działa  ^D^ 

 

Oto kod dla ciekawskich:

Spoiler

 

można zamknąć ;)


  • +
  • -
  • 0

Irytuje mnie nieczytelny kod, jeśli oczekujesz ode mnie pomocy - zmień to !





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

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