kaleudd 200 Postado Dezembro 4, 2016 Share Postado Dezembro 4, 2016 alguém sabe algum points premium in game que funcione em 0.3.6 (pda open source) por forgottenserver(sql e não mysql) como este Link para o comentário https://xtibia.com/forum/topic/242906-resolvido-points-premium-in-game/ Compartilhar em outros sites More sharing options...
0 zipter98 1102 Postado Dezembro 4, 2016 Share Postado Dezembro 4, 2016 (editado) 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). Editado Dezembro 4, 2016 por zipter98 M i s s reagiu a isso 1 Link para o comentário https://xtibia.com/forum/topic/242906-resolvido-points-premium-in-game/#findComment-1708366 Compartilhar em outros sites More sharing options...
0 zipter98 1102 Postado Dezembro 4, 2016 Share Postado Dezembro 4, 2016 (editado) 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. Editado Dezembro 4, 2016 por zipter98 Link para o comentário https://xtibia.com/forum/topic/242906-resolvido-points-premium-in-game/#findComment-1708327 Compartilhar em outros sites More sharing options...
0 kaleudd 200 Postado Dezembro 4, 2016 Autor Share Postado Dezembro 4, 2016 (editado) 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 Spoiler 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 Editado Dezembro 4, 2016 por kaleudd Link para o comentário https://xtibia.com/forum/topic/242906-resolvido-points-premium-in-game/#findComment-1708335 Compartilhar em outros sites More sharing options...
0 zipter98 1102 Postado Dezembro 4, 2016 Share Postado Dezembro 4, 2016 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. Link para o comentário https://xtibia.com/forum/topic/242906-resolvido-points-premium-in-game/#findComment-1708336 Compartilhar em outros sites More sharing options...
0 kaleudd 200 Postado Dezembro 4, 2016 Autor Share Postado Dezembro 4, 2016 (editado) 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 Spoiler 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 Editado Dezembro 4, 2016 por kaleudd Link para o comentário https://xtibia.com/forum/topic/242906-resolvido-points-premium-in-game/#findComment-1708362 Compartilhar em outros sites More sharing options...
0 kaleudd 200 Postado Dezembro 5, 2016 Autor Share Postado Dezembro 5, 2016 ficou perfeito,tudo que eu precisava,obrigado pela ajuda. Link para o comentário https://xtibia.com/forum/topic/242906-resolvido-points-premium-in-game/#findComment-1708370 Compartilhar em outros sites More sharing options...
0 Poccnn 385 Postado Dezembro 5, 2016 Share Postado Dezembro 5, 2016 Caro membro, seu tópico foi movido de Otserv > Suporte Otserv para Suporte Otserv > Otserv > Pedidos e Dúvidas Resolvidos. Link para o comentário https://xtibia.com/forum/topic/242906-resolvido-points-premium-in-game/#findComment-1708384 Compartilhar em outros sites More sharing options...
Pergunta
kaleudd 200
alguém sabe algum points premium in game que funcione em 0.3.6 (pda open source) por forgottenserver(sql e não mysql)
como este
Link para o comentário
https://xtibia.com/forum/topic/242906-resolvido-points-premium-in-game/Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados