forked from ElunaLuaEngine/Eluna
-
Notifications
You must be signed in to change notification settings - Fork 126
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: add PLAYER_EVENT_ON_GROUP_ROLL_REWARD_ITEM and roll methods (#119)
- Loading branch information
1 parent
1407daa
commit a689c04
Showing
9 changed files
with
257 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,212 @@ | ||
/* | ||
* Copyright (C) 2010 - 2016 Eluna Lua Engine <http://emudevs.com/> | ||
* This program is free software licensed under GPL version 3 | ||
* Please see the included DOCS/LICENSE.md for more information | ||
*/ | ||
|
||
#ifndef ROLLMETHODS_H | ||
#define ROLLMETHODS_H | ||
|
||
#include "Group.h" | ||
|
||
namespace LuaRoll | ||
{ | ||
/** | ||
* Returns the rolled [Item]'s GUID. | ||
* | ||
* @return ObjectGuid guid | ||
*/ | ||
int GetItemGUID(lua_State* L, Roll* roll) | ||
{ | ||
Eluna::Push(L, roll->itemGUID.GetCounter()); | ||
return 1; | ||
} | ||
|
||
/** | ||
* Returns the rolled [Item]'s entry. | ||
* | ||
* @return uint32 entry | ||
*/ | ||
int GetItemId(lua_State* L, Roll* roll) | ||
{ | ||
Eluna::Push(L, roll->itemid); | ||
return 1; | ||
} | ||
|
||
/** | ||
* Returns the rolled [Item]'s random property ID. | ||
* | ||
* @return int32 randomPropId | ||
*/ | ||
int GetItemRandomPropId(lua_State* L, Roll* roll) | ||
{ | ||
Eluna::Push(L, roll->itemRandomPropId); | ||
return 1; | ||
} | ||
|
||
/** | ||
* Returns the rolled [Item]'s random suffix ID. | ||
* | ||
* @return uint32 randomSuffix | ||
*/ | ||
int GetItemRandomSuffix(lua_State* L, Roll* roll) | ||
{ | ||
Eluna::Push(L, roll->itemRandomSuffix); | ||
return 1; | ||
} | ||
|
||
/** | ||
* Returns the rolled [Item]'s count. | ||
* | ||
* @return uint8 count | ||
*/ | ||
int GetItemCount(lua_State* L, Roll* roll) | ||
{ | ||
Eluna::Push(L, roll->itemCount); | ||
return 1; | ||
} | ||
|
||
/** | ||
* Returns the vote type for a [Player] on this [Roll]. | ||
* See [Roll:GetPlayerVoteGUIDs] to obtain the GUIDs of the [Player]s who rolled. | ||
* | ||
* <pre> | ||
* enum RollVote | ||
* { | ||
* PASS = 0, | ||
* NEED = 1, | ||
* GREED = 2, | ||
* DISENCHANT = 3, | ||
* NOT_EMITED_YET = 4, | ||
* NOT_VALID = 5 | ||
* }; | ||
* </pre> | ||
* | ||
* @param ObjectGuid guid | ||
* @return [RollVote] vote | ||
*/ | ||
int GetPlayerVote(lua_State* L, Roll* roll) | ||
{ | ||
ObjectGuid guid = Eluna::CHECKVAL<ObjectGuid>(L, 2); | ||
|
||
bool found = false; | ||
for (std::pair<const ObjectGuid, RollVote>& pair : roll->playerVote) | ||
{ | ||
if (pair.first == guid) | ||
{ | ||
Eluna::Push(L, pair.second); | ||
found = true; | ||
} | ||
} | ||
|
||
if (!found) | ||
{ | ||
Eluna::Push(L); | ||
} | ||
|
||
return 1; | ||
} | ||
|
||
/** | ||
* Returns the GUIDs of the [Player]s who rolled. | ||
* See [Roll:GetPlayerVote] to obtain the vote type of a [Player]. | ||
* | ||
* @return table guids | ||
*/ | ||
int GetPlayerVoteGUIDs(lua_State* L, Roll* roll) | ||
{ | ||
lua_newtable(L); | ||
int table = lua_gettop(L); | ||
uint32 i = 1; | ||
for (std::pair<const ObjectGuid, RollVote>& pair : roll->playerVote) | ||
{ | ||
Eluna::Push(L, pair.first); | ||
lua_rawseti(L, table, i); | ||
++i; | ||
} | ||
|
||
lua_settop(L, table); // push table to top of stack | ||
return 1; | ||
} | ||
|
||
/** | ||
* Returns the total number of players who rolled. | ||
* | ||
* @return uint8 playersCount | ||
*/ | ||
int GetTotalPlayersRolling(lua_State* L, Roll* roll) | ||
{ | ||
Eluna::Push(L, roll->totalPlayersRolling); | ||
return 1; | ||
} | ||
|
||
/** | ||
* Returns the total number of players who rolled need. | ||
* | ||
* @return uint8 playersCount | ||
*/ | ||
int GetTotalNeed(lua_State* L, Roll* roll) | ||
{ | ||
Eluna::Push(L, roll->totalNeed); | ||
return 1; | ||
} | ||
|
||
/** | ||
* Returns the total number of players who rolled greed. | ||
* | ||
* @return uint8 playersCount | ||
*/ | ||
int GetTotalGreed(lua_State* L, Roll* roll) | ||
{ | ||
Eluna::Push(L, roll->totalGreed); | ||
return 1; | ||
} | ||
|
||
/** | ||
* Returns the total number of players who passed. | ||
* | ||
* @return uint8 playersCount | ||
*/ | ||
int GetTotalPass(lua_State* L, Roll* roll) | ||
{ | ||
Eluna::Push(L, roll->totalPass); | ||
return 1; | ||
} | ||
|
||
/** | ||
* Returns the rolled [Item]'s slot in the loot window. | ||
* | ||
* @return uint8 slot | ||
*/ | ||
int GetItemSlot(lua_State* L, Roll* roll) | ||
{ | ||
Eluna::Push(L, roll->itemSlot); | ||
return 1; | ||
} | ||
|
||
/** | ||
* Returns the mask applied to this [Roll]. | ||
* | ||
* <pre> | ||
* enum RollMask | ||
* { | ||
* ROLL_FLAG_TYPE_PASS = 0x01, | ||
* ROLL_FLAG_TYPE_NEED = 0x02, | ||
* ROLL_FLAG_TYPE_GREED = 0x04, | ||
* ROLL_FLAG_TYPE_DISENCHANT = 0x08, | ||
* | ||
* ROLL_ALL_TYPE_NO_DISENCHANT = 0x07, | ||
* ROLL_ALL_TYPE_MASK = 0x0F | ||
* }; | ||
* </pre> | ||
* | ||
* @return [RollMask] rollMask | ||
*/ | ||
int GetRollVoteMask(lua_State* L, Roll* roll) | ||
{ | ||
Eluna::Push(L, roll->rollVoteMask); | ||
return 1; | ||
} | ||
} | ||
|
||
#endif |