n faltou dizer exatamente aonde por a ultima parte ali? ;x achu q pulasse uma coisa kk'
e seria bom da um exemplo de como usar.. e mostrar como fica a tag tb xD
de resto, ta brincando bastante nas sources heim? kk'
Por caotic, 01 de mar. de 2014 em Linguagens de Programação
info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

n faltou dizer exatamente aonde por a ultima parte ali? ;x achu q pulasse uma coisa kk'
e seria bom da um exemplo de como usar.. e mostrar como fica a tag tb xD
de resto, ta brincando bastante nas sources heim? kk'
info
Grupo: Infante
Registrado: 04/03/11
Posts: 1.6k
Reputação: +393
Char no Tibia: No Have

n faltou dizer exatamente aonde por a ultima parte ali? ;x achu q pulasse uma coisa kk'
e seria bom da um exemplo de como usar.. e mostrar como fica a tag tb xD
de resto, ta brincando bastante nas sources heim? kk'
Porque o ipb sempre retira uma parte do meu post ehaueh'.
Exemplo:
Bloqueia o player de abrir um container especifico.
function onOpenContainer(cid, item)
local container = {1212, 2555, 2922, 2292}
local deny = true
for i=1, #container do
if item.itemid == container[i] then
deny = false
end
end
return deny
end
Editado Março 1 por caotic
info
Grupo: Visconde
Registrado: 26/12/07
Posts: 272
Reputação: +31
Char no Tibia: [ADM]Sony

Achei maneiro, com isso da pra fazer coisas muito boas, tipo backpack por vocation, entre mts coisas..
da pra faze, por acaso, um @autoloot PXG system?
nomeando os itens para n usar scanContainer()* (n lembro o nome da func)...
o Smix fez um parecido, mais pelo que testei ele só puxa o primeiro item o "for" n funcionando com a programação q ele fez, e ele tbm fez pela source assim ñ usando a function scanContainer()...
consegui consertar usando a function q ja tem no server, mais fico muito limitado com bugg e muito lagg... por isso removi do meu server... mais tem como usar essa programação?
info
Grupo: Infante
Registrado: 04/03/11
Posts: 1.6k
Reputação: +393
Char no Tibia: No Have

da pra faze, por acaso, um @autoloot PXG system?
nomeando os itens para n usar scanContainer()* (n lembro o nome da func)...
o Smix fez um parecido, mais pelo que testei ele só puxa o primeiro item o "for" n funcionando com a programação q ele fez, e ele tbm fez pela source assim ñ usando a function scanContainer()...
consegui consertar usando a function q ja tem no server, mais fico muito limitado com bugg e muito lagg... por isso removi do meu server... mais tem como usar essa programação?
da sim e so verificar se um corpse e percorrer os itens.
Editado Março 18 por caotic
info
Grupo: Visconde
Registrado: 04/11/12
Posts: 464
Reputação: +90
Gênero: Masculino
Char no Tibia: Lysty Of Death

da para fazer as locker transformar os icons? (icon system poketibia)
info
Grupo: Infante
Registrado: 04/03/11
Posts: 1.6k
Reputação: +393
Char no Tibia: No Have
Eae galera xtibiaanna!
Desenvolvi o evento OpenContainer para sair da configs do actions afinal e necessario especificar o id do item e isto limita muito,
Vá em creatureevents.cpp e procure
E coloque embaixo:
EMBAIXO DA FUNÇÃO
Coloque:
uint32_t CreatureEvent::executeOpenContainer(Player* player, Container* container) { //onOpenContainer(cid, container) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { std::stringstream scriptstream; scriptstream << "local cid = " << env->addThing(player) << std::endl; env->streamThing(scriptstream, "item", container, env->addThing(container)); scriptstream << m_scriptData; bool result = true; if(m_interface->loadBuffer(scriptstream.str())) { lua_State* L = m_interface->getState(); result = m_interface->getGlobalBool(L, "_result", true); } m_interface->releaseEnv(); return result; } else { #ifdef __DEBUG_LUASCRIPTS__ char desc[35]; sprintf(desc, "%s", player->getName().c_str()); env->setEventDesc(desc); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(player->getPosition()); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(player)); LuaScriptInterface::pushThing(L, container, env->addThing(container)); bool result = m_interface->callFunction(2); m_interface->releaseEnv(); return result; } } else { std::cout << "[Error - CreatureEvent::executeThink] Call stack overflow." << std::endl; return 0; } }Agora em creatureevents.h procure:
Embaixo coloque:
Procure em creatureevents.h:
Coloque embaixo:
Vá em action.cpp e procure:
if(Container* container = item->getContainer()) { if(container->getCorpseOwner() && !player->canOpenCorpse(container->getCorpseOwner()) && g_config.getBool(ConfigManager::CHECK_CORPSE_OWNER)) return RET_YOUARENOTTHEOWNER;Coloque emabaixo:
bool deny = false; CreatureEventList talkEvents = player->getCreatureEvents(CREATURE_EVENT_OPENCONTAINER); for(CreatureEventList::iterator it = talkEvents.begin(); it != talkEvents.end(); ++it) { if(!(*it)->executeOpenContainer(player, container)) { deny = true; } }Editado Março 1 por caotic