Histórico de Curtidas
-
Fernandooww deu reputação a Dyego em Monster Wall ?Eu já fiz isso, não precisa editar a sprite do monstro, looktypeex transforma o monstro em qualquer item do jogo, criar um monstro novo com uma outfit de parede também dá, porém é mais trabalhoso, ao invés de usar esse noxspr usa o object builder
-
Fernandooww deu reputação a Vodkart em [8.6] Task System 4.0! (Task system + Daily Task System)Removido:
*Boss Room
*Rank Task
*Prêmios para os 10 primeiros a terminar todas as tasks
Adicionado:
*Daily Task System (Sistema exclusivo de Task diario, podendo pegar 1x a cada 24 hrs, irei explicar mais depois.)
*Task agora é por progresso, você não pode sair e voltar, terá que terminar a task 1 para avançar para a task 2, assim sucessivamente.
*Task Points
*Level para realizar a task
*Nova talkaction que mostra uma janela de informações sobre o level da task, premios que irá receber, progresso, etc...
*Items para entrega(Se o jogador deverá levar algum item junto com a quantidade de monstro morta) para finalizar a task
*Sistema de look Task (Varia de acordo com a sua quantidade de Task Points, podendo ficar por exemplo como "Huntsman", "Ranger", etc...(alterável)
*Mods e npc mais "clean", várias linhas removidas e o sistema está mais rápido
*Vou Adicionar "scripts extras" Como:
--> Tile que só passa quem tiver permissão depois de finalizar determinada quest
--> Npc de Boss Room para entrar e enfrentar o monstro quem fez determinada quest
[+] Resumo do Task system + Daily Task System [+]
Task System: É o sistema de task "original", onde consiste em matar determinada quantidade de monstros(E entregar certo itens <- é configurável), para receber recompensas como Exp, Money e Items.
Algumas mudanças do simple task 3.0 para o 4.0 foram:
[+] O sistema agora é por progresso, isso quer dizer que você terá que ir terminando a quest para avançar para a seguinte.
[+] O sistema Também recebeu uma alteração, fazendo com que as Tasks precisem que o jogador tenha um level determinado
[+] A tabela para edição está mais fácil, fazendo com que você adicione ou remova monstros com mais tranquilidade, inclusive alterações das Rewards da Task.
Daily Task System: É um sistema que desenvolvi para que os jogadores sempre estejam se comunicando com o npc de Task, no caso da Task Diaria, vária de acordo com o level do jogador, por exemplo:
Jogadores entre level 6 ao 49 poderá cair em uma dessas 3 Task Diarias: Orcs, Tarantulas ou Wyverns
Jogadores entre level 50 ao 79 poderá cair em uma dessas 3 Task Diarias: Dragons, Wailing Widows ou Ancient Scarabs
E por ai vai, claro que você poderá aumentar as Task Diarias dependendo do level, eu fiz 3 para cada level que é pra postar, mas tudo isso você pode aumentar! Dependendo do seu servidor.
E sim, você pode fazer a TASK "ORIGINAL" e a TASK "DIARIA" ao mesmo tempo! Ambas são distintas e possuem Rewards diferenciadas!
No caso da Task diaria, levando em conta que você começou a fazer ela no dia 08/01 ás 20:00 Hrs, você tem até o dia 09/01 ás 20:00Hrs para termina-la e receber a recompensa, caso termine antes, a Task diaria só irá ficar disponível para repetição a partir desta mesma data 09/01 20:00 Hrs;
[+] Caso você não termine a tempo, não tem problema, basta esperar este horário e começar uma nova Task.
[+] Caso você começou a Daily Task e terminou antes desta data. mas por algum motivo esqueceu de entregar e a mesma passou do prazo, não tem importância, caso você tenha matado todos os monstros até 09/01 20:00 Hrs, você poderá entregar está Task em qualquer horário para receber suas Rewards e começar uma task a partir do momento em que você entregou! (INJUSTIÇA AQUI NÃO CARALHO).
[+] Comandos Adicionais [+]
/task -- Mostra as informações da sua Task Atual, como Nome da Task, Level, Rewards, Monstros que você poderá matar, Se tem que entregar algum Item junto, etc...
/task daily -- É basicamente mostra a mesma informação da Task Principal, porém mostra também qual o prazo limite para entrega da task.
/task counter -- É um comando que ATIVA ou DESATIVA o contador de monstros mortos na task no seu Channel.
[+] Imagens [+]
Cline neste link para ver algumas imagens da Task : http://imgur.com/a/eLIY3
------------------------------------------------ // --------------------------------------------------------------
[+] Instalação do Sistema [+]
Requisitos: Nível Médio de conhecimento em scripting LUA
Pasta Mods
Simple Task.xml
https://pastebin.com/raw/P5hqMC3j
NPC:
Ludger.xml
https://pastebin.com/raw/R56yLWHw
simple_task.lua
https://pastebin.com/raw/1mRzJ6aJ
---------------------------------------------- // ----------------------------------
[+] configuração [+ ]
Task System Principal
task_sys = { [1] = {name = "Trolls", start = 176201, monsters_list = {"Troll","Troll champion"}, level = 8, count = 40, points = 0, items = {}, reward = {}, exp = 2000, money = 2000} }
[1] --> O número entre os colchetes [] significa a ordem da Task, como a Task é por progresso sempre começará no 1 e irá pro [2], assim sucessivamente.
name --> É o nome da task que o jogador irá fazer.
start --> é a storage que indicará se o jogador começou a Task
monster_list ={} --> É o nome dos monstros em que o jogador deverá caçar para completar a Task
level --> É o level necessário para dar inicio á Task
count --> É o número de monstros que o jogador tem que matar para completar a Task
points --> Aqui determinada quantos Task points o jogador irá receber ao completar a Task
items = {} --> Aqui determinada se além de matar os monstros, o jogador terá que entregar item também! Caso tenha só colocar o {ITEM_ID, QUANTIDADE} EX:
items = {{2173,1},{2160,10},{2493,2}} rewad --> Aqui determinada se o jogador irá receber itens ao terminar a Task, mesma formula do items /\
reward = {{2520,1},{2173,1}} exp --> Se o jogador irá receber Exp ao terminar a task. 0 ou quantidade de exp
Money --> Se o jogador irá receber dinheiro ao terminar a task. 0 ou quantidade de dinheiro
Daily Task System
daily_task = { [1] = {name = "Orcs" ,monsters_list = {"Orc Berserker","Orc Rider","Orc Leader","Orc Warlord"}, count = 100, points = 0, reward = {}, exp = 5000, money = 10000} }
Segue o padrão da Task original, exceto que não precisa entregar items para o npc!
Como funciona A randomização de level de acordo com a Daily task?
Procure por está tabela em MODS
local t = { [{6,49}] = {1,3}, [{50,79}] = {4,6}, [{80,129}] = {7,9}, [{130,math.huge}] = {10,12} }
entre as chaves e colchetes é o level do jogador para as Daily Task, Você pode adicionar quantas você quiser!
Digamos que:
[{6,49}] = {1,3} --> Quer dizer que entre o level 6 ao 49 o jogador poderá cair na Daily Task número 1(Orcs), 2(Tarantulas) ou 3(Wyvern)!
[{50,79}] = {4,6} --> Quer dizer que entre o level 50 ao 79 o jogador poderá cair na Daily Task número 4(Dragons), 5(Wailing Widows) ou 6(Ancient Scarabs)!
...
[{130,math.huge}] = {10,12} --> Quer dizer que o jogador level 130 ou MAIS poderá cair na Daily Task número 10(Undead Dragons), 11(HydraS) ou 12(Ghastly Dragons)!
Look Rank System
Procure por está tabela em MODS
local ranks = { [{1, 20}] = "Huntsman", [{21, 50}] = "Ranger", [{51, 100}] = "Big Game Hunter", [{101, 200}] = "Trophy Hunter", [{201, math.huge}] = "Elite Hunter" }
Entre 1-20 Task points o Rank será Huntsman
Entre 21-50 Task posints o Rank será Ranger
Entre 51-100 Task Points o rank será Big Game Hunter
etc...
Altere como quiser!
-
Fernandooww deu reputação a Dwarfer em Npcs de QuestFiz de uma forma simplificada para vocês. Em npcs/scripts crie um arquivo.lua:
Como arquivo.xml base você pode utilizar esse, faça as mudanças que desejar.
<?xml version="1.0" encoding="UTF-8"?> <npc name="Dwarfer" script="NOMEDOSEUARQUIVO.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="66"/> </npc>
Para os outros npcs é só copiar a mesma coisa, mudar a ordem do npc em npcOrder para (2, 3, 4...), além das palavras-chave e dos textos enviados ao player.
-
Fernandooww deu reputação a Dwarfer em Slot System EditA função que calcula a % aleatória que será adicionada é essa:
function getper() local n = 1 for i=1,10 do n = n+math.random(0,10) if n < 8*i then break end end return n end Caso queira adicionar uma % fixa e se você não sabe modificar o script, de uma forma mais simples para você, altere para:
function getper() return 1 end Onde 1 é a % adicionada.
-
Fernandooww deu reputação a Killua em Sistema de Upgrade Bronson Server (refinar)Este é um sistema de refinar itens feito com base no do Bronson Server. Para refinar, o jogador precisa ter uma certa quantidade de Iron Ores (dependendo do level do item) e de um Iron Hammer.
Somente equipamentos e armas podem ser refinados.
crie Killua Upgrading System.lua em data/actions/scripts e coloque:
--- Sistema de Upgrade de itens feito por Killua. --- Sistema feito com base no do Bronson Server. local vocations = {1, 2, 4, 5, 6, 7, 8} -- Vocações que podem refinar itens local ids_bloqueados = {2160, 5706, 2463} -- Itens que não podem ser refinados local controle = { {level = 0, quantOre = 1, chance = 100}, -- Level do item, quantidade de Iron Ore necessaria, chance de sucesso {level = 1, quantOre = 2, chance = 90}, {level = 2, quantOre = 3, chance = 80}, {level = 3, quantOre = 4, chance = 70}, {level = 4, quantOre = 5, chance = 60}, {level = 5, quantOre = 6, chance = 50}, {level = 6, quantOre = 7, chance = 40}, {level = 7, quantOre = 8, chance = 30}, {level = 8, quantOre = 9, chance = 20}, {level = 9, quantOre = 10, chance = 10} } function getItemLevel(uid) if uid > 0 then return getItemAttribute(uid, "lvl") or 0 end return false end function doItemAddLevel(uid, count) if uid > 0 and tonumber(count) > 0 then return doItemSetAttribute(uid, "lvl", getItemLevel(uid) + count) end return false end function onUse(cid, item, fromPosition, itemEx, toPosition) if not isInArray(vocations, getPlayerVocation(cid)) then return doPlayerSendCancel(cid, "Sua vocacao nao pode refinar.") elseif isInArray(ids_bloqueados, itemEx.uid) then return doPlayerSendCancel(cid, "Este item nao pode ser refinado.") end if getItemInfo(itemEx.itemid).attack > 0 or getItemInfo(itemEx.itemid).defense > 0 or getItemInfo(itemEx.itemid).armor > 0 then for _, upgrade in pairs(controle) do local atk = getItemAttribute(itemEx.uid, "attack") or getItemInfo(itemEx.itemid).attack local def = getItemAttribute(itemEx.uid, "defense") or getItemInfo(itemEx.itemid).defense local arm = getItemAttribute(itemEx.uid, "armor") or getItemInfo(itemEx.itemid).armor local chance = math.random(1, 100) if getItemLevel(itemEx.uid) == upgrade.level then if doPlayerRemoveItem(cid, 5880, upgrade.quantOre) then doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_CRAPS) if chance <= upgrade.chance then if getItemLevel(itemEx.uid) == 0 then doItemSetAttribute(itemEx.uid, "description", "Esse item foi refinado por" ..getCreatureName(cid)) end doItemAddLevel(itemEx.uid, 1) doItemSetAttribute(itemEx.uid, "name", getItemNameById(itemEx.itemid).. " + " ..getItemLevel(itemEx.uid)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce refinou com sucesso! Agora seu "..getItemNameById(itemEx.itemid).." eh level " ..getItemLevel(itemEx.uid)) if getItemInfo(itemEx.itemid).attack > 0 then doItemSetAttribute(itemEx.uid, "attack", atk + 1) return true elseif getItemInfo(itemEx.itemid).armor > 0 then doItemSetAttribute(itemEx.uid, "armor", arm + 1) return true elseif getItemInfo(itemEx.itemid).defense > 0 and getItemInfo(itemEx.itemid).attack <= 0 then doItemSetAttribute(itemEx.uid, "defense", def + 1) return true end else doTransformItem(itemEx.uid, 2256) doItemSetAttribute(itemEx.uid, 'name', "metal trash") doItemSetAttribute(itemEx.uid, 'attack', 0) doItemSetAttribute(itemEx.uid, 'armor', 0) doItemSetAttribute(itemEx.uid, 'defense', 0) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce falhou.") return true end else doPlayerSendCancel(cid, "Voce nao tem iron ores o suficiente. Voce precisa de "..upgrade.quantOre.." iron ores.") end end end else doPlayerSendCancel(cid, "Esse item nao pode ser refinado.") end return true end Em data/actions/actions.xml coloque essa TAG:
<action itemid="2422" event="script" value="Killua Upgradin System.lua"/> Para configurar, leia meus comentários dentro do código.
-
Fernandooww deu reputação a VictorFT em Galera como crio items vip?Fiz o Script da Crystal Arrow e aqui está
<item id="2352" article="a" name="NOME DA ARROW"> <attribute key="weight" value="200" /> <attribute key="attack" value="VALOR DO ATAQUE" /> <attribute key="HitChance" value="100"/> <attribute key="weaponType" value="distance" /> <attribute key="shootType" value="shiverarrow" /> <attribute key="range" value="10" /> <attribute key="breakChance" value="0" /> <attribute key="ammoAction" value="moveback" /> </item> Configurações: Agora a Wand Estilo Holy <item id="Id da wand desejada" article="a" name="Nome Da Wand"> <attribute key="weight" value="3800" /> <attribute key="shootType" value="holy" /> <attribute key="range" value="4" /> <attribute key="weaponType" value="wand" /> <attribute key="magiclevelpoints" value="DEPENDE SE VOCÊ QUISER" /> </item> Configurações: <item id="7424" article="a" name="Nome Da Wand"> <attribute key="weight" value="3800" /> <attribute key="shootType" value="holy" /> <attribute key="range" value="4" /> <attribute key="weaponType" value="wand" /> </item> Agora vá em Weapons e abra Weapons.xml <wand id="ID" level="7" mana="2" min="8" max="18" type="holy" event="function" value="default"> <!-- Nome da Wand --> <vocation id="1"/> <vocation id="2"/> </wand>
Configurações:
Obrigado Se Gostou da REP+
-
Fernandooww deu reputação a VictorFT em Galera como crio items vip?Fiz o Script da Crystal Arrow e aqui está
<item id="2352" article="a" name="NOME DA ARROW"> <attribute key="weight" value="200" /> <attribute key="attack" value="VALOR DO ATAQUE" /> <attribute key="HitChance" value="100"/> <attribute key="weaponType" value="distance" /> <attribute key="shootType" value="shiverarrow" /> <attribute key="range" value="10" /> <attribute key="breakChance" value="0" /> <attribute key="ammoAction" value="moveback" /> </item> Configurações: Agora a Wand Estilo Holy <item id="Id da wand desejada" article="a" name="Nome Da Wand"> <attribute key="weight" value="3800" /> <attribute key="shootType" value="holy" /> <attribute key="range" value="4" /> <attribute key="weaponType" value="wand" /> <attribute key="magiclevelpoints" value="DEPENDE SE VOCÊ QUISER" /> </item> Configurações: <item id="7424" article="a" name="Nome Da Wand"> <attribute key="weight" value="3800" /> <attribute key="shootType" value="holy" /> <attribute key="range" value="4" /> <attribute key="weaponType" value="wand" /> </item> Agora vá em Weapons e abra Weapons.xml <wand id="ID" level="7" mana="2" min="8" max="18" type="holy" event="function" value="default"> <!-- Nome da Wand --> <vocation id="1"/> <vocation id="2"/> </wand>
Configurações:
Obrigado Se Gostou da REP+
-
Fernandooww deu reputação a Anuudek em [AJUDA] Erro de IP no install.txt do GesiorFácil, 1° vai no gesior, e abra o instal.txt (Não o .php o .txt). Se estiver com o ip : 127.0.0.2, mude para 127.0.0.1 e salve.
Depois entre pelo site http://127.0.0.1/. Problema resolvido? Da rep ae kk!
-
Fernandooww deu reputação a luanluciano93 em (Resolvido)[AJUDA] Gesior 2012 Como Instalando ?Retira essa parte aqui ...
$installIP = trim(file_get_contents('install.txt')); if($installIP != $_SERVER['REMOTE_ADDR']) { echo('In file <b>install.txt</b> must be your IP!<br />In file is:<br /><b>' . $installIP . '</b><br />Your IP is:<br /><b>' . $_SERVER['REMOTE_ADDR'] . '</b>'); exit; } -
Fernandooww deu reputação a PriisioneR em Como por Anti-NukerOlha creio que seja por causo dos Account Manager que logam em até 200 no seu servidor ?
se for
Instalação
Na pasta data\creaturescripts, coloque isso dentro do arquivo creaturescripts.xml:
<event type="login" name="AntiMbCrash" event="script" value="antimbcrash.lua"/> Na pasta \data\creaturescripts\scripts crie um arquivo chamado checkmcmanager.lua
Então coloque isto dentro dele:
function onLogin(cid) local limit,days = 2,360 function CheckMcManager(cid) local count,on = 0,getPlayersOnline() if #on > 0 then for i = 1, #on do if getCreatureName(on[i]) == "Account Manager" and getPlayerIp(on[i]) == getPlayerIp(cid) then count = count + 1 end end if count > limit then doAddIpBanishment(getPlayerIp(cid), days * 24 * 60 * 60) doRemoveCreature(cid) end end return true end addEvent(CheckMcManager, 1000, cid) return true end Configuração
Para configurar é fácil, na segunda linha do script está assim:
local limit,days = 2,360
2 = número máximo de Account Manager.
360 = número de dias que o IP ficará banido.
-
Fernandooww deu reputação a Kurwanuss em (Resolvido)script de item que teleporta--ACTIONS.xml-- <action itemid="ID do item" script="nome do arquivo.lua"/> ---SCRIPT--- function onUse(cid, item, frompos, item2, topos) local config = { pz = "yes", -- players precisam estar em protection zone para usar? ("yes" or "no"). battle = "yes", -- players deve estar sem battle ("yes" or "no") pos = {x=276, y=71, z=7} ---- Cordenadas } if(config.pz == "yes") and (getTilePzInfo(getCreaturePosition(cid)) == FALSE) then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"você precisa estar em protection zone pra poder teleportar.") return TRUE end if(config.battle == "yes") and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você precisa estar sem battler pra poder teleportar.") return TRUE end if item.itemid == 5091 then ---- id do item doPlayerSendTextMessage(cid,22,"Nossa Este Artefato é Muito Poderoso!!!") -- mensagem quando ele for usado doTeleportThing(cid,config.pos) doSendMagicEffect(getCreaturePosition(cid), 10) doSendMagicEffect(frompos,6) end return 1 end
-
Fernandooww deu reputação a EddyHavoc em Perfect VIP System 2.2Perfect Vip system 2.2
Versão Testada:TFS 0.3.6 - 8.54 - 8.60
Creditos pelas modificações: Kydrai,Nicekid e Marcryzius e EddyHavoc
Creditos pelas publicações: EddyHavoc e Vodkart
Oque Contém no Sistema vip 2.2?
Quote
- Compra Vip pela talkaction ( Comando !buyvip ) -- ou sem o comando.
- Tile para somente Players Vip passarem ( conta também com funçâo os.time )
- verifica quantos dias de Vip o character ainda possui.
- Administradores(GOD) podem adicionar e remover dias de Vip para characters.
-- Administradores(GOD) podem checkar dias de Vip dos Players.
-- É adicionado [VIP] ao nome e retirado quando a vip Acabar.
GOD Adicionando e Removendo dias de Vip
Comprando VIP e Checkando dia da sua VIP
Quote
Comando:
comprar vip:
!buyvip
checkar dias de vip:
!vipdays
God checkar dias de vip do character:
/checkvip Nick
exemplo: /checkvip Nicekid
God adionar dias ao character:
/addvip Nick,dias
exemplo: /addvip Nicekid,5
aqui adicionei 5 dias de vip.
God Retirar dias de Vip do character:
/delvip Nick,dias
exemplo: /delvip Nicekid,5
aqui retirei 5 dias de vip.
Primeiro passo
vá até talkactions/scripts Crie um arquivo.lua e renomeie para systemvip.lua
dentro coloque:
-- Script System Vip 2.2 -- function onSay(cid, words, param) if(words == "!buyvip") then local price = 5000000 if doPlayerRemoveMoney(cid, price) == TRUE then local days = 30 local daysvalue = days * 24 * 60 * 60 local storageplayer = getPlayerStorageValue(cid, 13540) local timenow = os.time() if getPlayerStorageValue(cid, 13540) - os.time() <= 0 then time = timenow + daysvalue else time = storageplayer + daysvalue end if string.find(tostring(getCreatureName(cid)),"[[Vip]]") then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. days .." dias de VIP no seu character.") setPlayerStorageValue(cid, 13540, time) local quantity = math.floor((getPlayerStorageValue(cid, 13540) - timenow)/(24 * 60 * 60)) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. quantity .." dias de VIP restantes.") else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. days .." dias de VIP no seu character.") setPlayerStorageValue(cid, 13540, time) local name = getCreatureName(cid) db.executeQuery("UPDATE `players` SET `name` = '[Vip] "..name.."' WHERE `id` = "..getPlayerGUID(cid)..";") doRemoveCreature(cid) end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa de "..price.." gp's para colocar vip.") end elseif(words == "!vipdays") then local timenow = os.time() local quantity = math.floor((getPlayerStorageValue(cid, 13540) - timenow)/(24 * 60 * 60)) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. (quantity < 0 and 0 or quantity) .." dias de VIP no seu character.") elseif(words == "/checkvip") then if getPlayerAccess(cid) == 5 then if not param then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.") end local player = getPlayerByName(param) if not isPlayer(player) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player "..player.." not found.") end local timenow = os.time() local quantity = math.floor((getPlayerStorageValue(player, 13540) - timenow)/(24 * 60 * 60)) doPlayerPopupFYI(cid, "O jogador tem ".. (quantity < 0 and 0 or quantity) .." dias de VIP no character.") return TRUE end elseif(words == "/addvip") then if getPlayerAccess(cid) == 5 then local t = string.explode(param, ",") if not t[2] then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.") end local player = getPlayerByName(t[1]) local name = getCreatureName(player) local days = t[2] local pid = getPlayerByNameWildcard(t[1]) if(not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player with this name doesn\'t exist or is offline.") return TRUE end local daysvalue = days*3600*24 local storageplayer = getPlayerStorageValue(player, 13540) local timenow = os.time() local time = storageplayer <= 0 and (timenow + daysvalue) or (storageplayer + daysvalue) if string.find(tostring(getCreatureName(pid)),"[[Vip]]") then doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Foram adicionados "..days.." dias de VIP no seu character.") setPlayerStorageValue(player, 13540, time) local quantity = math.floor((getPlayerStorageValue(player,13540) - timenow)/(3600*24)) doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Você tem "..quantity.." dias de VIP restantes.") else setPlayerStorageValue(player, 13540, time) db.executeQuery("UPDATE `players` SET `name` = '[Vip] "..name.."' WHERE `id` = "..getPlayerGUID(player)..";") doRemoveCreature(player) end end elseif(words == "/delvip") then if getPlayerAccess(cid) == 5 then local dec = MESSAGE_INFO_DESCR if(param == "") then return TRUE,doPlayerSendTextMessage(cid,18,"Command param required.")end local C,t = {},string.explode(param, ",") C.pos = getPlayerPosition(cid) C.uid = getCreatureByName(t[1]) C.time = ((tonumber(t[2]) == nil) and 1 or tonumber(t[2]))*3600*24 --Tempo da vip por dia. C.days = (tonumber(t[2]) == nil) and 1 or tonumber(t[2]) --Dias de vip. if(getPlayerStorageValue(C.uid,13540) < C.time)then doPlayerSendTextMessage(cid,dec,'O jogador '..t[1]..' não possui '..C.days..' dias de vip.') else doPlayerSendTextMessage(cid,dec,'Você removeu '..C.days..' dias de vip do player '..t[1]..'.') setPlayerStorageValue(C.uid,13540,getPlayerStorageValue(C.uid,13540)-C.time) end doSendMagicEffect(C.pos, math.random(28,30)) end end return TRUE end price = é o quanto a vip vai custar em gps days = quantos dias de vip serão adicionados ao player em talkactions.xml adicione a tag:
<talkaction words="!vipdays;!buyvip;/checkvip;/addvip;/delvip" script="systemvip.lua"/> Pronto primeiro passo terminado. Sistema vip sem o !buyvip abra a spoiler Spoiler ---------------------------------------------------------------------------------------------------------------------------- Tile VIP Segundo passo. vá até movements/scripts crie um arquivo.lua e renomeie para vipe.lua dentro coloque:
-- Script Vip Sytem 1.0 -- function onStepIn(cid, item, position, fromPosition) local config = { msgDenied = "Você não e vip ,fale com Administrador do Server.", msgWelcome = "Seja Bem Vindo a Area vip." } if getPlayerStorageValue(cid, 13540) - os.time() <= 0 then doTeleportThing(cid, fromPosition, true) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.msgDenied) doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return TRUE end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.msgWelcome) return TRUE end Em movements.xml adicione a tag: <movevent type="StepIn" uniqueid="13700" event="script" value="vipe.lua"/> FIM DA VIP creaturescript/script crie um arquivo.lua e renomeie para endvip.lua e cole isso dentro dele:
--[[ by EddyHavoc Tibiaking.com ]]-- function onLogin(cid) if getPlayerStorageValue(cid, 13540) - os.time() > 0 then setPlayerStorageValue(cid, 9898, 1) end local pos = {x = 157, y = 50, z = 7} -- posiçao do templo. function EddyHavoc(cid) if isPlayer(cid) then db.executeQuery("UPDATE `players` SET `name` = '"..string.sub(getCreatureName(cid), 7).."' WHERE `id` = "..getPlayerGUID(cid)..";") doRemoveCreature(cid) end end if getPlayerStorageValue(cid, 9898) == 1 and getPlayerStorageValue(cid, 13540) - os.time() < 1 or getPlayerStorageValue(cid, 13540) - os.time() == 0 then doTeleportThing(cid, pos) doPlayerPopupFYI(cid, "Sua vip Account acabou.") setPlayerStorageValue(cid, 9898, -1) if string.find(tostring(getCreatureName(cid)),"[[Vip]]") then addEvent(EddyHavoc, 3*1000, cid) end end return TRUE end em creaturescript.xml adicione a tag:
<event type="login" name="CheckVip" script="endvip.lua"/>[i] Pronto Seu sistema Vip está terminado.
-
Fernandooww deu reputação a Stigal em [Resolvido] Vip systen por scrollPrimeiramente, vamos na pasta data/actions/scripts, crie um arquivo chamado PremiumScroll.lua e adicione isso dentro:
function onUse (cid,item) if getPlayerPremiumDays (cid) > 14 then doPlayerSendTextMessage (cid, MESSAGE_INFO_DESCR, "Você precisa ter 15 ou menos dias restantes de Premium Account, para utilizar esse serviço novamente!") doSendMagicEffect (getCreaturePosition (cid), 2) end if doRemoveItem(item.uid, 0) then doPlayerAddPremiumDays(cid, 30) doSendMagicEffect(getCreaturePosition(cid), 14) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você acaba de ganhar 30 dias de Premium Account, terá áreas exclusivas e 35% a mais de EXP como benefício!") end return true end Agora vá na pasta data/creaturescripts/scripts/login.lua .No meio do script terão alguns Events como esses exemplo:
registerCreatureEvent(cid, "kill") registerCreatureEvent(cid, "onPrepareDeath") registerCreatureEvent(cid, "PlayerLogout") registerCreatureEvent(cid, "onPrepareDeath") registerCreatureEvent(cid, "deathBroadcast") registerCreatureEvent(cid, "DeathBroadcast") registerCreatureEvent(cid, "Idle") Agora ao meio desses, adicione esse Event:
registerCreatureEvent(cid, "PremiumRate") Vá na pasta data novemente, abra a pasta items e em seguida o arquivo items.xml. Aperte CTRL + F e digite 9004. Assim você irá encontrar um item dourado, oque usaremos como "Premium Scroll". Apague-o e adicione essa tag:
<item id="9004" article="a" name="Premium Scroll"> <attribute key="description" value="Esse Scroll lhe dá 30 dias de Premium!" /> <attribute key="weight" value="23.00" /> </item> Caso não exista e seu servidor for versão 8.60 adicione do mesmo jeito.
Ok, ainda na pasta data/creaturescripts, na pasta scripts adicione um arquivo chamado PremiumRate.lua e adicione isso dentro:
function onLogin(cid) local rate = 1.35 local days = getPlayerPremiumDays(cid) local config = { yes_premium = "Você tem "..((rate - 1)*100).."% de EXP em vantagem, Ainda lhe restam "..days.." dias de Premium!", not_premium = "Tornesse Premium e tenha "..((rate - 1)*100).."% a mais de EXP!", premium = isPremium(cid) } if (config.premium == TRUE) then doPlayerSetExperienceRate(cid, rate) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.yes_premium) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.not_premium) end return TRUE end Muito bem agora vamos adicionar as Tags!
No arquivo actions.xml na pasta data/actions adicione essa tag:
<action itemid="9004" event="script" value="PremiumScroll.lua"/> E no arquivo creaturescripts.xml:
<event type="login" name="PremiumRate" script="premiumrate.lua"/> • Explicação do Sistema:
Creditos: Roksas
-
Fernandooww deu reputação a TonyHalk em [Resolvido] [Pedido] Script que após matar monstro aparece um teleport.tp.lua local tpId = 1387 local tps = { ["Orshabaal"] = {pos = {x=761, y=57, z=7}, toPos = {x=767, y=52, z=7}, time = 30}, } function removeTp(tp) local t = getTileItemById(tp.pos, tpId) if t then doRemoveItem(t.uid, 1) doSendMagicEffect(tp.pos, CONST_ME_POFF) end end function onDeath(cid) local tp = tps[getCreatureName(cid)] if tp then doCreateTeleport(tpId, tp.toPos, tp.pos) doCreatureSay(cid, "O teleport irá sumir em "..tp.time.." segundos.", TALKTYPE_ORANGE_1) addEvent(removeTp, tp.time*1000, tp) end return TRUE end explicação: ["Orshabaal"] --------- Nome do monstro pos = {x=761, y=57, z=7} ----------- onde o Teleport irá abrir toPos = {x=767, y=52, z=7} ------- onde o teleport vai leva eles time = 30 ------------ tempo em segundos que o teleport ficará aberto em creaturescript adicione: <event type="death" name="tp" event="script" value="tp.lua"/> no arquivo.xml do seu monstro adicione: <script> <event name="tp"/> </script> acho que é mais facil :3
-
Fernandooww deu reputação a Kimoszin em (RESOLVIDO) [Pedido] Mata monstro e aparecer teleport\data\creaturescripts\scripts\tel.lua
local pos, toPos = {x = 1024, y = 1025, z = 7}, {x = 1017, y = 1025, z = 7} local name = "Rotworm" function onDeath(cid, corpse, killer) if (isMonster(cid) and getCreatureName(cid) == name) then return doCreateTeleport(1387, toPos, pos) end return true end \data\creaturescripts\creaturescripts.xml <event type="death" name="tel" event="script" value="tel.lua"/> Ai você vai no .xml do monstro e bota: <script> <event name="tel"/> </script>
-
Fernandooww deu reputação a grafit em Problemas com FRAG!Antes de tudo eu queria pedir desculpas por estar revivendo o tópico mas eu estive com o mesmo problema e não achei em lugar algum a solução..
Depois de muito procurar pelo fix desse bug eu achei a solução.
No seu config.lua a deathlist está desativada
-- Deathlist deathListEnabled = "no" deathListRequiredTime = 1 * 60 * 1000 deathAssistCount = 20 maxDeathRecords = 5
Ative essa função e o problema será resolvido!
-- Deathlist deathListEnabled = "yes" deathListRequiredTime = 1 * 60 * 1000 deathAssistCount = 20 maxDeathRecords = 5 -
Fernandooww deu reputação a Bodak Reborn em Pedidomovements/scripts
nome_arquivo.lua
local walls = { [1] = {pos = {x = 1050, y = 1050, z = 7}, item = 5322}, [2] = {pos = {x = 1051, y = 1051, z = 7}, item = 5322}, [3] = {pos = {x = 1052, y = 1052, z = 7}, item = 5322}, [4] = {pos = {x = 1053, y = 1053, z = 7}, item = 5322}, [5] = {pos = {x = 1054, y = 1054, z = 7}, item = 5322}, [6] = {pos = {x = 1055, y = 1055, z = 7}, item = 5322}, } function onStepIn(cid, item, position, fromPosition) for i = 1, #walls do doCreateItem (walls[i].item, 1, walls[i].pos) end return true end
XML:
<movevent type="StepIn" actionid="ACTION_ID_DO_PISO" event="script" value="nome_arquivo.lua"/>
globalevents/scripts
nome_arquivo.lua
local walls = { [1] = {pos = {x = 1050, y = 1050, z = 7}, item = 5322}, [2] = {pos = {x = 1051, y = 1051, z = 7}, item = 5322}, [3] = {pos = {x = 1052, y = 1052, z = 7}, item = 5322}, [4] = {pos = {x = 1053, y = 1053, z = 7}, item = 5322}, [5] = {pos = {x = 1054, y = 1054, z = 7}, item = 5322}, [6] = {pos = {x = 1055, y = 1055, z = 7}, item = 5322}, } function onThink(interval, lastExecution, thinkInterval) for i = 1, #walls do local tileItem = getTileItemById(walls[i].pos, walls[i].item).uid if tileItem ~= 0 then doRemoveItem(tileItem, 1) end end return true end
XML:
<globalevent name="removeWals" interval="604800" event="script" value="nome_arquivo.lua"/>
-
Fernandooww deu reputação a Bodak Reborn em Pedido DesesperadoCOH_PUSHTIME = 10800 -- Tempo (em segundos) de exhausted para usar o comando !gocastle - Padrão (3 horas) COH_AREA = { [1] = {x = 32512, y = 30862, z = 7}, {x = 32616, y = 30959, z = 7}, [2] = {x = 32512, y = 30862, z = 7}, {x = 32616, y = 30959, z = 7}, [3] = {x = 32512, y = 30862, z = 7}, {x = 32616, y = 30959, z = 7}, } -- Canto superior esquerdo / inferior direito do Castle -- // Não mexa daqui para baixo COH_STATUS = 201320111714 COH_PREPARE1 = 201320111715 COH_PUSHSTOR = 201320111716 COH_PREPARE2 = 201320111717 function doCastleRemoveEnemies() for index, creature in ipairs(getPlayersOnline()) do for i = 1, #COH_AREA do if isInArea(getThingPos(creature), COH_AREA[i][1], COH_AREA[i][2]) then if getPlayerGuildName(creature) ~= getGlobalStorageValue(COH_STATUS) then doTeleportThing(creature, getTownTemplePosition(getPlayerTown(creature))) end end end end return true end
-
Fernandooww deu reputação a Bodak Reborn em Pedido Desesperadofunction onStepIn(cid, item, position, fromPosition) doCastleRemoveEnemies() return true end
-
Fernandooww deu reputação a Bodak Reborn em Pedido Desesperadomovements/scripts
nome_arquivo.lua
local config = { from = {x = 1312, y = 3151, z = 7}, -- canto superior esquerdo da área do castelo. to = {x = 1410, y = 3070, z = 7}, -- canto inferior direito da área do castelo. toPos = {x = 1503, t = 1053, z = 7} -- para onde os jogadores irão. } function onStepIn(cid, item, position, fromPosition) if isPlayer (cid) then for _, pid in ipairs (getPlayersOnline()) do if isInRange (getThingPos(pid), config.from, config.to) then doTeleportThing (pid, config.toPos) end end end return true end
XML:
<movevent type="StepIn" actionid="ACTION_ID_DO_TRONO" event="script" value="nome_arquivo.lua"/>
-
Fernandooww deu reputação a Bodak Reborn em Pedido Desesperado1º:
globalevents/scripts
nome_arquivo1.lua
function onThink(interval, lastExecution) local config = { tpPos = {x = 1048, y = 1053, z = 7}, -- posição onde o teleport será criado. toPos = {x = 1048, y = 1054, z = 7}, -- posição para onde o jogador será levado. teleportID = 1387 -- ID do teleport. } doCreateTeleport (config.teleportID, config.toPos, config.tpPos) return true end
nome_arquivo2.lua
function onThink(interval, lastExecution) local tpPos = {x = 1048, y = 1053, z = 7} -- posição onde o teleport será criado. local teleportID = 1387 -- ID do teleport. local tpTile = getTileItemById (tpPos, teleportID).uid if tpTile > 0 then doRemoveItem (tpTile, 1) end return true end
XML:
<globalevent name="tpCreate" interval="604800" event="script" value="nome_arquivo1.lua"/> <globalevent name="tpRemove" interval="622800" event="script" value="nome_arquivo2.lua"/>
2º: não entendi.