Histórico de Curtidas
-
Blackmotion recebeu reputação de kiyumedd em (Resolvido)[URGENTE] Player Não Salva Erro MYSQL [SOccorro ajuda]Execute todos os comandos abaixo no seu phpmyadmin :
ALTER TABLE `players` ADD `cast` VARCHAR(255) not null default ''; ...
DROP TABLE IF EXISTS `bans`; CREATE TABLE `bans` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `type` tinyint(1) NOT NULL COMMENT '1 - ip banishment, 2 - namelock, 3 - account banishment, 4 - notation, 5 - deletion', `value` int(10) unsigned NOT NULL COMMENT 'ip address (integer), player guid or account number', `param` int(10) unsigned NOT NULL DEFAULT '4294967295' COMMENT 'used only for ip banishment mask (integer)', `active` tinyint(1) NOT NULL DEFAULT '1', `expires` int(11) NOT NULL, `added` int(10) unsigned NOT NULL, `admin_id` int(10) unsigned NOT NULL DEFAULT '0', `comment` text NOT NULL, `reason` int(10) unsigned NOT NULL DEFAULT '0', `action` int(10) unsigned NOT NULL DEFAULT '0', `statement` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `type` (`type`,`value`), KEY `active` (`active`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; ...
DROP TABLE IF EXISTS `player_depotitems`; CREATE TABLE `player_depotitems` ( `player_id` int(11) NOT NULL, `sid` int(11) NOT NULL COMMENT 'any given range, eg. 0-100 is reserved for depot lockers and all above 100 will be normal items inside depots', `pid` int(11) NOT NULL DEFAULT '0', `itemtype` int(11) NOT NULL, `count` int(11) NOT NULL DEFAULT '0', `attributes` blob NOT NULL, UNIQUE KEY `player_id_2` (`player_id`,`sid`), KEY `player_id` (`player_id`), CONSTRAINT `player_depotitems_ibfk_1` FOREIGN KEY (`player_id`) REFERENCES `players` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1; Algumas pessoas conseguiram resolver o problema com esse método
-
Blackmotion deu reputação a Wise em (Resolvido)Script de Transform [Me explique!]Sinceramente, que dor de cabeça ver esse spoiler.
Me explica o que você quer que aconteça, como acontece esse "transform", que eu vejo se posso fazer de forma simplificada.
E informe a versão do servidor e do distro, se possível.
-
Blackmotion recebeu reputação de Lord Hades em (Resolvido)[RME] Falha ao localizar tibia.dat e tibia.spr no Tibia 10.53Primeiramente esse numero dat="0x54128727" spr="0x54128755" você tem que abrir o .dat e o.srp no HexEditor pra pegar ...
Pra abrir o seu rme 10.53 baixar esse rme aqui >https://mega.co.nz/#!e1NzxQAR!bAUuZ8mDzh4G-3vur9pxHovpwvqPqGu79G2x7Nln6l8<
dps que abri-lo vai pedir pra localizar o .dat e .spr do 10.55 você seleciona a pasta com tal arquivos, se não tiver, baixa um client 10.55 qualquer por aew, dps só ir em Open e procurar seu mapa 10.53 e abri-lo, sem problemas
-
Blackmotion deu reputação a Danihcv em Logo ThunderCoreAssim está bom?
-
Blackmotion deu reputação a Danihcv em Logo ThunderCoreAssim?
Eu diminuí o brilho de todos os entalhes na vdd. Tava achando mt claro no geral.
-
Blackmotion deu reputação a Beeny em Seção -- ResolvidosOlá.
Bem, eu estou aqui para pedir que vocês deem um pouco de atenção para a seção designer do fórum.
Não é que ela esteja "abandonada" tem vários tópicos lá .. vamos dizer que o problema começa aí ..
Quando o pedido é resolvido, ele fica lá na seção de pedidos, não vai para nenhum outro lugar .. :<
Vamos dar um exemplo :
Eu atendi esses 6 pedidos nos últimos dias :
1
2
3
4
5
6
E eles ficaram lá, parados
Acredito que se tivesse uma seção de resolvidos lá, ia ficar bem mais organizado e bonito!
Abraços !!
-
Blackmotion deu reputação a Caronte em Lib 000-ConstOlá pessoal, venho mais uma vez trazer um tutorial simples, e tentar explicar tudo claramente, esse tutorial pode ficar grande dependendo do desenrolar dele, pois é um pack de tutoriais, então vou usar spoilers para ajudar na formatação do tópico.
Nota: as informações usadas abaixo, podem ser tanto usadas com o nome, quanto com o número, e podem ser encontradas na pasta lib no arquivo 000-const
https://pastebin.com/0FfPcg7y
line4
Coordenadas:
Tutorial feito e formatado por Caronte o + gato do fórum, avaliações do perfil são bem-vindas.
Explicando:
doMoveCreature(cid, direction): Serve para mover tanto o player quanto o monstro.
Combate:
Tutorial feito e formatado por Caronte o + gato do fórum, avaliações do perfil são bem-vindas.
Parâmetros de condição:
Condições:
Slots:
Tutorial feito e formatado por Caronte o + gato do fórum, avaliações do perfil são bem-vindas.
Participação: xWhiteWolf
Const_ani e Const_me:
Tutorial feito e formatado por Caronte o + gato do fórum, avaliações do perfil são bem-vindas.
Talktypes and message types:
[title][/title]
Tutoriais concluídos por ordem de formatação (podem ser alterados assim mesmo):
Coordenadas, e suas direções. Combat (ainda há coisas a serem adicionadas). Slots. CONST_ME and CONST_ANI
Os assuntos do tópico poderão se diminuídos ou aumentados de acordo com o desenrolar do tempo,
gostaria de apoio, e não me incomodaria se alguém se propusesse fazer algum tutorial, eles serão supervisionados por mim e formatados por mim, para serem postados neste tópico.
Esse tópico demorou e vai demorar muito para fazer
cada tutorial, então eu não me importo com um obrigado e REP+,
OBS.: Um obrigado vale bem mais do que um REP+
-
Blackmotion recebeu reputação de f..silva em (Resolvido)[Pedido] Npc Teleport com LevelNão testei sou novo nesses bang de script ...
carlos.lua
local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end local cfg = { toPos = {x=1789, y=3667, z=7}, -- Posição level = 50, -- Level necessário price = 30 -- Dinheiro cobrado } function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'travel') then selfSay('You are sure you want to go?', cid) talkState[talkUser] = 1 elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then if getPlayerLevel(cid) >= cfg.level then if doPlayerRemoveMoney(cid, cfg.price) then doTeleportThing(cid, cfg.toPos) talkState[talkUser] = 0 else selfSay('You don\'t have enough money.', cid) end else selfSay('You need level having above '.. cfg.level ..'.', cid) end elseif msgcontains(msg, 'no') then selfSay('bye', cid) end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) carlos.xml
<?xml version="1.0" encoding="UTF-8"?> <npc name="Carlos" script="data/npc/scripts/carlos.lua" walkinterval="25" floorchange="0" access="5" level="1" maglevel="1"> <health now="150" max="150"/> <look type="128" head="114" body="12" legs="57" feet="114" addons="0" /> <parameters> <parameter key="message_greet" value="Hello, |PLAYERNAME|! Would like to {travel} ?"/> <parameter key="message_walkaway" value="Hey, where you go ?"/> <parameter key="message_farewell" value="Bye!"/> </parameters> </npc> #Edit
-
Blackmotion recebeu reputação de linhhares em (Resolvido)[Pedido] Npc Teleport com LevelNão testei sou novo nesses bang de script ...
carlos.lua
local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end local cfg = { toPos = {x=1789, y=3667, z=7}, -- Posição level = 50, -- Level necessário price = 30 -- Dinheiro cobrado } function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'travel') then selfSay('You are sure you want to go?', cid) talkState[talkUser] = 1 elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then if getPlayerLevel(cid) >= cfg.level then if doPlayerRemoveMoney(cid, cfg.price) then doTeleportThing(cid, cfg.toPos) talkState[talkUser] = 0 else selfSay('You don\'t have enough money.', cid) end else selfSay('You need level having above '.. cfg.level ..'.', cid) end elseif msgcontains(msg, 'no') then selfSay('bye', cid) end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) carlos.xml
<?xml version="1.0" encoding="UTF-8"?> <npc name="Carlos" script="data/npc/scripts/carlos.lua" walkinterval="25" floorchange="0" access="5" level="1" maglevel="1"> <health now="150" max="150"/> <look type="128" head="114" body="12" legs="57" feet="114" addons="0" /> <parameters> <parameter key="message_greet" value="Hello, |PLAYERNAME|! Would like to {travel} ?"/> <parameter key="message_walkaway" value="Hey, where you go ?"/> <parameter key="message_farewell" value="Bye!"/> </parameters> </npc> #Edit
-
Blackmotion recebeu reputação de kaleudd em (Resolvido)Muitas Duvidas GesiorSuas perguntas são alguém que pelo menos nem tentou fazer sozinho... vê esse vídeo(3 da suas perguntas serão resolvidas) :
Só que baixa esse > XAMPP < ...
E no lugar do gesior se baixa um website de Poketibia... na seção de download de websites tem várias ... (ai a sua ultima pergunta está resolvida também);
-
Blackmotion recebeu reputação de Lord Hades em Gesior 1.0 Moderado Por Min -V1desculpe-me viajei aqui HAUSHAUHSHUA
ALTER TABLE `players` ADD `cast` tinyint(4) NOT NULL DEFAULT '0' -
Blackmotion deu reputação a Beeny em que bem loco esse admin voltandohttp://www.tibiaking.com/forum/topic/48839-pedido-preciso-de-5-imagens/?p=283424
cara me deu rep- pq eu pedi pro mlk fazer o pedido direito, oasheoashsoah
e não, eu não ligo pra rep
é mais pela ação do grande administrador que está voltando
-
Blackmotion deu reputação a Raell5 em O TK quer você!Só que, tem muitos "Individuos" que, somente entram para equipe por Status ou REP+ e este não e o espirito creio eu.
Também não e por tempo, que se entra na equipe assim magina nego de 2010 todos agora na equipe.
E outra, tem muitos que pegão mapas e scripts e colocam seus nomes por cima de trabalhos bem feitos.
e ainda poem nome ou "edited by MAX2020" não e por ai que se pensa em entrar na equipe pegando mapas e scripts de grandes membros.
-
Blackmotion recebeu reputação de cliverson em (Resolvido)Preciso muito da sua AJUDA! Compra IN-GAME.9693 é o id do baú ?
vou tentar fazer aqui sou novo em script, mas vou ver o que da pra fazer
-
Blackmotion recebeu reputação de Jonnieh em (Resolvido)Erro Shiny Stone.lualocal evo = { ["Alakazam"] = {"Shiny Alakazam", 1}, ["Blaziken"] = {"Shiny Blaziken", 1}, ["Charizard"] = {"Shiny Charizard", 1}, ["Tyranitar"] = {"Shiny Tyranitar", 1}, ["Ninetales"] = {"Shiny ninetales", 1}, ["Scyther"] = {"Shiny Scyther", 1}, ["Arcanine"] = {"Shiny Arcanine", 1}, ["Blastoise"] = {"Shiny Blastoise", 1}, ["Onix"] = {"Shiny Onix", 1}, ["Snorlax"] = {"Shiny Snorlax", 1}, ["Golbat"] = {"Shiny Golbat", 1}, ["Crobat"] = {"Shiny Crobat", 1}, ["Muk"] = {"Shiny Muk", 1}, ["Dragonair"] = {"Shiny Dragonair", 1}, ["Marowak"] = {"Shiny Marowak", 1}, } local balls = { [2394] = {newBall = 2394}, [2391] = {newBall = 2391}, [2393] = {newBall = 2393}, [2392] = {newBall = 2392}, [12832] = {newBall = 12832}, } function onUse(cid, item, fromPosition, itemEx, toPosition) if isMonster(itemEx.uid) and getCreatureMaster(itemEx.uid) == cid then local monster = getCreatureName(itemEx.uid) if evo[monster] then if getPlayerItemCount(cid, item.itemid) >= evo[monster][2] then doPlayerSendTextMessage(cid, 27, "Parabens! Seu "..getPokeName(itemEx.uid).." evoluiu para "..evo[monster][1].."!") local health, maxHealth = getCreatureHealth(itemEx.uid), getCreatureMaxHealth(itemEx.uid) doSendMagicEffect(getThingPos(itemEx.uid), 18) doRemoveCreature(itemEx.uid) doPlayerRemoveItem(cid, item.itemid, evo[monster][2]-1) doRemoveItem(item.uid, 1) doSummonMonster(cid,evo[monster][1]) local pokeball = getPlayerSlotItem(cid, 8) doItemSetAttribute(pokeball.uid, "poke", evo[monster][1]) doItemSetAttribute(pokeball.uid, "level", pokes[evo[monster][1]].level) doItemSetAttribute(ball, "hp", 1) doItemSetAttribute(ball, "happy", 110) local pk = getCreatureSummons(cid)[1] local getShinyPokeballs = balls[getPlayerSlotItem(cid, 8).itemid] doTransformItem(getPlayerSlotItem(cid, 8).uid, getShinyPokeballs.newBall) adjustStatus(pk, pokeball.uid, true, false, true) return TRUE else return doPlayerSendTextMessage(cid, 27, "You need atleast ".. evo[monster][2] .." stones to do it!") end end end return FALSE end
-
Blackmotion deu reputação a Orochi Elf em [C++] Pokemon Ghost System[C++] Pokemon Ghost System
Fala galera do TibiaKing, hoje eu venho postar pra vocês um conteúdo que particularmente eu acho muito bom.
Esse sistema faz com que o pokemon cuja o nome seja "Gastly, Haunter ou Gengar" (é possível adicionar mais pokemons), passe por dentro das paredes.
Instalação:
Vá em creature.cpp, e procure por
void Creature::getPathSearchParams(const Creature* creature, FindPathParams& fpp) const { fpp.fullPathSearch = !hasFollowPath;
E abaixo adicione:
if(creature->isPlayerSummon()) { if(!creature->getMaster()->hasCondition(CONDITION_INFIGHT)) { if(creature->getName() == "Gengar") fpp.clearSight = false; if(creature->getName() == "Haunter") fpp.clearSight = false; if(creature->getName() == "Gastly") fpp.clearSight = false; } }
Espero que façam bom uso
Créditos:
Tony Araújo (OrochiElf)
-
Blackmotion deu reputação a Danihcv em [TUTORIAL] Resolvendo qualquer erro na data baseOpa, galerinha do TK, pro meu primeiro tutorial resolvi fazer uma solução de um problema que desde que cheguei no TK, vejo que ocorre com uma certa frequência. Os erros da data base.
Neste tutorial vou ensinar a resolver os erros do tipo No such table, Insert into, No such column, ... has no column named... etc.
1°) NO SUCH TABLE
Bom, para o erro No such table, basta vc visualizar qual table está faltando. Para isso basta ler o erro na distro:
No caso da imagem, está faltando a table: player_statements
Para resolver este e qualquer outro problema deste tipo, caso sua data base seja sqlite,
basta abrir sua data base pelo Sqlite Studio(download: http://sqlitestudio.pl/?act=download) e clicar em Open SQL query editor:
Mas caso sua data base seja Mysql abra pelo phpMyadmin, ou por outro editor de sua preferencia.
1.1°) EXECUTANDO OS COMANDOS PARA RESOLVER O PROBLEMA
Bom, dependendo da table que estiver faltando, vc irá colocar seu respectivo comando, segue abaixo TODOS os comandos básicos necessários para que sua data base fique Ok! : (VC VAI PEGAR O COMANDO REFERENTE À TABLE QUE VC QUER!!!)
account_viplist
Sqlite
accounts
Sqlite
bans
Sqlite
environment_killers
Sqlite
global_storage
Sqlite
guild_invites
Sqlite
guild_kills
Sqlite
guild_ranks
Sqlite
guild_wars
Sqlite
guilds
Sqlite
house_auctions
Sqlite
house_data
Sqlite
house_lists
Sqlite
houses
Sqlite
killers
Sqlite
market_history
Sqlite
market_offers
Sqlite
player_deaths
Sqlite
player_depotitems
Sqlite
player_inboxitems
Sqlite
player_items
Sqlite
player_killers
Sqlite
player_namelocks
Sqlite
player_skills
Sqlite
player_spells
Sqlite
player_statements
Sqlite
player_storage
Sqlite
player_viplist
Sqlite
players
Sqlite
server_config
Sqlite
server_motd
Sqlite
server_record
Sqlite
server_reports
Sqlite
tile_items
Sqlite
tile_store
Sqlite
tiles
Sqlite
announcements
Sqlite
pagsegurotransacoes
Sqlite
player_advances
Sqlite
reports
Sqlite
thanks
Sqlite
z_bug_logs
Sqlite
z_featured_article
Sqlite
z_forum
Sqlite
z_helpdesk
Sqlite
z_monsters
Sqlite
z_network_box
Sqlite
z_news_tickers
Sqlite
z_ots_comunication
Sqlite
z_polls
Sqlite
z_polls_answers
Sqlite
z_poll_votes
Sqlite
z_shop_history_item
Sqlite
z_shop_history_pacc
Sqlite
z_shop_offer
Sqlite
z_spells
Sqlite
z_news_big
Sqlite
2°) No such column / "NOME DA TABLE" has no column named "NOME DA COLUMN QUE FALTA" / Insert into
Bom, para resolver esse problema vc deve identificar em qual TABLE está essa coluna que falta. Para isso, basta ler o erro como na imagem:
No caso da imagem, está faltando a column WORLD_ID dentro da table MARKET_OFFERS. Para resolver, vc deve executar excluir a sua table MARKET_OFFERS existante em sua data base, e em seguida, executar o domando da da market_offers, encontrado acima, logicamente isso só se aplica ao caso da imagem, depende do seu caso, vc deve excutar o comando da table que estiver sendo referida no erro. Mas antes de executá-lo vc deve excluir a sua table EXISTENTE, para então executar o comando.
ESTA FORMA DE RESOLUÇÃO SE APLICA AOS TRÊS CASOS: NO SUCH COLUMN, ...HAS NO COLUMN NAMED... e INSERT INTO.
Bom galera, é isso.
SE ENCONTRAREM, OU SE DEPARAREM COM ALGUM ERRO, BASTA ME PEDIR AJUDA QUE EU DAREI TOTAL SUPORTE PARA VOCÊS!
SE ESTIVR FALTANDO MAIS ALGUMA TABLE QUE EU NÃO COLOQUEI AQUI, PF ME INFORMEM E EU ATUALIZAREI O TÓPICO!!!
Lembrem-se, se eu te ajudei, por favor, deem REP++ pois foi meio trabolhoso fazer este tutorial todo...
ESTOU A DISPOSIÇÃO DE TODOS! Tanto por PM quanto por SKYPE, e até mesmo por aqui, pois vou checar este tópico regularmente!!
Espero ter ajudado!!
Abraços.
-
Blackmotion recebeu reputação de xmaster0 em Com sources tudo é possivel?se tu souber programar tudo é possível, a pergunta é se tu é capaz de fazer isso
-
Blackmotion deu reputação a Beeny em O TK quer você!acho que todo mundo já sabia disso
anyway
-
Blackmotion deu reputação a GOD Falumir em TFS 3884 - 8.6 - War System - (Anti SALT) - MUITO ESTÁVELFinalmente galera consegui resolver o problema do salt, muitas pessoas estavam com este problema, pesquisei bem por horas e finalmente encontrei a solução, para quem estava com o problema do Account Manager criar conta e não logar no gesior e vice versa, agora está resolvido .. obs: usem o sistema SHA1. Para quem tentou esse sistema: http://www.tibiaking.com/forum/topic/40463-distro-tfs-04-ant-dv-war-system-no-otbm-check-no-gerar-salt-acc-manager-pega-junto-com-site-em-sha1/ , E NÃO Conseguiu resolver, está é a solução.
AVISO: Deu trabalho para fazer, se puderem me ajudar com +REP irei agradecer.
TFS compatível com baiaks e outros servidores estando 100% estável, estou postando a TFS PRONTA para uso e também está incluso as Sources para quem quiser compilar.
NÃO SE ESQUEÇAM DO +REP, ESPERO TER AJUDADO.
DOWNLOAD: (SEM WAR SYSTEM MAS PODE SER COMPILADO) SOURCES+EXECUTÁVEL
http://www.4shared.com/rar/1UkZ4SFaba/TFS_86_-_War_System_e_Anti_SAL.html?
SOMENTE EXECUTÁVEL COMPILADO COM WAR SYSTEM E ANTI SALT
http://www.4shared.com/rar/4KijpSs0ba/TheForgottenServer.html?
SCAN:
https://www.virustotal.com/sv/file/9ac2a228444c7d5b08f42d657ee5a82a9963a7674cde58e2b8b5c25dd40cadf8/analysis/1417440333/
-
Blackmotion recebeu reputação de Azinhawk em (Resolvido)Featured article (help)posta seu latestnews.php aqui
-
Blackmotion deu reputação a Yugami em [Script Spell] Dai Kamuinão sou um script nem nada,mas mesmo assim ja consigui arruma muintas spells minhas pra ficar do geito que eu gosto entretanto ainda to Iniciante,mas eu tinha um Spell aki chamda "Kamui Me" e arrumei ela,para só levar o target a tal de "Dai Kamui" que augums dos Cara do TK estão atras,segue o tutorial abaixo.
Va em Pasta Do Ot/Data/Spells e Abra o Spells.xml e add éssa tag.
<instant name="Dai Kamui" words="Dai kamui" lvl="225" mana="10000" aggressive="1" exhaustion="2000" needtarget="1" range="7" needlearn="0" event="script" value="kamui prision.lua"> <vocation id="76"/> <vocation id="77"/> </instant> apóis adiciona click CTRL+S para salva e feche,agora vai em Pasta Do Ot/Data/Spells/Scripts copie qualquer arquivo.lua e adicione isso abaixo.
function onCastSpell(cid, var) local Tile1 = {x=1566, y=1293, z=7} -- para onde o player é teleportado local from1,to1 = {x=1509, y=1259, z=7},{x=1509, y=1255, z=7} -- ponto 1 ao ponto 2 de onde ele sera levado. local pos = getCreaturePosition(cid) local target = getCreatureTarget(cid) local targetpos = getCreaturePosition(target) local time = 30 -- tempo para voltar em segundos local exausted = 5 -- tempo em minutos que vai ficar sem usa a spell(se não quiser exausted deixe "0") if isInRange(pos, from1, to1) then doPlayerSendCancel(cid, "Você nao pode usar o Kamui aqui!") return FALSE end local function Teleport_Target(target) doTeleportThing(target, targetpos) end if isPlayer(cid) and getPlayerAccess(cid) < 3 and getPlayerStorageValue(cid, 17457)-os.time() > 1 then local seetime = getPlayerStorageValue(cid, 17457)-os.time() local minutes, seconds = math.floor(seetime/60), math.floor(seetime%60) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Aguarde "..minutes.." minuto(s) e "..seconds.." segundo(s) para usar novamente!") return false end if isPlayer(target) then doTeleportThing(target, Tile1) doSendMagicEffect(targetpos, 196) addEvent(Teleport_Target, time*1000, target) doCreatureSay(cid, "Dai Kamui", TALKTYPE_MONSTER) setPlayerStorageValue(cid, 17457, exausted*60+os.time()) else doPlayerSendCancel(cid, "Voce so pode usar esta magia em players!") end end
Até Onde eu sei 100% dos creditos é meu!!
-
Blackmotion deu reputação a Smart Maxx em [GlobalEvents] Perfect Zombie Event 100% automaticoPrimeiramente o evento foi testado num servidor 8.6, TFS 0.4, sem apresentar nenhum problema.
Em data/creaturescripts/scripts crie o arquivo zombieevent.lua :
local config = { playerCount = 2001, -- Storage dos players que entram e sai do evento goblet = 5805, -- Troféu que vai pro vencedor do evento rewards = {2195, 2152, 2160}, -- Recompensas. moneyReward = {2160, 10, 1}, -- {moneyId, quantidade, usar}1 pra usar 0 pra não usar} -- Area que o zumbi vai spawnar fromPosition = {x = 543, y = 578, z = 7}, -- top de fromPosition até toPosition = {x = 577, y = 600, z = 7} -- em baixo toPostion } function onStatsChange(cid, attacker, type, combat, value) if isPlayer(cid) and isMonster(attacker) then if isInArea(getPlayerPosition(cid), config.fromPosition, config.toPosition) then if getGlobalStorageValue(config.playerCount) >= 2 then doBroadcastMessage(getPlayerName(cid) .. " have been eated by Zombies!", MESSAGE_STATUS_CONSOLE_RED) local corpse = doCreateItem(3058, 1, getPlayerPosition(cid)) doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT) setGlobalStorageValue(config.playerCount, getGlobalStorageValue(config.playerCount)-1) elseif getGlobalStorageValue(config.playerCount) == 1 then if isInArea(getPlayerPosition(cid), config.fromPosition, config.toPosition) then doBroadcastMessage(getPlayerName(cid) .. " won the Zombie event! Congratulations!", MESSAGE_STATUS_WARNING) local goblet = doPlayerAddItem(cid, config.goblet, 1) doItemSetAttribute(goblet, "description", "Awarded to " .. getPlayerName(cid) .. " for winning the Zombie event.") local corpse = doCreateItem(3058, 1, getPlayerPosition(cid)) doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT) for _,items in ipairs(config.rewards) do doPlayerAddItem(cid, items, 1) end if config.moneyReward[3] == 1 then doPlayerAddItem(cid, config.moneyReward[1], config.moneyReward[2]) end end for x = config.fromPosition.x, config.toPosition.x do for y = config.fromPosition.y, config.toPosition.y do for z = config.fromPosition.z, config.toPosition.z do areapos = {x = x, y = y, z = z, stackpos = 253} getMonsters = getThingfromPos(areapos) if isMonster(getMonsters.uid) then doRemoveCreature(getMonsters.uid) end end end end end return false end end return true end Na mesma pasta em login.lua antes do ultimo return true adicione :
registerCreatureEvent(cid, "zombieevent") Agora em data/creaturescripts adicione em creturescripts.XML :
<!-- ZOMBIE EVENT --> <event type="statschange" name="zombieevent" event="script" value="zombieevent.lua"/> Agora vamos em data/monster crie uma pasta com o nome ZombieEvent e dentro dessa pasta crie o arquivo chamado event zombie.XML :
<?xml version="1.0" encoding="UTF-8"?><monster name="Event Zombie" nameDescription="an event zombie" race="undead" experience="280" speed="100" manacost="0"> <health now="500" max="500"/> <look type="311" corpse="9875"/> <targetchange interval="5000" chance="50"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="0"/> <flag attackable="0"/> <flag hostile="1"/> <flag illusionable="0"/> <flag convinceable="0"/> <flag pushable="0"/> <flag canpushitems="1"/> <flag canpushcreatures="1"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="0"/> </flags> <attacks> <attack name="melee" interval="2000" min="-35000" max="-35000"/> </attacks> <defenses armor="15" defense="10"/> <immunities> <immunity paralyze="1"/> <immunity invisible="1"/> </immunities> <voices interval="5000" chance="10"> <voice sentence="You wont last long!"/> <voice sentence="Mmmmh.. braains!"/> </voices> <loot> <item id="2148" countmax="1" chance="100000"/><!-- gold coin --> </loot> </monster> voltando pra pasta data/monster abra o arquivo monsters.XML e adicione :
<!-- ZombieEvent --> <monster name="event zombie" file="ZombieEvent/event zombie.xml"/> tudo ok até aqui ... então vamos pra pasta data/movements/scripts crie zombieevent.lua :
local config = { playerCount = 2001, -- Storage do players do evento maxPlayers = 20, -- Maximo de players pra partiparem do evento minLevel = 17 -- Level minimo pra entrar no evento } function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if getPlayerLevel(cid) < config.minLevel then addEvent(tpBack, 1000, cid, fromPosition) doPlayerSendCancel(cid, "You need to be at least level " .. config.minLevel .. ".") return false end if getGlobalStorageValue(config.playerCount) < config.maxPlayers then setGlobalStorageValue(config.playerCount, getGlobalStorageValue(config.playerCount)+1) if getGlobalStorageValue(config.playerCount) == config.maxPlayers then doBroadcastMessage("The Zombie event is now full [" .. getGlobalStorageValue(config.playerCount) .. " players]! The event will soon start.") else doBroadcastMessage(getPlayerName(cid) .. " entered the Zombie event! Currently " .. getGlobalStorageValue(config.playerCount) .. " players have joined!", MESSAGE_STATUS_CONSOLE_RED) end else addEvent(tpBack, 1000, cid, fromPosition) doPlayerSendCancel(cid, "The event is full. There is already " .. config.maxPlayers .. " players participating in the quest.") return false end print(getStorage(config.playerCount) .. " Players in the zombie event.") return true end function tpBack(cid, fromPosition) doTeleportThing(cid, fromPosition, true) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT) end voltando pra data/movements abra o arquivo movements.XML e adicione :
<!-- ZOMBIE event --> <movevent type="StepIn" actionid="2008" event="script" value="zombieevent.lua"/> agora vamos pra parte mais importante e que devemos mais prestar atenção...
em data/globalevents/scripts crie zombieevent.lua :
local config = { semana_mes = "semana", days = {1,2,3,4,5,6,7}, -- Dia das semanas que irá acontecer o evento goblet = 5805, -- Troféu que vai pro vencedor do evento rewards = {2195, 2152, 2160}, -- Recompensas. moneyReward = {2160, 10, 1},-- {moneyId, quantidade, usar}1 pra usar 0 pra não usar} playerCount = 2001, -- Storage dos players que entram e sai do evento zombieCount = 2002, -- Storage do zombie do event teleportActionId = 2008, -- Action ID do teleport teleportPosition = {x = 652, y = 1020, z = 7, stackpos = 1}, -- Onde o teleport é criado teleportToPosition = {x = 559, y = 589, z = 7}, -- Pra onde será teleportado teleportId = 1387, -- ID do teleporte timeToStartEvent = 2, -- Minutos que o portal irá ficar aberto até os player entrarem timeBetweenSpawns = 20, -- Segundos dps do evento ser startado começarem a aparecer os zombie zombieName = "event zombie", -- Nome do zombie sumonado playersNeededToStartEvent = 3, -- Players necessários pro evento ser iniciado -- Area que o zumbi vai spawnar fromPosition = {x = 543, y = 578, z = 7}, -- top de fromPosition até toPosition = {x = 577, y = 600, z = 7} -- -- em baixo toPostion } function onTime() local time = os.date("*t") if (config.semana_mes == "semana" and isInArray(config.days,time.wday)) or (config.semana_mes == "mes" and isInArray(config.days,time.day)) or config.semana_mes == "" then local tp = doCreateTeleport(config.teleportId, config.teleportToPosition, config.teleportPosition) doItemSetAttribute(tp, "aid", config.teleportActionId) doBroadcastMessage("Zombie event starting in " .. config.timeToStartEvent .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING) setGlobalStorageValue(config.playerCount, 0) setGlobalStorageValue(config.zombieCount, 0) addEvent(startEvent, config.timeToStartEvent * 1000 * 60) end return TRUE end function startEvent() local fromp, top = config.fromPosition, config.toPosition if getGlobalStorageValue(config.playerCount) >= config.playersNeededToStartEvent then addEvent(spawnZombie, config.timeBetweenSpawns * 1000) doBroadcastMessage("Good luck in the zombie event people! The teleport has closed!", MESSAGE_STATUS_WARNING) for x = fromp.x, top.x do for y = fromp.y, top.y do for z = fromp.z, top.z do areapos = {x = x, y = y, z = z, stackpos = 253} getPlayers = getThingfromPos(areapos) if isPlayer(getPlayers.uid) then doPlayerSendTextMessage(getPlayers.uid, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. config.timeBetweenSpawns .. " seconds! Good luck!") pvgaylord() end end end end else doBroadcastMessage("The Zombie event could not start because of to few players participating.\n At least " .. config.playersNeededToStartEvent .. " players is needed!", MESSAGE_STATUS_WARNING) for x = fromp.x, top.x do for y = fromp.y, top.y do for z = fromp.z, top.z do areapos = {x = x, y = y, z = z, stackpos = 253} getPlayers = getThingfromPos(areapos) if isPlayer(getPlayers.uid) then doTeleportThing(getPlayers.uid, getTownTemplePosition(getPlayerTown(getPlayers.uid)), false) doSendMagicEffect(getPlayerPosition(getPlayers.uid), CONST_ME_TELEPORT) end end end end end end function spawnZombie() if getGlobalStorageValue(config.playerCount) >= 2 then pos = {x = math.random(config.fromPosition.x, config.toPosition.x), y = math.random(config.fromPosition.y, config.toPosition.y), z = math.random(config.fromPosition.z, config.toPosition.z)} doSummonCreature(config.zombieName, pos) doSendMagicEffect(pos, CONST_ME_MORTAREA) setGlobalStorageValue(config.zombieCount, getGlobalStorageValue(config.zombieCount)+1) doBroadcastMessage("A zombie has spawned! There is currently " .. getGlobalStorageValue(config.zombieCount) .. " zombies in the zombie event!", MESSAGE_STATUS_CONSOLE_RED) addEvent(spawnZombie, config.timeBetweenSpawns * 1000) else local fromp, top = config.fromPosition, config.toPosition for x = fromp.x, top.x do for y = fromp.y, top.y do for z = fromp.z, top.z do areapos = {x = x, y = y, z = z, stackpos = 253} cid = getThingfromPos(areapos).uid if isPlayer(cid) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false) doBroadcastMessage(getCreatureName(cid)..' has survived at zombie event!') for _,items in ipairs(config.rewards) do doPlayerAddItem(cid, items, 1) end if config.moneyReward[3] == 1 then doPlayerAddItem(cid, config.moneyReward[1], config.moneyReward[2]) end doBroadcastMessage(getPlayerName(cid) .. " won the Zombie event! Congratulations!", MESSAGE_STATUS_WARNING) local goblet = doPlayerAddItem(cid, config.goblet, 1) doItemSetAttribute(goblet, "description", "Awarded to " .. getPlayerName(cid) .. " for winning the Zombie event.") elseif isMonster(cid) then doRemoveCreature(cid) end end end end end end function pvgaylord() local fromp, top, p, m = config.fromPosition, config.toPosition, 0, 0 for x = fromp.x, top.x do for y = fromp.y, top.y do for z = fromp.z, top.z do local areapos = {x = x, y = y, z = z, stackpos = 253} local cid = getThingfromPos(areapos).uid if isPlayer(cid) then p = p+1 elseif isMonster(cid) then m = m+1 end end end end if p ~= getGlobalStorageValue(config.playerCount) then setGlobalStorageValue(config.playerCount, p) end if p < 2 then return true end addEvent(pvgaylord,100,nil) end na mesma pasta crie o arquivo fechazombie.lua :
local teleportPos = {x = 652, y = 1020, z = 7, stackpos = 1} -- Posição em que se abre o teleport local teleportId = 1387 function onTimer() for i = 1, 255 do teleportPos.stackpos = i if getThingFromPos(teleportPos).itemid == teleportId then doRemoveItem(getThingFromPos(teleportPos).uid, 1) end end return true end agora em data/globalevents abra o arquivo globalevents.XML e adicione :
<globalevent name="zombieevent" time="23:41" event="script" value="zombieevent.lua"/> <globalevent name="zombieventt" time="23:43" event="script" value="fechazombie.lua"/> Importante : time="Horário que irá acontecer o evento" e no fechazombie coloque 2 minutos a mais da hora que vc colocou pra iniciar, para assim fechar o teleport na hora em que o evento é startado (configuração padrão do script, se alterar lá terá que alterar aqui tb)
Agora só abrir e desfrutar do seu novo sistema...
Download de mapas :
http://tibiaking.com...apa-modificado/ - tiago.bordin1988
http://tibiaking.com...mbie-event-v10/ - ricardo3
http://tibiaking.com...map-86-inovado/ - OhGod
http://www.speedysha...ombieEvent.otbm
Créditos...
Fausto32
Sociopata
Orochi Elf
Phowned
Smart Maxx
-
Blackmotion deu reputação a Smart Maxx em [Original] Azeroth RPGbastar trocar no config.lua para mysql se tem vários tutoriais no fórum de como fazer isso;
-
Blackmotion deu reputação a Smart Maxx em [Original] Azeroth RPG> o Servidor creio que seria considerado bem leve comparado aos global full e baiak que já vi e editei ...
> Zombie event é automático podendo ser programado a qualquer hora que queira, Castle of honor por opção minha eu não editei(só algumas mudança e bugs corrigidos) e deixei por comando para acompanhar de perto o sistema pois gosto dele, o battlefield é por comando tb mas recentemente editei e deixei automático(talvez eu coloque na próxima versão).
>As spells do servidor são as msm encontrada nos tibias 8.6.