Die Funktion in der LUA:
SetLevelUpGift:
function SetLevelUpGift( nLevel, strAccount, strItemId, nItemNum, nSex, byFlag )
local nEventId = table.getn(tEvent)
local nSize = table.getn(tEvent[nEventId].Gift)
tEvent[nEventId].Gift[nSize+1] = {}
tEvent[nEventId].Gift[nSize+1].nLevel = nLevel
tEvent[nEventId].Gift[nSize+1].strAccount = strAccount
tEvent[nEventId].Gift[nSize+1].strItemId = strItemId
tEvent[nEventId].Gift[nSize+1].nItemNum = nItemNum
tEvent[nEventId].Gift[nSize+1].nSex = nSex
tEvent[nEventID].Gift[nSize+1].nJob = nJob
tEvent[nEventId].Gift[nSize+1].byFlag = byFlag
end
GetLevelUpGift:
function GetLevelUpGift( nLevel, strAccount )
local nCount = 1
local tGiftList = {}
local tList = GetEventList()
for i in pairs(tList) do
local tGift = tEvent[tList[i]].Gift
for j in pairs(tGift) do
local nTemp = string.find( strAccount, tGift[j].strAccount )
if( (tGift[j].strAccount == "all") or (nTemp ~= nil) ) then
if( tGift[j].nLevel == nLevel ) then
tGiftList[nCount] = {}
tGiftList[nCount].strItemId = tGift[j].strItemId
tGiftList[nCount].nItemNum = tGift[j].nItemNum
tGiftList[nCount].nSex = tGift[j].nSex
tGiftList[nCount].nJob = tGift[j].nJob
tGiftList[nCount].byFlag = tGift[j].byFlag
nCount = nCount + 1
end
end
end
end
return tGiftList
end
Im Source:
BYTE job = static_cast<BYTE>( m_Lua.GetFieldToNumber( -1, "nJob" ) );
if( job == pUser->m_nJob ) // Job Klasse
{ // ·Î±× ³²±è
if( pUser->CreateItem( &itemElem ) )
{
aLogItem.RecvName = "EVENT_LEVELUP_GIFT";
g_DPSrvr.OnLogItem( aLogItem, &itemElem, nItemNum );
}
else
{
g_dpDBClient.SendQueryPostMail( pUser->m_idPlayer, 0, itemElem, 0, "", "" );
aLogItem.RecvName = "EVENT_LEVELUP_GIFT_POST";
g_DPSrvr.OnLogItem( aLogItem, &itemElem, nItemNum );
}
}
else
{
Error( "CEventLua::SetLevelUpGift() - nJob not valid. nJob = \"%s\"", m_Lua.GetFieldToString( -1, "nJob" ) );
m_Lua.Pop( 1 );
continue;
}
Und zum aufruf:
Code:
SetLevelUpGift( nLevel, lpszAccount, ItemId, nNum, [COLOR=Red]nSex, nJob[/COLOR], byFlag )
Ich weis nicht ob es funktioniert, hab es gerade ausm Kopf geschrieben.