Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Bom.. queria uma script que o player só pudesse usá-la se tivesse com X item..

 

Explicarei melhor:

 

Change name será um item, o item não faz nada, apenas será um item que some ao player usar o comando.

 

/name Rodrigo, Fulano

 

mas o player só poderia usar este comando se fosse o nome do char dele, ou seja, não poder trocar o nome dos demais players, só poderia trocar quem estivesse com o item.

 

BROADCAST:

 

Quando o Player usar o comando mas não tiver o item:

 

Você não pode usar este comando.

 

Quando o Player usar o comando e estiver com o item: ( o item irá sumir, óbvio )

 

Você acabou de trocar seu nome, deslogue de sua account para atualizá-lo.

 

 

OBS: Os GOD's tem este comando do /name, se quiserem pra dar uma forcinha, está logo abaixo.

function onSay(cid, words, param, channel)local p = string.explode(param, ',')
if(param == "") then
doPlayerSendCancel(cid, "Command requires param.")
return true
end
if(words == "/name") then
if(db.getResult("SELECT `id` FROM `players` WHERE `name` = " .. db.escapeString(p[1]) .. ";"):getID() == -1) then
return doPlayerSendCancel(cid, "Sorry, but player [" .. p[1] .. "] does not exist.")
elseif(isPlayerBanished(p[1], PLAYERBAN_LOCK)) then
return doPlayerSendCancel(cid, "Sorry, but " .. p[1] .. " is name locked.")
elseif(db.getResult("SELECT `id` FROM `players` WHERE `name` = " .. db.escapeString(p[2]) .. ";"):getID() == 1) then
return doPlayerSendCancel(cid, "Sorry, but the name [" .. p[2] .. "] already exists.")
end
return db.executeQuery("UPDATE `players` SET `name` = '" .. p[2] .. "' WHERE name = '" .. p[1] .. "';") and doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have changed " .. p[1] .. "'s name to " .. p[2] .. ".")
end
end

Ajudei? REP+

 

 

 
 
Spriter: |||||||||| 10%

 

Link para o post
Compartilhar em outros sites
local ChangeName = ID DO ITEM AQUI

function onSay(cid, words, param, channel)local p = string.explode(param, ',')
if(getPlayerItemCount(cid, ChangeName) > 0) then
if(param == "") then
doPlayerSendCancel(cid, "Command requires param.")
return true
end
if(words == "/name") then
if(db.getResult("SELECT `id` FROM `players` WHERE `name` = " .. db.escapeString(p[1]) .. ";"):getID() == -1) then
return doPlayerSendCancel(cid, "Sorry, but player [" .. p[1] .. "] does not exist.")
elseif(isPlayerBanished(p[1], PLAYERBAN_LOCK)) then
return doPlayerSendCancel(cid, "Sorry, but " .. p[1] .. " is name locked.")
elseif(db.getResult("SELECT `id` FROM `players` WHERE `name` = " .. db.escapeString(p[2]) .. ";"):getID() == 1) then
return doPlayerSendCancel(cid, "Sorry, but the name [" .. p[2] .. "] already exists.")
end
doPlayerRemoveItem(cid, ChangeName, 1)
return db.executeQuery("UPDATE `players` SET `name` = '" .. p[2] .. "' WHERE name = '" .. p[1] .. "';") and doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have changed " .. p[1] .. "'s name to " .. p[2] .. ".")
end
end
end

Não esqueça de botar o ID do item na primeira linha.

Abraços.

Editado por danihcv (veja o histórico de edições)

Te ajudei?? REP + e ficamos quites... <ahttp://www.tibiaking.com/forum/uploads/emoticons/default_happyy.png' alt=';D'>

Atenciosamente,

Daniel.

Abraços!

Link para o post
Compartilhar em outros sites

no caso, o player teria que gastar 2 itens para usar o comando, como ficaria?

 

@edit

 

não está removendo os itens, tá faltando algo ai fera

 o player só poderia usar este comando se fosse o nome do char dele, ou seja, não poder trocar o nome dos demais players, só poderia trocar quem estivesse com o item.
Editado por rodrigorodriguess (veja o histórico de edições)

Ajudei? REP+

 

 

 
 
Spriter: |||||||||| 10%

 

Link para o post
Compartilhar em outros sites
local ChangeName = ID DO ITEM AQUI

function onSay(cid, words, param, channel)local p = string.explode(param, ',')
if(getPlayerItemCount(cid, ChangeName) > 1) then
if(param == "") then
doPlayerSendCancel(cid, "Command requires param.")
return true
end
if(words == "/name") then
if(db.getResult("SELECT `id` FROM `players` WHERE `name` = " .. db.escapeString(p[1]) .. ";"):getID() == -1) then
return doPlayerSendCancel(cid, "Sorry, but player [" .. p[1] .. "] does not exist.")
elseif(isPlayerBanished(p[1], PLAYERBAN_LOCK)) then
return doPlayerSendCancel(cid, "Sorry, but " .. p[1] .. " is name locked.")
elseif(db.getResult("SELECT `id` FROM `players` WHERE `name` = " .. db.escapeString(p[2]) .. ";"):getID() == 1) then
return doPlayerSendCancel(cid, "Sorry, but the name [" .. p[2] .. "] already exists.")
end
doPlayerRemoveItem(cid, ChangeName, 2)
return db.executeQuery("UPDATE `players` SET `name` = '" .. p[2] .. "' WHERE name = '" .. p[1] .. "';") and doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have changed " .. p[1] .. "'s name to " .. p[2] .. ".")
end
end
end

Fala se funcionou. Abraços.

Editado por danihcv (veja o histórico de edições)

Te ajudei?? REP + e ficamos quites... <ahttp://www.tibiaking.com/forum/uploads/emoticons/default_happyy.png' alt=';D'>

Atenciosamente,

Daniel.

Abraços!

Link para o post
Compartilhar em outros sites

Funcionou perfeitamente, mas tem uma coisa.. o player quando tem o item, o comando é executado perfeitamente e nem aparece msg na tela.. mas quando ele não tem, aparece.. teria como colocar uma mensagem tipo: Não é possível executar o comando porque você não tem donate coins..

 

@edit

 

e mais uma coisa, o player também pode mudar o nome dos demais players, eu queria que só ele mudasse o nome dele.

Editado por rodrigorodriguess (veja o histórico de edições)

Ajudei? REP+

 

 

 
 
Spriter: |||||||||| 10%

 

Link para o post
Compartilhar em outros sites
local ChangeName = ID DO ITEM AQUI

function onSay(cid, words, param, channel)local p = string.explode(param, ',')
if(getPlayerItemCount(cid, ChangeName) <= 1) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You do not have donate coins.")
end
if(getPlayerItemCount(cid, ChangeName) > 1) then
if(param == "") then
doPlayerSendCancel(cid, "Command requires param.")
return true
end
if(words == "/name") then
if(db.getResult("SELECT `id` FROM `players` WHERE `name` = " .. db.escapeString(p[1]) .. ";"):getID() == -1) then
return doPlayerSendCancel(cid, "Sorry, but player [" .. p[1] .. "] does not exist.")
elseif(isPlayerBanished(p[1], PLAYERBAN_LOCK)) then
return doPlayerSendCancel(cid, "Sorry, but " .. p[1] .. " is name locked.")
elseif(db.getResult("SELECT `id` FROM `players` WHERE `name` = " .. db.escapeString(p[2]) .. ";"):getID() == 1) then
return doPlayerSendCancel(cid, "Sorry, but the name [" .. p[2] .. "] already exists.")
end
doPlayerRemoveItem(cid, ChangeName, 2)
return db.executeQuery("UPDATE `players` SET `name` = '" .. p[2] .. "' WHERE name = '" .. p[1] .. "';") and doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have changed " .. p[1] .. "'s name to " .. p[2] .. ".")
end
end
end

Tenta aí.

Te ajudei?? REP + e ficamos quites... <ahttp://www.tibiaking.com/forum/uploads/emoticons/default_happyy.png' alt=';D'>

Atenciosamente,

Daniel.

Abraços!

Link para o post
Compartilhar em outros sites

Ah pera, vi agr o seu edit la. Mas ñ entendi a parte da msg. Vc qr que qual msg ñ apareça??

Te ajudei?? REP + e ficamos quites... <ahttp://www.tibiaking.com/forum/uploads/emoticons/default_happyy.png' alt=';D'>

Atenciosamente,

Daniel.

Abraços!

Link para o post
Compartilhar em outros sites

Bom, o script está legal assim, só que quando o player não tiver o item apareça uma mensagem dizendo que ele não tem.

Ajudei? REP+

 

 

 
 
Spriter: |||||||||| 10%

 

Link para o post
Compartilhar em outros sites
local ChangeName = ID DO ITEM AQUI

function onSay(cid, words, param, channel)local p = string.explode(param, ',')
if(getPlayerItemCount(cid, ChangeName) == 0) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You do not have donate coins.")
end
if(getPlayerItemCount(cid, ChangeName) == 1) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You do not have sufficient donate coins.")
end
if(getPlayerItemCount(cid, ChangeName) > 1) then
if(param == "") then
doPlayerSendCancel(cid, "Command requires param.")
return true
end
if(words == "/name") then
if(db.getResult("SELECT `id` FROM `players` WHERE `name` = " .. db.escapeString(p[1]) .. ";"):getID() == -1) then
return doPlayerSendCancel(cid, "Sorry, but player [" .. p[1] .. "] does not exist.")
elseif(isPlayerBanished(p[1], PLAYERBAN_LOCK)) then
return doPlayerSendCancel(cid, "Sorry, but " .. p[1] .. " is name locked.")
elseif(db.getResult("SELECT `id` FROM `players` WHERE `name` = " .. db.escapeString(p[2]) .. ";"):getID() == 1) then
return doPlayerSendCancel(cid, "Sorry, but the name [" .. p[2] .. "] already exists.")
end
doPlayerRemoveItem(cid, ChangeName, 2)
return db.executeQuery("UPDATE `players` SET `name` = '" .. p[2] .. "' WHERE name = '" .. p[1] .. "';") and doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have changed " .. p[1] .. "'s name to " .. p[2] .. ".")
end
end
end

Vê se é assim que vc qr. Eu botei 3 tipos de msg, uma pra quando o player ñ tiver, outra pra qnd tiver 1 item, e a pra quando o player conseguir executar o comando pq tem 2 itens no minimo.

Editado por danihcv (veja o histórico de edições)

Te ajudei?? REP + e ficamos quites... <ahttp://www.tibiaking.com/forum/uploads/emoticons/default_happyy.png' alt=';D'>

Atenciosamente,

Daniel.

Abraços!

Link para o post
Compartilhar em outros sites
local ChangeName = ID DO ITEM AQUI

function onSay(cid, words, param, channel)local p = string.explode(param, ',')
if(getPlayerItemCount(cid, ChangeName) == 0) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You do not have donate coins.")
return
end
if(getPlayerItemCount(cid, ChangeName) == 1) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You do not have sufficient donate coins.")
return
end
if(getPlayerItemCount(cid, ChangeName) > 1) then
if(param == "") then
doPlayerSendCancel(cid, "Command requires param.")
return true
end
if(words == "/name") then
if(db.getResult("SELECT `id` FROM `players` WHERE `name` = " .. getPlayerName(cid) .. ";"):getID() == -1) then
return doPlayerSendCancel(cid, "Sorry, but player [" .. p[1] .. "] does not exist.")
elseif(isPlayerBanished(p[1], PLAYERBAN_LOCK)) then
return doPlayerSendCancel(cid, "Sorry, but " .. p[1] .. " is name locked.")
elseif(db.getResult("SELECT `id` FROM `players` WHERE `name` = " .. db.escapeString(p[2]) .. ";"):getID() == 1) then
return doPlayerSendCancel(cid, "Sorry, but the name [" .. p[2] .. "] already exists.")
end
doPlayerRemoveItem(cid, ChangeName, 2)
return db.executeQuery("UPDATE `players` SET `name` = '" .. p[2] .. "' WHERE name = '" .. p[1] .. "';") and doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have changed " .. p[1] .. "'s name to " .. p[2] .. ".")
end
end
end

Blz, agr eu comecei a editar a parte de o player só conseguir mudar o próprio nome e acho que entendi qual msg vc ta dizendo que aparece (SE eu entendi qual é a msg que aparece, já corrigi, por via das dúvidas diga qual msg aparece ^^)

 

Não estou mt certo se consegui fazer com que o player mude seu próprio nome, se der algum erro, poste aqui.

Te ajudei?? REP + e ficamos quites... <ahttp://www.tibiaking.com/forum/uploads/emoticons/default_happyy.png' alt=';D'>

Atenciosamente,

Daniel.

Abraços!

Link para o post
Compartilhar em outros sites

bom.. testei e agora nem trocar o nome troca mais hahahaha

 

01:47 You do not have sufficient donate coins.
01:47 Batorah [479]: /name Batorah, Happy
 
e também quando uso comando com o GOD:
 
01:48 /name Administrador, Happy
 
aparece isto:
 
Sorry, but player [Administrador] does not exist.
 
Obs: ainda aparece a mensagem no default, mas também aparece a que diz que eu não tenho os donate coins.

Ajudei? REP+

 

 

 
 
Spriter: |||||||||| 10%

 

Link para o post
Compartilhar em outros sites

Tente isso:

function onSay(cid, words, param, channel)

local p = string.explode(param, ',')
local countz = 1
local items = 2160

	if(param == "") then
		doPlayerSendCancel(cid, "Command requires param.")
		return true
	end
	

	
	if(words == "/name") then
		if doPlayerRemoveItem(cid, items, countz) == TRUE then
			if(db.getResult("SELECT `id` FROM `players` WHERE `name` = " .. db.escapeString(p[1]) .. ";"):getID() == -1) then
				return doPlayerSendCancel(cid, "Sorry, but player [" .. p[1] .. "] does not exist.")
			elseif(isPlayerBanished(p[1], PLAYERBAN_LOCK)) then
				return doPlayerSendCancel(cid, "Sorry, but " .. p[1] .. " is name locked.")
			elseif(db.getResult("SELECT `id` FROM `players` WHERE `name` = " .. db.escapeString(p[2]) .. ";"):getID() == 1) then
				return doPlayerSendCancel(cid, "Sorry, but the name [" .. p[2] .. "] already exists.")
			end
			return db.executeQuery("UPDATE `players` SET `name` = '" .. p[2] .. "' WHERE name = '" .. p[1] .. "';") and doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have changed " .. p[1] .. "'s name to " .. p[2] .. ".")
		else
			return doPlayerSendCancel(cid, "Sorry, but you don't have the necessary item.")
		end
	end
end

Não se esqueça de modificar o id do item, no "local items" que eu adicionei no script. 

Agradeça o Danihcv por ter me chamado, pois eu não havia visto o tópico.

Editado por Jamison Collins (veja o histórico de edições)

"A alma permanece em suas criações" V89E5aN.png


142c9d3439.jpg
(Não dou suporte por mensagem privada.)

Link para o post
Compartilhar em outros sites

não funcionou, não quer mudar o nome de ninguém, façam o script e testem antes se puderem, porque o tópico já ta lotado hahaha, agradeço a ajuda, de coração. e meu rep vai pra esse carinha que ficou a madrugada me ajudando

Ajudei? REP+

 

 

 
 
Spriter: |||||||||| 10%

 

Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Sphynx1
      Olá comunidade.
      Eu criei um script a madrugada passada para tentar ajudar um amigo que usa 'OTX' porém dá um erro bizarro no 'lib/compat.lua' e a função 'doAddPlayerOutfit' retorna valor 'NIL'. Eu não sei como resolver, mas está funcionando perfeitamente no 'TFS 0.4'. Espero que alguém em algum lugar do tempoespaço possa se beneficiar desse script já que os que encontrei estão todos muito feios e confusos.

      1. Acesse a pasta 'data/talkactions/scripts' e crie um novo 'arquivo.lua' chamado 'addonpresent.lua', dentro adicione o conteúdo abaixo.
      function onSay(cid, words, param, channel) local maleOutfits = {["citizen"] = {128}, ["mage"] = {130}, ["knight"] = {131}, ["nobleman"] = {132}, ["summoner"] = {133}, ["warrior"] = {134} } local femaleOutfits = {["citizen"] = {136}, ["mage"] = {138}, ["knight"] = {139}, ["nobleman"] = {140}, ["summoner"] = {141}, ["warrior"] = {142} } local mensagens = {"Você recebeu o seu addon e consumiu o item bônus para isto.", "Verifique o que você digitou e tente novamente, parametros inválidos.", "Você não possui o item necessário para receber um addon.", "Certifique-se que você digitou o nome do addon corretamente e tente mais uma vez."} local efeitinga = {[1] = {name = CONST_ME_POFF}, [2] = {name = CONST_ME_CAKE}, [3] = {name = CONST_ME_HEARTS}, [4] = {name = CONST_ME_GIFT_WRAPS} -- efeitos que seram exibidos } local param = string.lower(param) if not isPremium(cid) then doCreatureSay(cid, "Você não possui Premium Account, portanto não poderá utilizar o item de addon.", TALKTYPE_ORANGE_1) -- MSG que será exibida p/ o nao premium return true end if getPlayerItemCount(cid, 6497) > 0 then -- 6497 é o ID do item que será usado por você, se for maior que 0 a quanidade na sua bag então if param ~= "" and maleOutfits[param] and femaleOutfits[param] then doPlayerRemoveItem(cid, 6497, 1) -- o item 6497 será consumido doCreatureSay(cid, mensagens[1], TALKTYPE_ORANGE_1) for k, v in pairs(efeitinga) do doSendMagicEffect(getCreaturePosition(cid), v.name) end if getPlayerSex(cid) == 0 then doPlayerAddOutfit(cid, femaleOutfits[param][1], 3) elseif getPlayerSex(cid) == 1 then doPlayerAddOutfit(cid, maleOutfits[param][1], 3) end else doCreatureSay(cid, mensagens[2], TALKTYPE_ORANGE_1) end else doCreatureSay(cid, mensagens[3], TALKTYPE_ORANGE_1) end return true end  
      2. Regresse até 'data/talkactions' e abra o arquivo 'talkactions.xml', dentro adicione o conteúdo abaixo.
      <talkaction words="!addon" event="script" value="addonpresent.lua"/>  
       
    • Por Lettiss
      Boa noite galera! No meu ot os comandos /a e /B nao funcionam.
      Voces poderiam postar os scripts deles?
    • Por caiobale
      Bom, Gostaria de saber como colocar os comandos /attr health, entre outros.
       
      Se poderem ajudar agradeço muito. *-*
    • Por Movie
      Tentei fazer esse talkactions , mas não deu certo , alguém poderia me ajudar ?
       

       
         
       
    • Por eviltox
      Olá galera, tenho um problema com um script gringo.    
      Então a Função do Script é Ficar Mudando o Addon e sua cor Continuamente.
      O único problema do script até agora é a hora que o player desloga.   
       
      Então esse é o meu pedido, Gostaria de adicionar um OnLogout ou um meio de encerrar o script quando o player desloga(não entendo muito de script, mas acho que é isso que falta, se não for agradeço em adicionarem oque falta. *(Versão do TFS 0.3.1)*     
       
      O Script é esse:
      O Erro é esse:
      Dês de já, Agradeço. Darei Rep+ Para quem ajudar, mesmo que não funcione. Grato   
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo