Ir para conteúdo

Kydrai

Visconde
  • Total de itens

    250
  • Registro em

  • Última visita

  • Dias Ganhos

    14

Tudo que Kydrai postou

  1. Bom script. Conseguiu fazer o texto do tempo, ficou legal o resultado
  2. O projeto é legal, espero q consiga apoio. Poucos otservs hoje usam clientes customizados, até pela falta de conhecimento. Eu conheço pouco sobre o assunto, ainda to aprendendo.
  3. @paulincarvalhoo22 Para poder usar a distância deixa a tag do xml assim: <action itemid="xxxx" event="script" value="evolution.lua" allowfaruse="1"/>
  4. É só verificar se existe algum tile em cima de vc.
    local newPos = {x=pos.x, y=pos.y, z=pos.z, stackpos=0}
    local tile = getTileThingByPos(newPos)
    if tile.uid == 0 then
    --não existe nada
    else
    --existe chão/telhado
    end
  5. No script da evolução precisa remover o o item. doRemoveItem(item.uid) O primeiro script não é catch e sim go/back
  6. Kydrai

    Sistema De Evolução

    Faz o teste aí: actions/scripts/actions.xml <action itemid="ITEMID" event="script" value="evolution.lua"/> actions/scripts/evolution.lua local evo = { ["Minotaur"] = "Minotaur Mage", ["Rat"] = "Cave Rat", } function onUse(cid, item, fromPosition, itemEx, toPosition) if isMonster(itemEx.uid) and getCreatureMaster(itemEx.uid) == cid then local monster = getCreatureName(itemEx.uid) if evo[monster] then local health, maxHealth = getCreatureHealth(itemEx.uid), getCreatureMaxHealth(itemEx.uid) doRemoveCreature(itemEx.uid) local summon = doCreateMonster(evo[monster], toPosition) doConvinceCreature(cid, summon) doCreatureAddHealth(summon, health-maxHealth) doSendMagicEffect(getThingPos(summon), CONST_ME_FIREWORK_RED) return TRUE end end return FALSE end Para adicionar os monstros basta modificar essa parte: local evo = { ["Minotaur"] = "Minotaur Mage", ["Rat"] = "Cave Rat", ["Nome do monstro"] = "Nome da evolução", } Lembrando que letras minúsculas e maiúsculas fazem diferença. E que o monstro tem que poder ser "convencido" pelo player.
  7. @DeathAngels Esse script é pra TFS 0.3.6 E pelos seus erros é pq não existe a coluna no seu banco de dados. E você precisa executar a talk /installvip ou o comando sql: ALTER TABLE `accounts` ADD viptime INT(15) NOT NULL DEFAULT 0;
  8. Não havia necessidade do ",1". if (item == "left hand") then -- item não existe item Muita coisa desnecessária no começo. Esta meio estranho esse script aí. Principalmente no começo.
  9. Kydrai

    Doplayerremoveitem

    Tenta trocar: doPlayerRemoveItem(cid,102,1) Por: doRemoveItem(item.uid, 1) Ou então: function onUse(cid, item, frompos, item2, topos) local days = 15 -- dias que serão adicionados if doPlayerRemoveItem(cid,102,1) then addVipDays(cid, days) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você adicionou "..days.." dia(s) de vip, agora você possui "..getVipDays(cid).." dia(s) de vip.") end return TRUE end
  10. O do storage você usa quando o player compra vip: doPlayerSetStorageValue(cid, 5000, 1) Ai vai depender de como você ta fazendo pra saber onde por. Corrigi a mensagem e adicionei "doPlayerSetStorageValue(cid, 5000, 0)": function onLogin(cid) local vip = isVip(cid) if getVipTime(cid) > 0 and vip == FALSE then doPlayerSetStorageValue(cid, 5000, 0) -- Termina a VIP local townid = 1 doPlayerSetTown(cid, townid) local templePos = getTownTemplePosition(getPlayerTown(cid)) doTeleportThing(cid, templePos, false) setVipTime(cid, 0) doTeleportPlayers(cid, templePos) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua Vip acabou!") elseif vip == TRUE then local duration = getVipDate(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você possui "..getVipDays(cid).." dia(s) de vip."..(duration and (" Ela irá durar até "..duration..".") or "")) end return TRUE end
  11. Ele ja liberou o fly, pra quem quiser: http://www.xtibia.com/forum/topic/139829-mock-fly-system-10
  12. Esse fly realmente é bem melhor do que colocar tile no mapa todo. Ótimo script.
  13. doCreateTile(cid, tileid, pos) / doRemoveTile(pos) Eu prefiro modificar nas sources, mas, infelizmente, não é todo mundo que tem acesso as sources ou conseguem compilar. Aqui mostrarei um dos métodos que conheço para criar um tile onde não existe nada (útil num fly system por exemplo). Testado no TFS 0.3.6pl1. Com um pouco de observação, tentativa e pog eu descobri esse método a um tempo. Abra o arquivo lib/050-function.lua e adicione nele (detalhe corrigido pelo mock): function doCreateTile(tileid, pos) doCombatAreaHealth(0, 0, pos, 0, 0, 0, CONST_ME_NONE) doCreateItem(tileid, 1, pos) return true end function doRemoveTile(pos) doRemoveItem(doCreateItem(460, 1, pos)) end Se quiser testar (cria um tile em cima do player): function onSay(cid, words, param, channel) local pos = getCreaturePosition(cid) pos.z = pos.z - 1 doCreateTile(103, pos) end Com isso dá pra faze um fly system: A área seria: x x x x o x x x x x = tile o = tile + player Só teria que usar um onStepOut, verificar onde não existe tile e criar, remover os tiles antigos que não seriam utilizados e impedir que deixem items voando. E com algumas edições nas sources ainda pode-se fazer fly system que utiliza uma área de apenas um tile. Se alguém conhece outros métodos e puder compartlhar fique a vontade.
  14. Se puderem falar um pouco ou passar um tutorial sobre como funciona esse vip stats eu posso tentar ajudar. Ja me pediram isso antes, acho que seria bom pra colocar no meu tópico.
  15. Não gostei muito desse fly ai não, ta meio mal feito com umas coisas sem sentido.
  16. Nem precisava usar o sql ali. Faz assim: function onLogin(cid) if isVip(cid) == FALSE and getPlayerPromotionLevel(cid) == 2 then doPlayerSetPromotionLevel(cid, 1) end return TRUE end Ou então: function onLogin(cid) local voc = getPlayerVocation(cid) if isInArray({9, 10, 11, 12}, voc) and isVip(cid) == FALSE then doPlayerSetVocation(cid, voc-4) end return TRUE end
  17. Tenta assim: function onLogin(cid) if getVipTime(cid) > 0 and isVip(cid) == FALSE then local townid = 1 doPlayerSetTown(cid, townid) local templePos = getTownTemplePosition(getPlayerTown(cid)) doTeleportThing(cid, templePos, false) setVipTime(cid, 0) doTeleportPlayers(cid, templePos) local voc = getPlayerVocation(cid) if isInArray({9, 10, 11, 12}, voc) then doPlayerSetVocation(cid, voc-4) end db.executeQuery("UPDATE `players` SET `vocation` = (`vocation`-4) WHERE `account_id` = "..getPlayerAccountId(cid).." AND `vocation` >= 9 AND `vocation` <= 12;") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua Vip acabou!") else local duration = getVipDate(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você possui "..getVipDays(cid).." dia(s) de vip."..(duration and (" Ela irá durar até "..duration..".") or "")) end return TRUE end Só não sei se tem que mexer na coluna vocation ou promotion.
  18. "You are full" acho que é nos scripts mesmo. Coisas como account manager e o look só editando as sources do seu servidor. Algumas coisas são do cliente, como os botões, pra isso você pode usar um hex editor. Pra procurar os textos em todos os arquivos é só abrir o projeto no DEV e apertar Shift+Alt+F, e no Code::Blocks Ctrl+Shift+F.
  19. São boas informações, mas acho que ninguém se importa, eu pelo menos nunca ouvi falar de um processo sobre o assunto. Quanto ao 2, existe o cliente YATC também, só não é tão bom como o da Cip.
  20. Achei que ficou bem legal a skin. O único bug aqui é que ta aparecendo 2 vezes as mensagens de status dos usuários nos posts.
  21. Boa, mas da pra melhorar. Se você reparar vai ver que existe uma sequência de comandos se repete varias vezes. Muita coisa ai poderia ser colocada antes do if. E faltou um return depois do "doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.")".
  22. @Rapidash Provavelmente é porque vc não instalou a tabela, coloque o exemplo da talkaction e execute o comando /installvip.
  23. Não sei bem como é a promotion. Assim seria mudando o promotion level: function onLogin(cid) if getVipTime(cid) > 0 and isVip(cid) == FALSE then local townid = 1 doPlayerSetTown(cid, townid) local templePos = getTownTemplePosition(getPlayerTown(cid)) doTeleportThing(cid, templePos, false) doPlayerSetPromotionLevel(cid, 1) setVipTime(cid, 0) doTeleportPlayers(cid, templePos) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua Vip acabou!") else local duration = getVipDate(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você possui "..getVipDays(cid).." dia(s) de vip."..(duration and (" Ela irá durar até "..duration..".") or "")) end return TRUE end E assim mudando pela vocação: function onLogin(cid) if getVipTime(cid) > 0 and isVip(cid) == FALSE then local townid = 1 doPlayerSetTown(cid, townid) local templePos = getTownTemplePosition(getPlayerTown(cid)) doTeleportThing(cid, templePos, false) local voc = getPlayerVocation(cid) if voc >= 9 then doPlayerSetVocation(cid, voc-4) end setVipTime(cid, 0) doTeleportPlayers(cid, templePos) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua Vip acabou!") else local duration = getVipDate(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você possui "..getVipDays(cid).." dia(s) de vip."..(duration and (" Ela irá durar até "..duration..".") or "")) end return TRUE end
  24. @felipedorgas Seria parecido com o onLogin, só precisaria colocar a função doPlayerSetPromotionLevel(cid, level). @psybreak Esse script não é por storage. @lXlSasukelXl Vlw pelo comentário.
  25. @dulpforever Acabei de testar e funciona normalmente. Tem certeza que colocou o script de login corretamente? Tenta usar o script dessa forma abaixo, assim ele irá mostrar o tempo caso a vip não tenha acabado. function onLogin(cid) if getVipTime(cid) > 0 and isVip(cid) == FALSE then local townid = 1 doPlayerSetTown(cid, townid) local templePos = getTownTemplePosition(getPlayerTown(cid)) doTeleportThing(cid, templePos, false) setVipTime(cid, 0) doTeleportPlayers(cid, templePos) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua Vip acabou!") else local duration = getVipDate(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você possui "..getVipDays(cid).." dia(s) de vip."..(duration and (" Ela irá durar até "..duration..".") or "")) end return TRUE end
  • Quem Está Navegando   0 membros estão online

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