Ir para conteúdo

Oneshot

Marquês
  • Total de itens

    1347
  • Registro em

  • Última visita

  • Dias Ganhos

    36

Tudo que Oneshot postou

  1. Se eu não me engano, retornar false em um creaturescript onAdvance funciona como um limitador de skills e maglevel. Ficaria mais ou menos assim. local skills = { [sKILL_FIST] = 400, [sKILL_CLUB] = 400, [sKILL_SWORD] = 400, [sKILL_AXE] = 400, [sKILL_DISTANCE] = 400, [sKILL_SHIELD] = 400, [sKILL__MAGLEVEL] = 300 } function onAdvance(cid, skill, oldLevel, newLevel) if skill == SKILL__LEVEL then return true end if not skills[skill] then return true end if newLevel > skills[skill] then return false end end Abraços.
  2. Oneshot

    Adios

    Obrigado, mas eu voltei atrás e o tópico já havia até afundado. Quando for assim, olhem a data do tópico ou do último post, antes de pensarem em postar. Vou reportar para fecharem o tópico. Abçs.
  3. doCreatureSetStorage(cid, 3000, getCreatureStorage(cid, 5000))
  4. Desculpe a grosseria, mas se contente com o que foi disponibilizado, ou comece a estudar LUA para fazer seus scripts como quer.
  5. Não basta apenas alterar o arquivo changegold.lua. São necessárias algumas variadas alterações, como seguem abaixo. 1. Abra o arquivo items.xml e procure pelo item que você deseja como dinheiro, como exemplo, usaremos o gold nugget <item id="2157" article="a" name="gold nugget" plural="gold nuggets"> <attribute key="weight" value="10" /> </item> 2. Adicione o atributo worth ao item, o valor do atributo deve ser quanto uma unidade do item valeria. Por exemplo, a crystal coin vale 10000, se quiséssemos um item que valesse 100 crystal coins, então teríamos o valor 1000000. <item id="2157" article="a" name="gold nugget" plural="gold nuggets"> <attribute key="weight" value="10" /> <attribute key="worth" value="1000000" /> </item> 3. Agora, abra o arquivo 000-constant.lua, localizado em data/lib e procure por; ITEM_CRYSTAL_COIN Adicione logo abaixo: ITEM_GOLD_NUGGET = 2157 Você pode seguir o modelo para outras moedas, criando um nome de variável básico, seguido do ID do item. 4. Basta agora, editarmos o arquivo changegold.lua, seguindo o modelo proposto pelo arquivo, algumas revisões de servidores possuem arquivos de mais fácil edição.
  6. Oneshot

    Talkactions

    Crie um arquivo de nome staff.lua em data/talkactions/script, utilize o seguinte conteúdo: function onSay(cid, words, param, channel) local result = db.getResult("SELECT `name` FROM `players` WHERE `group_id` > 1 ORDER BY `group_id` DESC") local msg = "Server Staff\n\n" if result:getID() == -1 then while true do local name = result:getDataString("name") msg = msg .. name .."\n" if not result:next() then break end end end doPlayerPopupFYI(cid, msg) return true end Abra o arquivo talkactions.xml e adicione a seguinte chave <talkaction words="/staff" event="script" value="staff.lua"/> Fiz este código para listar em ordem decrescente de acesso todos os jogadores que não pertençam ao grupo padrão. Ou seja, até tutores serão listados.
  7. Respondi nos dois fóruns, abçs local positions = { {x = 1351, y = 1666, z = 5}, {x = 1352, y = 1666, z = 5}, {x = 1353, y = 1666, z = 5} } local gates = { [9485] = 9484, [9484] = 9485 } function onUse(cid, item, fromPosition, itemEx, toPosition) for _, position in ipairs(positions) do for fg, tg in pairs(gates) do local g = getTileItemById(position, fg) if g.uid > 0 then doTransformItem(g.uid, tg) end end end return true end
  8. Fala aê. Para impedir que os jogadores forjem em qualquer lugar e apenas em uma bigorna, usem a seguinte action. function onUse(cid, item, fromPosition, itemEx, toPosition) local recipe = nil if getTileItemById(toPosition, 2555).uid == 0 then doPlayerSendCancel(cid, "Sorry, you must put your ingredients in an anvil.") doSendMagicEffect(toPosition, CONST_ME_POFF) return true end for _, v in ipairs(Recipes) do recipe = v:get(toPosition) if(recipe ~= false) then break end end if(recipe) then recipe:create(cid) else doPlayerSendCancel(cid, "This is not a valid recipe.") end return true end Depois eu implemento um sistema de chances. Abraços.
  9. Oneshot

    Melhorias No Fórum

    Muito bom, ótimo trabalho. Um pequeno bug que acho que pode ser consertado, é fazer o IPB entender que a tecla TAB é um tipo de espaçamento maior na hora de escrever posts e tópicos. Além de melhorar organização de tópicos, finalmente códigos LUA ficariam indentados sem o auxílio do Pastebin, que não deixa de ser um ótimo BBCode.
  10. Garoto, você me surpreendeu mais uma vez. Conheço seu servidor, Subwat Extreme Fun e a família Oake, rsrs. Ótimo tutorial e vai ajudar bastante aqueles poucos que buscam aprender scripting. Quando digo poucos, digo a realidade, as pessoas se acomodaram um pouco demais e só sabem pedir e já não correm mais atrás. Seria muito interessante se elas ao menos abrissem os arquivos como era quase que obrigatório antigamente - os recursos eram meio escassos - então se você queria uma magia sequer, você mesmo tinha que abrir um arquivo e mudar as coisas até chegar no seu gosto. Parabéns.
  11. Acho que uma pic com o fundo equivalente ao título fica legal, por exemplo, o fundo do "Sou scripter" podia ser um código em LUA com 50% de opacidade.
  12. Nossa, notle2012, desse seu jeito aí o cara ia ter que criar 200 arquivos para 200 itens... inviável, não é?
  13. Bela iniciativa, Eitor, mas function banana(a, b) return a[b] ~= nil end Faz a mesma coisa que sua função sem precisar aumentar uma variável interna e tal.
  14. Oneshot

    Spell

    Na verdade, o brun123 só esqueceu de negativar os valores de retorno da função, para que o sistema entenda que é dano e não cura.
  15. A revisão do The Forgotten Server mais atual é disponibilizada no SVN privado da comunidade otland.net, o qual apenas doadores tem acesso.
  16. Bela dica, nem eu sabia dessa. Obrigado pela contribuição.
  17. Seu tutorial e sua iniciativa foram legais, mas o que ele tem de colorido, ele não tem de conteúdo. Desculpe a crítica, mas analisando seu tutorial, acho ele bastante superficial, você dá voltas e voltas, define os meta-métodos e só. Você podia ter começado dizendo que Lua não possui orientação a objetos e o uso das meta-tabelas é só um modo de contornar isso. Para mim, este é mais uma definição de meta-tabelas do que um tutorial de orientação a objetos, uma vez que uma aula/tutorial voltado a esse tema, deve girar em torno da definição de classe, atributo e método. Mesmo assim, não é sua culpa, pois você mesmo disse que adaptou o conteúdo de um blog e tal. Abração.
  18. Não necessariamente o arquivo deve estar no mesmo local de trabalho. local file = io.open(getDataDir().."/logs/bans/ban.txt/", "w") Os modos de leitura do arquivo são estes "r" -- modo de leitura "w" -- modo de escrita "a" -- modo de adição "r+" -- modo de atualização, preservando dados anteriores "w+" -- modo de atualização, apagando todos dados anteriores "a+" -- modo de atualização, preserva dados anteriores, novos dados apenas no fim do arquivo Vale lembrar também que quando você usa io.open direcionando para um arquivo que não existe, a função cria o arquivo.
  19. Você voltou, Jhon! Estava com um peso na consciência do caramba de ter sido a causa do seu banimento x_x Abraços.
  20. Não é possível com as funções existentes, creio que você já tentou usar um creaturescript onLook, não é? Acontece que a função doPlayerSetSpecialDescription só funciona com jogadores, justamente por causa do código dela nas sources: int32_t LuaInterface::luaDoPlayerSetSpecialDescription(lua_State* L) { //doPlayerSetSpecialDescription(cid, description) std::string description = popString(L); ScriptEnviroment* env = getEnv(); if(Player* player = env->getPlayerByUID(popNumber(L))) { player->setSpecialDescription(description); lua_pushboolean(L, true); } else { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } Mas acho que você pode tentar algo desse tipo, compilando uma nova função nas suas sources: int32_t LuaInterface::luaDoCreatureSetSpecialDescription(lua_State* L) { //doCreatureSetSpecialDescription(cid, description) std::string description = popString(L); ScriptEnviroment* env = getEnv(); if(Creature* creature = env->getCreatureByUID(popNumber(L))) { creature->setSpecialDescription(description); lua_pushboolean(L, true); } else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } Não tenho certeza se vai funcionar. Boa sorte.
  21. "(...) Caipirinha, 3 doses de 51 e uma dose de Velho Barreiro (...)" mt casashero ese mlq
  • Quem Está Navegando   0 membros estão online

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