Ir para conteúdo

Kydrai

Visconde
  • Total de itens

    250
  • Registro em

  • Última visita

  • Dias Ganhos

    14

Tudo que Kydrai postou

  1. O erro é que vc n ta usando variáveis locais. Ai vc acaba mudando o valor das variáveis nos 2 scripts. O certo seria: local pedrapos = {x=2204, y=39, z=7} --[[Posição inicial do bloqueio]] . . . De qualquer forma ja respondi pelo msn
  2. @UP Tira essa parte: if getPlayerVocation(cid) == 8 then -- Vocação que o player precisa ter doPlayerSetVocation(cid, 9) -- Vocação que o player ficara após o reset end
  3. Baseado no script postado pelo amigo ai em cima: function onSay(cid, words, param) config = { level = 360, -- level para resetar RemainingLvl = 8, -- level que ficara depois do reset exper = 4200, -- Experiência que ficara depois do Reset pid = getPlayerGUID(cid), -- Não Mecha skull = "yes", -- Players com Skull podem resetar "yes" para sim e "no" para não redskull = "yes",-- Players com Red Skull podem resetar "yes" para sim e "no" para não prot = "yes", -- precisa estar em area pz para resetar "yes" para sim e "no" para não bat = "yes", -- player com fight pode resetar "yes para sim e "no" para não mana = 80, -- mana que ficara após o reset health = 150, -- Health que ficara após o reset manaByReset = 100, -- mana a mais por reset healthByReset = 100 -- Health a mais por reset } function getResets(cid) reset = getPlayerStorageValue(cid,1020) if reset < 0 then reset = 0 end return reset end if(config.skull == "no") and (getCreatureSkullType(cid) == 3) then doPlayerSendTextMessage(cid, 24, "apenas players sem white skull podem resetar.") return TRUE end if(config.redskull == "no") and (getCreatureSkullType(cid) == 4) then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"apenas player sem red skull podem resetar.") return TRUE end if(config.prot == "yes") and (getTilePzInfo(getCreaturePosition(cid)) == FALSE) then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"você precisa estar em protection zone pra poder resetar.") return TRUE end if(config.bat == "yes") and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você precisa estar sem battler pra poder resetar.") return TRUE end if getPlayerLevel(cid) >= config.level then setPlayerStorageValue(cid, 1020, getResets(cid)+1) doPlayerPopupFYI(cid, "You now was reset, you have "..getResets(cid).." reset\'s.") doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) config.mana = config.mana + config.manaByReset*getResets(cid) config.health = config.health + config.healthByReset*getResets(cid) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `level` = "..config.RemainingLvl..", `experience` = "..config.exper..",`manamax` = "..config.mana..",`healthmax` = "..config.health..",`health` = "..config.health..",`mana` = "..config.mana.." WHERE `id` = "..config.pid) else doPlayerSendCancel(cid, "Você precisa do level "..config.level.." ou mais para resetar.") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) end return TRUE end É só mudar o manaByReset e healthByReset, e calculo será essa parte: config.mana = config.mana + config.manaByReset*getResets(cid) config.health = config.health + config.healthByReset*getResets(cid)
  4. Pra precisar de 2 items basta usar um "and" e remover os dois items: function onCastSpell(cid, var) if getPlayerItemCount(cid, ITEMID) >= QUANTIDADE and getPlayerItemCount(cid, ITEMID2) >= QUANTIDADE2 then -- se tiver "QUANTIDADE" >= de ITEMID e "QUANTIDADE2" >= de ITEMID2 então local pos = getCreaturePosition(cid) -- pega posição do player doPlayerRemoveItem(cid, ITEMID, QUANTIDADE) -- remove ITEMID doPlayerRemoveItem(cid, ITEMID2, QUANTIDADE2) -- remove ITEMID2 doCreateItem(ITEMID3, QUANTIDADE3, pos) -- cria item doSendMagicEffect(pos, CONST_ME_FIREWORK_YELLOW) -- efeito mágico else -- se não doPlayerSendCancel(cid, "Você não possui o item "..getItemNameById(ITEMID).." ou "..getItemNameById(ITEMID2)) return FALSE end return TRUE end Sem usar items: function onCastSpell(cid, var) local pos = getCreaturePosition(cid) -- pega posição do player doCreateItem(ITEMID3, QUANTIDADE3, pos) -- cria item doSendMagicEffect(pos, CONST_ME_FIREWORK_YELLOW) -- efeito mágico return TRUE end Item no inventário: Remove: "doCreateItem(ITEMID3, QUANTIDADE3, pos)" E coloca: "doPlayerAddItem(cid, ITEMID3, QUANTIDADE3)"
  5. Ta meio confuso a sua explicação. Você quer uma uma spell que precisa ou não de outros items para criar um novo? Seria algo assim: function onCastSpell(cid, var) if getPlayerItemCount(cid, ITEMID) >= QUANTIDADE then local pos = getCreaturePosition(cid) doPlayerRemoveItem(cid, ITEMID, QUANTIDADE) doCreateItem(ITEMID2, QUANTIDADE, pos) doSendMagicEffect(pos, CONST_ME_FIREWORK_YELLOW) else doPlayerSendCancel(cid, "Você não possui o item "..getItemNameById(ITEMID)) return FALSE end return TRUE end Se você explicar melhor da pra fazer mais.
  6. Conseguiu faze o script eh Achei que ficou legal o resultado.
  7. @UP Você ta postando bom scripts, mas esses não lhe pertencem. E não é porque você colocou os créditos que não é considerado rip, você precisa ter permissão para postar.
  8. Sobre o rank, da uma olhada nesse tópico: http://www.xtibia.com/forum/topic/130791-rank-reset/ Sobre o look: O que está em negrito é oq ja tem no seu script. Já o de vip, tem varios sistemas ai, mas pelo que você disse nem parece uma vip, e sim um item que tem que estar equipado.
  9. Ao invés de INTEGER, tenta colocar SIGNED. Acho que serve.
  10. Boa, mas vc deveria ter feito um script e postado, ja que não é bem um artigo. Vc pode achar muito mais nas sources, "items.cpp" para ser mais específico. La vc acha: reflectpercentall reflectpercentelements reflectpercentmagic reflectpercentenergy reflectpercentfire ... reflectchanceall E tudo mais.
  11. Bem legal o Teaser, o servidor ta ficando bom. Parabéns a equipe.
  12. Isso só é possível modificando nas sources, a um tempo fiz isso pra alguém daqui. Se vc tiver as sources e souber compilar eu posso até te passar o código, só não sei se ele tem algum bug.
  13. Isso acontece quando tenta abrir 2 servidores juntos. Quando você fecha tem que aguardar um certo tempo pro processo finalizar e depois abrir novamente.
  14. @druidkean A parte responsável pelos efeitos é essa: local effects = {4,34} --Efeitos. doSendMagicEffect({x=x,y=y,z=pos.z}, effects[math.random(1,#effects)]) Só mudar pra: doSendMagicEffect({x=x,y=y,z=pos.z}, 4) doSendMagicEffect({x=x,y=y,z=pos.z}, 34) Ja a posição ta sendo sorteada: local x = math.random(pos.x-1,pos.x+1) local y = math.random(pos.y-1,pos.y+1)
  15. creaturescripts.xml: <event type="login" name="LoginEffect" event="script" value="LvlEffect.lua"/> <event type="advance" name="AdvEffect" event="script" value="LvlEffect.lua"/> LvlEffect.lua: function sendEffect(cid) if isCreature(cid) then local pos = getCreaturePosition(cid) local x = math.random(pos.x-1,pos.x+1) local y = math.random(pos.y-1,pos.y+1) local effects = {4,34} --Efeitos. doSendMagicEffect({x=x,y=y,z=pos.z}, effects[math.random(1,#effects)]) addEvent(sendEffect,1000,cid) end end function onLogin(cid) if getPlayerLevel(cid) >= 350 then sendEffect(cid) end registerCreatureEvent(cid, "AdvEffect") return TRUE end function onAdvance(cid, skill, oldLevel, newLevel) if skill == SKILL__LEVEL and newLevel == 350 then sendEffect(cid) end return TRUE end
  16. @DaniloN No script tem uns erros de escrita, substitua os play er_id por player_id.
  17. Agora entendi o erro. O TFS tem umas diferenças. Isso ocorre pq o valor do storage é uma string, então tem que passar para numérico. Lá ta assim: local v = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = 1020 ORDER BY `value` DESC;") O certo é: local v = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = 1020 ORDER BY cast(value as INTEGER) DESC;") Acho que isso resolve, fiz o teste e deu certo.
  18. Aparecem pessoas com até 9 resets ou até o 9º do rank? Caso seja o 9º do rank, usando o script do Vodkart, é só editar essa parte: local max = 10 Que mostra o max de elementos do rank.
  19. Kydrai

    Tabelas

    Muito bom seus tutoriais. Rep+ Seria bom adicionar alguns erros que podem ocorrer no uso também. a = {"oi"} b = {"oi"} print(a == b) -- false Embora os conteúdos das tabelas sejam iguais elas são diferentes. a = {"oi"} b = a b[1] = "tchau" print(a == b) -- true Nesse caso o "b" é uma referência para o "a", ou seja, quando fazemos b[1] = "tchau" é a mesma coisa que a[1] = "tchau", logo elas são a mesma tabela. Isso pode fazer com que a pessoa mude o valor de "a" sem saber.
  20. Você tinha me passado no msn, agora dei uma olhada no que poderia estar errado. Precisa verificar se existe os parâmetros. if param == "" or b[1] == "" or b[2] == "" then doPlayerSendCancel(cid,"Command param required. Use /buyitens item name, quantity") return TRUE end Aconselho a usar variáveis. local item = getItemIdByName(b[1], false) local qnt = tonumber(b[2]) Colocar um "false" (getItemIdByName(b[1], false)) pra não ficar mostrando o erro quando alguém digita um item que não existe. Poderia usar um "else" caso o a[getItemIdByName(b[1])] não exista. Impedir que o player compre caso não tenha cap ou slot também seria bom. Uma sugestão seria criar um parâmetro pra exibir os items da lista. Exemplo: /buyitens info Iria aparecer algo como: name price max name price max name price max
  21. Deu algum erro? Você ta usando o id corretamente no script? Eu testei aqui e funciona perfeitamente.
  22. [script retirado] Eu fiz o script certo, se vc não quer ler e nem falar o erro não posso fazer nada.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...