-
Total de itens
1347 -
Registro em
-
Última visita
-
Dias Ganhos
36
Tudo que Oneshot postou
-
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.
-
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.
-
doCreatureSetStorage(cid, 3000, getCreatureStorage(cid, 5000))
-
Desculpe a grosseria, mas se contente com o que foi disponibilizado, ou comece a estudar LUA para fazer seus scripts como quer.
- 3 respostas
-
- plz alguém me arruma :)
- otserv
- (e 2 mais)
-
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.
-
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.
-
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
-
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.
-
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.
-
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.
- 19 respostas
-
- aprendendo
- scriptear
-
(e 2 mais)
Tags:
-
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.
-
Nossa, notle2012, desse seu jeito aí o cara ia ter que criar 200 arquivos para 200 itens... inviável, não é?
-
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.
-
pedido Pedido Distro The Forgotten Server 0.4_Svn Pra Versão 9.60
pergunta respondeu ao KennyConrad de Oneshot em Scripts
A revisão do The Forgotten Server mais atual é disponibilizada no SVN privado da comunidade otland.net, o qual apenas doadores tem acesso. -
Deixando Servidores 100% Em Português Sem Erros!
tópico respondeu ao KUNGLOW de Oneshot em Tutoriais de Scripting
Bela dica, nem eu sabia dessa. Obrigado pela contribuição. -
[Lua] Mega Tutorial De Oop [Avançado]
tópico respondeu ao SkyDangerous de Oneshot em Tutoriais de Scripting
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. -
[Lua] Escrevendo Em Um Arquivo [Básico]
tópico respondeu ao SkyDangerous de Oneshot em Tutoriais de Scripting
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. -
Você voltou, Jhon! Estava com um peso na consciência do caramba de ter sido a causa do seu banimento x_x Abraços.
-
Corno manso
-
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.
-
Deve ser tipo a cobertura
-
"(...) 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.