WO
suporte otserv

[AJUDA] Separar script

Por wougoplex, 08 de dez. de 2016 em Resolvidos

ajuda
10
1.4k
wougoplexW
08 de dezembro de 2016 às 20:41

Tipo vc da use no item e ganhaa outfit que queria separar pra tipo

um script so male pode usar e o outro so famele 

 

Esse é o script que eu tenho 

 

Spoiler

function onUse(cid, item, fromPosition, itemEx, toPosition)

if getPlayerStorageValue(cid, 181656) == 1 then
return doPlayerSendCancel(cid, 22, "Você já possue essa outfit.")
else
setPlayerStorageValue(cid, 181656, 1)
doRemoveItem(item.uid, 1)
doPlayerSendTextMessage(cid, 22, "Parabéns você ganhou a outfit Sr.Madruga.")
end
end

 

gabriel28G
08 de dezembro de 2016 às 21:20
34 minutos atrás, wougoplex disse:

 

 

 

Testa ai, não sei se vai funcionar:

 

local sex = getPlayerSex(cid)function onUse(cid, item, fromPosition, itemEx, toPosition)if sex == 0 thenreturn doPlayerSendCancel(cid, 22, "Só homens podem pegar essa outfit.")return falseendif getPlayerStorageValue(cid, 181656) == 1 thenreturn doPlayerSendCancel(cid, 22, "Você já possue essa outfit.")elsesetPlayerStorageValue(cid, 181656, 1)doRemoveItem(item.uid, 1)doPlayerSendTextMessage(cid, 22, "Parabéns você ganhou a outfit Sr.Madruga.")endend

 

wougoplexW
08 de dezembro de 2016 às 21:41
17 minutos atrás, gabriel28 disse:

 

Testa ai, não sei se vai funcionar:

 

local sex = getPlayerSex(cid)function onUse(cid, item, fromPosition, itemEx, toPosition)if sex == 0 thenreturn doPlayerSendCancel(cid, 22, "Só homens podem pegar essa outfit.")return falseendif getPlayerStorageValue(cid, 181656) == 1 thenreturn doPlayerSendCancel(cid, 22, "Você já possue essa outfit.")elsesetPlayerStorageValue(cid, 181656, 1)doRemoveItem(item.uid, 1)doPlayerSendTextMessage(cid, 22, "Parabéns você ganhou a outfit Sr.Madruga.")endend

 

Nao foi

 

gabriel28G
08 de dezembro de 2016 às 21:47

Qual o erro?

 

wougoplexW
08 de dezembro de 2016 às 21:48
Agora, gabriel28 disse:

Qual o erro?

 

Famela pode usar

 

gabriel28G
08 de dezembro de 2016 às 21:49

Não aparece nenhum erro na distro, mas male e famale está podendo usar o item, é isso?

08 de dezembro de 2016 às 21:55
function onUse(cid, item, fromPosition, itemEx, toPosition)if getPlayerSex(cid) == 0 then   if getPlayerStorageValue(cid, 181656) == 1 then      doPlayerSendCancel(cid, 22, "Você já possue essa outfit.")   else       setPlayerStorageValue(cid, 181656, 1)       doRemoveItem(item.uid, 1)       doPlayerSendTextMessage(cid, 22, "Parabéns você ganhou a outfit Sr.Madruga.")   endelse    doPlayerSendCancel(cid, 22, "Apenas male")endreturn trueend

 

zipter98Z
08 de dezembro de 2016 às 22:00

^ Apenas alguns erros básicos. 

cid é um argumento dentro do callback. Logo, fora dele seu valor é nulo.

O correto seria declarar a variável sex abaixo de function onUse(...).

 

Nesta parte:

if sex == 0 then	return doPlayerSendCancel(cid, 22, "Só homens podem pegar essa outfit.")	return falseend

Você colocou dois valores de retorno, o que gera erros. O adequado seria:

if sex == 0 then    return doPlayerSendCancel(cid, 22, "Só homens podem pegar essa outfit.")end

Finalmente, recomendaria retornar verdadeiro ao final deste código, ou, ao menos, abaixo de doPlayerSendTextMessage.

 

Caso não se importe, escrevi duas versões do código.

Na primeira, um mesmo item garante outfits diferentes considerando-se o sexo.

Spoiler
local outfits = {    --[sex] = {key = storage, outfit_name = "nome_da_outfit"},    [1] = {key = 181656, outfit_name = "Sr. Madruga"},    --etc}function onUse(cid, item)    local outfit = outfits[getPlayerSex(cid)]        if getPlayerStorageValue(cid, outfit.key) > -1 then        doPlayerSendCancel(cid, "Você já possui essa outfit.")        return true    end        doPlayerSendTextMessage(cid, 22, "Parabéns, você ganhou a outfit "..outfit.outfit_name..".")    setPlayerStorageValue(cid, outfit.key, 1)    doRemoveItem(item.uid, 1)    return trueend

 

 

Já na segunda versão, cada item concede uma outfit diferente, com a limitação do sexo.

Spoiler
local outfits = {    --[itemid] = {sex = xxx, key = storage, outfit_name = "nome_da_outfit"},    [xxx] = {sex = 1, key = 181656, outfit_name = "Sr. Madruga"},    --etc}function onUse(cid, item)    local outfit = outfits[item.itemid]    if not outfit then return true end         if getPlayerSex(cid) ~= outfit.sex then        doPlayerSendCancel(cid, "Este item garante uma outfit ao sexo oposto.")        return true    elseif getPlayerStorageValue(cid, outfit.key) > -1 then        doPlayerSendCancel(cid, "Você já possui essa outfit.")        return true    end        doPlayerSendTextMessage(cid, 22, "Parabéns, você ganhou a outfit "..outfit.outfit_name..".")    setPlayerStorageValue(cid, outfit.key, 1)    doRemoveItem(item.uid, 1)    return trueend

 

 

Naturalmente, nesse caso, você configuraria os itens na mesma tag, separando-os por ponto e vírgula (;).

Editado Dezembro 8 por zipter98

wougoplexW
10 de dezembro de 2016 às 08:35
Em 08/12/2016 at 22:00, zipter98 disse:

^ Apenas alguns erros básicos. 

cid é um argumento dentro do callback. Logo, fora dele seu valor é nulo.

O correto seria declarar a variável sex abaixo de function onUse(...).

 

Nesta parte:

if sex == 0 then	return doPlayerSendCancel(cid, 22, "Só homens podem pegar essa outfit.")	return falseend

Você colocou dois valores de retorno, o que gera erros. O adequado seria:

if sex == 0 then    return doPlayerSendCancel(cid, 22, "Só homens podem pegar essa outfit.")end

Finalmente, recomendaria retornar verdadeiro ao final deste código, ou, ao menos, abaixo de doPlayerSendTextMessage.

 

Caso não se importe, escrevi duas versões do código.

Na primeira, um mesmo item garante outfits diferentes considerando-se o sexo.

  Mostrar conteúdo oculto
local outfits = {    --[sex] = {key = storage, outfit_name = "nome_da_outfit"},    [1] = {key = 181656, outfit_name = "Sr. Madruga"},    --etc}function onUse(cid, item)    local outfit = outfits[getPlayerSex(cid)]        if getPlayerStorageValue(cid, outfit.key) > -1 then        doPlayerSendCancel(cid, "Você já possui essa outfit.")        return true    end        doPlayerSendTextMessage(cid, 22, "Parabéns, você ganhou a outfit "..outfit.outfit_name..".")    setPlayerStorageValue(cid, outfit.key, 1)    doRemoveItem(item.uid, 1)    return trueend

 

 

Já na segunda versão, cada item concede uma outfit diferente, com a limitação do sexo.

  Mostrar conteúdo oculto
local outfits = {    --[itemid] = {sex = xxx, key = storage, outfit_name = "nome_da_outfit"},    [xxx] = {sex = 1, key = 181656, outfit_name = "Sr. Madruga"},    --etc}function onUse(cid, item)    local outfit = outfits[item.itemid]    if not outfit then return true end         if getPlayerSex(cid) ~= outfit.sex then        doPlayerSendCancel(cid, "Este item garante uma outfit ao sexo oposto.")        return true    elseif getPlayerStorageValue(cid, outfit.key) > -1 then        doPlayerSendCancel(cid, "Você já possui essa outfit.")        return true    end        doPlayerSendTextMessage(cid, 22, "Parabéns, você ganhou a outfit "..outfit.outfit_name..".")    setPlayerStorageValue(cid, outfit.key, 1)    doRemoveItem(item.uid, 1)    return trueend

 

 

Naturalmente, nesse caso, você configuraria os itens na mesma tag, separando-os por ponto e vírgula (;).

Qual das duas da de pro so pra male usar ou female ?

zipter98Z
10 de dezembro de 2016 às 14:21

Imagino que você se refere à segunda versão. 

Suponho que saiba configurar a tag, não é?

Editado Dezembro 10 por zipter98