Postado Julho 1, 2019 5 anos Primeiramente não sei se está certo o tópico kkkk Então vamos ao problema. Gostaria de um script estilo o sistema do Aegis(servidores Rozinx) para matar 3 monstros e ganhar 1 ponto... Desde já muito obrigado
Postado Julho 1, 2019 5 anos Solução Vejo que é seu primeiro post, então nos próximos tente dar a maior quantidade possível de detalhes sobre o seu pedido como: a versão do seu servidor, a distro utilizada, além de detalhes sobre o próprio script que você quer. Isso facilitará com que as pessoas te ajudem e, por consequência, você tenha o seu pedido atendido o mais rápido possível. Como nunca vi que sistema é esse do qual você está se referindo, supondo que o script que desenvolvi será compatível com seu servidor e que o "ponto" que você se refere é o "premium point da account", siga os passos abaixo (não tive como testar o script): Em data/lib crie um arquivo.lua e cole isto dentro: Spoiler AEGIS_SYS = { monster_name = "Aegis", -- nome do monstro kills_per_point = 3, -- quantidade de vezes que o monstro será morto para adicionar 1 ponto max_kills = -1, -- número máximo de vezes que a morte do monstro contará para adicionar o ponto (coloque -1 caso não tenha máximo) storages = {kills = 45696, total_kills = 45697} -- storages não utilizados no seu servidor, só modifique se necessário } Caso ainda não possua a função que adiciona os pontos em algum arquivo da pasta data/lib, adicione-a, no arquivo criado anteriormente, abaixo do "}": Spoiler function getAccountPoints(cid) local res = db.getResult('select `premium_points` from accounts where name = \''..getPlayerAccount(cid)..'\'') if(res:getID() == -1) then return false end local ret = res:getDataInt("premium_points") res:free() return tonumber(ret) end function doAccountAddPoints(cid, count) return db.query("UPDATE `accounts` SET `premium_points` = '".. getAccountPoints(cid) + count .."' WHERE `name` ='"..getPlayerAccount(cid).."'") end function doAccountRemovePoints(cid, count) return db.query("UPDATE `accounts` SET `premium_points` = '".. getAccountPoints(cid) - count .."' WHERE `name` ='"..getPlayerAccount(cid).."'") end Em data/creaturescripts/scripts crie um arquivo.lua e cole isto dentro: Spoiler function onDeath(cid, corpse, deathList) local killer = deathList[1] if not isPlayer(killer) then return true end local mname, kneeded, str, check_max = getCreatureName(cid), AEGIS_SYS.kills_per_point, "", (AEGIS_SYS.max_kills ~= -1) local player_kills = getPlayerStorageValue(killer, AEGIS_SYS.storages.kills) > 0 and getPlayerStorageValue(killer, AEGIS_SYS.storages.kills) or 0 local total_kills = getPlayerStorageValue(killer, AEGIS_SYS.storages.total_kills) > 0 and getPlayerStorageValue(killer, AEGIS_SYS.storages.total_kills) or 0 if (not check_max) or (check_max and ((total_kills + 1) <= AEGIS_SYS.max_kills)) then if (player_kills + 1) == AEGIS_SYS.kills_per_point then doAccountAddPoints(killer, 1) setPlayerStorageValue(killer, AEGIS_SYS.storages.kills, 0) doSendMagicEffect(getPlayerPosition(killer), CONST_ME_HOLYAREA) doPlayerSendTextMessage(killer, MESSAGE_INFO_DESCR, "You have earned a premium point for killing the monster '" .. mname .. "' " .. kneeded .. " times.") str = " (finished)" else str = " to earn 1 premium point." setPlayerStorageValue(killer, AEGIS_SYS.storages.kills, player_kills + 1) end doPlayerSendTextMessage(killer, MESSAGE_STATUS_CONSOLE_ORANGE, mname.. " kills: [".. (player_kills + 1) .. "/".. kneeded .."]".. str) if (total_kills + 1) == (AEGIS_SYS.max_kills) then doPlayerSendTextMessage(killer, MESSAGE_STATUS_CONSOLE_ORANGE, "You have already reached maximum number of kills for " .. mname .. ".") end setPlayerStorageValue(killer, AEGIS_SYS.storages.total_kills, total_kills + 1) else if check_max then doPlayerSendTextMessage(killer, MESSAGE_STATUS_CONSOLE_ORANGE, "You have already reached maximum number of kills for " .. mname .. ".") end end return true end No creaturescripts.xml, adicione a tag: <event type="death" name="AegisDeath" event="script" value="NOMEDOARQUIVO.lua"/> No arquivo.xml do monstro, antes de: </monster> adicione: <script> <event name = "AegisDeath"/> </script> Fiz um comando adicional aqui rapidinho, caso o jogador queira verificar a quantidade de monstros mortos: Em data/talkactions/scripts crie um arquivo.lua e cole isto dentro: Spoiler function onSay(cid, words, param, channel) local str, check_max = ">> Aegis Kills", (AEGIS_SYS.max_kills ~= -1 ) if check_max then if getPlayerStorageValue(cid, AEGIS_SYS.storages.total_kills) >= AEGIS_SYS.max_kills then str = str .. "\n\nYou have already reached maximum number of kills for " .. AEGIS_SYS.monster_name .. "." return doPlayerPopupFYI(cid, str) end end local player_kills = getPlayerStorageValue(cid, AEGIS_SYS.storages.kills) > 0 and getPlayerStorageValue(cid, AEGIS_SYS.storages.kills) or 0 str = str .. " [".. (player_kills) .. "/".. AEGIS_SYS.kills_per_point .."]" doPlayerPopupFYI(cid, str) return true end No talkactions.xml, adicione a tag. Por exemplo: <talkaction words="!aegis" event="script" value="NOMEDOARQUIVO.lua"/> Espero que seja isso o que você queria. Contato: Email: [email protected] Discord: Dwarfer#2715
Postado Julho 2, 2019 5 anos Autor Opa! Boa noite! Desculpa, é meu primeiro tópico... Mas vamos lá... Eu testei, porém não deu certo... Os pontos que eu disse são "points" para o player comprar os itens após clicarem nos baús... Ou seja... A cada 3 monstros que ele mata, ele ganha 1 points. Porém eu mato o monstro mas nao consigo ganhar os points. A versão é 8.6 mesmo.
Postado Julho 2, 2019 5 anos 7 horas atrás, Vinni012 disse: Opa! Boa noite! Desculpa, é meu primeiro tópico... Mas vamos lá... Eu testei, porém não deu certo... Os pontos que eu disse são "points" para o player comprar os itens após clicarem nos baús... Ou seja... A cada 3 monstros que ele mata, ele ganha 1 points. Porém eu mato o monstro mas nao consigo ganhar os points. A versão é 8.6 mesmo. Testei aqui e o script está 100% funcional. No entanto, a diferença pode ser nesse sistema de pontos que você quer. Você já tem o script de clicar no baú e receber o item? Poste-o para que eu possa adaptar o script desenvolvido a esse seu. Contato: Email: [email protected] Discord: Dwarfer#2715
Postado Julho 2, 2019 5 anos Autor Segue o script... Esse é o sistema do player clicar no bau e comprar o item com points local lever = { [6001] = {40,10022}, [6002] = {25,10133}, [6003] = {25,10064}, [6004] = {15,12606}, [6005] = {15,12603}, [6006] = {15,12604}, [6007] = {15,12609}, [6008] = {15,12605}, [6009] = {15,12610}, [60010] = {12,10134}, [60011] = {12,10310}, [60012] = {8,9777}, [60013] = {8,2390}, [60014] = {8,9933}, [60015] = {8,8888}, [60016] = {8,7839}, [60017] = {8,8858}, [60018] = {8,8905}, [60019] = {8,9778}, [60020] = {35,10135} } function onUse(cid,item,fromPosition,itemEx,toPosition) if getPoints(cid) < lever[item.actionid][1] then return doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Você precisa de "..lever[item.actionid][1].." points.") end doPlayerAddItem(cid,lever[item.actionid][2], isItemStackable(lever[item.actionid][2]) and 1) removePoints(cid,lever[item.actionid][1]) doPlayerSendTextMessage(cid,22,"você comprou um " .. getItemNameById(lever[item.actionid][2])) return true end Refiz todo o processo desde o inicio, e até o monstro bugou, não conseguindo Summonar ou colocar no RME systempoints.lua Esse é meu sistema de points
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.