Postado Abril 23, 2013 12 anos Olá, já pesquisei em varios locais esse tipo de sistema, mais nunca achei! montei no otserv um local onde existe 4 portas com 1 alavanca dentro... e gostaria que cada porta fosse uma vocação, e players a partir do level 8 entram lá e trocam a vocação quantas vezes quiser para qual vocação quiser, para entender melhor, olhe a foto : Agradeço desde já!
Postado Abril 23, 2013 12 anos Não é necessário fazer nada na porta e sim nas alavancas. Crie um arquivo chamado changevoc.lua na pasta data/actions/scripts e cole isso dentro function onUse(cid, item, frompos, item2, topos) if item.uid == 30000 then doPlayerSetVocation(cid, 1) doSendMagicEffect(topos, 14) doPlayerSendMessage(cid, 22, 'You changed his vocation to sorcerer.') doRemoveCreature(cid) end if item.uid == 30001 then doPlayerSetVocation(cid, 2) doSendMagicEffect(topos, 14) doPlayerSendMessage(cid, 22, 'You changed his vocation to druid.') doRemoveCreature(cid) end if item.uid == 30002 then doPlayerSetVocation(cid, 3) doSendMagicEffect(topos, 14) doPlayerSendMessage(cid, 22, 'You changed his vocation to paladin.') doRemoveCreature(cid) end if item.uid == 30003 then doPlayerSetVocation(cid, 4) doSendMagicEffect(topos, 14) doPlayerSendMessage(cid, 22, 'You changed his vocation to knight.') doRemoveCreature(cid) end end Adicione a seguinte lina no arquivo actions.xml na pasta data/actions <action uniqueid="30000" event="script" value="changevoc.lua" /> <action uniqueid="30001" event="script" value="changevoc.lua" /> <action uniqueid="30002" event="script" value="changevoc.lua" /> <action uniqueid="30003" event="script" value="changevoc.lua" /> Spoiler local config = { delrey = getPlayerCarValue(cid, DELREY), cigarro = getPlayerCancer(cid, DERBY), prostituta = getPlayerAIDS(cid, cracuda), tresOitao = getPlayerRevorvi(cid, 38) } if(delrey == "Ligado" and cigarro == "Aceso" and prostituta == "No Colo" and tresOitao == "Carregado") then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Começou o fim de semana. #PAS") end
Postado Abril 24, 2013 12 anos Não é necessário fazer nada na porta e sim nas alavancas. Crie um arquivo chamado changevoc.lua na pasta data/actions/scripts e cole isso dentro function onUse(cid, item, frompos, item2, topos) if item.uid == 30000 then doPlayerSetVocation(cid, 1) doSendMagicEffect(topos, 14) doPlayerSendMessage(cid, 22, 'You changed his vocation to sorcerer.') doRemoveCreature(cid) end if item.uid == 30001 then doPlayerSetVocation(cid, 2) doSendMagicEffect(topos, 14) doPlayerSendMessage(cid, 22, 'You changed his vocation to druid.') doRemoveCreature(cid) end if item.uid == 30002 then doPlayerSetVocation(cid, 3) doSendMagicEffect(topos, 14) doPlayerSendMessage(cid, 22, 'You changed his vocation to paladin.') doRemoveCreature(cid) end if item.uid == 30003 then doPlayerSetVocation(cid, 4) doSendMagicEffect(topos, 14) doPlayerSendMessage(cid, 22, 'You changed his vocation to knight.') doRemoveCreature(cid) end end Adicione a seguinte lina no arquivo actions.xml na pasta data/actions <action uniqueid="30000" event="script" value="changevoc.lua" /> <action uniqueid="30001" event="script" value="changevoc.lua" /> <action uniqueid="30002" event="script" value="changevoc.lua" /> <action uniqueid="30003" event="script" value="changevoc.lua" /> Muito bom cara, ótimo ver alguém que se empenha em ajudar os outros {:. Tipo, com tabelas você reduz isso ai bastante, dá uma olhada: local vocs = { [30000] = 1, [30001] = 2, [30002] = 3, [30003] = 4, } function onUse(cid, item, frompos, itemEx, topos) local voc = vocs[item.uid] if voc then doPlayerSetVocation(cid, voc) doSendMagicEffect(topos, 14) doPlayerPopupFYI(cid, "Now you're ".. getVocationInfo(voc).description) .. ".") end return true end -"Supra Omnes Lux Lucis" - Acima de todos brilha a Luz -
Postado Abril 24, 2013 12 anos Obrigado pelo elogio, sou muito novo na área de script, faz um mês que comecei a estudar isso. Obrigado pela dica. Essa técnica se aplica em qualquer script que for usar varios Unique ID? Att. Giovani Rodrigo Spoiler local config = { delrey = getPlayerCarValue(cid, DELREY), cigarro = getPlayerCancer(cid, DERBY), prostituta = getPlayerAIDS(cid, cracuda), tresOitao = getPlayerRevorvi(cid, 38) } if(delrey == "Ligado" and cigarro == "Aceso" and prostituta == "No Colo" and tresOitao == "Carregado") then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Começou o fim de semana. #PAS") end
Postado Abril 24, 2013 12 anos Não seria exatamente uma técnica, xD. Seria mais como uma funcionalidade que a linguagem Lua nos proporciona {: Dá uma lida nesses tutoriais http://tibiaking.com/forum/topic/18196-aulas-de-scripting-lua/ Tenho certeza que te ajudarão bastante. -"Supra Omnes Lux Lucis" - Acima de todos brilha a Luz -
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.