Ir para conteúdo

luanluciano93

Héroi
  • Registro em

  • Última visita

Tudo que luanluciano93 postou

  1. Você tem que coloca-lo na pasta script pq é um revscript.
  2. local addOutfit = Action() function addOutfit.onUse(player, item, fromPosition, target, toPosition, isHotkey) player:addOutfitAddon(430, 1) player:addOutfitAddon(431, 2) player:say("You gained a mont x.", TALKTYPE_MONSTER_SAY, false, player) item:remove(1) return true end addOutfit:id(9999) addOutfit:register()
  3. Muito bom, parabéns!
  4. Nova página de addons ...
  5. Já fiz isso uma vez para um cliente, usei storages, bem mais simples. Coloque para que o shop dê o storage e coloque uma verificação onLogin para ganhar a vocação se tiver a storage.
  6. @wizinx além da alteração que citei acima, mude também isso: -- Outfit bonus local bonusCondition = getBonusCondition(player:getOutfit().lookType) if bonusCondition then player:addCondition(bonusCondition) end Por isso: -- Outfit bonus if player:hasOutfit(player:getOutfit().lookType, 3) then local bonusCondition = getBonusCondition(player:getOutfit().lookType) if bonusCondition then player:addCondition(bonusCondition) end end
  7. Altere essa função: function Creature:onChangeOutfit(outfit) if not self:isPlayer() then return true end local previousBonusCondition = getBonusCondition(self:getOutfit().lookType) local newBonusCondition = getBonusCondition(outfit.lookType) if previousBonusCondition then self:removeCondition(CONDITION_ATTRIBUTES, CONDITIONID_DEFAULT, previousBonusCondition:getSubId()) end if newBonusCondition then self:addCondition(newBonusCondition) end return true end Deixando ela assim: function Creature:onChangeOutfit(outfit) if not self:isPlayer() then return true end if self:hasOutfit(self:getOutfit().lookType, 3) then local previousBonusCondition = getBonusCondition(self:getOutfit().lookType) local newBonusCondition = getBonusCondition(outfit.lookType) if previousBonusCondition then self:removeCondition(CONDITION_ATTRIBUTES, CONDITIONID_DEFAULT, previousBonusCondition:getSubId()) end if newBonusCondition then self:addCondition(newBonusCondition) end end return true end
  8. não entendi Nova página dos personagens ...
  9. @Gabrieldsadaxas não tenho e como não sou adepto pelo uso do 0.4 então não irei fazer. Tem um membro de outro fórum que assim que lançar o TFS 1.4 ele irá refaze-lo para a versão 8.60. Irei criar uma campanha no fórum sobre a atualização geral ... pessoal usa 0.4 tendo o 1.4, seria a mesma coisa que escolher um fusca tendo como alternativa escolher uma BMW.
  10. Este script realiza limpezas na database toda vez que o servidor é iniciado, com o intuito principal de não sobrecarrega-lá. Ele funciona conforme a configuração: - Deletando personagens inativos há X meses. - Deletando contas que estão vazias (que não tem personagens criados) há X meses. - Deixando as casas livres caso o seu dono não entre no jogo por mais de X dias. - Deletando os invites de casas feitos por ex-moradores caso a casa não tenha dono. - Deletando guilds que foram criadas há X dias e que tem menos de Y membros. Crédito: luanluciano93, Leu e Cjaker. -- <globalevent type="startup" name="CleanDatabase" script="cleanDatabase.lua" /> --[[ Este script realiza limpezas na database toda vez que o servidor é iniciado, com o intuito principal de não sobrecarrega-lá. Ele funciona conforme a configuração: - Deletando personagens inativos há X meses. - Deletando contas que estão vazias (que não tem personagens criados) há X meses. - Deixando as casas livres caso o seu dono não entre no jogo por mais de X dias. - Deletando os invites de casas feitos por ex-moradores caso a casa não tenha dono. - Deletando guilds que foram criadas há X dias e que tem menos de Y membros. Crédito: luanluciano93, Leu e Cjaker. ]]-- local inactiveMonthsToDeleteCharacter = 1 -- quantos meses o player precisa ficar inativo para ser deletado. local emptyAccountMonths = 1 -- quantos meses uma conta precisa ficar sem nenhum character criado para ser deletada. local inactiveDaysToCleanHouse = 7 -- quantos dias o player precisa ficar inativo para perder a house. local inactiveDaysToCleanGuildWithFewPlayers = 10 -- quantos dias após a criação da guild irá verificar a quantidade mínima de players. local minimumGuildMembers = 5 -- quantidade minima de membros para a guild não entrar na verificação. local function executeDatabase(fromClause) local totalClear = 0 local resultId = db.storeQuery("SELECT COUNT(*) AS `count` FROM ".. fromClause) if resultId ~= false then totalClear = result.getNumber(resultId, 'count') result.free(resultId) if totalClear > 0 then db.query("DELETE FROM ".. fromClause) end end return totalClear end local function doCheckInactivePlayer() -- deleta automaticamente o dados das tabelas "houses, player_items, player_depotitems, player_deaths, guilds, player_storage" local timeStamp = os.time() - (86400 * (inactiveMonthsToDeleteCharacter * 30)) local fromClause = "`players` WHERE `group_id` = 1 AND lastlogin <= ".. timeStamp return executeDatabase(fromClause) end local function doCheckEmptyAccounts() -- deleta automaticamente o dados das tabelas "player_viplist" local timeStamp = os.time() - (86400 * (emptyAccountMonths * 30)) local fromClause = "`accounts` WHERE `accounts`.`creation` <= ".. timeStamp .." AND NOT EXISTS (SELECT `id` FROM `players` WHERE `accounts`.`id` = `players`.`account_id`)" return executeDatabase(fromClause) end local function doCheckInactiveHouses() local timeStamp = os.time() - (86400 * (inactiveDaysToCleanHouse * 24)) local totalClear = 0 local resultId = db.storeQuery("SELECT `houses`.`owner`, `houses`.`id` FROM `houses`, `players` WHERE `houses`.`owner` != 0 AND `houses`.`owner` = `players`.`id` AND `players`.`lastlogin` <= " .. timeStamp .. ";") if resultId ~= false then repeat local owner = result.getNumber(resultId, "owner") local houseId = result.getNumber(resultId, "id") local house = House(houseId) if house and (owner > 0) then house:setOwnerGuid(0) totalClear = totalClear + 1 end until not result.next(resultId) result.free(resultId) end return totalClear end local function doCheckInactiveHouseLists() -- Apagando "house_lists" do player local fromClause = "`house_lists` WHERE EXISTS (SELECT `id` FROM `houses` WHERE `house_lists`.`house_id` = `houses`.`id` AND `houses`.`owner` = 0)" return executeDatabase(fromClause) end local function doCheckInactiveGuilds() -- deleta automaticamente o dados das tabelas "guild_invites, guild_membership, guild_ranks" local timeStamp = os.time() - (86400 * (inactiveDaysToCleanGuildWithFewPlayers * 24)) local fromClause = "`guilds` WHERE `guilds`.`creationdata` <= ".. timeStamp .." AND (SELECT COUNT(*) from `guild_membership` WHERE `guild_membership`.`guild_id` = `guilds`.`id`) < " .. minimumGuildMembers .. "" return executeDatabase(fromClause) end -- Executando as funções de limpeza ao iniciar o servidor. function onStartup() print("[[ DATABASE CLEAN ]]") local inactivePlayer = doCheckInactivePlayer() if inactivePlayer > 0 then print(">> ".. inactivePlayer .. " deleted inactive players.") end local emptyAccounts = doCheckEmptyAccounts() if emptyAccounts > 0 then print(">> ".. emptyAccounts .." empty deleted accounts.") end local inactiveHouses = doCheckInactiveHouses() if inactiveHouses > 0 then print(">> ".. inactiveHouses .." houses that were expropriated.") end local inactiveHouseLists = doCheckInactiveHouseLists() if inactiveHouseLists > 0 then print(">> ".. inactiveHouseLists .." deleted inactive house lists.") end local inactiveGuilds = doCheckInactiveGuilds() if inactiveGuilds > 0 then print(">> ".. inactiveGuilds .." deleted inactive guilds.") end addEvent(saveServer, 10000) end
  11. Estava olhando um tópicos bem velhos aqui e me deparei com alguns gifs do membro Sr. Samuel, quem lembra dele? Era só risada rsrsr
  12. Dá uma olhada nesse arquivo meu, fiz um sistema para isso: https://github.com/luanluciano93/styller/blob/master/data/lib/custom/battlefield.lua Tente entender a lógica: https://github.com/luanluciano93/styller/blob/master/data/lib/custom/battlefield.lua#L29-L31 Basicamente você salva sempre o último player que entra no TP em uma storage global, e quando for iniciar o evento verifica o módulo da divisão do total de players por 2, e o resultado for impar, então retira o último jogador.
  13. mude: function onPrepareDeath(player, killer) para: function onDeath(player, corpse, killer, mostDamageKiller, lastHitUnjustified, mostDamageUnjustified)
  14. luanluciano93 postou uma resposta no tópico em Suporte & Pedidos
    Acompanhando ...
  15. @Nolis obrigado pelo feedback. Por enquanto será para uso pessoal. Obrigado pelos comentários e críticas, irei analisar cada uma e procurar melhora-las. Abraço! @Rutserzim obrigado pelo feedback. Pretendo tornar ele responsivo em breve.
  16. Fiz um layout para um projeto que estou desenvolvendo ... usei como base o znote que é o melhor ACC na minha opinião. https://www,newstyller.com Gostaria de ideias, críticas, opiniões ...
  17. CREATE TABLE `player_statements` ( `id` int(11) NOT NULL AUTO_INCREMENT, `player_id` int(11) NOT NULL, `channel_id` int(11) NOT NULL DEFAULT '0', `text` varchar(255) NOT NULL, `date` bigint(20) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `player_id` (`player_id`), KEY `channel_id` (`channel_id`), CONSTRAINT `player_statements_ibfk_1` FOREIGN KEY (`player_id`) REFERENCES `players` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  18. -- <event type="login" name="LoginTP" script="tp_morte.lua" /> -- <event type="preparedeath" name="DeadTP" script="tp_morte.lua"/> function onLogin(player) player:registerEvent("DeadTP") return true end function onPrepareDeath(player, killer) -- teleportando o player para o templo player:teleportTo(player:getTown():getTemplePosition()) -- enchenco life e mana player:addHealth(player:getMaxHealth()) player:addMana(player:getMaxMana()) -- criando efeito de teleport player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) return false end
  19. crie uma nova classe no CSS e implemente no TR específico. Por exemplo: .table-teste1 table tr td { e .table-teste2 table tr td { e <tr class="'.($count % 2 ? 'table-teste1' : 'table-teste2').';" >
  20. Deixa o caminho do ot com a ultima barra invertida C:\Users\Client4\Desktop\Baiak 8.60\home\otserver/
  21. @wottendj quando a função esta puxando o valor da boss.storage ele deve retornar um valor inteiro (números inteiros) mas ele esta retornando um boleano (verdadeiro ou falso), por isso esta dando o erro. De alguma forma você salvou um boleano na storage, no sistema não acontece isso, portanto você deve estar usando o mesmo número de storage em seu servidor para outras coisas (é a unica coisa possível que consigo pensar).
  22. o que tem na linha 3 e na 4 do config.php?
  23. CREATE TABLE IF NOT EXISTS `player_killers` ( `kill_id` int(11) NOT NULL, `player_id` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Informação Importante

Confirmação de Termo