mkbrabsolute 134 Postado Junho 25, 2015 Share Postado Junho 25, 2015 Mudei e matei o monstro depois disso o server caiu. O Erro parou? no distro Link para o comentário Compartilhar em outros sites More sharing options...
GlobalCores 0 Postado Junho 25, 2015 Share Postado Junho 25, 2015 (editado) Dei uma editada la... pra evitar o floodar mais deu na mesma :\ [Warning - Event::checkScript] Can not load script: scripts/reward_chest.lua data/creaturescripts/scripts/reward_chest.lua:248: <eof> expected near 'end' Editado Junho 25, 2015 por GlobalCores Link para o comentário Compartilhar em outros sites More sharing options...
mkbrabsolute 134 Postado Junho 25, 2015 Share Postado Junho 25, 2015 Erro meu. Coloque: REWARD_CHEST = { BOSSES = {"Bibby Bloodbath", "Chizzoron the Distorter", "Ferumbras", "Furyosa", "Gaz'haragoth", "Ghazbaran", "Hirintror", "Jaul", "Mad Mage", "Mawhawk", "Morgaroth", "Obujos", "Ocyakao", "Omrafir", "Orshabaal", "Raging Mage", "Tanjis", "The Mutated Pumpkin", "The Pale Count", "The Welter", "Tyrn", "White Pale", "Zulazza the Corruptor", "Zushuka"}, LOOT = {}, DECAY = {}, DEPOT_ID = 99, CONTAINER = 21518, EXPIRE = 7*24*60*60, --days to erase stored rewards STORAGE = 18394, --player storage for chest exhaustion EXHAUST = 5*60, --time allowed to use again the chest } function table.find(t, value, sensitive) local sensitive = sensitive or true if(not sensitive and type(value) == 'string') then for i, v in pairs(t) do if(type(v) == 'string') then if(v:lower() == value:lower()) then return i end end end return nil end for i, v in pairs(t) do if(v == value) then return i end end return nil end function table.serialize(x, recur) local t = type(x) recur = recur or {} if(t == nil) then return "nil" elseif(t == "string") then return string.format("%q", x) elseif(t == "number") then return tostring(x) elseif(t == "boolean") then return x and "true" or "false" elseif(getmetatable(x)) then error("Can not serialize a table that has a metatable associated with it.") elseif(t == "table") then if(table.find(recur, x)) then error("Can not serialize recursive tables.") end table.insert(recur, x) local s = "{" for k, v in pairs(x) do s = s .. "[" .. table.serialize(k, recur) .. "]" .. " = " .. table.serialize(v, recur) .. ", " end return s:sub(0, s:len() - 2) .. "}" end error("Can not serialize value of type '" .. t .. "'.") end function table.unserialize(str) return loadstring('return ' .. str)() end function addContainerItems(container, items) for k, v in pairs(items) do if ItemType(k):isContainer() then local newBag = Container(doCreateItemEx(k, 1)) addContainerItems(newBag, v) container:addItemEx(newBag) else container:addItem(v[1], v[2]) end end end function MonsterType.createLootItem(self, lootBlock, chance) local lootTable, itemCount = {}, 0 local randvalue = math.random(0, 100000) / (getConfigInfo("rateLoot") * chance) if randvalue < lootBlock.chance then if (ItemType(lootBlock.itemId):isStackable()) then itemCount = randvalue % lootBlock.maxCount + 1 else itemCount = 1 end end while itemCount > 0 do local n = math.min(itemCount, 100) itemCount = itemCount - n table.insert(lootTable, {lootBlock.itemId, n}) end return lootTable end function MonsterType.getBossReward(self, chance) local result = {} if getConfigInfo("rateLoot") > 0 then for _, loot in pairs(self:getLoot()) do local itemList = self:createLootItem(loot, chance) if itemList then for _, item in ipairs(itemList) do table.insert(result, item) end end end end return result end function getDecayTime(id) local decayTime = 0 do local o = io.open('data/items/items.xml','r') file = o:read('*a') o:close() end local function sumDecayTime(corpse) for attr in file:gmatch('<item.-id="' .. corpse ..'"(.-)</item>') do local decayTo = attr:match('<attribute.-key="decayTo".-value="(.-)".-/>') local duration = attr:match('<attribute.-key="duration".-value="(.-)".-/>') decayTime = decayTime + duration if tonumber(decayTo) > 0 then sumDecayTime(decayTo) end break end end sumDecayTime(id) return decayTime end function loadCorpses() for _, name in ipairs(REWARD_CHEST.BOSSES) do if MonsterType(name) ~= nil then REWARD_CHEST.DECAY[name] = getDecayTime(MonsterType(name):getCorpseId()) end end end addEvent(loadCorpses, 0) function getPlayerByGUID(guid) for _, player in ipairs(Game.getPlayers()) do if guid == player:getGuid() then return player end end return nil end function Player.addReward(self, reward, time, id) local LootBag = Container(doCreateItemEx(REWARD_CHEST.CONTAINER, 1)) LootBag:setAttribute('text', time) addContainerItems(LootBag, reward) if id then db.query('DELETE FROM player_rewardchest WHERE id = ' .. id .. ';') end return self:getDepotChest(REWARD_CHEST.DEPOT_ID, true):addItemEx(LootBag) end function doSaveReward(uid, name) for GUID, items in pairs(REWARD_CHEST.LOOT[uid]) do local player = getPlayerByGUID(GUID) if player ~= nil then player:addReward(items, os.time()) player:sendTextMessage(MESSAGE_INFO_DESCR, 'Your reward container from ' .. name .. ' was moved to your reward chest.') else db.query('INSERT INTO player_rewardchest VALUES (NULL, ' .. GUID ..', "' .. table.serialize(items) ..'", ' .. os.time() ..');') end end REWARD_CHEST.LOOT[uid] = nil end function Player.updateRewardChest(self) db.query('DELETE FROM player_rewardchest WHERE TIME_TO_SEC(TIMEDIFF(NOW(), FROM_UNIXTIME(date))) >= '.. REWARD_CHEST.EXPIRE ..';') local Query = db.storeQuery('SELECT id, reward, date FROM player_rewardchest WHERE player_id = '.. self:getGuid() ..';') if Query ~= false then repeat local rewardBag = table.unserialize(result.getDataString(Query, 'reward')) self:addReward(rewardBag, result.getDataInt(Query, 'date'), result.getDataInt(Query, 'id')) until not result.next(Query) result.free(Query) end local depotChest = self:getDepotChest(REWARD_CHEST.DEPOT_ID, true) for index = (depotChest:getSize() - 1), 0, -1 do local container = depotChest:getItem(index) if (container:getAttribute('text') ~= nil) and (tonumber(container:getAttribute('text')) + REWARD_CHEST.EXPIRE < os.time()) then container:remove() end end return self:setExhaustion(REWARD_CHEST.STORAGE, REWARD_CHEST.EXHAUST) end function string.diff(self) local format = { {'day', self / 60 / 60 / 24}, {'hour', self / 60 / 60 % 24}, {'minute', self / 60 % 60}, {'second', self % 60} } local out = {} for k, t in ipairs(format) do local v = math.floor(t[2]) if(v > 0) then table.insert(out, (k < #format and (#out > 0 and ', ' or '') or ' and ') .. v .. ' ' .. t[1] .. (v ~= 1 and 's' or '')) end end local ret = table.concat(out) if ret:len() < 16 and ret:find('second') then local a, b = ret:find(' and ') ret = ret:sub(b+1) end return ret end function doBossReward(monster, corpse) REWARD_CHEST.LOOT[corpse:getUniqueId()] = {} corpse:setAttribute('aid', 21584) corpse:setAttribute('text', corpse:getUniqueId()) for killer, damage in pairs(monster:getDamageMap()) do local player, str = Player(killer), 'Loot of ' .. MonsterType(monster:getName()):getNameDescription() .. ': ' if player ~= nil then local rewardBag = doCreateItemEx(REWARD_CHEST.CONTAINER) if player:getStamina() > 840 then local loot = MonsterType(monster:getName()):getBossReward(damage.total/monster:getMaxHealth()) if #loot > 0 then addContainerItems(Container(rewardBag), loot) REWARD_CHEST.LOOT[corpse:getUniqueId()][player:getGuid()] = loot str = str .. Container(rewardBag):getContentDescription() else str = str .. 'nothing' end else str = str .. 'nothing (due to low stamina)' end player:sendTextMessage(MESSAGE_INFO_DESCR, str .. '.') end end addEvent(doSaveReward, REWARD_CHEST.DECAY[monster:getName()]*1000, corpse:getUniqueId(), MonsterType(monster:getName()):getNameDescription()) end end end Link para o comentário Compartilhar em outros sites More sharing options...
GlobalCores 0 Postado Junho 25, 2015 Share Postado Junho 25, 2015 (editado) O erro ainda continua. [Warning - Event::checkScript] Can not load script: scripts/reward_chest.lua data/creaturescripts/scripts/reward_chest.lua:247: <eof> expected near 'end' Ta faltando algum end em algum lugar kkkk quando é pequeno eu identifico rápido mais esse ai é cheio de end Mesmo nao funcionando deveria mostrar o Bau no dp? ou so depois que mata o boss? Editado Junho 25, 2015 por GlobalCores Link para o comentário Compartilhar em outros sites More sharing options...
zipter98 1101 Postado Junho 26, 2015 Share Postado Junho 26, 2015 Tira os dois últimos ends. Link para o comentário Compartilhar em outros sites More sharing options...
SkyDangerous 395 Postado Junho 26, 2015 Share Postado Junho 26, 2015 Daniel arruma esse tutorial ai.Tem várias partes que tu copio que ta bugado e diferente da otland. Link para o comentário Compartilhar em outros sites More sharing options...
GlobalCores 0 Postado Junho 26, 2015 Share Postado Junho 26, 2015 Tira os dois últimos ends. Quando dei reload apareceu isso [Warning - Event::checkScript] Event onKill not found. scripts/reward_chest.lua Acho que não tem: function onKill(cid, target) Link para o comentário Compartilhar em outros sites More sharing options...
Bruno 535 Postado Junho 26, 2015 Share Postado Junho 26, 2015 Na verdade esse sistema ainda não está funcionando como deveria...(similar ao global) Referente ao que estão dizendo aqui, Vou dar uma olhada e ver o que tem de errada no tópico. Link para o comentário Compartilhar em outros sites More sharing options...
GlobalCores 0 Postado Junho 26, 2015 Share Postado Junho 26, 2015 To procurando arrumar ele pra TFS 1.0 :S, ja coloquei nas sources so falta os scripts Link para o comentário Compartilhar em outros sites More sharing options...
mkbrabsolute 134 Postado Junho 30, 2015 Share Postado Junho 30, 2015 To procurando arrumar ele pra TFS 1.0 :S, ja coloquei nas sources so falta os scripts Os codes que você enviou não são para 1.0 Link para o comentário Compartilhar em outros sites More sharing options...
GlobalCores 0 Postado Julho 1, 2015 Share Postado Julho 1, 2015 Os codes que você enviou não são para 1.0 Que codes? para adicionar nas sources? eu adicionei e compilei e deu certo, como que é o certo então? Link para o comentário Compartilhar em outros sites More sharing options...
mkbrabsolute 134 Postado Julho 14, 2015 Share Postado Julho 14, 2015 Que codes? para adicionar nas sources? eu adicionei e compilei e deu certo, como que é o certo então? Os codes são os códigos que colocamos na source. Esse reward está totalmente pra tfs 1.2, pois ele tem as novas funções. Os scripts há como passar pra funcionar no 1.0, mas estou fazendo um baseado nos bosses da warzone reconhecendo os danos aderidos dos jogadores, fica mais fácil, não fica 100% global mas acho mais prático e sem intervenções nas sources. Link para o comentário Compartilhar em outros sites More sharing options...
Lumus 254 Postado Julho 14, 2015 Share Postado Julho 14, 2015 Aqui tá meio louco.. instalei, compilei, e etc... porém, ao tentar fazer login no servidor não faz... só fica carregando, eu removo o creaturescripts volta normalmente. Link para o comentário Compartilhar em outros sites More sharing options...
SkyDangerous 395 Postado Julho 21, 2015 Share Postado Julho 21, 2015 Eu já avisei que o código ta errado.ele deu ctrl + c e ctrl + v e esqueceu algumas partes ...sugiro que olhe na otland porém é english , eu fiz e deu certinho .. até dei umas modificadas nos arquivos pra ficar mais legal Link para o comentário Compartilhar em outros sites More sharing options...
nicholas1q 0 Postado Novembro 18, 2015 Share Postado Novembro 18, 2015 alguém sabe se ta funcionando no tfs 1.2? Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados