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

Dodawanie bool dla gracza


Najlepsza odpowiedź Rivit, 21.08.2019 10:42

public player_attack(victim, attacker, Float:damage, Float:direction[3], tracehandle, damagebits)
{
    if(!is_user_connected(victim) || !is_user_connected(attacker) || victim == attacker)
        return HAM_IGNORED

    if(oznacz[victim] && oznacz[attacker]){
        return HAM_IGNORED
    }

    return HAM_SUPERCEDE
}

cos takiego mozesz zrobic.

Pamietaj ze w RegisterHam musisz miec event typu pre (ostatni parametr na 0). Więcej o tym poczytasz tu: RegisterHam

if(!oznacz[victim] && !oznacz[attacker])
return HAM_SUPERCEDE

if(oznacz[victim] && oznacz[attacker]))
return HAM_SUPERCEDE

Pierwszy warunek w twoim kodzie mówi:

jeśli victim jest nieoznaczony i attacker jest nieoznaczony to zablokuj obrazenia

Drugi zaś mówi:

jeśli victim jest oznaczony i attacker jest oznaczony to zablokuj obrazenia

 

wniosek: jesli ktorys z graczy jest oznaczony a drugi nie, to obrazenia beda zadawane

 

 

PS. proszę wstawiać kod na forum w odpowiednich tagach lub użyć przycisku "Kod" w edytorze posta

 
Przejdź do postu


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

#1 mlekovita

    Zaawansowany

  • Użytkownik

Reputacja: 7
Nowy

  • Postów:149
  • Imię:Dawid
Offline

Napisano 21.08.2019 10:05

Witam, w jaki sposób mógłbym po jakiejś wykonanej pętli czy po wykonaniu kodu przypisać bool dla gracza?
Np. gdy coś się tam stanie to graczowi (id) włącza się takie coś asysty[id] = 1 - i ta wartosc chciałbym też zwrócic w natywie.


  • +
  • -
  • 0

#2 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 21.08.2019 10:09

https://amxx.pl/topi...ę-tablic-wstęp/

https://amxx.pl/topi...e-api-w-amxxie/

https://amxx.pl/topi...tywy/?hl=natywy

 

wartosc w natywie zwracasz jak każda inna, wykorzystujesz return i tyle. Pokaż jakiś kawałek kodu to Ci nakreśle co i jak ;)


  • +
  • -
  • 0

#3 mlekovita

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 7
Nowy

  • Postów:149
  • Imię:Dawid
Offline

Napisano 21.08.2019 10:24

new pid, pidBody;
get_user_aiming(id, pid, pidBody);

if(!is_user_alive(pid)) {
ColorChat(id, GREEN, "[CSGO] Nie mozesz kontynuowac!");
} else {
oznacz[pid] = 1;
ColorChat(id, GREEN, "[CSGO]^x03 %s^x01 zostal zaznaczony przez admina", nickGracza);
}
 
 
następnie chciałbym zrobić że jeżeli gracz ma oznacz[pid] = 1 to moze bic innego gracza ktory tez ma oznacz[pid] = 1
 
Czy to będzie prawidłowe?
 
public player_attack(victim, attacker, Float:damage, Float:direction[3], tracehandle, damagebits)
{
if(!is_user_connected(victim) || !is_user_connected(attacker) || victim == attacker)
return HAM_IGNORED


if(!oznacz[victim] && !oznacz[attacker])
return HAM_SUPERCEDE

if(oznacz[victim] && oznacz[attacker]))
return HAM_SUPERCEDE

return HAM_IGNORED
}

  • +
  • -
  • 0

#4 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 21.08.2019 10:42   Najlepsza odpowiedź

public player_attack(victim, attacker, Float:damage, Float:direction[3], tracehandle, damagebits)
{
    if(!is_user_connected(victim) || !is_user_connected(attacker) || victim == attacker)
        return HAM_IGNORED

    if(oznacz[victim] && oznacz[attacker]){
        return HAM_IGNORED
    }

    return HAM_SUPERCEDE
}

cos takiego mozesz zrobic.

Pamietaj ze w RegisterHam musisz miec event typu pre (ostatni parametr na 0). Więcej o tym poczytasz tu: RegisterHam

if(!oznacz[victim] && !oznacz[attacker])
return HAM_SUPERCEDE

if(oznacz[victim] && oznacz[attacker]))
return HAM_SUPERCEDE

Pierwszy warunek w twoim kodzie mówi:

jeśli victim jest nieoznaczony i attacker jest nieoznaczony to zablokuj obrazenia

Drugi zaś mówi:

jeśli victim jest oznaczony i attacker jest oznaczony to zablokuj obrazenia

 

wniosek: jesli ktorys z graczy jest oznaczony a drugi nie, to obrazenia beda zadawane

 

 

PS. proszę wstawiać kod na forum w odpowiednich tagach lub użyć przycisku "Kod" w edytorze posta

 

  • +
  • -
  • 0

#5 mlekovita

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 7
Nowy

  • Postów:149
  • Imię:Dawid
Offline

Napisano 21.08.2019 10:46

czyli jakbym chciał przenieść ten bool do innego pluginu w którym ustawiam player_attack to natyw tak ma wyglądac?

public oznacz(pid) {
  return oznacz[pid];
}

a następnie wykonać to?

public player_attack(victim, attacker, Float:damage, Float:direction[3], tracehandle, damagebits)
{
    if(!is_user_connected(victim) || !is_user_connected(attacker) || victim == attacker)
        return HAM_IGNORED
 
    if(oznacz(victim) && oznacz(attacker)){
        return HAM_IGNORED
    }
 
    return HAM_SUPERCEDE
}

  • +
  • -
  • 0

#6 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 21.08.2019 10:49

Nie, proszę poczytaj poradniki, które Ci wysłałem.

 


  • +
  • -
  • 0

#7 mlekovita

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 7
Nowy

  • Postów:149
  • Imię:Dawid
Offline

Napisano 21.08.2019 13:39

Edytuje ponieważ jest błąd. Jak oznacze gracza to moga sie wszyscy bic a jak nie oznacze to nikt sie bic nie moze.


  • +
  • -
  • 0

#8 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 21.08.2019 13:51


następnie chciałbym zrobić że jeżeli gracz ma oznacz[pid] = 1 to moze bic innego gracza ktory tez ma oznacz[pid] = 1

 

Z tego wynika, że chcesz żeby gracze którzy są oznaczeni się mogli bić.

Więc jak nikt nie jest oznaczony to nikt sie nie moze bic.

Jeśli jedna osoba jest ozn, a druga nie to one sie nie moga mic.

jesli obie sa ozn to moga sie bic. 

 

Pokaz wiecej kodu


  • +
  • -
  • 0

#9 mlekovita

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 7
Nowy

  • Postów:149
  • Imię:Dawid
Offline

Napisano 22.08.2019 19:43

Tu jest cala funkcja z zabijania

if(gTeam[id] == 1 && gTeam[attacker] == 1) {
		if(!oznacz(id) && !oznacz(attacker))
			return HAM_SUPERCEDE;
		}

I wyglada to aktualnie tak ze kazdy moze kazdego bic a chce ze jak jest wlaczony mode_gracza[FF_TT] i sa jacys oznaczeni to moga sie bic oznaczeni


Użytkownik mlekovita edytował ten post 22.08.2019 19:57

  • +
  • -
  • 0

#10 K@MILOVVSKY

    Zaawansowany

  • Użytkownik

Reputacja: 35
Życzliwy

  • Postów:118
  • Steam:steam
  • Imię:Kamil
Offline

Napisano 22.08.2019 20:48

if(gTeam[id] == 1 && gTeam[attacker] == 1) {
		if(!oznacz[id] && !oznacz[attacker])
			return HAM_SUPERCEDE;
		}

  • +
  • -
  • 0

#11 mlekovita

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 7
Nowy

  • Postów:149
  • Imię:Dawid
Offline

Napisano 22.08.2019 21:36

Niestety nadal nie działa to poprawnie podrzucam cały kod z pluginu na zabijanie aktualnie wyglada to tak: Jezeli walka dla wszystkich jest wlaczona a gracze nie sa oznaczeni to nie moze sie nikt bic, natomiast jesli walka dla wszystkich jest wlaczona a gracze sa oznaczeni to gracze moga lac tych co nie sa oznaczeni i odwrotnie.

public TakeDamage(id, ent, attacker, Float:damage, damagebits)
	return vAttackDamagePlayer(id, attacker, damage, damagebits, true);

public TraceAttack(id, attacker, Float:damage, Float:direction[3], tracehandle, damagebits)
	return vAttackDamagePlayer(id, attacker);

stock vAttackDamagePlayer(id, attacker, Float:damage=0.0, damagebits=0, bool:dmg=false)
{
	if(!is_user_connected(id))
		return HAM_IGNORED;
	
	if(is_user_connected(attacker))
	{
		new Float:fObr = damage;
		
		if(gTeam[id] == 1 && gTeam[attacker] == 1) {
				if(dmg) {
				fObr *= 2.954;
				//return HAM_HANDLED;
			}
		}

		if(gTeam[id] == 1 && gTeam[attacker] == 1) {
			if(!walkaDlaWszystkichTT){
			return HAM_SUPERCEDE;
			}
			if(!oznacz[id] && !oznacz[attacker] && walkaDlaWszystkichTT) {
			  return HAM_SUPERCEDE;
			}
		}
		
		if(dmg)
		{
			if(get_user_weapon(attacker) == CSW_KNIFE && damagebits & DMG_BULLET)
				fObr *= 0.4;
		}
		
		if(fObr != damage) {
			SetHamParamFloat(4, fObr);
			return HAM_HANDLED;
		}
	}
	return HAM_IGNORED;
}

  • +
  • -
  • 0

#12 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 23.08.2019 05:10

if(!oznacz[id] || !oznacz[attacker])


Takie coś próbowałeś?
  • +
  • -
  • 0




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

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