KA
dúvida

[Talkations] Editar um script

Por Kagefighter, 16 de fev. de 2013 em Scripts

script
18
2.3k
KagefighterK
16 de fevereiro de 2013 às 21:18

Queria que alguém me ajudasse, neste script que achei no fórum diz que o player troca MONEY por DIAS VIP. Queria saber se tem como trocar o MONEY por um Certo item que poderei colocar a quantidade (removeitem)

 

o script:

 

 

function onSay(cid, words, param, channel)

if words == "!buyvip" then

local price = 1000000

local days = 30

if doPlayerRemoveMoney(cid, price) then

addVipDays(cid, days)

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você adicionou "..days.." dia(s) de vip, agora você possui "..getVipDays(cid).." dia(s) de vip.")

else

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa de "..price.." para adicionar "..days.." dia(s) de vip.")

end

 

elseif words == "/vipdays" then

local duration = getVipDate(cid)

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você possui "..getVipDays(cid).." dia(s) de vip."..(duration and (" Ela irá durar até "..duration..".") or ""))

end

return TRUE

end

StyloMaldosoS
16 de fevereiro de 2013 às 21:26

n é so muda aqui ? ;x

addVipDays(cid, days)

por....

doPlayerAddItem(cid, xxxx, 1)

xxxx id do item e o 1 é a quantidade.. ai tu muda a fala ;x

KagefighterK
16 de fevereiro de 2013 às 21:32

Eu quero que REMOVA um item do player por dias vip...

StyloMaldosoS
16 de fevereiro de 2013 às 21:34

cara ta afim por faze action n ? o cara da use em x item e add vip ?

KagefighterK
16 de fevereiro de 2013 às 21:36

Quero algo mais prático, e aí vou fazer por quantidade por exemplo !Buy1premiumday 1 dia !Buy10premiumday 10 dias e assim vai...

StyloMaldosoS
16 de fevereiro de 2013 às 21:43

cara n so nenhum scripter mais fiz por action q tu quizer, n tenhu certeza q vai funciona né mais bora tenta ?

data/action/script/xxx.lua

function onUse(cid, item, frompos, item2, topos)

doPlayerAddPremiumDays(cid, 30)
doSendMagicEffect(getThingPos(cid), 29)
sendMsgToPlayer(cid, 20, "Parabéns, você ganhou 30 dia de PREMIUM!")
return true
end

Editado Fevereiro 16 por StyloMaldoso

MattziinM
16 de fevereiro de 2013 às 21:56

tenta

 

 

 

function onSay(cid, words, param, channel)

if words == "!buyvip" then

local item == 2806

local days = 30

if doRemoveItem(item.uid,1) then

addVipDays(cid, days)

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você adicionou "..days.." dia(s) de vip, agora você possui "..getVipDays(cid).." dia(s) de vip.")

else

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa de "..price.." para adicionar "..days.." dia(s) de vip.")

end

 

elseif words == "/vipdays" then

local duration = getVipDate(cid)

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você possui "..getVipDays(cid).." dia(s) de vip."..(duration and (" Ela irá durar até "..duration..".") or ""))

end

return TRUE

end

 

 

Editado Fevereiro 16 por Mattziin

KagefighterK
16 de fevereiro de 2013 às 23:22

Cara eu já disse que quero que o player remova "x" item por "x" dias vip da talkations que eu postei! Eu fiz o tópico poque quero que ela fique como estou falando não estou pedindo nenhuma actions.

 

tenta

 

 

 

function onSay(cid, words, param, channel)

if words == "!buyvip" then

local item == 2806

local days = 30

if doRemoveItem(item.uid,1) then

addVipDays(cid, days)

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você adicionou "..days.." dia(s) de vip, agora você possui "..getVipDays(cid).." dia(s) de vip.")

else

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa de "..price.." para adicionar "..days.." dia(s) de vip.")

end

 

elseif words == "/vipdays" then

local duration = getVipDate(cid)

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você possui "..getVipDays(cid).." dia(s) de vip."..(duration and (" Ela irá durar até "..duration..".") or ""))

end

return TRUE

end

 

 

 

Muito obrigado! REP+ podem mover

 

@mattzin

eu testei e deu isso aki:

 

[16/02/2013 22:20:09] [Error - TalkAction Interface]
[16/02/2013 22:20:09] data/talkactions/scripts/vipaccplayer.lua:onSay
[16/02/2013 22:20:09] Description:
[16/02/2013 22:20:09] data/talkactions/scripts/vipaccplayer.lua:14: attempt to call global 'getVipDate' (a nil value)
[16/02/2013 22:20:09] stack traceback:
[16/02/2013 22:20:09]  data/talkactions/scripts/vipaccplayer.lua:14: in function <data/talkactions/scripts/vipaccplayer.lua:2>
[16/02/2013 22:20:17] [Error - TalkAction Interface]
[16/02/2013 22:20:17] data/talkactions/scripts/vipaccplayer.lua:onSay
[16/02/2013 22:20:17] Description:
[16/02/2013 22:20:17] data/talkactions/scripts/vipaccplayer.lua:6: attempt to index local 'item' (a number value)
[16/02/2013 22:20:17] stack traceback:
[16/02/2013 22:20:17]  data/talkactions/scripts/vipaccplayer.lua:6: in function <data/talkactions/scripts/vipaccplayer.lua:2>

MattziinM
16 de fevereiro de 2013 às 23:26

Tenta

 

 

function onSay(cid, words, param, channel)

if words == "!buyvip" then

local days = 30

if itemEx.itemid == 2806 then

addVipDays(cid, days)

doRemoveItem(itemEx.uid,1)

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você adicionou "..days.." dia(s) de vip, agora você possui "..getVipDays(cid).." dia(s) de vip.")

else

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa de "..price.." para adicionar "..days.." dia(s) de vip.")

end

 

elseif words == "/vipdays" then

local duration = getVipDate(cid)

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você possui "..getVipDays(cid).." dia(s) de vip."..(duration and (" Ela irá durar até "..duration..".") or ""))

end

return TRUE

end

Editado Fevereiro 16 por Mattziin

KagefighterK
16 de fevereiro de 2013 às 23:30

Deu n "/

 

[16/02/2013 22:30:16] [Error - TalkAction Interface]
[16/02/2013 22:30:16] data/talkactions/scripts/vipaccplayer.lua:onSay
[16/02/2013 22:30:16] Description:
[16/02/2013 22:30:16] data/talkactions/scripts/vipaccplayer.lua:14: attempt to call global 'getVipDate' (a nil value)
[16/02/2013 22:30:16] stack traceback:
[16/02/2013 22:30:16]  data/talkactions/scripts/vipaccplayer.lua:14: in function <data/talkactions/scripts/vipaccplayer.lua:2>
[16/02/2013 22:30:25] [Error - TalkAction Interface]
[16/02/2013 22:30:25] data/talkactions/scripts/vipaccplayer.lua:onSay
[16/02/2013 22:30:25] Description:
[16/02/2013 22:30:25] data/talkactions/scripts/vipaccplayer.lua:5: attempt to index global 'itemEx' (a nil value)
[16/02/2013 22:30:25] stack traceback:
[16/02/2013 22:30:25]  data/talkactions/scripts/vipaccplayer.lua:5: in function <data/talkactions/scripts/vipaccplayer.lua:2>

MattziinM
16 de fevereiro de 2013 às 23:40

vc ja adicionou as tables na database ?

 

ALTER TABLE `accounts` ADD
`vipdays` int(11) NOT NULL DEFAULT 0;

?

 

 

e ja adicionou Isso na lib ?

 

--- Vip functions by Kekox
function getPlayerVipDays(cid)
   local Info = db.getResult("SELECT `vipdays` FROM `accounts` WHERE `id` = " .. getPlayerAccountId(cid) .. " LIMIT 1")
       if Info:getID() ~= LUA_ERROR then
       local days= Info:getDataInt("vipdays")
       Info:free()
       return days
   end
    return LUA_ERROR
end

function doAddVipDays(cid, days)
   db.executeQuery("UPDATE `accounts` SET `vipdays` = `vipdays` + " .. days .. " WHERE `id` = " .. getPlayerAccountId(cid) .. ";")
end

function doRemoveVipDays(cid, days)
   db.executeQuery("UPDATE `accounts` SET `vipdays` = `vipdays` - " .. days .. " WHERE `id` = " .. getPlayerAccountId(cid) .. ";")
end

 

?

Editado Fevereiro 16 por Mattziin

KagefighterK
16 de fevereiro de 2013 às 23:46

Não sei se o server do slicer já vem porque eu não adicionei "/ pode me explicar como adiciona estes aí?

MattziinM
16 de fevereiro de 2013 às 23:57

Olha esse topico > http://www.xtibia.com/forum/topic/147645-vip-system-by-kekox/

 

 

Lá ensina.

KagefighterK
17 de fevereiro de 2013 às 11:20

onde fica o "phpmyadmin." eu não entendi :/

 

Edit: eu arrumei umas tag's e ele gastou o item e falou que ganhou os dias vip mas deu esse erro:

 

[17/02/2013 11:13:38] [Error - TalkAction Interface]
[17/02/2013 11:13:38] data/talkactions/scripts/vipaccplayer.lua:onSay
[17/02/2013 11:13:38] Description:
[17/02/2013 11:13:38] (luaDoRemoveItem) Item not found
[17/02/2013 11:16:09] Error during getDataInt(viptime).
[17/02/2013 11:16:09] Error during getDataInt(viptime).
[17/02/2013 11:16:09] OTSYS_SQLITE3_PREPARE(): SQLITE ERROR: no such column: viptime (UPDATE "accounts" SET "viptime" = 1363702569 WHERE "id" = 5;)
[17/02/2013 11:16:09] Error during getDataInt(viptime).
[17/02/2013 11:16:57] Error during getDataInt(viptime).
[17/02/2013 11:16:57] Error during getDataInt(viptime).

 

E falou que adicionou mas não ta vip! eu coloquei pra só vip usar fly e mesmo comprando não da

 

@Edit:

 

11:19 Você adicionou 30 dia(s) de vip, agora você possui 0 dia(s) de vip.

11:19 Você possui 0 dia(s) de vip.

 

Ta dando esse erro...

SlicerS
17 de fevereiro de 2013 às 11:53

mano pra q usar VIPsistem? n faz muito sentido para serv pokemon ;/

tenta usar esse..

 

			 --id, qntdade
local item = {1111, 1}

function onSay(cid, words, param)
if not tonumber(param) or tonumber(param) < 1 or tonumber(param) > 30 then
  return doPlayerSendTextMessage(cid, 27, "Wrong params! say ".. words .." [days]\n[days] have to be a number between 1 and 30!")
end
local days = tonumber(param)
local cost = item[2]*days

if getPlayerItemCount(cid, item[1]) >= cost then
  doPlayerAddPremiumDays(cid, days)
  doPlayerRemoveItem(cid, item[1], cost)
  doPlayerSendTextMessage(cid, 27, "Congradulations, now you have ".. days .." days of premium!")
else
  doPlayerSendTextMessage(cid, 27, "You need atleast ".. cost .." ".. getItemNameById(item[1]) .." to buy this much of days of premium!")
end
return true
end

 

 

dai para usar tens q dizer qnts dias queres... tpw... /premium 30 -/premium eh soh um exemplo, podes por qlqr word neh...-

 

ps: a qntdade de itens q vai ser tirada do player vai ser a qntdade q tu por na variavel item * qnts dias o cara escolheu...

 

e dai nos scripts para checar se o player tem premium eh soh usar..

if not isPremium(cid) then
return doPlayerSendTextMessage(cid, 27, "You don't are premium!")
end

 

 

@PEDIDO

sei la quem moveu esse topico mas na proxima, ESPERE O DONO DO TOPICO FLAR Q FOI SANADA!!!

Editado Fevereiro 17 por Slicer