←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] Zamiana stałej CSW_ na fun...


Najlepsza odpowiedź Rivit 17.07.2014 20:37

new const maxAmmo[31] = {0, 52, 0, 90, 1, 31, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 31, 90, 120, 90, 2, 35, 90, 90, 0, 100};


public zabierzmp5(id)
{
	new tmp;
	get_user_weapons(id,wpns,iNum);
	for (a=0; a<iNum; a++) if (wpns[a] == CSW_MP5NAVY) tmp=a;
	StripWeapons(id,Primary,true);
	for (a=0; a<iNum; a++)
	{
		if (a==tmp) continue;
                new weaponname[33]
                get_weaponname(wpns[a], weaponname, charsmax(weaponname))
		give_item(id,weaponname);
                cs_set_user_bpammo(id, wpns[a], maxAmmo[a])
	}
}

Nie testowane. Sprawdź.

 

Co do zabrania broni to może Ham_RemovePlayer_Item + http://amxx.pl/dokum...nd-ent-by-owner

Spoiler
Przejdź do postu
Zablokowany

  • +
  • -
Ogen Dogen - zdjęcie Ogen Dogen 08.07.2014

Witam. Czy jest szybsza i wydajniejsza możliwość zamiany stałej wartości broni CSW na "weapon" niż rozpisywanie wszystkich przypadków ? Kiedyś mi się obiła taka funkcja na forum , dokładnie chodzi mi o to : np. CSW_MP5NAVY zamienić na "weapon_mp5navy". Opcjonalnie w drugą stronę też się może przydać :>

Odpowiedz

  • +
  • -
Misiaczek ;c - zdjęcie Misiaczek ;c 08.07.2014

Notepad++ Ctrl+F Znajdź i zamień wszystkie w bieżącym dokumencie ;F

Odpowiedz

  • +
  • -
BlackPerfum - zdjęcie BlackPerfum 08.07.2014

Najszybsza i najwydajniesza metoda prowadzi do nie używania string'a, a samych liczb czyli nazwy CSW_ lub id bytu broni, szybka i wydajna metoda to zrobienie tablicy ze string'ami "weapon_" z wartościami adekwatnymi do wartości poszczeóglnych broni CSW_. Można też użyć get_weaponname / get_weaponid

Jednak najbardziej polecam najszybszą i najwydajniejszą metodę bo zawsze szybciej się operuje na liczbach niz na tekście
Odpowiedz

  • +
  • -
Ogen Dogen - zdjęcie Ogen Dogen 09.07.2014

Get_weaponid zwraca number z tej tabeli ? -> http://amxx.pl/topic...ive-item-speed/

 

Ale to i tak i tak się sprowadza do rozpisywania :D

 


Notepad++ Ctrl+F Znajdź i zamień wszystkie w bieżącym dokumencie ;F

Odpada. Musi to być zaimplementowane , że tak powiem dynamicznie ;x

Odpowiedz

  • +
  • -
BlackPerfum - zdjęcie BlackPerfum 09.07.2014

Podaj kod w którym musisz uzyskać id z csw a pokażę rozwiązanie
Odpowiedz

  • +
  • -
Ogen Dogen - zdjęcie Ogen Dogen 16.07.2014

Sorry za tak późną odpowiedź , ale nie miałem ostatnio głowy do tego :P


Podaj kod w którym musisz uzyskać id z csw a pokażę rozwiązanie

 

Chodzi mi o funkcję do BF2/BF4 , która zabierze jedną z x głównych broni (np. 3). Ma to wyglądać tak że najpierw zabiera wszystkie bronie a później oddaje te które nie mają zostać odebrane. Cały plugin ma anulować dla wybranych graczy premie z odznak w postaci takich broni jak scout czy mp5. Jest to bardzo irytujące :)

public zabierzmp5(id)
{
	new tmp;
	get_user_weapons(id,wpns,iNum);
	for (a=0; a<iNum; a++) if (wpns[a] == CSW_MP5NAVY) tmp=a;
	StripWeapons(id,Primary,true);
	for (a=0; a<iNum; a++)
	{
		if (a==tmp) continue;
		give_item(id,"CSW_MP5NAVY");
	}
}
Odpowiedz

  • +
  • -
BlackPerfum - zdjęcie BlackPerfum 16.07.2014

Twój kod działa tak:

• sprawdzam czy gracz posiada mp5

• usuwam primary weapon graczu

• jeśli gracz posiadał mp5 to daje mu je

 

Dodatkowo trzeba dodać iż robi to w sposób nie optymalny. Mam parę pytań:

• czy chcesz osiągnąć funkcję która zabierze wszystkie nieporządane i ustawi wszystkie porządane bronie graczu?

• co z ammo? tylko 30 naboji czy jak? (podaj ilość ammo i bpammo)

Odpowiedz

  • +
  • -
Ogen Dogen - zdjęcie Ogen Dogen 17.07.2014

Wiem , to tylko taki prototyp. Zawiesiło mnie gdy trzeba było to zamienić na "weapon" , a z rozpisywaniem chyba będzie jeszcze mniej optymalnie.

 


• czy chcesz osiągnąć funkcję która zabierze wszystkie nieporządane i ustawi wszystkie porządane bronie graczu?

Konkretnie zabierze jedną broń a resztę zostawi , tak jak wcześniej pisałem :)

 


• co z ammo? tylko 30 naboji czy jak? (podaj ilość ammo i bpammo)

Nie doszedłem do tego etapu , ale ammo full zarówno magazynek jak i bpammo.

Odpowiedz

  • +
  • -
Najlepsza odpowiedź Rivit - zdjęcie Rivit 17.07.2014

new const maxAmmo[31] = {0, 52, 0, 90, 1, 31, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 31, 90, 120, 90, 2, 35, 90, 90, 0, 100};


public zabierzmp5(id)
{
	new tmp;
	get_user_weapons(id,wpns,iNum);
	for (a=0; a<iNum; a++) if (wpns[a] == CSW_MP5NAVY) tmp=a;
	StripWeapons(id,Primary,true);
	for (a=0; a<iNum; a++)
	{
		if (a==tmp) continue;
                new weaponname[33]
                get_weaponname(wpns[a], weaponname, charsmax(weaponname))
		give_item(id,weaponname);
                cs_set_user_bpammo(id, wpns[a], maxAmmo[a])
	}
}

Nie testowane. Sprawdź.

 

Co do zabrania broni to może Ham_RemovePlayer_Item + http://amxx.pl/dokum...nd-ent-by-owner

Spoiler
Odpowiedz
Zablokowany