←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

3 pytania.

Screeaam... - zdjęcie Screeaam... 05.06.2010

Witam, mam kilka pytań:

1. Jak zrobić, aby po naładowaniu noża dostawał +8 amunicji do clip'u?
2. Jak zrobić teleport na resp? Próbuje, ale zawsze ląduje w txt.
3. Jak zrobić wybuchowe Smoke?

Co do 1. pytania, próbowałem tak:
cs_set_weapon_ammo(id, cs_get_weapon_ammo(id)+8)
ale nie działa. :/

Z góry bardzo dziękuje.
Użytkownik Screeaam... edytował ten post 05.06.2010 01:07
Odpowiedz

  • +
  • -
Krejzol - zdjęcie Krejzol 05.06.2010

2. Wyciągnij z war3ft ;) Nazywało się to chyba "Kret" czy coś takiego.
Odpowiedz

Gość_deLL_* 05.06.2010

Co do 2 to popatrz na współrzędne na przykład z Map Spawn Editora :>
Odpowiedz

  • +
  • -
Change - zdjęcie Change 05.06.2010

2. Wyciągnij z war3ft ;) Nazywało się to chyba "Kret" czy coś takiego.

w kodzie nazwa - "fan"
Odpowiedz

Screeaam... - zdjęcie Screeaam... 05.06.2010

Dobra, bardziej mi zależy na 1. Pomoże ktoś?
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 05.06.2010

cs_set_weapon_ammo()
cs_set_WEAPON_ammo() - pierwszy argument to nie id gracza a ent broni


new weapon = get_user_weapon(id);

new szWeapName[32];
get_weaponname ( weapon, szWeapName, 31 );

new ent = find_ent_by_owner(-1, szWeapName, id);
if(ent)
{
	cs_set_weapon_ammo(ent, cs_get_weapon_ammo(ent) + 8);
}

Jeszcze przydałoby się ograniczenie np. z m4 przy 25 nabojach zrobi się 33 a powinno 30
Odpowiedz

Screeaam... - zdjęcie Screeaam... 05.06.2010

cs_set_weapon_ammo()
cs_set_WEAPON_ammo() - pierwszy argument to nie id gracza a ent broni


new weapon = get_user_weapon(id);

new szWeapName[32];
get_weaponname ( weapon, szWeapName, 31 );

new ent = find_ent_by_owner(-1, szWeapName, id);
if(ent)
{
	cs_set_weapon_ammo(ent, cs_get_weapon_ammo(ent) + 8);
}

Jeszcze przydałoby się ograniczenie np. z m4 przy 25 nabojach zrobi się 33 a powinno 30



Ale ja chce właśnie, aby się zrobiło 33. :>

Dziękuję, zaraz idę sprawdzać.

@Edit:
Nie działa, ładuje się na nożu i Glock cały czas ma 20 w clipie. ;/
Użytkownik Screeaam... edytował ten post 05.06.2010 12:31
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 05.06.2010

Jesteś pewien, że ten fragment jest wykonywany? Dodaj log_amx albo client_print() za nim
Odpowiedz

Screeaam... - zdjęcie Screeaam... 05.06.2010

new weapon = get_user_weapon(id);

new szWeapName[32];
get_weaponname ( weapon, szWeapName, 31 );

new ent = find_ent_by_owner(-1, szWeapName, id);
if(ent)
{
cs_set_weapon_ammo(ent, cs_get_weapon_ammo(ent) + 8);
}


Dodałem pod tym napis, że po naładowanie pokazuje, no i pokazał "[Hefasto] Masz +8 ammo", więc wykonywalny, ale nie dał ammo.

To pomoże ktoś, bardzo proszę...

Pomoże ktoś? :D
Użytkownik Screeaam... edytował ten post 05.06.2010 13:09
Odpowiedz

  • +
  • -
false - zdjęcie false 06.06.2010

cs_set_weapon_ammo

Jest jakaś inna komenda? :D
Odpowiedz

Screeaam... - zdjęcie Screeaam... 06.06.2010

cs_set_weapon_ammo

Jest jakaś inna komenda? :D


Nie, a R3X'a funkcja nie działa. :<
Odpowiedz

  • +
  • -
false - zdjęcie false 06.06.2010

No ale pokazuje "Hefasto (...)" wiec powinno działać :/
Odpowiedz

  • +
  • -
Siemir - zdjęcie Siemir 06.06.2010

Zmodyfikowana wersja funkcji z pluginu v3x'a.

public give_ammo(id , wpnid , clip)

{

	if(!is_user_alive(id))

		return;



	if(	wpnid==CSW_C4		||

		wpnid==CSW_KNIFE	||

		wpnid==CSW_HEGRENADE	||

		wpnid==CSW_SMOKEGRENADE	||

		wpnid==CSW_FLASHBANG	) 

			return;



	if(!clip)

	{

		static weapname[33];

		get_weaponname(wpnid , weapname , 32);



		static wpn, newclip

		wpn = -1;

		while((wpn = find_ent_by_class(wpn , weapname)) != 0)

		{

			if(id == entity_get_edict(wpn , EV_ENT_owner))

			{

				newclip = cs_get_weapon_ammo(wpn) + clip

				cs_set_weapon_ammo(wpn , newclip)

				break;

			}

		}

	}

}
Użycie : give_ammo(id gracza, id broni(nie ent), ilosc dodanego ammo)
Odpowiedz

  • +
  • -
Vertricus - zdjęcie Vertricus 06.06.2010

//:x
R3X dał ci kod na dodatkowe ammo no nie? :> Teraz tylko od ciebie zależy jak go użyjesz...
new weapon = get_user_weapon(id); // Jaką broń ma gracz?? Hmmmmm.... skoro moc na nożu to uwaga uwaga nóż!

new szWeapName[32];
get_weaponname ( weapon, szWeapName, 31 ); // Noż nazywa się weapon_knife? :x

new ent = find_ent_by_owner(-1, szWeapName, id); // Sprawdź czy jakiś weapon_knife ma ownera id? (zapewne ma skoro go używa)
if(ent)//Czyli true bo ma! :D
{
cs_set_weapon_ammo(ent, cs_get_weapon_ammo(ent) + 8);//Daj nożowi ammo *** YEA ;d
}

Innymi słowy wiesz czemu nie działa?
Odp. dajesz nożu ammo:d źle określiłeś pytanie, nie zarzucaj że funkcja R3X'a nie działa !
Odpowiedz

Screeaam... - zdjęcie Screeaam... 07.06.2010

Zmodyfikowana wersja funkcji z pluginu v3x'a.

public give_ammo(id , wpnid , clip)
{
	if(!is_user_alive(id))
		return;

	if(	wpnid==CSW_C4		||
		wpnid==CSW_KNIFE	||
		wpnid==CSW_HEGRENADE	||
		wpnid==CSW_SMOKEGRENADE	||
		wpnid==CSW_FLASHBANG	) 
			return;

	if(!clip)
	{
		static weapname[33];
		get_weaponname(wpnid , weapname , 32);

		static wpn, newclip
		wpn = -1;
		while((wpn = find_ent_by_class(wpn , weapname)) != 0)
		{
			if(id == entity_get_edict(wpn , EV_ENT_owner))
			{
				newclip = cs_get_weapon_ammo(wpn) + clip
				cs_set_weapon_ammo(wpn , newclip)
				break;
			}
		}
	}
}
Użycie : give_ammo(id gracza, id broni(nie ent), ilosc dodanego ammo)


Ale jeżeli bym chciał na każdej broni to jak, skoro mam podać id broni (a chyba mogę jednej?)

//:x
R3X dał ci kod na dodatkowe ammo no nie? :> Teraz tylko od ciebie zależy jak go użyjesz...

new weapon = get_user_weapon(id); // Jaką broń ma gracz?? Hmmmmm.... skoro moc na nożu to uwaga uwaga nóż!

new szWeapName[32];
get_weaponname ( weapon, szWeapName, 31 ); // Noż nazywa się weapon_knife? :x

new ent = find_ent_by_owner(-1, szWeapName, id); // Sprawdź czy jakiś weapon_knife ma ownera id? (zapewne ma skoro go używa)
if(ent)//Czyli true bo ma! :D
{
cs_set_weapon_ammo(ent, cs_get_weapon_ammo(ent) + 8);//Daj nożowi ammo *** YEA ;d
}

Innymi słowy wiesz czemu nie działa?
Odp. dajesz nożu ammo:d źle określiłeś pytanie, nie zarzucaj że funkcja R3X'a nie działa !



Czyli jak mogę to przerobić, aby na każdej broni dodawało ammo? (Prócz noża)


Ehh.. tępy jestem. :D


EDIT:

R3X, przepraszam, że napisałem , że nie działa, działa, tylko ja jej wykorzystać nie umiem. :D
Użytkownik Screeaam... edytował ten post 07.06.2010 07:17
Odpowiedz

  • +
  • -
Vertricus - zdjęcie Vertricus 07.06.2010

const BITSUM_NO_RELOAD 	= (1<<CSW_HEGRENADE)|(1<<CSW_C4)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE);

	static iWeapons[32], iNum, i, szWeapName[32],ent
get_user_weapons(id, iWeapons, iNum)
for(i=0;i<iNum;i++)
{
if (!(BITSUM_NO_RELOAD&(1<<iWeapons[i])))
{
get_weaponname (iWeapons[i], szWeapName, 31 );

ent = find_ent_by_owner(-1, szWeapName, id);
if(ent)
{
cs_set_weapon_ammo(ent, cs_get_weapon_ammo(ent) + 8);
}
}
}

W locie robione więc nie wiem na 100% czy ruszy. ;d
Odpowiedz

Screeaam... - zdjęcie Screeaam... 07.06.2010

const BITSUM_NO_RELOAD 	= (1<<CSW_HEGRENADE)|(1<<CSW_C4)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE);

	static iWeapons[32], iNum, i, szWeapName[32],ent
get_user_weapons(id, iWeapons, iNum)
for(i=0;i<iNum;i++)
{
if (!(BITSUM_NO_RELOAD&(1<<iWeapons[i])))
{
get_weaponname (iWeapons[i], szWeapName, 31 );

ent = find_ent_by_owner(-1, szWeapName, id);
if(ent)
{
cs_set_weapon_ammo(ent, cs_get_weapon_ammo(ent) + 8);
}
}
}

W locie robione więc nie wiem na 100% czy ruszy. ;d


Działa, ale tak dziwnie, bo jak się naładuje, to dodaje raz ammo i na glocku mam 28, potem jak się znów ładuje, to już nie dodaje, nawet się napis nie wyświetla... Na nowej rundzie już wogóle nie dodaje...
Użytkownik Screeaam... edytował ten post 07.06.2010 08:14
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 07.06.2010

pewnie pamięć, zamień tu
static iWeapons[32], iNum, i, szWeapName[32],ent
static na new
Odpowiedz

  • +
  • -
Vertricus - zdjęcie Vertricus 07.06.2010

A w tym wypadku nie będzie tak że i tak wykonuje get_user_weapons? czyli odświeża wartości i w pętli również na start przyjmuje zero, sam nie wiem ;(
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 07.06.2010

A w tym wypadku nie będzie tak że i tak wykonuje get_user_weapons

teoretycznie tak to działa, ale bywa z tym różnie :P
Odpowiedz