Ir para conteúdo
Entre para seguir isso  
assassin

NPC vende vip

Recommended Posts

assassin    0
assassin

-Autor: eu

-Script: npcvip

-Testado em: TFS 0.4.a0

 

primeira mente porque tem muita gente procurando um desse

esse npc não é de modelo de ot antigo 8.1 e sim do novo sistema

ele vende vip, 5 dias por 25k

ai vai o script espero ajudar alguem...:

__________________________________________________________________________

vá na pasta ~~data/npc... e crie um arquivo [vip seller.xml]

e coloqe isso dentro:

 

<?xml version="1.0" encoding="UTF-8"?>

<npc name="Vip Seller" script="data/npc/scripts/npcvip.lua" walkinterval="2000" floorchange="0">

<health now="100" max="100"/>

<look type="160" head="115" body="2" legs="2" feet="115" addons="3"/>

<parameters>

<parameter key="message_greet" value="Welcome to my little shop, adventurer |PLAYERNAME|. say {VIP} to buy a vip"/>

<parameter key="message_farewell" value="Bye, bye, |PLAYERNAME|."/>

<parameter key="module_keywords" value="1" />

</parameters>

</npc>

 

em seguida crie um arquivo [npcvip.lua] na pasta ~~data/npc/scripts/... e coloque isso dentro

 

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

 

if msgcontains(msg, 'vip') then

selfSay('you really want, to buy an 5 DAYS VIP ???. talk {YES}', cid)

talkState[talkUser] = 1

elseif talkState[talkUser] == 1 then

if msgcontains(msg, 'yes') then

if pay(cid,25000) then

vip.addVipByAccount(getPlayerAccount(cid) ,432000)

selfSay('Thank You for contributing Now you can access the VIP areas, are in a teleport in the temple.')

else

selfSay('Sorry, you don\'t have enough money.')

end

end

talkState[talkUser] = 0

elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then

talkState[talkUser] = 0

selfSay('Ok then.', cid)

end

return true

end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

Editado por assassin

Compartilhar este post


Link para o post
Oneshot    24
Oneshot

Aprovado e Movido

Editado por Garou

Compartilhar este post


Link para o post
FenixAdm    0
FenixAdm

como configura, me manda mensagem privada por favor..quero saber como configurar os dias e o preço por dias

Compartilhar este post


Link para o post
Criticoo    4
Criticoo

tenta assim amigo:

 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
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
local talkState = {}
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 p = 5000 -- preço da vip por dia

if msgcontains(msg, "vip") then
selfSay("Você deseja comprar quantos dias de vip?", cid)
talkState[talkUser] = 1
elseif talkState[talkUser] == 1 then
if getNumber(msg) < 365 then
n = getNumber(msg)
if n ~= 0 then
if getPlayerMoney(cid) > p*n then
selfSay('Você deseja mesmo comprar {'..n..'} dias de Vip account por {'..n*(p)..'} gold coins {yes}?', cid)
talkState[talkUser] = 2
else
selfSay('Desculpe, você não possue dinheiro suficiente para comprar {'..n..'} dias de vip account.', cid)
talkState[talkUser] = 0
end
else
selfSay('Escolha um numero maior que 0.', cid)
talkState[talkUser] = 0
end
else
selfSay('Você não pode ter mais de 365 dias de vip account.', cid)
talkState[talkUser] = 0
end
elseif msgcontains(msg, 'yes') and talkState[talkUser] == 2  then
if doPlayerRemoveMoney(cid,  p*n) == TRUE then
vip.addVipByAccount(getPlayerAccount(cid) ,vip.getDays(n))
selfSay('From now, you are vip!', cid)
talkState[talkUser] = 0
npcHandler:releaseFocus(cid)
else
selfSay('Desculpe, você não possue dinheiro suficiente para comprar dias de vip account.', cid)
talkState[talkUser] = 0
end
elseif msg == "no" and talkState[talkUser] >= 1 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())
function getNumber(txt)
x = string.gsub(txt,"%a","")
x = tonumber(x)
if x ~= nill and x > 0 then
return x
else
return 0
end
end

Editado por Mickfern

Compartilhar este post


Link para o post
oloku    0
oloku

legal, mais eu tenho uma duvida. Tem como ele vender a vip nao por golds ou kks,mais sim por COINS??

Compartilhar este post


Link para o post
Criticoo    4
Criticoo

tem sim,no caso a gente usaria de vez da função "getPlayerMoney(cid)" usariamos "getPlayerItemCount(cid, coin_id)"

Compartilhar este post


Link para o post
dyego2008    0
dyego2008

bom eu queria mudar inves de golden coins ou crystais, por coins que eu criei onde eu mudaria o id das coins?

Compartilhar este post


Link para o post
Criticoo    4
Criticoo

ta ai:

 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
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
local talkState = {}
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 id_coin = 2157
local p = 1 -- preço da vip por dia em coins


if msgcontains(msg, "vip") then
selfSay("Você deseja comprar quantos dias de vip?", cid)
talkState[talkUser] = 1
elseif talkState[talkUser] == 1 then
if getNumber(msg) < 365 then
n = getNumber(msg)
if n ~= 0 then
if getPlayerItemCount(cid, id_coin) >= p*n then
selfSay('Você deseja mesmo comprar {'..n..'} dias de Vip account por {'..n*(p)..'} ' .. getItemNameById(id_coin) .. ' {yes}?', cid)
talkState[talkUser] = 2
else
selfSay('Desculpe, você não possui ' .. getItemNameById(id_coin) .. ' suficiente para comprar {'..n..'} dias de vip account.', cid)
talkState[talkUser] = 0
end
else
selfSay('Escolha um numero maior que 0.', cid)
talkState[talkUser] = 0
end
else
selfSay('Você não pode ter mais de 365 dias de vip account.', cid)
talkState[talkUser] = 0
end
elseif msgcontains(msg, 'yes') and talkState[talkUser] == 2  then
if doPlayerRemoveItem(cid, id_coin, n*(p)) == TRUE then
vip.addVipByAccount(getPlayerAccount(cid) ,vip.getDays(n))
selfSay('From now, you are vip!', cid)
talkState[talkUser] = 0
npcHandler:releaseFocus(cid)
else
selfSay('Desculpe, você não possui ' .. getItemNameById(id_coin) .. ' suficiente para comprar dias de vip account.', cid)
talkState[talkUser] = 0
end
elseif msg == "no" and talkState[talkUser] >= 1 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())
function getNumber(txt)
x = string.gsub(txt,"%a","")
x = tonumber(x)
if x ~= nill and x > 0 then
return x
else
return 0
end
end

Editado por Mickfern

Compartilhar este post


Link para o post
ruanbaron    0
ruanbaron

Obrigado Critico você resolveu vários problemas em 1 Topico .. mim ajudou bastante ...... =)

Compartilhar este post


Link para o post
timaoga    0
timaoga

como eu arrumo pra q o player compre vip e conssiga entra em um lugar para i na city vip

Compartilhar este post


Link para o post
CrA    0
CrA
como eu arrumo pra q o player compre vip e conssiga entra em um lugar para i na city vip

 

a mesma duvida que a minha

Compartilhar este post


Link para o post
Criticoo    4
Criticoo

Vocês terão que fazer um Tile ou uma door que só passe jogadores que compraram vip com o npc.

Compartilhar este post


Link para o post
catecoteca    0
catecoteca

No caso o OTserv que eu uso, tem area VIP só não tem comandos para add vip, ai configurei esse sistema so que não consigo passar na porta...

 

como faço para configurar

Compartilhar este post


Link para o post
lordescrezov    0
lordescrezov

tem como vender invez de gold ou coins, os premium points vendidos no site???

Compartilhar este post


Link para o post
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×