ST

hasSpaceInContainer c++

Por Strogman, 23 de jan. de 2017 em Linguagens de Programação

code c++
7
1.3k
StrogmanS
23 de janeiro de 2017 às 10:07

hasSpaceInContainer é uma função que retorna true ou false, ela checa se tem algum espaço livre na mochila, se você tiver carregando uma mochila dentro de uma mochila ela checa a primeira mochila e se não tiver espaço ela checa a outra mochila.

 

em game.cpp em baixo de:

void GameshowHotkeyUseMessage(Player* player, Item* item){	int32_t subType = -1;	if(item->hasSubType() && !item->hasCharges())		subType = item->getSubType();	const ItemType& it = Itemitems[item->getID()];	uint32_t count = player->__getItemTypeCount(item->getID(), subType, false);	char buffer[40 + it.name.size()];	if(count == 1)		sprintf(buffer, "Using the last %s...", it.name.c_str());	else		sprintf(buffer, "Using one of %d %s...", count, it.pluralName.c_str());}

 

adicione:

bool GamehasSpaceInContainer(Container* container){	if(container->size() < container->capacity())		return true;		for(int slot = 0; slot <= (container->size()-1); slot++)	{		Item* item = container->getItem(slot);		if(item->getContainer())		{			if(hasSpaceInContainer(item->getContainer()))				return true;			}		}		return false;}

em game.h em baixo de:

bool playerReceivePing(uint32_t playerId);

adicione:

bool hasSpaceInContainer(Container* container);

em luascript.cpp em baixo de:

int32_t LuaScriptInterfaceluaGetCreatureName(lua_State* L){	//getCreatureName(cid)	ScriptEnviroment* env = getEnv();	if(Creature* creature = env->getCreatureByUID(popNumber(L)))		lua_pushstring(L, creature->getName().c_str());	else	{		errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND));		lua_pushboolean(L, false);	}	return 1;}

adicione:

int32_t LuaScriptInterfaceluaHasSpaceInContainer(lua_State* L){	//hasSpaceInContainer(container)	ScriptEnviroment* env = getEnv();	Container* container = env->getContainerByUID(popNumber(L));	if(!container)	{		errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND));		lua_pushboolean(L, false);		return 1;	}		if(g_game.hasSpaceInContainer(container))		lua_pushboolean(L, true);	else		lua_pushboolean(L, false);    	return 1;}

em baixo de:
 

//getCreatureName(cid)lua_register(m_luaState, "getCreatureName", LuaScriptInterfaceluaGetCreatureName);

adicione:

//hasSpaceInContainer(container)lua_register(m_luaState, "hasSpaceInContainer", LuaScriptInterfaceluaHasSpaceInContainer);

em luascript.h em baixo de:

static int32_t luaGetCreatureName(lua_State* L);

adicione:

static int32_t luaHasSpaceInContainer(lua_State* L);

 

exemplo:
 

if hasSpaceInContainer(container) then    funcao()else   sendCancel(cid, "desculpe, voce nao tem espaço na mochila")end

 

DeadpoolD
23 de janeiro de 2017 às 19:41

Muito bom. Eu tenho uma função assim, mas foi feita em lua. rep+

rorixR
23 de janeiro de 2017 às 20:19

qual principal objetivo da funcao?

Luga03L
25 de janeiro de 2017 às 18:03

Ao invès de utiliza isso:

	if(g_game.hasSpaceInContainer(container))		lua_pushboolean(L, true);	else		lua_pushboolean(L, false);

Acho que daria para fazer assim:

lua_pushboolean(L, g_game.hasSpaceInContainer(container));

Só para economizar linha... Mas é besteira, o funcionamento é o mesmo :ok:

 

StrogmanS
25 de janeiro de 2017 às 18:13
1 minuto atrás, Drazyn disse:

Ao invès de utiliza isso:

	if(g_game.hasSpaceInContainer(container))		lua_pushboolean(L, true);	else		lua_pushboolean(L, false);

Acho que daria para fazer assim:

lua_pushboolean(L, g_game.hasSpaceInContainer(container));

Só para economizar linha... Mas é besteira, o funcionamento é o mesmo :ok:

 

verdade, na correria fazendo vários coisas ao mesmo tempo acabei usando else mesmo. costume e correria da nisso, ali no game da pra economizar também mas besteira linha num afeta nada. kkkk

JosegvbJ
29 de janeiro de 2017 às 15:46
Em 1/23/2017 at 18:19, rorix disse:

qual principal objetivo da funcao?

 

x2

DeadpoolD
29 de janeiro de 2017 às 15:47
Em 23/01/2017 at 20:19, rorix disse:

qual principal objetivo da funcao?

Eu ein...

"hasSpaceInContainer é uma função que retorna true ou false, ela checa se tem algum espaço livre na mochila, se você tiver carregando uma mochila dentro de uma mochila ela checa a primeira mochila e se não tiver espaço ela checa a outra mochila."