Ir para conteúdo
  • 0

Uma Nova Frase Quando Se Da Look


LuaniTa

Pergunta

Oii, desculpem meu primeiro topico e post ser um pedido mas estou precisando muitoo de um script

 

Seria um script que quando der look em um jogador apareça uma frase a mais.

 

Exemplo quando se da look normal sem um sistema ao qual estou pedindo: You see yourself. You are god.

 

Gostaria de saber se alguem consegue fazer para que quando completar uma missão que daria uma storage,

ganha-se uma frase a mais.

 

Exemplo: You see yourself. You are god. You are Zeus.

 

E tambem se posteriormente fize-se uma outra missão pude-se trocar esse nome por outro, ganhando assim uma nova storage.

 

Exemplo: You see yourself. You are god. You are Titan.

 

Ficaria muito agradecida se alguem fize-se isso. Darei rep+ como agradecimento, e logo logo compartilharei alguns scripts com o pessoal do Xtibiasmile_positivo.gif

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

data/creaturescripts/scripts showVocation

function onLook(cid, thing, position, lookDistance)
local table = {
[8080] = getPlayerSex(cid) == PLAYERSEX_MALE and "You are Zeus" or "frase do sexo female",
[8081] = getPlayerSex(cid) == PLAYERSEX_MALE and "You are Titan" or "frase do sexo female"
}
local a = table[getPlayerStorageValue(cid)]
if isPlayer(thing.uid) then
doPlayerSetSpecialDescription(thing.uid, "\n[Promotion: " .. a .."]")
end
return true
end

 

data\creaturescripts\creaturescripts.xml

<event type="look" name="showVoc" event="script" value="showVocation.lua"/>

 

login.lua

adiciona isso

registerCreatureEvent(cid, "showVoc")

Editado por notle2012
Link para o comentário
Compartilhar em outros sites

  • 0

Olaa Notle2012, tentei fazer tudo certinhu como você escreveu porem não funcionou, não estou conseguindo dar Look nos players, isso antes de ganhar a storage e depois de ganhar tambem naum consigo. Sera que tens que acrescentar algo?

 

Olaa Vodkart, tens como dar uma dica de como isso ficaria? no caso ficaria meio parecido com a do Notle?

Link para o comentário
Compartilhar em outros sites

  • 0


local specialDescriptions = {
[1] = {[0] = "a titan", [1] = "a titan"},
[2] = {[0] = "a demigoddess", [1] = "a demigod"},
[3] = {[0] = "a goddess", [1] = "a god"}
}

local storage = 8181

function onLook(cid, thing, position, lookDistance)
if not isPlayer(thing.uid) then
	return true
end

local n = getCreatureStorage(thing.uid, storage)
if not specialDescriptions[n] then
	return true
end

local sex = getPlayerSex(thing.uid)
if not specialDescriptions[n][sex] then
	return true
end

doPlayerSetSpecialDescription(thing.uid, "\n".. (sex == 0 and "She" or "He") .." is ".. specialDescriptions[n][sex] ..".")
return true
end

 

Siga o mesmo procedimento passado pelo notle2012, só trocando o script. O meu funcionará um pouco diferente, você só precisa ir colocando valores maiores em uma única storage.

 

Se a storage do jogador for igual a 1, então ele terá o título titan, caso seja igual a 2, passa a ser demigoddess/demigod, e por aí vai.

 

Abraços.

Editado por Oneshot
Link para o comentário
Compartilhar em outros sites

  • 0

function onLook(cid, thing, position, lookDistance)
if isPlayer(thing.uid) then
local type = getPlayerStorageValue(thing.uid, 89745)
doPlayerSetSpecialDescription(thing.uid, "\n "..(getPlayerSex(cid) == 0 and "She" or "He").." are "..(type < 0 and "Titan" or type == 1 and "Hefesto" or type == 2 and "Apolo" or type == 3 and "Poseidon" or type == 4 and "Hades" or type == 5 and "Zeus"))
end
return true
end

 

fiz usando 5 tipos de deuses/titan

 

a storage usada foi "89745"

 

então se o jogador tiver storage -1 ou 0 ele vai ser "titan"

 

Você pode usar da seguinte maneira

 

setPlayerStorageValue(cid, 89745, 1) -- vira Hefesto

setPlayerStorageValue(cid, 89745, 2) -- vira Apolo

setPlayerStorageValue(cid, 89745, 3) -- vira Poseidon

setPlayerStorageValue(cid, 89745, 4) -- vira Hades

setPlayerStorageValue(cid, 89745, 5) -- vira Zeus

Editado por Vodkart
Link para o comentário
Compartilhar em outros sites

  • 0

@All

 

Se Alguem Poder Me Ajudar.

O Script De Look Do Meu Ot Estao Nas Sources E Ele Ta Bugado

Ae Não Sei Como Fazer Um Script Que Quando Da LooK Aparece A Sua Vocaçao

Ae Seria o Seguinte Tal Numero De Vocaçao Apareceria Tal Nome =D

E E Isso

 

ABRASSS

Link para o comentário
Compartilhar em outros sites

  • 0

Ola Oneshot, testei seu script, não deu erro algun no tfs, deu para dar look nos players, mas deu um pequenino problema.. Falo com o NPC para ganhar a Storage, e continuo com a mesma frase no look. You see yourself. You are a afrodite.

No caso era pra ficar assim: You see yourself. You are a afrodite. She is Titan.

 

Ola Vodkart, seu script ficou parecido com o do notle quando dou look em player, não aparece nem uma informação, nem mesmo antes, nem mesmo depois de ganhar a storage huh.png

 

Meu NPC esta aqui:

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end

function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end

local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid

local exp = 15000
local t = {item1={2244,5}}

--[[
XXXX = ID DO ITEM
YY = QUANTIDADE DO ITEM
]]--

if(msgcontains(msg, 'certo') or msgcontains(msg, 'yes')) then
selfSay('Me traga 5 Almas do Tartaro e volte a falar comigo ou ja tens as {almas} do tartaro? ', cid)
talkState[talkUser] = 1
elseif msgcontains(msg, 'ervas') and talkState[talkUser] == 1  then
if getPlayerStorageValue(cid,5078) == -1 then
if(getPlayerItemCount(cid, t.item1[1]) >= t.item1[2]) then 
doPlayerRemoveItem(cid, t.item1[1], t.item1[2])
doPlayerAddExp(cid, exp)
setPlayerStorageValue(cid,8181,1)
selfSay('Muito Bem, agora ja podes entrar no Olimpo e sentar em um dos tronos Deuses !', cid)
talkState[talkUser] = 0
else
selfSay('voce ainda nao tem as ' .. t.item1[2] .. ' ' .. getItemNameById(t.item1[1]) .. '  que eu lhe pedi, va pegar e mostre que tens valor para ser um de nos.', cid)
talkState[talkUser] = 0
end
else
selfSay('Then not.', cid)
talkState[talkUser] = 0
end
elseif msg == "no" and talkState[talkUser] == 1 then
selfSay("Hmm..", cid)
talkState[talkUser] = 0
npcHandler:releaseFocus(cid)
end
return TRUE
end


npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

no caso estou usando a storage do Oneshot. setPlayerStorageValue(cid,8181,1)

 

Este npc esta certinhu né? Ou algo de errado nele para dar a storage?

Link para o comentário
Compartilhar em outros sites

  • 0

Fagundes para monstrar a vocação e simples:

 
function onLook(cid, thing, position, lookDistance) 
if isPlayer(thing.uid) then 
local str = " "..getPlayerName(cid).." Vocation  "..getPlayerVocationName(cid).." Level "..getPlayerLevel(cid).." "
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str)
end 
return true 
end

Link para o comentário
Compartilhar em outros sites

  • 0

cometeu o erro que todos os iniciantes cometem com creature scripts...

não um erro, mas esqueceu de uma coisinha

 

abra o login.lua (data/creaturescripts/scripts)

 

e procure por isso:

 

registerCreatureEvent(cid, "

 

você vai achar um monte de linha (provavelmente) dessas no seu login.lua, basta adicionar embaixo de alguma delas:

 

registerCreatureEvent(cid, "nome do seu evento")

 

O nome do seu evento você pega no creaturescripts.xml, quando você criou a tag.

 

 

Se não me engano, basta usar a função doPlayerSetSpecialDescription(cid, blabla) na hora que o NPC dá a storage ao player, pois essa special description fica pra sempre no player, e sempre que derem look nele, ela é mostrada.

O que você estão fazendo é sempre que dão look no player, muda a special description dele, mas coloca sempre o mesmo texto.

Editado por brun123
Link para o comentário
Compartilhar em outros sites

  • 0

Brun123, esse post foi a respeito a qual post?

 

Se for ao meu post, saliento que registrei sim no login.lua

Fis o que Oneshot me orientou a fazer. Esta como o Notle2012 postou, apenas substitui o script do Notle pelo do Oneshot em creaturescripts/scripts/showVocation.lua

 

E em login.lua ja esta registrado como registerCreatureEvent(cid, "showVoc")

Ignore-me se sua resposta foi a outro usuario rsrs

Link para o comentário
Compartilhar em outros sites

  • 0

Ué sai.. tenho quase certeza que fis certinhu, talvez seja o tfs, naum? 3.5 versão do tibia 8.54

 

Vou postar como eu fis aki.

 

Adicionei uma tag em Creaturescript.xml:

<event type="look" name="showVoc" event="script" value="showVocation.lua"/>

 

Adicionei um arquivo lua em creaturescripts/scripts/showVocation.lua:

function onLook(cid, thing, position, lookDistance)
if isPlayer(thing.uid) then
local type = getPlayerStorageValue(thing.uid, 89745)
doPlayerSetSpecialDescription(thing.uid, "\n "..(getPlayerSex(cid) == 0 and "She" or "He").." are "..(type < 0 and "Titan" or type == 1 and "Hefesto" or type == 2 and "Apolo" or type == 3 and "Poseidon" or type == 4 and "Hades" or type == 5 and "Zeus"))
end
return true
end

 

Adicionei em creaturescripts/scripts/login.lua:

registerCreatureEvent(cid, "showVoc")

 

Depois adicionei o npc.xml:

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Eva" script="data/npc/scripts/graduacoes/deuses.lua" walkinterval="2000" floorchange="0">
<health now="100" max="100"/>
<look type="226" head="38" body="79" legs="107" feet="114"/>
<parameters>
 <parameter key="message_greet" value="Ola, entao veio falar comigo porque quer ser entrar no Olimpo {certo}?"/>
</parameters></npc>

 

Adicionei em npc/scripts/graduacoes/deuses.lua:

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid
local exp = 15000
local t = {item1={2244,5}}
--[[
XXXX = ID DO ITEM
YY = QUANTIDADE DO ITEM
]]--
if(msgcontains(msg, 'certo') or msgcontains(msg, 'yes')) then
selfSay('Me traga 5 Almas do Tartaro e volte a falar comigo ou ja tens as {almas} do tartaro? ', cid)
talkState[talkUser] = 1
elseif msgcontains(msg, 'ervas') and talkState[talkUser] == 1  then
if getPlayerStorageValue(cid,5078) == -1 then
if(getPlayerItemCount(cid, t.item1[1]) >= t.item1[2]) then
doPlayerRemoveItem(cid, t.item1[1], t.item1[2])
doPlayerAddExp(cid, exp)
setPlayerStorageValue(cid,89745,1)
selfSay('Muito Bem, agora ja podes entrar no Olimpo e sentar em um dos tronos Deuses !', cid)
talkState[talkUser] = 0
else
selfSay('voce ainda nao tem as ' .. t.item1[2] .. ' ' .. getItemNameById(t.item1[1]) .. '  que eu lhe pedi, va pegar e mostre que tens valor para ser um de nos.', cid)
talkState[talkUser] = 0
end
else
selfSay('Then not.', cid)
talkState[talkUser] = 0
end
elseif msg == "no" and talkState[talkUser] == 1 then
selfSay("Hmm..", cid)
talkState[talkUser] = 0
npcHandler:releaseFocus(cid)
end
return TRUE
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Creio que fis tudo certo, naum?

Editado por LuaniTa
Link para o comentário
Compartilhar em outros sites

  • 0

mas você deu look em você mesma ou deu look num segundo char?

 

 

e está o npc pra vc

 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid
local msg = string.lower(msg)
local exp,t = 15000,{2244,5}
local s1,s2 = 15214,89745

if isInArray({'certo','right'}, msg) then
if getPlayerStorageValue(cid, s1) <= 0 then
talkState[talkUser] = 1
selfSay('Olá guerreiro, você pode me trazer '..t[2]..' '..getItemNameById(t[1])..'? {yes}', cid)
else
talkState[talkUser] = 2
selfSay('Já voltas-te bravo guerreiro! por acaso já tens as '..t[2]..' '..getItemNameById(t[1])..'? {yes}', cid)
end
elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then
selfSay('Muito bem então! Volte aqui quando tiver as '..t[2]..' '..getItemNameById(t[1])..' e será muito bem recompensado!', cid)
setPlayerStorageValue(cid,s1,1)
talkState[talkUser] = 0
elseif msgcontains(msg, 'yes') and talkState[talkUser] == 2 then
if getPlayerStorageValue(cid, s1) == 1 then
if doPlayerRemoveItem(cid, t[1], t[2]) then
doPlayerAddExp(cid, exp)
setPlayerStorageValue(cid,s2,1)
setPlayerStorageValue(cid,s1,2)
selfSay('Muito Bem, agora ja podes entrar no Olimpo e sentar em um dos tronos Deuses !', cid)
talkState[talkUser] = 0
else
selfSay('voce ainda nao tem as '..t[2]..' '..getItemNameById(t[1])..' que eu lhe pedi, va pegar e mostre que tens valor para ser um de nos.', cid)
talkState[talkUser] = 0
end
else
selfSay('Você já tem o acesso ao olimpo!', cid)
talkState[talkUser] = 0
end
elseif msg == "no" and talkState[talkUser] >= 1 then
selfSay("Hmm... ok.", cid)
talkState[talkUser] = 0
npcHandler:releaseFocus(cid)
end
return TRUE
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Editado por Vodkart
Link para o comentário
Compartilhar em outros sites

  • 0

Poxa vida.. verdade.. deu certo e eu não tinha visto, quando dou look em mim mesma naum aparecia nada.. rsrs

 

Mas se dou look em alguem que tenha a storage aparece wink.png

Sou muito tonta mesmosleep.png

 

Obrigada a todos pela ajuda. Naum sabia que aqui no forum podia dar apenas 1 reputation por dia, testei aqui e o script do Oneshot e o seu Vodkart derao certinhu.

Mostra apenas se der look em outro player e não em você mesmo, por isso nao sabia se estava funcionando, Obrigada denovo, gostei muito do forum positive.gif

Estarei voltando aqui no topico nos proximos 3 dias e estarei dando a reputation devida a todos pela exelente ajuda!

Link para o comentário
Compartilhar em outros sites

  • 0

Sou muito tonta mesmosleep.png

 

Concordo plenamente rsrsrs

 

Obrigada a todos pela ajuda. Naum sabia que aqui no forum podia dar apenas 1 reputation por dia, testei aqui e o script do Oneshot e o seu Vodkart derao certinhu.

 

Nem se esquenta com isso, REP é o de menos, o importante é que o seu pedido obteve sucesso.

 

Mostra apenas se der look em outro player e não em você mesmo, por isso nao sabia se estava funcionando, Obrigada denovo, gostei muito do forum positive.gif

Estarei voltando aqui no topico nos proximos 3 dias e estarei dando a reputation devida a todos pela exelente ajuda!

 

Errando que se aprende, ninguém nasceu sabendo nada, levei muita porrada pra aprende o pouco que sei hoje rsrs

 

até outro dia.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...