MYSQL export package
YES YES YES
now about death stats...
:combat:fight.inc
Code: Select all
use uo;
use util;
include "include/givefightpoints"
function DealDamage(defender, attacker, rawdamage,skill)
//here some code
if (defender.dead || !defender)
eraseobjproperty(defender,"wounded");
fix_stats(attacker,defender);
endif
endif
endfunction
include/givefightpoints.inc
Code: Select all
const ATT_KILLED_NPC := 10;
const ATT_KILLED_PC := 11;
const DEF_KILLED_BY_NPC := 21;
function fix_stats(attacker,defender)
var tmp1,tmp2,tmp3,tmp4,def:=0,ata:=20,i;
if (defender.acctname)
def:=1;
if (getobjproperty(defender,"deathstats"))
tmp1:=getobjproperty(defender,"deathstats");
else
tmp1:=array("0","0","0","0");
endif
if (getobjproperty(defender,"viccas"))
tmp3:=getobjproperty(defender,"viccas");
else
tmp3:=array("","","","","","","","","","","","","","","","");
endif
endif
if (attacker.acctname)
ata:=10;
if (getobjproperty(attacker,"deathstats"))
tmp2:=getobjproperty(attacker,"deathstats");
else
tmp2:=array("0","0","0","0");
endif
if (getobjproperty(attacker,"viccas"))
tmp4:=getobjproperty(attacker,"viccas");
else
tmp4:=array("","","","","","","","","","","","","","","","");
endif
endif
var przypadek:=def+ata;
if (przypadek == ATT_KILLED_NPC)
tmp2[1]:=cstr(cint(tmp2[1])+1);
setobjproperty(attacker,"deathstats",tmp2);
UpdMyKills(attacker, defender);
endif
if (przypadek == ATT_KILLED_PC)
tmp2[2]:=cstr(cint(tmp2[2])+1);
tmp1[4]:=cstr(cint(tmp1[4])+1);
setobjproperty(attacker,"deathstats",tmp2);
setobjproperty(defender,"deathstats",tmp1);
for (i:=7;i>0;i:=i-1);
tmp4[i+1]:=tmp4[i];
tmp3[i+9]:=tmp3[i+8];
endfor
tmp4[1]:=defender.name;
tmp3[9]:=attacker.name;
setobjproperty(attacker,"viccas",tmp4);
setobjproperty(defender,"viccas",tmp3);
UpdMyKills(attacker, defender);
UpdMyDeaths(defender, attacker);
endif
if (przypadek == DEF_KILLED_BY_NPC)
tmp1[3]:=cstr(cint(tmp1[3])+1);
setobjproperty(defender,"deathstats",tmp1);
UpdMyDeaths(defender, attacker);
endif
endfunction
// Victim Ref Could Be Null If It Was NPC - death.src Uses This Function Directly With CorpseRef As Victim //
function UpdMyKills(killer, victim)
var mykills := GetObjProperty(killer, "my_kills");
var tmp;
var npc_temp := GetObjProperty(victim, "npctemplate");
if (!mykills || (TypeOf(mykills) != "Dictionary"))
mykills := dictionary;
endif
// Killed a PC //
if (victim.acctname)
var race := CInt(GetObjProperty(victim, "race"));
if ((race < 0) || (race > 11))
return;
endif
tmp := CInt(mykills[CStr(race)]);
mykills[CStr(race)] := tmp + 1;
SetObjProperty(killer, "my_kills", mykills);
// Killed a NPC //
elseif (npc_temp)
tmp := CInt(mykills[CStr(npc_temp)]);
mykills[CStr(npc_temp)] := tmp + 1;
SetObjProperty(killer, "my_kills", mykills);
endif
endfunction
// Here Killer Ref Is Always Valid //
function UpdMyDeaths(victim, killer)
var mydeaths := GetObjProperty(victim, "my_deaths");
var tmp;
if (!mydeaths || (TypeOf(mydeaths) != "Dictionary"))
mydeaths := dictionary;
endif
// Killed by a PC //
if (killer.acctname)
var race := CInt(GetObjProperty(killer, "race"));
if ((race < 0) || (race > 11))
return;
endif
tmp := CInt(mydeaths[CStr(race)]);
mydeaths[CStr(race)] := tmp + 1;
SetObjProperty(victim, "my_deaths", mydeaths);
// Killed by a NPC //
elseif (killer.npctemplate)
tmp := CInt(mydeaths[CStr(killer.npctemplate)]);
mydeaths[CStr(killer.npctemplate)] := tmp + 1;
SetObjProperty(victim, "my_deaths", mydeaths);
endif
endfunction
if (defender.dead || !defender)
eraseobjproperty(defender,"wounded");
fix_stats(attacker,defender);
endif
should be too after dealing damages by spells
var tmp1:=GetObjProperty(who,"deathstats");
var tmp2:=getobjproperty(defender,"viccas");
var tmp3:=GetObjProperty(who, "my_deaths");
var tmp4:=GetObjProperty(who, "my_kills");
and you have something like this (look only at data not design of usercard):

[/quote]