IV
script

Preciso Orientaçao

Por ivanhardjr, 30 de mar. de 2016 em Scripts

9
1.8k
ivanhardjrI
30 de março de 2016 às 22:11

Pessoal to aprendendo agora, as coisas mais basicas da linguagem lua, mais eu nao tenho ngm que me ensine ai fica muito dificil pra mim, bom vamos la !

 

Eu peguei um sistema feito, pois ainda nao aprendi a criar do 0, apenas sei modificalo as vezes, porem esse eu n to conseguindo, alguem pode me fazer um script como esse? e porfavor me ensinar como fazer e onde usar tais açoes como: else - return then - return true - end

 

Porfavor gente, quero muito aprender, me dedico mais eu n entendo muito, se alguem se disponibilizar, entrar em contato comigo e tals, Obrigado !

 

 

 

function onSay(cid, words, param)
if(words == "!buyvip") then
 
doPlayerRemoveItem(cid,6527,30)
 
local days = 30
 
local daysvalue = days * 24 * 60 * 60
 
local storageplayer = getPlayerStorageValue(cid, 13540)
 
local timenow = os.time()  
 
 
if getPlayerStorageValue(cid, 13540) - os.time() <= 0 then
 
time = timenow + daysvalue
 
else  
 
time = storageplayer + daysvalue
 
end
 
 
if string.find(tostring(getCreatureName(cid)),"[Vip]") then  
 
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. days .." dias de VIP no seu character.")  
 
setPlayerStorageValue(cid, 13540, time)  
 
local quantity = math.floor((getPlayerStorageValue(cid, 13540) - timenow)/(24 * 60 * 60))  
 
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. quantity .." dias de VIP restantes.")  
 
else  
 
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. days .." dias de VIP no seu character.")  
 
setPlayerStorageValue(cid, 13540, time)  
 
local name = getCreatureName(cid)  
 
db.executeQuery("UPDATE `players` SET `name` = '[Vip] "..name.."' WHERE `id` = "..getPlayerGUID(cid)..";")  
 
doRemoveCreature(cid)  
 
end  
 
else  
 
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa de 30 Multi Coins para colocar vip.")  
 
end 
 

 

 

Editado Março 30 por ivanhardjr

DeadpoolD
30 de março de 2016 às 22:28

Estrutura de controle IF

 

@@você quer uma versão desse sistema ai, que funcione? ou só quer aprender sobre as funções?

ivanhardjrI
30 de março de 2016 às 22:47

@, Porfavor preciso dos 2, aprender em primeiro lugar, odeio ter que vir pedir ajuda sobre isso, e tambem do sistema feito, que ai eu ja vejo onde que eu tava errando, obrigado !

DeadpoolD
30 de março de 2016 às 22:57

Então da uma olhada no link que mandei acima, quanto a seu sistema. É vip ou premium account? qual sistema vip ta usando? e qual a base do seu servidor/versão?

ivanhardjrI
30 de março de 2016 às 23:06
Melhor resposta

Então da uma olhada no link que mandei acima, quanto a seu sistema. É vip ou premium account? qual sistema vip ta usando? e qual a base do seu servidor/versão?

Entao, esse sistema de Vip eu nao faço ideia, pq meio que eu peguei um pouco de cada, mais é VIP EX: (ele troca certo item por uma storage usando o comando !buyvip apenas isso) Servidor 8.60, ja a base do server é uma que o SubWat Postou, Refugia2012, porem ja mudei e retirei os bugs, só falta isso do vip :/

Editado Março 30 por ivanhardjr

PoccnnP
31 de março de 2016 às 09:37

Vou explicar passo a passo pra você algumas questões do script.

 

 

--- script

 

function onSay(cid, words, param)

if(words == "!buyvip") then

 

doPlayerRemoveItem(cid,6527,30) -- sugiro antes de remover um item, saber se o player tem o item ou a quantidade de itens necessário. if not (getPlayerItem (cid, itemid, quantidade)) then return true, doPlayerSendCancel (cid, "você não tem o item.") end

 

 

local days = 30

 

local daysvalue = days * 24 * 60 * 60

 

local storageplayer = getPlayerStorageValue(cid, 13540)

 

local timenow = os.time()

 

 

if getPlayerStorageValue(cid, 13540) - os.time() <= 0 then --você já declarou na variável acima "storageplayer", não é necessário repetir aqui.

 

time = timenow + daysvalue

 

else

 

time = storageplayer + daysvalue

 

end

 

 

if string.find(tostring(getCreatureName(cid)),"[Vip]") then

 

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. days .." dias de VIP no seu character.")

 

setPlayerStorageValue(cid, 13540, time)

 

local quantity = math.floor((getPlayerStorageValue(cid, 13540) - timenow)/(24 * 60 * 60))

 

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. quantity .." dias de VIP restantes.")

 

else

 

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. days .." dias de VIP no seu character.")

 

setPlayerStorageValue(cid, 13540, time)

 

local name = getCreatureName(cid)

 

db.executeQuery("UPDATE `players` SET `name` = '[Vip] "..name.."' WHERE `id` = "..getPlayerGUID(cid)..";")--essa query tem ser executada depois do player ser removido.

 

doRemoveCreature(cid)

 

end

 

else

 

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa de 30 Multi Coins para colocar vip.")

 

end

FurabioF
31 de março de 2016 às 10:47

Tópico Movido
Este tópico foi movido de "OTServScriptingSuporte Scripting"
para "OTServScriptingSuporte ScriptingPedidos e dúvidas resolvidos - Scripting".

 

 

ivanhardjrI
31 de março de 2016 às 16:57

Eu ja resolvi de outra maneira, mais obrigado de verdade aprendi mais um pouco ^^, poderia me ajudar agora, sobre uma spell?

 

 

Vou explicar passo a passo pra você algumas questões do script.


--- script

function onSay(cid, words, param)
if(words == "!buyvip") then

doPlayerRemoveItem(cid,6527,30) -- sugiro antes de remover um item, saber se o player tem o item ou a quantidade de itens necessário. if not (getPlayerItem (cid, itemid, quantidade)) then return true, doPlayerSendCancel (cid, "você não tem o item.") end


local days = 30

local daysvalue = days * 24 * 60 * 60

local storageplayer = getPlayerStorageValue(cid, 13540)

local timenow = os.time()


if getPlayerStorageValue(cid, 13540) - os.time() <= 0 then --você já declarou na variável acima "storageplayer", não é necessário repetir aqui.

time = timenow + daysvalue

else

time = storageplayer + daysvalue

end


if string.find(tostring(getCreatureName(cid)),"[Vip]") then

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. days .." dias de VIP no seu character.")

setPlayerStorageValue(cid, 13540, time)

local quantity = math.floor((getPlayerStorageValue(cid, 13540) - timenow)/(24 * 60 * 60))

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. quantity .." dias de VIP restantes.")

else

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. days .." dias de VIP no seu character.")

setPlayerStorageValue(cid, 13540, time)

local name = getCreatureName(cid)

db.executeQuery("UPDATE `players` SET `name` = '[Vip] "..name.."' WHERE `id` = "..getPlayerGUID(cid)..";")--essa query tem ser executada depois do player ser removido.

doRemoveCreature(cid)

end

else

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa de 30 Multi Coins para colocar vip.")

end

 

 

PoccnnP
31 de março de 2016 às 17:41

Se você quer mesmo aprender, então começa aprendendo lógica de programação, identação, etc.

 

Eu sugiro que você faça o seguinte:

Crie um script.

Tente torná -lo menor e mais prático.

Faça-o simples, configurável, adaptável e portavel.

Revise-o.

Teste o script tentando encontrar falhas.

Finalize ele tornando-o o mais inteligível possível.

 

Veja um exemplo usando seu script.

 

--script

function onSay(cid, words, param)

local days = 30

local daysvalue = days * 24 * 60 * 60

local item, quantidade = 6527,30

local storageplayer = getPlayerStorageValue(cid, 13540)

local timenow = os.time()

local time = storageplayer < timenow and timenow+daysvalue or storageplayer+daysvalue

 

if (getplayeritemCount(cid, item) < quantidade) then

return true, doPlayerSendCancel (cid,"tu nao teins os itens")

elseif not(string.find(tostring(getCreatureName(cid)),"[Vip]")) then

return true, doPlayerSendCancel (cid,"tu naos eis vip")

else

doPlayerRemoveItem (cid, item, quantidade)

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. days .." dias de VIP no seu character.")

setPlayerStorageValue(cid, 13540, time)

doRemoveCreature (cid)

db.executeQuery("UPDATE `players` SET `name` = '[Vip] "..getCreatureName (cid).."' WHERE `id` = "..getPlayerGUID(cid)..";")

end

return true

end