←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

3 pytania.

Locked

Screeaam...'s Photo 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.
Edited by Screeaam..., 05.06.2010 01:07.
Quote

  • +
  • -
Krejzol's Photo Krejzol 05.06.2010

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

Gość_deLL_* 05.06.2010

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

  • +
  • -
Change's Photo Change 05.06.2010

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

w kodzie nazwa - "fan"
Quote

Screeaam...'s Photo Screeaam... 05.06.2010

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

  • +
  • -
R3X's Photo 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
Quote

Screeaam...'s Photo 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. ;/
Edited by Screeaam..., 05.06.2010 12:31.
Quote

  • +
  • -
R3X's Photo R3X 05.06.2010

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

Screeaam...'s Photo 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
Edited by Screeaam..., 05.06.2010 13:09.
Quote

  • +
  • -
false's Photo false 06.06.2010

cs_set_weapon_ammo

Jest jakaś inna komenda? :D
Quote

Screeaam...'s Photo Screeaam... 06.06.2010

cs_set_weapon_ammo

Jest jakaś inna komenda? :D


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

  • +
  • -
false's Photo false 06.06.2010

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

  • +
  • -
Siemir's Photo 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)
Quote

  • +
  • -
Vertricus's Photo 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 !
Quote

Screeaam...'s Photo 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
Edited by Screeaam..., 07.06.2010 07:17.
Quote

  • +
  • -
Vertricus's Photo 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
Quote

Screeaam...'s Photo 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...
Edited by Screeaam..., 07.06.2010 08:14.
Quote

  • +
  • -
R3X's Photo R3X 07.06.2010

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

  • +
  • -
Vertricus's Photo 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 ;(
Quote

  • +
  • -
R3X's Photo 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
Quote
Locked