LU
bug

Por que meu script n ta funfando? Dar CAP

Por luccagomes, 26 de jul. de 2015 em Scripts

resolvido
script
10
1.3k
luccagomesL
26 de julho de 2015 às 21:41

O script era simples, o player equipa a BP e ganha 1000 de CAP, não sei pq, mas não ta funcionado, alguem pode me dar uma luz?

Tinha CAP 128, equipei a BP era pra ficar 1128
Mas ficou 821 e quando eu removi a BP ficou 0

O que tem de errado nesse script?


    <!-- sorcerer -->
    <movevent type="Equip" itemid="10518" slot="backpack" event="script" value="magevipbag.lua">
        <vocation id="1"/>
        <vocation id="5" showInDescription="0"/>
    </movevent>
    <movevent type="DeEquip" itemid="10518" slot="backpack" event="script" value="magevipbag.lua"/>


local block  = 0
local capacidade = 1000 -- aqui coloca quanto que vai almentar

function onEquip(cid, item, slot)
block = block+1
      if block == 3 then
            doPlayerSetMaxCapacity(cid,(getPlayerFreeCap(cid)+capacidade))
            block = 0
      end
      return true
end

function onDeEquip(cid, item, slot)
   doPlayerSetMaxCapacity(cid,(getPlayerFreeCap(cid)-capacidade))
return true
end
BrunoB
27 de julho de 2015 às 09:10

@@luccagomes,

 

Tenta alterar o magevipbag.lua por este:

local block = 135410 -- storage de controle
local capacidade = 1000 -- aqui coloca quanto que vai aumentar

function onEquip(cid, item, slot)
	setPlayerStorageValue(cid, block, getPlayerStorageValue(cid, block) < 0 and 1 or getPlayerStorageValue(cid, block) + 1)
	if getPlayerStorageValue(cid, block) == 3 then
		doPlayerSetMaxCapacity(cid, (getPlayerFreeCap(cid) + capacidade))
		setPlayerStorageValue(cid, block, 0)
	end
	return true
end

function onDeEquip(cid, item, slot)
	doPlayerSetMaxCapacity(cid, (getPlayerFreeCap(cid) - capacidade))
	return true
end
Eu não entendi muito bem o porque ele só vai dar cap após ele usar 3 vezes, mas caso você deseja retirar isso, segue abaixo:

local capacidade = 1000 -- aqui coloca quanto que vai aumentar

function onEquip(cid, item, slot)
	doPlayerSetMaxCapacity(cid, (getPlayerFreeCap(cid) + capacidade))
	return true
end

function onDeEquip(cid, item, slot)
	doPlayerSetMaxCapacity(cid, (getPlayerFreeCap(cid) - capacidade))
	return true
end

Editado Julho 27 por Bruno Minervino

luccagomesL
27 de julho de 2015 às 11:11

@@luccagomes,

 

Tenta alterar o magevipbag.lua por este:

local block = 135410 -- storage de controle
local capacidade = 1000 -- aqui coloca quanto que vai aumentar

function onEquip(cid, item, slot)
	setPlayerStorageValue(cid, block, getPlayerStorageValue(cid, block) < 0 and 1 or getPlayerStorageValue(cid, block) + 1)
	if getPlayerStorageValue(cid, block) == 3 then
		doPlayerSetMaxCapacity(cid, (getPlayerFreeCap(cid) + capacidade))
		setPlayerStorageValue(cid, block, 0)
	end
	return true
end

function onDeEquip(cid, item, slot)
	doPlayerSetMaxCapacity(cid, (getPlayerFreeCap(cid) - capacidade))
	return true
end
Eu não entendi muito bem o porque ele só vai dar cap após ele usar 3 vezes, mas caso você deseja retirar isso, segue abaixo:

local capacidade = 1000 -- aqui coloca quanto que vai aumentar

function onEquip(cid, item, slot)
	doPlayerSetMaxCapacity(cid, (getPlayerFreeCap(cid) + capacidade))
	return true
end

function onDeEquip(cid, item, slot)
	doPlayerSetMaxCapacity(cid, (getPlayerFreeCap(cid) - capacidade))
	return true
end

 

Testando seu script também tive problemas

 

Antes de eu colocar a BAG minha CAP estava: 3216

Depois que eu coloquei a bag minha CAP foi para: 5295 dps que coloca

Quando eu tirei a BP minha CAP foi para: 3988 qnd tira

Editado Julho 27 por Bruno Minervino

BrunoB
27 de julho de 2015 às 12:50

Testando seu script também tive problemas

 

Antes de eu colocar a BAG minha CAP estava: 3216

Depois que eu coloquei a bag minha CAP foi para: 5295 dps que coloca

Quando eu tirei a BP minha CAP foi para: 3988 qnd tira

Porque ele faz a conta em cima da getPlayerFreeCap (capacidade livre).

 

Tenta assim:

local capacidade = 1000 -- aqui coloca quanto que vai almentar

function getPlayerCap(cid)
	query = db.getResult("SELECT `cap` FROM `players` WHERE `id` = " .. getPlayerGUID(cid) .. ";")
	if(query:getID() < 1) then
		return nil
	end
	cap = query:getDataInt("cap")
	query:free()
	return cap
end

function onEquip(cid, item, slot)
	doPlayerSetMaxCapacity(cid, (getPlayerCap(cid) + capacidade))
	return true
end

function onDeEquip(cid, item, slot)
	doPlayerSetMaxCapacity(cid, (getPlayerCap(cid) - capacidade))
	return true
end

Editado Julho 29 por Bruno Minervino

luccagomesL
28 de julho de 2015 às 23:02

Porque ele faz a conta em cima da getPlayerFreeCap (capacidade livre).

 

Tenta assim:

local capacidade = 1000 -- aqui coloca quanto que vai almentar

function getPlayerCap(cid)
	query = db.getResult("SELECT `cap` FROM `players` WHERE `id` = " .. getPlayerGUID(cid) .. ";")
	if(query:getID() < 1) then
		return nil
	end
	cap = query:getDataInt("cap")
	query:free()
	return cap
end

function onEquip(cid, item, slot)
	doPlayerSetMaxCapacity(cid, (getPlayerCap(cid) + capacidade))
	return true
end

function onDeEquip(cid, item, slot)
	doPlayerSetMaxCapacity(cid, (getPlayerCap(cid) - capacidade))
	return true
end

 

Ué agora não ta dando pra colocar a BP no lugar da BP :S

 

Diz isso \/

You cannot dress this object there.

 

Lá onde aparece aquelas msg em branco de

Sorry, not possible.

 

@bruno ta dando um erro no console eu não tinha visto!

 

MlBp1jP.png

Editado Julho 29 por Bruno Minervino

BrunoB
29 de julho de 2015 às 06:47

@bruno ta dando um erro no console eu não tinha visto!

Man, atualizei o script, tenta novamente...

luccagomesL
29 de julho de 2015 às 15:21

Man, atualizei o script, tenta novamente...

 

Again qG6h8c2.png

BrunoB
29 de julho de 2015 às 15:43
Melhor resposta

Again

 

local capacidade = 1000 -- aqui coloca quanto que vai almentar

function getPlayerCap(cid)
	local query = db.getResult("SELECT `cap` FROM `players` WHERE `id` = " .. getPlayerGUID(cid))
	if query:getID() ~= -1 then
		return tonumber(query:getDataString("cap"))
	end
	return 0
end

function onEquip(cid, item, slot)
	doPlayerSetMaxCapacity(cid, (getPlayerCap(cid) + capacidade))
	return true
end

function onDeEquip(cid, item, slot)
	doPlayerSetMaxCapacity(cid, (getPlayerCap(cid) - capacidade))
	return true
end
luccagomesL
29 de julho de 2015 às 20:19
local capacidade = 1000 -- aqui coloca quanto que vai almentar

function getPlayerCap(cid)
	local query = db.getResult("SELECT `cap` FROM `players` WHERE `id` = " .. getPlayerGUID(cid))
	if query:getID() ~= -1 then
		return tonumber(query:getDataString("cap"))
	end
	return 0
end

function onEquip(cid, item, slot)
	doPlayerSetMaxCapacity(cid, (getPlayerCap(cid) + capacidade))
	return true
end

function onDeEquip(cid, item, slot)
	doPlayerSetMaxCapacity(cid, (getPlayerCap(cid) - capacidade))
	return true
end

 

Agora parece que ta funcionando, tipo eu tinha 25 de cap, coloquei a BP no lugar da BP fiquei com 1025

 

Editado Agosto 12 por Bruno Minervino

1 mês depois...
BrunoB
12 de agosto de 2015 às 16:59

Tópico movido para dúvidas / pedidos resolvidos.