Ir para conteúdo
  • 0

Como faço uma area aonde so premium pode acessar


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
https://xtibia.com/forum/topic/228417-como-fa%C3%A7o-uma-area-aonde-so-premium-pode-acessar/
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
  • 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
  • 0

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

 

 

  Mostrar conteúdo oculto

 

Me passa seu vipsystem, por favor.

Editado por Legnus
  • 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
  • 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 :/

 

 

 

 

  Mostrar conteúdo oculto

 

Editado por Slyton
  • 0

Tenta assim:

 

  Mostrar conteúdo oculto

 

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
  • 0

Bom obrigado deu Certinho como eu querida Xd Like ++

 

 

  Citar

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

×
×
  • Criar Novo...