438 lines
13 KiB
C++
438 lines
13 KiB
C++
#include "stdafx.h"
|
|
#include "LuaEngine.h"
|
|
#include "User.h"
|
|
#include "Npc.h"
|
|
|
|
/*
|
|
Classes
|
|
*/
|
|
|
|
/**
|
|
* Defining a class is simple: just #define LUA_CLASS to your class name,
|
|
* then call DEFINE_LUA_CLASS(), specifying each method to expose.
|
|
*
|
|
* Remember to #undef LUA_CLASS when you're done.
|
|
*
|
|
* Doing so sacrifices a little readability, however it
|
|
* makes manually defining methods much quicker (less to type).
|
|
*
|
|
* Also, as our method doesn't support inheritance, you'll need
|
|
* to redefine the same methods for each class.
|
|
*
|
|
* This is because of the way we dynamically pull instance pointers;
|
|
* these are typedef'd within the class, so that we can refer to them
|
|
* to grab the class name from within. As we type check these with Lua,
|
|
* they'll fail, so we won't be able to use them.
|
|
*
|
|
* I don't think this is such a big issue, as there's only a handful of
|
|
* cases that actually require this behaviour.
|
|
**/
|
|
|
|
#define LUA_CLASS CUser
|
|
DEFINE_LUA_CLASS
|
|
(
|
|
// Getters
|
|
MAKE_LUA_METHOD(GetName)
|
|
MAKE_LUA_METHOD(GetAccountName)
|
|
MAKE_LUA_METHOD(GetZoneID)
|
|
MAKE_LUA_METHOD(GetX)
|
|
MAKE_LUA_METHOD(GetY)
|
|
MAKE_LUA_METHOD(GetZ)
|
|
MAKE_LUA_METHOD(GetNation)
|
|
MAKE_LUA_METHOD(GetLevel)
|
|
MAKE_LUA_METHOD(GetRebLevel)
|
|
MAKE_LUA_METHOD(GetClass)
|
|
MAKE_LUA_METHOD(GetCoins)
|
|
MAKE_LUA_METHOD(GetInnCoins)
|
|
MAKE_LUA_METHOD(GetLoyalty)
|
|
MAKE_LUA_METHOD(GetMonthlyLoyalty)
|
|
MAKE_LUA_METHOD(GetManner)
|
|
MAKE_LUA_METHOD(GetActiveQuestID)
|
|
MAKE_LUA_METHOD(GetClanGrade)
|
|
MAKE_LUA_METHOD(GetClanPoint)
|
|
MAKE_LUA_METHOD(GetClanRank)
|
|
MAKE_LUA_METHOD(GetStat)
|
|
|
|
MAKE_LUA_METHOD(isWarrior)
|
|
MAKE_LUA_METHOD(isRogue)
|
|
MAKE_LUA_METHOD(isMage)
|
|
MAKE_LUA_METHOD(isPriest)
|
|
|
|
MAKE_LUA_METHOD(isBeginner)
|
|
MAKE_LUA_METHOD(isBeginnerWarrior)
|
|
MAKE_LUA_METHOD(isBeginnerRogue)
|
|
MAKE_LUA_METHOD(isBeginnerMage)
|
|
MAKE_LUA_METHOD(isBeginnerPriest)
|
|
|
|
MAKE_LUA_METHOD(isNovice)
|
|
MAKE_LUA_METHOD(isNoviceWarrior)
|
|
MAKE_LUA_METHOD(isNoviceRogue)
|
|
MAKE_LUA_METHOD(isNoviceMage)
|
|
MAKE_LUA_METHOD(isNovicePriest)
|
|
|
|
MAKE_LUA_METHOD(isMastered)
|
|
MAKE_LUA_METHOD(isMasteredWarrior)
|
|
MAKE_LUA_METHOD(isMasteredRogue)
|
|
MAKE_LUA_METHOD(isMasteredMage)
|
|
MAKE_LUA_METHOD(isMasteredPriest)
|
|
|
|
MAKE_LUA_METHOD(isInClan)
|
|
MAKE_LUA_METHOD(isClanLeader)
|
|
MAKE_LUA_METHOD(isInParty)
|
|
MAKE_LUA_METHOD(isPartyLeader)
|
|
MAKE_LUA_METHOD(isKing)
|
|
|
|
|
|
// Shortcuts for lazy people
|
|
MAKE_LUA_METHOD(hasCoins)
|
|
MAKE_LUA_METHOD(hasInnCoins)
|
|
MAKE_LUA_METHOD(hasLoyalty)
|
|
MAKE_LUA_METHOD(hasMonthlyLoyalty)
|
|
MAKE_LUA_METHOD(hasManner)
|
|
MAKE_LUA_METHOD(SendBoard)
|
|
MAKE_LUA_METHOD(SendReported)
|
|
|
|
// Here lie the useful methods.
|
|
MAKE_LUA_METHOD(GiveItem)
|
|
MAKE_LUA_METHOD(RobItem)
|
|
MAKE_LUA_METHOD(CheckExistItem)
|
|
MAKE_LUA_METHOD(GoldGain)
|
|
MAKE_LUA_METHOD(GoldLose)
|
|
MAKE_LUA_METHOD(ExpChange)
|
|
MAKE_LUA_METHOD(GiveCash)
|
|
MAKE_LUA_METHOD(TempleEventJoin)
|
|
MAKE_LUA_METHOD(GiveLoyalty)
|
|
MAKE_LUA_METHOD(RobLoyalty)
|
|
MAKE_LUA_METHOD(SaveEvent)
|
|
MAKE_LUA_METHOD(SearchQuest)
|
|
MAKE_LUA_METHOD(ShowMap)
|
|
MAKE_LUA_METHOD(SelectMsg) // menu
|
|
MAKE_LUA_METHOD(NpcSay) // dialog
|
|
MAKE_LUA_METHOD(NpcMsg) // new automated quest prompt (does whatever's needed, menu, quest prompt, etc)
|
|
MAKE_LUA_METHOD(CheckWeight)
|
|
MAKE_LUA_METHOD(CheckExistEvent)
|
|
MAKE_LUA_METHOD(CheckSkillPoint)
|
|
MAKE_LUA_METHOD(isRoomForItem) // FindSlotForItem()
|
|
MAKE_LUA_METHOD(CountMonsterQuestSub)
|
|
MAKE_LUA_METHOD(CountMonsterQuestMain)
|
|
MAKE_LUA_METHOD(CheckGiveSlot)
|
|
MAKE_LUA_METHOD(CheckExchange)
|
|
MAKE_LUA_METHOD(RunExchange)
|
|
MAKE_LUA_METHOD(RunSelectExchange)
|
|
MAKE_LUA_METHOD(SendNameChange)
|
|
MAKE_LUA_METHOD(SendClanNameChange)
|
|
MAKE_LUA_METHOD(ResetSkillPoints)
|
|
MAKE_LUA_METHOD(ResetStatPoints)
|
|
MAKE_LUA_METHOD(PromoteUserNovice)
|
|
MAKE_LUA_METHOD(PromoteUser)
|
|
MAKE_LUA_METHOD(RobAllItemParty)
|
|
MAKE_LUA_METHOD(CheckWaiting)
|
|
MAKE_LUA_METHOD(ZoneChange)
|
|
MAKE_LUA_METHOD(ZoneChangeParty)
|
|
MAKE_LUA_METHOD(ZoneChangeClan)
|
|
MAKE_LUA_METHOD(ShowEffect)
|
|
MAKE_LUA_METHOD(ShowNpcEffect)
|
|
MAKE_LUA_METHOD(KissUser)
|
|
MAKE_LUA_METHOD(ChangeManner)
|
|
MAKE_LUA_METHOD(PromoteClan)
|
|
MAKE_LUA_METHOD(RobClanPoint)
|
|
MAKE_LUA_METHOD(GetBeefRoastVictory)
|
|
MAKE_LUA_METHOD(RequestPersonalRankReward)
|
|
MAKE_LUA_METHOD(RequestReward)
|
|
MAKE_LUA_METHOD(RunCountExchange)
|
|
MAKE_LUA_METHOD(GetMaxExchange)
|
|
MAKE_LUA_METHOD(GetPartyMemberAmount)
|
|
MAKE_LUA_METHOD(GetUserDailyOp)
|
|
MAKE_LUA_METHOD(GetEventTrigger)
|
|
MAKE_LUA_METHOD(GetPremium)
|
|
MAKE_LUA_METHOD(GetWarVictory)
|
|
MAKE_LUA_METHOD(CheckMiddleStatueCapture)
|
|
MAKE_LUA_METHOD(MoveMiddleStatue)
|
|
MAKE_LUA_METHOD(LevelChange)
|
|
MAKE_LUA_METHOD(GivePremium)
|
|
MAKE_LUA_METHOD(GiveKnightCash)
|
|
MAKE_LUA_METHOD(GetMonsterChallengeTime)
|
|
MAKE_LUA_METHOD(GetMonsterChallengeUserCount)
|
|
MAKE_LUA_METHOD(GetEventZoneTime)
|
|
MAKE_LUA_METHOD(GetEventZoneUserCount)
|
|
MAKE_LUA_METHOD(GetPVPMonumentNation)
|
|
MAKE_LUA_METHOD(SendNationChange)
|
|
MAKE_LUA_METHOD(GetRace)
|
|
MAKE_LUA_METHOD(JobChange)
|
|
);
|
|
#undef LUA_CLASS
|
|
|
|
#define LUA_CLASS CNpc
|
|
DEFINE_LUA_CLASS
|
|
(
|
|
// Getters
|
|
MAKE_LUA_METHOD(GetID)
|
|
MAKE_LUA_METHOD(GetProtoID)
|
|
MAKE_LUA_METHOD(GetName)
|
|
MAKE_LUA_METHOD(GetNation)
|
|
MAKE_LUA_METHOD(GetType)
|
|
MAKE_LUA_METHOD(GetZoneID)
|
|
MAKE_LUA_METHOD(GetX)
|
|
MAKE_LUA_METHOD(GetY)
|
|
MAKE_LUA_METHOD(GetZ)
|
|
MAKE_LUA_METHOD(CastSkill)
|
|
|
|
// Useful methods
|
|
// MAKE_LUA_METHOD(CycleSpawn) // i.e. ChangePosition(), used to cycle a spawn through the various trap numbers (like 7 key quest NPCs)
|
|
|
|
);
|
|
#undef LUA_CLASS
|
|
|
|
|
|
/*
|
|
Global functions
|
|
*/
|
|
LUA_FUNCTION(CheckPercent)
|
|
{
|
|
LUA_RETURN(CheckPercent(LUA_ARG(int, 1)));
|
|
}
|
|
|
|
#define Lua_GetUser() g_pMain->GetUserPtr(LUA_ARG(uint16, 1))
|
|
|
|
LUA_FUNCTION(HowmuchItem)
|
|
{
|
|
CUser * pUser = Lua_GetUser();
|
|
uint32 result = 0;
|
|
|
|
if (pUser != nullptr)
|
|
{
|
|
uint32 nItemID = LUA_ARG(uint32, 2);
|
|
if (nItemID == ITEM_GOLD)
|
|
result = pUser->GetCoins();
|
|
else
|
|
result = pUser->GetItemCount(nItemID);
|
|
}
|
|
|
|
LUA_RETURN(result);
|
|
}
|
|
|
|
LUA_FUNCTION(CheckNation)
|
|
{
|
|
CUser * pUser = Lua_GetUser();
|
|
uint8 bNation = Nation::NONE;
|
|
|
|
if (pUser != nullptr)
|
|
bNation = pUser->GetNation();
|
|
|
|
LUA_RETURN(bNation);
|
|
}
|
|
|
|
LUA_FUNCTION(CheckClass)
|
|
{
|
|
CUser * pUser = Lua_GetUser();
|
|
uint8 bClassType = 0;
|
|
|
|
if (pUser != nullptr)
|
|
bClassType = pUser->GetClassType();
|
|
|
|
LUA_RETURN(bClassType);
|
|
}
|
|
|
|
LUA_FUNCTION(CheckLevel)
|
|
{
|
|
CUser * pUser = Lua_GetUser();
|
|
uint8 bClassType = 0;
|
|
|
|
if (pUser != nullptr)
|
|
bClassType = pUser->GetLevel();
|
|
|
|
if(bClassType == g_pMain->MAXLVLINI && pUser->m_iExp == pUser->m_iMaxExp && pUser->GetRebLevel() < 10)
|
|
bClassType = 84;
|
|
|
|
|
|
LUA_RETURN(bClassType);
|
|
}
|
|
|
|
LUA_FUNCTION(CheckRebLevel)
|
|
{
|
|
CUser * pUser = Lua_GetUser();
|
|
uint8 bClassType = 0;
|
|
|
|
if (pUser != nullptr)
|
|
bClassType = pUser->GetRebLevel();
|
|
|
|
LUA_RETURN(bClassType);
|
|
}
|
|
|
|
LUA_FUNCTION(CheckSkillPoint)
|
|
{
|
|
CUser * pUser = Lua_GetUser();
|
|
uint8 bPoints = 0;
|
|
|
|
if (pUser != nullptr)
|
|
bPoints = pUser->GetSkillPoints((SkillPointCategory)LUA_ARG(uint32, 2));
|
|
|
|
LUA_RETURN(bPoints);
|
|
}
|
|
|
|
#define _LUA_WRAPPER_USER_FUNCTION(name, methodName) \
|
|
LUA_FUNCTION(name) { \
|
|
CUser * pUser = Lua_GetUser(); /* get the user from the stack using the specified user ID */ \
|
|
lua_tpush(L, pUser); /* push the user pointer onto the stack, as our code expects */ \
|
|
lua_remove(L, 1); /* removes the user ID from the stack */ \
|
|
lua_insert(L, 1); /* moves the user pointer to the start of the bottom of the stack where it's expected */ \
|
|
return CUser::Lua_ ## methodName(L); \
|
|
}
|
|
|
|
#define LUA_WRAPPER_USER_FUNCTION(name) \
|
|
_LUA_WRAPPER_USER_FUNCTION(name, name)
|
|
|
|
/* 1:1 mappings */
|
|
LUA_WRAPPER_USER_FUNCTION(ShowMap);
|
|
LUA_WRAPPER_USER_FUNCTION(SaveEvent);
|
|
LUA_WRAPPER_USER_FUNCTION(CheckGiveSlot);
|
|
LUA_WRAPPER_USER_FUNCTION(CheckExchange);
|
|
LUA_WRAPPER_USER_FUNCTION(RunExchange);
|
|
LUA_WRAPPER_USER_FUNCTION(RunSelectExchange);
|
|
LUA_WRAPPER_USER_FUNCTION(SearchQuest);
|
|
LUA_WRAPPER_USER_FUNCTION(NpcMsg);
|
|
LUA_WRAPPER_USER_FUNCTION(ShowEffect);
|
|
LUA_WRAPPER_USER_FUNCTION(ShowNpcEffect);
|
|
LUA_WRAPPER_USER_FUNCTION(GetName);
|
|
LUA_WRAPPER_USER_FUNCTION(GetAccountName);
|
|
LUA_WRAPPER_USER_FUNCTION(GetZoneID);
|
|
LUA_WRAPPER_USER_FUNCTION(GetX);
|
|
LUA_WRAPPER_USER_FUNCTION(GetY);
|
|
LUA_WRAPPER_USER_FUNCTION(GetZ);
|
|
LUA_WRAPPER_USER_FUNCTION(GetNation);
|
|
LUA_WRAPPER_USER_FUNCTION(GetLevel);
|
|
LUA_WRAPPER_USER_FUNCTION(GetRebLevel);
|
|
LUA_WRAPPER_USER_FUNCTION(GetClass);
|
|
LUA_WRAPPER_USER_FUNCTION(GetInnCoins);
|
|
LUA_WRAPPER_USER_FUNCTION(GetCoins);
|
|
LUA_WRAPPER_USER_FUNCTION(GetLoyalty);
|
|
LUA_WRAPPER_USER_FUNCTION(GetMonthlyLoyalty);
|
|
LUA_WRAPPER_USER_FUNCTION(GetManner);
|
|
LUA_WRAPPER_USER_FUNCTION(GetActiveQuestID);
|
|
LUA_WRAPPER_USER_FUNCTION(isWarrior);
|
|
LUA_WRAPPER_USER_FUNCTION(isRogue);
|
|
LUA_WRAPPER_USER_FUNCTION(isMage);
|
|
LUA_WRAPPER_USER_FUNCTION(isPriest);
|
|
LUA_WRAPPER_USER_FUNCTION(isInClan);
|
|
LUA_WRAPPER_USER_FUNCTION(isClanLeader);
|
|
LUA_WRAPPER_USER_FUNCTION(isInParty);
|
|
LUA_WRAPPER_USER_FUNCTION(isPartyLeader);
|
|
LUA_WRAPPER_USER_FUNCTION(isKing);
|
|
LUA_WRAPPER_USER_FUNCTION(hasCoins);
|
|
LUA_WRAPPER_USER_FUNCTION(hasInnCoins);
|
|
LUA_WRAPPER_USER_FUNCTION(hasLoyalty);
|
|
LUA_WRAPPER_USER_FUNCTION(hasMonthlyLoyalty);
|
|
LUA_WRAPPER_USER_FUNCTION(hasManner);
|
|
LUA_WRAPPER_USER_FUNCTION(SendBoard);
|
|
LUA_WRAPPER_USER_FUNCTION(SendReported);
|
|
LUA_WRAPPER_USER_FUNCTION(GiveItem);
|
|
LUA_WRAPPER_USER_FUNCTION(RobItem);
|
|
LUA_WRAPPER_USER_FUNCTION(CheckExistItem);
|
|
LUA_WRAPPER_USER_FUNCTION(GoldGain);
|
|
LUA_WRAPPER_USER_FUNCTION(GoldLose);
|
|
LUA_WRAPPER_USER_FUNCTION(ExpChange);
|
|
LUA_WRAPPER_USER_FUNCTION(GiveLoyalty);
|
|
LUA_WRAPPER_USER_FUNCTION(GiveCash);
|
|
LUA_WRAPPER_USER_FUNCTION(TempleEventJoin);
|
|
LUA_WRAPPER_USER_FUNCTION(RobLoyalty);
|
|
LUA_WRAPPER_USER_FUNCTION(NpcSay);
|
|
LUA_WRAPPER_USER_FUNCTION(CheckWeight);
|
|
LUA_WRAPPER_USER_FUNCTION(CheckExistEvent);
|
|
LUA_WRAPPER_USER_FUNCTION(isRoomForItem);
|
|
LUA_WRAPPER_USER_FUNCTION(SendNameChange);
|
|
LUA_WRAPPER_USER_FUNCTION(SendClanNameChange);
|
|
LUA_WRAPPER_USER_FUNCTION(ResetSkillPoints);
|
|
LUA_WRAPPER_USER_FUNCTION(ResetStatPoints);
|
|
LUA_WRAPPER_USER_FUNCTION(PromoteUserNovice);
|
|
LUA_WRAPPER_USER_FUNCTION(PromoteUser);
|
|
LUA_WRAPPER_USER_FUNCTION(RobAllItemParty);
|
|
LUA_WRAPPER_USER_FUNCTION(CheckWaiting);
|
|
LUA_WRAPPER_USER_FUNCTION(ZoneChange);
|
|
LUA_WRAPPER_USER_FUNCTION(ZoneChangeParty);
|
|
LUA_WRAPPER_USER_FUNCTION(ZoneChangeClan);
|
|
LUA_WRAPPER_USER_FUNCTION(KissUser);
|
|
LUA_WRAPPER_USER_FUNCTION(ChangeManner);
|
|
LUA_WRAPPER_USER_FUNCTION(PromoteClan);
|
|
LUA_WRAPPER_USER_FUNCTION(RobClanPoint);
|
|
LUA_WRAPPER_USER_FUNCTION(RequestPersonalRankReward);
|
|
LUA_WRAPPER_USER_FUNCTION(RequestReward);
|
|
LUA_WRAPPER_USER_FUNCTION(RunCountExchange);
|
|
LUA_WRAPPER_USER_FUNCTION(GetMaxExchange);
|
|
LUA_WRAPPER_USER_FUNCTION(GetUserDailyOp);
|
|
LUA_WRAPPER_USER_FUNCTION(CountMonsterQuestSub);
|
|
LUA_WRAPPER_USER_FUNCTION(CountMonsterQuestMain);
|
|
LUA_WRAPPER_USER_FUNCTION(GetEventTrigger);
|
|
LUA_WRAPPER_USER_FUNCTION(GetPremium);
|
|
LUA_WRAPPER_USER_FUNCTION(CheckMiddleStatueCapture);
|
|
LUA_WRAPPER_USER_FUNCTION(MoveMiddleStatue);
|
|
LUA_WRAPPER_USER_FUNCTION(LevelChange);
|
|
LUA_WRAPPER_USER_FUNCTION(GivePremium);
|
|
LUA_WRAPPER_USER_FUNCTION(GiveKnightCash);
|
|
LUA_WRAPPER_USER_FUNCTION(GetPVPMonumentNation);
|
|
LUA_WRAPPER_USER_FUNCTION(SendNationChange);
|
|
LUA_WRAPPER_USER_FUNCTION(GetRace);
|
|
LUA_WRAPPER_USER_FUNCTION(JobChange);
|
|
|
|
/* method aliases */
|
|
_LUA_WRAPPER_USER_FUNCTION(CheckClanGrade, GetClanGrade);
|
|
_LUA_WRAPPER_USER_FUNCTION(CheckClanPoint, GetClanPoint);
|
|
_LUA_WRAPPER_USER_FUNCTION(CheckLoyalty, GetLoyalty);
|
|
_LUA_WRAPPER_USER_FUNCTION(CheckKnight, GetClanRank);
|
|
_LUA_WRAPPER_USER_FUNCTION(CheckStatPoint, GetStat);
|
|
_LUA_WRAPPER_USER_FUNCTION(CheckWarVictory, GetWarVictory);
|
|
_LUA_WRAPPER_USER_FUNCTION(CheckBeefRoastVictory, GetBeefRoastVictory);
|
|
_LUA_WRAPPER_USER_FUNCTION(PartyCountMembers, GetPartyMemberAmount);
|
|
_LUA_WRAPPER_USER_FUNCTION(ExistMonsterQuestSub, GetActiveQuestID);
|
|
_LUA_WRAPPER_USER_FUNCTION(PromoteKnight, PromoteClan);
|
|
_LUA_WRAPPER_USER_FUNCTION(SendStatSkillDistribute, SendStatSkillDistribute);
|
|
_LUA_WRAPPER_USER_FUNCTION(SendRepurchase, SendRepurchase);
|
|
_LUA_WRAPPER_USER_FUNCTION(SendPetUpgrade, SendPetUpgrade);
|
|
_LUA_WRAPPER_USER_FUNCTION(CheckMonsterChallengeTime, GetMonsterChallengeTime);
|
|
_LUA_WRAPPER_USER_FUNCTION(CheckMonsterChallengeUserCount,GetMonsterChallengeUserCount);
|
|
_LUA_WRAPPER_USER_FUNCTION(CheckEventZoneTime, GetEventZoneTime);
|
|
_LUA_WRAPPER_USER_FUNCTION(CheckEventZoneUserCount,GetEventZoneUserCount);
|
|
|
|
LUA_FUNCTION(SelectMsg)
|
|
{
|
|
CUser * pUser = Lua_GetUser();
|
|
if (pUser == nullptr)
|
|
return LUA_NO_RESULTS;
|
|
|
|
uint32 arg = 2; // start from after the user instance.
|
|
int32 menuButtonText[MAX_MESSAGE_EVENT],
|
|
menuButtonEvents[MAX_MESSAGE_EVENT];
|
|
uint8 bFlag = LUA_ARG(uint8, arg++);
|
|
int32 nQuestID = LUA_ARG_OPTIONAL(int32, -1, arg++);
|
|
int32 menuHeaderText = LUA_ARG(int32, arg++);
|
|
arg++; // skip the NPC ID
|
|
foreach_array(i, menuButtonText)
|
|
{
|
|
menuButtonText[i] = LUA_ARG_OPTIONAL(int32, -1, arg++);
|
|
menuButtonEvents[i] = LUA_ARG_OPTIONAL(int32, -1, arg++);
|
|
}
|
|
|
|
LUA_NO_RETURN(pUser->SelectMsg(bFlag, nQuestID, menuHeaderText, menuButtonText, menuButtonEvents));
|
|
}
|
|
|
|
LUA_FUNCTION(CastSkill)
|
|
{
|
|
CUser * pUser = Lua_GetUser();
|
|
bool bResult = false;
|
|
if (pUser != nullptr)
|
|
{
|
|
CNpc * pNpc = g_pMain->GetNpcPtr(pUser->m_sEventNid);
|
|
if (pNpc != nullptr)
|
|
{
|
|
bResult = pNpc->CastSkill(
|
|
reinterpret_cast<Unit *>(pUser),
|
|
LUA_ARG(uint32, 2)
|
|
);
|
|
}
|
|
}
|
|
return bResult;
|
|
}
|
|
|
|
LUA_FUNCTION(RollDice) {
|
|
LUA_RETURN(myrand(0, LUA_ARG(uint16, 2)));
|
|
}
|