Ir para conteúdo
  • 0

Como faço uma area aonde so premium pode acessar


Slyton

Pergunta

Bom eu sei que já existes tópicos como esse mais eu já procurei muitos mais não me ajudo, alguns so aparecia a mensagem outros nem se quer aparecia a mensagem e nem pegava, bom vamos ao que importa!!.

 

Eu gostaria que alguém pudesse me ensinar a como fazer uma área aonde so quem tiver premi pode acessar, bom vou explicar...

Bom um player vai quere entra numa área aonde so premi pode acessar, ele aotomaticamente e teleportado para o cp, seo o player tive a premi entra normalmente, bom não sou bom explicador mais acho que isso basta... Ahh esquecendo é para o PDA Slicer 1.9.1, Obrigado

Editado por Slyton
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Coloque um determinado Action ID nos tiles da saída e entrada da cidade, que terá acesso apenas pra vip.

 

vá em data/creaturescripts/scripts, crie um novo arquivo lua com o nome de freeblock.lua, e adicione isso dentro:

function onStepIn (cid, item, pos)

local storage = getPlayerStorageValue(cid,29000) 
local position =  {
coordenadas = {x= 000, y=000, z=0},      --- Coordenadas do local pra onde o player será mandado
player = getCreaturePosition } 


if item.actionid == 000  then  --- Action Id que colocou nos tiles
 if storage == 0 then
   doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Você foi mandado ao Centro Pokémon, por tentar entrar em uma área vip, não possuindo contra premium')
      doTeleportThing(cid, position.coordenadas)
        doSendMagicEffect(position.player, 12)
      end
      return true
        end
           end

feche, e salve.

 

 

 

Agora vá em data/creaturescripts, abra creaturescripts.xml e adicione essa tag:

<event type="OnStep" name="FreeBlock" event="script" value="freeblock.lua"/>

feche, e salve.

 

 

 

 

Agora vá novamente até data/creaturescripts/scripts, abra login.lua, cole isso em baixo de outros registros, de ctrl+f e busque por 'registerCreatureEvent', cole por ultimo:

registerCreatureEvent(cid, "FreeBlock")

feche, salve, pronto.

 

 

Agora, é só testar.

Editado por Legnus
Link para o comentário
Compartilhar em outros sites

  • 0

Bom meu caro não pego caso fiz algo errado ta ai os 2 scrypts

 

 

Login.lua

local config = {
	loginMessage = getConfigValue('loginMessage'),
	useFragHandler = getBooleanFromString(getConfigValue('useFragHandler'))
}

function onLogin(cid)

     if getPlayerStorageValue(cid, 5555) <= 0 then
        setPlayerStorageValue(cid, 5555, 1)
     end

    if getPlayerLevel(cid) >= 1 and getPlayerLevel(cid) <= 10 then   --alterado v1.8
       doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, 0)
    else     
       doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, (getPlayerLevel(cid) >= 200 and 100 or math.floor(getPlayerLevel(cid)/2)) )
	end
	doCreatureSetDropLoot(cid, false)

	local accountManager = getPlayerAccountManager(cid)

	if(accountManager == MANAGER_NONE) then
		local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage
		if(lastLogin > 0) then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
			str = "Your last visit was on " .. os.date("%a %b %d %X %Y", lastLogin) .. "."
		else
			str = str
		end

sendMsgToPlayer(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "")
 sendMsgToPlayer(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "")
 sendMsgToPlayer(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "")
 		doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)

	elseif(accountManager == MANAGER_NAMELOCK) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, it appears that your character has been namelocked, what would you like as your new name?")
	elseif(accountManager == MANAGER_ACCOUNT) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to manage your account and if you want to start over then type 'cancel'.")
	else
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to create an account or type 'recover' to recover an account.")
	end

	if getCreatureName(cid) == "Account Manager" then
		local outfit = {}
		if accountManagerRandomPokemonOutfit then
			outfit = {lookType = getPokemonXMLOutfit(oldpokedex[math.random(151)][1])}
		else
			outfit = accountManagerOutfit
		end
	
		doSetCreatureOutfit(cid, outfit, -1)
	return true
	end

	if(not isPlayerGhost(cid)) then
		doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
	end

	local outfit = {}

	if getPlayerVocation(cid) == 0 then
		doPlayerSetMaxCapacity(cid, 0)
		doPlayerSetVocation(cid, 1)
		setCreatureMaxMana(cid, 6)
		doPlayerAddSoul(cid, -getPlayerSoul(cid))
		setPlayerStorageValue(cid, 19898, 0)
			if getCreatureOutfit(cid).lookType == 128 then
				outfit = {lookType = 510, lookHead = math.random(0, 132), lookBody = math.random(0, 132), lookLegs = math.random(0, 132), lookFeet = math.random(0, 132)}
			elseif getCreatureOutfit(cid).lookType == 136 then
				outfit = {lookType = 511, lookHead = math.random(0, 132), lookBody = math.random(0, 132), lookLegs = math.random(0, 132), lookFeet = math.random(0, 132)}
			end
		doCreatureChangeOutfit(cid, outfit)
	end

    registerCreatureEvent(cid, "dropStone")  
    registerCreatureEvent(cid, "ShowPokedex") 
    registerCreatureEvent(cid, "ClosePokedex") 
	registerCreatureEvent(cid, "WatchTv")
	registerCreatureEvent(cid, "StopWatchingTv")
	registerCreatureEvent(cid, "WalkTv")
	registerCreatureEvent(cid, "RecordTv")
	registerCreatureEvent(cid, "PlayerLogout")
	registerCreatureEvent(cid, "WildAttack")
	registerCreatureEvent(cid, "Idle")
	registerCreatureEvent(cid, "EffectOnAdvance")
	registerCreatureEvent(cid, "GeneralConfiguration")
	registerCreatureEvent(cid, "SaveReportBug")   
	registerCreatureEvent(cid, "LookSystem")
	registerCreatureEvent(cid, "T1")
	registerCreatureEvent(cid, "T2")
	registerCreatureEvent(cid, "task_count")
                registerCreatureEvent(cid, "Testing")

	

	if getPlayerStorageValue(cid, 99284) == 1 then
		setPlayerStorageValue(cid, 99284, -1)
	end

    if getPlayerStorageValue(cid, 6598754) >= 1 or getPlayerStorageValue(cid, 6598755) >= 1 then
       setPlayerStorageValue(cid, 6598754, -1)
       setPlayerStorageValue(cid, 6598755, -1)
       doRemoveCondition(cid, CONDITION_OUTFIT)             --alterado v1.9 \/
       doTeleportThing(cid, posBackPVP, false)
       doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
    end
    
	doChangeSpeed(cid, -(getCreatureSpeed(cid)))
	
	--///////////////////////////////////////////////////////////////////////////--
    local storages = {17000, 63215, 17001, 13008, 5700}
    for s = 1, #storages do
        if not tonumber(getPlayerStorageValue(cid, storages[s])) then
           if s == 3 then
              setPlayerStorageValue(cid, storages[s], 1)
           elseif s == 4 then
              setPlayerStorageValue(cid, storages[s], -1)
           else   
              if isBeingUsed(getPlayerSlotItem(cid, 8).itemid) then
                 setPlayerStorageValue(cid, storages[s], 1)                 
              else
                 setPlayerStorageValue(cid, storages[s], -1) 
              end
           end
           doPlayerSendTextMessage(cid, 27, "Sorry, but a problem occurred on the server, but now it's alright")
        end
    end
    --/////////////////////////////////////////////////////////////////////////--
	if getPlayerStorageValue(cid, 17000) >= 1 then -- fly
        
		local item = getPlayerSlotItem(cid, 8)
		local poke = getItemAttribute(item.uid, "poke")
		doChangeSpeed(cid, getPlayerStorageValue(cid, 54844))
		doRemoveCondition(cid, CONDITION_OUTFIT)
		doSetCreatureOutfit(cid, {lookType = flys[poke][1] + 351}, -1)

	local apos = getFlyingMarkedPos(cid)
    apos.stackpos = 0
		
			if getTileThingByPos(apos).itemid <= 2 then
				doCombatAreaHealth(cid, FIREDAMAGE, getFlyingMarkedPos(cid), 0, 0, 0, CONST_ME_NONE)
				doCreateItem(460, 1, getFlyingMarkedPos(cid))
			end 

	doTeleportThing(cid, apos, false)
	if getItemAttribute(item.uid, "boost") and getItemAttribute(item.uid, "boost") >= 50 and getPlayerStorageValue(cid, 42368) >= 1 then   
       sendAuraEffect(cid, auraSyst[getItemAttribute(item.uid, "aura")])                     --alterado v1.8
    end  
 
    local posicao = getTownTemplePosition(getPlayerTown(cid))
    markFlyingPos(cid, posicao)
    
	elseif getPlayerStorageValue(cid, 63215) >= 1 then -- surf

		local item = getPlayerSlotItem(cid, 8)
		local poke = getItemAttribute(item.uid, "poke")
		doSetCreatureOutfit(cid, {lookType = surfs[poke].lookType + 351}, -1) --alterado v1.6
		doChangeSpeed(cid, getPlayerStorageValue(cid, 54844))
		if getItemAttribute(item.uid, "boost") and getItemAttribute(item.uid, "boost") >= 50 and getPlayerStorageValue(cid, 42368) >= 1 then   
           sendAuraEffect(cid, auraSyst[getItemAttribute(item.uid, "aura")])                     --alterado v1.8
        end 

	elseif getPlayerStorageValue(cid, 17001) >= 1 then -- ride
        
		local item = getPlayerSlotItem(cid, 8)
		local poke = getItemAttribute(item.uid, "poke")
		
		
		if rides[poke] then
		   doChangeSpeed(cid, getPlayerStorageValue(cid, 54844))
		   doRemoveCondition(cid, CONDITION_OUTFIT)
		   doSetCreatureOutfit(cid, {lookType = rides[poke][1] + 351}, -1)
		   if getItemAttribute(item.uid, "boost") and getItemAttribute(item.uid, "boost") >= 50 and getPlayerStorageValue(cid, 42368) >= 1 then   
              sendAuraEffect(cid, auraSyst[getItemAttribute(item.uid, "aura")])                     --alterado v1.8
           end 
		else
		   setPlayerStorageValue(cid, 17001, -1)
		   doRegainSpeed(cid)   
		end
	
	    local posicao2 = getTownTemplePosition(getPlayerTown(cid))
        markFlyingPos(cid, posicao2)
        
	elseif getPlayerStorageValue(cid, 13008) >= 1 then -- dive
       if not isInArray({5405, 5406, 5407, 5408, 5409, 5410}, getTileInfo(getThingPos(cid)).itemid) then
			setPlayerStorageValue(cid, 13008, 0)
			doRegainSpeed(cid)              
			doRemoveCondition(cid, CONDITION_OUTFIT)
		return true
		end   
          
       if getPlayerSex(cid) == 1 then
          doSetCreatureOutfit(cid, {lookType = 1034, lookHead = getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet}, -1)
       else
          doSetCreatureOutfit(cid, {lookType = 1035, lookHead = getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet}, -1)
       end
       doChangeSpeed(cid, 800)

     elseif getPlayerStorageValue(cid, 5700) > 0 then   --bike
        doChangeSpeed(cid, -getCreatureSpeed(cid))
        doChangeSpeed(cid, getPlayerStorageValue(cid, 5700))  --alterado v1.8
        if getPlayerSex(cid) == 1 then
           doSetCreatureOutfit(cid, {lookType = 1394}, -1)
        else
           doSetCreatureOutfit(cid, {lookType = 1393}, -1)
        end
     
     elseif getPlayerStorageValue(cid, 75846) >= 1 then     --alterado v1.9 \/
        doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false)  
        setPlayerStorageValue(cid, 75846, -1)
        sendMsgToPlayer(cid, 20, "You have been moved to your town!")
	 else
		doRegainSpeed(cid)  
	 end
	
	if getPlayerStorageValue(cid, 22545) >= 1 then
	   setPlayerStorageValue(cid, 22545, -1)              
	   doTeleportThing(cid, getClosestFreeTile(cid, posBackGolden), false)
       setPlayerRecordWaves(cid)     
    end
    
	if useKpdoDlls then
		doUpdateMoves(cid)
		doUpdatePokemonsBar(cid)
	end
	return true
end
freeblock:

function onStepIn (cid, item, pos

local storage = getPlayerStorageValue(cid,29000) 
local position =  {
coordenadas = {x= 1053, y=1046, z=6},      --- Coordenadas do local pra onde o player será mandado
player = getCreaturePosition } 


if item.actionid == 1200  then  --- Action Id que colocou nos tiles
 if storage ==  then
   doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Você foi mandado ao Centro Pokémon, por tentar entrar em uma área vip, não possuindo contra premium')
      doTeleportThing(cid, position.coordenadas)
        doSendMagicEffect(position.player, 12)
      end
      return true
        end
           end
Link para o comentário
Compartilhar em outros sites

  • 0

Perdão, Atualizei a tag de registro de evento lá em cima.

 

 

registerCreatureEvent(cid, "FreeBlock")

 

Me passa seu vipsystem, por favor.

Editado por Legnus
Link para o comentário
Compartilhar em outros sites

  • 0

Ele não registrou o evento, registrou?

 

Ou aquele "registerCreatureEvent(cid, "Testing")" foi o registro? :p

 

Além disso ele não colocou um valor aqui:

"if storage == then"

Editado por Incur
Link para o comentário
Compartilhar em outros sites

  • 0

Bom não pego denovo :/, bom o sistema de vip do Pda não sei bem se é so nesse local mais acho que é, e um npc que da os dias de vip esta ai o npc não sei se existe outro local pois não sou bom com isso :/

 

 

 

 

 

<?xml version="1.0" encoding="UTF-8"?>

<npc name="Dalk" script="dalk.lua" walkinterval="0" floorchange="0" access="5" level="1" maglevel="1">
<health now="150" max="150"/>
<look type="610" head="114" body="119" legs="114" feet="114" corpse="2212"/>

<parameters>
	<parameter key="message_greet" value="Welcome |PLAYERNAME|, I can sell to you: {Diamond Account}, {Sex Change} and {Town Change}, what you want?"/>
</parameters>
</npc>
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end

local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
msg = string.lower(msg)
---------
local configs = {
diamondsID = 12237,  --id do diamond no items.xml/otb... (achu q vais ter q criar, ou pegar algum item q ja tenha ae...)
VIP = {days = 30, cost = 10},    --days = qnts dias de VIP o player compra por vez.... cost = custo para virar VIP...
SEX = {cost = 5},   --cost = custo para trocar de sexo...
TOWN = {cost = 5},  --cost = custo para trocar de city...
}  

local places = {
["saffron"] = 1,    --tens q por o id do RME das tuas citys aki...
["cerulean"] = 2,
["lavender"] = 3,
["fuchsia"] = 4,
["celadon"] = 5, 
["viridian"] = 6, 
["vermilion"] = 7, 
["pewter"] = 8,                      
["cinnabar"] = 10,
}

       
        if (msgcontains(msg, 'diamond account') or msgcontains(msg, 'diamond')) then  
           selfSay("You want to buy a diamond account and be VIP for "..configs.VIP.days.." days? It will cost "..configs.VIP.cost.." diamonds!", cid)   
           talkState[talkUser] = 2
           return true    
          
        elseif msgcontains(msg, 'yes') and talkState[talkUser] == 2 then
           if getPlayerItemCount(cid, configs.diamondsID) >= configs.VIP.cost then
              selfSay("Ok then, now you have "..configs.VIP.days.." days of VIP! Enjoy!", cid)
              doPlayerAddPremiumDays(cid, configs.VIP.days)
              doPlayerRemoveItem(cid, configs.diamondsID, configs.VIP.cost)
              talkState[talkUser] = 0
              return true
           else
              selfSay("You need atleast "..configs.VIP.cost.." diamonds to do that!", cid)
              talkState[talkUser] = 0
              return true
           end
           
        elseif (msgcontains(msg, 'sex change') or msgcontains(msg, 'sex')) then
           selfSay("So you want to change of sex? It will cost "..configs.SEX.cost.." diamonds", cid) 
           talkState[talkUser] = 3
           return true
        
        elseif msgcontains(msg, 'yes') and talkState[talkUser] == 3 then
           if getPlayerItemCount(cid, configs.diamondsID) >= configs.SEX.cost then
              local sex = getPlayerSex(cid)
              selfSay("Ok then, now you are of the sex "..(sex == 0 and "female" or "male")..". Enjoy!", cid)
              doPlayerSetSex(cid, (sex == 0 and 1 or 0))
              doPlayerRemoveItem(cid, configs.diamondsID, configs.SEX.cost)
              talkState[talkUser] = 0
              return true
           else
              selfSay("You need atleast "..configs.SEX.cost.." diamonds to do that!", cid)
              talkState[talkUser] = 0
              return true
           end
           
        elseif (msgcontains(msg, 'town change') or msgcontains(msg, 'town')) then 
           selfSay("So you want to change your beginner town? It will cost "..configs.TOWN.cost.." diamonds", cid) 
           talkState[talkUser] = 4
           return true
           
        elseif msgcontains(msg, 'yes') and talkState[talkUser] == 4 then
           selfSay("Ok then, tell me what city do you want?", cid)
           talkState[talkUser] = 5
           return true
           
        elseif places[msg] and talkState[talkUser] == 5 then
           if getPlayerItemCount(cid, configs.diamondsID) >= configs.TOWN.cost then
              selfSay("Done, enjoy your new city!", cid)
              doPlayerSetTown(cid, places[msg]) 
              doPlayerRemoveItem(cid, configs.diamondsID, configs.TOWN.cost)
              talkState[talkUser] = 0
              return true
           else
              selfSay("You need atleast "..configs.TOWN.cost.." diamonds to do that!", cid)
              talkState[talkUser] = 0
              return true
           end 
           
        elseif msgcontains(msg, 'no') then
          selfSay("Ok then, tell me again what you want...", cid)
          talkState[talkUser] = 0
          return true 
        end

return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())   

 

Editado por Slyton
Link para o comentário
Compartilhar em outros sites

  • 0

Tenta assim:

 

 

function onStepIn (cid, item, pos)

local pos = {x= 1000, y=1000, z=7}      --- Coordenadas do local pra onde o player será teleportado.

	if not isPremium(cid) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Voce foi mandado ao Centro Pokemon, por tentar entrar em uma area vip sem ser premium.')
		doTeleportThing(cid, pos)
		doSendMagicEffect(getCreaturePosition(cid), 12)
	else
		doSendMagicEffect(getCreaturePosition(cid), 13)
	end
return true
end 

 

 

Cria esse arquivo (.lua) no MOVEMENTS com o nome freeblock mesmo

A tag do movements.xml é:

	<movevent type="StepIn" actionid="1200" event="script" value="freeblock.lua"/>
Editado por Incur
Link para o comentário
Compartilhar em outros sites

  • 0

Bom obrigado deu Certinho como eu querida Xd Like ++

 

 

Tenta assim:

 

Spoiler

 

function onStepIn (cid, item, pos)

 

local pos = {x= 1053, y=1046, z=6} --- Coordenadas do local pra onde o player será teleportado.

 

 

if item.actionid == 1200 then --- Action id do Tile.

if not isPremium(cid) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Voce foi mandado ao Centro Pokemon, por tentar entrar em uma area vip sem ser premium.')

doTeleportThing(cid, pos)

doSendMagicEffect(getCreaturePosition(cid), 12)

end

end

return true

end

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...