-
Total de itens
9 -
Registro em
-
Última visita
Histórico de Reputação
-
Fury4i20 deu reputação a vital900 em Ajuda Rme Please
Abra seu RME; Vá em File>Import>Import Monster/Npc...
Depois, basta você procurar na pasta data de seu servidor a pasta de monstro e ir selecionando monstro por monstro.
duvida sanada?
-
Fury4i20 deu reputação a Furabio em Atreyu OT 8.6 - TFS 0.4 (rev. 5934) (Mapa Custom)
Fechei o Atreyu em 2013, por não conseguir conciliar o tempo do trabalho com o gerenciamento do servidor, assim resolvi fecha-lo. Estou disponibilizando todo o servidor. Gostava bastante deste mapa (31 MB).
Servidor bastante estável com mais de 500 horas de uptime, todas as vocações estão bastante equilibradas para PVP e PVM.
Existem 218 casas dividas em 7 cidades.
Download Link (Site/Servidor/Db/Documentos de controle):
Mega:
https://mega.co.nz/#...TmVtcboibn5ibmg
Banco de dados atualizado:
atreyu-db-31-12-2014.rar 32,02K 69 Downloads
(Atualizei alguns campos que não estavam com valor default e assim não deixavam criar conta/personagem no site)
Contas de exemplo:
malk/123456 (GOD)
teste/123123 (Paladin)
MxSample (Não lembro a senha, a conta tem um personagem de cada vocação, quando um personagem é criado no site ele é copiado a partir do personagem desta conta)
Cidades:
Formiria Daoten Finidia Gasmaril Labaredum Mornea Ucon (VIP) Funcionalidades:
Addons funcionando 100%. Guilds Wars com Skull 100%. Montanha Russa. Sistema VIP completo. Sistema de Banco via comando. Sistema de Bless via comando. Sistema de Refinamento de Itens. Sistema de Itens únicos. Tasks. Quests:
Annihilator - LVL 100+ Assassin Outfit - Qualquer Behemoth - LVL 80+ Beholder - Qualquer Demon Oak - LVL 120+ Demon Helmet - LVL 150+ Demon Hunter Outfit - Qualquer Dragon Lord - LVL 90+ Draken Quest - LVL 180+ Elf Tree - Qualquer Giant Spider - LVL 35+ Hero - LVL 50+ Hydra - LVL 60+ Infernalist Tower - LVL 75+ Norseman Outfit - Qualquer Pits Of Inferno (POI) - LVL 80+ (Todas as alavancas na mesma ordem do global ) Sand Dragon Lord - Qualquer Warlock - Qualquer Guild Wars (Com Escudos):
Sistema igual ao do global onde uma guild pode invitar outra para entrar em guerra assim pode ser definido valores para a guild vencedora receber e todos as morte da guerra são justificadas ou seja não ganhaskull ou ban matando na war.
Sistemas:
Banco: Sistema para controle de banco através de comando, sem precisar assim de ir na cidade para sacar ou depositar dinheiro em sua conta. Itens Únicos: Cada vez que um monstro dropa algum loot existe a chance desse item ter algum atributo melhor do que o item padrão, por exemplo, pode cair uma giant sword com + 2 de ataque ou um demon shield com +3 de defesa. Refinamento: Você pode utilizar pedras especiais para melhorar a qualidade de seus itens. Renascimento: Existe um item no jogo que pode renascer um jogador morto recentemente trazendo ele para o local do seu corpo. Treinamento com Soul: As áreas de treinamento utilizam a soul do personagem, a cada 3 minutos um ponto de soul é gasto. Eventos:
Zombie Event - Todos os dias as 18h e 23h. Coliseum (PVP entre times) - Terça, Quinta e Sábado as 16 horas. Dota (Próprio) Castle War WOE Controle Frags:
Quantidade para pegar Skull:
- RED SKULL
Diario = 5
Semanal = 10
Mensal = 30
- BLACK SKULL
Diario = 5
Semanal = 10
Mensal = 30
Tempo para sair a Skull
Red Skull = 7 Dias
Black SKull = 10 Dias
Outras Informações:
Level para comprar casa: 100 Level para criar guild: 50 Protection Level: 50 -
Fury4i20 deu reputação a Furabio em BaraoIce Show!
Saalveee Salveee!!!
Eaai galera hoje venho trazer para vocês um servidor baiak barão que eu mesmo editei, e adicionei vários sistemas legais!
Então vamos lá, oque ele tem ?
NOVO VISUAL DO TEMPLO
Aura System (comando !aura on)
Task System
Critical System
Dodge System
Reset System (ÁREA EXCLUSIVA COM CASTELO E HUNTS) para resetar fale !reset
Guild Frags System (ÁREA EXCLUSIVA COM CASTELO E HUNTS)
War System (100% RODANDO EM SQLITE)
Cast System ( Para Ativar vai em Config.lua e ache | enableCast = false | mude para true )
PvP Balanceado
Varios Eventos Automaticos
Battle Field Event
Capture The Flag Event
Adicionado CASTLE 24HORAS (COM CASTELO) e AVISOS DE INVASORES
Itens DONATES
Área DONATE ~~ (Só Entra Quem Usar o Itens)
Fast Atk Arrumado
Refinamento ( Aprimora seu Item )
Level Points System Adicionado (Melhora Seu Skill)
Frags no Look
Npc Major Ancient (Vende Itens Exclusivos para quem tiver honor points) Obs:Consegue no GFS)
Fly System Adicionado fale !fly
Transforma 1kk e 1 gold coin
Itens DONATES foram arrumados! agora estão dando os atributos.
Adicionei Cidade Carlin, com várias hunts!
Adicionei novos bichos area FREE & VIP!
Retirei vários bugs!
Cidade com mais traps!
Ao Upar ganha certa recompensa em dinheiro!
e muito mais novidades kk
Imagens
Hunts Vips Novas
Carlin
DOWNLOAD
http://www.4shared.com/rar/KpEaxlXNba/Baiak_BaraoIce.html?
SCAN
https://www.virustot...sis/1418225739/
Créditos
Deathrocks
7955577
-
Fury4i20 deu reputação a Furabio em Radbr V2
BUGS ARRUMADOS:
*Bug Dos Pisos
*Bug Das Paredes
*Bug Dos Spells
*Bug Dos Comandos
Novidades:
*Sistemas Novos
*Comandos Novos
*Monsters Novos
*Spells Novas
*E etc
Vamos Aos Novos Comandos:
PARA PLAYERS:
*!Deathlist (Como Todos Conheçen Para Ver Mortes Sua E Dos Outros)
*!broadcast (Só Vip Pode usar Fala Mensagens Para Todos)
*!Spells (isso serve para iniciantes que desejam ver suas magias)
PARA GODS:
*/mute (Como o nome ja dis para deixar player muted)
*/jail (Manda o player para a cadeia especial por 10 ou 15 min eu acho)
*/renomear (Mudar seu nome)
*/additem (Numa hora especial de evento se voçe quiser dar itens para todos só usar isso)
MONTERS NOVOS:
*Dengue (Eu lembrei este monstro do antigo ot chamado antartica que fez susseco com este monstro)
*Hallowen (é que nem dourado só que ele sumona demons para protegelo)
*Poseidon (deus do mar como todos sabem)
*Nephthys (todos conheçem do RadBR)
*Farao (Rei Do Egito kkk)
SPELLS NOVAS:
*inverno-ja (para drunous solta espinhos de gelo pelo chão)
*cura das trevas! (para infernalists)
*dragon (para sorcs and druids)
*fusion (para druids)
*fogo do dragao!(infernalists)
UMA RUNA NOVA:
*Healing Strong Rune (aposto que alguns vao pensar que paia essa runa so serve pra atrapalhar mais nao ela ajuda é muito quando voçe estiver morrendo ela vai te ajudar muito e muito)
Sistemas Novos:
*Sistema De Invasao
*Um Sistema de tirar o pz (OBS:o piso esta escondido,isso msm piso)
Aqui Vai Algumas SS:
O castelo de wisland
Sala de TPS
Cidade de Iceford
Room Quests
Donwload
http://www.mediafire...qo2w213s8m710s7
Scan
Creditos:
Slayer
Bruno
Bolz
Irmao do bolz
SkyDark
-
Fury4i20 deu reputação a Furabio em {Baiak} 8.60 V1.1.9 Editado
Olá Pessoal, Vim Disponibilizar a Vocês um ótimo Baiak que peguei de um Fórum, Achei Interessante e resolvi Traze-lo para o EKS..
Features Baiak v1.1.9
Baiak Yurots V2.2 Oque Mudou ? Mudou a City ta 90% 8.5 Foi Arrumada As Houses. Adicioano Npc Papai Noel no Templo Vende Items 8.54! Novos Items Novos Outifits Novas Hunts E Muito Mais... Baiak Yurots V2.7 Oque Mudou ? Foi Adicionada um Nova Cidade Chamada Baiak City Foi Adidionada Um Teleport no Templo Que Vai para Alumas City's Foi Adicionado Npc de Bless,Pagando Todas as Bless você nao prescisa usar aol... Foi Adicionado Uma Ilha de GM's ... Bug do Account Mananger Arrumado. Novo Executer adicionado,se o ot cai ele salva sozinhoo. E Muito Mas Estara por vim ... Baiak Yurots v1.0.9 Oque Mudou ? Foi Adicionado Sistema Vip.. Foi Adicionado 5 Novos Portais Vip Foi Adicionado Novos Bixos Vip,Warlock Vip,Medusa Vip,Bossing of Baiak.. Foi Adicionado New Quest Baiak Super Foda !! Foi Modificado o Templo Foi Adicionado Mais Treiners ! Entre Alguns Bugs Retirados Baiak Yurots v1.1.0 Oque Mudou ? Mudou o Protocolo de 8.57 para 8.60 Novos Item Novo Outfit Baiak Yurots V1.1.4 Oque Mudou ? Tirei o Pz tool do Templo Fiz um Novo System Vip por Comando Fiz o Novo Addon do Outfit do Wayfarer Baiak Yurots Edited By Bryaan Oque mudou ? Modifiquei o templo, totalmente ICE Fiz novos comandos, !aol, !bless, !jail playername <para gods>, !removeskull (retira sua black ou red skull por 1kk), entre outros Criei novos itens vips II! (obtidos na vip quest) Fiz quest para axe vip, star vip,club vip,sword vip,wand e rod vip Fiz uma vip II Fiz Um Castelo, onde ocorre batalhas do time Verde X Vermelho. Fiz uma Area Pvp, onde quem morrer nao perde level Fiz uma quest vip, onde se ganha a vip II E mais um amuleto vip(permite que red skull e black skull nao percam itens, funciona como aol tambem, possui 30 cargas) e tambem um item vip de sua escolha( axe,sword,club,star,rod ou wand vip.) Novos Teleports Adcionados na Vip II Monstros novos como Medusa vip II, Hydra Vip II, entre outros. Fiz uma Super Poi para vips II Vocaçoes Balanciadas Teleports Especiais [ARENA, CASTELO DO REI E HOUSE ISLAND] para level 300+ Bug Da baiak cape que nao dava ml+6, arrumado, entre outros varios bugs System Vip Como Funciona ? A Vip I é free, portanto o comando !buyvip, foi removido, pois implicava com a vip II. A Vip II é somente para quem conseguiu completar a Vip Quest, onde la voce ganha a vip stone, e vira vip usando ela. Baiak By Baiak Yurots by Kaue V1.1.9 oque mudou?
Foi modificado o templo e o piso da cidade principal Foi adicionada uma nova cidade para a " VIP 1 ", sendo assim retirei a antiga pois era muito "quadrada" Foi adicionado uma nova cidade para VIP 2 sendo assim, agora players vip 2 possuem duas cidades de acesso. Foi adicionado 5 portais a nova cidade vip 2 com respawns ótimos, fazendo assim com que players vip 2 avançem rapidamente de level. Vip 2 é adquirida no templo com o npc Freed no valor de 20kk Itens vip 2 são adquiridos com o npc Vip Seller no 2º andar do DP da cidade principal ou na loja do npc perto do templo. Retirei o bug da vip 2 da "Orc Fortess" ACC DO GOD É: god/god
PRINTS
Templo Cidade Principal
Templo Vip 1
Templo Vip 2
Teleportes da vip 2 (Novos)
Area Dungeos Frost Dragon
Download
Download Baiak v1.1.9 By Kaaue http://www.4shared.c..._Kaue_V119.html
Scan
CRÉDITOS:
YouRez (criador do mapa original)
Bryaan ( Por ter editado quase que totalmete o mesmo)
Kauee ( Pela edição)
-
Fury4i20 deu reputação a Furabio em [UPDATE] NOVO BAIAK LERO! Bye Rogerio
- Baiak Lero tem a base do baiak ice, todos os bugs retirados.
- Contem 4 novas quests (Lero Quest) cada item da 3% def de todos os danos.
- Cidade free, Vip1, vip2, Reformulada.
- Adicionado VIP 3.
- Adicionado VIP Donate.Poder ser comprada pelo Lero Seller por [ 50kk ]
- Adicionado Itens (LERO) no templo npc (Lero Seller) 2º melhores armas do jogo.
- Acidionados Novos Scripts, calculo de kills, ant-magebomb etc.
- Adicionado npc Ring Seller.
- Adicionado Recarregar Soft/Firewalker apenas Clicando nelas.
- Buero inicial Reformulado.
- Não contem exit trainer.
-2 Systema novos Task System e Guild frags onde a guild que tiver 100 kills ganha 5 honor points para comprar acesso a uma area so da guild
- Novos Monsters Donates na cidade vip donate.
-Algumas hunts sem teleports espalhadas no mapa tmb de Warlock Demon Medusa
-Implementado 2 boss portas lvl 400 e 500 no templo
-Nova Quest Boots Donate
-Nova Quest Helmet of the Ancients
-Boss Ghazbaram, Morgaroth, Ferumbras dao loot igual do global e tem alguns escondidos no mapa obs: nao dropa itens da quest lero nem donate
-14 teleports free adicionados
-8 teleports na city vip Free adicionados
-City Donate
-Tps Donate
-Templo Free
4 Novas Quest
-entre outras coisas
Scan: https://www.virustot...sis/1399930023/
Dowload: http://www.4shared.c...Lero_2014.html?
http://depositfiles....files/ghw7jmuyc
-
Fury4i20 deu reputação a Furabio em Baiak ROX ! Editado By DeathRocks
Eae Galera do EKS
É o seguinte Hoje trago a vocês o Baiak Rox Editado por Min
Espero que Gostem
Oque eu Fiz ?
| Novo Visual do Templo Totalmente ICE
| Critical System
| Task System
| Dodge System
| Run Event (CORRIDA MALUCA)
| Reset System (ÁREA EXCLUSIVA COM CASTELO E HUNTS) para resetar fale !reset
| Guild Frags System ( ACESSO AO PROMOTE E ITENS EXCLUSIVOS )
| War System (100% RODANDO EM SQLITE)
| Cast System (100% Roda em Mysql ) ( Para Ativar vai em Config.lua e ache | enableCast = false | mude para true )
| PvP Balanceado Agora com mais RPG
| Armas Arrumadas Para Melhor PvP
| Varios Eventos Automaticos
| Battle Field Event
| Capture The Flag Event
| City War
| Adicionado CASTLE 24HORAS (COM CASTELO) e AVISOS DE INVASORES
| Itens DONATES
| Área DONATE ~~ (Só Entra Quem Usar o Itens de Premium Days)
| Vários Novos Script
| Fast Atk Arrumado
| Distro 0.4 Rodando 100% ( Se For 64x Bits)
| Refinamento ( Aprimora seus Equipamentos )
| Frags no Look
| Npc Hero Seller (Vende Itens Exclusivos para quem tiver honor points) Obs:Consegue no GFS)
| Entre Outras Coisas
| SENHA DO GOD: rox/styller
| Aqui Vai Umas Prints
| Castelo Reset System
| Nova Imagem do Templo
| Área Donate
| Mostra de Itens Donate + Eventos
| Download
http://www.4shared.c..._DeathRock.html
| Scan
https://www.virustot...sis/1403139305/
| Créditos
DeathRocks
LuanLuciano
Vinny -
Fury4i20 deu reputação a Furabio em Baiak ROX. editado By Dieguiin XP
Fala galera, hoje venho trazer um Baiak ROX Editado por mim, vamos lá O que tem de Novo nesse Baiak ROX? -Templo com novo visual -Castle 24HRS (Unico) com aviso de invasores -Dodge System -Critical System -Cast System 100 %. Para ativar vá em config.lua e procure por enableCast = false true/false -Itens VIP a mostra no templo -Todos itens VIP arrumados, agóra tão dando Skills normalmente -foi adicionado mais cave donates -Push Fast. Para arrumar do seu módo vá em config.lua e procure por: pushCreatureDelay = 1 * 205 -Tempo do PZ arrumado. -caves donates tudo trocada, agóra caves grandes com detalhes, não aquélas quadradas -nóvos itens free, pode ser obtidos em quest -Vários Teleports -Paladin arrumado, agóra heala com potion e ataca ao mesmo tempo -Utito tempo san arrumado, agóra não da exausted em outras magias -Novas Hunts -Look Frags -Task 100% -War System 100% -Muitas quests -Arena PVP (Nóva) -Quest de set free para Pally/Kinas -Quest de set free para Mages -quest para armas editadas -Treiners com novos visual -VIP 1 Free -VIP 2: !vip2 -30% a mais de experiencia para players donates -10% a mais de experiencia para guild que domina o Castle 24HRS -Potions Editadas (nóvos efeitos) E muito mais! Eventos: Capture The Flag City War Event BattleField Event Comandos principais: !dodoge !critical /cast !stamina !aol !bless !vip2 !notice. Vamos as imagens: templo http://imgur.com/2MnFUqv Templo parte de cima http://imgur.com/CZFmtsO Castle http://imgur.com/Qb4qs9S area donate http://imgur.com/sBqejOW Download:
http://www.4shared.c...ba/DiegoOT.html Scan:
https://www.virustot...sis/1413568779/ Créditos
Dieguiin XP
DeathRocks
LuanLuciano
Vinny
-
Fury4i20 deu reputação a Furabio em Desert War 0.6
Desert War 0.6
Informações:
Mapa de darashia
Mapa feito para OPEN WAR
Todos os players começam level 130 [Equipe IllusionWar]
Equips de acordo com sua vocação [Equipe IllusionWar]
Quest 250k - Soft boots [Equipe IllusionWar]
Npc: Refinamento, Ring Seller, Recarregar Soft, Lector e Destruction Itens
Duas caves para diferenciar
(para chegar na cave, tem que ir andando)
Sistema de slot [Mock]
Frag Look [Theax]
Addons por level [Pinpao]
(a cada 5 em 5 leveis pega um addon novo)
Anti-Mc [shawak] [Cykotitan]
Buff System [Potreco]
(quando player nasce no templo ja ganha um determidado buffs)
Lottery System [Walef Xavier]
(a cada 61 min player sorteado ganha 100k)
Templo - Sistema de Buff
Quest 250k e Soft Boots
Treiners
Cave de Walorck
Sistema de Refinamento
Itens um pouco editados
Obs: wand está com ataque muito alto, para edita é Desert War 0.6\data\weapons\scripts vai em wand.lua e edita os numeros em min/max.
Download:
4shared: http://www.4shared.c...ert_War_06.html
Scan:
http://www.virustota...7c50-1310653476
Creditos á fora:
Equipe Real Global Map
Equipe Illusion War
Obs: Se faltar creditos, fale para eu colocar. Se for postar o otserv em outro site/forum coloque os devidos creditos de todos.
-
Fury4i20 deu reputação a Furabio em Sistema de Aura
local voc = {6,7,8,9,10,11,12} -- Vocations
local dalay = 2 -- Segundos
local effect = 70 -- Efeito
function ariseAura(cid)
if isInArray(voc, getPlayerVocation(cid)) and isPlayer(cid) then
doSendMagicEffect(getThingPos(cid), effect)
addEvent(ariseAura, delay * 1000, cid)
end
return true
end
function onLogin(cid)
ariseAura(cid)
return true
end
-
Fury4i20 deu reputação a Furabio em Comando /save e Clean automático
Save e clean automático, peguei do server do Printer,
servesave.lua (data/globalevents/scripts/) :
local shutdownAtServerSave = false local cleanMapAtServerSave = true local function serverSave() if shutdownAtServerSave then Game.setGameState(GAME_STATE_SHUTDOWN) else Game.setGameState(GAME_STATE_NORMAL) end if cleanMapAtServerSave then cleanMap() end saveServer() end local function secondServerSaveWarning() Game.broadcastMessage('Server is saving game in one minute. Please go to a safe place.', MESSAGE_STATUS_WARNING) addEvent(serverSave, 60000) end local function firstServerSaveWarning() Game.broadcastMessage('Server is saving game in 3 minutes. Please go to a safe place.', MESSAGE_STATUS_WARNING) addEvent(secondServerSaveWarning, 120000) end function onTime(interval) Game.broadcastMessage('Server is saving game in 5 minutes. Please go to a safe place.', MESSAGE_STATUS_WARNING) Game.setGameState(GAME_STATE_STARTUP) addEvent(firstServerSaveWarning, 120000) return not shutdownAtServerSave end globalevents.XML (data/globalevents/) :
<globalevent name="ServerSave" time="09:55:00" script="serversave.lua" /> -
Fury4i20 deu reputação a Furabio em [TFS 1.x] /looktype monster ou playername
Um comando para GOD, que permiti trocar o seu looktype, para o de um monstro ou de um player em questão.
/looktype id /looktype monstername /looktype id, playername /looktype monstername, playername Exemplo: /looktype 262 /looktype Silver Rabbit /looktype 262, Limos /looktype Silver Rabbit, Limos looktype.lua
function onSay(cid, words, param) local player = Player(cid) if not player:getGroup():getAccess() then return true end local t = param:split(",") local lookType = tonumber(t[1]) if not lookType then lookType = MonsterType(t[1]) and MonsterType(t[1]):getOutfit().lookType if not lookType then player:sendCancelMessage("A monster with that name does not exist.") return false end end if t[2] then playerx, player = player, Player(t[2]:gsub("^%s*(.-)%s*$", "%1")) if not player then playerx:sendCancelMessage("A player with that name does not exist or is not online.") return false end end if lookType >= 0 and lookType ~= 1 and lookType ~= 135 and lookType ~= 411 and lookType ~= 415 and lookType ~= 424 and (lookType <= 160 or lookType >= 192) and lookType ~= 439 and lookType ~= 440 and lookType ~= 468 and lookType ~= 469 and (lookType < 474 or lookType > 485) and lookType ~= 501 and lookType ~= 518 and lookType ~= 519 and lookType ~= 520 and lookType ~= 524 and lookType ~= 525 and lookType ~= 536 and lookType ~= 543 and lookType ~= 549 and lookType ~= 576 and lookType ~= 581 and lookType ~= 582 and lookType <= 595 then local playerOutfit = player:getOutfit() playerOutfit.lookType = lookType player:setOutfit(playerOutfit) else player = playerx or player player:sendCancelMessage("A look type with that id does not exist.") end return false end Créditos : Limos
-
Fury4i20 deu reputação a Furabio em [TFS 1.1] !exp, !mana updated to 1.1
!exp:
!mana:
talkactions.xml
<talkaction words="!exp" script="expmana.lua"/> <talkaction words="!mana" script="expmana.lua"/> expmana.lua
function onSay(player, words, param) local p = player local s = function(p, lv) local k = Game.getExperienceStage(lv) local st = p:getStamina() if st > 2400 then return k*1.5 .. " (stamina bonus)" elseif st < 1 then return 0 .. " (out of stamina)" elseif st < 841 then return k*0.5 .. " (stamina penalty)" else return k end end if words == "!exp" then local lv = p:getLevel() p:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You need " .. ((50 * lv^3) - (150 * lv^2) + (400 * lv)) / 3 - p:getExperience() .. " experience more, for " .. lv+1 .. " level.") p:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Current rate: x" .. s(p, lv)) return false end p:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You have to spend " .. math.ceil((p:getVocation():getRequiredManaSpent(p:getBaseMagicLevel() + 1) - p:getManaSpent()) / configManager.getNumber(configKeys.RATE_MAGIC)) .. " mana more, for next magic level.") return false end Créditos : zbisu.
-
Fury4i20 deu reputação a Furabio em [TFS 1.1] !rank
rank in-game de level, ml , skill, etc ...
13:13 Top players on server, frags, paladin:
[1] [Test ze Spacjami] [5]
[2] [Zbizo3] [1]
talkactions.xml
<talkaction words="!rank" separator=" " script="rank.lua"/> rank.lua
local top = 10 local rankcolor = MESSAGE_STATUS_CONSOLE_ORANGE local errorcolor = MESSAGE_STATUS_CONSOLE_BLUE local popup = true -- set to false if you want it in local chat local exhaustvalue = 78692 -- storage to avoid command spam local exhausttime = 5 -- seconds before you may request rank again local maxgroup = 1 -- set to 2 to include gms, 3 to include gods local ranks = { ['level'] = 1, ['lvl'] = 1, ['exp'] = 1, ['xp'] = 1, ['magic'] = 2, ['ml'] = 2, ['bank'] = 3, ['balance'] = 3, ['cash'] = 3, ['money'] = 3, ['gp'] = 3, ['fist'] = 4, ['club'] = 5, ['sword'] = 6, ['axe'] = 7, ['distance'] = 8, ['dist'] = 8, ['shielding'] = 9, ['shield'] = 9, ['fishing'] = 10, ['fish'] = 10, ['frags'] = 11 } local voc = { ['none'] = 0, ['sorcerer'] = {1, 5}, ['ms'] = {1, 5}, ['druid'] = {2, 6}, ['ed'] = {2, 6}, ['paladin'] = {3, 7}, ['rp'] = {3, 7}, ['knight'] = {4, 8}, ['ek'] = {4, 8} } local stats = { -- {"order by this", "show this first"} [1] = {"experience", "level"}, [2] = {"manaspent", "maglevel"}, [3] = {"balance"}, [4] = {"skill_fist"}, [5] = {"skill_club"}, [6] = {"skill_sword"}, [7] = {"skill_axe"}, [8] = {"skill_dist"}, [9] = {"skill_shielding"}, [10] = {"skill_fishing"} } local stats_names = { [1] = {"exp", "level"}, [2] = {"mana spent", "magic level"}, [3] = {"account balance"}, [4] = {"fist fighting"}, [5] = {"club fighting"}, [6] = {"sword fighting"}, [7] = {"axe fighting"}, [8] = {"distance fighting"}, [9] = {"shielding"}, [10] = {"fishing"}, [11] = {"frags"} } local stats_short = { [1] = {"xp: ", ""}, [2] = {"mana: ", ""}, [3] = {""}, [4] = {""}, [5] = {""}, [6] = {""}, [7] = {""}, [8] = {""}, [9] = {""}, [10] = {""}, [11] = {""} } function table.find(table, value) for i, v in pairs(table) do if v == value then return i end end return nil end function getHighest(check, values) local highest = 0 local highestVal = nil local highestI = nil for i = 1, #values do if check[values[i]] > highest then highest = check[values[i]] highestVal = values[i] highestI = i end end return {highest, highestVal, highestI} end function getTopFraggers(vocs) local fraggers = {} local resultId = db.storeQuery("SELECT `player_id`, `killed_by` FROM `player_deaths` WHERE `is_player` = 1") if resultId then repeat table.insert(fraggers, result.getDataString(resultId, "killed_by")) until not result.next(resultId) result.free(resultId) end local fraggers_names = {} for i = 1, #fraggers do if not table.find(fraggers_names, fraggers[i]) then table.insert(fraggers_names, fraggers[i]) end end local fraggers_total = {} for i = 1, #fraggers do for j = 1, #fraggers_names do if fraggers_names[j] == fraggers[i] then if not fraggers_total[fraggers_names[j]] then fraggers_total[fraggers_names[j]] = 0 end fraggers_total[fraggers_names[j]] = fraggers_total[fraggers_names[j]] + 1 end end end local place = 0 local fraggers_top = {} repeat local v = getHighest(fraggers_total, fraggers_names) if not v[2] then break end if vocs then local resultId = db.storeQuery("SELECT `vocation` FROM `players` WHERE `name` = '" .. v[2] .. "' LIMIT 1") if isInArray(vocs, result.getDataInt(resultId, "vocation")) then place = place + 1 table.insert(fraggers_top, {v[1], v[2]}) end else place = place + 1 table.insert(fraggers_top, {v[1], v[2]}) end table.remove(fraggers_names, v[3]) until (place == top) or (not v[3]) local msg = "" for i = 1, #fraggers_top do if fraggers_top[i][2] then msg = msg .. "\n[" .. i .. "] [" .. fraggers_top[i][2] .. "] [" .. fraggers_top[i][1] .. "]" else break end end return msg end function onSay(player, words, param) if player:getStorageValue(exhaustvalue) >= os.time() then player:sendTextMessage(errorcolor, "Please do not spam.") return false end player:setStorageValue(exhaustvalue, os.time() + exhausttime) local split = param:split(",") if #split == 0 then local ranks2 = {} for i = 1, #stats_names do table.insert(ranks2, stats_names[i][#stats_names[i]]) end player:popupFYI("Example: " .. words .. " balance, knight(optional)\n\nAvailable ranks:\n" .. table.concat(ranks2, "\n")) return false end for i = 1, #split do split[i] = split[i]:gsub("^%s*(.-)%s*$", "%1") end if ranks[split[1]] then local msg = "Top players on server, " .. stats_names[ranks[split[1]]][#stats_names[ranks[split[1]]]] .. (voc[split[2]] and (", " .. split[2]) or "") .. ":" if ranks[split[1]] == 11 then if popup then player:popupFYI(msg .. getTopFraggers(voc[split[2]])) else player:sendTextMessage(rankcolor, msg .. getTopFraggers(voc[split[2]])) end return false else local resultId = db.storeQuery("SELECT `name`, `" .. table.concat(stats[ranks[split[1]]], "`, `") .. "` FROM `players` WHERE `group_id` <= " .. maxgroup .. (voc[split[2]] and (" AND `vocation` IN (" .. table.concat(voc[split[2]], ",") .. ")") or "") .. " ORDER BY `" .. stats[ranks[split[1]]][#stats[ranks[split[1]]]] .. "` DESC LIMIT " .. top) local place = 0 repeat place = place + 1 msg = msg .. "\n[" .. place .. "] [" .. result.getDataString(resultId, "name") .. "] " for i = 1, #stats[ranks[split[1]]] do local s = #stats[ranks[split[1]]] + 1 - i msg = msg .. "[" .. stats_short[ranks[split[1]]][s] .. result.getDataInt(resultId, stats[ranks[split[1]]][s]) .. "]" .. (s > 1 and " " or "") end until not result.next(resultId) result.free(resultId) if popup then player:popupFYI(msg) else player:sendTextMessage(rankcolor, msg) end end return false end player:sendTextMessage(errorcolor, "Incorrect list name. Execute command without parameters to see available lists.") return false end Créditos: zbisu
-
Fury4i20 deu reputação a Furabio em [TFS 1.0] !buyaddon "addon
Os items para receber o addon é configurável.
talkactions.XML
<talkaction words="!rank" separator=" " script="buyaddon.lua"/> buyaddon.lua
local text = '--Addon List--\n!buyaddon "citizen\n!buyaddon "hunter\n!buyaddon "mage\n!buyaddon "knight\n!buyaddon "summoner\n!buyaddon "warrior\n!buyaddon "barbarian\n!buyaddon "druid\n!buyaddon "wizard\n!buyaddon "oriental\n!buyaddon "pirate\n!buyaddon "assassin\n!buyaddon "beggar\n!buyaddon "beggar\n!buyaddon "shaman\n!buyaddon "norseman\n!buyaddon "nightmare\n!buyaddon "jester\n!buyaddon "brotherhood\n!buyaddon "warmaster\n--Addon List End--' function onSay(cid, words, param) local player = Player(cid) local cfg = { ["citizen"] = { outfit = { male = 128, female = 136, addon = 3, storage = 10031 }, items = { {5878,100} } }, ["hunter"] = { outfit = { male = 129, female = 137, addon = 3, storage = 10032 }, items = { {5876, 100},{5948, 100} } }, ["mage"] = { outfit = { male = 130, female = 138, addon = 3, storage = 10033 }, items = { {2160,10} } }, ["knight"] = { outfit = { male = 131, female = 139, addon = 3, storage = 10034 }, items = { {5880,100},{5893, 100} } }, ["summoner"] = { outfit = { male = 133, female = 141, addon = 3, storage = 10035 }, items = { {2160,10} } }, ["warrior"] = { outfit = { male = 134, female = 142, addon = 3, storage = 10036 }, items = { {5925, 100},{5899, 100},{5919, 1},{5880, 100} } }, ["barbarian"] = { outfit = { male = 147, female = 143, addon = 3, storage = 10037 }, items = { {5911, 50},{5910, 50},{5879, 100} } }, ["druid"] = { outfit = { male = 148, female = 144, addon = 3, storage = 10038 }, items = { {5896, 50},{5897, 50} } }, ["wizard"] = { outfit = { male = 149, female = 145, addon = 3, storage = 10039 }, items = { {2536, 1},{2492, 1},{2488, 1},{2123, 1},{5922, 50} } }, ["oriental"] = { outfit = { male = 150, female = 146, addon = 3, storage = 10040 }, items = { {5883, 100},{5895, 100},{5912, 100} } }, ["pirate"] = { outfit = { male = 151, female = 155, addon = 3, storage = 10041 }, items = { {6098, 100},{6126, 100},{6097, 100} } }, ["assassin"] = { outfit = { male = 152, female = 156, addon = 3, storage = 10042 }, items = { {5898, 30},{5882, 10},{5881, 30},{5895, 20},{5905, 10} } }, ["beggar"] = { outfit = { male = 153, female = 157, addon = 3, storage = 10043 }, items = { {5878, 50},{2743, 30},{5913, 20},{5894, 10} } }, ["shaman"] = { outfit = { male = 154, female = 158, addon = 3, storage = 10044 }, items = { {3955,5},{5810, 5},{3966, 5},{3967, 5} } }, ["norseman"] = { outfit = { male = 251, female = 252, addon = 3, storage = 10045 }, items = { {7290,15} } }, ["nightmare"] = { outfit = { male = 268, female = 269, addon = 3, storage = 10046 }, items = { {6500,200} } }, ["jester"] = { outfit = { male = 273, female = 270, addon = 3, storage = 10047 }, items = { {2160, 25} } }, ["brotherhood"] = { outfit = { male = 278, female = 279, addon = 3, storage = 10048 }, items = { {6500,200} } } } local v, removeItems = cfg[param], 0, 0 if(param == "") then player:sendTextMessage(MESSAGE_INFO_DESCR, 'Please type !addon "outfit') player:showTextDialog( 5914, text) return false end if (v == nil) then player:sendTextMessage(MESSAGE_INFO_DESCR, "There is no such as outfit named "..param..", here is the list of available outfit.") player:showTextDialog(5914, text) return false end if(player:getStorageValue(v.outfit.storage) < 1) then for i = 1, #v.items do if(player:getItemCount(v.items[i][1]) >= v.items[i][2]) then removeItems = removeItems+1 end end if(removeItems == #v.items) then if(player:getSex(cid) == 1) then player:addOutfitAddon(v.outfit.male, v.outfit.addon) elseif(player:getSex(cid) == 0) then player:addOutfitAddon( v.outfit.female, v.outfit.addon) end for i = 1, #v.items do player:removeItem( v.items[i][1], v.items[i][2]) end player:sendTextMessage(MESSAGE_INFO_DESCR, "Enjoy your new addons to your "..param.." outfit!") player:getPosition():sendMagicEffect(CONST_ME_FIREWORK_YELLOW) player:setStorageValue( v.outfit.storage, 1) else for i = 1, #v.items do player:sendTextMessage(MESSAGE_INFO_DESCR, "Tu necesitas " .. v.items[i][2] .. "x " .. ItemType(v.items[i][1]):getName() .. " para obtener el "..param.." addon.") end end else player:sendTextMessage(MESSAGE_INFO_DESCR, "Usted ya obtuvo el "..param..".") end return false end Créditos : david.
-
Fury4i20 deu reputação a Furabio em [TFS 1.1] Monster Tasks
Esse npc permite escolher qual task o player irá fazer :
Adonai.xml
<?xml version="1.0" encoding="UTF-8"?> <npc name="Adonai" script="tasks.lua" walkinterval="2000" speed ="0" floorchange="0"> <health now="100" max="100"/> <look type="433" head="58" body="113" legs="50" feet="78" addons="1" mount="688"/> </npc> tasks.lua
local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local xmsg = {} 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 local storage = 62003 local monsters = { ["Dragons"] = {storage = 5010, mstorage = 19000, amount = 10, exp = 5000, items = {{id = 2157, count = 1}, {id = 2160, count = 3}}}, ["Dragon Lords"] = {storage = 5011, mstorage = 19001, amount = 10, exp = 10000, items = {{id = 2492, count = 1}, {id = 2160, count = 5}}}, ["Hydras"] = {storage = 5012, mstorage = 19002, amount = 10, exp = 18000, items = {{id = 2195, count = 1}, {id = 2157, count = 8}}}, ["Demons"] = {storage = 5013, mstorage = 19003, amount = 10, exp = 20000, items = {{id = 2520, count = 1}, {id = 2160, count = 10}}} } local function getItemsFromTable(itemtable) local text = "" for v = 1, #itemtable do count, info = itemtable[v].count, ItemType(itemtable[v].id) local ret = ", " if v == 1 then ret = "" elseif v == #itemtable then ret = " and " end text = text .. ret text = text .. (count > 1 and count or info:getArticle()).." "..(count > 1 and info:getPluralName() or info:getName()) end return text end local function Cptl(f, r) return f:upper()..r:lower() end function creatureSayCallback(cid, type, msg) local player, cmsg = Player(cid), msg:gsub("(%a)([%w_']*)", Cptl) if not npcHandler:isFocused(cid) then if msg == "hi" or msg == "hello" then npcHandler:addFocus(cid) if player:getStorageValue(storage) == -1 then local text, n = "", 0 for k, x in pairs(monsters) do if player:getStorageValue(x.mstorage) < x.amount then n = n + 1 text = text .. ", " text = text .. ""..x.amount.." {"..k.."}" end end if n > 1 then npcHandler:say("I have several tasks for you to kill monsters"..text..", which one do you choose? I can also show you a {list} with rewards and you can {stop} a task if you want.", cid) npcHandler.topic[cid] = 1 xmsg[cid] = msg elseif n == 1 then npcHandler:say("I have one last task for you"..text..".", cid) npcHandler.topic[cid] = 1 else npcHandler:say("You already did all tasks, I have nothing for you to do anymore, good job though.", cid) end elseif player:getStorageValue(storage) == 1 then for k, x in pairs(monsters) do if player:getStorageValue(x.storage) == 1 then npcHandler:say("Did you kill "..x.amount.." "..k.."?", cid) npcHandler.topic[cid] = 2 xmsg[cid] = k end end end else return false end elseif monsters[cmsg] and npcHandler.topic[cid] == 1 then if player:getStorageValue(monsters[cmsg].storage) == -1 then npcHandler:say("Good luck, come back when you killed "..monsters[cmsg].amount.." "..cmsg..".", cid) player:setStorageValue(storage, 1) player:setStorageValue(monsters[cmsg].storage, 1) else npcHandler:say("You already did the "..cmsg.." mission.", cid) end npcHandler.topic[cid] = 0 elseif msgcontains(msg, "yes") and npcHandler.topic[cid] == 2 then local x = monsters[xmsg[cid]] if player:getStorageValue(x.mstorage) >= x.amount then npcHandler:say("Good job, here is your reward, "..getItemsFromTable(x.items)..".", cid) for g = 1, #x.items do player:addItem(x.items[g].id, x.items[g].count) end player:addExperience(x.exp) player:setStorageValue(x.storage, 2) player:setStorageValue(storage, -1) npcHandler.topic[cid] = 3 else npcHandler:say("You didn't kill them all, you still need to kill "..x.amount -(player:getStorageValue(x.mstorage) + 1).." "..xmsg[cid]..".", cid) end elseif msgcontains(msg, "task") and npcHandler.topic[cid] == 3 then local text, n = "", 0 for k, x in pairs(monsters) do if player:getStorageValue(x.mstorage) < x.amount then n = n + 1 text = text .. (n == 1 and "" or ", ") text = text .. "{"..k.."}" end end if text ~= "" then npcHandler:say("Want to do another task? You can choose "..text..".", cid) npcHandler.topic[cid] = 1 else npcHandler:say("You already did all tasks.", cid) end elseif msgcontains(msg, "no") and npcHandler.topic[cid] == 1 then npcHandler:say("Ok then.", cid) npcHandler.topic[cid] = 0 elseif msgcontains(msg, "stop") then local text, n = "", 0 for k, x in pairs(monsters) do if player:getStorageValue(x.mstorage) < x.amount then n = n + 1 text = text .. (n == 1 and "" or ", ") text = text .. "{"..k.."}" if player:getStorageValue(x.storage) == 1 then player:setStorageValue(x.storage, -1) end end end if player:getStorageValue(storage) == 1 then npcHandler:say("Alright, let me know if you want to continue an other task, you can still choose "..text..".", cid) else npcHandler:say("You didn't start any new task yet, if you want to start one, you can choose "..text..".", cid) end player:setStorageValue(storage, -1) npcHandler.topic[cid] = 1 elseif msgcontains(msg, "list") then local text = "Tasks\n\n" for k, x in pairs(monsters) do if player:getStorageValue(x.mstorage) < x.amount then text = text ..k .." ["..(player:getStorageValue(x.mstorage) + 1).."/"..x.amount.."]:\n Rewards:\n "..getItemsFromTable(x.items).."\n "..x.exp.." experience \n\n" else text = text .. k .." [DONE]\n" end end player:showTextDialog(1949, "" .. text) npcHandler:say("Here you are.", cid) elseif msgcontains(msg, "bye") then npcHandler:say("Bye.", cid) npcHandler:releaseFocus(cid) else npcHandler:say("What?", cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) creaturescripts.xml
<event type="kill" name="Tasks" script="killtasks.lua"/> login.lua
player:registerEvent("Tasks") killtasks.lua
local config = { ['dragon'] = {amount = 10, storage = 19000, startstorage = 5010, startvalue = 1}, ['dragon lord'] = {amount = 10, storage = 19001, startstorage = 5011, startvalue = 1}, ['hydra'] = {amount = 10, storage = 19002, startstorage = 5012, startvalue = 1}, ['demon'] = {amount = 10, storage = 19003, startstorage = 5013, startvalue = 1} } function onKill(player, target) local monster = config[target:getName():lower()] if target:isPlayer() or not monster or target:getMaster() then return true end local stor = player:getStorageValue(monster.storage)+1 if stor < monster.amount and player:getStorageValue(monster.startstorage) >= monster.startvalue then player:setStorageValue(monster.storage, stor) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, 'Task message: '..(stor +1)..' of '..monster.amount..' '..target:getName()..'s killed.') end if (stor +1) == monster.amount then player:sendTextMessage(MESSAGE_INFO_DESCR, 'Congratulations, you have killed '..(stor +1)..' '..target:getName()..'s and completed the '..target:getName()..'s mission.') player:setStorageValue(monster.storage, stor +1) end return true end
___________________________________________________________________________________________
Como funciona ?
O NPC oferece-lhe várias task, você pode escolher qual você deseja fazer. Se você não matar todos os monstros, o NPC irá dizer-lhe quantos você ainda tem que matar.
Você pode para ver a lista de recompensa e as tasks que você já fez.
Você pode parar com as tasks e ir fazer outra e depois continuar a antiga.
Ao terminar as task elas não serão mais mencionados pelo NPC mas será mostrado como terminado na lista.
Quando terminar as task o npc, dirá que todas foram completadas.
Créditos : Limos
-
Fury4i20 deu reputação a Furabio em [TFS 1.1] Addon NPC (Varkhal)
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
local talkState = {}
local rtnt = {}
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
npcHandler:setMessage(MESSAGE_GREET, "Greetings |PLAYERNAME|. I need your help and I'll reward you with nice addons if you help me! Just say {addons} or {help} if you don't know what to do.")
addoninfo = {
['first citizen addon'] = {cost = 0, items = {{5878,20}}, outfit_female = 136, outfit_male = 128, addon = 1, storageID = 10042},
['second citizen addon'] = {cost = 0, items = {{5890,50}, {5902,25}, {2480,1}}, outfit_female = 136, outfit_male = 128, addon = 2, storageID = 10043},
['first hunter addon'] = {cost = 0, items = {{5876,50}, {5948,50}, {5891,5}, {5887,1}, {5889,1}, {5888,1}}, outfit_female = 137, outfit_male = 129, addon = 1, storageID = 10044},
['second hunter addon'] = {cost = 0, items = {{5875,1}}, outfit_female = 137, outfit_male = 129, addon = 2, storageID = 10045},
['first knight addon'] = {cost = 0, items = {{5880,50}, {5892,1}}, outfit_female = 139, outfit_male = 131, addon = 1, storageID = 10046},
['second knight addon'] = {cost = 0, items = {{5893,50}, {11422,1}, {5885,1}, {5887,1}}, outfit_female = 139, outfit_male = 131, addon = 2, storageID = 10047},
['first mage addon'] = {cost = 0, items = {{2182,1}, {2186,1}, {2185,1}, {8911,1}, {2181,1}, {2183,1}, {2190,1}, {2191,1}, {2188,1}, {8921,1}, {2189,1}, {2187,1}, {2392,30}, {5809,1}, {2193,20}}, outfit_female = 138, outfit_male = 130, addon = 1, storageID = 10048},
['second mage addon'] = {cost = 0, items = {{5903,1}}, outfit_female = 138, outfit_male = 130, addon = 2, storageID = 10049},
['first summoner addon'] = {cost = 0, items = {{5878,20}}, outfit_female = 141, outfit_male = 133, addon = 1, storageID = 10050},
['second summoner addon'] = {cost = 0, items = {{5894,35}, {5911,20}, {5883,40}, {5922,35}, {5879,10}, {5881,30}, {5882,40}, {2392,3}, {5905,30}}, outfit_female = 141, outfit_male = 133, addon = 2, storageID = 10051},
['first barbarian addon'] = {cost = 0, items = {{5884,1}, {5885,1}, {5910,25}, {5911,25}, {5886,10}}, outfit_female = 147, outfit_male = 143, addon = 1, storageID = 10011},
['second barbarian addon'] = {cost = 0, items = {{5880,25}, {5892,1}, {5893,25}, {5876,25}}, outfit_female = 147, outfit_male = 143, addon = 2, storageID = 10012},
['first druid addon'] = {cost = 0, items = {{5896,20}, {5897,20}}, outfit_female = 148, outfit_male = 144, addon = 1, storageID = 10013},
['second druid addon'] = {cost = 0, items = {{5906,100}}, outfit_female = 148, outfit_male = 144, addon = 2, storageID = 10014},
['first nobleman addon'] = {cost = 300000, items = {}, outfit_female = 140, outfit_male = 132, addon = 1, storageID = 10015},
['second nobleman addon'] = {cost = 300000, items = {}, outfit_female = 140, outfit_male = 132, addon = 2, storageID = 10016},
['first oriental addon'] = {cost = 0, items = {{5945,1}}, outfit_female = 150, outfit_male = 146, addon = 1, storageID = 10017},
['second oriental addon'] = {cost = 0, items = {{5883,30}, {5895,30}, {5891,2}, {5912,30}}, outfit_female = 150, outfit_male = 146, addon = 2, storageID = 10018},
['first warrior addon'] = {cost = 0, items = {{5925,40}, {5899,40}, {5884,1}, {5919,1}}, outfit_female = 142, outfit_male = 134, addon = 1, storageID = 10019},
['second warrior addon'] = {cost = 0, items = {{5880,40}, {5887,1}}, outfit_female = 142, outfit_male = 134, addon = 2, storageID = 10020},
['first wizard addon'] = {cost = 0, items = {{2536,1}, {2492,1}, {2488,1}, {2123,1}}, outfit_female = 149, outfit_male = 145, addon = 1, storageID = 10021},
['second wizard addon'] = {cost = 0, items = {{5922,40}}, outfit_female = 149, outfit_male = 145, addon = 2, storageID = 10022},
['first assassin addon'] = {cost = 0, items = {{5912,20}, {5910,20}, {5911,20}, {5913,20}, {5914,20}, {5909,20}, {5886,10}}, outfit_female = 156, outfit_male = 152, addon = 1, storageID = 10023},
['second assassin addon'] = {cost = 0, items = {{5804,1}, {5930,10}}, outfit_female = 156, outfit_male = 152, addon = 2, storageID = 10024},
['first beggar addon'] = {cost = 0, items = {{5878,30}, {5921,20}, {5913,10}, {5894,10}}, outfit_female = 157, outfit_male = 153, addon = 1, storageID = 10025},
['second beggar addon'] = {cost = 0, items = {{5883,30}, {2160,2}}, outfit_female = 157, outfit_male = 153, addon = 2, storageID = 10026},
['first pirate addon'] = {cost = 0, items = {{6098,30}, {6126,30}, {6097,30}}, outfit_female = 155, outfit_male = 151, addon = 1, storageID = 10027},
['second pirate addon'] = {cost = 0, items = {{6101,1}, {6102,1}, {6100,1}, {6099,1}}, outfit_female = 155, outfit_male = 151, addon = 2, storageID = 10028},
['first shaman addon'] = {cost = 0, items = {{5810,5}, {3955,5}, {5015,1}}, outfit_female = 158, outfit_male = 154, addon = 1, storageID = 10029},
['second shaman addon'] = {cost = 0, items = {{3966,5}, {3967,5}}, outfit_female = 158, outfit_male = 154, addon = 2, storageID = 10030},
['first norseman addon'] = {cost = 0, items = {{7290,5}}, outfit_female = 252, outfit_male = 251, addon = 1, storageID = 10031},
['second norseman addon'] = {cost = 0, items = {{7290,10}}, outfit_female = 252, outfit_male = 251, addon = 2, storageID = 10032},
['first jester addon'] = {cost = 0, items = {{5912,20}, {5913,20}, {5914,20}, {5909,20}}, outfit_female = 270, outfit_male = 273, addon = 1, storageID = 10033},
['second jester addon'] = {cost = 0, items = {{5912,20}, {5910,20}, {5911,20}, {5912,20}}, outfit_female = 270, outfit_male = 273, addon = 2, storageID = 10034},
['first demonhunter addon'] = {cost = 0, items = {{5905,30}, {5906,40}, {5954,20}, {6500,50}}, outfit_female = 288, outfit_male = 289, addon = 1, storageID = 10035},
['second demonhunter addon'] = {cost = 0, items = {{5906,50}, {6500,200}}, outfit_female = 288, outfit_male = 289, addon = 2, storageID = 10036},
['first nightmare addon'] = {cost = 0, items = {{6500,750}}, outfit_female = 269, outfit_male = 268, addon = 1, storageID = 10037},
['second nightmare addon'] = {cost = 0, items = {{6500,750}}, outfit_female = 269, outfit_male = 268, addon = 2, storageID = 10038},
['first brotherhood addon'] = {cost = 0, items = {{6500,750}}, outfit_female = 279, outfit_male = 278, addon = 1, storageID = 10039},
['second brotherhood addon'] = {cost = 0, items = {{6500,750}}, outfit_female = 279, outfit_male = 278, addon = 2, storageID = 10040},
['first yalaharian addon'] = {cost = 0, items = {{9955,1}}, outfit_female = 324, outfit_male = 325, addon = 1, storageID = 10041},
['second yalaharian addon'] = {cost = 0, items = {{9955,1}}, outfit_female = 324, outfit_male = 325, addon = 2, storageID = 10041}
-- next storage 10052 -- next storage 10052 -- next storage 10052 -- next storage 10052 -- next storage 10052 -- next storage 10052 -- next storage 10052 --
}
local o = {'citizen', 'hunter', 'knight', 'mage', 'nobleman', 'summoner', 'warrior', 'barbarian', 'druid', 'wizard', 'oriental', 'pirate', 'assassin', 'beggar', 'shaman', 'norseman', 'nighmare', 'jester', 'yalaharian', 'brotherhood'}
function creatureSayCallback(cid, type, msg)
local talkUser = cid
if(not npcHandler:isFocused(cid)) then
return false
end
if addoninfo[msg] ~= nil then
if (getPlayerStorageValue(cid, addoninfo[msg].storageID) ~= -1) then
npcHandler:say('You already have this addon!', cid)
npcHandler:resetNpc()
else
local itemsTable = addoninfo[msg].items
local items_list = ''
if table.maxn(itemsTable) > 0 then
for i = 1, table.maxn(itemsTable) do
local item = itemsTable
items_list = items_list .. item[2] .. ' ' .. ItemType(item[1]):getName()
if i ~= table.maxn(itemsTable) then
items_list = items_list .. ', '
end
end
end
local text = ''
if (addoninfo[msg].cost > 0) then
text = addoninfo[msg].cost .. ' gp'
elseif table.maxn(addoninfo[msg].items) then
text = items_list
elseif (addoninfo[msg].cost > 0) and table.maxn(addoninfo[msg].items) then
text = items_list .. ' and ' .. addoninfo[msg].cost .. ' gp'
end
npcHandler:say('For ' .. msg .. ' you will need ' .. text .. '. Do you have it all with you?', cid)
rtnt[talkUser] = msg
talkState[talkUser] = addoninfo[msg].storageID
return true
end
elseif msgcontains(msg, "yes") then
if (talkState[talkUser] > 10010 and talkState[talkUser] < 10100) then
local items_number = 0
if table.maxn(addoninfo[rtnt[talkUser]].items) > 0 then
for i = 1, table.maxn(addoninfo[rtnt[talkUser]].items) do
local item = addoninfo[rtnt[talkUser]].items
if (getPlayerItemCount(cid,item[1]) >= item[2]) then
items_number = items_number + 1
end
end
end
if(getPlayerMoney(cid) >= addoninfo[rtnt[talkUser]].cost) and (items_number == table.maxn(addoninfo[rtnt[talkUser]].items)) then
doPlayerRemoveMoney(cid, addoninfo[rtnt[talkUser]].cost)
if table.maxn(addoninfo[rtnt[talkUser]].items) > 0 then
for i = 1, table.maxn(addoninfo[rtnt[talkUser]].items) do
local item = addoninfo[rtnt[talkUser]].items
doPlayerRemoveItem(cid,item[1],item[2])
end
end
doPlayerAddOutfit(cid, addoninfo[rtnt[talkUser]].outfit_male, addoninfo[rtnt[talkUser]].addon)
doPlayerAddOutfit(cid, addoninfo[rtnt[talkUser]].outfit_female, addoninfo[rtnt[talkUser]].addon)
setPlayerStorageValue(cid,addoninfo[rtnt[talkUser]].storageID,1)
npcHandler:say('Here you are.', cid)
else
npcHandler:say('You do not have needed items!', cid)
end
rtnt[talkUser] = nil
talkState[talkUser] = 0
npcHandler:resetNpc()
return true
end
elseif msgcontains(msg, "addon") then
npcHandler:say('I can give you addons for {' .. table.concat(o, "}, {") .. '} outfits.', cid)
rtnt[talkUser] = nil
talkState[talkUser] = 0
npcHandler:resetNpc()
return true
elseif msgcontains(msg, "help") then
npcHandler:say('To buy the first addon say \'first NAME addon\', for the second addon say \'second NAME addon\'.', cid)
rtnt[talkUser] = nil
talkState[talkUser] = 0
npcHandler:resetNpc()
return true
else
if talkState[talkUser] ~= nil then
if talkState[talkUser] > 0 then
npcHandler:say('Come back when you get these items.', cid)
rtnt[talkUser] = nil
talkState[talkUser] = 0
npcHandler:resetNpc()
return true
end
end
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
-
Fury4i20 deu reputação a Furabio em [TFS 1.x] Sistema de reset
Essa versão foi feita pra tfs 1.x +, então não funcionaria no 0.4 por causa dos metamétodos.
-
Fury4i20 deu reputação a Furabio em [TFS 1.x] Sistema de reset
Você pode configurar se quer que o preço aumente a cada reset, se quer que o level pra resetar aumente e se vc quer que a vida resete junto (e quanto % da vida atual será a vida após resetar).
Testado em tfs 1.1, Versão 10.77
Vá em data/npc/lib/ crie npc_resets.lua :
Você pode editar mexendo aqui. no script acima :
config = { minlevel = 150, --- Level inical para resetar price = 10000, --- Preço inicial para resetar newlevel = 20, --- Level após reset priceByReset = 0, --- Preço acrescentado por reset percent = 30, ---- Porcentagem da vida/mana que você terá ao resetar (em relação à sua antiga vida total) maxresets = 50, ---- Maximo de resets levelbyreset = 0 --- Quanto de level vai precisar a mais no próximo reset } agora em data/npc/ crie reseter.XML :
Agora em data/npc/scripts crie reseter.lua :
Img :
-
Fury4i20 deu reputação a Furabio em [TFS 1.x] Weather System
Basicamente é um sistema onde permite chuva e solte raios em determinado local do mapa, use sua criatividade ao usar o sistema.
Features :
Chuva só nos jogadores, para economizar memória do servidor, em vez de enviar todo o mapa. Se não tiver um telhado, vai enviar o efeito dentro do local mesmo. Assim, se você estiver sob um teto, vai enviar para fora do local. Quando água bate no chão, envia o efeito de splash. Efeito do trovão causa dano.
Em global.lua adicione :
weatherConfig = { groundEffect = CONST_ME_LOSEENERGY, fallEffect = CONST_ANI_ICE, thunderEffect = true, minDMG = 5, maxDMG = 10 } function Player.sendWeatherEffect(self, groundEffect, fallEffect, thunderEffect) local position, random = self:getPosition(), math.random position.x = position.x + random(-4, 4) position.y = position.y + random(-4, 4) local fromPosition = Position(position.x + 1, position.y, position.z) fromPosition.x = position.x - 7 fromPosition.y = position.y - 5 local tile, getGround for Z = 1, 7 do fromPosition.z = Z position.z = Z tile = Tile(position) if tile then -- If there is a tile, stop checking floors fromPosition:sendDistanceEffect(position, fallEffect) position:sendMagicEffect(groundEffect, self) getGround = tile:getGround() if getGround and ItemType(getGround:getId()):getFluidSource() == 1 then position:sendMagicEffect(CONST_ME_WATERSPLASH, self) end break end end if thunderEffect and tile then if random(2) == 1 then local topCreature = tile:getTopCreature() if topCreature and topCreature:isPlayer() then position:sendMagicEffect(CONST_ME_BIGCLOUDS, self) doTargetCombatHealth(0, self, COMBAT_ENERGYDAMAGE, -weatherConfig.minDMG, -weatherConfig.maxDMG, CONST_ME_NONE) self:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You were hit by lightning and lost some health.") end end end end modo de uso :
player:sendWeatherEffect(weatherConfig.groundEffect, weatherConfig.fallEffect, weatherConfig.thunderEffect) Em breve vou fazer uns scripts bacana em cima desse sistema, aceito sugestões.
Créditos : Printer.
-
Fury4i20 deu reputação a Furabio em Automatic Znote AAC Shop [TFS 1.0]
Em data/globalevents/globalevents.XML adicione :
<globalevent name="Znote Shop" interval="30000" script="znoteShop.lua"/> Em data/globalevents/scripts/ crie znoteShop.lua :
function onThink(interval, lastExecution) local players = Game.getPlayers() if #players == 0 then -- 0 players online, no need to execute the script return true end local player for i = 1, #players do player = players[i] local orderQuery = db.storeQuery('SELECT `id`, `type`, `itemid`, `count` FROM `znote_shop_orders` WHERE `account_id` = '.. player:getAccountId() ..' LIMIT 1;') if orderQuery then --Lets check if the players online have orderd something from the shop local orderId = result.getDataInt(orderQuery, 'id') local orderType = result.getDataInt(orderQuery, 'type') local orderItemId = result.getDataInt(orderQuery, 'itemid') local orderCount = result.getDataInt(orderQuery, 'count') result.free(orderQuery) if orderType == 1 then if player:addItemEx(Game.createItem(orderItemId, orderCount or 1)) ~= RETURNVALUE_NOERROR or player:getFreeCapacity() < ItemType(orderItemId):getWeight(orderCount or 1) then --Lets check if player have slot or cape left. Else send to player inbox local parcel = player:getInbox():addItem(2596, 1, false, 1) if not parcel then --If not being able to create parcel we stop the script and retry again. print('[ERROR Znote Shop Globalevents] = Error on creating a parcel.') return true end local letter = parcel:addItem(2598, 1, false, 1) letter:setAttribute(ITEM_ATTRIBUTE_TEXT, 'You have received your shop item. Thanks for donating.') parcel:addItem(orderItemId, orderCount or 1, false, 1) end db.query('DELETE FROM `znote_shop_orders` WHERE `id` = '.. orderId ..';') player:sendTextMessage(MESSAGE_INFO_DESCR, 'Congratulations! You have received '.. orderCount ..'x '.. ItemType(orderItemId):getName() ..'!') end end end return true end Créditos Printer.
-
Fury4i20 deu reputação a Furabio em [TFS 1.0/1.1] TP room text/effects
globalevents.xml:
<globalevent name="text" interval="3500" script="text.lua"/> text.lua:
[TFS 1.1]
local effects = { {position = Position(995, 100, 7), text = 'Teleports', effect = CONST_ME_GROUNDSHAKER}, {position = Position(281, 254, 8), text = 'TP Room'}, -- text only {position = Position(307, 254, 1), text = 'Event', effect = CONST_ME_GROUNDSHAKER}, } function onThink(interval) for i = 1, #effects do local settings = effects[i] local spectators = Game.getSpectators(settings.position, false, true, 7, 7, 5, 5) if #spectators > 0 then if settings.text then for i = 1, #spectators do spectators[i]:say(settings.text, TALKTYPE_MONSTER_SAY, false, spectators[i], settings.position) end end if settings.effect then settings.position:sendMagicEffect(settings.effect) end end end return true end Para versões que não utilizam metatable :
local fields = { {x = 995, y = 1000, z = 7, text = "Teleports", eff = CONST_ME_GROUNDSHAKER}, {x = 281, y = 254, z = 8, text = "TP Room"}, -- text only {x = 307, y = 254, z = 15, text = "Event", eff = CONST_ME_GROUNDSHAKER}, } function onThink(interval) for i = 1, #fields do local pos = fields[i] local people = getSpectators(pos, 7, 5, false, true) if people then if pos.text then doCreatureSay(people[1], pos.text, TALKTYPE_ORANGE_1, false, 0, pos) end if pos.eff then doSendMagicEffect(pos, pos.eff) end end end return true end Créditos : zbisu
-
Fury4i20 deu reputação a Furabio em [TFS 1.1] Monster Arena
Descrição : Você precisa de 2 pessoas para este mini-game. Você se posiciona sobre os azulejos e puxa a alavanca. Dentro da arena cada jogador irá receber um montro invocado, que irá, em seguida, atacar o inimigo e o monstro. O jogador mata o outro monstro ganha e será recompensada.
Map:
Mediafire: http://www.mediafire.com/download/qnnqj1rmilmrd5a/monsterarena.otbm
actions.xml
<action actionid="1500" script="monsterarena.lua"/> actions/scripts/monsterarena.lua
MonsterArena = { fromPosition = { Position(1022, 1030, 7), Position(1024, 1030, 7) }, toPosition = { Position(1020, 1021, 7), Position(1022, 1021, 7) }, spawnPosition = { Position(1020, 1022, 7), Position(1022, 1020, 7) }, area = { from = Position(1015, 1016, 7), to = Position(1027, 1026, 7) }, exitPosition = Position(1022, 1028, 7), reward = {itemId = 2160, count = 10}, blockItemId = 3402, -- Only convincable / summonable monsters -- You can create custom monsters which are stronger and convincable monsters = {'Troll', 'Rat', 'Tortoise', 'Orc Berserker', 'Minotaur'}, event = 'MonsterArenaDeath', players = {} } function MonsterArena.hasPlayer(player) local position = player:getPosition() return position.x >= MonsterArena.area.from.x and position.y >= MonsterArena.area.from.y and position.x <= MonsterArena.area.to.x and position.y <= MonsterArena.area.to.y and position.z == MonsterArena.area.from.z end function MonsterArena.isOccupied() for _, pid in ipairs(MonsterArena.players) do local player = Player(pid) if player and MonsterArena.hasPlayer(player) then return true end end return false end function MonsterArena.clean() for i = 1, #MonsterArena.players do MonsterArena.players[i] = nil end end function onUse(player, item, fromPosition, target, toPosition, isHotkey) if item.itemid ~= 1945 then item:transform(1946) return true end if MonsterArena.isOccupied() then player:sendCancelMessage('The monster arena is currently occupied.') return true end local players = {} for _, fromPosition in ipairs(MonsterArena.fromPosition) do local creature = Tile(fromPosition):getTopCreature() if not creature or not creature:isPlayer() then player:sendCancelMessage('You need another player for the monster arena.') return true end table.insert(players, creature) end MonsterArena.clean() local summons = {} for i, player in ipairs(players) do player:teleportTo(MonsterArena.toPosition[i]) MonsterArena.fromPosition[i]:sendMagicEffect(CONST_ME_POFF) MonsterArena.toPosition[i]:sendMagicEffect(CONST_ME_TELEPORT) local monsterName = MonsterArena.monsters[math.random(#MonsterArena.monsters)] local monster = Game.createMonster(monsterName, MonsterArena.spawnPosition[i], true) monster:setMaster(player) monster:registerEvent(MonsterArena.event) table.insert(summons, monster) Game.createItem(MonsterArena.blockItemId, 1, MonsterArena.spawnPosition[i]) player:sendTextMessage(MESSAGE_INFO_DESCR, string.format('A %s is fighting for you this round!', monsterName)) table.insert(MonsterArena.players, player.uid) end players[1]:setTarget(summons[2]) players[2]:setTarget(summons[1]) item:transform(1945) return true end creaturescripts.xml
<event type="death" name="MonsterArenaDeath" script="monsterarenadeath.lua"/> creaturescripts/scripts/monsterarenadeath.lua
function onDeath(monster, corpse, killer, mostDamageKiller, unjustified, mostDamageUnjustified) local winnerPlayer = killer:getMaster() local loserPlayer = monster:getMaster() local reward = MonsterArena.reward if reward then winnerPlayer:sendTextMessage(MESSAGE_INFO_DESCR, 'Your monster won the fight and earned a reward for you!') winnerPlayer:addItem(reward.itemId, reward.count) else winnerPlayer:sendTextMessage(MESSAGE_INFO_DESCR, 'Your monster won the fight!') end loserPlayer:sendTextMessage(MESSAGE_INFO_DESCR, 'Your monster lost the fight!') winnerPlayer:teleportTo(MonsterArena.exitPosition) loserPlayer:teleportTo(MonsterArena.exitPosition) MonsterArena.exitPosition:sendMagicEffect(CONST_ME_MAGIC_BLUE) for _, position in ipairs(MonsterArena.spawnPosition) do local item = Tile(position):getItemById(MonsterArena.blockItemId) if item then item:remove() end end killer:remove() return true end Créditos : Summ
-
Fury4i20 deu reputação a Furabio em [10.76][TFS 1.1] Old MW sprite + timer
Esse script vai mudar a sua mw para a sprite velha e vai funcionar da mesma forma:
movements.xml
<movevent event="StepIn" itemid="8753" script="mwstep.lua"/> mwstep.lua
function onStepIn(creature, item, position, fromPosition) removeMw(creature:getPosition(), 8753, 1027) return true end \data\spells\scripts\support\magic wall rune.lua
substituir o que tem dentro por :
local id = 8753 local combat = Combat() combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY) combat:setParameter(COMBAT_PARAM_CREATEITEM, id) function tile_timer(id, pos, delay, color) if getTileItemById(pos, id).uid == 0 then return true end if delay ~= 1 then addEvent(tile_timer, 1000, id, pos, delay - 1, color) end local people = Game.getSpectators(pos, 7, 7, 5, 5, false, true) if not people then return true end for i = 1, #people do people[i]:sendTextMessage(MESSAGE_EXPERIENCE, "Magic wall will disappear in " .. delay .. " second" .. (delay > 1 and "s" or "") .. ".", pos, delay, color) end end function removeMw(pos, mw, wall) local tile = Tile(pos) mw = tile:getItemById(mw) wall = tile:getItemById(wall) if mw then mw:remove() end if wall then wall:remove() end end function onCastSpell(creature, var, isHotkey) local c = combat:execute(creature, var) if c then local pos = variantToPosition(var) local wall = Game.createItem(1027, 1, pos) addEvent(removeMw, 20000, pos, id, wall:getId()) tile_timer(id, pos, 20, TEXTCOLOR_LIGHTBLUE) end return c end opcional :
\data\spells\scripts\support\wild growth rune.lua
substituir por :
local id = ITEM_WILDGROWTH local combat = Combat() combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTH) combat:setParameter(COMBAT_PARAM_CREATEITEM, id) function onCastSpell(creature, var, isHotkey) local c = combat:execute(creature, var) if c then local pos = variantToPosition(var) addEvent(removeMw, 40000, pos, id) tile_timer(id, pos, 40, TEXTCOLOR_LIGHTGREEN) end return c end Créditos: zbizu.
-
Fury4i20 deu reputação a Furabio em [TFS 1.1] Recompensa ao avançar de level
creaturescripts.xml
<event type="advance" name="onadvance_reward" script="onadvance_reward.lua"/> <event type="login" name="onadv_register" script="onadvance_reward.lua"/> onadvance_reward.lua
local rewards = { [SKILL_SWORD] = { {lvl = 150, items = {{2160, 2}, {2148, 1}}, storage = 54776}, {lvl = 160, items = {{2365, 2}}, storage = 54777} }, [SKILL_MAGLEVEL] = { {lvl = 100, items = {{2365, 2}}, storage = 54778}, }, [SKILL_LEVEL] = { {lvl = 480, items = {{2152, 2}}, storage = 54779}, }, } function onAdvance(player, skill, oldlevel, newlevel) local rewardstr = "Items received: " local reward_t = {} if rewards[skill] then for j = 1, #rewards[skill] do local r = rewards[skill][j] if not r then return true end if newlevel >= r.lvl then if player:getStorageValue(r.storage) < 1 then player:setStorageValue(r.storage, 1) for i = 1, #r.items do local itt = ItemType(r.items[i][1]) if itt then player:addItem(r.items[i][1], r.items[i][2]) table.insert(reward_t, itt:getName() .. (r.items[i][2] > 1 and " x" .. r.items[i][2] or "")) end end end end end if #reward_t > 0 then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, rewardstr .. table.concat(reward_t, ", ")) end end return true end function onLogin(player) player:registerEvent("onadvance_reward") return true end
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.