
Tudo que xWhiteWolf postou
-
Função guildMember
tem que ver o script todo, só com comentario não dá pra saber como vc tá tentando fazer... Eu fiz uma função que retorna true se todos os players estão dentro daquela area e false caso contrário, não sabia q era pra dar os storage pros q tão e ignorar o resto.. vc tinha que ter sido mais específico.
-
Trocar +1,+2,+3 por nomes nesse script refin [10 reps]
o script não é meu, só fiz uma modificação pra ficar do jeito q vc queria. Não mexi em nada dessa parte de atributos então deve tar como era pra ser. Se ele tá aumentando algo errado verifica se é a configuração que tá errada, do contrário eu dou uma revisada e vejo se acho algum erro de lógica
- Magma Boots absorvendo dano
- [Boss Skill] Aegis of Immortal
- Magma Boots absorvendo dano
-
Função guildMember
pra ser algo útil tem que separar em duas funções: a primeira vc faz getOnlineGuildMembers(guildid) e ela irá retornar uma tabela com todos os membros da guild que estão online. A segunda vc coloca uma tabela de membros, posição do canto < /\ e posição do canto >\/ (se não me engano) e ele irá dizer se todos esses membros estão entre o quadrado formado por essas posições
-
Trocar +1,+2,+3 por nomes nesse script refin [10 reps]
kct, to decepcionado cmg msmo AHUEUHA to esquecendo umas coisas mt básicas e vc demora horas pra vir aqui responder, ja tá durando 5 dias esse teu problema..
- Gran Castle Event (8.54+)
-
[Boss Skill] Aegis of Immortal
ficou bem merda do jeito q vc pediu, a graça do boss era ele possuir a skill e não deixar corpse.. mas já que vc quer imitar os cara do fox então toma: no xml do monstro vc coloca o corpse: corpse="8937"/> em data\creaturescripts\scripts\aegis.lua coloque assim> em data\lib\function.lua coloque no fim do arquivo Agora pro monstro Aegis ter o efeito em volta vc vai ter que colocar essa função nele ao criá-lo no mapa. No caso do fox pode ser uma talkaction /startAegis ou um globalEvent (nao sei ql dos dois q é), aí nesse outro script de criar o monstro vc coloca zEffect(monster, 37) que vai ficar rodando nele. em data\creaturescripts\scripts\login.lua vc adiciona essa linha antes do ULTIMO return true: if getPlayerStorageValue(cid, 19332) > 0 then zEffect(cid, 37) end
-
Ajuda a arrumar essas Spells.
nossa, agora entendi.. Usa essa daqui na terceira->
-
Ajuda a arrumar essas Spells.
Primeira: Segunda: O erro q tem na terceira é o mesmo da segunda? pq ele tá falando q essa função exhaustion.get(cid, 100100) tá retornando um boolean (true/false). Então a função deve estar errada no seu servidor, pois ela deveria retornar o tempo até poder usar novamente
-
Ajuda a arrumar essas Spells.
Primeira: terceira: ultima: edit: a segunda tá dentro do spoiler da primeira e não to conseguindo arrumar
-
Trocar +1,+2,+3 por nomes nesse script refin [10 reps]
cometi uma pequena gafe hahaha eu modifiquei o script e esqueci de modificar a tabela que eu havia criado
-
Trocar +1,+2,+3 por nomes nesse script refin [10 reps]
sim, esqueci a virgula, não percebi que upgradeHandler era uma tabela AIHHEUIA botando ali funciona?
- Recomepensa por matar Player
-
Trocar +1,+2,+3 por nomes nesse script refin [10 reps]
testa assim --PERFECT UPGRADE SYSTEM UpgradeHandler = { nameLv = { ["UNIQ"] = 1, ["RARE"] = 2, ["EPIC"] = 3 } levels = { [1] = {50, false, false}, [2] = {20, false, false}, [3] = {10, true, true} }, broadcast = 3, attributes = { ["attack"] = 3, ["defense"] = 2, ["armor"] = 1 }, message = { console = "Trying to refine %s to level +%s with %s%% success rate.", success = "You have upgraded %s to level +%s", fail = "You have failed in upgrade of %s to level +%s", downgrade = "The upgrade level of %s has downgraded to +%s", erase = "The upgrade level of %s has been erased.", maxlevel = "The targeted %s is already on max upgrade level.", notupgradeable = "This item is not upgradeable.", broadcast = "The player %s was successful in upgrading %s to level +%s.\nCongratulations!!", invalidtool = "This is not a valid upgrade tool.", toolrange = "This upgrade tool can only be used in items with level between +%s and +%s" }, tools = { [8306] = {range = {0, 10}, info = {chance = 0, removeable = true}}, [8300] = {range = {0, 10}, info = {chance = 0, removeable = true}} }, isEquipment = function(self) local weaponType = self:getItemWeaponType() return ((weaponType > 0 and weaponType < 7) or self.item.armor ~= 0) end, setItemName = function(self, name) return doItemSetAttribute(self.item.uid, "name", name) end, chance = function(self) local chances = {} chances.upgrade = (self.levels[self.item.level + 1][1] or 100) chances.downgrade = (self.item.level * 5) chances.erase = (self.item.level * 3) return chances end } function UpgradeHandler:new(item) local obj, ret = {} obj.item = {} obj.item.level = 0 obj.item.uid = item.uid for key, value in pairs(getItemInfo(item.itemid)) do obj.item[key] = value end ret = setmetatable(obj, { __index = function(self, index) if _G[index] then return (setmetatable({callback = _G[index]}, {__call = function(self, ...) return self.callback(item.uid, ...) end} )) else return UpgradeHandler[index] end end}) if ret:isEquipment() then ret:update() return ret end return false end function UpgradeHandler:update() -- this will return the level by the quality or 0 if it has no quality. self.item.level = 0 for r, v in ipairs(self.nameLv) do if self:getItemName():find(r) then self.item.level = v end end end function UpgradeHandler:refine(uid, item) if not self.item then doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_BLUE, self.message.notupgradeable) return "miss" end local tool = self.tools[item.itemid] if(tool == nil) then doPlayerSendTextMessage(uid, MESSAGE_EVENT_DEFAULT, self.message.invalidtool) return "miss" end if(self.item.level > #self.levels) then doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.maxlevel:format(self.item.name)) return "miss" end if(self.item.level < tool.range[1] or self.item.level >= tool.range[2]) then doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.toolrange:format(unpack(tool.range))) return "miss" end local chance = (self:chance().upgrade + tool.info.chance) doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_BLUE, self.message.console:format(self.item.name, (self.item.level + 1), math.min(100, chance))) if(tool.info.removeable == true) then doRemoveItem(item.uid, 1) end if chance * 100 > math.random(1, 10000) then doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_ORANGE, self.message.success:format(self.item.name, (self.item.level + 1))) if (self.item.level + 1) >= self.broadcast then doBroadcastMessage(self.message.broadcast:format(getCreatureName(uid), self.item.name, (self.item.level + 1))) end -- it says if the item's level is greater then 0 (meaning is level equal to 1 or more) if it is add 1 more -- if the current level equals 0 add 1 to it self:setItemName(self.item.level > 0 and self.nameLv[self.item.level].." "..self:getItemName():gsub(self.nameLv[self.item.level].." ", "") or self.nameLv[1].." "..self:getItemName()) for key, value in pairs(self.attributes) do if getItemAttribute(self.item.uid, key) ~= nil or self.item[key] ~= 0 then doItemSetAttribute(self.item.uid, key, (self.item.level > 0 and getItemAttribute(self.item.uid, key) or self.item[key]) + value) end end return "success" else if item.itemid == 8300 then if self.item.level > 0 then -- this will remove any number with a + sign in front of it from the string self:setItemName(self:getItemName():gsub(self.nameLv[self.item.level].." ", "")) for key, value in pairs(self.attributes) do if getItemAttribute(self.item.uid, key) ~= nil or self.item[key] ~= 0 then doItemSetAttribute(self.item.uid, key, getItemAttribute(self.item.uid, key) - self.item.level * value) end end end else doRemoveItem(self.item.uid, 1) end doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_BLUE, item.itemid == 8300 and "Your item level has been reseted." or "You have broken your item while trying to upgrade it.") end end
-
[LOGS] Ajuda Logs Poketibia
Acho que vc confundiu, oque é logs pra vc? Logs é um documento nas talkactions que registra o histórico de comandos utilizados e pela sua descrição vc tá falando de algum comando ingame como !rate, por exemplo. Manda um print do que você tá querendo dizer que a gente tenta te ajudar
- [Boss Skill] Aegis of Immortal
-
Forcem músicas
Todo carro tem que ter essa música aqui https://www.youtube.com/watch?v=0hfFQl2iEi8
- (Resolvido)Stunner Axe
-
Trocar +1,+2,+3 por nomes nesse script refin [10 reps]
self.item.level = (tonumber(self:getItemName():match("%+(%d+)")) or 0) aqui ele define ql é o level do item, vc tem que modificar isso de forma a fazer ele entender que RARE, UNQ, EPIC são leveis referentes a 1, 2, 3; O resto é modificador os -- it says if the item's level is greater then 0 (meaning is level equal to 1 or more) if it is add 1 more -- if the current level equals 0 add 1 to it self:setItemName((self.item.level > 0 and self:getItemName():gsub("%+(%d+)", "+".. (self.item.level + 1)) or (self:getItemName() .." +1"))) -- this will remove any number with a + sign in front of it from the string self:setItemName(self:getItemName():gsub("(%s+)%+(%d+)", "")) Pra em vez de setar nome +Level no nome, setar a rarity + nome.
- Sistema Anti Lag / Kick
-
(Resolvido)[ Resolvido] Evolve Stone Perfect
Antes de tudo usa esse script aqui, o seu nao tá nem identado.. não dá pra entender merda nenhuma Segundo: essa é a parte que faz isso que vc quer, ela tá corretinha ao meu ver if stnid2 > 1 and (getPlayerItemCount(cid, stnid2) < count or getPlayerItemCount(cid, stnid) < count) then doPlayerSendCancel(cid, "You need at least one "..getItemNameById(stnid).." and one "..getItemNameById(stnid2).." to evolve this pokemon!") return true end if getPlayerItemCount(cid, stnid) < count then local str = "" if count >= 2 then str = "s" end return doPlayerSendCancel(cid, "You need at least "..count.." "..getItemNameById(stnid)..""..str.." to evolve this pokemon!") end minlevel = pokes[evo].level if getPlayerLevel(cid) < minlevel then doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").") return true end if count >= 2 then stnid2 = stnid end doEvolvePokemon(cid, item2, evo, stnid, stnid2) só fiquei com duvida nessa parte aqui: se a quantidade for maior ou igual a 2 ele bota o stoneid2 = stoneid1?? Acredito que o problema mesmo seja nessa função doEvolvePokemon, ela não leva count como paramêtro e é provavelmente nela que o jogo remove as stones do player. Sugiro vc adicionar ali dps de stnid2 = stnid um doPlayerRemoveItem, ficando assim if count >= 2 then stnid2 = stnid doPlayerRemoveItem(cid, stnid, count - 2) end
-
Glacier Set dando conditions em área
foi muito engraçado arrumar esse script, qnd eu fiz ele eu tava começando a scriptar e tinha muita checagem desnecessária
- Erro Cast