alguém sabe algum points premium in game que funcione em 0.3.6 (pda open source) por forgottenserver(sql e não mysql)
alguém sabe algum points premium in game que funcione em 0.3.6 (pda open source) por forgottenserver(sql e não mysql)
Hm, e se adaptasse esse sistema para o uso de storages? Não vejo diferença prática, para falar a verdade (e database não é minha praia).
Qualquer coisa, basta substituir a lib por:
PREMIUM_POINT_KEY = 47371function getAccountPoints(cid) if not isPlayer(cid) then return true end local points = getPlayerStorageValue(cid, PREMIUM_POINT_KEY) return points < 0 and 0 or pointsendfunction doAccountAddPoints(cid, count) if not isPlayer(cid) then return true end return setPlayerStorageValue(cid, PREMIUM_POINT_KEY, getAccountPoints(cid) + count)endfunction doAccountRemovePoints(cid, count) if not isPlayer(cid) or getAccountPoints(cid) == 0 then return true end return setPlayerStorageValue(cid, PREMIUM_POINT_KEY, getAccountPoints(cid) - count)end
Os outros códigos permanecem os mesmos.
Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.
9 horas atrás, zipter98 disse:Hm, e se adaptasse esse sistema para o uso de storages? Não vejo diferença prática, para falar a verdade (e database não é minha praia).
Qualquer coisa, basta substituir a lib por:
PREMIUM_POINT_KEY = 47371function getAccountPoints(cid) if not isPlayer(cid) then return true end local points = getPlayerStorageValue(cid, PREMIUM_POINT_KEY) return points < 0 and 0 or pointsendfunction doAccountAddPoints(cid, count) if not isPlayer(cid) then return true end return setPlayerStorageValue(cid, PREMIUM_POINT_KEY, getAccountPoints(cid) + count)endfunction doAccountRemovePoints(cid, count) if not isPlayer(cid) or getAccountPoints(cid) == 0 then return true end return setPlayerStorageValue(cid, PREMIUM_POINT_KEY, getAccountPoints(cid) - count)end
Os outros códigos permanecem os mesmos.
muito bom,é o que eu queria isso mesmo,obrigado e aproveitando o topico teria como criar um script que o player digita !buycharizard,e remove x points e o player ganha 1x charizard direto na pokeball? e caso tiver 6 pokes na bag o pokemon comprado ir para depot,e também se puder botar para o pokemon vir bostado no maximo,no meu servidor o bost maximo é +100,ai quando player comprasse o charizard ele ja viria +100,obrigado.
estou usando esse script para comprar x points por y item,porém queria x points por y pokémon
function onSay(cid, words, param)
if getAccountPoints(cid) < 100 then -- QUANTIDADE DE PONTOS
doPlayerSendCancel(cid, 'Você não tem 100 Donate Points.') -- QUANTIDADE DE PONTOS
else
if doAccountRemovePoints(cid,100) == TRUE then -- QUANTIDADE DE PONTOS
doPlayerAddItem(cid, 2160, 200) -- ID DO ITEM QUE VAI COMPRAR
doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MORTAREA)
else
doSendMagicEffect(getPlayerPosition(cid), CONST_ME_FLAMEAREA)
end
end
end
Poderia me informar se existe alguma função que adiciona o pokémon para o jogador, como no PDA? Porque, caso não haja, gostaria de pedir que você postasse o código de uma daquelas box que dão um pokémon aleatório. Como nunca mexi nesse PDA open source, não conheço seus atributos e funções, por isso preciso de um outro script para me basear.
Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.
7 horas atrás, zipter98 disse:Poderia me informar se existe alguma função que adiciona o pokémon para o jogador, como no PDA? Porque, caso não haja, gostaria de pedir que você postasse o código de uma daquelas box que dão um pokémon aleatório. Como nunca mexi nesse PDA open source, não conheço seus atributos e funções, por isso preciso de um outro script para me basear.
as funções são as mesmas do pda,fiz questão de add um a um,e são todos ''copias'' das funções originais.
segue a boxs
local a = {
[11638] = {balltype = "normal", ballid = 11826,
pokemons = {"Caterpie", "Weedle", "Pidgey", "Rattata", "Metapod", "Kakuna", "Spearow",
"Diglett", "Zubat", "Paras", "Oddish", "Poliwag", "Bellsprout", "Magnemite", "Shellder", "Krabby", "Horsea",
"Goldeen", "Magikarp", "Exeggcute"}},
[11639] = {balltype = "great", ballid = 11832, --alterado v1.3
pokemons = {"Bulbasaur", "Charmander", "Squirtle", "Pidgeotto", "Raticate", "Pikachu",
"Butterfree", "Beedrill", "Ekans", "Arbok", "Gloom", "Nidoran Female", "Nidorina", "Nidoran Male", "Nidorino",
"Golbat", "Clefairy", "Jigglypuff", "Venonat", "Sandshrew", "Vulpix", "Meowth", "Persian", "Psyduck", "Mankey",
"Growlithe", "Poliwhirl", "Abra", "Machop", "Weepinbell", "Tentacool", "Geodude", "Ponyta", "Slowpoke", "Doduo",
"Seel", "Grimer", "Muk", "Gastly", "Drowzee", "Voltorb", "Cubone", "Koffing", "Weezing", "Rhyhorn", "Seaking",
"Staryu", "Eevee", "Omanyte", "Kabuto"}},
[11640] = {balltype = "super", ballid = 11835,
pokemons = {"Ivysaur", "Charmeleon", "Wartortle", "Raichu", "Fearow", "Vileplume", "Venomoth",
"Parasect", "Clefable", "Wigglytuff", "Sandslash", "Dugtrio", "Golduck", "Primeape", "Kadabra", "Machoke",
"Victreebel", "Graveler", "Rapidash", "Slowbro", "Magneton", "Farfetch'd", "Dodrio", "Cloyster", "Haunter", "Onix",
"Hypno", "Kingler", "Electrode", "Exeggutor", "Marowak", "Hitmonlee", "Hitmonchan", "Lickitung", "Chansey",
"Tangela", "Kangaskhan", "Seadra", "Starmie", "Mr. Mime", "Pinsir", "Tauros", "Vaporeon", "Jolteon",
"Flareon", "Porygon"}},
[11641] = {balltype = "ultra", ballid = 11829,
pokemons = {"Venusaur", "Charizard", "Blastoise", "Pidgeot", "Nidoqueen", "Nidoking", "Ninetales",
"Arcanine", "Poliwrath", "Alakazam", "Machamp", "Tentacruel", "Golem", "Dewgong", "Gengar", "Rhydon", "Scyther",
"Jynx", "Electabuzz", "Magmar", "Gyarados", "Lapras", "Omastar", "Kabutops", "Aerodactyl", "Snorlax", "Dragonair",
"Dragonite"}}
}
local extrastrength = 1.1
function onUse(cid, item, frompos, item2, topos)
local b = a[item.itemid]
if not b then return true end
local pokemon = b.pokemons[math.random(#b.pokemons)] --alterado v1.3
local btype = b.balltype
if not pokeballs[btype] then return true end
local gender = getRandomGenderByName(pokemon)
local happy = 220
local leveltable = getPokemonExperienceTable(pokemon)
local ball = 0
local sendToDepot = false --alterado v1.6
if getCreatureMana(cid) >= 6 or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then
sendToDepot = true
ball = doCreateItemEx(b.ballid) --alterado v1.3
else
ball = item.uid
end
doItemSetAttribute(ball, "poke", pokemon)
doItemSetAttribute(ball, "hp", 1)
doItemSetAttribute(ball, "happy", happy)
doItemSetAttribute(ball, "gender", gender)
if pokemon == "Hitmonchan" or pokemon == "Shiny Hitmonchan" then
doItemSetAttribute(ball, "hands", 0)
end
doItemSetAttribute(ball, "description", "Contains a "..pokemon..".")
doItemSetAttribute(ball, "fakedesc", "Contains a "..pokemon..".")
doPlayerSendTextMessage(cid, 27, "You opened a pokemon prize box +"..item.itemid - (11637).."!")
doPlayerSendTextMessage(cid, 27, "The prize pokemon was a "..pokemon..", congratulations!")
if sendToDepot then
doPlayerSendMailByName(getCreatureName(cid), ball, 1) --alterado v1.3
doPlayerSendTextMessage(cid, 27, "You are already holding six pokemons, so your new pokemon was sent to your depot.")
doRemoveItem(item.uid)
else
doTransformItem(ball, pokeballs[btype].on)
end
doSendMagicEffect(getThingPos(cid), 29)
return true
end
Supondo que, de fato, todas as funções tenham sido copiadas exatamente iguais (o código de box que você postou está incompleto, então me baseei no do PDA):
local pokemon = { ["nome_do_pokémon"] = {price = xxx, boost = xxx}, --etc}function doCorrectString(str) --Slicer local name = str:explode(" ") local final = {} for _, s in ipairs(name) do table.insert(final, s:sub(1, 1):upper()..s:sub(2, #s):lower()) end return table.concat(final, (name[2] and " " or ""))endfunction onSay(cid, words, param) local p = param:lower() if p == "list" then local str = "******** You can buy: ********" for p_name, info in pairs(pokemon) do str = str.."\n-"..p_name.." [+"..info.boost.."] for "..info.price.." premium point(s)." end doPlayerPopupFYI(cid, str) elseif pokemon[doCorrectString(p)] then local poke = pokemon[doCorrectString(p)] if getAccountPoints(cid) < poke.price then doPlayerSendCancel(cid, "Sorry, you do not have enough points. ["..poke.price.." premium points]") return true end doPlayerSendTextMessage(cid, 27, "You successfully bought a "..doCorrectString(p).." [+"..poke.boost.."] for "..poke.price.." premium point(s).") doAccountRemovePoints(cid, poke.price) addPokeToPlayer(cid, doCorrectString(p), poke.boost, nil, "normal") else doPlayerSendCancel(cid, "Invalid parameter. Type 'list' to see a list of pokemon you can buy, or type the name of the wished pokemon.") end return trueend
Algumas observações:
Optei por deixar o código mais configurável. Você pode escolher os pokémon que podem ser comprados, junto com boost e preço específico. Essas informações são mostradas num parâmetro que incluí (/comando list).
Logo, as opções de fala são:
/comando nome_do_pokémon --Para comprar um pokémon./comando list --Para mostrar uma lista com os pokémon compráveis.
Também, devo informar que os premium points não são compartilhados por outros personagens da conta. Para que isso aconteça, recomendaria instalar a função setAccountStorageValue, encontrada por aí na internet (acho que aqui no XTibia tem).
Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.
ficou perfeito,tudo que eu precisava,obrigado pela ajuda.
Caro membro, seu tópico foi movido de Otserv > Suporte Otserv para Suporte Otserv > Otserv > Pedidos e Dúvidas Resolvidos.
"Deus é amor, mas matou 99,99999% de todos os seres viventes do mundo com o diluvio.
Deus é misericórdia, mas condena as pessoas ao tormento eterno do inferno.
Deus é pai, mas abandonou seus filhos a servidão.
Deus é vida, mas condenou a humanidade a morte.
Deus é o senhor. Senhor das guerras, da morte, do ódio.
Ninguém que ame a humanidade, mataria 99,99999% da população, não só de humanos, bem como dos demais animais, por amor. Isso não é amor, é doença, psicose de um sádico que gosta de ver sua 'criação' sofrer e ainda quer 'pagar' de misericordioso, de deus amor.
Não quero seu amor; não quero sua misericórdia, não quero ser seu filho, não quero sua vida, não quero que seja meu senhor.
Tu és um psicótico, doente, hipócrita, assassino; não me venha querer se passar por bondoso, amoroso, misericordioso."