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

Przenikanie


  • Zamknięty Temat jest zamknięty
2 odpowiedzi w tym temacie

#1 Tifa

    Zaawansowany

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:77
  • GG:
  • Lokalizacja:Szczecin
Offline

Napisano 15.06.2009 09:25

Witam.
Szukam takiego pluginu, który umożliwi graczom z jednej drużyny przenikanie przez siebie.
Natomiast drużyna przeciwna żeby była normalnie bez przenikania.
Z góry dziękuję :)
  • +
  • -
  • 0

#2 naven

    Hero

  • Power User

Reputacja: 204
Profesjonalista

  • Postów:1 088
  • GG:
  • Imię:Adam
  • Lokalizacja:Cieszyn
Offline

Napisano 15.06.2009 11:01

spróbuj tego:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>

#define PLUGIN "semiclip"
#define VERSION "1.0"
#define AUTHOR "naven & danielkza"

new g_iSemiClip[33]

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_forward( FM_StartFrame,	"fwStartFrame",	0);
	register_forward( FM_AddToFullPack,	"fwFullPack",	1 );

}
	public fwFullPack( es, e, ent, host, flags, player, pSet ) {
	if( player && g_iSemiClip[ent] && g_iSemiClip[host] ) {
		static Float:flDistance;
		flDistance = entity_range( host, ent );
		
		set_es( es, ES_Solid, SOLID_NOT );
		set_es( es, ES_RenderMode, kRenderTransAlpha );
		set_es( es, ES_RenderAmt, floatround( flDistance * 1.5 ) );
	}
	return FMRES_IGNORED;
}
public fwStartFrame(id) {
	static iPlayers[32], iNum, iPlayer, iPlayer2;
	get_players(iPlayers, iNum);
	
	arrayset(g_iSemiClip, 0, sizeof(g_iSemiClip));
	
	new iTeams[33] = {-1, ...};
	for( new i = 0; i < iNum; i++ ) {
		iPlayer = iPlayers[i];
		
		if( !is_user_alive(iPlayer) )
			continue;
		
		for( new j = 0; j < iNum; j++ ) {
			iPlayer2 = iPlayers[j];
			
			if(iPlayer == iPlayer2 || !is_user_alive(iPlayer2))
				continue;
			
			static Float:vOrigin1[3], Float:vOrigin2[3];
			pev(iPlayer, pev_origin, vOrigin1);
			pev(iPlayer2, pev_origin, vOrigin2);
			
			if( vector_distance( vOrigin1, vOrigin2 ) < 96 ) {//tutaj widzimy kod odpowiadający prawdopodobnie za dzialanie tylko na swoją drużynę
				if( iTeams[iPlayer] == -1 )
					iTeams[iPlayer]		= get_user_team(iPlayer);
				if( iTeams[iPlayer2] == -1 )
					iTeams[iPlayer2]	= get_user_team(iPlayer2);
				
				if( iTeams[iPlayer] == 2 && iTeams[iPlayer2] == 2 ) {
					g_iSemiClip[iPlayer]	= true;
					g_iSemiClip[iPlayer2]	= true;
				}
			}
		}
	}
	
	for( new i = 0; i < iNum; i++ ) {
		iPlayer = iPlayers[i];
		
		if( is_user_alive( iPlayer ) )
			set_pev(iPlayer, pev_solid, g_iSemiClip[iPlayer] ? SOLID_NOT : SOLID_SLIDEBOX);
	}
	
	return FMRES_IGNORED;
}

  • +
  • -
  • 0

#3 Tifa

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:77
  • GG:
  • Lokalizacja:Szczecin
Offline

Napisano 15.06.2009 13:06

Dziękuję ;]
+ Pomógł
  • +
  • -
  • 0




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

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