xmod shared natives
This commit is contained in:
		| @@ -61,12 +61,6 @@ native get_statsnum(); | ||||
| native get_user_stats2(index,stats[4]); | ||||
| native get_stats2(index,stats[4]); | ||||
|  | ||||
| /* Custom weapons support ( like: gasnades, lasers ) */ | ||||
| native reg_custom_weapon( wpnname[],melee = 0,logname[]="" );  | ||||
| native custom_weapon_dmg( weapon, att, vic, damage, hitplace );  | ||||
| native custom_weapon_shot( weapon,index ); // weapon id , player id | ||||
| native get_custom_wpnname( weapon,szName[],len ); | ||||
|  | ||||
| /* | ||||
| * Forwards | ||||
| */ | ||||
| @@ -78,7 +72,46 @@ enum { | ||||
| 	CSF_DEATH, | ||||
| } | ||||
|  | ||||
| /* You must register client_* forwards using register_statsfwd native */ | ||||
| native register_statsfwd( ftype ) | ||||
| forward client_damage( attacker,victim,damage,wpnindex,hitplace,TA ); | ||||
| forward client_death( killer,victim,wpnindex,hitplace,TK ); | ||||
| /************* Shared Natives Start ********************************/ | ||||
|  | ||||
| /* Forward types */ | ||||
| enum { | ||||
|   XMF_DAMAGE = 0, | ||||
|   XMF_DEATH, | ||||
| } | ||||
|  | ||||
| /* Use this function to register forwards */ | ||||
| native register_statsfwd( ftype ); | ||||
|  | ||||
| /* Function is called after player to player attacks , | ||||
| * if players were damaged by teammate TA is set to 1 */ | ||||
| forward client_damage(attacker,victim,damage,wpnindex,hitplace,TA); | ||||
|  | ||||
| /* Function is called after player death , | ||||
| * if player was killed by teammate TK is set to 1 */ | ||||
| forward client_death(killer,victim,wpnindex,hitplace,TK); | ||||
|  | ||||
| /* Custom Weapon Support */ | ||||
| /* function will return index of new weapon */ | ||||
| native custom_weapon_add( wpnname[],melee = 0,logname[]="" );  | ||||
| /* Function will pass damage done by this custom weapon to stats module and other plugins */ | ||||
| native custom_weapon_dmg( weapon, att, vic, damage, hitplace=0 );  | ||||
| /* Function will pass info about custom weapon shot to stats module */ | ||||
| native custom_weapon_shot( weapon,index ); // weapon id , player id | ||||
|  | ||||
| /* function will return 1 if true */ | ||||
| native xmod_is_melee_wpn(wpnindex); | ||||
|  | ||||
| /* Returns weapon name. */ | ||||
| native xmod_get_wpnname(wpnindex,name[],len); | ||||
|  | ||||
| /* Returns weapon logname. */ | ||||
| native xmod_get_wpnlogname(wpnindex,name[],len); | ||||
|  | ||||
| /* Returns weapons array size */ | ||||
| native xmod_get_maxweapons(); | ||||
|  | ||||
| /* Returns stats array size */ | ||||
| native xmod_get_stats_size(); | ||||
|  | ||||
| /************* Shared Natives End ********************************/ | ||||
|   | ||||
| @@ -290,9 +290,12 @@ static cell AMX_NATIVE_CALL register_cwpn(AMX *amx, cell *params){ // name,logna | ||||
|  | ||||
| 	int iLen; | ||||
| 	char *szName = MF_GetAmxString(amx, params[1], 0, &iLen); | ||||
| 	char *szLogName = MF_GetAmxString(amx, params[3], 0, &iLen); | ||||
|  | ||||
| 	strcpy(weaponData[i].name,szName); | ||||
| 	strcpy(weaponData[i].logname,szLogName); | ||||
| 	weaponData[i].ammoSlot = 1; | ||||
| 	weaponData[i].melee = params[2] ? true:false; | ||||
|  | ||||
| 	return i; | ||||
| } | ||||
| @@ -370,9 +373,9 @@ static cell AMX_NATIVE_CALL custom_wpn_shot(AMX *amx, cell *params){ // player,w | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| static cell AMX_NATIVE_CALL get_custom_wpnname(AMX *amx, cell *params){  | ||||
| static cell AMX_NATIVE_CALL get_wpnname(AMX *amx, cell *params){  | ||||
| 	int id = params[1]; | ||||
| 	if (id<MAX_WEAPONS || id>=MAX_WEAPONS+MAX_CWEAPONS ){  | ||||
| 	if (id<0 || id>=MAX_WEAPONS+MAX_CWEAPONS ){  | ||||
| 		MF_RaiseAmxError(amx,AMX_ERR_NATIVE); | ||||
| 		MF_PrintSrvConsole("Weapon ID Is Not Valid!\n"); | ||||
| 		return 0; | ||||
| @@ -380,6 +383,28 @@ static cell AMX_NATIVE_CALL get_custom_wpnname(AMX *amx, cell *params){ | ||||
| 	return MF_SetAmxString(amx,params[2],weaponData[id].name,params[3]); | ||||
| } | ||||
|  | ||||
| static cell AMX_NATIVE_CALL get_wpnlogname(AMX *amx, cell *params){  | ||||
| 	int id = params[1]; | ||||
| 	if (id<0 || id>=MAX_WEAPONS+MAX_CWEAPONS ){  | ||||
| 		MF_RaiseAmxError(amx,AMX_ERR_NATIVE); | ||||
| 		MF_PrintSrvConsole("Weapon ID Is Not Valid!\n"); | ||||
| 		return 0; | ||||
| 	} | ||||
| 	return MF_SetAmxString(amx,params[2],weaponData[id].logname,params[3]); | ||||
| } | ||||
|  | ||||
| static cell AMX_NATIVE_CALL is_melee(AMX *amx, cell *params){  | ||||
| 	int id = params[1]; | ||||
| 	if (id<0 || id>=MAX_WEAPONS+MAX_CWEAPONS ){  | ||||
| 		MF_RaiseAmxError(amx,AMX_ERR_NATIVE); | ||||
| 		MF_PrintSrvConsole("Weapon ID Is Not Valid!\n"); | ||||
| 		return 0; | ||||
| 	} | ||||
| 	if ( id = 29 ) | ||||
| 		return 1; | ||||
| 	return weaponData[id].melee ? 1:0; | ||||
| } | ||||
|  | ||||
| static cell AMX_NATIVE_CALL register_forward(AMX *amx, cell *params){ // forward  | ||||
| 	int iFunctionIndex; | ||||
| 	switch( params[1] ){ | ||||
| @@ -404,6 +429,14 @@ static cell AMX_NATIVE_CALL register_forward(AMX *amx, cell *params){ // forward | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| static cell AMX_NATIVE_CALL get_maxweapons(AMX *amx, cell *params){ | ||||
| 	return MAX_WEAPONS+MAX_CWEAPONS; | ||||
| } | ||||
|  | ||||
| static cell AMX_NATIVE_CALL get_stats_size(AMX *amx, cell *params){ | ||||
| 	return 8; | ||||
| } | ||||
|  | ||||
| AMX_NATIVE_INFO stats_Natives[] = { | ||||
| 	{ "get_stats",      get_stats}, | ||||
| 	{ "get_stats2",      get_stats2}, | ||||
| @@ -419,12 +452,17 @@ AMX_NATIVE_INFO stats_Natives[] = { | ||||
| 	{ "reset_user_wstats",  reset_user_wstats }, | ||||
|  | ||||
| 	// Custom Weapon Support | ||||
| 	{ "reg_custom_weapon", register_cwpn }, | ||||
| 	{ "custom_weapon_add", register_cwpn }, | ||||
| 	{ "custom_weapon_dmg", custom_wpn_dmg }, | ||||
| 	{ "custom_weapon_shot", custom_wpn_shot }, | ||||
| 	{ "get_custom_wpnname", get_custom_wpnname }, | ||||
|  | ||||
| 	{"register_statsfwd",register_forward }, | ||||
| 	{ "xmod_get_wpnname", get_wpnname }, | ||||
| 	{ "xmod_get_wpnlogname", get_wpnlogname }, | ||||
| 	{ "xmod_is_melee_wpn", is_melee }, | ||||
| 	{ "xmod_get_maxweapons", get_maxweapons }, | ||||
| 	{ "xmod_get_stats_size", get_stats_size }, | ||||
|  | ||||
| 	{ "register_statsfwd",register_forward }, | ||||
|  | ||||
| 	///******************* | ||||
| 	{ NULL, NULL } | ||||
|   | ||||
| @@ -19,7 +19,9 @@ extern AMX_NATIVE_INFO stats_Natives[]; | ||||
|  | ||||
| struct weaponsVault { | ||||
|   char* name; | ||||
|   char* logname; | ||||
|   short int ammoSlot; | ||||
|   bool melee; | ||||
| }; | ||||
|  | ||||
| extern bool rankBots; | ||||
|   | ||||
| @@ -46,6 +46,7 @@ void Client_WeaponList(void* mValue){ | ||||
| 		weaponData[iId].name = wpnPrefix + 7; | ||||
| 		if ( strcmp( weaponData[iId].name, "hegrenade" ) == 0 ) | ||||
| 			weaponData[iId].name += 2; | ||||
| 		weaponData[iId].logname = weaponData[iId].name; | ||||
| 	} | ||||
|   }  | ||||
| } | ||||
|   | ||||
| @@ -213,13 +213,18 @@ static cell AMX_NATIVE_CALL register_forward(AMX *amx, cell *params){ // forward | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| static cell AMX_NATIVE_CALL get_maxweapons(AMX *amx, cell *params){ | ||||
| 	return DODMAX_WEAPONS; | ||||
| } | ||||
|  | ||||
| static cell AMX_NATIVE_CALL get_stats_size(AMX *amx, cell *params){ | ||||
| 	return 9; | ||||
| } | ||||
|  | ||||
| AMX_NATIVE_INFO base_Natives[] = { | ||||
|  | ||||
|   { "dod_get_wpnname", get_weapon_name }, | ||||
|   { "dod_get_wpnlogname", get_weapon_logname }, | ||||
|   { "dod_wpnlog_to_name", wpnlog_to_name }, | ||||
|   { "dod_wpnlog_to_id", wpnlog_to_id }, | ||||
|   { "dod_is_melee", is_melee }, | ||||
|  | ||||
|   { "dod_get_team_score", get_team_score }, | ||||
|   { "dod_get_user_score", get_user_score }, | ||||
| @@ -230,6 +235,12 @@ AMX_NATIVE_INFO base_Natives[] = { | ||||
|   { "dod_user_kill", user_kill }, | ||||
|   { "dod_get_pronestate", get_user_pronestate }, | ||||
|  | ||||
|   { "xmod_get_wpnname", get_weapon_name }, | ||||
|   { "xmod_get_wpnlogname", get_weapon_logname }, | ||||
|   { "xmod_is_melee_wpn", is_melee }, | ||||
|   { "xmod_get_maxweapons", get_maxweapons }, | ||||
|   { "xmod_get_stats_size", get_stats_size }, | ||||
|    | ||||
|   {"register_statsfwd",register_forward }, | ||||
|  | ||||
|   ///******************* | ||||
|   | ||||
| @@ -439,7 +439,7 @@ AMX_NATIVE_INFO stats_Natives[] = { | ||||
| 	{ "reset_user_wstats",  reset_user_wstats }, | ||||
|  | ||||
| 	// Custom Weapon Support | ||||
| 	{ "reg_custom_weapon", register_cwpn }, // name,melee,logname | ||||
| 	{ "custom_weapon_add", register_cwpn }, // name,melee,logname | ||||
| 	{ "custom_weapon_dmg", cwpn_dmg }, | ||||
| 	{ "custom_weapon_shot", cwpn_shot }, | ||||
|  | ||||
|   | ||||
| @@ -267,6 +267,8 @@ static cell AMX_NATIVE_CALL TFC_GetWeaponBAmmo(AMX *amx, cell *params) { | ||||
| 	case TFC_WPN_GASGRENADE: | ||||
| 	case TFC_WPN_EMPGRENADE: | ||||
| 		return *( (int*)pPlayer->pEdict->pvPrivateData + PD_AMMO_NADE2); | ||||
|  | ||||
|  | ||||
| 		break; | ||||
| 	default :  | ||||
| 		return 0; | ||||
| @@ -415,6 +417,14 @@ static cell AMX_NATIVE_CALL register_forward(AMX *amx, cell *params){ // forward | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| static cell AMX_NATIVE_CALL get_maxweapons(AMX *amx, cell *params){ | ||||
| 	return TFCMAX_WEAPONS; | ||||
| } | ||||
|  | ||||
| static cell AMX_NATIVE_CALL get_stats_size(AMX *amx, cell *params){ | ||||
| 	return 8; | ||||
| } | ||||
|  | ||||
| // Native list. | ||||
| AMX_NATIVE_INFO base_Natives[] = { | ||||
| 	{"tfc_setmodel", TFC_SetModel}, | ||||
| @@ -423,10 +433,13 @@ AMX_NATIVE_INFO base_Natives[] = { | ||||
| 	{"tfc_getbammo", TFC_GetBAmmo}, | ||||
| 	{"tfc_getweaponbammo", TFC_GetWeaponBAmmo}, | ||||
| 	{"tfc_setweaponbammo", TFC_SetWeaponBAmmo}, | ||||
| 	{"tfc_getwpnname", TFC_GetWpnName}, | ||||
| 	{"tfc_getwpnlogname", TFC_GetWpnLogName}, | ||||
|  | ||||
| 	{"tfc_ismelee", TFC_IsMelee}, | ||||
| 	{"xmod_get_wpnname", TFC_GetWpnName}, | ||||
| 	{"xmod_get_wpnlogname", TFC_GetWpnLogName}, | ||||
| 	{"xmod_is_melee_wpn", TFC_IsMelee}, | ||||
| 	{"xmod_get_maxweapons", get_maxweapons}, | ||||
| 	{"xmod_get_stats_size", get_stats_size}, | ||||
|  | ||||
| 	{"tfc_userkill" , TFC_UserKill}, | ||||
| 	 | ||||
| 	{"tfc_setpddata", TFC_SetPDdata }, | ||||
|   | ||||
| @@ -363,7 +363,7 @@ AMX_NATIVE_INFO stats_Natives[] = { | ||||
| 	{ "reset_user_wstats",  reset_user_wstats }, | ||||
|  | ||||
| 	// Custom Weapon Support | ||||
| 	{ "reg_custom_weapon", register_cwpn }, | ||||
| 	{ "custom_weapon_add", register_cwpn }, | ||||
| 	{ "custom_weapon_dmg", cwpn_dmg }, | ||||
| 	{ "custom_weapon_shot", cwpn_shot }, | ||||
|  | ||||
|   | ||||
| @@ -83,6 +83,7 @@ struct CPlayer { | ||||
| 	// | ||||
| 	int killingSpree; | ||||
| 	int is_specialist; | ||||
| 	int killFlags; | ||||
| 	int lastFrag; // oblicz ostatni frag, sprawdza czy poprawna jest detekcja broni i bonusow  | ||||
| 	float lastKill;  // kiedy ostatni , dla double kill | ||||
| 	// | ||||
|   | ||||
| @@ -186,6 +186,19 @@ static cell AMX_NATIVE_CALL get_lastFrag(AMX *amx, cell *params){ | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| static cell AMX_NATIVE_CALL get_killflags(AMX *amx, cell *params){ | ||||
| 	int id = params[1]; | ||||
| 	if ( id<1 || id>gpGlobals->maxClients ){  | ||||
| 		MF_RaiseAmxError(amx,AMX_ERR_NATIVE); | ||||
| 		return 0; | ||||
| 	} | ||||
| 	CPlayer *pPlayer = GET_PLAYER_POINTER_I(id); | ||||
| 	if ( pPlayer->ingame ){ | ||||
| 		return pPlayer->killFlags; | ||||
| 	} | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| static cell AMX_NATIVE_CALL give_weapon(AMX *amx, cell *params){ // index,weapon,clips,extra | ||||
| 	int id = params[1]; | ||||
| 	if ( id<1 || id>gpGlobals->maxClients ){  | ||||
| @@ -361,12 +374,26 @@ static cell AMX_NATIVE_CALL register_forward(AMX *amx, cell *params){ // forward | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| static cell AMX_NATIVE_CALL get_maxweapons(AMX *amx, cell *params){ | ||||
| 	return TSMAX_WEAPONS; | ||||
| } | ||||
|  | ||||
| static cell AMX_NATIVE_CALL get_stats_size(AMX *amx, cell *params){ | ||||
| 	return 8; | ||||
| } | ||||
|  | ||||
|  | ||||
| AMX_NATIVE_INFO base_Natives[] = { | ||||
| 	{ "ts_getwpnname", get_weapon_name }, | ||||
| 	{ "ts_getwpnlogname", get_weapon_logname }, | ||||
|  | ||||
| 	{ "xmod_get_wpnname", get_weapon_name }, | ||||
| 	{ "xmod_get_wpnlogname", get_weapon_logname }, | ||||
| 	{ "xmod_is_melee_wpn", is_melee }, | ||||
| 	{ "xmod_get_maxweapons", get_maxweapons }, | ||||
| 	{ "xmod_get_stats_size", get_stats_size }, | ||||
| 	 | ||||
| 	{ "ts_wpnlogtoname", wpnlog_to_name }, | ||||
| 	{ "ts_wpnlogtoid", wpnlog_to_id }, | ||||
| 	{ "ts_ismelee", is_melee }, | ||||
| 	 | ||||
| 	{ "ts_getuserwpn", get_user_weapon }, | ||||
| 	{ "ts_getusercash", get_user_cash }, | ||||
| 	{ "ts_getuserspace", get_user_space }, | ||||
| @@ -374,6 +401,7 @@ AMX_NATIVE_INFO base_Natives[] = { | ||||
| 	{ "ts_getuseritems",get_user_items }, | ||||
| 	{ "ts_getkillingstreak",get_killingStreak }, | ||||
| 	{ "ts_getuserlastfrag",get_lastFrag }, | ||||
| 	{ "ts_getuserkillflags",get_killflags }, | ||||
|  | ||||
| 	{ "ts_giveweapon",give_weapon }, | ||||
| 	{ "ts_createpwup",create_pwup }, | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * TFCX  | ||||
|  * TSX  | ||||
|  * Copyright (c) 2004 Lukasz Wlasinski | ||||
|  * | ||||
|  * | ||||
| @@ -363,7 +363,7 @@ AMX_NATIVE_INFO stats_Natives[] = { | ||||
| 	{ "reset_user_wstats",  reset_user_wstats }, | ||||
|  | ||||
| 	// Custom Weapon Support | ||||
| 	{ "reg_custom_weapon", register_cwpn }, | ||||
| 	{ "custom_weapon_add", register_cwpn }, | ||||
| 	{ "custom_weapon_dmg", cwpn_dmg }, | ||||
| 	{ "custom_weapon_shot", cwpn_shot }, | ||||
|  | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * TFCX  | ||||
|  * TSX  | ||||
|  * Copyright (c) 2004 Lukasz Wlasinski | ||||
|  * | ||||
|  * | ||||
|   | ||||
| @@ -41,6 +41,7 @@ void Client_ResetHUD_End(void* mValue){ | ||||
| 		mPlayer->items = 0; | ||||
| 		mPlayer->is_specialist = 0; | ||||
| 		mPlayer->killingSpree = 0; | ||||
| 		mPlayer->killFlags = 0; | ||||
| 		mPlayer->frags = (int)mPlayer->pEdict->v.frags; | ||||
| 		/*  | ||||
| 		fix dla user_kill() z addfrag  | ||||
| @@ -216,8 +217,9 @@ void Client_TSHealth_End(void* mValue){ | ||||
| 			} | ||||
| 	} | ||||
|  | ||||
| 	pAttacker->killFlags = killFlags; | ||||
| 	pAttacker->saveKill(mPlayer,weapon,( aim == 1 ) ? 1:0 ,TA); | ||||
| 	g_death_info.exec( pAttacker->index, mPlayer->index, weapon, aim, killFlags, TA ); | ||||
| 	g_death_info.exec( pAttacker->index, mPlayer->index, weapon, aim, TA ); | ||||
|  | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user