If you got l4d1 it is no problem to get the characters. I created a vpk for myself with the models and a sourcemod plugin, which allows me to change the ingame model. Voice and the character picture is still the l4d2 character.
The vpk from my link will exchange the models and pictures permanently from l4d2 with l4d1 characters, still no voice.
There is a option in an vpk addon to only add new characters without exchanging, but it seems, that the new characters dont get an charaterid to change the "m_survivorCharacter" value of a CTerrorPlayer (this would change picture and voice).
Edit:
In the youtube clip you can see the 1. idea.
A simple sourcemod plugin to change the model, but i didnt solve the issue that the model you can see is still the l4d2 one.
PHP Code:
#include <sourcemod>
#include <sdktools>
#pragma semicolon 1
#define MODEL_BILL "models/survivors/survivor_namvet.mdl"
#define MODEL_FRANCIS "models/survivors/survivor_biker.mdl"
#define MODEL_LOUIS "models/survivors/survivor_manager.mdl"
#define MODEL_ZOEY "models/survivors/survivor_teenangst.mdl"
public OnPluginStart()
{
RegConsoleCmd("say", Command_Say);
RegConsoleCmd("teamsay", Command_Say);
RegConsoleCmd("sm_model", Command_Change);
}
public OnMapStart()
{
PrecacheModel(MODEL_BILL, true);
PrecacheModel(MODEL_FRANCIS, true);
PrecacheModel(MODEL_LOUIS, true);
PrecacheModel(MODEL_ZOEY, true);
}
public Action:Command_Say(client, args)
{
if (args < 1)
{
return Plugin_Continue;
}
decl String:text[15];
GetCmdArg(1, text, sizeof(text));
if (StrContains(text, "!bill") == 0)
{
ChangeModel(client, client, MODEL_BILL);
return Plugin_Handled;
}
else if (StrContains(text, "!francis") == 0)
{
ChangeModel(client, client, MODEL_FRANCIS);
return Plugin_Handled;
}
else if (StrContains(text, "!louis") == 0)
{
ChangeModel(client, client, MODEL_LOUIS);
return Plugin_Handled;
}
else if (StrContains(text, "!zoey") == 0)
{
ChangeModel(client, client, MODEL_ZOEY);
return Plugin_Handled;
}
return Plugin_Continue;
}
public Action:Command_Change(client, args)
{
if (args < 2)
{
return Plugin_Continue;
}
decl String:text[15];
new clienta;
GetCmdArg(1, text, sizeof(text));
clienta = StringToInt(text);
GetCmdArg(2, text, sizeof(text));
if (StrContains(text, "bill") == 0)
{
ChangeModel(client, clienta, MODEL_BILL);
}
else if (StrContains(text, "francis") == 0)
{
ChangeModel(client, clienta, MODEL_FRANCIS);
}
else if (StrContains(text, "louis") == 0)
{
ChangeModel(client, clienta, MODEL_LOUIS);
}
else if (StrContains(text, "zoey") == 0)
{
ChangeModel(client, clienta, MODEL_ZOEY);
}
return Plugin_Continue;
}
ChangeModel(client, target, String:model[])
{
if (!IsClientInGame(target))
{
PrintToChat(client, "Target not ingame, fail!");
return;
}
if (GetClientTeam(target) != 2)
{
PrintToChat(client, "Target no survivor, fail!");
return;
}
SetEntityModel(target, model);
}
__________________