• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Tutorial Best Vip System! Full!

Elexonic

Well-Known Member
Joined
Jun 18, 2008
Messages
1,920
Reaction score
59
Les traigo EL MEJOR SISTEMA VIP para su servidor!
Todo explicado al 100% sin lugar a errores.
Funcional al 99,9% todos los script da igual el server que uses o la version!

Empezamos!


Bien desde hace mucho tiempo ando trabajando en esta superguia, haciendo pruebas,scrtip,agregando contenido, fotos, etc.. para que sea la mejor guia de un sistema vip que hay asta el momento superando con creces a las que hay posteadas ahora mismo.

Esta guia a sido creada desde cero por: Elexonic



Antes de empezar con la Guia!:

A lo largo de toda la guia/tutorial como quieran llamarlo les hablare de como hacer para su servidor tal ves la forma mas segura facil y funcional de hacer un sistema de Vip , para jugadores donadores en su ot.

Para que luego nadie se lie ni nada con mis palabras [ si no le da palo leerlo todo y hacerlo BIEN] les explicare cada cosa paso a paso no creo que tengan problemas si siguen los pasos..

Bien antes de nada , cuando me refiera a vip [player donator de su ot] es lo mismo que si digo solo para players premium [player donator].
Es decir seria algo asi->

*Vip = Premium
*No premium: No vip
*Premium=Vip
*Free=No vip/premium

Cuando les hable de vip me refiero a este sistema a nuestra vip que en este caso usamos premium pero es una vip como cualquier otra =D

Este sistema tiene muchas ventajas sobre los demas como bien pueden ser ...

ºUna total modificación e implantacion del sistema es decir sirven para Todas las versiones de ot sin ningun problema.
ºUna gran facilidad de modificacion y agregacion de script fácilmente
ºNO hay necesidad de crear ninguna nueva función [ Muy importante ]
ºTe avisa de cuantos días de premium te quedan
ºTe remueve los días automáticamente de premium
ºEs una vip por account sirve para todas las cuentas que tengas
ºGran cantidad de usos como pueden ser,puertas,nuevas magias,npcs,promotions,runas,pisos,outfits etc etc..
ºNo tienes que crear 40 archivos para hacer todo lo de arriba..
Y muchos mas ..
--------------------------------------


36px-Fairytale_button_add.png
----Como Agregarlo------
36px-Fairytale_button_add.png


Bien mas bien de como agregalo , lo primero que tenemos que hacer es quitarlo o_O ...
Devemos de quitar los comandos que nos dan la premium en nuestro ot ya que esta sera nuestro nuevo sistema de vip.
Normalmente en el 95% de los ots hay un comando para comprar premium por comando [!buypremium ]
Lo que aremos es quitar ese script de nuestro ot ya que si no todo el mundo sera vip en nuestro server =/ , para quitarlo vamos a nuestro ot donde tenemos el exel y el confic.lua tendremos una carpeta llamada Mods y dentro de esta una serie de script entre ellos el de comprar premium [buypremium_command.xml]
Lo que aremos es borrarlo diectamente y ya no lo tendremos..
En algunos ots mas antiguos ese comando se encuentra en data/talckactions hay tendremos que borrar el arhivo que hay en script y luego borrar la linea que se encuentra en talckaction.xml que es [!buypremium]
normalmente.


Hecho esto ya tenemos nuestro ot preparado para poder usar nuestro sistema vip =)


Bien empecemos a hacer funcionar esto...


dibujocbw.jpg



----------COMO HACER VIP-----------
Bien ahora ya podemos hacer a la gente de nuestro ot vip... para esto podemos usar infinidad de script.
Os pondre los mas usados y buenos :)

Item que te da y te remueve Premium: Bien lo que hace esto es que dandole clic a un item cualquiera [ elegido por nosotros] nos dara los dias vip que nosotros queramos y los dias que elijamos :) .

>Agrega dias de vip<

Yo para este ejemplo e usado el item id 2155, el item verde
Code:
You see a green gem.
It weighs 1.50 oz.
ItemID: [2155].
premi1.png


ºPara hacer que este item nos de nuestra vip lo que devemos de hacer es ir a data/actions/script.. crearemos un archivo y lo llamaremos premium.lua bien ahora guardamos y dentro ponemos lo siguiente..

Code:
function onUse(cid, item, fromPosition, itemEx, toPosition)
	if getPlayerPremiumDays(cid) >= 90 then
		doPlayerSendCancel(cid, 'You can only have 90 days of premium account.')
	return false
	end
	doPlayerAddPremiumDays(cid, 30)
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "We have added 30 vip days to your account!.")
	doSendMagicEffect(getThingPosition(cid), 14)
	doRemoveItem(item.uid)
return true
end

ºLuego iremos a data/action/action.xml y agregaremos lo siguiente:
Code:
<action itemid="2155" event="script" value="premium.lua"/>

Lo que hace este script es:
-Te da 30 dias [ se puede cambiar] de vip
-Te envia mensaje de que as recibido tus dias vip
-Crea un efecto cuando le das al item
-Si tienes mas de 90 dias de vip no te deja usarlo
-Podemos cambiar el item por el que queramos en action.xml
-Obtendras gran cantidad de bonificadores como son: puertas vip,outfit,magias etc..



>Removedor de Vip<

ºYo para remover los premiun day por clic, e usado este item: ItemID: [2156]. Pueden usar el que quieran solo lo cambian el id por el que sea y listo :).
premi2.png


Ahora vamos a hacer el removedor de nuestra vip, para ello vamos a data/action/script y crearemos un archivo y lo llamaremos removervip.lua y dentro ponemos:



Code:
function onUse(cid, item, fromPosition, itemEx, toPosition)
	if getPlayerPremiumDays(cid) < 30 then
		doPlayerSendCancel(cid,'You do not have enough premium days.')
	return false	
	end
	
	doPlayerRemovePremiumDays(cid, 30)
	doRemoveItem(item.uid, 1)
	doSendMagicEffect(getThingPosition(cid), 13)
return true
end


ºDespués vamos a data/action/action.xml y agregamos esta linea:

Code:
<action itemid="2156" event="script" value="removervip.lua"/>


ºLo que hace este script es quitarte dias de vip
ºSi tienes menos de 30 dias , no te quitara mas dias
ºCrea un efecto cuando le das al item
ºPuedes modificar tanto los dias que te quita como los dias minimos para que no te quite
ºPuedes cambiar el item que remueve los dias por el que quieras en action.xml



~Aqui les dejo como funcionarian estos script uno que agrega dias de vip y otro que te los remueve este seria el resultado final.~


5e136ed586a0ec8d13245b9f5bbb3252.gif


/\
|
|
|


¶¶¶$¶¶¶¶¶¶¶¶¶¶¶¶¶øø¶¶¶¶¶¶¶¶¶$$¶¶¶
¶¶¶$¶¶¶¶¶¶¶o´´´´´´´´´´´7¶¶¶¶¶¶$$¶
$$¶¶¶¶$¶¶¶´´´111111111´´´´$¶¶¶¶$¶
¶¶¶¶¶$¶¶ø´´11111111111111´´¶¶¶¶$¶
¶¶¶¶¶¶¶ø´´1111111111111111´´´¶¶$¶
¶¶¶¶¶¶¶´´1111111111111111171´¶¶¶¶
¶¶$¶¶¶´´11111111111111111111´1¶¶$
¶$¶¶$´111´´1´´´11´´´11111111´1¶¶$
$¶¶¶1´77ø¶¶´ø¶¶¶ø¶¶¢11111111´7¶¶¶
¶¶7´´´´´´´´¶´´´´´´´1¶7´11111´¶¶$¶
¶¶´´¶´´´´´¶´´´´´´´´´´¶71111´´¶¶¶¶
¶¶´´´´´´´´ø´´´ø¶´´´´´oo´´´´´¶¶$¶¶
¶¶¶1ooøø71¶´´´´´´´´´´¶1´´¶7¢¶¶$¶¶
¶¶¶´´1117´1¶´´´´´´´´$ø´´¶1¢¶¶¶$¶¶
¶¶¶1´´´´´´´´7¶øoø¢¶¶7´´¶´´¶¶¶¶¶¶¶
¶¶$1¶¶¶¶¶¶$¶ø´´´1´´´1171´$¶¶¶$$¶¶
¶¶´1111111111¶¶¶7´´111´¶¢7¶¶¶$¶¶¶
¶117777777777111ø¶1´11´1´¶´$¶$¶¶¶
¶´7777777777777711¶´´11$´´´¶¶$¶¶¶
$´17777777777777711¶´111o¶¶¶$¶¶¶¶
¶7´´´1111111117777´¶´11´´¶$$¶¶¶¶¶
¶¶¶¶¢øø¶¶¶¶ø¶¢7777´¶´111´¶$¶¶¶¶¶¶
¶¶¶¶¶´´´11111o77711¶´111´¶¶¶¶¶¶¶¶
¶¶¶¶¶¶¶´´17777111ø¶´´11´´¶¶¶¶¶¶¶¶
¶¶¶¶$¶¶¶¶ø7117¢¶¶o´´´´´7¶¶´$¶¶¶¶¶
¶¶¶$¶¶¢´o´ø¶$¢1´´1¶¶¶¶¶o´´´´¶¶$¶¶
¶¶¶¶¶´o´ø´´´´ø¶7¶7´´´´´´´´´´7¶$¶¶
¶(´´´´´Dar Rep NO Cuesta Nada´´´¯)¶¶
¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶


|
\/


dibujodt.jpg


Comandos para tu base de datos
Tambien podremos dar dias premium a los jugadores mediantes comandos en tu base de datos.

Para ello necesitamos ingresar en nuestra base de datos o Aki!

Despues seleccionaremos nuestra base de datos y buscaremos por la parte superior una pestaña que dira Sql y pegamos las lineas que deseamos ejecutar en nuestra base de datos.

Solo con ir a tu base de datos y ejecutar la siguiente linea agregaremos automaticamente a todos los jugadores de nuestra base de datos 5 dias de vip [ premium account]



Code:
UPDATE accounts SET premdays = premdays + 5
Asi todos los jugadores que asta ese momento tengan una cuenta creada reciviran automáticamente 5 dias de premium y podran disfrutar de esta ventaja por esos dias.
Esto es muy util si quieres hacer algun evento o algo para que vean lo que es ser vip y asi podras ganar algun que otro donador a tu ot :)

Si lo que queremos es digamos agradecer a los usuarios que ya son vip y an pagado por su vip [premium] lo que podremos hacer para que solo las personas que son premium en ese momento reciban esos dias es el siguiente comando.

Code:
UPDATE accounts SET premdays = premdays + 5 WHERE premdays > 0

Con esto lo que hacemos es darle 5 dias mas de premium account a todos los jugadores que son ahora mismo premium las otras personas no reciviran nada, solo los players vip actuales.



ºPremium Por Npc

Tambien otra manera de hacernos vip [ premium] es mediante un npc.. os pondre el ejemplo de un npc que te quita dinero y te da premium tambien pueden hacerlo por items y otras cosas..

Van a data/npc/script y añaden premium.lua y dentro pondremos..
Code:
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local Topic = {}

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
	elseif msgcontains(msg, 'premium') or msgcontains(msg, 'premmy') then
		npcHandler:say('Would you like to buy 30 premium days for 60 crystal coins?', cid)
		Topic[cid] = 1
	elseif Topic[cid] == 1 then
		if msgcontains(msg, 'yes') then
			if doPlayerRemoveMoney(cid, 600000) then
				npcHandler:say('Here you are.', cid)
				doPlayerAddPremiumDays(cid, 30)
			else
				npcHandler:say('You don\'t have enough money.', cid)
			end
		else
			npcHandler:say('Then not.')
		end
		Topic[cid] = 0
	end
	return true
end

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

Facil.. lo que tienes que hacer es ir al npc y decirle. Hi,premium y si tienen en este caso 60cc te ara premium por 30 dias si no los tienes pues no te hara.


ºPor comando ingame

Lo que hace este script es basicamente lo que tienen todos o conocen como !buypremium, aqui les dejo un script pueden usar el que quieran,talaction,mod ,mas modificable pero el resueltado sera el mismo.

Script->
Code:
function onSay(cid, words, param)
if doPlayerRemoveMoney(cid,500000) then
    doPlayerAddPremiumDays(cid, 10)
    doSendMagicEffect(getPlayerPosition(cid),12)
    doPlayerSendTextMessage(cid,22,"You Are New Premium Player For 10 Days!")
else
    doPlayerSendCancel(cid,"You don\'t have enough money.")
    doSendMagicEffect(getPlayerPosition(cid),2)
end
return TRUE
end


ºAqui les dejo otro mas configurable,con maximos dias de premium vip, etc..

Code:
function onSay(cid, words, param)
	if getPlayerPremiumDays(cid) <= 50 then
		if doPlayerRemoveMoney(cid, 5000) == TRUE then
			doPlayerAddPremiumDays(cid, 10)
			doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have bought 10 days of premium account.")
		else
			doPlayerSendCancel(cid, "You don't have enough money, 10 days premium account costs 5000 gold coins.")
			doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
		end
	else
		doPlayerSendCancel(cid, "You can not buy more than 50 Day of Premium Account.")
		doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
	end
end

Pueden usar tambien el script en version mod que seria este, mucho mas facil y simple de configurar , pero con algunos de los problemas que presentan los script en mod->
Code:
<?xml version="1.0" encoding="UTF-8"?>
<mod name="Buy premium command" version="1.0" author="The Forgotten Server" contact="otland.net" enabled="yes">
	<config name="buypremium_config"><![CDATA[
		config = {
			days = 5,
			cost = 10000,
			maxDays = 50
		}
	]]></config>
	<talkaction words="!buypremium; !pacc" event="buffer"><![CDATA[
		domodlib('buypremium_config')
		if(getPlayerPremiumDays(cid) > config.maxDays) then
			doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You can not buy more than " .. config.days + config.maxDays .. " days of Premium Account.")
			doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
			return
		end

		if(not doPlayerRemoveMoney(cid, config.cost)) then
			doPlayerSendCancel(cid, "You don't have enough money, " .. config.days .. " days premium account costs " .. config.cost .. " gold coins.")
			doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
			return
		end

		doPlayerAddPremiumDays(cid, config.days)
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have bought " .. config.days .. " days of premium account.")
	]]></talkaction>
</mod>


Ice_Strike.gif
------Magias------
Terra_strike.gif

Empezaremos por las magias , bien aqui hay que pensar un poco en los jugadores.. por que no vas a hacerle por ejemplo como en tibiarl.. que no puedan usar ue,utanis hur,exoris.. y esas magias.. en un ot son imprescindibles... por lo tanto que aremos.. pondremos esas magias para personas que no necesitan premium y para los vip agregaremos nuevas magias o editaremos alguna para que les sea mas facil jugar.
Para ello vamos a nuestro ot data/spells/spells.xml y buscaremos las siguientes magias..

Ejemplo: Exevo gran mas vis
Bien ahora vemos lo siguiente..

Code:
<instant name="Rage of the Skies" words="exevo gran mas vis" lvl="55" mana="650" selftarget="1" prem="1" exhaustion="2000" needlearn="0" event="script" value="attack/rage of the skies.lua">
		<vocation id="1"/>
		<vocation id="5"/>
	</instant>

Nosotros lo que hacemos es cambiar la parte donde dice
y pondremos
que es para que los jugadores free puedan usar esa magia.
Realizaremos esto con todas las magias que que queramos cambiar para que la usen todo el mundo [ es aconsejable que se hagan todas o la gran mayoria].

Bien ya tenemos las magias creadas para los free account, pero y si ahora yo quiero que los vip account en mi ot sepan hacer otras magias ..bien aremos lo siguiente;crearemos la magia y la pondremos en spells como de costumbre y al añadirla al xml tendremos una cosa asi..

Code:
<instant name="Rage of Vip" words="exevo Vip" lvl="55" mana="600" selftarget="1" prem="1" exhaustion="2000" needlearn="0" event="script" value="attack/rage of vip.lua">
		<vocation id="1"/>
		<vocation id="5"/>

Bien como ya sabran lo que hacemos ahora es ponerle donde dice
prem="0" un 1 quedando de la siguiente manera;
Y esta magia ahora solo la podrán usar la gente que es premiun account en tu ot y por lo tanto han comprado su vip.






Outfit_Oriental_Male_Addon_3.gif
-----Outfits-----
Outfit_Mage_Male_Addon_3.gif

Para agregar outfits a los jugadores que son premiun account lo que devemos de hacer es ir a data/xml/outfits.xml habrimos ese archivo y veremos algo como esto..

Veremos primeramente los 4 outfit que son para gente free que son de la siguiente manera
Code:
<outfit id="1">
		<list gender="0" lookType="136" name="Citizen"/>
		<list gender="1" lookType="128" name="Citizen"/>
	</outfit>

	<outfit id="2">
		<list gender="0" lookType="137" name="Hunter"/>
		<list gender="1" lookType="129" name="Hunter"/>
	</outfit>

	<outfit id="3">
		<list gender="0" lookType="138" name="Mage"/>
		<list gender="1" lookType="130" name="Mage"/>
	</outfit>

	<outfit id="4">
		<list gender="0" lookType="139" name="Knight"/>
		<list gender="1" lookType="131" name="Knight"/>
	</outfit>

Ahora lo que nosotros debemos de hacer si queremos que los jugadores que no son vip en nuestro servidor puedan usar outfit es lo siguiente..


Modificaremos por ejemplo el outfit del summoner, este es el script original que trae.
Code:
<outfit id="6" premium="yes">
		<list gender="0" lookType="141" name="Summoner"/>
		<list gender="1" lookType="133" name="Summoner"/>
	</outfit>


Y lo debemos de dejar de esta manera.
Code:
<outfit id="6">
		<list gender="0" lookType="141" name="Summoner"/>
		<list gender="1" lookType="133" name="Summoner"/>
	</outfit>

Lo que emos hecho a sido borrar la linea donde dice
premium="yes
y cerrado esa linea con un simbolo >

Ingame seria una cosa como esta, siendo el player free account podra usar otros outfit que supuestamente son solo para premium account.
freeoutf.png


Ahora si queremos añadir algun outfit que solo pueda ser usado por jugadores que son vip en nuestro servidor lo que hacemos es ponerlo de la siguiente manera..
Code:
<outfit id="13" premium="yes" default="0">
		<list gender="0" lookType="156" name="Assassin"/>
		<list gender="1" lookType="152" name="Assassin"/>
	</outfit>

	<outfit id="14" premium="yes" default="0">
		<list gender="0" lookType="157" name="Beggar"/>
		<list gender="1" lookType="153" name="Beggar"/>
	</outfit>

Emos añadido
premium="yes"
a la primera linea de cada outfit que queremos que sea solo y esclusivo para los jugadores vip en nuestro ot :)

Tambien podremos ir a nuestro confic.lua y buscar la siguiente linea.
Code:
addonsOnlyPremium = true
y con eso solo nuestros jugadores vips podran hacer uso de los addons, si no tienen vip no podrna usar ningun addon de ningun outfit =)

Bulbgraph.png





utilidaaaaa.jpg


Bien aqui les dejo otras utilidades para las cuales pueden ser util este sistema.
 
Last edited:
-Puertas-

Para las puertas hay varios scrtip como para todo unos mas simples que funcionan y otros mas complejos que funcionan y tienen mas opciones.. aqui les pondre algunos de ellos..

1ºCreamos un archivo en actions/scritp llamado door.lua y dentro pondremos->
Code:
function onUse(cid, item, fromPosition, itemEx, toPosition)

    if not isPremium(cid) then
	doPlayerSendCancel(cid,'You need premium to enter')
	return false
    end
    
    doPlayerSendCancel(cid,'You are premium.')
    doTeleportThing(cid, toPosition)
return true
end

Luego vamos a xml y agregamos->
Code:
<action actionid="2224" event="script" value="other/door.lua"/>

Luego por ultimo iremos a nuestro rme y daremos clic derecho sobre la puerto,propiedades y pondremos en action id 2224.

Esta scrtip es simple por lo tanto te funcionara pero tienes sus fallos como que te quedas encima de la puerta para pasar.. pero es corto :p

Bien les dejo otro scrtip que es mas largo y completo, el cual me lo hizo cibermaster hace un tiempo.
En este la puertas se abren y se cierran sea la posicion cual sea donde este.. ya que es el scrtip modificado del original de una puerta normal =)
Code:
local function checkStackpos(item, position)
	position.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE
	local thing = getThingFromPos(position)

	position.stackpos = STACKPOS_TOP_FIELD
	local field = getThingFromPos(position)

	return (item.uid == thing.uid or thing.itemid < 100 or field.itemid == 0)
end

local function doorEnter(cid, item, toPosition)
	doTransformItem(item.uid, item.itemid + 1)
	doTeleportThing(cid, toPosition)
end

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if(fromPosition.x ~= CONTAINER_POSITION and isPlayerPzLocked(cid) and getTileInfo(fromPosition).protection) then
		doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
		return true
	end

	if(getItemLevelDoor(item.itemid) > 0) then
	if not isPremium(cid) then
	    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Only the premium players may pass.')
	    return true
		end

		doorEnter(cid, item, toPosition)
		return true
	end
      
    if(isInArray(horizontalOpenDoors, item.itemid) and checkStackpos(item, fromPosition)) then
		local newPosition = toPosition
		newPosition.y = newPosition.y + 1
		local doorPosition = fromPosition
		doorPosition.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE
		local doorCreature = getThingfromPos(doorPosition)
		if(doorCreature.itemid ~= 0) then
			local pzDoorPosition = getTileInfo(doorPosition).protection
			local pzNewPosition = getTileInfo(newPosition).protection
			if((pzDoorPosition and not pzNewPosition and doorCreature.uid ~= cid) or
				(not pzDoorPosition and pzNewPosition and doorCreature.uid == cid and isPlayerPzLocked(cid))) then
				doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
			else
				doTeleportThing(doorCreature.uid, newPosition)
				if(not isInArray(closingDoors, item.itemid)) then
					doTransformItem(item.uid, item.itemid - 1)
				end
			end

			return true
		end

		doTransformItem(item.uid, item.itemid - 1)
		return true
	end

	if(isInArray(verticalOpenDoors, item.itemid) and checkStackpos(item, fromPosition)) then
		local newPosition = toPosition
		newPosition.x = newPosition.x + 1
		local doorPosition = fromPosition
		doorPosition.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE
		local doorCreature = getThingfromPos(doorPosition)
		if(doorCreature.itemid ~= 0) then
			if(getTileInfo(doorPosition).protection and not getTileInfo(newPosition).protection and doorCreature.uid ~= cid) then
				doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
			else
				doTeleportThing(doorCreature.uid, newPosition)
				if(not isInArray(closingDoors, item.itemid)) then
					doTransformItem(item.uid, item.itemid - 1)
				end
			end

			return true
		end

		doTransformItem(item.uid, item.itemid - 1)
		return true
	end
      
	return false
end

Otro scrtip simple tambien seria algo asi..
Code:
if(getItemLevelDoor(item.itemid) > 0) then
if(item.actionid == 189) then
if(not isPremium(cid)) then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.")
return true
end
El cual si la puerta le pones el action id 189[ lo puedes cambiar por el que quieras] te dejara entrar si eres premium , de lo contrario te saldra el mensaje de cancelacion y no podras entrar >.<

Estos son los scritp de las puertas,cada uno puede usar el que quiera o hacerlo por el mismo si quiere que tengas mas funciones o cosas =D .


-Suelo-
Bien ahora les pondre un scrtip que al pisar el suelo, si eres premium player [ o vip que es lo mismo] te dejara pasar.. si por lo contrario no eres premium te mandara atras y te dira que necesitas premium para poder pasar por ese tile..

Para agregarlo vamos a ir a movement/scrtip crearemso un scrtip llamado vip.lua y dentro pondremos lo siguiente->
Code:
function  onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
if(not isPremium(cid)) then
doPlayerSendCancel(cid,"You need premium to enter")
doTeleportThing(cid,(fromPosition.x ==0) and getPlayerMasterPos(cid) or fromPosition)
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You May Pass");
end
return true
end

Luego iremos a movement.xml y agregaremos lo siguiente->
Code:
<movevent type="StepIn" uniqueid="2225" event="script" value="vip.lua"/>

Luego iremos a nuestro mapa editor y en propiedades sobre el suelo que querramos que solo pasen player vip pondremos el uniqueid 2225, y cuando un jugador intente pasar lo dejara pasar si es premium y lo expulsara si no lo es =D

Aqui le dejo otro que hace mas o menos igual para que tengan varios y puedan usar el que quieran..
Code:
function onStepIn(cid, item, position, fromPosition)
		if not isPremium(cid) then
			doTeleportThing(cid, fromPosition)
			doPlayerSendCancel(cid,"You need premium to enter")
		end
	return true
end

Este es otro que lo que hace es teletransportar al jugador si no es vip a una posicion que nosotros elijamos.
Code:
local pos = {x = 1000, y = 1000, z = 7}
function onStepIn(cid, item, position, fromPosition)
	if(not(isPremium(cid))) then
		doTeleportThing(cid, pos)
		doSendMagicEffect(pos, CONST_ME_TELEPORT)
		doPlayerSendTextMessage(cid,22,"Sorry, but you need to have vip account to pass.")
	end
	return true
end


Como ven son muy simples estos scrtip,pero les digo que los pueden hacer mas complejos con mas requirimientos pero estos son los basicos y funcionan 100% =D

-Guilds-
Tambien podemos crear o dejar esta apartado solo para que nuestros player vip puedan usar esta funcion , la de crear guilds..
Para ello vamos a ir a nuestro xamp/htdox/config/config.php y buscaremos una linea que nos dice..
Code:
$config['site']['guild_need_pacc'] = 1; //
Si le ponemos un 1 , solo los jugadores que sean vip podran crear guild =) , si ponemos un 0 todos los jugadores podran crear las guild a su antojo.

-Casas-
Bien esto es muy simple.. si queremos que las casas solo puedan ser usadas por jugadores que son vip[premium] y puedna dormir en las camas etc.. solo devemos ir a nuestro ot y buscar en nuestro confic.lua esta linea.
Code:
houseNeedPremium = true
Si ponemos true, sera que SI que queremos que se necesite premium para poder comprar las casas y por lo tanto solo nuestros jugadores vips podran acceder a la compra de una de neustras casas :)

Dentro de las casas podemos encontrarnos con las camas.. si queremos que nuestros jugadores puedan usarlas [jugadores vips] devemos buscar esta linea en nuestro confic.lua
Code:
bedsRequirePremium = true
Si ponemos true solo los jugadores premium de nuestro ot podrán usar las camas y los demas usuarios NO.


-Waiting List-
Otra de las cosas geniales que podemos hacer con este sistema es por ejemplo como en tibia rl o en los ots que tiene bastante gente que incluso tenemos que esperar un poco para poder entrar.. por que¿ por que les estan dando paso a los jugadores que tienen vip [ premium account en tibia], como puedo hacer esto yo en mi ot?..
Bien por ejemplo nosotros supongamos que tenemos 300 player en nuestro ot.. da igual lo que tengamos.. podemos hacer que con 10 player aiga que epserar waiting list [ La verda no lo recomiendo a menos de 200 player] Ya que pueden perder a muchos jugadores por esto , ya que no les gusta esperar y menos si hay poca gente =/

Bien para activar esto vamos a nuestro ot y buscamos el confic.lua y dentro buscaremos lo siguiente:
Primero seleccionaremos los maximos player que puedan entrar.. si no no abra lista de espera ...
Code:
maxPlayers = 200
Bien ahora una ves que tengamos esto cuando nuestro ot supere los 200 player NO entraran mas player que no sean premium... es decir pasaran a lista de espera asta que alguien se salga muera o cualquier motivo para que quede un puesto libre, mientras que los jugadores vip en nuestro ot entraran y saldran cuando les plazca :D

Luego buscamos esto:
Code:
remiumPlayerSkipWaitList = true
En esto pondremos true, y asi todos los jugadores que sean premium se saltaran la lista de espera y entraran directos al juego y no tendran que esperar la dichosa cola para jugar :D
waitinglistc.png


Deport Items!
Con esto lograremos que nuestros player vip tengan una mayor capacidad en sus deport, asi como tibia cipsoft, para agregarlo solo iremos a nuestra confic.lua y buscaremos la siguiente linea:


Code:
defaultDepotSizePremium = 2000
	defaultDepotSize = 1000
En la primera cambiaremos la capacidad para los player vips, es decir tendra que ser mayor que la default de abajo.
Y en la de abajo ,pondremos el maximo numero de items que en el deport puede meter un player que no es vip.

Vip list!

Si queremos que nuestros player premium, puedan tener una mayor capacidad de agregar a personas en su vips list, lo que aremos sera lo siguiente, confic.lua buscamos estas lineas:
Code:
vipListDefaultLimit = 20
	vipListDefaultPremiumLimit = 100

En la primera es el maximo numero de vips que puede tener un usuario en sus listas sin este ser premium.
En la seguna linea pondremos un numero superior y esta sera la cantidad de players vip que peude agregar este usuario a su lista de vips :)




Barcos Vips!
Tambien les puede ser MUY util este npc que solo funciona si el jugador o los jugadores son players vips [ premium].
Si el jugador intenta pasar y no es miembro vip NO lo dejara pasar S=, sin embargo si el jugador ya es premium[ vip] podra pasar a ciudades que solo este puede entrar y nadie mas amenos que sea vip!
Para agregar este npc solo vamos a data/npc y creamos un archivo y lo llamamos Boat Vip y dentro ponemos lo siguiente.
Code:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="Boat Vip" script="data/npc/scripts/Boat Vip.lua" walkinterval="2000" floorchange="0">
<health now="100" max="100"/>
<look type="129" head="96" body="113" legs="95" feet="115" addons="0"/>
<voices>
<voice text="Passages to xxxxx xxxx." interval2="100" margin="1" yell="no"/>
</voices>
<parameters>
<parameter key="message_farewell" value="Good bye. Recommend us if you were satisfied with our service." />
<parameter key="message_walkaway" value="Good bye. Recommend us if you were satisfied with our service." />
 <parameter key="module_keywords" value="1" />
 <parameter key="keywords" value="name;carlin;" />
 <parameter key="keyword_reply1" value="My name is Boat Vip." />
 <parameter key="keyword_reply2" value="This is Carlin. Where do you want to go?" />
 <parameter key="message_greet" value="Welcome on board, |PLAYERNAME|. Where may I sail you today?"/>
</parameters>
</npc>



Luego vamos a crear el archivo de lectura de este npc para ello vamos a npc/scrtip y creamos un documento llamado Boat Vip y dentro pondremos lo siguiente:
Code:
local keywordHandler = KeywordHandler:new()
	local npcHandler = NpcHandler:new(keywordHandler)
	NpcSystem.parseParameters(npcHandler)
	
	
	
	-- OTServ event handling functions start
	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
	-- OTServ event handling functions end
	
	
	-- Don't forget npcHandler = npcHandler in the parameters. It is required for all StdModule functions!
	local travelNode = keywordHandler:addKeyword({'thais'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Do you seek a passage to Thais for free?'})
		travelNode:addChildKeyword({'yes'}, StdModule.travel, {npcHandler = npcHandler, premium = true, level = 0, cost = 0, destination = {x=32310, y=32210, z=6} })
		travelNode:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, reset = true, text = 'We would like to serve you some time.'})

	  
	keywordHandler:addKeyword({'sail'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Where do you want to go?'})
	keywordHandler:addKeyword({'job'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'I\'m the captain of this sailing ship.'})
		keywordHandler:addKeyword({'captain'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'I\'m the captain of this sailing ship.'})
      

	npcHandler:addModule(FocusModule:new())



-Otros Script-

Aqui les pondre una seria de scrtip aleatorios que les pueden servir para su sistema vip en sus servidor =D
Aqui solo pondre los scrtip si algun scrtip no saben donde va y lo quieren usar diganmelo y se los dire.

ºEjemplo de dar vip por clic!
Code:
local days = {
	add = 30,
	max = 90
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if(getPlayerPremiumDays(cid) >= days.max) then
		return doPlayerSendCancel(cid, "You cannot have more than " .. days.max .. " premium days.")
	end
	
	return doPlayerAddPremiumDays(cid, days.add) and doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Congratulations! You have received " .. days.add .. " premium days.") and doRemoveItem(item.uid)
end

ºEjemplo de comprar bleesing por talckactions!

Code:
local cost = 500000
local premium = true
function onSay(cid, words, param)
	for i = 1, 5 do
		if getPlayerBlessing(cid, i) then
			doPlayerSendCancel(cid, "You already have one of the blessings.")
			return TRUE
		end
	end

	if not premium or premium and isPremium(cid) == TRUE then
		if not cost or cost and doPlayerRemoveMoney(cid, cost) == TRUE then
			for i = 1, 5 do
				doPlayerAddBlessing(cid, i)
			end
			doCreatureSay(cid, "You are now blessed!", TALKTYPE_ORANGE_1)
			doSendMagicEffect(getCreaturePosition(cid), CONST_ME_HOLYAREA)
		else
			doPlayerSendCancel(cid, "You don't have enough money.")
		end
	else
		doPlayerSendCancel(cid, "You need a premium account.")
	end
	return TRUE
end

ºDar y remover dias de premium [No testeado]

*Dar dias
Code:
function onSay(cid, words, param, channel)
	if(param == '') then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires param.")
		return true
	end

	local t = string.explode(param, ",")
	t[1] = tonumber(t[1])
	if(not t[1]) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires numeric param.")
		return true
	end

	local pid = cid
	if(t[2]) then
		pid = getPlayerByNameWildcard(t[2])
		if(not pid) then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. t[2] .. " not found.")
			return true
		end
	end

	if(t[1] > 350) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can only add max 350 premium days.")
		return true
	end

	sender = getPlayerByNameWildcard(cid)

    doPlayerAddPremiumDays(pid, t[1])
    doPlayerSendTextMessage(cid, "You have added ".. t[1] .." vip days to ".. t[2])
    doPlayerSendTextMessage(pid, sender .." just added you ".. t[1] .." premium days.")    
	return true
end

*Remove Day
Code:
function onSay(cid, words, param, channel)
	if(param == '') then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires param.")
		return true
	end

	local t = string.explode(param, ",")
	t[1] = tonumber(t[1])
	if(not t[1]) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires numeric param.")
		return true
	end

	local pid = cid
	if(t[2]) then
		pid = getPlayerByNameWildcard(t[2])
		if(not pid) then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. t[2] .. " not found.")
			return true
		end
	end

	if(t[1] > 365) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can only add max 365 premium days.")
		return true
	end

	sender = getPlayerByNameWildcard(cid)

    doPlayerRemovePremiumDays(pid, t[1])
    doPlayerSendTextMessage(cid, "You have removed ".. t[1] .." premium days to ".. t[2])
    doPlayerSendTextMessage(pid, sender .." just removed you ".. t[1] .." premium days.")    
	return true
end


º Recargar soft y fire Boots!
Code:
local config = {
fireCost = 10000,
softCost = 10000
}

function onSay(cid, words, param, channel)
	
	if not isPremium(cid) then
		doPlayerSendCancel(cid,"You need premium account")
	return true
	end

	
    if param == "!recharge" then
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param! (soft or fire).")
	return TRUE
    end
    
    if param == "soft" then
	if getPlayerItemCount(cid, 6530) >= 1 then
	    if doPlayerRemoveMoney(cid, config.softCost) then
		doPlayerRemoveItem(cid, 10021, 1)
		doPlayerAddItem(cid, 6132, 1, FALSE)
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You recharged your soft boots for "..config.softCost.." coins.")
	    else
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You need "..config.fireCost.." coins to recharge your soft boots.")
	    end
else
	    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You need a worn soft boots to recharge it.")
	end
    elseif param == "fire" then	
	if getPlayerItemCount(cid, 9934) >= 1 then
	    if doPlayerRemoveMoney(cid, config.fireCost) then
		doPlayerRemoveItem(cid, 10022, 1)
		doPlayerAddItem(cid, 9933, 1, FALSE)
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You recharged your firewalker boots for "..config.fireCost.." coins.")
	    else
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You need "..config.fireCost.." coins to recharge your firewalker boots.")
	    end
	else
	    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You need a worn firewalker boots to recharge it.")
	end
    end	    
return TRUE    
end

º Teleport Scroll Only For Vips
Code:
function onUse(cid, item, frompos, item2, topos)
local pos = {x = 453, y = 126, z = 7}
	if getPlayerPremiumDays(cid) > 0 then
		if getCreatureCondition(cid, CONDITION_INFIGHT) == false then
			doTeleportThing(cid,pos)
		else
			doPlayerSendCancel(cid, "You are in a fight or with battle.")
		end
		return true
	else
		doPlayerSendCancel(cid, 'You are not premium.')
	end
end


º Premium con dias y nombre

Code:
function onSay(cid, words, param) Created By Bolero I think
local param = string.explode(param, ",")
local player = getPlayerByNameWildcard(param[1])
local days = tonumber(param[2])
	if isPlayer(player) and days then
		doPlayerAddPremiumDays(player, param[2])
		doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "You have just received ".. days .." premium days. Please re-login for the premium account to take effect.")
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Player ".. param[1] .." received ".. days .." premium days.")
	else
		doPlayerSendCancel(cid, "Either the first param isn't an online player or the second param isn't a number.")
	end
return true
end


º Cuando la vip acaba te manda al temple free!
Code:
function onLogin(cid)
local pos = {x=1000,y=1000,z=7}
	if not isPremium(cid) then
	doTeleportThing(cid,pos)
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You vip are finished!")
	end
	return true
end

Otro igual que te manda al templo que seas residente.
Code:
function onLogin(cid)
	if not isPremium(cid) then
		doTeleportThing(cid, getTownTemplePosition(1))
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your vip has ended.")
	end
	return true
end

º Otro scrtip mas completo y funcional!
Code:
function onLogin(cid)
	if isPremium(cid) == TRUE then
		if getPlayerStorageValue(cid, 30002) == -1 then
		   setPlayerStorageValue(cid, 30002, 1)
		end
	elseif isPremium(cid) == FALSE then
		if getPlayerStorageValue(cid, 30002) == 1 then
		   setPlayerStorageValue(cid, 30002, -1)
		   doPlayerSetTown(cid, 1)
		   doTeleportThing(cid, {x = 381, y = 602, z = 7, stackpos = 1}, TRUE)
		end
	end
	return TRUE
end



º Mas experiencia a los premium!

Code:
function onLogin(cid)
    if isPremium(cid) == TRUE and getPlayerStorageValue(cid, 12345) == 0 then
    setPlayerExtraExpRate(cid, getPlayerExtraExpRate(cid)+15)
    setPlayerStorageValue(cid, 12345, 1)
    
    elseif isPremium(cid) == FALSE and getPlayerStorageValue(cid, 12345) == 1 then
    setPlayerExtraExpRate(cid, getPlayerExtraExpRate(cid)-15)
    setPlayerStorageValue(cid, 12345, 0)
    end
    
    return TRUE
end

Y el xml->
Code:
<event type="login" name="exprate" script="Nombredelarchivo.lua"/>

º Broadscrat Para Vips !
Code:
local config = {
premium = true, --  (true or false)
cobrar = true, ------ (true or false).
price = 100000 ------Precio .
}
function onSay(cid, words, param, channel)
if(param == '') then
return doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Necesitas decir algo.")
elseif config.premium == true and not isPremium(cid) then
return doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Solo jugadores vip pueden hablar por broadscrat.")
elseif config.cobrar == true and not doPlayerRemoveMoney(cid,tonumber(config.price)) then
return doPlayerSendCancel(cid,"No tienes dinero suficiente.")
end
return doPlayerBroadcastMessage(cid, param)
end

º Vip en el nombre [Vip] !
Code:
function onLogin(cid)
if isPremium(cid) == TRUE then
 db.executeQuery("UPDATE `players` SET `name` = '[VIP]" .. getCreatureName(cid) .. "' WHERE `id` = " .. getPlayerGUID(cid))
elseif isPremium(cid) == FALSE then
 db.executeQuery("UPDATE `players` SET `name` = " .. getCreatureName(cid) .. " WHERE `id` = " .. getPlayerGUID(cid))
 end

 return true
end





º Npc Que vende vip por dinero con limite de dias!

Code:
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
    
    if(msgcontains(msg, 'premium')) then
	if getPlayerPremiumDays(cid) <= 360 then
	    if getPlayerMoney(cid) >= 20000 then
		selfSay('You want to buy 30 days of premium?', cid)
		talkState[talkUser] = 1
	    else
		selfSay('You don\'t have enough money, 30 days premium account costs 20000 gold coin', cid)
	    end
	else
	    selfSay('You can not buy more than 1 year of premium!', cid)
	end
    elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
	if doPlayerRemoveMoney(cid, 20000) == TRUE then
	    doPlayerAddPremiumDays(cid, 30)
	    selfSay('Added 30 days of premium, you now have '..getPlayerPremiumDays(cid)..'.', cid)
	end
    end
return TRUE
end

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

Y por ultimo->

end_key.jpg



<<<<Notas>>>
Si encuentran algun bugs posteenlo y se reparara lo mas rpaido posible.
Si tienen alguna idea que pueda ser util posteela y la agregare si es buena idea!

Bien con esto por ahora esta mas que suficiente [yo creo o_O] para ser la MEJOR guia de un sistema vip funcional al 100% con todos los distintos distribuciones que hay por el momento.

Nada mas que decirles , espero que les sirva de algo esta guia, algunos de los scrtip, aprendan algo seguramente!

Ya era hora de ver una guía asi de completa y funcional, espero que os guste de veras ya que le inverti bastante tiempo en hacerla y acomodarla!

Gracias por el tiempo and Bye bye!
Like This!


Saludos! :)

Created: By Elexonic
 
EDIT: Despues que yo hize la guia de mi sistema vip, me di cuenta que el mejor sistema vip es la premium account..
 
Last edited:
Estoy de acuerdo con Kekox, no hay nada mejor que usar de manera correcta la funcion de dias premium.

@ Elexonic:

Muy buena guia, muchas gracias! :D

:: el tema fue movido a la seccion en espa;ol.
 
wow no mames me encanto tu guia!! porque no la pones en ingles en la seccion de tutoriales? todos te balacearan de reps+
 
wow no mames me encanto tu guia!! porque no la pones en ingles en la seccion de tutoriales? todos te balacearan de reps+

Ya estaba ahi pero creo que se le olvido hacerla toda en ingles. :$ (o simplemente no quizo)
 
TL;DR
pero si archez dice que esta muy buena la guia, ps ta bien :D!
 
yeah esta chidita la guia, igual estaba haciendo asi mi server jeje, pero tengo un problema ojala pueda ayudarme algien por aki, bueno no es un problema pero quiero que mi sistema vip o premium se active por medio de puntos en la pagina, sabes como hacerle? jeje osea k copren puntos y con ellos el item y cuando lo compren se les envie imediatamente a su depos xD ayudaa xD grax =D saludos rep++
 
archez: lo puse hay para que mas gente lo viera ingleses y otros ;( , en español no lo vera tanta gente >.<
y no lo traduci por que como ven es UNA PANZA! de escribir pero igual como dije los scrtip si les pueden servir por eso la puse hay..

sasorildd: Eso leete una gua de como poner tu shop.. es basica mente lo que hace.. atrasves de los puntos compras y ya o compras el item o la premium directamente desde la web.

Si panda lo dice..
 
WTF Aqui no ve la guia ni cristo!
Ponla donde estaba plax :( con lo de [spain y listo]
 
Code:
function onLogin(cid)
local pos = {x=1000,y=1000,z=7}
	if not isPremium(cid) then
	doTeleportThing(cid,pos)
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You vip are finished!")
	end
	return true
end
Esto no sirve.
Que pasa si eres free account y te logeas en una zona free? cada vez que te conectes teteleportan directo al temple, logees donde logees..
 
Yap :p pero puede sacarte de un apuro >.< puse varios ejemplos.
el mejor y mas completo para eso es este->

function onLogin(cid)
if isPremium(cid) == TRUE then
if getPlayerStorageValue(cid, 30002) == -1 then
setPlayerStorageValue(cid, 30002, 1)
end
elseif isPremium(cid) == FALSE then
if getPlayerStorageValue(cid, 30002) == 1 then
setPlayerStorageValue(cid, 30002, -1)
doPlayerSetTown(cid, 1)
doTeleportThing(cid, {x = 381, y = 602, z = 7, stackpos = 1}, TRUE)
end
end
return TRUE
end
ya que no sucederia eso que dices =)
 
Back
Top