Em 22/03/2021 em 09:20, Sugismundo disse:Serão itens, na parte de esquecer de entregar os pontos ta de boa, tenho uma pessoa especifica so para cuidar dessa parte.
Seu servidor tem shop ou site?
info
Grupo: Lorde
Registrado: 05/06/12
Posts: 2.2k
Reputação: +215
Gênero: Masculino

Em 22/03/2021 em 09:20, Sugismundo disse:Serão itens, na parte de esquecer de entregar os pontos ta de boa, tenho uma pessoa especifica so para cuidar dessa parte.
Seu servidor tem shop ou site?
info
Grupo: Campones
Registrado: 25/02/17
Posts: 41
Reputação: +1
Gênero: Masculino
Char no Tibia: Nother

19 horas atrás, Yan18 disse:Seu servidor tem shop ou site?
Tem site mas o Shop eu não utilizo. Nem sei se está funcionando
info
Grupo: Lorde
Registrado: 05/06/12
Posts: 2.2k
Reputação: +215
Gênero: Masculino

4 horas atrás, Sugismundo disse:Tem site mas o Shop eu não utilizo. Nem sei se está funcionando
Certo, e para os players comprarem vip estão comprando pelo site ou em contato direto com você?
info
Grupo: Campones
Registrado: 25/02/17
Posts: 41
Reputação: +1
Gênero: Masculino
Char no Tibia: Nother

Em 26/03/2021 em 22:59, Yan18 disse:Certo, e para os players comprarem vip estão comprando pelo site ou em contato direto com você?
Não tem vip, apenas vocações vips e alguns itens.
No caso as vocações vips são vendidas por npcs que usam a moeda vip que eu dou ao player quando ele donara
info
Grupo: Lorde
Registrado: 05/06/12
Posts: 2.2k
Reputação: +215
Gênero: Masculino

Em 28/03/2021 em 13:08, Sugismundo disse:Não tem vip, apenas vocações vips e alguns itens.
No caso as vocações vips são vendidas por npcs que usam a moeda vip que eu dou ao player quando ele donara
Entendi, vamos lá!
Não sei se você já tem a sprite no seu cliente de uma box ou se tem algum item em mente para usar, mas estou te facilitando a vida já te mandando a sprite em PNG e OBD, só adicionar no cliente caso queira, peguei de um pokétibia que tenho aqui.
Tem algumas maneiras do player receber a box, pode ser de maneira mais direta ou automatizada. Pensei na direta, porque a automatizada que tive em mente teria que fazer mais coisas e não sei se no seu caso compensa, pois você parece querer ter esse controle de entregar para player, então vamos fazer por talkaction!
Primeiramente vá em Data/Talkactions/Scripts e crie um arquivo.lua chamado player_vip_box_item.lua ou o nome que você quiser e adicione o código dentro:
local item_id = 13258 -- ID DO ITEM DA BOX local quantidade = 1 -- QUANTIDADE DE BOX QUE O PLAYER VAI RECEBER local message = "Obrigado por ter donatado! Como recompensa, você receberá uma box com um item surpresa." -- MENSAGEM QUE O PLAYER VAI RECEBER NO CHAT local effect = false -- SE QUISER COM EFEITO AO RECEBER O ITEM MUDE PARA TRUE local effect_id = 27 -- EFEITO DO ID AO RECEBER O ITEM function onSay(cid, words, param) local name = string.lower(param) if param == nil or param == "" then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa informar o nome do player para receber o item vip.") elseif string.len(param) < 3 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa informar um nome válido do player para receber o item vip.") else if #getPlayersOnline() > 1 then for index, player in pairs(getPlayersOnline()) do local player_name = string.lower(getCreatureName(player)) if name == player_name then doPlayerAddItem(player, item_id, quantidade) doPlayerSendTextMessage(player, MESSAGE_STATUS_CONSOLE_BLUE, message) -- VERIFICA SE VAI RECEBER EFEITO -- if effect then doSendMagicEffect(getThingPos(player), effect_id) end return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "O player " .. param .. " recebeu a recompensa.") end if index == #getPlayersOnline() and name ~= player_name then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "O player " .. param .. " não está online.") end end else return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Não há jogadores online!") end end end
E agora volte um diretório na pasta de Talkactions e abra o arquivo talkactions.xml e adicione a tag:
<talkaction words="!vipitem" acess="6" event="script" value="player_vip_box_item.lua"/>
Agora vá em Data/Actions/Scripts e crie o arquivo vip_box_item.lua ou o nome que quiser e adicione o código dentro:
-- TABELA COM O ID DOS ITENS E A QUANTIDADE -- local items = { {id = 2152, quantidade = 1000}, {id = 2160, quantidade = 100}, {id = 13250, quantidade = 1}, {id = 13255, quantidade = 5}, {id = 13260, quantidade = 10}, } local effect = false -- COLOQUE TRUE SE QUER QUE O PLAYER RECEBA EFEITO AO ABRIR A BOX local effect_id = 30 -- ID DO EFEITO AO RECEBER A BOX local table_random = false -- SE QUISER QUE RECEBE ITENS ALEATÓRIOS MUDE PARA TRUE OU DEIXE FALSE PARA O PLAYER RECEBER TODOS OS ITENS -------------------------------------------- CÓDIGO ------------------------------------------ function onUse(cid, item, fromPosition, itemEx, toPosition) if table_random then local random_item = math.random(1, #items) -- PEGA UM ÍNDICE ALEATÓRIO DA TABELA PARA DAR O ITEM DE FORMA ALEATÓRIA doPlayerAddItem(cid, items[random_item].id, items[random_item].quantidade) if items[random_item].quantidade > 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você recebeu " .. "x" .. items[random_item].quantidade .. " " .. getItemNameById(items[random_item].id) .. ".") elseif items[random_item].quantidade == 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você recebeu " .. getItemNameById(items[random_item].id) .. ".") else return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Houve um problema ao receber o item, por favor report o problema.") end if effect then doSendMagicEffect(getThingPos(cid), effect_id) end return true else for i = 1, #items do doPlayerAddItem(cid, items[i].id, items[i].quantidade) if items[i].quantidade > 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você recebeu " .. "x" .. items[i].quantidade .. " " .. getItemNameById(items[i].id) .. ".") elseif items[i].quantidade == 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você recebeu " .. getItemNameById(items[i].id) .. ".") else return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Houve um problema ao receber o item, por favor report o problema.") end -- SE ESTÁ TRUE RECEBE O EFEITO AO ABRIR A BOX -- if effect then doSendMagicEffect(getThingPos(cid), effect_id) end end return true end end
Por fim na pasta Actions volte um diretório e abra o arquivo actions.xml e adicione a tag:
<action itemid="XXXX" event="script" value="vip_box_item.lua"/> <!-- COLOQUE O ID DO ITEM ONDE ESTÁ XXXX -->
Onde está XXXX você coloca o id do item (até deixei comentado no fim da tag xml.
--------- EXPLICAÇÃO --------
O script vai funcionar da seguinte maneira: Você irá dar ao player a box via comando talkactions e só funciona se o player estiver online. A talkaction é:
!vipitem Nome
Então com o comando !vipitem mais o nome do player irá adicionar o item se ele estiver online. No código ele converte o nome do player para minúsculo, então se tiver players com nome iguais mais com o tamanho do caractere diferente, vai dar ruim e vai adicionar para os dois, para quem tiver online ou para nenhum.
Tem mensagens para todo tipo de situação, se o player está offline, se você digitar nome do player com menos de 3 caracteres ou se não digitar o nome.
Eu fiz variáveis booleana que se você quiser que tenha efeito ao player receber a box ou abrir só mudar para true no código a variável effect. E no arquivo da pasta actions tem a tabela com os itens, só colocar o id e a quantidade de cada item. Se quiser dar só um item é só deixar a tabela com um item. E a variável table_random é para caso sorteie um item aleatório quando o player abrir a box (clicar), e nesse caso ele vai receber um item só! Agora se quiser que receba todos da tabela, deixe a variável table_random como false, se quiser aleatório coloque true.
Eu deixei tudo comentado e está bem intuitivo, e eu testei somente o código do talkactions, pois o do actions é bem fácil e eu fiz de cabeça, mas analisei certinho e não é para dar problema.
Qualquer erro ou problema, me avise.
Editado Março 30 por Yan18
info
Grupo: Campones
Registrado: 25/02/17
Posts: 41
Reputação: +1
Gênero: Masculino
Char no Tibia: Nother

12 horas atrás, Yan18 disse:
Entendi, vamos lá!
Não sei se você já tem a sprite no seu cliente de uma box ou se tem algum item em mente para usar, mas estou te facilitando a vida já te mandando a sprite em PNG e OBD, só adicionar no cliente caso queira, peguei de um pokétibia que tenho aqui.
Tem algumas maneiras do player receber a box, pode ser de maneira mais direta ou automatizada. Pensei na direta, porque a automatizada que tive em mente teria que fazer mais coisas e não sei se no seu caso compensa, pois você parece querer ter esse controle de entregar para player, então vamos fazer por talkaction!
Primeiramente vá em Data/Talkactions/Scripts e crie um arquivo.lua chamado player_vip_box_item.lua ou o nome que você quiser e adicione o código dentro:
local item_id = 13258 -- ID DO ITEM DA BOX local quantidade = 1 -- QUANTIDADE DE BOX QUE O PLAYER VAI RECEBER local message = "Obrigado por ter donatado! Como recompensa, você receberá uma box com um item surpresa." -- MENSAGEM QUE O PLAYER VAI RECEBER NO CHAT local effect = false -- SE QUISER COM EFEITO AO RECEBER O ITEM MUDE PARA TRUE local effect_id = 27 -- EFEITO DO ID AO RECEBER O ITEM function onSay(cid, words, param) local command = string.explode(param, ",") local name = string.lower(param) if param == nil or param == "" then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa informar o nome do player para receber o item vip.") elseif string.len(param) < 3 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa informar um nome válido do player para receber o item vip.") else if #getPlayersOnline() > 1 then for index, player in pairs(getPlayersOnline()) do local player_name = string.lower(getCreatureName(player)) if name == player_name then doPlayerAddItem(player, item_id, quantidade) doPlayerSendTextMessage(player, MESSAGE_STATUS_CONSOLE_BLUE, message) -- VERIFICA SE VAI RECEBER EFEITO -- if effect then doSendMagicEffect(getThingPos(player), effect_id) end return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "O player " .. param .. " recebeu a recompensa.") end if index == #getPlayersOnline() and name ~= player_name then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "O player " .. param .. " não está online.") end end else return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Não há jogadores online!") end end end
E agora volte um diretório na pasta de Talkactions e abra o arquivo talkactions.xml e adicione a tag:
<talkaction words="!vipitem" acess="6" event="script" value="player_vip_box_item.lua"/>
Agora vá em Data/Actions/Scripts e crie o arquivo vip_box_item.lua ou o nome que quiser e adicione o código dentro:
-- TABELA COM O ID DOS ITENS E A QUANTIDADE -- local items = { {id = 2152, quantidade = 1000}, {id = 2160, quantidade = 100}, {id = 13250, quantidade = 1}, {id = 13255, quantidade = 5}, {id = 13260, quantidade = 10}, } local effect = false -- COLOQUE TRUE SE QUER QUE O PLAYER RECEBA EFEITO AO ABRIR A BOX local effect_id = 30 -- ID DO EFEITO AO RECEBER A BOX local table_random = false -- SE QUISER QUE RECEBE ITENS ALEATÓRIOS MUDE PARA TRUE OU DEIXE FALSE PARA O PLAYER RECEBER TODOS OS ITENS -------------------------------------------- CÓDIGO ------------------------------------------ function onUse(cid, item, fromPosition, itemEx, toPosition) if table_random then local random_item = math.random(1, #items) -- PEGA UM ÍNDICE ALEATÓRIO DA TABELA PARA DAR O ITEM DE FORMA ALEATÓRIA doPlayerAddItem(cid, items[random_item].id, items[random_item].quantidade) if items[random_item].quantidade > 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você recebeu " .. "x" .. items[random_item].quantidade .. " " .. getItemNameById(items[random_item].id) .. ".") elseif items[random_item].quantidade == 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você recebeu " .. getItemNameById(items[random_item].id) .. ".") else return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Houve um problema ao receber o item, por favor report o problema.") end if effect then doSendMagicEffect(getThingPos(cid), effect_id) end return true else for i = 1, #items do doPlayerAddItem(cid, items[i].id, items[i].quantidade) if items[i].quantidade > 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você recebeu " .. "x" .. items[i].quantidade .. " " .. getItemNameById(items[i].id) .. ".") elseif items[i].quantidade == 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você recebeu " .. getItemNameById(items[i].id) .. ".") else return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Houve um problema ao receber o item, por favor report o problema.") end -- SE ESTÁ TRUE RECEBE O EFEITO AO ABRIR A BOX -- if effect then doSendMagicEffect(getThingPos(cid), effect_id) end end return true end end
Por fim na pasta Actions volte um diretório e abra o arquivo actions.xml e adicione a tag:
<action itemid="XXXX" event="script" value="vip_box_item.lua"/> <!-- COLOQUE O ID DO ITEM ONDE ESTÁ XXXX -->
Onde está XXXX você coloca o id do item (até deixei comentado no fim da tag xml.
--------- EXPLICAÇÃO --------
O script vai funcionar da seguinte maneira: Você irá dar ao player a box via comando talkactions e só funciona se o player estiver online. A talkaction é:
!vipitem NomeEntão com o comando !vipitem mais o nome do player irá adicionar o item se ele estiver online. No código ele converte o nome do player para minúsculo, então se tiver players com nome iguais mais com o tamanho do caractere diferente, vai dar ruim e vai adicionar para os dois, para quem tiver online ou para nenhum.
Tem mensagens para todo tipo de situação, se o player está offline, se você digitar nome do player com menos de 3 caracteres ou se não digitar o nome.
Eu fiz variáveis booleana que se você quiser que tenha efeito ao player receber a box ou abrir só mudar para true no código a variável effect. E no arquivo da pasta actions tem a tabela com os itens, só colocar o id e a quantidade de cada item. Se quiser dar só um item é só deixar a tabela com um item. E a variável table_random é para caso sorteie um item aleatório quando o player abrir a box (clicar), e nesse caso ele vai receber um item só! Agora se quiser que receba todos da tabela, deixe a variável table_random como false, se quiser aleatório coloque true.
Eu deixei tudo comentado e está bem intuitivo, e eu testei somente o código do talkactions, pois o do actions é bem fácil e eu fiz de cabeça, mas analisei certinho e não é para dar problema.
Qualquer erro ou problema, me avise.
Então amigo o código funciona mas tive 2 problemas, as box não estão sumindo ao usar, tendo como usar infinitamente. Já tentei arrumar no item editor e no xml mas não resolveu. Segundo é, caso o player donate uma quantia X e eu vá dar a quantia que ele donatou vou precisar adicionar o mesmo script 2 vezes com nomes diferentes e alterar o valor? Por que pelo que vi só tem como eu adicionar uma quantia fixa, pelo comando não da para escolher a quantidade de pontos que o player vai receber ao abrir a box?
info
Grupo: Lorde
Registrado: 05/06/12
Posts: 2.2k
Reputação: +215
Gênero: Masculino

3 horas atrás, Sugismundo disse:Então amigo o código funciona mas tive 2 problemas, as box não estão sumindo ao usar, tendo como usar infinitamente. Já tentei arrumar no item editor e no xml mas não resolveu. Segundo é, caso o player donate uma quantia X e eu vá dar a quantia que ele donatou vou precisar adicionar o mesmo script 2 vezes com nomes diferentes e alterar o valor? Por que pelo que vi só tem como eu adicionar uma quantia fixa, pelo comando não da para escolher a quantidade de pontos que o player vai receber ao abrir a box?
Sobre a box não sumir foi erro meu, esqueci de remover. Sabia que estava esquecendo algo haha. Troque o código da pasta actions por esse:
-- TABELA COM O ID DOS ITENS E A QUANTIDADE -- local items = { {id = 2152, quantidade = 1000}, {id = 2160, quantidade = 100}, {id = 13250, quantidade = 1}, {id = 13255, quantidade = 5}, {id = 13260, quantidade = 10}, } local effect = false -- COLOQUE TRUE SE QUER QUE O PLAYER RECEBA EFEITO AO ABRIR A BOX local effect_id = 30 -- ID DO EFEITO AO RECEBER A BOX local table_random = false -- SE QUISER QUE RECEBE ITENS ALEATÓRIOS MUDE PARA TRUE OU DEIXE FALSE PARA O PLAYER RECEBER TODOS OS ITENS -------------------------------------------- CÓDIGO ------------------------------------------ function onUse(cid, item, fromPosition, itemEx, toPosition) if table_random then local random_item = math.random(1, #items) -- PEGA UM ÍNDICE ALEATÓRIO DA TABELA PARA DAR O ITEM DE FORMA ALEATÓRIA doPlayerAddItem(cid, items[random_item].id, items[random_item].quantidade) if items[random_item].quantidade > 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você recebeu " .. "x" .. items[random_item].quantidade .. " " .. getItemNameById(items[random_item].id) .. ".") elseif items[random_item].quantidade == 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você recebeu " .. getItemNameById(items[random_item].id) .. ".") else return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Houve um problema ao receber o item, por favor report o problema.") end if effect then doSendMagicEffect(getThingPos(cid), effect_id) end doRemoveItem(item.uid, 1) return true else for i = 1, #items do doPlayerAddItem(cid, items[i].id, items[i].quantidade) if items[i].quantidade > 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você recebeu " .. "x" .. items[i].quantidade .. " " .. getItemNameById(items[i].id) .. ".") elseif items[i].quantidade == 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você recebeu " .. getItemNameById(items[i].id) .. ".") else return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Houve um problema ao receber o item, por favor report o problema.") end -- SE ESTÁ TRUE RECEBE O EFEITO AO ABRIR A BOX -- if effect then doSendMagicEffect(getThingPos(cid), effect_id) end doRemoveItem(item.uid, 1) end return true end end
Sobre sua pergunta, de o player donatar mais, eu não entendi muito bem o que você quis dizer. No caso os pontos seria itens da recompensa ou você fala da quantidade de box?
info
Grupo: Campones
Registrado: 25/02/17
Posts: 41
Reputação: +1
Gênero: Masculino
Char no Tibia: Nother

5 horas atrás, Yan18 disse:Sobre a box não sumir foi erro meu, esqueci de remover. Sabia que estava esquecendo algo haha. Troque o código da pasta actions por esse:
-- TABELA COM O ID DOS ITENS E A QUANTIDADE -- local items = { {id = 2152, quantidade = 1000}, {id = 2160, quantidade = 100}, {id = 13250, quantidade = 1}, {id = 13255, quantidade = 5}, {id = 13260, quantidade = 10}, } local effect = false -- COLOQUE TRUE SE QUER QUE O PLAYER RECEBA EFEITO AO ABRIR A BOX local effect_id = 30 -- ID DO EFEITO AO RECEBER A BOX local table_random = false -- SE QUISER QUE RECEBE ITENS ALEATÓRIOS MUDE PARA TRUE OU DEIXE FALSE PARA O PLAYER RECEBER TODOS OS ITENS -------------------------------------------- CÓDIGO ------------------------------------------ function onUse(cid, item, fromPosition, itemEx, toPosition) if table_random then local random_item = math.random(1, #items) -- PEGA UM ÍNDICE ALEATÓRIO DA TABELA PARA DAR O ITEM DE FORMA ALEATÓRIA doPlayerAddItem(cid, items[random_item].id, items[random_item].quantidade) if items[random_item].quantidade > 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você recebeu " .. "x" .. items[random_item].quantidade .. " " .. getItemNameById(items[random_item].id) .. ".") elseif items[random_item].quantidade == 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você recebeu " .. getItemNameById(items[random_item].id) .. ".") else return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Houve um problema ao receber o item, por favor report o problema.") end if effect then doSendMagicEffect(getThingPos(cid), effect_id) end doRemoveItem(item.uid, 1) return true else for i = 1, #items do doPlayerAddItem(cid, items[i].id, items[i].quantidade) if items[i].quantidade > 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você recebeu " .. "x" .. items[i].quantidade .. " " .. getItemNameById(items[i].id) .. ".") elseif items[i].quantidade == 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você recebeu " .. getItemNameById(items[i].id) .. ".") else return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Houve um problema ao receber o item, por favor report o problema.") end -- SE ESTÁ TRUE RECEBE O EFEITO AO ABRIR A BOX -- if effect then doSendMagicEffect(getThingPos(cid), effect_id) end doRemoveItem(item.uid, 1) end return true end end
Sobre sua pergunta, de o player donatar mais, eu não entendi muito bem o que você quis dizer. No caso os pontos seria itens da recompensa ou você fala da quantidade de box?
Eu digo tipo assim, o player donatou 10 reais, ele ganha 10 pontos entendeu? caso ele donate um valor diferente eu teria que dar uma quantidade de pontos diferente
info
Grupo: Lorde
Registrado: 05/06/12
Posts: 2.2k
Reputação: +215
Gênero: Masculino

51 minutos atrás, Sugismundo disse:Eu digo tipo assim, o player donatou 10 reais, ele ganha 10 pontos entendeu? caso ele donate um valor diferente eu teria que dar uma quantidade de pontos diferente
No caso seria 10x box certo?
info
Grupo: Campones
Registrado: 25/02/17
Posts: 41
Reputação: +1
Gênero: Masculino
Char no Tibia: Nother

Em 31/03/2021 em 01:57, Yan18 disse:No caso seria 10x box certo?
Tá vamos la, não sei se ja jogou algum ot server assim, mas normalmente quando voce donata voce recebe uma quantia de pontos ou coins de acordo com o valor que voce donatou. O que eu quero fazer e exatamente isso so que de maneira manual, Se eu pago 10 reais eu recebo 10 pontos, se eu pago 20 recebo 20 pontos, 30 recebo 30 e assim por diante.
O script que você me passou ele funciona de tal maneira, nele eu especifico o item que eu vou querer que o player receba e ao abrir ele vai receber esse item, mas oque estou com duvida é.
Como eu faria para dar a quantidade de pontos que o player donatou usando esse sistema de box que voce me passou, sendo que eu preciso especificar no script oque o player vai receber. E não tem como eu especificar algo quando esse algo pode variar de acordo com o player entende?
Tipo se eu especifico que o player vai donatar 25 reais e eu especifiquei que a box ela vai dar 10 pontos ao abrir, dessa forma faltaria 15 pontos para entregar ao player. mesmo que eu dê 2 box para o player ainda assim faltaria 5 pontos para entregar e não teria como dar outra box.
A unica coisa que pensei seria adcionar esse mesmo script varias vezes com valores diferentes para cada script e trocar o talkaction, mas daria muito trabalho.
Por acaso não teria uma forma de mim especificar o item da box ao criar ela ingame? tipo
!vipbox 13500, 100
Dai eu ja criaria com o item que eu quero com a quantidade de acordo com o valor que o player donatou, deu para entender?
Editado Abril 1 por Sugismundo
info
Grupo: Lorde
Registrado: 05/06/12
Posts: 2.2k
Reputação: +215
Gênero: Masculino

5 horas atrás, Sugismundo disse:Tá vamos la, não sei se ja jogou algum ot server assim, mas normalmente quando voce donata voce recebe uma quantia de pontos ou coins de acordo com o valor que voce donatou. O que eu quero fazer e exatamente isso so que de maneira manual, Se eu pago 10 reais eu recebo 10 pontos, se eu pago 20 recebo 20 pontos, 30 recebo 30 e assim por diante.
O script que você me passou ele funciona de tal maneira, nele eu especifico o item que eu vou querer que o player receba e ao abrir ele vai receber esse item, mas oque estou com duvida é.
Como eu faria para dar a quantidade de pontos que o player donatou usando esse sistema de box que voce me passou, sendo que eu preciso especificar no script oque o player vai receber. E não tem como eu especificar algo quando esse algo pode variar de acordo com o player entende?
Tipo se eu especifico que o player vai donatar 25 reais e eu especifiquei que a box ela vai dar 10 pontos ao abrir, dessa forma faltaria 15 pontos para entregar ao player. mesmo que eu dê 2 box para o player ainda assim faltaria 5 pontos para entregar e não teria como dar outra box.A unica coisa que pensei seria adcionar esse mesmo script varias vezes com valores diferentes para cada script e trocar o talkaction, mas daria muito trabalho.
Por acaso não teria uma forma de mim especificar o item da box ao criar ela ingame? tipo!vipbox 13500, 100
Dai eu ja criaria com o item que eu quero com a quantidade de acordo com o valor que o player donatou, deu para entender?
Agora entendi perfeitamente, mas assim, agora que entendi melhor, eu acho que isso pode ser problemático, porque se o cara donatar valores altos vai ter que dar itens de acordo com a quantidade, e chega uma hora que fica complicado isso. Recomendo tabelar isso.
Mas nesse caso, no script que eu fiz, você tem duas alternativas, tabelar por quantidade na tabela de itens no script da pasta Actions ou por parâmetro no comando talkaction que entrega a box colocar quantas box ele recebe, e se você quiser o segundo caso, recomendo colocar o item da box como agrupável, porque se não vai ocupar muito espaço na bag do player.
info
Grupo: Campones
Registrado: 25/02/17
Posts: 41
Reputação: +1
Gênero: Masculino
Char no Tibia: Nother

2 horas atrás, Yan18 disse:Agora entendi perfeitamente, mas assim, agora que entendi melhor, eu acho que isso pode ser problemático, porque se o cara donatar valores altos vai ter que dar itens de acordo com a quantidade, e chega uma hora que fica complicado isso. Recomendo tabelar isso.
Mas nesse caso, no script que eu fiz, você tem duas alternativas, tabelar por quantidade na tabela de itens no script da pasta Actions ou por parâmetro no comando talkaction que entrega a box colocar quantas box ele recebe, e se você quiser o segundo caso, recomendo colocar o item da box como agrupável, porque se não vai ocupar muito espaço na bag do player.
Mas nesse caso então o que iria mudar é a quantidade de box? ou seja o valor dos pontos ainda seria fixo por cada box, e para funcionar com qualquer valor de donate os pontos da box precisariam ser apenas 1 ou seja se o player donatar 100 reais eu teria que dar a ele 100 box para ele receber 100 pontos. Não teria como eu simplificar isso? Fazer uma box apenas que dê qualquer valor de pontos que eu definir ao entrega-la?
info
Grupo: Lorde
Registrado: 05/06/12
Posts: 2.2k
Reputação: +215
Gênero: Masculino

4 minutos atrás, Sugismundo disse:Mas nesse caso então o que iria mudar é a quantidade de box? ou seja o valor dos pontos ainda seria fixo por cada box, e para funcionar com qualquer valor de donate os pontos da box precisariam ser apenas 1 ou seja se o player donatar 100 reais eu teria que dar a ele 100 box para ele receber 100 pontos. Não teria como eu simplificar isso? Fazer uma box apenas que dê qualquer valor de pontos que eu definir ao entrega-la?
Então, foi como te falei, eu te dei duas sugestões, uma é por box e outro por tabela.
Pensei em fazer assim, quando for usar a talkaction, você usa um parâmetro numérico que vão ser os pontos, e de acordo com o parâmetro, o player vai receber X quantidade de itens. Você quer que receba de forma aleatória ou por ordem que os itens ficam na tabela?
info
Grupo: Campones
Registrado: 25/02/17
Posts: 41
Reputação: +1
Gênero: Masculino
Char no Tibia: Nother

1 minuto atrás, Yan18 disse:Então, foi como te falei, eu te dei duas sugestões, uma é por box e outro por tabela.
Pensei em fazer assim, quando for usar a talkaction, você usa um parâmetro numérico que vão ser os pontos, e de acordo com o parâmetro, o player vai receber X quantidade de itens. Você quer que receba de forma aleatória ou por ordem que os itens ficam na tabela?
Vai ser apenas 1 item que são os pontos
info
Grupo: Campones
Registrado: 25/02/17
Posts: 41
Reputação: +1
Gênero: Masculino
Char no Tibia: Nother
Tudo bem então, pode ser dessa maneira