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
CoD Nowy

Podnoszenie broni z ziemiMożliwość podniesienia broni z ziemi gdy slot jest już pełen.

cod nowy

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

#1 Czaso Umilacz

    Profesjonalista

  • Użytkownik

Reputacja: 38
Życzliwy

  • Postów:152
  • Imię:Olek
  • Lokalizacja:Leszno
Offline

Napisano 07.08.2013 15:59

Witam,
postanowiłem podzielić się kodem na podnoszenie broni z ziemi gdy już jedną mamy na slocie, przykład:

Klasa posiada dwie bronie, AWP i M4, jak wyrzuci AWP ma w slocie M4 i nie może podnieść AWP, po dodaniu tego będzie mogła.

Zaczynajmy, na początku kodu dodajemy nową zmienna:
 

new bool:just_droped[MAX+1];

Następnie w plugin_init dodajemy:

register_clcmd("drop", "DropWeapon");

Gdzieś w kodzie dodajemy następujące funkcje:

public DropWeapon(id){
	just_droped[id] = true;
	
	set_task(0.5, "Unlock", id);
}

public Unlock(id){
	just_droped[id] = false
}

Na samym końcu podmieniamy funkcje DotykBroni na:

public DotykBroni(weapon, id){
	static model[24];
	pev(weapon, pev_model, model, 23);
	
	if(containi(model, "w_backpack") != -1)
		return HAM_IGNORED;
		
	if(!just_droped[id] && pev(weapon, pev_owner) == id){
		static classname[64], weaponname[32], temp[32], del[4];
		pev(weapon, pev_model, classname, 63);
		
		replace(classname, 63, "w_", " ");
		replace(classname, 63, ".mdl", "");
		
		strbreak(classname, del, 3, classname, 63);
		
		format(weaponname, 32, "weapon_%s", classname);
		
		new weapons[32], weaponsnum, stop;
		get_user_weapons(id, weapons, weaponsnum);
		
		for(new i = 0; i < weaponsnum; i ++){
			get_weaponname(weapons[i], temp, 31);
			
			if(equal(temp, weaponname))
				stop = 1;
		}
		
		if(!stop)
			fm_give_item(id, weaponname);
			
		engfunc(EngFunc_RemoveEntity, weapon);
	}	
		
	return HAM_SUPERCEDE;
}

Kod sprawdzony i działa, sprawdza czy gracz nie posiada już broni którą chce podnieść, liczę na masę hejtu.

Pozdrawiam :)


  • +
  • -
  • 3

#2 sNH.

    Czy MisieQ ukradł ciasteczko?

  • Power User

Reputacja: 299
Wszechwidzący

  • Postów:1 070
  • Steam:steam
  • Imię:Bartek
  • Lokalizacja:Ełk
Offline

Napisano 07.08.2013 16:26

Już chyba było, ale łap +


  • +
  • -
  • 0

#3 M4n1k``

    Pomocny

  • Użytkownik

Reputacja: 61
Pomocny

  • Postów:65
  • GG:
  • Imię:Nikodem
  • Lokalizacja:Wielkopolska
Offline

Napisano 08.08.2013 10:38

A jeżeli mamy zablokowane podnoszenie broni, poprzez cvar z codmoda, to będę mógł podnieść w tym przypadku awp?


  • +
  • -
  • 0

#4 d0naciak

    Godlike

  • Power User

Reputacja: 1 029
Hero

  • Postów:2 414
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Kotlarka
Offline

Napisano 08.08.2013 14:03

tutaj cvar cod_weaponsblocking nie ma znaczenia, jest on usunięty, więc nie można wyłączyć blokady podnoszenia broni obcych


  • +
  • -
  • 0

#5 Czaso Umilacz

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 38
Życzliwy

  • Postów:152
  • Imię:Olek
  • Lokalizacja:Leszno
Offline

Napisano 09.08.2013 12:16

Dla bezpieczeństwa do funkcji DotykBroni, na sam początek można dodać:
 

if(!is_user_connected(id))
	return HAM_SUPERCEDE;
		
if(!is_user_alive(id) || !pev_valid(weapon))
	return HAM_SUPERCEDE;

Ma to wyglądać mniej/więcej tak:
 

public DotykBroni(weapon, id){
        if(!is_user_connected(id))
                return HAM_SUPERCEDE;

        if(!is_user_alive(id) || !pev_vaild(weapon))
                return HAM_SUPERCEDE;
      
	static model[24];
	pev(weapon, pev_model, model, 23);
	
	if(containi(model, "w_backpack") != -1)
		return HAM_IGNORED;
		
	if(!just_droped[id] && pev(weapon, pev_owner) == id){
		static classname[64], weaponname[32], temp[32], del[4];
		pev(weapon, pev_model, classname, 63);
		
		replace(classname, 63, "w_", " ");
		replace(classname, 63, ".mdl", "");
		
		strbreak(classname, del, 3, classname, 63);
		
		format(weaponname, 32, "weapon_%s", classname);
		
		new weapons[32], weaponsnum, stop;
		get_user_weapons(id, weapons, weaponsnum);
		
		for(new i = 0; i < weaponsnum; i ++){
			get_weaponname(weapons[i], temp, 31);
			
			if(equal(temp, weaponname))
				stop = 1;
		}
		
		if(!stop)
			fm_give_item(id, weaponname);
			
		engfunc(EngFunc_RemoveEntity, weapon);
	}	
		
	return HAM_SUPERCEDE;
}

  • +
  • -
  • 0





Również z jednym lub większą ilością słów kluczowych: cod nowy

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

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