コード例 #1
0
ファイル: fun.cpp プロジェクト: 9iky6/amxmodx
static cell AMX_NATIVE_CALL get_user_hitzones(AMX *amx, cell *params) // get_user_hitzones(index, target); = 2 arguments
{
	int shooter = params[1];
	CHECK_PLAYER(shooter);
	int target = params[2];
	CHECK_PLAYER(target);
	return g_bodyhits[shooter][target];
}
コード例 #2
0
ファイル: NBase.cpp プロジェクト: Chuvi-w/amxmodx
// wid,att,vic,dmg,hp=0
static cell AMX_NATIVE_CALL cwpn_dmg(AMX *amx, cell *params)
{ 
	int weapon = params[1];

	// only for custom weapons
	if(weapon < DODMAX_WEAPONS-DODMAX_CUSTOMWPNS)
	{ 
		MF_LogError(amx, AMX_ERR_NATIVE, "Invalid custom weapon id %d", weapon);
		return 0;
	}

	int att = params[2];
	CHECK_PLAYER(params[2]);

	int vic = params[3];
	CHECK_PLAYER(params[3]);
	
	int dmg = params[4];
	if(dmg<1)
	{
		MF_LogError(amx, AMX_ERR_NATIVE, "Invalid damage %d", dmg);
		return 0;
	}
	
	int aim = params[5];
	if(aim < 0 || aim > 7)
	{
		MF_LogError(amx, AMX_ERR_NATIVE, "Invalid aim %d", aim);
		return 0;
	}

	CPlayer* pAtt = GET_PLAYER_POINTER_I(att);
	CPlayer* pVic = GET_PLAYER_POINTER_I(vic);

	pVic->pEdict->v.dmg_inflictor = NULL;

	if(pAtt->index != pVic->index)
		pAtt->saveHit(pVic , weapon , dmg, aim);

	if(!pAtt) 
		pAtt = pVic;

	int TA = 0;

	if((pVic->pEdict->v.team == pAtt->pEdict->v.team) && (pVic != pAtt))
		TA = 1;

	MF_ExecuteForward(iFDamage,pAtt->index, pVic->index, dmg, weapon, aim, TA);

	if(pVic->IsAlive())
		return 1;

	pAtt->saveKill(pVic,weapon,( aim == 1 ) ? 1:0 ,TA);

	MF_ExecuteForward(iFDeath,pAtt->index, pVic->index, weapon, aim, TA);

	return 1;
}
コード例 #3
0
ファイル: fun.cpp プロジェクト: 9iky6/amxmodx
// ######## Natives:
static cell AMX_NATIVE_CALL get_client_listening(AMX *amx, cell *params) // get_client_listening(receiver, sender); = 2 params
{
	// Gets who can listen to who.
	// params[1] = receiver
	// params[2] = sender

	// Check receiver and sender validity.
	CHECK_PLAYER(params[1]);
	CHECK_PLAYER(params[2]);

	// GET- AND SETCLIENTLISTENING returns "qboolean", an int, probably 0 or 1...
	return GETCLIENTLISTENING(params[1], params[2]);
}
コード例 #4
0
ファイル: esfx.cpp プロジェクト: tutyamxx/ESFX-Module
static cell AMX_NATIVE_CALL esf_get_playerclass(AMX *amx, cell *params) // esf_get_playerclass(index); = 1 arg
{
	// Get the player class
	// params[1] = index
	// ---------------------
	// If playerclass == 
	
	/*  ESF_CLASS_NONE = 0,
        ESF_CLASS_BUU = 1,
        ESF_CLASS_GOKU = 2,
        ESF_CLASS_GOHAN = 3,
        ESF_CLASS_KRILLIN = 4,
        ESF_CLASS_FRIEZA = 5,
        ESF_CLASS_PICCOLO = 6,
        ESF_CLASS_TRUNKS = 7,
        ESF_CLASS_VEGETA = 8,
        ESF_CLASS_CELL = 9
	*/

	// Check index
	CHECK_PLAYER( params[ 1 ] );

	// Fetch player pointer
    edict_t *pPlayer = MF_GetPlayerEdict( params[ 1 ] );
       
    return pPlayer->v.playerclass;
}
コード例 #5
0
ファイル: rank.cpp プロジェクト: 9iky6/amxmodx
static cell AMX_NATIVE_CALL reset_user_wstats(AMX *amx, cell *params) /* 6 param */
{
	int index = params[1];
	CHECK_PLAYER(index);
	GET_PLAYER_POINTER_I(index)->restartStats();
	return 1;
}
コード例 #6
0
ファイル: NBase.cpp プロジェクト: Chuvi-w/amxmodx
/* We want to get just the weapon of whichever type that the player is on him */
static cell AMX_NATIVE_CALL dod_weapon_type(AMX *amx, cell *params) /* 2 params */
{
	int index = params[1];
	int type = params[2];

	CHECK_PLAYER(index);

	if(type < DODWT_PRIMARY || type > DODWT_OTHER)
	{
		MF_LogError(amx, AMX_ERR_NATIVE, "Invalid weapon type id %d", type);
		return 0;
	}

	CPlayer* pPlayer = GET_PLAYER_POINTER_I(index);

	if(pPlayer->ingame)
	{
		int weaponsbit = pPlayer->pEdict->v.weapons & ~(1<<31); // don't count last element

		for(int x = 1; x < MAX_WEAPONS; ++x)
		{
			if((weaponsbit&(1<<x)) > 0)
			{
				if(weaponData[x].type == type)
					return x;
			}
		}
	}

	return 0;
}
コード例 #7
0
ファイル: NBase.cpp プロジェクト: Chuvi-w/amxmodx
// player,wid
static cell AMX_NATIVE_CALL get_user_team(AMX *amx, cell *params)
{ 
	int index = params[1];
	CHECK_PLAYER(index);

	CPlayer* pPlayer = GET_PLAYER_POINTER_I(index);
	int iTeam = pPlayer->pEdict->v.team; 

	if ( params[3] )
	{ 
		const char *szTeam = ""; 
		switch(iTeam)
		{
		case 1: 
			szTeam = "Allies"; 
			break; 

		case 2: 
			szTeam = "Axis"; 
			break; 
		} 

		MF_SetAmxString(amx,params[2],szTeam,params[3]); 
	} 
	return iTeam; 
}
コード例 #8
0
ファイル: fun.cpp プロジェクト: 9iky6/amxmodx
static cell AMX_NATIVE_CALL set_user_rendering(AMX *amx, cell *params) // set_user_rendering(index, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16); = 7 arguments
{
	// Sets user rendering.
	// params[1] = index
	// params[2] = fx
	// params[3] = r
	// params[4] = g
	// params[5] = b
	// params[6] = render
	// params[7] = amount

	// Check index
	CHECK_PLAYER(params[1]);

	// Fetch player pointer
	edict_t *pPlayer = MF_GetPlayerEdict(params[1]);

	pPlayer->v.renderfx = params[2];
	Vector newVector = Vector(float(params[3]), float(params[4]), float(params[5]));
	pPlayer->v.rendercolor = newVector;
	pPlayer->v.rendermode = params[6];
	pPlayer->v.renderamt = params[7];
	
	return 1;
}
コード例 #9
0
ファイル: fun.cpp プロジェクト: 9iky6/amxmodx
static cell AMX_NATIVE_CALL set_client_listening(AMX *amx, cell *params) // set_client_listening(receiver, sender, listen); = 3 params
{
	// Sets who can listen to who.
	// params[1] = receiver
	// params[2] = sender
	// params[3] = listen

	// Check receiver and sender validity.
	CHECK_PLAYER(params[1]);
	CHECK_PLAYER(params[2]);

	// Make a check on params[3] here later, and call run time error when it's wrong.
	// To do: find out the possible values to set (0, 1?)

	// GET- AND SETCLIENTLISTENING returns "qboolean", an int, probably 0 or 1...
	return SETCLIENTLISTENING(params[1], params[2], params[3]);
}
コード例 #10
0
ファイル: fun.cpp プロジェクト: 9iky6/amxmodx
static cell AMX_NATIVE_CALL set_user_hitzones(AMX *amx, cell *params) // set_user_hitzones(index = 0, target = 0, body = 255); = 3 arguments
{
	// Sets user hitzones.
	// params[1] = the one(s) who shoot(s), shooter
	int shooter = params[1];

	// params[2] = the one getting hit
	int gettingHit = params[2];

	// params[3] = specified hit zones
	int hitzones = params[3];

	//set_user_hitzones(id, 0, 0) // Makes ID not able to shoot EVERYONE - id can shoot on 0 (all) at 0
	//set_user_hitzones(0, id, 0) // Makes EVERYONE not able to shoot ID - 0 (all) can shoot id at 0
	if (shooter == 0 && gettingHit == 0) {
		for (int i = 1; i <= gpGlobals->maxClients; i++) {
			for (int j = 1; j <= gpGlobals->maxClients; j++) {
				g_bodyhits[i][j] = hitzones;
			}
			//g_zones_toHit[i] = hitzones;
			//g_zones_getHit[i] = hitzones;
		}
	}
	else if (shooter == 0 && gettingHit != 0) {
		// "All" shooters, target (gettingHit) should be existing player id
		CHECK_PLAYER(gettingHit);
		// Where can all hit gettingHit?
		for (int i = 1; i <= gpGlobals->maxClients; i++)
			g_bodyhits[i][gettingHit] = hitzones;
	}
	else if (shooter != 0 && gettingHit == 0) {
		// Shooter can hit all in bodyparts.
		CHECK_PLAYER(shooter);
		for (int i = 1; i <= gpGlobals->maxClients; i++)
			g_bodyhits[shooter][i] = hitzones;
	}
	else {
		// Specified, where can player A hit player B?
		CHECK_PLAYER(shooter);
		CHECK_PLAYER(gettingHit);
		g_bodyhits[shooter][gettingHit] = hitzones;
	}

	return 1;
}
コード例 #11
0
ファイル: NBase.cpp プロジェクト: Chuvi-w/amxmodx
// player,wid
static cell AMX_NATIVE_CALL dod_get_user_team(AMX *amx, cell *params)
{ 
	int index = params[1];
	CHECK_PLAYER(index);

	CPlayer* pPlayer = GET_PLAYER_POINTER_I(index);
	return pPlayer->pEdict->v.team;

}
コード例 #12
0
ファイル: NBase.cpp プロジェクト: Chuvi-w/amxmodx
static cell AMX_NATIVE_CALL get_user_pronestate(AMX *amx, cell *params)
{
	int index = params[1];
	CHECK_PLAYER(index);
	CPlayer* pPlayer = GET_PLAYER_POINTER_I(index);

	if (pPlayer->ingame)
			return pPlayer->pEdict->v.iuser3;

	return 0;
}
コード例 #13
0
ファイル: NBase.cpp プロジェクト: Chuvi-w/amxmodx
static cell AMX_NATIVE_CALL get_user_score(AMX *amx, cell *params)
{
	int index = params[1];
	CHECK_PLAYER(index);
	CPlayer* pPlayer = GET_PLAYER_POINTER_I(index);

	if (pPlayer->ingame)
		return (cell)pPlayer->savedScore;

	return -1;
}
コード例 #14
0
ファイル: esfx.cpp プロジェクト: tutyamxx/ESFX-Module
static cell AMX_NATIVE_CALL esf_get_acpl(AMX *amx, cell *params) // esf_get_acpl(index); = 1 arg
{
	// Get user actual powerlevel
	// params[1] = index

	// Check index
	CHECK_PLAYER( params[ 1 ] );

	// Fetch player pointer
	edict_t *pPlayer = MF_GetPlayerEdict( params[ 1 ] );
	   
	return *((int *)pPlayer->pvPrivateData + ESFX_ACPL_OFFSET);
}
コード例 #15
0
ファイル: esfx.cpp プロジェクト: tutyamxx/ESFX-Module
static cell AMX_NATIVE_CALL esf_get_freefall(AMX *amx, cell *params) // esf_get_freefall(index); = 1 arg
{
	// Client is in freefall like after jumping of ground
	// params[1] = index

	// Check index
	CHECK_PLAYER(params[ 1 ]);

	// Fetch player pointer
	edict_t* pPlayer = MF_GetPlayerEdict(params[ 1 ]);

	return *((int *)pPlayer->pvPrivateData + ESFX_FREEFALL_OFFSET);
}
コード例 #16
0
ファイル: esfx.cpp プロジェクト: tutyamxx/ESFX-Module
static cell AMX_NATIVE_CALL esf_get_powerup(AMX *amx, cell *params) // esf_get_powerup(index); = 1 arg
{
	// Check if player is charging his power
	// params[1] = index

	// Check index
	CHECK_PLAYER( params[ 1 ] );

	// Fetch player pointer
	edict_t *pPlayer = MF_GetPlayerEdict( params[ 1 ] );
	   
	return *((int *)pPlayer->pvPrivateData + ESFX_POWERUP_OFFSET);
}    
コード例 #17
0
ファイル: NBase.cpp プロジェクト: Chuvi-w/amxmodx
static cell AMX_NATIVE_CALL dod_clear_model(AMX *amx, cell *params) // player
{
	int index = params[1];
	CHECK_PLAYER(index);

	CPlayer* pPlayer = GET_PLAYER_POINTER_I(index);
	if(!pPlayer->ingame)
		return false;

	pPlayer->clearModel();

	return true;
}
コード例 #18
0
ファイル: esfx.cpp プロジェクト: tutyamxx/ESFX-Module
static cell AMX_NATIVE_CALL esf_get_user_deaths(AMX *amx, cell *params) // esf_get_user_deaths(index); = 1 arg
{
	// Return player deaths
	// params[1] =  index

	// Check index
	CHECK_PLAYER( params[ 1 ] );

	// Fetch player pointer
	edict_t *pPlayer = MF_GetPlayerEdict( params[ 1 ] );
	   
	return *((int *)pPlayer->pvPrivateData + ESFX_DEATHS_OFFSET); // offset by ConnorMcLeod
}
コード例 #19
0
ファイル: esfx.cpp プロジェクト: tutyamxx/ESFX-Module
static cell AMX_NATIVE_CALL esf_get_wallground(AMX *amx, cell *params) // esf_get_wallground(index); =  1 arg
{
	// Client has been thrown into Wall / on Ground
	// params[1] = index

	// Check index
	CHECK_PLAYER( params[ 1 ] );

	// Fetch player pointer
	edict_t *pPlayer = MF_GetPlayerEdict( params[ 1 ] );
	   
	return *((int *)pPlayer->pvPrivateData + ESFX_WALLGND_OFFSET);
}
コード例 #20
0
ファイル: esfx.cpp プロジェクト: tutyamxx/ESFX-Module
static cell AMX_NATIVE_CALL esf_get_block(AMX *amx, cell *params) // esf_get_block(index); = 1 arg
{
	// Check if player is blocking an attack
	// params[1] = index

	// Check index
	CHECK_PLAYER( params[ 1 ] );

	// Fetch player pointer
	edict_t *pPlayer = MF_GetPlayerEdict( params[ 1 ] );
	   
	return *((int *)pPlayer->pvPrivateData + ESFX_BLOCK_OFFSET);
}  
コード例 #21
0
ファイル: esfx.cpp プロジェクト: tutyamxx/ESFX-Module
static cell AMX_NATIVE_CALL esf_get_advancedmelee(AMX *amx, cell *params) // esf_get_advancedmelee(index); = 1 arg
{
	// Check if player is in advanced melee
	// params[1] = index

	// Check index
	CHECK_PLAYER( params[ 1 ] );

	// Fetch player pointer
	edict_t *pPlayer = MF_GetPlayerEdict( params[ 1 ] );
	   
	return *((int *)pPlayer->pvPrivateData + ESFX_ADVMELEE_OFFSET);
}  
コード例 #22
0
ファイル: esfx.cpp プロジェクト: tutyamxx/ESFX-Module
static cell AMX_NATIVE_CALL esf_get_swooping(AMX *amx, cell *params) // esf_get_swooping(index); = 1 arg
{
	// Check if player is currently swoopin'
	// params[1] = index

	// Check index
	CHECK_PLAYER( params[ 1 ] );

	// Fetch player pointer
	edict_t *pPlayer = MF_GetPlayerEdict( params[ 1 ] );
	   
	return *((int *)pPlayer->pvPrivateData + ESFX_SWOOPING_OFFSET);
}    
コード例 #23
0
ファイル: esfx.cpp プロジェクト: tutyamxx/ESFX-Module
static cell AMX_NATIVE_CALL esf_get_fly(AMX *amx, cell *params) // esf_get_fly(index); = 1 arg
{
	// Check is player is flying
	// params[1] = index

	// Check index
	CHECK_PLAYER( params[ 1 ] );

	// Fetch player pointer
	edict_t *pPlayer = MF_GetPlayerEdict( params[ 1 ] );
	   
	return *((int *)pPlayer->pvPrivateData + ESFX_FLY_OFFSET );
}
コード例 #24
0
ファイル: esfx.cpp プロジェクト: tutyamxx/ESFX-Module
static cell AMX_NATIVE_CALL esf_get_maxhealth(AMX *amx, cell *params) // esf_get_maxhealth(index); = 1 arg
{
	// Get player maxhealth
	// params[1] = index

	// Check index
	CHECK_PLAYER( params[ 1 ] );

	// Fetch player pointer
	edict_t *pPlayer = MF_GetPlayerEdict( params[ 1 ] );
	   
	return *((int *)pPlayer->pvPrivateData + ESFX_MAXHEALTH_OFFSET);
}
コード例 #25
0
ファイル: fun.cpp プロジェクト: 9iky6/amxmodx
static cell AMX_NATIVE_CALL get_user_noclip(AMX *amx, cell *params) // get_user_noclip(index); = 1 argument
{
	// Gets user noclip.
	// params[1] = index

	// Check index
	CHECK_PLAYER(params[1]);

	// Fetch player pointer
	edict_t *pPlayer = MF_GetPlayerEdict(params[1]);

	return pPlayer->v.movetype == MOVETYPE_NOCLIP;
}
コード例 #26
0
ファイル: esfx.cpp プロジェクト: tutyamxx/ESFX-Module
static cell AMX_NATIVE_CALL esf_get_throw(AMX *amx, cell *params) // esf_get_throw(index); =  1 arg
{
	// Client is in Throw
	// params[1] = index

	// Check index
	CHECK_PLAYER(params[ 1 ]);

	// Fetch player pointer
	edict_t* pPlayer = MF_GetPlayerEdict(params[ 1 ]);

	return *((int *)pPlayer->pvPrivateData + ESFX_THROW_OFFSET);
}
コード例 #27
0
ファイル: esfx.cpp プロジェクト: tutyamxx/ESFX-Module
static cell AMX_NATIVE_CALL esf_get_swoopspeed(AMX *amx, cell *params) // esf_get_swoopspeed(index); = 1 arg
{
	// Get player swoopspeed
	// params[1] = index

	// Check index
	CHECK_PLAYER( params[ 1 ] );

	// Fetch player pointer
    edict_t *pPlayer = MF_GetPlayerEdict( params[ 1 ] );
       
    return pPlayer->v.fuser1;
}
コード例 #28
0
ファイル: esfx.cpp プロジェクト: tutyamxx/ESFX-Module
static cell AMX_NATIVE_CALL esf_get_beamjump(AMX *amx, cell *params) // esf_get_beamjump(index); = 1 arg
{
	// Get when a player performs a BeamJump
	// params[1] = index

	// Check index
	CHECK_PLAYER(params[ 1 ]);

	// Fetch player pointer
	edict_t* pPlayer = MF_GetPlayerEdict(params[ 1 ]);

	return pPlayer->v.movetype == 15;
}
コード例 #29
0
ファイル: esfx.cpp プロジェクト: tutyamxx/ESFX-Module
static cell AMX_NATIVE_CALL esf_get_ki(AMX* amx, cell* params) // esf_get_ki(index); = 1 arg
{
	// Get player kinetik energy (KI)
	// params[1] = index

	// Check index
	CHECK_PLAYER(params[ 1 ]);

	// Fetch player pointer
	edict_t* pPlayer = MF_GetPlayerEdict(params[ 1 ]);
	   
	return pPlayer->v.fuser4;
}
コード例 #30
0
ファイル: esfx.cpp プロジェクト: tutyamxx/ESFX-Module
static cell AMX_NATIVE_CALL esf_get_turbo(AMX *amx, cell *params) // esf_get_turbo(index); = 1 arg
{
	// Check if player has turbo on (T key);
	// params[1] = index

	// Check index
	CHECK_PLAYER( params[ 1 ] );

	// Fetch player pointer
	edict_t *pPlayer = MF_GetPlayerEdict( params[ 1 ] );
	   
	return *((int *)pPlayer->pvPrivateData + ESFX_TURBO_OFFSET);
}