Ir para conteúdo
  • 0

[Pedido] Scrip - Muito Complexo!


beddy

Pergunta

Tipo do script: VARIOS

Protocolo (versão do Tibia): 8.5

Servidor utilizado: TFS 8.6

Nível de experiência: ALTA

Adicionais/Informações:

 

Bem começa assim:

 

Tem um char, com algum storage.

Ele upa 1 level, ele ganha 5 pontos neste storage.

Depois com estes 5 pontos, ele pode comprar HP ou MANA em um NPC.

Ele upa outro level, ganha mais 5 pontos no storage.

Depois, pode comprar HP ou MANA em um NPC.

E assim vai.. sendo que os pontos podem ser acumulados..

 

REP + pra quem conseguir.

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

@max

dá sim, mas como eu já tinha essas funções e vi que dava para ser usado resolvi usar elas

 

@beddy

sai ontem cedo,quero saber o seguinte

todo level que ele upar ele vai ganhar 5 points? ou são determinados leveis, por exemplo: level 30,50,70 etc...

Link para o comentário
Compartilhar em outros sites

  • 0

creaturescript/script

 

advpoints.lua

			 function onAdvance(cid, skill, oldlevel, newlevel)
		 local config = {
		  repeatAfterDeath = false,
		  points = 5,
		  storage = 14005
		  }  
		 if skill ~= SKILL__LEVEL or (not config.repeatAfterDeath and getPlayerStorageValue(cid, config.storage) >= newlevel) then
		 return true
		 end
		 doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'You have just advanced to level '..newlevel..' and recivied '..config.points..' points!')
		 addPoints(cid, config.points)
		 setPlayerStorageValue(cid, config.storage, newlevel)
		 return true
		 end

 

creaturescript.xml

<event type="advance" name="AdvPoints" event="script" value="advpoints.lua"/>

 

creaturescript/script/login.lua adc

registerCreatureEvent(cid, "AdvPoints")

 

 

----------------------------------------------------------------------

 

talkactions/script

 

systempoints.lua

function onSay(cid, words, param)
if(words == "!points") then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você tem "..getPoints(cid).." Points.")
elseif(words == "/addpoints") then  
if getPlayerAccess(cid) == 5 then
local t = string.explode(param, ",")  
if not t[1] or not t[2] then  return TRUE,doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.")  end  
local player = getPlayerByName(t[1])  
local points = t[2]  
local pid = getPlayerByNameWildcard(t[1])  
if(not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then  
return TRUE,doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player with this name doesn\'t exist or is offline.")  end
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "você adicionou "..points.." Points do jogador "..t[1])  
doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Foram adicionados "..points.." Points no seu character.")  
addPoints(player,points)
doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Você agora tem "..getPoints(player).." Points.")  
end
elseif(words == "/delpoints") then
if getPlayerAccess(cid) == 5 then
local t = string.explode(param, ",")  
if not t[1] or not t[2] then  return TRUE,doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.")  end  
local player = getPlayerByName(t[1])  
local points = t[2]  
local pid = getPlayerByNameWildcard(t[1])  
if(not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then  
return TRUE,doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player with this name doesn\'t exist or is offline.")  end
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "você removeu "..points.." Points do jogador "..t[1])  
doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Foram removidos "..points.." Points do seu character.")  
removePoints(player,points)
doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Você agora tem "..getPoints(player).." Points.")  
end
elseif(words == "/setpoints") then
if getPlayerAccess(cid) == 5 then
local t = string.explode(param, ",")  
if not t[1] or not t[2] then  return TRUE,doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.")  end  
local player = getPlayerByName(t[1])  
local points = t[2]  
local pid = getPlayerByNameWildcard(t[1])  
if(not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then  
return TRUE,doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player with this name doesn\'t exist or is offline.")  end
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Agora o jogador "..t[1].." tem "..points.." Points no seu character.")  
doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "agora você tem "..points.." Points do seu character.")  
setPoints(player,points)
end
end
return TRUE
end

 

tag

<talkaction words="!points;/addpoints;/delpoints;/setpoints" script="systempoints.lua"/>

 

comando player:

 

!points

 

comando god:

 

/addpoints NOME,POINTS

/delpoints NOME,POINTS

/setpoints NOME,POINTS

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

  • 0

EU TE AMO! *_* , posso te abusar só + um poquinho?

 

Como faz o npc qe vende Life e Mana por estes points?

 

 

 

ESTAREI TE DANDO REPS QUANDO LOGAR SEMPRE QUE DER. OBRIGADO!

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

  • 0

ah é, esqueci.

estou meio ocupado agora porque to no trampo, mas vou te ensinar:

 

local cost = 10
if  getPoints(cid) >= cost then
function que add hp
removePoints(cid,cost)
msg que diz q compro o hp
else
msg q vai dizer se ele n tiver points
end

Link para o comentário
Compartilhar em outros sites

  • 0

Tentei isso, só que nao deu.. tem como consertar?

 

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 cost = 3
local health = 10 --- QNT DE LIFE
local mana = 10 -- QNT DE MANA
if msgcontains(msg, "Life") - 1 then
if  getPoints(cid) >= cost then
doCreatureAddHealth(cid, health)
removePoints(cid,cost)
msg Voce comprou 10 de LIFE.
 else
msg Você não tem POINTS o suficiente.
end
if msgcontains(msg, "Life") - 1 then
if  getPoints(cid) >= cost then
doCreatureAddMana(cid, mana)
removePoints(cid,cost)
msg Voce comprou 10 de MANA.
 else
msg Você não tem POINTS o suficiente.
end

Link para o comentário
Compartilhar em outros sites

  • 0

Vamos fazer a coisa certa, no npc ele vai comprar HP certo?

se ele tem 1000 de hp e compra 500 ele vai ficar com 1500, é isso? (o 500 é um exemplo)

Vai poder comprar quantas vezes?

Link para o comentário
Compartilhar em outros sites

  • 0

Olha como ficou o que eu fiz:

1fg3dg.png

 

Se eu morrer, e upar denovo não ganherei os points denovo, só ganho os points uma vez quando upo...

 

Ficou show de bola man!

Mas o meu tbm se ele morrer ele não ganha de novo '-'

Link para o comentário
Compartilhar em outros sites

  • 0
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 life,mana = {points = 5,Hp = 10},{points = 5,mn = 15}
if (msgcontains(msg, 'life') or msgcontains(msg, 'life'))then
npcHandler:say("Você quer comprar "..life.Hp.." Ponts de Hp por "..life.points.." points? {yes}", cid)
talkState[talkUser] = 1
elseif (msgcontains(msg, 'mana') or msgcontains(msg, 'MANA'))then
npcHandler:say("Você quer comprar "..mana.mn.." Pontos de mana por "..mana.points.." points ? {yes}", cid)
talkState[talkUser] = 2
elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then
if getPoints(cid) >= life.points then
setCreatureMaxHealth(cid, getCreatureMaxHealth(cid)+life.Hp)
doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
removePoints(cid, life.points)
npcHandler:say("Parabéns, você recebeu "..life.Hp.." Ponts de Hp!", cid)
talkState[talkUser] = 0
else
npcHandler:say("Desculpe, mas você você não tem "..life.points.." points!", cid)
talkState[talkUser] = 0
end
elseif msgcontains(msg, 'yes') and talkState[talkUser] == 2 then
if getPoints(cid) >= mana.points then
setCreatureMaxMana(cid, getCreatureMaxMana(cid)+mana.mn)
doCreatureAddMana(cid, getCreatureMaxMana(cid))
removePoints(cid, mana.points)
npcHandler:say("Parabéns, você recebeu "..mana.mn.." Pontos de Mana!", cid)
talkState[talkUser] = 0
else
npcHandler:say("Desculpe, mas você você não tem "..mana.points.." points!", cid)
talkState[talkUser] = 0
end
elseif msg == "no" then  
selfSay("Then not", cid)  
talkState[talkUser] = 0  
npcHandler:releaseFocus(cid)  
end
return TRUE
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...