local voca = 12 -- Mude para a vocação que quiser function onUse(cid, item, frompos, item2, topos) if not isPlayer(item2.uid) then doPlayerSendCancel(cid, "Isto não e um player") return false end if getCreatureName(item2.uid) ~= getCreatureName(cid) then doPlayerSendCancel(cid, "Use a runa em você") return false end doPlayerSetVocation(cid, voca) doRemoveItem(item.uid) return true end
info
Grupo: Infante
Registrado: 04/03/11
Posts: 1.6k
Reputação: +393
Char no Tibia: No Have

info
Grupo: Visconde
Registrado: 28/07/12
Posts: 273
Reputação: +26
Char no Tibia: Kisame of Tenebra

explica melhor.
info
Grupo: Herói
Registrado: 14/12/10
Posts: 3.6k
Reputação: +846
Gênero: Masculino

Fiz esse, não testei, veja se funciona! Na pasta data/actions/scripts, você cria um arquivo chamado vocitem.lua, adicione isso dentro:
local voc = {
[1]=5, [2]=6, [3]=7, [4]=8}
function onUse (cid,item,frompos,item2,topos)
if item.itemid == XXX then
setPlayerStorageValue (cid,9339,1)
doPlayerSetVocation(cid, voc[(getPlayerVocation(cid)])
end
else
if getPlayerStorageValue (cid,9339) ~= 1 then
doPlayerSendTextMessage (cid,"Você já trocou sua vocação!")
end
return TRUE
end
Em actions.xml adicione essa tag:
<action itemid="XXX" event="script" value="vocitem.lua"/>
No script e na tag, aonde você encontrar as letra "XXX" basta mudar para o ID do seu item! E no ínicio do script aonde está os números, basta você mudar. Eu coloquei para knight virar elite, etc. Segunda Promotion entende? Você quer uma única vocation ou assim msm?
Editado Dezembro 11 por Roksas
info
Grupo: Infante
Registrado: 04/03/11
Posts: 1.6k
Reputação: +393
Char no Tibia: No Have

#topic:
Procure uma linha +/- assim, e me mande a parte que tem ela.
doRemoveItem(item.uid)
[color=#ff0000]local voca = 12 -- Mude para a vocação que quiser function onUse(cid, item, frompos, item2, topos) if not isPlayer(item2.uid) then doPlayerSendCancel(cid, "Isto não e um player") return false end if getCreatureName(item2.uid) ~= getCreatureName(cid) then doPlayerSendCancel(cid, "Use a runa em você") return false end[/color] doPlayerSetVocation(cid, voca) doRemoveItem(item.uid) return true end
Coisas inuteis.
Editado Dezembro 11 por iunix
info
Grupo: Infante
Registrado: 04/03/11
Posts: 1.6k
Reputação: +393
Char no Tibia: No Have

#topic:
Procure uma linha +/- assim, e me mande a parte que tem ela.
doRemoveItem(item.uid)
[color=#ff0000]local voca = 12 -- Mude para a vocação que quiser function onUse(cid, item, frompos, item2, topos) if not isPlayer(item2.uid) then doPlayerSendCancel(cid, "Isto não e um player") return false end if getCreatureName(item2.uid) ~= getCreatureName(cid) then doPlayerSendCancel(cid, "Use a runa em você") return false end[/color] doPlayerSetVocation(cid, voca) doRemoveItem(item.uid) return true endCoisas inuteis.
Coisas Inúteis?
Pelo que eu entendi do pedido ele quer um item que ao dar use with(tipo de runa) no player ele receba uma nova vocação.
#topic:
Procure uma linha +/- assim, e me mande a parte que tem ela.
doRemoveItem(item.uid)
[color=#ff0000]local voca = 12 -- Mude para a vocação que quiser function onUse(cid, item, frompos, item2, topos) if not isPlayer(item2.uid) then doPlayerSendCancel(cid, "Isto não e um player") return false end if getCreatureName(item2.uid) ~= getCreatureName(cid) then doPlayerSendCancel(cid, "Use a runa em você") return false end[/color] doPlayerSetVocation(cid, voca) doRemoveItem(item.uid) return true endCoisas inuteis.
Coisas Inúteis?
Pelo que eu entendi do pedido ele quer um item que ao dar use with(tipo de runa) no player ele receba uma nova vocação.
Não estou falando do pedido, e sim da maneira que você criou ele. Você criou uma checagem para ver se é um player, mas na verdade é uma action, e outras criaturas não executam actions. Você deveria ter pensado nisso.
Cara, preste atenção no script do caotic:
function onUse(cid, item, frompos, item2, topos)
O player fez o pedido de usar como uma runa nele mesmo, ou seja, (item2(use with...)).
caotic colocou:
if not isPlayer(item2.uid) then if getCreatureName(item2.uid) ~= getCreatureName(cid) then
Para o player não usar o item (item2(use with...)) em um monstro ou em outro player, somente nele mesmo.
Quem deveria ter pensado nisso é voce.
Estou sem Rep - agora.
Editado Dezembro 11 por HidekiKty
local voca = 12 -- Mude para a vocação que quiser function onUse(cid, item, frompos, item2, topos) if not isPlayer(item2.uid) then doPlayerSendCancel(cid, "Isto não e um player") return false end if getCreatureName(item2.uid) ~= getCreatureName(cid) then doPlayerSendCancel(cid, "Use a runa em você") return false end doPlayerSetVocation(cid, voca) doRemoveItem(item.uid) return true end
if not isPlayer(item2.uid) then doPlayerSendCancel(cid, "Isto não e um player") return false end if getCreatureName(item2.uid) ~= getCreatureName(cid) then doPlayerSendCancel(cid, "Use a runa em você") return false end
Duas checagens que poderiam ser substituídas por uma só
if getCreatureName(item2.uid) ~= getCreatureName(cid) then
Por que não usar direto assim?
if item2.uid ~= cid then
E o fato de não ter indentação só mostra que é um script de iniciante. Só acho que ele ser sádico e frio com os outros é abrir a porta para os outros serem sádicos e frios com ele.
function onUse(cid, item, frompos, item2, topos) if cid ~= item2.uid then return doPlayerSendCancel(cid, "Você deve usar a runa em você mesmo.") end doPlayerSetVocation(cid, 1) return doRemoveItem(item.uid) end
Editado Dezembro 11 por iunix
Tudo bem amigo, mas esse é um tópico de Pedido, ou seja, todos que quiserem ajudar podem dar suas idéias até que o autor se satisfaça.
caotic quis fazer desse modo, então não há o que questionar. Apenas faça do seu jeito em vez de atrapalhar a postagem com correções e comentários desnecessários.
Você não expecificou corretamente quantas vocations seriam, então fiz 2 opções.
Uma promotion para cada vocation, ou seja, (druid(elder druid), sorcerer(master sorcerer), paladin(royal paladin), knight(elite knight).
Abra a pasta data/actions/scripts e crie um arquivo chamado itemvocation.lua
Adicione o script:
local config = {
voc = getPlayerVocation(cid),
notp = isPlayer(item2.iud),
cre1 = getCreatureName(item2.uid),
cre2 = getCreatureName(cid),
}
function onUse(cid, item, frompos, item2, topos)
if not config.notp or config.cre1 ~= config.cre2 then
doPlayerSendCancel(cid, "Você só pode usar em si mesmo.")
return false
end
if voc <= 4 and getPlayerItem(cid, item2.uid) >= 1 then
doPlayerRemoveItem(cid, item2.uid)
doPlayerSetVocation(cid, voc+4)
elseif voc >=5 then
doPlayerSendTextMessage(cid, 22, "Você já mudou de vocação.")
end
return true
end
end
ou, uma vocation expecífica para ser mudada a outra expecífica.
Adicione o script ao mesmo arquivo já criado como na opção anterior (itemvocation.lua):
local config = {
newvoc = 2,
oldvoc = 1,
notp = isPlayer(item2.iud),
cre1 = getCreatureName(item2.uid),
cre2 = getCreatureName(cid),
}
function onUse(cid, item, frompos, item2, topos)
if not config.notp or config.cre1 ~= config.cre2 then
doPlayerSendCancel(cid, "Você só pode usar em si mesmo.")
return false
end
if getPlayerVocation(cid) == config.oldvoc then
doPlayerRemoveItem(cid, item2.uid)
doPlayerSetVocation(cid, config.newvoc)
elseif getPlayerVocation(cid) == config.newvoc then
doPlayerSendTextMessage(cid, 22, "Você já mudou de vocação.")
end
return true
end
end
Em newvoc é o ID da nova vocation que o player receberá, e em oldvoc é o ID da vocation que o player precisa ter para mudar para a nova, ou seja, usar o item.
O resto, não modifique.
Agora na pasta data/actions abra o arquivo actions.xml
Adicione a tag:
<action itemid="xxxx" event="script" value="itemvocation.lua"/>
Em xxxx mude para o ID do item que será usado pelo player.
PS: A tag pode ser usada para ambas opções.
Editado Dezembro 11 por HidekiKty
info
Grupo: Marquês
Registrado: 22/07/12
Posts: 1.1k
Reputação: +400
Gênero: Masculino
Char no Tibia: Luck Oake

Galera, por favor, sem discussões aqui. Se concentrem em apenas atender o pedido.
Iunix, talvez ele tenha identado o código com a tecla TAB, mas o CODE do XTibia quebra essa identação, só permite se usar a barra de espaço. Ou talvez simplesmente não tenha identado mesmo.
Bom, de qualquer maneira, apenas não fiquem discutindo.
Editado Dezembro 11 por LuckOake
info
Grupo: Lorde
Registrado: 05/06/12
Posts: 2.2k
Reputação: +215
Gênero: Masculino

@Iunix
Você é usuario novo e ja está arrumando confusão? Evite fazer comentarios do tipo
Coisas inuteis.
Por favor não critique ninguem ou script de alguem, se o script dele estiver errado informe o erro, espero que seja seu ultimo aviso, se insistir em criticar ou ofender será negativado. Siga o conselho do Luck e não tera problemas.
info
Grupo: Marquês
Registrado: 22/07/12
Posts: 1.1k
Reputação: +400
Gênero: Masculino
Char no Tibia: Luck Oake

@Iunix
Você é usuario novo e ja está arrumando confusão? Evite fazer comentarios do tipo
Coisas inuteis.
Por favor não critique ninguem ou script de alguem, se o script dele estiver errado informe o erro, espero que seja seu ultimo aviso, se insistir em criticar ou ofender será negativado. Siga o conselho do Luck e não tera problemas.
@Yan18, não precisava comentar isso, eu já dei o aviso pra ele. E de qualquer maneira, ele tentou ajudar também, não vejo problemas em criticar o erro do outro, afinal é expondo os erros que você melhora.
OBS: Ele não é um user novo. Se você olhar a data de criação da conta, verá que ele é de 2007.
Editado Dezembro 11 por LuckOake
info
Grupo: Lorde
Registrado: 05/06/12
Posts: 2.2k
Reputação: +215
Gênero: Masculino

@Iunix
Você é usuario novo e ja está arrumando confusão? Evite fazer comentarios do tipo
Coisas inuteis.
Por favor não critique ninguem ou script de alguem, se o script dele estiver errado informe o erro, espero que seja seu ultimo aviso, se insistir em criticar ou ofender será negativado. Siga o conselho do Luck e não tera problemas.
@Yan18, não precisava comentar isso, eu já dei o aviso pra ele. E de qualquer maneira, ele tentou ajudar também, não vejo problemas em criticar o erro do outro, afinal é expondo os erros que você melhora.
OBS: Ele não é um user novo. Se você olhar a data de criação da conta, verá que ele é de 2007.
Digo novo que ele está começando a postar agora, o usuario ja foi avisado, entao vamos parar por aqui, a partir de agora só poste se for referente ao tópico.







info
Grupo: Visconde
Registrado: 28/07/12
Posts: 273
Reputação: +26
Char no Tibia: Kisame of Tenebra
Gostaria de um script que quando você clica com o botao direito você muda sua vocação.
Explicando :
Crio uma quest e nesta quest vem um item chamado " NEW VOC " que o id é xxxx, após eu fazer esta quest eu recebi o item que o id xxxx intão eu aperto com o botão direito nele e mudo a minha vocação para a numero "xxx" mais apos usar o item é excluido ou seja como se fosse uma runa você usa em você e ela some.