Code:
void ReproduceProp(int target)
{
PrintToChatAll("Reproducing properties on %N ...", target);
KeyValues kv;
char sItem[16], sName[64], sValue[64];
int iValue;
float fValue, vValue[3];
kv = CreateKeyValues("tank");
if (FileToKeyValues(kv, "kvtest.txt")) {
PrintToChatAll("kvtest.txt is Loaded");
kv.Rewind();
kv.GotoFirstSubKey();
do
{
kv.GetSectionName(sItem, sizeof(sItem));
kv.GetString("Name", sName, sizeof(sName));
if (HasEntProp(target, Prop_Send, sName)) {
PrintToChatAll("Name: %s", sName);
switch(kv.GetNum("type")) {
case 0: { // integer
iValue = kv.GetNum("value");
SetEntProp(target, Prop_Send, sName, iValue);
PrintToChatAll("%s = %i", sName, iValue);
}
case 1: { // float
fValue = kv.GetFloat("value");
SetEntPropFloat(target, Prop_Send, sName, fValue);
PrintToChatAll("%s = %f", sName, fValue);
}
case 2: { // vector
kv.GetVector("value", vValue);
SetEntPropVector(target, Prop_Send, sName, vValue);
PrintToChatAll("%s = %f %f %f", sName, vValue[0], vValue[1], vValue[2]);
}
case 3: { // ??
}
case 4: { // string
kv.GetString("value", sValue, sizeof(sValue), "error");
if (!StrEqual(sValue, "error")) {
SetEntPropString(target, Prop_Send, sName, sValue);
PrintToChatAll("%s = %s", sName, sValue);
}
}
}
}
} while (kv.GotoNextKey());
ChangeEdictState(target, 0);
}
else {
PrintToChatAll("kvtest.txt file is not found!");
}
}