slaw
Software Developer
These functions I made for TFS, but it should also work for any NOT outdated source ; o
getPlayerParty(cid)
+
getPartyMembers(partyId (leaderCid))
luascript.cpp After: (it really not important where, but somewhere we must place this code :mellow
Add:
After:
Add:
luascript.h
After:
Add:
party.h
After:
Add:
Also i made next function to check if player A is in party with player B.
functions.lua:
Example 1: (getPlayerParty usage)
Example 2: (getPartyMembers)
Im not sure how with TAGS, but on TRUNK it will work.
getPlayerParty(cid)
+
getPartyMembers(partyId (leaderCid))
luascript.cpp After: (it really not important where, but somewhere we must place this code :mellow
PHP:
//getMonsterTargetList(cid)
lua_register(m_luaState, "getMonsterTargetList", LuaScriptInterface::luaGetMonsterTargetList);
Add:
PHP:
//getPlayerParty(cid)
lua_register(m_luaState, "getPlayerParty", LuaScriptInterface::luaGetPlayerParty);
//getPartyMembers(partyId (leaderCid))
lua_register(m_luaState, "getPartyMembers", LuaScriptInterface::luaGetPartyMembers);
After:
PHP:
int32_t LuaScriptInterface::luaGetMonsterFriendList(lua_State* L)
PHP:
int32_t LuaScriptInterface::luaGetPlayerParty(lua_State* L)
{
//getPlayerParty(cid)
uint32_t cid = popNumber(L);
ScriptEnviroment* env = getScriptEnv();
Player* player = env->getPlayerByUID(cid);
if(player)
{
Party* party = player->getParty();
if(party)
{
uint32_t cid = env->addThing(party->getLeader());
lua_pushnumber(L, cid);
}
else
lua_pushnumber(L, LUA_FALSE);
}
else
{
reportErrorFunc(getErrorDesc(LUA_ERROR_PLAYER_NOT_FOUND));
lua_pushboolean(L, false);
}
return true;
}
int32_t LuaScriptInterface::luaGetPartyMembers(lua_State* L)
{
//getPartyMembers(leaderId) // leaderId = partyId
uint32_t leaderCid = popNumber(L);
ScriptEnviroment* env = getScriptEnv();
Player* player = env->getPlayerByUID(leaderCid);
if(player)
{
Party* party = player->getParty();
if(party)
{
PlayerVector memberList = party->getMembers();
if(!memberList.empty())
{
lua_newtable(L);
for(uint16_t i = 0; i < memberList.size(); ++i)
{
uint32_t cid = env->addThing(memberList[i]);
lua_pushnumber(L, ++i);
lua_pushnumber(L, cid);
lua_settable(L, -3);
}
}
else
lua_pushnumber(L, LUA_FALSE);
}
else
lua_pushnumber(L, LUA_FALSE);
}
else
lua_pushnumber(L, LUA_FALSE);
return 1;
}
luascript.h
After:
PHP:
static int32_t luaGetMonsterFriendList(lua_State* L);
PHP:
static int32_t luaGetPlayerParty(lua_State* L);
static int32_t luaGetPartyMembers(lua_State* L);
party.h
After:
PHP:
bool isPlayerInvited(const Player* player) const;
PHP:
PlayerVector getMembers() {return memberList;}
Also i made next function to check if player A is in party with player B.
functions.lua:
PHP:
function isPlayerInParty(cid, leaderCid)
if getPlayerParty(cid) ~= FALSE then
if getPlayerParty(cid) == getPlayerParty(leaderCid) then
return TRUE
end
end
return FALSE
end
Example 1: (getPlayerParty usage)
PHP:
cidTwo = getPlayerByName("Knightos")
if getPlayerParty(cid) == getPlayerParty(cidTwo) then
doPlayerSendCancel(cid, "Yes, these player are in one party :)")
elseif getPlayerParty(cid) ~= FALSE then
doPlayerSendCancel(cid, "No, player one is without party.")
elseif getPlayerParty(cidTwo) ~= FALSE then
doPlayerSendCancel(cid, "No, player two is without party.")
end]]--
Example 2: (getPartyMembers)
PHP:
membersList = getPartyMembers(cid)
if membersList ~= FALSE then
for i, _cid in pairs(membersList) do
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getCreatureName(_cid))
end
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "There is no PARTY!")
end
Im not sure how with TAGS, but on TRUNK it will work.
Last edited: