Pasta Enciclopedia com todos os links de outros tutoriais !
http://www.xtibia.com/forum/Pasta-Data-Enc...r-E-t99746.html
Prova I
São exercicios mais "legais" do que você ve na internet. A ideia base dessa dezena de tutoriais é vc virar um scripter
LUA não programador
Scripter - Faz alguns scripts voltado a uma area da programação da linguagem. Geralmente não ganha lucros com eles.Programador - Normalmente formado e entende toda a area. Normalmente lucra com isso.
Ela terá 12 questões sendo seis de criação de scripts em actions e seis de correção de erros. A ideia é tentar aprender com erros comuns, por isso não peço para enviarem por PM. Já que ficarei chato!
Para usar spoiler adicione as tags [spoiler] e [/spoiler]
Dicas :
1 - Mesmo que não consiga tente fazer todo o tutorial.
2 - Leia todos meus tutoriais e se possivel outros. O importante é você aprender e não sua nota
3 - Faça com calma e não copie de ninguem.
Regras para quem for fazer :
1 - Poste todos os exercicios em spoiler de uma vez. Topicos editados não serão considerado como validos.
2 - Eu avaliarei o seu script através de sua "logica", erros pequenos serão tolerados.
3 - Se você achar minha correção errada (já que não sou perfeito) poderá reclamar via PM (não me xingue xD).
4 - Puxa saquismo não vale nota (quem sabe um deposito)
5 - A nota não valerá nada, apenas uma maneira de você saber como está indo em direção a programação.
6 - Peço que não copiem de outros usuarios ou a minha resposta. EM tese confiarei em todos. Não se faça de esperto
que depois poderá se dar mal.
7- As respostas só serão postadas futuramente. (haha!)
Usarei também scripts que normalmente me pedem via msn ou PM.
Criação de Scripts
1- Crie uma alavanca que faça essa ponte de 4 sqm abrir e fechar.
2- Essa quest é dividida em duas partes. Na primeira parte abrange a parte maior, ela deverá dar 4 itens diferentes (a sua escolha)
e o player poderá pegar apenas uma. Na sala menor, o player só poderá abrir a porta se for promotion e ter feito a primeira quest.
O item da segunda parte deverá ser uma bag com 100 crystal coin e um ring of the sky dentro. Todos os baus de quest devem checar se há capacidade no player.
3- Clube Dos sexos (sexos não sexo seu tarado!). Criar 2 salas. Na da esquerda apenas mulheres com o colar golden amulet (id 2130) no pescoço poderá entrar.
No direito apenas homens com o colar ancient amulet (id 2142) poderão entrar. Caso contrario não tem colar deverá mandar uma mensagem.
Caso não haja o sexo deverá aparecer uma frase de erro a gosto e do modo desejado.
4- Macumba do Pharao. Nesse script você deverá fazer o player colocar 4 frutas (uma em cada coal basin) e depois aperta a alavanca.
Se elas tiverem certas você habilita ele para abrir a porta de permissão. Para a alavanca funcionar, ele tem que ter level acima de 50.
No caso não prescisa fazer script da porta de permissão, já que há uma maneira de usa-la sem criar script que deverá ser explicada.
5 - Quest do inicio. Faça um bau :
Que apenas level 9 pode abrirEle deverá ter uma vocation (druid,sorcerer,paladin ou knight)
Ela deve dar pelo menos um item diferente para cada vocation.
Se ele for knight ela deverá dar skills 50 (de shielding e axe) para ele (skills 50 não + 50 skills)
Se ele for Paladin ela deverá dar skills 45 (de distance e shielding)
Se ele for druid ou sorcerer deverá dar magic level 40.
O player só poderá fazer uma vez.
Caso ele tente denovo deverá ficar com 1 de vida e acontecer algum efeito magico nele.
6 - Modifique a fishing rod para pescar crocodilos com fish (qualquer 1), ele deverá ser sumonado na frente do player (a leste dele)
E um peixe deve ser removido. Caso isso aconteça ele não pescará junto um peixe normal.
Caso ele não tenha minhoca nem peixe ele pescará botas "podres" (não toda hora)
Parte II - Correçao de erros
Essa parte terá uma duvida o script e você terá que corrigir.
1 - Debug no tibia 8.4
Lol. Deu bug no meu tibia alguem me ajuda ?
Brincadeira xD. Normalmente é essas porcaria que postam nas sessão de duvida.
Erro ao carregar scripts : Nenhum.Erro ao usar o item : Debug no tibia ao usar o item.
function onUse(cid, item, frompos, item2, topos) sorte = math.random(1,6) pos = getPlayerPosition(cid) if item.itemid == 6567 then doSendMagicEffect(pos,22) if sorte == 1 then doPlayerSay(cid,'Ho ho ho!',16) elseif sorte == 2 then doPlayerSay(cid,'Jingle bells, jingle bells..',180) elseif sorte == 3 then doPlayerSay(cid,'Have you been naughty?',180) elseif sorte == 4 then doPlayerSay(cid,'Have you been nice?',180) elseif sorte == 5 then doPlayerSay(cid,'Merry Christmas!',180) elseif sorte == 6 then doPlayerSay(cid,'Can you stop squeezing me now... I m starting to feel a little sick.',16) end end end
2 - Problema ao usar machete.
Erro ao carregar scripts : NenhumErro ao usar o item : [20/01/2009 01:18:42] data/actions/scripts/tools/machete.lua:3: attempt to index global 'item2' (a nil value)
[20/01/2009 01:18:42] stack traceback:
[20/01/2009 01:18:42] data/actions/scripts/tools/machete.lua:3: in function <data/actions/scripts/tools/machete.lua:1>
script
function onUse(cid, item, fromPosition, itemEx, toPosition) if itemEx.itemid == 2782 then doTransformItem(item2.uid, 2781) doDecayItem(itemEx.uid) return TRUE end return destroyItem(cid, itemEx, toPosition) end
3 - Frase não é exibida inteira. O servidor exibe apenas you don't. Por que ?
Erro ao carregar scripts : NenhumErro ao usar o item : nenhum
function onUse(cid, item, fromPosition, itemEx, toPosition) if item.itemid == 2148 and item.type == 100 then doChangeTypeItem(item.uid, item.type - item.type) doPlayerAddItem(cid, ITEM_PLATINUM_COIN, 1) doSendAnimatedText(fromPosition, "You don't have money", TEXTCOLOR_PLATINUMBLUE) end end
4 - Para mim a sintaxe está certa, porém o servidor não teleporta o player. Mesmo ele tendo o storage
Erro ao carregar scripts : NenhumErro ao usar o item : [20/01/2009 01:35:21] Lua Script Error: [Action Interface]
[20/01/2009 01:35:21] data/actions/scripts/gravestone.lua:onUse
[20/01/2009 01:35:21] z
function onUse(cid, item, fromPosition, itemEx, toPosition) newnPosition = {x=1904, y=1006, z=8} if item.uid == 32194 and getPlayerStorageValue(cid,15005) == 8 then doTeleportThing(cid,newnposition) doSendMagicEffect(newnposition,10) else return 0 end return 1 end
5 -
Erro ao carregar scripts : [20/01/2009 01:38:30] Warning: [Event::loadScript] Can not load script. data/actions/scripts/makes.lua[20/01/2009 01:38:30] data/actions/scripts/makes.lua:68: 'end' expected (to close 'function' at line 4) near '<eof>'
[20/01/2009 01:38:30] Warning: [Event::loadScript] Can not load script. data/actions/scripts/makes.lua
[20/01/2009 01:38:30] data/actions/scripts/makes.lua:68: 'end' expected (to close 'function' at line 4) near '<eof>'
[20/01/2009 01:38:30] Warning: [Event::loadScript] Can not load script. data/actions/scripts/makes.lua
[20/01/2009 01:38:30] data/actions/scripts/makes.lua:68: 'end' expected (to close 'function' at line 4) near '<eof>'
[20/01/2009 01:38:30] Warning: [Event::loadScript] Can not load script. data/actions/scripts/makes.lua
[20/01/2009 01:38:30] data/actions/scripts/makes.lua:68: 'end' expected (to close 'function' at line 4) near '<eof>'
[20/01/2009 01:38:30] Warning: [Event::loadScript] Can not load script. data/actions/scripts/makes.lua
[20/01/2009 01:38:30] data/actions/scripts/makes.lua:68: 'end' expected (to close 'function' at line 4) near '<eof>'
[20/01/2009 01:38:30] Warning: [Event::loadScript] Can not load script. data/actions/scripts/makes.lua
[20/01/2009 01:38:30] data/actions/scripts/makes.lua:68: 'end' expected (to close 'function' at line 4) near '<eof>'
[20/01/2009 01:38:30] Warning: [Event::loadScript] Can not load script. data/actions/scripts/makes.lua
[20/01/2009 01:38:30] data/actions/scripts/makes.lua:68: 'end' expected (to close 'function' at line 4) near '<eof>'
[20/01/2009 01:38:30] Warning: [Event::loadScript] Can not load script. data/actions/scripts/makes.lua
[20/01/2009 01:38:30] data/actions/scripts/makes.lua:68: 'end' expected (to close 'function' at line 4) near '<eof>'
Erro ao usar o item : não dá
Script
--Function by Ta4e for Tibia 8.22-- --Uses grounds of RIkezinho action-- --Halloween,Cake and Bread systems like in tibia function onUse(cid, item, frompos, item2, topos) topos = {x=topos.x,y=topos.y,z=topos.z} --Bread and cakes-- if item.itemid == 2694 then if item2.itemid == 1381 or item2.itemid == 1382 or item2.itemid == 1383 or item2.itemid == 1384 then doRemoveItem(item.uid,1) doPlayerAddItem(cid,2692,1) elseif item.itemid == 2692 then if item2.itemid == 1775 or item2.itemid == 2005 then if item2.type == 1 then doChangeTypeItem(item2.uid,0) doTransformItem(item.uid,2693) elseif item2.type == 6 then doChangeTypeItem(item2.uid,0) doTransformItem(item.uid,6277) end end elseif item.itemid == 2693 then if item2.itemid == 1786 or item2.itemid == 1788 or item2.itemid == 1790 or item2.itemid == 1792 or item2.itemid == 6356 or item2.itemid == 6538 or item2.itemid == 6360 or item2.itemid == 6362 then doTransformItem(item.uid,2689) end elseif item.itemid == 6277 then if item2.itemid == 1786 or item2.itemid == 1788 or item2.itemid == 1790 or item2.itemid == 1792 or item2.itemid == 6356 or item2.itemid == 6338 or item2.itemid == 6360 or item2.itemid == 6362 then doRemoveItem(item.uid,1) doCreateItem(6278,1,topos) elseif item2.itemid == 6574 then doTransformItem(item.uid,8846) doRemoveItem(item2.uid,1) end elseif item.itemid == 8846 then if item2.itemid == 1786 or item2.itemid == 1788 or item2.itemid == 1790 or item2.itemid == 1792 or item2.itemid == 6356 or item2.itemid == 6538 or item2.itemid == 6360 or item2.itemid == 6362 then doTransformItem(item.uid,8847) end elseif item.itemid == 6280 then doTransformItem(item.uid,6279) doSendMagicEffect(topos,2) name = getPlayerName(cid) doCreatureSay (cid, name ..' blew out the candle.', TALKTYPE_ORANGE_1) --Pumpkins-- elseif item.itemid == 2566 then if item2.itemid == 2683 then doTransformItem(item2.uid,2096) end elseif item.itemid == 2096 then if item2.itemid == 2048 then doTransformItem(item.uid,2097) doRemoveItem(item2.uid,1) end end return 1 end
6 - Corrigido o script acima remova funções duplicadas (aquelas que podem ser tiradas da condicional e do else)
Use arrays se possivel e melhore-o se possivel
Esse script tem a chamada notal pessoal e praticamente não tem certo e errado.
BOA SORTE!
Respostas serão postadas em no minimo 1 semana.