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

Antyblokowanie modelami.


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

#1 Danny OK

    Zaawansowany

  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:148
  • GG:
  • Steam:steam
  • Imię:Daniel
  • Lokalizacja:Internet
Offline

Napisano 24.03.2014 18:44

Witam,

Mam problem ponieważ łatwo zblokować innego gracza apteczką...

Ma ktoś pomysł jak to rozwiązać?

 

Można zrobić aby model zapadł się pod ziemię i tam skamieniał i dopiero wyszedł na zawnątrz?

Aby jak ktoś na nim stał nie blokowało go tylko podnosiło razem z modelem.

Pozdrawiam, Danny!


  • +
  • -
  • 0

Battlefield 2 Exp Mod

www.BF2Mod.pl


#2 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 24.03.2014 19:02

Da się prościej.

1. Wyrzucasz apteczkę
2. Po jej "skamienieniu" wykrywasz czy nie ma gracza stojącego zbyt blisko, czyli zaklinowanego
3. Jeśli istnieje taki, dla pewności sprawdzasz, czy nie utknął (jest na to funkcja gotowa), jeśli utknął to go wyrzucasz do góry (odkopywanie z amx_super polecam do tego).
  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#3 Danny OK

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:148
  • GG:
  • Steam:steam
  • Imię:Daniel
  • Lokalizacja:Internet
Offline

Napisano 24.03.2014 19:20

Hmm w sumie może i dobry pomysł dać skamienienie jak gracza nie ma w odległości np. 30u od modelu...

Masz może funkcje na to?


  • +
  • -
  • 0

Battlefield 2 Exp Mod

www.BF2Mod.pl


#4 Danny OK

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:148
  • GG:
  • Steam:steam
  • Imię:Daniel
  • Lokalizacja:Internet
Offline

Napisano 24.03.2014 21:51

Jak to przerobić aby sprawdzało odległość każdego gracza od paczki a nie tylko właściciela:

http://amxx.pl/pastebin/4s736dz5tam8/

 

Wiem że trzeba inaczej zdefiniować id...

	new id = pev(ent, pev_owner);
	new Float:fOrigin[2][3];
	entity_get_vector(id, EV_VEC_origin, fOrigin[0]);
	entity_get_vector(ent, EV_VEC_origin, fOrigin[1]);

Bo teraz id to właściciel a trzeba aby sprawdzało każdego.


Użytkownik Danny OK edytował ten post 24.03.2014 22:02

  • +
  • -
  • 0

Battlefield 2 Exp Mod

www.BF2Mod.pl


#5 Seba

    Wszechobecny

  • Zbanowany

Reputacja: 198
Profesjonalista

  • Postów:424
  • Lokalizacja:Internet
Offline

Napisano 25.03.2014 00:37

 

 

new id = pev(ent, pev_owner);
    new Float:fOrigin[2][3];
    entity_get_vector(id, EV_VEC_origin, fOrigin[0]);
    entity_get_vector(ent, EV_VEC_origin, fOrigin[1]);

Nie ma sensu mieszac engine i fakemeta gdy mozna uzyc tylko jednego modulu przy mniej wiecej takiej samej wydajnosci, a uzywajac engine mozna uniknac glupich bledow z rodzajami zmiennych :)

 

Kod ktory pokazales jest bez sensu i osoba ktora go dodala ma ewidentne braki w podstawach programowania (chocby reindeksowanie tablic ;) )


Użytkownik Seba edytował ten post 25.03.2014 00:39


#6 Danny OK

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:148
  • GG:
  • Steam:steam
  • Imię:Daniel
  • Lokalizacja:Internet
Offline

Napisano 25.03.2014 13:49

Rozumie, a pomógłbyś może?


  • +
  • -
  • 0

Battlefield 2 Exp Mod

www.BF2Mod.pl


#7 Danny OK

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:148
  • GG:
  • Steam:steam
  • Imię:Daniel
  • Lokalizacja:Internet
Offline

Napisano 04.04.2014 13:52

A jak zrobić przed skamienieniem aby odrzucało gracza?


  • +
  • -
  • 0

Battlefield 2 Exp Mod

www.BF2Mod.pl


#8 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 19.05.2014 18:51

Wyślij całą funkcję bo nwm gdzie w czym ty to piszesz (wiedza zbytnia).

 


A jak zrobić przed skamienieniem aby odrzucało gracza?
Pobaw się wektorami
  • +
  • -
  • 0
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#9 Danny OK

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:148
  • GG:
  • Steam:steam
  • Imię:Daniel
  • Lokalizacja:Internet
Offline

Napisano 21.05.2014 13:07

Stawianie + Skamienienie:



public UzyjMiny(id){
	new Float:vfOrigin[3];
	new name [32];
	get_user_name(id, name, 31);
	pev(id, pev_origin, vfOrigin);
	
	new minao = get_pcvar_num(gPcvarMinaOdl);
  
	if((PrzeszkodaMina(vfOrigin, minao*1.0)) && (!gPlayerMinaUsed[id]))
		Mina(id);
	else if(!gPlayerMinaUsed[id])
		client_print(id, print_center, "[Mina] Stoisz za blisko przeszkody!");
		
	return PLUGIN_HANDLED;
}

PrzeszkodaMina(const Float:vfPunkt[3], Float:odleglosc){
	new Float:vfStart[3], Float:vfEnd[3];
  
	vfStart[0] = vfEnd[0] = vfPunkt[0];
	vfStart[1] = vfEnd[1] = vfPunkt[1];
	vfStart[2] = vfEnd[2] = vfPunkt[2];
  
	//1
	vfStart[0] += odleglosc;
	vfEnd[0] -= odleglosc;
	if(engfunc( EngFunc_PointContents, vfStart ) != CONTENTS_EMPTY
	&& engfunc( EngFunc_PointContents, vfEnd ) != CONTENTS_EMPTY)
		return 0;
  
	//2
	vfStart[0] -= odleglosc;
	vfEnd[0] += odleglosc;
	vfStart[1] += odleglosc;
	vfEnd[1] -= odleglosc;
  
	if(engfunc( EngFunc_PointContents, vfStart ) != CONTENTS_EMPTY
	&& engfunc( EngFunc_PointContents, vfEnd ) != CONTENTS_EMPTY)
		return 0;
	return 1;
}

public Mina(id){
	if(!is_user_connected(id) || !is_user_alive(id)) return PLUGIN_CONTINUE
	
	if(gPlayerMinaUsed[id] || g_PlayerBadges[id][BADGE_NUMBER12]==0)
		return PLUGIN_HANDLED;
	
	gPlayerMinaUsed[id]=true;
	DisplayHUD(id);
	
	new Float:origin[3];
	entity_get_vector(id, EV_VEC_origin, origin);
	
	new ent = create_entity("info_target");
	entity_set_string(ent ,EV_SZ_classname, "mina");
	entity_set_edict(ent ,EV_ENT_owner, id);
	entity_set_int(ent, EV_INT_movetype, MOVETYPE_TOSS);
	entity_set_origin(ent, origin);
	entity_set_int(ent, EV_INT_solid, SOLID_BBOX);
	mina[ent]=g_PlayerBadges[id][BADGE_NUMBER12]
	engfunc(EngFunc_SetModel, ent, "models/bf4mod/mina.mdl")
	
	entity_set_size(ent,Float:{-4.0,-8.0,-2.0},Float:{4.0,8.0,0.1});
	
	new WidzMiny1 = get_pcvar_num(gPcvarWidzMiny1);
	new WidzMiny2 = get_pcvar_num(gPcvarWidzMiny2);
	new WidzMiny3 = get_pcvar_num(gPcvarWidzMiny3);
	new WidzMiny4 = get_pcvar_num(gPcvarWidzMiny4);
	new WidzMiny5 = get_pcvar_num(gPcvarWidzMiny5);
	
	switch(g_PlayerBadges[id][BADGE_NUMBER17]){
		case 0: set_rendering(ent,kRenderFxNone, 0,0,0, kRenderTransTexture,WidzMiny1);
		case 1: set_rendering(ent,kRenderFxNone, 0,0,0, kRenderTransTexture,WidzMiny2);
		case 2: set_rendering(ent,kRenderFxNone, 0,0,0, kRenderTransTexture,WidzMiny3);
		case 3: set_rendering(ent,kRenderFxNone, 0,0,0, kRenderTransTexture,WidzMiny4);
		case 4: set_rendering(ent,kRenderFxNone, 0,0,0, kRenderTransTexture,WidzMiny5);
	}
	
	return PLUGIN_CONTINUE;
}

Dotyk:




public pfn_touch ( ent, ptd ){
	if (ptd == 0)
 		return PLUGIN_CONTINUE
	if(!is_user_connected(ent) || !is_user_alive(ent)) return PLUGIN_CONTINUE
	
	new szClassNameMina[32], wlasciciel
	
	if(pev_valid(ptd)){
		wlasciciel = pev(ptd, pev_owner) 
		entity_get_string(ptd,EV_SZ_classname,szClassNameMina,31)
	}
	else 
		return PLUGIN_HANDLED;
		
	if(equali(szClassNameMina,"mina")){
		if (get_user_team(wlasciciel) != get_user_team(ptd))
		{
			new entlist[33];
			new numfound = find_sphere_class(ent,"player", 90.0 ,entlist, 32);

			for (new i=0; i < numfound; i++)
			{
				new pid = entlist[i];

				if (!is_user_alive(pid) || get_user_team(wlasciciel) == get_user_team(pid))
					continue;

				switch(mina[ptd]){
					case 1: set_user_health(ent, get_user_health(ent)-get_pcvar_num(gPcvarMina1));
					case 2: set_user_health(ent, get_user_health(ent)-get_pcvar_num(gPcvarMina2));
					case 3: set_user_health(ent, get_user_health(ent)-get_pcvar_num(gPcvarMina3));
					case 4: set_user_health(ent, get_user_health(ent)-get_pcvar_num(gPcvarMina4));
				}
				
				if (!is_user_alive(ent)) {
					set_user_frags(wlasciciel, get_user_frags(wlasciciel)+1)
					set_user_frags(ent, get_user_frags(ent)+1)
					minakills[wlasciciel]++;
					minadeath[ent]++;
					totalkills[wlasciciel]++;
					totaldeath[ent]++;
				}
				
				mina[ptd]=0
				efekt_ekran_mina(ent)
				efekt_wybuchu(ent)
				remove_entity(ptd)
			}
		}
	}
	
	return PLUGIN_CONTINUE;
}

Użytkownik Danny OK edytował ten post 21.05.2014 13:08

  • +
  • -
  • 0

Battlefield 2 Exp Mod

www.BF2Mod.pl





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

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