Raised This Month: $ Target: $400
 0% 

L4D - Convert Script


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
RoMaNo06
Junior Member
Join Date: May 2010
Old 05-14-2010 , 13:11   L4D - Convert Script
Reply With Quote #1

Hello,

In first, excuse my deplorable English but I am French .

I found this script of n0limit for Left 4 Dead 1 and I would like to convert it to make it on Left 4 Dead 2.

Pounce Record (Original script)

Code:
/* Plugin Template generated by Pawn Studio */

#include <sourcemod>

#define PLUGIN_VERSION "1.1"
//globals
new Handle:hDb;
new Handle:hMaxPounceDistance;
new Handle:hMinPounceDistance;
new Handle:hMaxPounceDamage;
//hunter position store
new Float:infectedPosition[32][3]; //support up to 32 slots on a server

public Plugin:myinfo = 
{
	name = "PounceRecord",
	author = "n0limit",
	description = "Saves pounces from the game to a central database, and provide extended pounce statistics on players during the game.",
	version = PLUGIN_VERSION,
	url = ""
}

public OnPluginStart()
{
	ConnectToDB("PounceDB");
	if(hDb == INVALID_HANDLE)
		return; //Don't setup the system if the DB is non responsive.
	
	CreateConVar("pouncerecord_version",PLUGIN_VERSION,"The current version of the plugin.",FCVAR_NOTIFY|FCVAR_PLUGIN|FCVAR_SPONLY);
	
	hMaxPounceDistance = FindConVar("z_pounce_damage_range_max");
	hMinPounceDistance = FindConVar("z_pounce_damage_range_min");
	hMaxPounceDamage = FindConVar("z_hunter_max_pounce_bonus_damage");
	
	HookEvent("lunge_pounce",Event_PlayerPounced);
	HookEvent("ability_use",Event_AbilityUse);
}

public ConnectToDB(const String:configName[])
{
	new String:errorMsg[256];
	
	if(SQL_CheckConfig(configName))
	{ //config section exists
		hDb = SQL_Connect(configName,true,errorMsg,sizeof(errorMsg));
		if(hDb == INVALID_HANDLE)
			LogError("Unable to connect to the specified host for the database configuration named %s.",configName);
	}
	else
		LogError("The database configuration name %s was not present in the databases.cfg file.",configName);
}

public Event_AbilityUse(Handle:event, const String:name[], bool:dontBroadcast)
{
	new user = GetClientOfUserId(GetEventInt(event, "userid"));
	
	//Save the location of the player who just used an infected ability
	GetClientAbsOrigin(user,infectedPosition[user]);
}
public Event_PlayerPounced(Handle:event, const String:name[], bool:dontBroadcast)
{
	new Float:pouncePosition[3];
	new attackerId = GetEventInt(event, "userid");
	new victimId = GetEventInt(event, "victim");
	new attackerClient = GetClientOfUserId(attackerId);
	new victimClient = GetClientOfUserId(victimId);
		
	decl String:attackerName[MAX_NAME_LENGTH];
	decl String:safeAttackerName[MAX_NAME_LENGTH * 2 + 1]; //per EscapeString requirements
	decl String:victimName[MAX_NAME_LENGTH];
	decl String:safeVictimName[MAX_NAME_LENGTH * 2 + 1];
	decl String:pounceSqlQuery[256];
	decl String:steamID[64];
	decl String:mapName[MAX_NAME_LENGTH];
	
	//distance supplied isn't the actual 2d vector distance needed for damage calculation. See more about it at
	//http://forums.alliedmods.net/showthread.php?t=93207
	//new eventDistance = GetEventInt(event, "distance");
	
	//get hunter-related pounce cvars
	new max = GetConVarInt(hMaxPounceDistance);
	new min = GetConVarInt(hMinPounceDistance);
	new maxDmg = GetConVarInt(hMaxPounceDamage);
	
	//Get current position while pounced
	GetClientAbsOrigin(attackerClient,pouncePosition);
	
	//Calculate 2d distance between previous position and pounce position
	new distance = RoundToNearest(GetVectorDistance(infectedPosition[attackerClient], pouncePosition));
	
	//Check to see if the pounce produced any pounce damage
	if(distance < min)
		return; //if not, don't add to db.
		
	//Get damage using hunter damage formula
	//damage in this is expressed as a float because my server has competitive hunter pouncing where the decimal counts
	new Float:dmg = (((distance - float(min)) / float(max - min)) * float(maxDmg)) + 1;
	
	GetClientName(attackerClient,attackerName,sizeof(attackerName));
	GetClientName(victimClient,victimName,sizeof(victimName));
	SQL_EscapeString(hDb,victimName,safeVictimName,sizeof(safeVictimName));
	SQL_EscapeString(hDb,attackerName,safeAttackerName,sizeof(safeAttackerName));
	
	GetClientAuthString(attackerClient,steamID,sizeof(steamID));
	GetCurrentMap(mapName,sizeof(mapName));
	
	//Now we have all the data we need, form the SQL statement try to commit it to the database
	Format(pounceSqlQuery,sizeof(pounceSqlQuery),"INSERT INTO pounces (datetime, pouncer, pounced, distance, damage, map,steamid) VALUES (NOW(),'%s','%s','%d','%f','%s','%s')",
	safeAttackerName,safeVictimName,distance,dmg,mapName,steamID);
	SQL_TQuery(hDb,SqlPounceCallback,pounceSqlQuery);
}
public SqlPounceCallback(Handle:owner, Handle:hndl, const String:error[], any:data)
{
	if(hndl == INVALID_HANDLE)
		LogError("The following error occured while inserting a pounce into the database: %s",error);
}

Can you help me plz ?
RoMaNo06 is offline
Exolent[jNr]
Veteran Member
Join Date: Feb 2007
Location: Tennessee
Old 05-14-2010 , 13:48   Re: L4D - Convert Script
Reply With Quote #2

Post in the SourceMod section.
__________________
No private work or selling mods.
Quote:
Originally Posted by xPaw View Post
I love you exolent!
Exolent[jNr] is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 03:38.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode