Postado Novembro 28, 2016 8 anos Olá, tem vários comandos !eject pelo fórum, porém nenhum dos que encontrei funcionou comigo, talvez pelo fato de eu usar SQLITE. Precisava muito desse comando no meu servidor, alguém possui um que funcione com SQLITE? Te ajudei? Clique em Gostei ! ²²²d¬¬b²²² "She's got a smile that it seems to me...." ♪♪
Postado Novembro 28, 2016 8 anos !eject no caso e para sair da house certo ?? vai em talkactions.xml e adicione isso la: <talkaction words="!eject" filter="word-spaced" event="script" value="eject.lua"/> e em talkactions/scripts crie um arquivo chamado eject.lua e adicione dentro: function onSay(cid, words, param, channel) local house = getHouseFromPos(getCreaturePosition(cid)) if(not house) then doPlayerSendCancel(cid, "You are not inside a house.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return false end local owner = getHouseInfo(house).owner if(owner ~= getPlayerGUID(cid) and (owner ~= getPlayerGuildId(cid) or getPlayerGuildLevel(cid) ~= GUILDLEVEL_LEADER)) then doPlayerSendCancel(cid, "You are not the owner of this house.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return false end setHouseOwner(house, 0) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_BLUE) return false end
Postado Novembro 28, 2016 8 anos Autor 28 minutos atrás, WhiteBubble disse: !eject no caso e para sair da house certo ?? vai em talkactions.xml e adicione isso la: <talkaction words="!eject" filter="word-spaced" event="script" value="eject.lua"/> e em talkactions/scripts crie um arquivo chamado eject.lua e adicione dentro: function onSay(cid, words, param, channel) local house = getHouseFromPos(getCreaturePosition(cid)) if(not house) then doPlayerSendCancel(cid, "You are not inside a house.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return false end local owner = getHouseInfo(house).owner if(owner ~= getPlayerGUID(cid) and (owner ~= getPlayerGuildId(cid) or getPlayerGuildLevel(cid) ~= GUILDLEVEL_LEADER)) then doPlayerSendCancel(cid, "You are not the owner of this house.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return false end setHouseOwner(house, 0) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_BLUE) return false end Não é isso amigo, !eject funciona assim: Um player encontra uma house já ocupada por outro player, vira para a porta e fala !eject Se o dono da house não loga a mais de 10 dias, os items dentro da mesma vão para o depot do atual dono da house, e a house se torna "À venda". Te ajudei? Clique em Gostei ! ²²²d¬¬b²²² "She's got a smile that it seems to me...." ♪♪
Postado Novembro 28, 2016 8 anos Agora, luangop disse: Não é isso amigo, !eject funciona assim: Um player encontra uma house já ocupada por outro player, vira para a porta e fala !eject Se o dono da house não loga a mais de 10 dias, os items dentro da mesma vão para o depot do atual dono da house, e a house se torna "À venda". Bom nisso não posso te ajudar, mas tenho um MOD parecido que o tanto de dias que esta configurado ele verifica as houses e automaticamente poe elas a venda sem o player precisar usar o eject. cri um arquivo com nome Clean Houses.xml em mods e adicione isso dentro: <?xml version="1.0" encoding="UTF-8"?> <mod name="Cleanhouses" version="1.03" author="nsanee" contact="tibiaking.com" enabled="yes"> <description> v.1.03 - Added 'onlyNonPremium' configurable. Removed modlib, since the script is run once anyway we don't need it loaded at all times. It shouldn't now stop execution when a house is nameless. v.1.02 - now uses only one sql query, removed multiworld configurable since it's not needed anymore v.1.01 - small fixes, optimized query + multiworld support. This mod will clean houses of inactive players and move their items to the depot. config explained: days - If the player hasn't logged in for this number of days his house will be freed. log - true/false, whether to enable logging of which houses have been cleaned. file - path to the log file, where logs will be stored. Ignored if 'log' set to false onlyNonPremium - if set to 'true', the script will clean only the houses of players who don't have any pacc days left. other notes: DO NOT remove doSaveServer() at the end, otherwise if your server happens to crash before the nearest server save you will regret it =) </description> <globalevent name="cleanhouses" type="start" event="buffer"><![CDATA[ local config = { days = 7, log = true, file = getDataDir() .. "/logs/cleanhouses.txt", onlyNonPremium = true } local ns_query =[[ SELECT houses.owner, houses.id as hid, houses.name as house_name ,players.name FROM houses LEFT JOIN players ON players.id=houses.owner LEFT JOIN accounts ON players.account_id=accounts.id WHERE players.lastlogin < (UNIX_TIMESTAMP() - ]] ..config.days.. [[*24*60*60) ]] ..(config.onlyNonPremium and ' AND accounts.premdays=0 ' or '')..[[ AND players.world_id =]] .. getConfigValue("worldId") local house = db.getResult(ns_query) local logs = " :: Houses cleaned:\n\n" if house:getID() ~= -1 then repeat logs = logs .. house:getDataString('house_name') ..", owned by " .. house:getDataString('name') .. "\n" setHouseOwner(house:getDataInt('hid'), 0) until not house:next() house:free() else logs = logs .. "There were no houses to clean." end if config.log then doWriteLogFile(config.file, logs) end addEvent(doSaveServer, 1000) ]]></globalevent> </mod> Em local config em days você coloca quantos dias offline vai ter que ficar para perder a house.
Postado Novembro 28, 2016 8 anos Autor 48 minutos atrás, WhiteBubble disse: Bom nisso não posso te ajudar, mas tenho um MOD parecido que o tanto de dias que esta configurado ele verifica as houses e automaticamente poe elas a venda sem o player precisar usar o eject. cri um arquivo com nome Clean Houses.xml em mods e adicione isso dentro: <?xml version="1.0" encoding="UTF-8"?> <mod name="Cleanhouses" version="1.03" author="nsanee" contact="tibiaking.com" enabled="yes"> <description> v.1.03 - Added 'onlyNonPremium' configurable. Removed modlib, since the script is run once anyway we don't need it loaded at all times. It shouldn't now stop execution when a house is nameless. v.1.02 - now uses only one sql query, removed multiworld configurable since it's not needed anymore v.1.01 - small fixes, optimized query + multiworld support. This mod will clean houses of inactive players and move their items to the depot. config explained: days - If the player hasn't logged in for this number of days his house will be freed. log - true/false, whether to enable logging of which houses have been cleaned. file - path to the log file, where logs will be stored. Ignored if 'log' set to false onlyNonPremium - if set to 'true', the script will clean only the houses of players who don't have any pacc days left. other notes: DO NOT remove doSaveServer() at the end, otherwise if your server happens to crash before the nearest server save you will regret it =) </description> <globalevent name="cleanhouses" type="start" event="buffer"><![CDATA[ local config = { days = 7, log = true, file = getDataDir() .. "/logs/cleanhouses.txt", onlyNonPremium = true } local ns_query =[[ SELECT houses.owner, houses.id as hid, houses.name as house_name ,players.name FROM houses LEFT JOIN players ON players.id=houses.owner LEFT JOIN accounts ON players.account_id=accounts.id WHERE players.lastlogin < (UNIX_TIMESTAMP() - ]] ..config.days.. [[*24*60*60) ]] ..(config.onlyNonPremium and ' AND accounts.premdays=0 ' or '')..[[ AND players.world_id =]] .. getConfigValue("worldId") local house = db.getResult(ns_query) local logs = " :: Houses cleaned:\n\n" if house:getID() ~= -1 then repeat logs = logs .. house:getDataString('house_name') ..", owned by " .. house:getDataString('name') .. "\n" setHouseOwner(house:getDataInt('hid'), 0) until not house:next() house:free() else logs = logs .. "There were no houses to clean." end if config.log then doWriteLogFile(config.file, logs) end addEvent(doSaveServer, 1000) ]]></globalevent> </mod> Em local config em days você coloca quantos dias offline vai ter que ficar para perder a house. Esse mod me retorna esse erro quando inicio o servidor: [28/11/2016 21:41:16] OTSYS_SQLITE3_PREPARE(): SQLITE ERROR: no such function: UNIX_TIMESTAMP ( SELECT houses.owner, houses.id as hid, houses.name as house_name ,players.name FROM houses [28/11/2016 21:41:16] LEFT JOIN players ON players.id=houses.owner [28/11/2016 21:41:16] LEFT JOIN accounts ON players.account_id=accounts.id [28/11/2016 21:41:16] WHERE players.lastlogin < (UNIX_TIMESTAMP() - 7*24*60*60) [28/11/2016 21:41:16] AND accounts.premdays=0 AND players.world_id =0) OBS: usando tfs 0.3.6 Te ajudei? Clique em Gostei ! ²²²d¬¬b²²² "She's got a smile that it seems to me...." ♪♪
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.