Ir para conteúdo
Entre para seguir isso  
Guiaki

VIP System + teleport global map

Recommended Posts

Guiaki    0
Guiaki

  • Autor: JDB [/tp]; Eu [teleportes]; Kekox [VIP SYSTEM]

  • Servidor: testado: TFS 0.3.6; TFS 0.4 dev 4069 + data 4029
  • SCRIPTS: TalkAction, Action, CreatureScript, Moviment, GlobalEvent.

Primeiro de tudo, vá a database do servidor, provavelmente localhost/phpmyadmin, e execute o seguinte comando na aba MySQL:

ALTER TABLE `accounts` ADD
`vipdays` int(11) NOT NULL DEFAULT 0;

Agora adicione isso no topo de data/lib/function.lua:

[color=#808080][i]
--- Vip functions by Kekox[/i][/color]
[color=#b1b100]function[/color] getPlayerVipDays[color=#66cc66]([/color]cid[color=#66cc66])[/color]
   [color=#b1b100]local[/color] Info [color=#66cc66]=[/color] db.getResult[color=#66cc66]([/color][color=#ff0000]"SELECT `vipdays` FROM `accounts` WHERE `id` = "[/color] .. getPlayerAccountId[color=#66cc66]([/color]cid[color=#66cc66])[/color] .. [color=#ff0000]" LIMIT 1"[/color][color=#66cc66])[/color]
       [color=#b1b100]if[/color] Info:getID[color=#66cc66]([/color][color=#66cc66])[/color] ~[color=#66cc66]=[/color] LUA_ERROR [color=#b1b100]then[/color]
       [color=#b1b100]local[/color] days[color=#66cc66]=[/color] Info:getDataInt[color=#66cc66]([/color][color=#ff0000]"vipdays"[/color][color=#66cc66])[/color]
       Info:free[color=#66cc66]([/color][color=#66cc66])[/color]
       [color=#b1b100]return[/color] days
   [color=#b1b100]end[/color]
    [color=#b1b100]return[/color] LUA_ERROR
[color=#b1b100]end[/color]

[color=#b1b100]function[/color] doAddVipDays[color=#66cc66]([/color]cid, days[color=#66cc66])[/color]
   db.executeQuery[color=#66cc66]([/color][color=#ff0000]"UPDATE `accounts` SET `vipdays` = `vipdays` + "[/color] .. days .. [color=#ff0000]" WHERE `id` = "[/color] .. getPlayerAccountId[color=#66cc66]([/color]cid[color=#66cc66])[/color] .. [color=#ff0000]";"[/color][color=#66cc66])[/color]
[color=#b1b100]end[/color]

[color=#b1b100]function[/color] doRemoveVipDays[color=#66cc66]([/color]cid, days[color=#66cc66])[/color]
   db.executeQuery[color=#66cc66]([/color][color=#ff0000]"UPDATE `accounts` SET `vipdays` = `vipdays` - "[/color] .. days .. [color=#ff0000]" WHERE `id` = "[/color] .. getPlayerAccountId[color=#66cc66]([/color]cid[color=#66cc66])[/color] .. [color=#ff0000]";"[/color][color=#66cc66])[/color]
[color=#b1b100]end[/color]

Agora adicione essa linha aonde diz o mesmo começo da script no data/creaturescript/login.lua:

registerCreatureEvent[color=#66cc66]([/color]cid, [color=#ff0000]"VipCheck"[/color][color=#66cc66])[/color]

Agora vá ao data/creaturescript/scripts e crie um novo arquivo chamado vipcheck.lua:

[color=#808080][i]--- Script by Kekox[/i][/color]
[color=#b1b100]function[/color] onLogin[color=#66cc66]([/color]cid[color=#66cc66])[/color]
        [color=#b1b100]if[/color] getPlayerVipDays[color=#66cc66]([/color]cid[color=#66cc66])[/color] [color=#66cc66]>=[/color] [color=#cc66cc]1[/color] [color=#b1b100]then[/color]
           doPlayerSendTextMessage[color=#66cc66]([/color]cid, [color=#cc66cc]19[/color], [color=#ff0000]"You have "[/color].. getPlayerVipDays[color=#66cc66]([/color]cid[color=#66cc66])[/color] ..[color=#ff0000]" vip days left."[/color][color=#66cc66])[/color]
        [color=#b1b100]end[/color]
        [color=#b1b100]return[/color] [color=#b1b100]true[/color]
[color=#b1b100]end[/color]

data/creaturescript/creaturescript.xml

<event type="login" name="VipCheck" event="script" value="vipcheck.lua"/>

Vá ao data/globalevents/scripts/, crie um novo arquivo e renomeio para daysremover.lua :

[color=#808080][i]--- Script by Kekox[/i][/color]
[color=#b1b100]function[/color] onTimer[color=#66cc66]([/color][color=#66cc66])[/color]
                db.executeQuery[color=#66cc66]([/color][color=#ff0000]"UPDATE accounts SET vipdays = vipdays - 1 WHERE vipdays > 0;"[/color][color=#66cc66])[/color]
       [color=#b1b100]return[/color] [color=#b1b100]true[/color]
[color=#b1b100]end[/color]

data/globalevents/globanevents.xml :

   <globalevent name="VipDaysRemover" time="00:01" event="script" value="daysremover.lua"/>

Agora você pode alterar o momento do dia em que a vip vai ser removida no (time="00:01").

 

Se você tiver mais de um dia de vip você vai receber a mensagem:

 

2yyuyq0.png

Creditos do VIP System: Kekox num site de ots estrangeiro; lá tem mais scripts para vip.

 

Agora aos teleports.

Esses teleportes foram adicionados para o MAPA GLOBAL, qualquer um superior a versão 8.54 deve pegar.

É um comando que exige que o player seja premium, ou vip.

 

vá no data\talkactions\scripts, e adicione um arquivo.lua chamado de teleport.lua

local destinations = {
   ["Yalahar"] = {p = {x=585, y=676, z=7}, l = 10, c = 100, v = 2},
   ["Carlin"] = {p = {x=32360, y=31782, z=7}, l = 10, c = 100, v = 3},
   ["Ab'dendriel"] = {p = {x=32732, y=31634, z=7}, l = 10, c = 100, v = 4},
   ["Kazordoon"] = {p = {x=32649, y=31925, z=11}, l = 10, c = 100, v = 5},
   ["Thais"] = {p = {x=32369, y=32241, z=7}, l = 10, c = 100, v = 6},
   ["Venore"] = {p = {x=32957, y=32076, z=7}, l = 10, c = 100, v = 7},
   ["Darashia"] = {p = {x=33214, y=32453, z=7}, l = 10, c = 100, v = 8},
   ["Ankrahmun"] = {p = {x=33194, y=32853, z=8}, l = 10, c = 100, v = 9},
   ["Edron"] = {p = {x=33217, y=31814, z=8}, l = 10, c = 100, v = 10},
   ["Port Hope"] = {p = {x=32595, y=32745, z=7}, l = 10, c = 100, v = 11},
   ["Ethno"] = {p = {x=32028, y=31919, z=7}, l = 10, c = 100, v = 12},
   ["Libert Bay"] = {p = {x=32317, y=32825, z=7}, l = 10, c = 100, v = 13},
   ["Svarground"] = {p = {x=32302, y=31186, z=7}, l = 10, c = 100, v = 14},
   ["Cormaya"] = {p = {x=33297, y=31984, z=7}, l = 10, c = 100, v = 15},
   ["Gengia"] = {p = {x=32035, y=32169, z=5}, l = 10, c = 100, v = 16},
   ["Galaxy"] = {p = {x=31583, y=31821, z=5}, l = 10, c = 100, v = 17},
   ["MTSCYC"] = {p = {x=32449, y=32103, z=7}, l = 10, c = 100, v = 18},
   ["OC"] = {p = {x=32655, y=32343, z=7}, l = 10, c = 100, v = 19},
   ["DC"] = {p = {x=32657, y=32343, z=7}, l = 10, c = 100, v = 20},
   ["POH"] = {p = {x=32816, y=32264, z=6}, l = 10, c = 100, v = 21},
   ["VRNO"] = {p = {x=32699, y=32019, z=7}, l = 10, c = 100, v = 22},
   ["VTNO"] = {p = {x=32663, y=31965, z=7}, l = 10, c = 100, v = 23},
   ["DB"] = {p = {x=32626, y=31974, z=7}, l = 10, c = 100, v = 24},
   ["CAC"] = {p = {x=32429, y=31600, z=7}, l = 10, c = 100, v = 25},
   ["GL"] = {p = {x=32190, y=31782, z=7}, l = 10, c = 100, v = 26},
   ["MC"] = {p = {x=32604, y=31838, z=7}, l = 10, c = 100, v = 27},
   ["DLV"] = {p = {x=32797, y=32152, z=7}, l = 10, c = 100, v = 28},
   ["VSTC"] = {p = {x=32938, y=32219, z=7}, l = 10, c = 100, v = 29},
   ["ST"] = {p = {x=33098, y=32131, z=7}, l = 10, c = 100, v = 30},
   ["ACV"] = {p = {x=32837, y=31927, z=7}, l = 10, c = 100, v = 31},
   ["UR"] = {p = {x=32872, y=31772, z=7}, l = 10, c = 100, v = 32},
   ["OCV"] = {p = {x=32827, y=31737, z=7}, l = 10, c = 100, v = 33},
   ["WDK"] = {p = {x=32673, y=31883, z=7}, l = 10, c = 100, v = 34},
   ["ADM"] = {p = {x=32579, y=31682, z=7}, l = 10, c = 100, v = 35},
   ["AKSL1"] = {p = {x=33072, y=32761, z=7}, l = 10, c = 100, v = 36},
   ["AKSL2"] = {p = {x=33257, y=32743, z=7}, l = 10, c = 100, v = 37},
   ["DSR"] = {p = {x=33226, y=32302, z=7}, l = 10, c = 100, v = 38},
   ["DSM"] = {p = {x=33301, y=32291, z=7}, l = 10, c = 100, v = 39},
   ["AKD"] = {p = {x=33117, y=32608, z=7}, l = 10, c = 100, v = 40},
   ["TCC"] = {p = {x=32417, y=32378, z=7}, l = 10, c = 100, v = 41},
   ["FBD"] = {p = {x=32189, y=32426, z=9}, l = 10, c = 100, v = 42},
   ["MWT"] = {p = {x=32417, y=32139, z=15}, l = 10, c = 100, v = 43},
   ["MTSCV"] = {p = {x=32452, y=32067, z=8}, l = 10, c = 100, v = 44},
   ["BKV"] = {p = {x=32823, y=31968, z=9}, l = 10, c = 100, v = 45},

}

function onSay(cid, words, param, channel)
   local tp = destinations[param]
   if(param == "") then
       doPlayerSendCancel(cid, "Command param required.")
       return true
   end
   if(getPlayerMoney(cid) < tp.c) then
       doPlayerSendCancel(cid, "You do not have enough money.")
   elseif(getPlayerLevel(cid) < tp.l) then
       doPlayerSendCancel(cid, "Your level is not high enough.")
   elseif(isPlayerPzLocked(cid) == true) then
       doPlayerSendCancel(cid, "You are currently in a fight.")
   elseif(getPlayerPremiumDays(cid) < 1) then
       doPlayerSendCancel(cid, "You must have premium.")
   else
       doPlayerRemoveMoney(cid, tp.c)
       doTeleportThing(cid, tp.p)
       doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
       doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have successfully teleported to ".. param ..".")
   end
   return true
end

Cada um custa 100gold, e é para nivel 10, você pode alterar isso e adicionar outros pontos se quiser.

 

agora adicione o seguinte no talkactions.xml:

   <talkaction log="no" words="/tp" access="0" event="script" value="teleport.lua"/>

Codigo e local respectivo para o comando /tp:

[spoiler=Teleport Places]

CIDADES

 

Yalahar

Carlin

Ab'dendriel

Kazordoon

Thais

Venore

Darashia

Ankrahmun

Edron

Port Hope

Ethno

Libert Bay

Svarground

Cormaya

Gengia

Galaxy

 

TP CODE SEM [] | AREAS DE HUNT

 

[MTSCYC] Mount Sternum CYC (thais cyc montanha)

[MTSCV] Mount Sternum Cave ( CUIDADO )

[OC] Outlaw Camp

[DC] Dark Cathedral

[POH] POH

[VRNO] Noroeste de Venore Rotworm

[VTNO] Noroeste de Venore Trolls

[DB] Dwarven Bridge

[CAC] Carlin Amazon camp

[GL] Ghostland

[MC] Montanha Carlin

[DLV] D Lair Venore

[VSTC] Venore Swamp Troll Camp

[sT] Shadowthorn (elf camp venore)

[ACV] Amazon Camp Venore

[uR] Ulderek's Rock (Orc Fortress)

[OCV] Orc Camp venore ( CUIDADO )

[WDK] Wyvern e Dragon Kazz

[ADM] Ab'dendriel monsters

[AKSL1] Ankrahmun Scarab & Larva 1

[AKSL2] Ankrahmun Scarab & Larva 2

[DSR] Darashia Rotworm

[DSM] Darashia Minotaur

[AKD] Ankrahmun Dragon

[TCC] Thais Cyc Camp ( CUIDADO )

[FBD] Fibula Dungeon

[MWT] Mintwallin (thais mino/gs/dl..)

[bKV] Black Knight's Villa

 

 

Credito da action de teleport: JDB, credito aos locais: Guiaki.

 

Espero que tenha ajudado \o/

Compartilhar este post


Link para o post
Lwkass    1
Lwkass

Muito bom, só que da próxima vez separe os scripts em tópicos (o vip system do teleporte),

 

Aprovado

Compartilhar este post


Link para o post
Junper    0
Junper

Nem curti nao ! como o teleport checka se o cara é vip qual parte do codigo ?

Compartilhar este post


Link para o post
Kaotar    5
Kaotar

Boa pergunta, ele não checa, e também esse sistema de checagem para remover os dias vips, é meio fail, se o server ficar offline por alguns minutos meia noite, todos os players vão continuar com suas vips, um sistema mais certo seria no login dos players, ou até mesmo nas sources no loading da account. Mas como não fui eu que aprovei vou deixa mais um tempo para ver a resposta dos usuários, caso mais alguns reclamarem, irei fechar o tópico, e talvez com tempo farei um sistema certo para esse tipo de script.

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×