Postado Abril 21, 2021 4 anos Olá, senhores! Estou com um script que quando o player compra a VIP no meu servidor, a conta dele vai ficar com essa VIP durante 30 dias e ele vai ganhar uma storage (que vai servir para varias coisas, mas isso não importa aqui). Bom, o problema é que quando os 30 dias de VIP acabar, o player continua com a storage. Preciso de um script que retire essa storage quando os dias de VIP acabar. Alguém pode me ajudar com isso? Spoiler local a = { ITEM = {2145, 10}, -- ITEM, QUANTIDADE DAYS = 30 -- Dias de vip } function onSay(cid, words, param, channel) if getPlayerStorageValue(cid, 123456) == 1 then return doPlayerSendTextMessage(cid, 20, "You are already vip") and true else if getPlayerItemCount(cid, a.ITEM[1]) >= a.ITEM[2] then setPlayerStorageValue(cid, 123456, 1) doPlayerAddPremiumDays(cid, a.DAYS) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You receive "..a.DAYS.." VIP account days!") doSendMagicEffect(getCreaturePosition(cid), 28) doPlayerRemoveItem(cid, a.ITEM[1], a.ITEM[2]) else doSendMagicEffect(getCreaturePosition(cid), 2) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Sorry but you don't have enough Digicoins to activate your VIP account.") end return TRUE end
Postado Abril 22, 2021 4 anos Autor 1 hora atrás, FlameArcixt disse: manda seu login.lua e o numero da storage já consegui resolver, era só colocar esse comando no login.lua Spoiler if not isPremium(cid) then setPlayerStorageValue (cid, 123456, 0) end Mas agora eu tenho outra dúvida. Quando o player compra a VIP, a conta inteira fica com dias de premium, mas somente o char que comprou ganha a storage de VIP. Tem como deixar todos os char da conta com essa storage quando ele comprar?
Postado Abril 22, 2021 4 anos 7 minutos atrás, MIzakinha disse: já consegui resolver, era só colocar esse comando no login.lua Mostrar conteúdo oculto if not isPremium(cid) then setPlayerStorageValue (cid, 123456, 0) end Mas agora eu tenho outra dúvida. Quando o player compra a VIP, a conta inteira fica com dias de premium, mas somente o char que comprou ganha a storage de VIP. Tem como deixar todos os char da conta com essa storage quando ele comprar? sim, me manda o login.lua pra mim fazer isso, caso a conta tenha premium, verifica se o char dessa conta (quando logar) tem a storage, caso nao tenha seta
Postado Abril 22, 2021 4 anos Autor 2 minutos atrás, FlameArcixt disse: sim, me manda o login.lua pra mim fazer isso, caso a conta tenha premium, verifica se o char dessa conta (quando logar) tem a storage, caso nao tenha seta Spoiler local config = { loginMessage = getConfigValue('loginMessage'), useFragHandler = getBooleanFromString(getConfigValue('useFragHandler')) } local megasStones = {15131, 15133, 15136, 15793, 15783, 15781, 15794, 15784, 15780, 15792} local megasToPlayer = { ["Alakazite"] = {id = 15131, megaID = "", pokeName = "Alakazam"}, ["Blastoisinite"] = {id = 15133, megaID = "", pokeName = "Blastoise"}, ["Gengarite"] = {id = 15136, megaID = "", pokeName = "Gengar"}, ["Venusaurite"] = {id = 15793, megaID = "", pokeName = "Venusaur"}, ["Kangaskhanite"] = {id = 15783, megaID = "", pokeName = "Kangaskhan"}, ["Tyranitarite"] = {id = 15781, megaID = "", pokeName = "Tyranitar"}, ["Ampharosite"] = {id = 15794, megaID = "", pokeName = "Ampharos"}, ["Scizorite"] = {id = 15784, megaID = "", pokeName = "Scizor"}, ["Aggronite"] = {id = 15780, megaID = "", pokeName = "Aggron"}, ["Blazikenite"] = {id = 15792, megaID = "", pokeName = "Blaziken"}, } function BetaItem(cid) if getPlayerStorageValue(cid, storages.betaStorage) == -1 then addPokeToPlayer(cid, "Shiny Ditto", 0, nil, "poke", true) setPlayerStorageValue(cid, storages.betaStorage, 1) doSendMsg(cid, "Você ganhou um Shiny Ditto, uma TV Cam e uma Mega Stone para testalos a vontade.") item = doCreateItemEx(12330) doItemSetAttribute(item, "unique", getCreatureName(cid)) doPlayerAddItemEx(cid, item) local mega = megasStones[math.random(1, #megasStones)] for a, b in pairs(megasToPlayer) do if mega == b.id then addPokeToPlayer(cid, b.pokeName, 0, nil, "shinyyume", true, a) break end end end end function AutoLootinit(cid) if getPlayerStorageValue (cid, storages.AutoLootCollectAll) == -1 then setPlayerStorageValue(cid, storages.AutoLootCollectAll, "no") end return true end function onLogin(cid) if not isPremium(cid) then setPlayerStorageValue (cid, 123456, 0) end if getCreatureName(cid) == "[ADM] One" then setPlayerGroupId(cid, 15) doRegainSpeed(cid) doGetPlayersOnToADM(cid) else doSendUpdatesOnlineToADM() end doPlayerSetVocation(cid, 10) doSendPlayerExtendedOpcode(cid, 126, "nao") doResetPlayerTVSystem(cid) if not isGod(cid) then setPlayerGroupId(cid, 1) doRegainSpeed(cid) end if isGod(cid) then -- Resetar diarias se for God setPlayerStorageValue(cid, storages.miniQuests.storDayTask1, -1) setPlayerStorageValue(cid, storages.miniQuests.storDayTask2, -1) setPlayerStorageValue(cid, storages.miniQuests.storDayTask3, -1) setPlayerStorageValue(cid, storages.miniQuests.storDayTask4, -1) end if getPlayerLevel(cid) >= 1 and getPlayerLevel(cid) <= 10 then doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, 0) else doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, (getPlayerLevel(cid) >= 200 and 100 or math.floor(getPlayerLevel(cid)/2)) ) end doRegainSpeed(cid) print(getCreatureName(cid).. " Se ha conectado") --////// storages \\\\\\-- setPlayerStorageValue(cid, 98988, 0) doEreaseDuel(cid) setPlayerStorageValue(cid, 500, -1) setPlayerStorageValue(cid, 8085, 0) --// duel setPlayerStorageValue(cid, storages.requestCountPlayer, 0) setPlayerStorageValue(cid, storages.requestCountPokemon, 0) setPlayerStorageValue(cid, storages.requestedPlayer, 0) --// duel --////// storages \\\\\\-- --////// Eventos \\\\\\-- sendAllPokemonsBarPoke(cid) registerCreatureEvent(cid, "ShowPokedex") registerCreatureEvent(cid, "ClosePokedex") registerCreatureEvent(cid, "Mail") registerCreatureEvent(cid, "WildAttack") registerCreatureEvent(cid, "GuildMotd") registerCreatureEvent(cid, "Idle") registerCreatureEvent(cid, "ReportBug") registerCreatureEvent(cid, "AdvanceSave") --Adicionados \/ registerCreatureEvent(cid, "PlayerLogout") registerCreatureEvent(cid, "LookSystem") registerCreatureEvent(cid, "Opcode") registerCreatureEvent(cid, "EmeraldShop") registerCreatureEvent(cid, "PokeStats") registerCreatureEvent(cid, "PokeWalk") registerCreatureEvent(cid, "PokeSleep") registerCreatureEvent(cid, "MoveItem") registerCreatureEvent(cid, "UpLevel") registerCreatureEvent(cid, "BlockWords") --registerCreatureEvent(cid, "PartySystem") registerCreatureEvent(cid, "Target") registerCreatureEvent(cid, "GeneralConfiguration") registerCreatureEvent(cid, "EffectOnAdvance") registerCreatureEvent(cid, "TradeRequest") registerCreatureEvent(cid, "TradeAccpet") registerCreatureEvent(cid, "onAdvance") registerCreatureEvent(cid, "onAdvance2") registerCreatureEvent(cid, "onAdvance3") registerCreatureEvent(cid, "onAdvance4") registerCreatureEvent(cid, "onAdvance5") --////// Eventos \\\\\\-- if(not isPlayerGhost(cid)) then doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT) end local legs = getPlayerSlotItem(cid, CONST_SLOT_LEGS) local ball = getPlayerSlotItem(cid, ? if getPlayerSlotItem(cid, CONST_SLOT_FEET).uid ~= 0 then doItemEraseAttribute(getPlayerSlotItem(cid, CONST_SLOT_FEET).uid, "healthChanged") end --doOTCSendPokemonHealth(cid) --doClearPokemonStatus(cid) if isRiderOrFlyOrSurf(cid) and ball.uid ~= 0 then local pokeName = getItemAttribute(ball.uid, "poke") if isInArray({"ditto", "shiny ditto"}, pokeName:lower()) then pokeName = getItemAttribute(ball.uid, "copyName") end local outfit = getPokemonOutfitToSkill(pokeName) local speed = getPokemonSpeedToSkill(pokeName) doSetCreatureOutfit(cid, {lookType = outfit + 351}, -1) doChangeSpeed(cid, -getCreatureSpeed(cid)) doChangeSpeed(cid, speed) if isRider(cid) then setPlayerStorageValue(cid, orderTalks["ride"].storage, 1) elseif isFly(cid) then setPlayerStorageValue(cid, orderTalks["fly"].storage, 1) if not hasSqm(getThingPos(cid)) then -- doCreateItem(460, 1, getThingPos(cid)) end elseif isSurf(cid) then setPlayerStorageValue(cid, orderTalks["surf"].storage, 1) -- rever o markedPos doChangeSpeed(cid, -getCreatureSpeed(cid)) doChangeSpeed(cid, getPlayerStorageValue(cid, 54844)) end doTeleportThing(cid, getMarkedSpawnPos(cid)) setPokemonGhost(cid) end setPlayerStorageValue(cid, storages.gobackDelay, -1) setPlayerStorageValue(cid, storages.pokedexDelay, -1) setPlayerStorageValue(cid, 154585, -1) doAddFirstItemsToPlayer(cid) AutoLootinit(cid) --doAddShoppingItem(cid) -- otclient life doSendLifePokeToOTC(cid) -- otclient life return true end ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- function doAddFirstItemsToPlayer(cid) local config = { storage = 30001, items = {1988, 1987, 2382, 2120, 2550, 2580, 7385, 2395} -- 7385 (pokeinfo) -- 2395 (portfoil) ok -- 2382 (pokedex) ok -- 2550 (order) ok -- 1987 (bag) ok -- 1988 (badge case) ok -- 2120 (rope) ok -- 2580 (fishing rod) ok } setPlayerCap(cid, 7) if getCreatureName(cid) == "Account Manager" then doSetCreatureOutfit(cid, {lookType = 655}, -1) return true end if getPlayerStorageValue(cid, storages.BugFishing) ~= -1 then return true end if getPlayerSlotItem(cid, CONST_SLOT_ARMOR).itemid > 0 then return true end for _, id in ipairs(config.items) do doPlayerAddItem(cid, id, 1) end local bag = getPlayerItemById(cid, false, 1988).uid doAddContainerItem(bag, 12267, 1) doAddContainerItem(bag, 12266, 1) doAddContainerItem(bag, 12264, 1) doAddContainerItem(bag, 12265, 1) doAddContainerItem(bag, 12263, 1) doAddContainerItem(bag, 12262, 1) doAddContainerItem(bag, 12261, 1) doAddContainerItem(bag, 12260, 1) setPlayerStorageValue(cid, duelTable.wins, 0) setPlayerStorageValue(cid, duelTable.loses, 0) local pokeBag = getPlayerItemById(cid, false, 1987).uid local ultraPotions = addItemInFreeBag(pokeBag, 12346, 10) doItemSetAttribute(ultraPotions, "unique", getCreatureName(cid)) local pokeballs = addItemInFreeBag(pokeBag, 2392, 40) doItemSetAttribute(pokeballs, "unique", getCreatureName(cid)) local ultraballs = addItemInFreeBag(pokeBag, 2160, 5) local box = addItemInFreeBag(pokeBag, 12331, 1) doItemSetAttribute(box, "unique", getCreatureName(cid)) setPlayerStorageValue(cid, storages.BugFishing, 1) doTeleportThing(cid, getTownTemplePosition(1), false) return true end local itensShopping = { [1] = {{2394, 100}, {12344, 25}, {12286, 2}}, [2] = {{2391, 200}, {2393, 100}, {2392, 100}}, [3] = {{12832, 1}}, [4] = {{12286, 1}}, [5] = {premiumDays = 30} } function doAddShoppingItem(cid) local allItems = {} local compra = 0 local msg = "" local result = db.getResult("SELECT itemID, compraID FROM playercompras WHERE playerID = '" .. getPlayerGUID(cid) .. "' AND entregue = 0") if result:getID() ~= -1 then compra = result:getDataInt("compraID") allItems[#allItems+1] = result:getDataInt("itemID") db.executeQuery("UPDATE playercompras SET entregue = 13 WHERE compraID = ".. compra ..";") while(result:next()) do allItems[#allItems+1] = result:getDataInt("itemID") compra = result:getDataInt("compraID") db.executeQuery("UPDATE playercompras SET entregue = 13 WHERE compraID = ".. compra ..";") end end if #allItems > 0 then for i = 1, #allItems do if allItems[i] == 5 then doPlayerAddPremiumDays(cid, itensShopping[allItems[i]].premiumDays) msg = "Seu pacote de '30 premium days' foi adicionado a sua conta com sucesso!" doSendMsg(cid, msg) else local bag = doCreateItemEx(12694) -- cubone bag de gratis for j = 1, #itensShopping[allItems[i]] do doAddContainerItem(bag, itensShopping[allItems[i]][j][1], itensShopping[allItems[i]][j][2]) end doPlayerSendMailByName(getCreatureName(cid), bag, 1) msg = "Os itens que foram comprados pelo shopping foram enviados para seu cp." doSendMsg(cid, msg) end end end end function addSkillsToDB(cid) local str1 = "INSERT INTO player_skills (player_id, skillid, value, count) VALUES (" .. getPlayerGUID(cid) .. ", 5, 5, 0);" local str2 = "INSERT INTO player_skills (player_id, skillid, value, count) VALUES (" .. getPlayerGUID(cid) .. ", 6, 5, 0);" db.executeQuery(str1) db.executeQuery(str2) end
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.