Líderes
-
Jamison Collins
MembroPontos932Total de itens -
-
-
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 06/01/14 em todas áreas
-
(Resolvido)Dúvidas Cortina
2 pontosColoque ela pelo "Raw Palette>Hangables" ao invés de "Doodad Palette>Hangables".2 pontos
-
alguem ponha exausted nesse script
alguem ponha exausted nesse script
thiagobji e um outro reagiu a llucas75 por uma resposta no tópico
2 pontoskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk mas o tempo esta passando tipo 10s certinho pra usar novamente? Por enquanto é isso daki 5 minutos te posto uma que mostra certinho o tempo que falta... Edite:não consegui kkkk peço que alguém mais experiente faça o timerzinho pra ele . Qualquer erro no script chama ae...2 pontos -
Glacier Set dando conditions em área
Glacier Set dando conditions em área
shirudev reagiu a xWhiteWolf por uma resposta no tópico
1 pontoEai galera, esse script eu fiz para um membro aqui do TibiaKing no suporte e achei que ficou bem legal então decidi postar. Explicação: Ao tomar um dano maior que 300, se o player tiver usando a glacier robe, uma área em volta dele vai ser congelada e todos dentro dessa área ficarão com slow. Caso o player estiver com o full glacier set, além do paralyze, as pessoas dentro da área receberão dano de freezing crie um arquivo em creaturescripts\scripts chamado glacierrobe.lua e adicione isso daqui dentro dele agora vá em creaturescripts\scripts e procure um arquivo chamado login.lua. dentro dele coloque isso (de preferencia embaixo dos outros registerCreatureEvent): registerCreatureEvent(cid, "glacierrobe") Lembre-se que se vc quiser repetir isso pra outros set's você tem que repetir todo o processo, tanto no creaturescripts.xml quanto no login.lua no meu server além do set glacier eu uso os outros 3 set's elementais, ficando assim: EDIT:: Algumas imagens pra vocês verem como o script funciona:1 ponto -
[MOD] CandyBot
[MOD] CandyBot
Yazka reagiu a Will Oliveira por uma resposta no tópico
1 pontoO que faz? O CandyBot é um mod do otclient que funciona como um bot comum. Instalação: Você deve ir a página do github do candybot e clicar no botão ZIP, você estará baixando o mod compactado, descompacte e transfira a pasta do CandyBot para a pasta mods do seu otclient. ScreenShots: Créditos: BeniS (Ben Dol) - dolb90@gmail.com Alexandre do Amaral Severino - alexandre.a.severino@gmail.com Evesys1 ponto -
[TUTORIAL] Resolvendo qualquer erro na data base
Opa, 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.1 ponto
-
[Boss Skill] Aegis of Immortal
[Boss Skill] Aegis of Immortal
bagulhoescroto reagiu a xWhiteWolf por uma resposta no tópico
1 pontoFala galera do TK, hoje vim trazer pra vocês um script de um server bem famoso, trata-se de nada mais e nada menos doque a Aegis of Immortal do Fox World. Quase nenhum OTserver consegue me deixar com vontade de jogar, mas se tem um que chegou bem próximo foi o Fox e o motivo é a criatividade dos caras. É muito fácil aprender lua e ser um ótimo scripter mas ter criatividade pra criar esse tipo de script é bem mais raro. Sem mais delongas vou apresentar a idéia do script e logo em seguida ensinar a instalar no seu servidor. Aegis of the Immortal Descrição: É obtida 1 carga ao vencer o boss Aegis (aparece em invasões). Com esta técnica, o jogador ganha a aura do boss, e se morrer é teleportado para a Aegis Dimension, e após 3 segundos volta para o lugar que estava, com life e mana full como se não tivesse sido tocado. (limite de 1 carga) Tipo: (B.Skill) Vocações: All Vocations Elemento: n/a fonte: site do fox Well, o script é bem simpleszinho mas eu apanhei pra caramba pra fazer ele funcionar certinho (acredito que nem o script dos caras do Fox funcione da maneira correta, mas esse daqui vai funcionar) Antes de tudo você tem que criar uma área no seu map editor e colocar ela inteira como no-pvp e no-logout. Essa vai ser a área que você vai ser teleportado, será a sua "Aegis Dimension". Feito isso você vai precisar adicionar essa linha em creaturescripts.xml: <event type="statschange" name="reborn" script="reborn.lua"/> obs: eu levei muito tempo tentando fazer por onPrepareDeath mas aparentemente essa função não funciona tão bem quanto statschange e acabava chamando a si mesma repetidas vezes. agora crie um arquivo chamado reborn.lua na pasta creaturescripts\scripts e coloque isso dentro dele: Agora você só tem que adicionar essa linha no creaturescripts\scripts\login.lua (de preferencia antes do ultimo return true) --- BOSS SKILLS ---- registerCreatureEvent(cid, "reborn") if getPlayerStorageValue(cid, 19332) == -1 then setPlayerStorageValue(cid, 19332, 0) end Agora seu server possui a Aegis of Immortal e você pode configurar essa skill passiva de diferentes maneiras: 1) Pode ser uma quest que dá como prêmio X quantidades dessa skill 2) Um npc que vende X quantidades da skill 3) Um item que ao ser equipado ativa a skill 4) Um boss que vc mata e ganha quantidades dela 5) Um bonus em algum evento 6) Um item de shop etc. Tudo que vc precisa fazer é criar um script que dê o storage 19332, o valor do storage é o numero de vezes que vc vai utilizar a skill. aqui tem um exemplo de uma quest que ganha 5 charges da Aegis of Immortal: function onUse(cid, item) local storage = 19332 if getPlayerStorageValue(cid, storage) ~= 5 then doPlayerSetStorageValue(cid, storage, 5) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have habilited your [BOSS SKILL]") else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your [BOSS SKILL] is already with "..getPlayerStorageValue(cid, storage).." charges.") end return true end e aqui tem algumas fotos de como fica no seu server: Espero que vcs tenham gostado.. Vou dar 20% de Crédito pro Kilua porque sem o tutorial dele de addEvent isso daqui não seria possível e 30% pro pessoal do Fox por terem me dado a idéia do script. EDIT: Fiz um monstro q dá essa skill ao morrer, só que eu inovei um pouquinho e fiz ele tendo a skill, ou seja, vc tem que matar ele um numero X de vezes pra valer de verdade kkk A graça é que esse numero de X é inerente ao player (fiz por storage), então se um grupo de 10 pessoas for fazer e cada hora uma matar, serão (X+1) vezes no mínimo auhauhauh Só que como ele não dá loot e o unico premio dele é a skill pra quem matar X vezes, então o pessoal dá KS mesmo. Enfim, aproveitem: creaturescripts\scripts\aegis.lua local config = { storagekill = 19500, --- storage q conta a quantidade de kills storageaegis = 19332, --- storage da skill tempo = 5, -- tempo até ele renascer times = 2, --- quantidade de vezes que tenho que matar charges = 1, --- cargas da skill q ganha ao matar definitivamente effect1 = 66, -- efeito ao morrer effect2 = 10 --- efeito ao renascer } function onKill(cid, target, lastHit) local killed = getPlayerStorageValue(cid,config.storagekill) local skill = getPlayerStorageValue(cid, config.storageaegis) if isMonster(target) and getCreatureName(target):lower() == 'aegis' then if killed < config.times then doCreatureSay(target, "I'll be back mortal...", 20) doSendMagicEffect(getThingPos(target), config.effect1) setPlayerStorageValue(cid, config.storagekill, killed+1) addEvent(doSendMagicEffect, 1000*config.tempo, getThingPos(target), config.effect2) addEvent(doCreateMonster, 1000*config.tempo, "Aegis", getCreaturePosition(target), true) end if killed >= config.times then setPlayerStorageValue(cid, config.storagekill, 0) if skill < config.charges then doPlayerSendTextMessage(cid,22,"Congratulations, you just killed "..getCreatureName(target).." and earned Aegis of Immortal skill!") setPlayerStorageValue(cid, config.storageaegis, config.charges) end end end return true end creaturescripts\scripts\login.lua registerCreatureEvent(cid, "aegis") if getPlayerStorageValue(cid, 19500) == -1 then setPlayerStorageValue(cid, 19500, 0) end creaturescripts.xml <event type="kill" name="aegis" script="aegis.lua"/> monster\aegis.xml <?xml version="1.0" encoding="UTF-8"?> <monster name="Aegis" nameDescription="Aegis, the immortal" race="blood" experience="0" speed="605" manacost="0"> <health now="100000" max="100000"/> <look type="287" head="0" body="0" legs="0" feet="0" corpse="0"/> <targetchange interval="2000" chance="15"/> <strategy attack="60" defense="5"/> <flags> <flag summonable="0"/> <flag attackable="1"/> <flag hostile="1"/> <flag illusionable="0"/> <flag convinceable="0"/> <flag pushable="0"/> <flag canpushitems="1"/> <flag canpushcreatures="1"/> <flag targetdistance="1"/> <flag runonhealth="0"/> </flags> <attacks> <attack name="melee" interval="2000" skill="210" attack="260"/> <attack name="lifedrain" interval="1000" chance="20" range="3" min="-550" max="-1050"/> <attack name="firecondition" interval="1000" chance="7" range="2" min="-800" max="-1200"> <attribute key="shootEffect" value="fire"/> <attribute key="areaEffect" value="yellowspark"/> </attack> <attack name="physical" interval="1000" chance="7" radius="6" target="0" min="-250" max="-750"> <attribute key="areaEffect" value="explosion"/> </attack> <attack name="death" interval="1000" chance="50" radius="5" target="0" min="-200" max="-500"> <attribute key="areaEffect" value="mortarea"/> <attribute key="shootEffect" value="suddendeath"/> </attack> <attack name="firefield" interval="1000" chance="4" radius="5" target="0"> <attribute key="areaEffect" value="explosion"/> </attack> <attack name="fire" interval="1000" chance="34" range="7" radius="7" target="1" min="-350" max="-850"> <attribute key="shootEffect" value="fire"/> <attribute key="areaEffect" value="firearea"/> </attack> <attack name="fire" interval="1000" chance="13" length="8" spread="0" min="-500" max="-1000"> <attribute key="areaEffect" value="explosion"/> </attack> <attack name="fire" interval="1000" chance="10" length="8" spread="3" min="-300" max="-1500"> <attribute key="areaEffect" value="firearea"/> </attack> </attacks> <defenses armor="165" defense="150"> <defense name="healing" interval="1000" chance="25" min="2000" max="3000"> <attribute key="areaEffect" value="blueshimmer"/> </defense> <defense name="speed" interval="1000" chance="10" speedchange="1800" duration="4000"> <attribute key="areaEffect" value="redshimmer"/> </defense> </defenses> <immunities> <immunity physical="0"/> <immunity energy="1"/> <immunity fire="1"/> <immunity poison="0"/> <immunity lifedrain="1"/> <immunity paralyze="1"/> <immunity outfit="1"/> <immunity drunk="1"/> <immunity invisible="1"/> </immunities> <voices interval="5000" chance="50"> <voice sentence="Poor innocent, I CAN'T DIE HAHAHAHAAHA"/> <voice sentence="Your soul will be mine!"/> <voice sentence="MUAHAHAHAAHAHA, I TOLD YOU" yell="1"/> </voices> </monster> OBS: edite ele porque eu coloquei ele muito forte, com muita vida e com muita recuperação de vida. monster\monsters.xml <monster name="Aegis" file="aegis.xml"/>1 ponto -
sistema de refinamento perfeito 2.0
Autor : Mock Servidor Testado : TFS 0.3.6 Vamos instalar. Adcione essa tag no actions.xml: <action itemid="8306" event="script" value="upgrade.lua"/> <action itemid="8305" event="script" value="upgrade.lua"/> Bom a segunda é um segundo item que tem 100% a mais de chance de acertou, ou seja esse nunca falha, e o normal com nem uma chance adcional é o itemid 8305. Agora em upgrade.lua coloque isso: Veja ele funcionando: E agora com a possibilidade do slot ssystem conjunto com esse sistema vc pode fazer coisas assim: Código: 12:02 You see a knife +1 [hp.+7%] (Atk:8, Def:6). Creditos Mock ( Por Fazer O Script ) GodMarini ( Por Trazer Ao TK )1 ponto
-
Aura Bold System
Aura Bold System
Vodkart reagiu a xWhiteWolf por uma resposta no tópico
1 pontoFala galera do TK, hoje vim compartilhar com vocês um sistema que eu comecei a fazer com a ajuda de um amigo ... Bem, ele é viciado em Skyrim e esses dias a gente ficou quase 10 horas sem internet , e foi nesse meio tempo de tédio que eu decidi fazer um sistema baseado nas Bold Weapons do Skyrim e ele foi me dando uns toques pra eu poder melhorar o script. Se você nunca jogou Skyrim ou não se lembra eu vou explicar oque é: Um sistema que você conjura uma arma feita de magia referente a sua classe mas se vc tentar tirar ela da mão, ela some. O Script em si é bem simpleszinho mas vc tem que fazer diversas alterações no server pra que ele fique 100% então aqui vamos nós: Antes de tudo eu gostaria de dizer que eu altamente recomendo que você crie novos itens no seu Item Editor pra evitar problemas futuros mas use as sprites dos itens que eu irei passar aqui nesse tópico. Abra seu weapons.xml e adicione as seguintes linhas (note que vc deve procurar os id's antes pra ver se já não existe ele declarado, caso haja, delete as linhas antigas e adicione as novas): <!-- AURA ITEMS --> <movevent type="DeEquip" itemid="7773" slot="right-hand" event="script" value="item.lua"/> <movevent type="DeEquip" itemid="7774" slot="right-hand" event="script" value="item.lua"/> <movevent type="DeEquip" itemid="8854" slot="right-hand" event="script" value="item.lua"/> <movevent type="DeEquip" itemid="7775" slot="right-hand" event="script" value="item.lua"/> <movevent type="DeEquip" itemid="7766" slot="right-hand" event="script" value="item.lua"/> <movevent type="DeEquip" itemid="7772" slot="right-hand" event="script" value="item.lua"/> <movevent type="DeEquip" itemid="7424" slot="right-hand" event="script" value="item.lua"/> <movevent type="DeEquip" itemid="7451" slot="right-hand" event="script" value="item.lua"/> <movevent type="DeEquip" itemid="8858" slot="right-hand" event="script" value="item.lua"/> <movevent type="DeEquip" itemid="7450" slot="right-hand" event="script" value="item.lua"/> <movevent type="DeEquip" itemid="7407" slot="right-hand" event="script" value="item.lua"/> <movevent type="DeEquip" itemid="7455" slot="right-hand" event="script" value="item.lua"/> aqui temos todos os ids dos items e o slot da função como sendo a mão esquerda (direita da tela >>) eu fiz utilizando esse slot porque os itens são criados lá diretamente e evita erros na distro e na pasta movements\scripts adicione o arquivo item.lua que deverá conter o seguinte: <instant name="Weapon Aura" words="Aurum" lvl="100" manapercent="60" aggressive="0" exhaustion="2000" needlearn="0" event="script" value="especiais/weaponaura.lua"> </instant> aqui vc vai configurar a palavra que vc diz pra conjurar a magia, o level dela e a porcentagem de mana que vai consumir ao usar a spell. Ainda na pasta spells vá em scripts e crie uma nova pasta chamada especiais e crie um arquivo chamado weaponaura.lua que deverá conter o seguinte: Agora você tem que garantir que o player não irá dar trade nos itens, para isso vá em creaturescripts\scripts e crie um arquivo chamado untrade.lua e coloque isso dentro dele: Feito isso você deve ir no creaturescripts.xml e adicionar essa linha aqui: <event type="traderequest" name="UntradeAura" event="script" value="untrade.lua"/> agora abra o login.lua que fica em creaturescripts\scripts e antes do ultimo return true adicione isso daqui: ---- AURA ITENS ---- registerCreatureEvent(cid, "UntradeAura") ______________________________________________________________________ Se você conseguiu fazer tudo até agora isso significa que você sabe ler. Se alguma coisa deu merda volte ao início e releia tudo com atenção! _______________________________________________________________________ Eu pessoalmente achei o sistema super bacana, ainda mais pra servidores sérios.. Testei aqui no meu TFS 0.3.6 (Crying Damson) e rodou tudo perfeitamente... quaisquer erros poste aqui no tópico que eu tento ajudar a resolver, mas é claro que na medida do possível, to sem tempo pra viver então não me peça pra adaptar o script pra sua versão 7.6 ou 10.1... ele foi feito pra 8.54! Espero que pelo menos alguém use esse sistema pq deu uma trabalheira danada pra fazer, e claro, se te ajudei, fortaleça com um REP que eu vou saber que você gostou do sistema. Grato. Mais uma coisa e talvez a mais importante do tópico: Esse script foi feito por mim, Night Wolf ou White Wolf (como vcs preferirem), e é conteudo >>> EXCLUSIVO <<<< do TIBIA KING. Não postem sem minha permissão que eu prometo continuar fazendo coisas legais pra vocês :angry2:. Abraço do Night. PS: Pra que o sistema funcione vc deve deixar as duas mãos vazias e falar Aurum, o script vai checar sua classe e te dar a weapon referente, caso vc seja Knight ele vai te dar a arma do tipo cujo sua proficiência seja a melhor.. (Em outras palavras: pegar a sua maior skill, se for sword vai te dar sword e assim por diante.. No caso de empate ele vai te dar sword e no caso de empate entre axe e club ele vai te dar club.) Note que não vai ser possível remover o item nem pra BP nem pra outro slot e nem pro chão... e também não é possível dar trade no item. Vou anexar umas imagens aqui pro pessoal ver melhor:1 ponto -
[Gesior] Widget Top Level BOX
[Gesior] Widget Top Level BOX
Thiagodourado1 reagiu a KekezitoLHP por uma resposta no tópico
1 pontoPara quem deseja ter um box igual a este em seu site: 1º Baixe o arquivo: http://www.sendspace.com/file/ejr1jt Virus Total: https://www.virustot...sis/1360784756/ 2º Extraia os arquivos na pasta do seu layout. 3º Abra layout.php e procure por: <div id="Themeboxes"> 4º Para quem tem pouco mais de experiencia vou falar da seguinte forma: Copie esta linha antes de fechar a div themeboxes. <?php include($layout_name.'/widget_rank.php'); ?> Para quem não entendeu o que eu disse, fica meio complicado explicar onde inserir a linha, então, depois desta linha que disse para pesquisar vá copiando a linha do passo 4º e atualizando o site até obter um resultado agradável. Meu layout.php fico assim: <div id="Themeboxes"> <div id="NewcomerBox" class="Themebox" style="background-image:url(<?PHP echo $layout_name; ?>/images/themeboxes/newcomer/newcomerbox.gif);"> <div class="ThemeboxButton" onClick="BigButtonAction('?subtopic=createaccount')" onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" style="background-image:url(<?PHP echo $layout_name; ?>/images/buttons/sbutton.gif);"><div class="BigButtonOver" style="background-image:url(<?PHP echo $layout_name; ?>/images/buttons/sbutton_over.gif);"></div> <div class="ButtonText" style="background-image:url(<?PHP echo $layout_name; ?>/images/buttons/_sbutton_jointibia.gif);"></div> </div> <div class="Bottom" style="background-image:url(<?PHP echo $layout_name; ?>/images/general/box-bottom.gif);"></div> </div> <div id="PremiumBox" class="Themebox" style="background-image:url(layouts/tibiacom/images/themeboxes/premium/premiumbox.gif);"> <div class="ThemeboxButton" onClick="BigButtonAction('?subtopic=donate')" onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" style="background-image:url(layouts/tibiacom/images/buttons/sbutton.gif);"><div class="BigButtonOver" style="background-image:url(layouts/tibiacom/images/buttons/sbutton_over.gif);"></div> <div class="ButtonText" style="background-image:url(http://i54.tinypic.com/25uqof8.gif);"></div> </div> <div class="Bottom" style="background-image:url(layouts/tibiacom/images/general/box-bottom.gif);"></div> </div> <?php include($layout_name.'/widget_rank.php'); ?> </div> Creditos Kekezitolhp Duvidas ou erros só pergunta1 ponto -
Callbacks de creaturescripts
Callbacks de creaturescripts
Agaka reagiu a xWhiteWolf por uma resposta no tópico
1 pontoFala galera do TK, hoje eu vim trazer pra vocês uma coisa que se perdeu em todos esses anos de OT e que é uma das coisas mais importantes prum scripter intermediário/avançado. São as explicações dos respectivos callbacks de creaturescripts. Espero que ajude bastante gente Créditos: 90% Zonnebloem (um gringo ai que postou isso das sources) e 10% pra mim por completar oque ele não tinha escrito e arrumado umas coisas que ele escreveu errado. ____________________________ CREATURE EVENTS TIPOS: _________________ TFS 0.2 type="login" function onLogin(cid) type="logout" function onLogout(cid) type="advance" function onAdvance(cid, skill, oldLevel, newLevel) type="think" function onThink(cid, interval) type="kill" function onKill(cid, target) type="death" function onDeath(cid, corpse, lasthitkiller, mostdamagekiller, lasthitunjustified, mostdamageunjustified) type="preparedeath" function onPrepareDeath(cid, killer) TFS 0.3/0.4 type="login" function onLogin(cid) type="logout" function onLogout(cid) type="advance" function onAdvance(cid, skill, oldLevel, newLevel) type="think" function onThink(cid, interval) type="kill" function onKill(cid, target, lastHit) type="death" function onDeath(cid, corpse, deathList) type="preparedeath" function onPrepareDeath(cid, deathList) type="statschange" function onStatsChange(cid, attacker, type, combat, value) type="combat" function onCombat(cid, target) type="target" function onTarget(cid, target) type="look" function onLook(cid, thing, position, lookDistance) type="textedit" function onTextEdit(cid, item, newText) type="outfit" function onOutfit(cid, old, current) type="push" function onPush(cid, target) type="follow" function onFollow(cid, target) type="attack" function onAttack(cid, target) type="areacombat" function onAreaCombat(cid, tileItem, tilePosition, isAggressive) type="cast" function onCast(cid, target) type="direction" function onDirection(cid, old, current) type="reportbug" function onReportBug(cid, comment) type="sendmail" function onSendMail(cid, receiver, item, openBox) type="receivemail" function onReceiveMail(cid, sender, item, openBox) type="traderequest" function onTradeRequest(cid, target, item) type="tradeaccept" function onTradeAccept(cid, target, item, targetItem) type="joinchannel" function onJoinChannel(cid, channel, users) type="leavechannel" function onLeaveChannel(cid, channel, users) TFS 1.0 type="login" function onLogin(cid) type="logout" function onLogout(cid) type="think" function onThink(cid, interval) type="preparedeath" function onPrepareDeath(cid, killer) type="death" function onDeath(cid, corpse, lasthitkiller, mostdamagekiller, lasthitunjustified, mostdamageunjustified) type="kill" function onKill(cid, target) type="advance" function onAdvance(cid, skill, oldLevel, newLevel) type="modalwindow" function onModalWindow(cid, modalWindowId, buttonId, choiceId) type="textedit" function onTextEdit(cid, item, text) type="changehealth" function onChangeHealth(cid, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType) type="changemana" function onChangeMana(cid, attacker, manaChange) type="extendedopcode" function onExtendedOpcode(cid, opcode, buffer) ____________________________ INFORMAÇÃO SOBRE OS TIPOS: _________________ antes de tudo tenha em mente que os tipos só serão executados no player ou monstro em que eles forem registrados; Registrar no login.lua vai fazer com que ele seja executado em todos os players assim q eles logarem. Se deve ser executado somente por alguns monstros, registre no monstro em questão no xml dele. login Quando é executada: - Quando um player loga Parametros: - cid = creatureid do player que logou quando está return false: - nada registra creature event: - não ~~~~ logout Quando é executada: - quando um player desloga pelo logout do próprio cliente. Não acontece se o player morrer, for disconectado ou xlogs Parametros: - cid = creatureid do player que deslogou quando está return false: - Player não vai conseguir deslogar registra creature event: - não ~~~~ advance Quando é executado: - Toda vez que um player avançar de level, magic level ou qualquer outra skill Parametros: - cid = creature id do player que avançou - skill = tipo da skill que o player avançou vide tabela abaixo (note que vc pode utilizar tanto o nome SKILL_FIST quanto o numero 0) SKILL_FIST = 0 SKILL_CLUB = 1 SKILL_SWORD = 2 SKILL_AXE = 3 SKILL_DISTANCE = 4 SKILL_SHIELD = 5 SKILL_FISHING = 6 SKILL__MAGLEVEL = 7 SKILL__LEVEL = 8 - oldlevel = level antes do player avançar - newlevel = o novo level após avançar quando está return false: - ele não vai avançar o nível Registra creature event: - sim (isso significa que vc pode colocar pra ele registrar um outro creatureevent dentro desse script após alcançar X level) ~~~~ think Quando é executada: - Pelo tempo Parametros: - cid = creatureid do monstro ou player - interval = intervalo entre cada checagem OU em que intervalo deve ser executada, 500 é 0.5 segundo. quando está return false: - nada Registra creature event: - sim ~~~~ kill Quando é executada: - Ao matar um player/monstro Parametros: - cid = creatureid do player ou do monstro que mata - target = creatureid do player ou monstro que é morto quando está return false: - O target não morrerá, ele ficará com 0 de vida e a barra sumirá para os inimigos.Ele precisará se curar para que sua barra de vida volte registra creature event: -sim ~~~~ death Quando é executada: - Quando um player ou monstro morrem Parametros: - cid = creatureid do player monstro que morre - corpse = corpo do monstro ou player que morre exemplo de adicionando 3 crystal coins no corpo que morreu. doAddContainerItem(corpse.uid, 2160, 3) - deathlist = uma table com o nome de todos que mataram, sendo na ordem o deathlist[1] oque deu o ultimo hit e o deathlist[2] sendo oque deu mais dano. quando está return false: - O corpo não será criado Registra creature event: - Sim ~~~~ preparedeath Quando é executada: - Quando um monstro ou player está prestes a morrer (pode ser usada em scripts que devem ser executados no segundo antes do player morrer) Parameters: - cid = creatureid do player ou monstro que está prestes a morrer - deathlist = uma tabela com o nome dos atacantes quando está return false: - o player ou monstro não irá morrer (mesma história do kill) Registra creature event: - Sim ~~~~ statschange quando é executada: -Quando um player ou monstro ou ganha ou perde vida/mana de um combat ou uma função (combats não são só os das spells, mas também weapons/fist/melee... vale lembrar também que monstros não possuem mana) Parametros: - cid = creatureid do player ou monstro q ganha/perde vida/mana - attacker = creatureid do player ou monstro que causou a mudança na health/mana - type = tipo da mudança, sendo ela:Ganho de vida, perca de vida, ganho de mana e perca de mana vide tabela abaixo: STATSCHANGE_HEALTHGAIN = 0 STATSCHANGE_HEALTHLOSS = 1 STATSCHANGE_MANAGAIN = 2 STATSCHANGE_MANALOSS = 3 - combat = o tipo de combat que causou a alteração, sendo esses tipos: COMBAT_NONE = 0 COMBAT_PHYSICALDAMAGE = 1 COMBAT_ENERGYDAMAGE = 2 COMBAT_EARTHDAMAGE = 4 COMBAT_POISONDAMAGE = 4 COMBAT_FIREDAMAGE = 8 COMBAT_UNDEFINEDDAMAGE = 16 COMBAT_LIFEDRAIN = 32 COMBAT_MANADRAIN = 64 COMBAT_HEALING = 128 COMBAT_DROWNDAMAGE = 256 COMBAT_ICEDAMAGE = 512 COMBAT_HOLYDAMAGE = 1024 COMBAT_DEATHDAMAGE = 2048 - value = valor da mudança quando está return false: - O player ou o monstro não ganharão/perderão vida/mana no combat. Pode ser usado pra fazer ele ficar imortal por um certo período ou não ser capaz de tomar dano de certos players/creaturas Registra creature event: - Sim ~~~~ combat Quando é executado: - Quando um player ou monstro starta um combat (qualquer tipo de ataque) Parametros: - cid = creatureid do player ou monstro que usa o combat - target = creatureid do player ou monstro que sofre o combat quando está return false: - O player ou monstro não será capaz de levar ataques, isso também inclui que ele não poderá dar target em alguém/algo . Isso pode ser usado para criar monstros que não possam levar ataques ou fazer players ficarem imunes a dano por um certo tempo. Registra creature event: - Sim _______________________________________________________________________________________________ Agora começa a graça da coisa: ~~~~ target Quando é executado: - Quando um player ou monstro dá target em um player/mostro (follow/attack) Parametros: - cid = creatureid do player ou monstro que dá o target - target = creatureid do player ou monstro que é targeted quando está return false: - O player/monstro não poderá dar target.. alguns testes com monstros revelaram que o monstro ainda consegue te atacar então acho que essa função só serve para player Registra creature event: - Sim ~~~~ look Quando é executado: - Quando um player dá look em algo Parametros: - cid = creatureid do player que dá o look - thing = objeto/player/monstro que o player dá look - position = não tenho certeza se é a posição do objeto que é dado look ou se é a minha posição. - lookDistance = distancia entre esse objeto e eu. quando está return false: - Não aparece a mensagem de look na tela Registra creature event: - Sim ~~~~ textedit Quando é executado: - Quando um player edita um texto em algum item writeable (livros por exemplos) Parametros: - cid = creatureid do player - item = item que está sendo modificiado - newText = texto novo que foi escrito quando está return false: - O player não conseguirá editar o texto, quando ele tentar dar ok o item continuará com o mesmo texto.. Pode ser usado numa quest com muito RPG pra checar se a senha que o player escreveu no livro é a correta. Registra creature event: - sim ~~~~ outfit Quando é executado: - Quando um player ou monstro muda de outfit Parametros: - cid = creatureid do player ou monstro que muda de outfit - old = outfit antiga - current = outfit atual (após ter trocado) quando está return false: - a troca de outfit será cancelada e o player/monstro voltará para a antiga outfit Registra creature event: - sim ~~~~ push Quando é executado: - Quando um player tenta empurrar um monstro ou um player Parametros: - cid = creatureid do player que empurrar - target = creatureid do player ou monstro que é empurrado quando está return false: - O player não conseguirá empurrar (arrastar o oponente com o mouse). É bastante util em eventos para que eles não possam ficar se empurrando Registra creature event: - sim ~~~~ follow Quando é executado: - Quando um player dá follow em algum monstro ou player ou até num NPC Parametros: - cid = creatureid do player que dá o follow - target = creatureid da criatura (monstro/npc/player) que é seguida quando está return false: - O follow não irá ocorrer Registra creature event: - Sim ~~~~ attack Quando é executado: - Quando um player ou monstro ataca (melee, spells não contam) Parametros: - cid = creatureid do player ou monstro que ataca - target = creatureid do player ou monstrp que sofre o ataque quando está return false: - O player/monstro não irá atacar, é bastante útil em sistemas que vc queira deixar uma certa criatura imune a ataques mas que ela ainda possa morrer pra spells Registra creature event: - Sim ~~~~ areacombat Quando é executado: - Quando um player ou monstro starta um combat em área (usa uma spell ou dano em área) Parametros: - cid = creatureid do player ou monstro que usa o combat - tileItem = player que está dentro da area - tilePosition = posição do player que está dentro da area - isAggressive = se esse combat em área é agressivo ou não, lembre-se que magias como exura gran mas res fazem combat em área mas esse combat não é agressivo porque ela cura em área quando está return false: - o combat é cancelado Registra creature event: - Sim ~~~~ cast Quando é executado: - Quando um player ou monstro solta uma magia Parametros: - cid = creatureid do player ou monstro que usa a magia - target = creatureid do player ou monstro que sofre o dano da magia quando está return false: - a magia não é lançada Registra creature event: - sim ~~~~ direction Quando é executado: - Quando uma criatura (NPC/Player/Monster) muda de direção Parametros: - cid = creatureid do player ou monstro que mudará de direção - old = direção antiga - current = direção atual, após ter mudado, vide tabela abaixo: NORTH = 0EAST = 1 SOUTH = 2 WEST = 3 SOUTHWEST = 4 SOUTHEAST = 5 NORTHWEST = 6 NORTHEAST = 7 atente-se no fato de que não é possível virar pras direções 4,5,6 e 7 mas você utilizá-las num script que cheque a direção entre dois players, daí sim seria possível (como é no caso do exiva) quando está return false: - A criatura não será capaz de mudar de direção Registra creature event: - Sim ~~~~ reportbug Quando é executado: - Quando um player reporta um bug Parametros: - cid = creatureid do player que reportou o bug - comment = comentário que ele adicionou ao reportar quando está return false: - O report será cancelado e não será enviado. Pode ser usado num script avançado de reports onde se o player não tiver escrito nenhum comentário ou tiver escrito determinadas palavras o envio será cancelado (pra evitar spams) Registra creature event: - Sim ~~~~ sendmail Quando é executado: - Quando um player manda uma carta/parcel para outro Parametros: - cid = creatureid do player que mandou a correspondencia - receiver = creatureid do player que irá receber essa correspondencia - item = item que foi enviado (id dele) - openBox = conteúdo (no caso de parcel) quando está return false: - Correspondência não será enviada. É util pra registrar um log de todas as trocas entre players e pegar hackers. Registra creature event: - Sim ~~~~ receivemail Quando é executado: - Quando um player recebe uma carta/parcel de outro Parametros: - cid = creatureid do player que recebou a correspondência - sender = creatureid do player que enviou a correspondência - item = item recebido - openBox = conteúdo da correspondencia (no caso de ser uma parcel) quando está return false: - Ele não receberá a correspondência. Registra creature event: - Sim ~~~~ traderequest Quando é executado: - Quando um player dá trade Parametros: - cid = creatureid do player que deu o trade - target = creatureid do player que ele tentou iniciar uma troca - item = item que foi iniciada a troca (se for uma backpack cheia de coisas dentro esse item será uma table com todos os itens) quando está return false: - A troca não será executada. É útil para scripts de itens vip onde o player não possa trocar determinados itens Registra creature event: - Sim ~~~~ tradeaccept Quando é executado: - Quando um player aceita a troca com outro) Parametros: - cid = creatureid do player que aceitou a troca (você) - target = creatureid do player que aceitou a troca (cara com quem você trocou) - item = items que você deu em troca, no caso de uma backpack cheia de itens esse parametro será uma table com todos os itens - targetItem = items que você recebeu em troca, no caso de uma backpack cheia de itens esse parametro será uma table com todos os itens quando está return false: - a troca não será concluída. Registra creature event: - Sim ~~~~ joinchannel Quando é executado: - Quando um player entra num channel (aqueles canais tipo trade/ help chat/ info/ guild/ etc...) Parametros: - cid = creatureid do player que entrou no chat - channel = canal que o player entrou.. vide lista abaixo: CHANNEL_GUILD = 0 CHANNEL_PARTY = 1 CHANNEL_RVR = 3 CHANNEL_HELP = 9 CHANNEL_DEFAULT = 0xFFFE CHANNEL_PRIVATE = 0xFFFF - users = outros usuários do canal. quando está return false: - O player não conseguirá entrar no channel Registra creature event: - Sim OBS: a mesma coisa vale pra função leavechannel, só que o return false o player não conseguirá sair do channel. Espero que isso ajude bastante gente, eu não expliquei os types da versão 1.0 porque é basicamente a mesma coisa e pelos parametros dá pra você ter uma ideia doque é oque. :]1 ponto -
[Creaturescript] Icones no minimap com descrição
[Creaturescript] Icones no minimap com descrição
Jean Junior reagiu a ViitinG por uma resposta no tópico
1 pontoBom para quem não sabe como funciona o script,é uma marcação que fica no minimap(in-game) que ao deixar o ponteiro do mouse em cima aparece uma descrição,pode ser mudado tanto a descrição quanto o icone que aparece no minimap. • Adicionando o script • Em "data/creaturescripts/creaturescripts.xml" adicione está tag : <event type="think" name="IconMap" event="script" value="iconmap.lua"/> Em "data/creaturescripts/scripts" crie um arquivo lua chamado "iconmap" e cole isso dentro : local config = { storage = 030220122041, version = 1, marks = { {mark = 5, pos = {x = 1095, y = 1062, z = 7}, desc = "Temple."}, {mark = 4, pos = {x = 895, y = 996, z = 7}, desc = "Depot."} } } local f_addMark = doPlayerAddMapMark if(not f_addMark) then f_addMark = doAddMapMark end function onThink(cid, interval) if(isPlayer(cid) ~= TRUE or getPlayerStorageValue(cid, config.storage) == config.version) then return end for _, m in pairs(config.marks) do f_addMark(cid, m.pos, m.mark, m.desc ~= nil and m.desc or "") end setPlayerStorageValue(cid, config.storage, config.version) return TRUE end Em "data/creaturescripts/scripts/login.lua" adicione está tag no fim do script : registerCreatureEvent(cid, "IconMap") Caso use TFS 1.0 use este register no login.lua : player:registerEvent(cid, "IconMap") Creditos : Comedinhas. - ViitinG pelo tutorial. • Configurando • • Icones •1 ponto -
[Aula 3] Primeiros Passos
[Aula 3] Primeiros Passos
Ghaz reagiu a MaXwEllDeN por uma resposta no tópico
1 ponto<< Aula 2 - Lógica da programação Primeiros Passos Aula 3 Relembrando o que eu disse na primeira aula, você precisará de um interpretador Lua e é muito recomendado que possua também um bom editor com suporte à sintaxe Lua, então nosso primeiro passo será obter o editor e o interpretador. As aulas serão voltadas ao scripting para Open Tibia Servers, então nada melhor do que um bom OTServer para testar seus scripts, mas ficar testando os scripts em um OTServer pode ser uma tarefa cansativa e demorada, então vamos usar também scripts fora de OTServers para praticar. Para isso, você pode fazer o download de qualquer um dos seguintes programas: Editores + Interpretadores: SciTE Scintilla [Avançado] OTScript Live! [Recomendado] Editores: Notepad++ Interpretadores: Lua [Oficial] Depois que você tiver seu editor e interpretador Lua (Recomendo o OTScript Live!), instale ele. No caso do OTScript Live!, depois de descompactar, vá em "Help", no menu, e clique em "Register To Lua". Abrirá uma caixa confirmando a alteração, basta apertar "OK" e todos os seus scripts irão abrir com o OTScript Live!. Testando seus scripts! No caso do SciTE, para testar o seu script você deve primeiro salvá-lo com a extensão Lua (*.lua). No caso do SciTE e do OTScript Live! você pode testar seu script apenas apertando F5, sendo que no OTScript Live! não é necessário salvar o script antes de testar. Após pressionar F5, o SciTE irá abrir uma área de textos abaixo da área de edição com as informações do teste, e o OTScript Live! vai abrir uma janela. Para testar se o seu SciTE ou OTScript Live! está funcionando, use o seguinte script: print("Hello world!") Nas informações mostradas pelo interpretador deve estar escrito "Hello world!". Se aparecer, parabéns, você testou o seu primeiro script Lua... (ou não ) O que o script fez? o0 Uma das coisas mais importantes nos scripts são as funções. Uma função é "um bloco de código previamente pronto", uma subrotina, que quando chamada executa esse bloco. Imagine as funções como um atalho para executar alguma coisa. Pode ser usada, por exemplo, para encurtar scripts que tenham alguma parte do codigo que se repita muitas vezes. Criando uma função você pode usar esse código que se repete muitas vezes somente uma vez (Dentro da função), então em vez de usar esse bloco várias vezes, você só precisaria chamar a função várias vezes. Você pode criar suas próprias funções, mas isso veremos mais para frente. Tudo o que importa agora é aprender a chamar funções. O "Nome da Função", na verdade, é o nome da variável em que está armazenada a função, mas não se preocupem com isto ainda... O "Nome da Função" é o nome que você deve chamar para que a função ocorra, pois há vária funções (Obviamente), então você deve especificar qual função quer chamar. É a mesma coisa do que ter 3 pessoas. Quando quiser chamar uma das pessoas, deve dizer o nome dela. Os argumentos são as "Respostas" para as "Perguntas" da função chamada. A maioria das funções faz "perguntas". No caso da função "print", ela nos "perguntou" o que queriamos escrever na tela, e "respondemos": "Hello world!". É importante lembrar que cada pergunta deve ser respondida adequadamente, por exemplo, se alguém te pergunta: "Que horas são?" você não pode responder: "Sim.". A mesma coisa acontece com as funções, você deve responder exatamente o que ela está perguntando. Outra observação importante é que você deve responder as perguntas da função na ordem em que foram perguntadas. Se a pergunta nº 1 for "Que horas são?" e a nº 2 for "Quer um biscoito?", você deve responder respectivamente que horas são e se você quer um biscoito. OBS: Algumas funções fazem "perguntas" opcionais, ou seja, você pode ou não responder. Se você não "responder", a própria função atribuirá um valor padrão para a resposta. Os parâmetros são simplesmente o conjunto de todos os argumentos. OBS: Todos os argumentos (Respostas) do parâmetro devem estar entre parênteses e ser separados por vírgulas! Tipos de valores! Bem, como eu disse, cada resposta deve seguir o tipo da pergunta, então vou citar aqui os tipos destes valores. OBS: Existe uma função para descobrir o tipo de cada valor! Esta função é a função type(valor)... Numbers Como o nome diz, numbers são números, não há muito o que falar sobre eles... Exemplo: print(1) print(2) print(3) OBS: A função print aceita todos os tipos como resposta. Strings As strings devem iniciar com um símbolo especial e deve terminar com o mesmo caractere que foi usado para iniciar a string. Esses símbolos são: Apóstrofo: Começa com ' e termina com '. Aspas: Começa com " e termina com ". Colchete-Colchete: Começa com [[ e termina com ]]. Colchete-Igual-Igual-Colchete: Começa com [==[ e termina com ]==]. As strings são conjuntos de caracteres, como letras, números (Não são numbers, pois se houver um número entre os símbolos especiais será tomado como string!!!), acentos, espaços, etc... Se você quiser escrever uma frase na tela, por exemplo, não pode deixá-la solta pelo script. Esta frase deve ser uma string, ou o script dará erro. Exemplo: print('Apóstrofos') print("Aspas") print([[Colchete-Colchete]]) print([==[Colchete-Igual-Igual-Colchete]==]) OBS: 1 << Isto é um number. "1" << Isto é uma string. Booleanos Os booleanos podem assumir apenas dois valores: true e false. true: Valor verdadeiro. false: Valor falso. OBS: Os booleanos podem ser complicados de entender no começo, mas com o tempo você acostuma. Não se preocupe com eles agora... Exemplo: print(true) print(false) print(nil) Functions Exatamente o que o nome diz: é o que estamos vendo agora. Functions são nada mais nada menos do que funções. Exemplo: print(function() end) OBS: Não se preocupe com isso ainda! Tables ou Arrays São tabelas, ou seja, armazenam mais do que um valor dentro de uma "caixa". Tabelas podem armazenar outras tabelas e todos os valores dentro de uma tabela possuem um identificador, chamado "index" (índice). Tabelas começam com o símbolo { (Chave) e terminam com o símbolo } (Chave). Exemplo: print({}) Userdata Lua é uma linguagem de programação criada para dar extensão à linguagem de programação C e C++. Userdatas são ponteiros que indicam valores em C ou C++. Não se preocupe com eles. Nil Nil simboliza um valor nulo. Não deixa de ser um valor, mas é um valor sem conteúdo. Exemplo: print(nil) As funções retornam! Toda função retorna um ou mais valores, nem que sejam valores nulos (nil), portanto você pode usar uma função dentro do print para escrever os valores que a função retornar! Vamos usar como exemplo a função type(valor), que vai nos retornar uma string com o tipo do valor. Exemplo: print(type(1)) O exemplo acima vai escrever em sua tela a frase: "Number", pois 1 é um number! Exercícios: Usando a função print para escrever na tela e type para pegar o tipo de algum valor, obtenha as seguintes frases na tela: Resposta: Essa aula foi escrita por uma raposa levada Skyen Hasus, todos os créditos são dele. Aula 4 - Operadores e Bibliotecas >>1 ponto -
Headshot - Critical hit
Headshot - Critical hit
r0bert0lol reagiu a MaXwEllDeN por uma resposta no tópico
1 pontoHeadshot - Critical hit Quando alguém te ataca, há a chance de ela te bater na cabeça(headshot) e você tomar 250%(configurável) do dano que ela causaria normalmente. Então, vamos lá. Adicione isso ao seu creaturescripts.xml <event type="login" name="HeadshotLogin" event="script" value="headshot.lua"/> <event type="statschange" name="HeadshotCritical" event="script" value="headshot.lua"/> E crie este arquivo: data/creaturescripts/scripts/headshot.lua local chance_percent = 50 -- Chance percenting local extra_damage_percent = 250 -- Extra Damage Percent function onLogin(cid) registerCreatureEvent(cid, "HeadshotCritical") return true end function onStatsChange(cid, attacker, type, combat, value) if type ~= STATSCHANGE_HEALTHLOSS then return true end if isPlayer(attacker) and getPlayerStorageValue(cid, 71257) < 1 then if math.random(100) <= chance_percent then local dmg = value * (extra_damage_percent / 100) setPlayerStorageValue(cid, 71257, 1) doTargetCombatHealth(attacker, cid, type, -dmg, -dmg, 255) setPlayerStorageValue(cid, 71257, -1) doCreatureSay(cid, "CRITICAL", 19) return false end end return true end1 ponto -
Sistema de Transformação
Sistema de Transformação
santoss011 reagiu a Ryzor por uma resposta no tópico
1 pontoNome: Tranformação Autor: SkyFail Versão Testada: Original Tibia 8.54 - Cliente 8.54 Informações Adicionais Transformações de Classes Obs:So Serve em Servers ATS pois não pode Trocar Outfuit Cada Classe Tem que ter a Propria. Vamos la, Va em: Código PHP: Data/Talkaction/Talkaction.xml Adicione esta Tag: Código PHP: <talkaction words="!transf" event="script" value="transf.lua"/> Entre em: Código PHP: Data/Talkaction/Script Copie um Arquivo Qualquer Renomeie para: transf e apague o que estiver dentro e adicione: Configurando: Código PHP:1 ponto -
ajuda simples
1 pontoopa vi um erro testa agora1 ponto
-
ajuda simples
1 pontolocal destino = {x = 1362, y = 1259, z = 6} -- Aqui vc põe as coordenadas do local pra onde o player vai function onStepIn(cid, item, pos) if isPlayer(cid) == true then doTeleportThing(Player(cid), destino) return true end Vê aí.1 ponto
-
[SPELL]Tem como mudar o local em que fica o buff
[SPELL]Tem como mudar o local em que fica o buff
xWhiteWolf reagiu a llucas75 por uma resposta no tópico
1 pontotesta ae1 ponto -
Como boto a função onStatsChange no 8.40?
Como boto a função onStatsChange no 8.40?
Ribeiro Foda reagiu a xWhiteWolf por uma resposta no tópico
1 pontoo outro jeito é migrar de server, pra uma versão 8.54 ou maior1 ponto -
[TUTORIAL] Resolvendo qualquer erro na data base
[TUTORIAL] Resolvendo qualquer erro na data base
Alencar123 reagiu a Danihcv por uma resposta no tópico
1 pontoUsa esse: CREATE TABLE tile_store ( house_id INTEGER NOT NULL, world_id INTEGER NOT NULL DEFAULT '0', data LONGBLOB NOT NULL ) Atualizando o tutorial...1 ponto -
[SPELL]Tem como mudar o local em que fica o buff
Tenta aí.1 ponto
-
(Resolvido)Nao consigo logar no meu server
(Resolvido)Nao consigo logar no meu server
VitorTibia14 reagiu a ViitinG por uma resposta no tópico
1 pontoNão.O IP 127.0.0.1 é somente para você entrar.1 ponto -
(Resolvido)Nao consigo logar no meu server
(Resolvido)Nao consigo logar no meu server
VitorTibia14 reagiu a ViitinG por uma resposta no tópico
1 pontoErro 10060 se não me engano é por causa de porta,tenta liberar a porta 7171/7172 no modem e firewall.1 ponto -
[pedido] Script balanceamento de Teams em WAR/Hardcore
* setPlayerStorageValue(cid, STORAGE_TEAM_ID, 0) <<< Essa Funçao Remove a Storage agora e so voce por Para quando o Jogador Morre ou Logar.1 ponto
-
(Resolvido)ola como eu tiro o comando /t
Seguinte, para ele ir para outra cidade com o comando /t ele precisa SER de outra cidade Para arrumar em questão a player não poder usar, vá na pasta do seu ot em xml, abra o groups com bloco de notas ou qualquer outro, e veja a parte access digamos o meu de god é é "5" Agora, vá em talk actions abra o script "talkactions" e procure o comando /t em access mude para o desejado1 ponto
-
(Resolvido)ola como eu tiro o comando /t
Cuidado com double post amigo,você só poder dar UP após 24 horas ! É só mudar no talkactions.xml está tag,bote o access 3 ou 5 : <talkaction log="yes" words="/t" access="3" event="script" value="teleportmaster.lua"/>1 ponto
-
[pedido] Script balanceamento de Teams em WAR/Hardcore
viu antes de voce mexer em algo ve se esta balanceando troca seu !online por esse aki : *Vai em Talkactions online.lua e troca por esse aki: esse comando mostra se esta balanceando os times ou nao ai voce mesmo tira sua Duvida =)1 ponto
-
Adicionando Monsters Novos
1 pontoO tópico foi movido para a área correta, preste mais atenção da próxima vez! Leia as regras do fórum: http://tibiaking.com/forum/topic/1281-regras-gerais/?p=7680 Este tópico foi movido: De: "OTServ → Downloads → Servidores Derivados" Para: "OTServ → Suporte OTServ → Suporte de Servidores Derivados"1 ponto
-
(Resolvido)ajuda cooldown em spell com multiplos hits
(Resolvido)ajuda cooldown em spell com multiplos hits
Mauricio Marcari reagiu a llucas75 por uma resposta no tópico
1 pontoA então deixa exausted em 1500 e substitua sua magia por essa V Obs: tinha um errinho lá no meio, pega e copia e coal denovo se estiver olhando agora isso...1 ponto -
(Resolvido)[AJUDA]Erro Distro 0.4 ! LEIA
(Resolvido)[AJUDA]Erro Distro 0.4 ! LEIA
DeathRocks reagiu a Qwizer por uma resposta no tópico
1 pontoisso acontece quando você abre o ot em uma database que tem items nas house abra o ot normal com esses erros e de um /save, depois feche e abra novamente que o erro vai sumir, caso não suma vai na sua database e limpe a tabela tile_items. que o erro some.1 ponto -
(Resolvido)[PEDIDO] Mapa Capture The Flag
(Resolvido)[PEDIDO] Mapa Capture The Flag
DeathRocks reagiu a macalo por uma resposta no tópico
1 pontoesta aki http://www.tibiaking.com/forum/topic/21407-mapa-4-eventos/ rep + s eeu ajudei corretamente .1 ponto -
Como remover função da Black Skull e White Skull?
AEHAEHEAHUEA não tem e não terá cara, gente que realmente entende disso disposta a ajudar sem cobrar dinheiro como a maioria faz não tem, aqui só tem gente que acha que entende alguma coisa mas na verdade não consegue nem ler e interpretar direito um post como esse llucas75 ae, já TENTOU respoder 2 posts meus mas nem ler direito conseguiu. Só querem ganhar rep+ sem nem conseguir ajudar direito. Esse fórum tá completamente morto. Mas enfim, o distro que tu precisa tá aqui, se tu usa win32 já tá aqui compiladinho, só não tem antidv e as vezes dá uns crash, mas tá ae. http://www.4shared.com/rar/NiGiIctGce/DistroWar86.html? coloquei o config do server que ele veio junto, só pra tu se basear em algumas coisas ali que EU ACHO que tem que estar iguais, tipo vê ali no config aonde tem negócio de frags, de kill, etc e deixa igual no config do teu serv. Eu fiz isso aqui no meu e funcionou perfeitamente. Quer dizer, só as white skull, green skull e yellow skull que somem depois de uns minutinhos que tá sem pz, mas é só relogar ou matar mais uma pessoa que elas voltam. Fora esse probleminha, tá 100%. Abraço.1 ponto
-
(Resolvido)Nao consigo logar no meu server
(Resolvido)Nao consigo logar no meu server
VitorTibia14 reagiu a luanluciano93 por uma resposta no tópico
1 pontoTa usando o IP local?1 ponto -
PVP Tool (Zone) não funciona corretamente
Não presisava você selecionar PvP Tool na area era so fazer a arena normal não deixando com area PZ ou No-PvP , deixando sem nada vai ficar como PvP1 ponto
-
Headshot - Critical hit
Headshot - Critical hit
Zanrix reagiu a MaXwEllDeN por uma resposta no tópico
1 pontofunction onChangeHealth(cid, attacker, value, type, secondaryDamage, secondaryType) if type ~= 1 then return true end if isPlayer(attacker) and getPlayerStorageValue(cid, 71257) < 1 then if math.random(100) <= chance_percent then local dmg = value * (extra_damage_percent / 100) setPlayerStorageValue(cid, 71257, 1) doTargetCombatHealth(attacker, cid, type, -dmg, -dmg, 255) setPlayerStorageValue(cid, 71257, -1) doCreatureSay(cid, "CRITICAL", 19) return false end end return true end Tente este.1 ponto -
Headshot - Critical hit
1 ponto
-
Página de Pagamentos [Depósito, Paypal e PagSeguro]
Página de Pagamentos [Depósito, Paypal e PagSeguro]
gabirucola reagiu a luanluciano93 por uma resposta no tópico
1 pontoApaga tudo que ta dentro e coloca isso: Espero ter ajudado!1 ponto -
(Resolvido)[Ajuda] Ajuda Nesse Script Aqui Por favor :c
(Resolvido)[Ajuda] Ajuda Nesse Script Aqui Por favor :c
Huziwara reagiu a Jamison Collins por uma resposta no tópico
1 pontoTente isso: -- [[ Bike Sistema 100% -- By SmiX ^}^ ]] -- --[[ • Ela deixa você mais rápido a partir da volocidade determinada no script + sua estamina.]]-- --[[ • Adiciona e remove outfit do player.]]-- --[[ #Lembrando todos os campos com variaveis escritas são preechidas com {"sim" ou "nao"}]]-- local config = { textoAvisandoSuaVelocidade = "sim", -- Se você quiser que o script mande uma mensagem para o player dizendo a velocidade dele premiumAccount = "no", -- Se precisa de premium velocidadeDaSuaBike = 80, -- A volocidade da bike, sempre bote números de 1 á 10. Caso bote mais que isso a volicidade vai ficar muito alta. outfitMale = 1581, -- Outfit male outfitFemale = 1581, -- Outfit female efeito = 18, -- Efeito que ira aparescer quando der use. storageValue = 5602, -- Storage Para a bike usaVipSystem = "no", -- Caso alguem use algum tipo de vip system bote sim storageUsadaNoVipSystem = 33339, -- Aqui boata a storage do vip system caso use } function onUse(cid, item, itemEx, fromPosition, toPosition) if isPlayer(cid) and getCreatureOutfit(cid).lookType == 814 then return false end if getPlayerStorageValue(cid, config.storageValue) <= 0 then setPlayerStorageValue(cid, 3624, ""..getPlayerStamina(cid).."") if config.premiumAccount == "sim" and isPremium(cid) or config.usaVipSystem == "sim" and getPlayerStorageValue(cid, config.storageUsadaNoVipSystem) >= 1 then a = {lookType = config.outfitMale, lookHead = getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet} b = {lookType = config.outfitFemale, lookHead = getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet} doSendMagicEffect(getThingPos(cid), config.efeito) speedRate = config.velocidadeDaSuaBike * 1000 doChangeSpeed(cid, speedRate + getPlayerStorageValue(cid, 3624)) setPlayerStorageValue(cid, config.storageValue, 1) if getPlayerSex(cid) == 0 then doSetCreatureOutfit(cid, b, -1) else doSetCreatureOutfit(cid, a, -1) end if config.textoAvisandoSuaVelocidade == "sim" then doPlayerSendTextMessage(cid, 27, "Sua velocidade agora é: "..getPlayerStorageValue(cid, 3624).."") end else return TRUE end else setPlayerStorageValue(cid, config.storageValue, 0) doSendMagicEffect(getThingPos(cid), config.efeito) doRemoveCondition(cid, CONDITION_OUTFIT) retireSpeedRate = config.velocidadeDaSuaBike * 100 playerSpeedNow = -retireSpeedRate - getPlayerStorageValue(cid, 3624) doChangeSpeed(cid, playerSpeedNow) end return TRUE end1 ponto -
ajuda configurar stages.xml
ajuda configurar stages.xml
Cat reagiu a Jamison Collins por uma resposta no tópico
1 pontoCalculando Loot: chance="100000" = 100% chance="10000" = 10% chance="1000" = 1% chance="100" = 0,1% chance="10" = 0,01% chance="1" = 0,001%1 ponto -
Parabéns ADMs do TibiaKing
Parabéns ADMs do TibiaKing
Cat reagiu a Jamison Collins por uma resposta no tópico
1 pontoBem, hoje eu estava mexendo no RME, e então precisei do Tibia 10.34, então eu fui procurar... Quando me deparei com o "Tibia Clients TK" totalmente novo... Fiquei muito surpreso! Está realmente maravilhoso, e muito bem organizado... Quero parabenizar o ADM ou algum integrante do grupo que fez isso. Vale a pena todos os membros conferirem isso e saberem a ferramenta poderosa que o TibiaKing possui. Não sei se aqui é a área certa para esse tipo de tópico, se não for, mova-o e peço desculpas.1 ponto -
(Resolvido)Groups Bugado
(Resolvido)Groups Bugado
Cat reagiu a Jamison Collins por uma resposta no tópico
1 pontoBem, vamos lá... Primeiramente, deixe tudo do jeito que você baixou, sem alterações. Agora, você mudará o group id do seu personagem para 3. Logo depois, você entrará na tabela de accounts, e na mesma conta onde tiver o seu personagem, você alterará o type para 5. Assim : Desculpa a demora.1 ponto -
[TFS 1.0] Compilações [Last Rev.: 02/03/2014]
[TFS 1.0] Compilações [Last Rev.: 02/03/2014]
Cat reagiu a Jamison Collins por uma resposta no tópico
1 ponto@UP TFS com suporte para versão 10.35 ! Obs.: Por mais que eu não esteja mais no equipe do Tibia King, não significa que eu deixarei de atualizar o tópico. Essa última atualização(02/03/2014) demorou pois eu estava esperando um novo conteúdo significante do TFS, que no caso, é a atualização para 10.35 ! Obrigado.1 ponto -
[PEDIDO] Como Colocar Exp Adicional Para Premiuns
[PEDIDO] Como Colocar Exp Adicional Para Premiuns
Cat reagiu a Jamison Collins por uma resposta no tópico
1 pontoAbra seu login.lua (localizado na pasta creaturescript > scripts) e logo depois de "function onLogin(cid)", adicione isso : local extra_rate = 2 -- No caso, estaria como double XP if isPremium(cid) then doPlayerSetExperienceRate(cid, extra_rate) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You are premium, enjoy "..extra_rate.."x extra experience, skills and magic level rates.") end1 ponto -
(Resolvido)[PEDIDO] Script deixar player Mudo.
(Resolvido)[PEDIDO] Script deixar player Mudo.
thehells reagiu a Jamison Collins por uma resposta no tópico
1 pontoCrie um arquivo .lua na pasta Talkaction chamado mute.lua, e adicione isso : function onSay(cid, words, param, channel) if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return true end local t = string.explode(param, ",") local pid = getPlayerByNameWildcard(t[1]) if(not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. t[1] .. " is not currently online.") return true end if(getPlayerAccess(cid) <= getPlayerAccess(pid) or getPlayerFlagValue(pid, PLAYERFLAG_CANNOTBEMUTED)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Cannot perform action.") return true end if(words:sub(2, 2) == "u") then doRemoveCondition(pid, CONDITION_MUTED, 0) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getCreatureName(pid) .. " has been unmuted.") return true end local time = tonumber(t[2]) if(not time or time < 1) then time = -1 end doMutePlayer(pid, time) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getCreatureName(pid) .. " has been muted for" .. (time < 1 and "ever" or " " .. time .. " seconds") .. ".") return true end Abra talkaction.xml e adicione essa tag : <talkaction log="yes" words="/mute;/unmute" access="3" event="script" value="mute.lua"/> Para utilizar o comando basta falar : /mute player, tempo Lembrando que o tempo é em segundos.1 ponto -
(Resolvido)[PEDIDO] Ao clicar em alavanca ganha vip
(Resolvido)[PEDIDO] Ao clicar em alavanca ganha vip
Cat reagiu a Jamison Collins por uma resposta no tópico
1 pontolocal config = { effect = 28, premiumdays = 31, -- quantidade de premium days que o player receberá. position = {x = 1027, y = 913, z = 5}, -- posição para onde o player será teleportado coin = 2160, -- ID da moeda (crystal coin no caso) amount_coins = 100, -- quantidade de moeda uid = 4500 -- UniqueID que você colocará no RME map editor e na TAG action.xml } function onUse(cid, item, frompos, item2, topos) if (item.itemid == 1945 or item.itemid == 1946) and item.uid == config.uid then doTeleportThing(cid, config.position) doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) doSendMagicEffect(getThingPos(cid), config.effect) doPlayerAddPremiumDays(cid, config.premiumdays) doBroadcastMessage(getCreatureName(cid) .." has received ".. config.premiumdays .." premium account days!") doPlayerAddItem(cid, config.coin, config.amount_coins) end return true end Tente esse, eu sem querer havia esquecido do "end"1 ponto -
(Resolvido)Comando que da premmium
(Resolvido)Comando que da premmium
kaveira11 reagiu a Jamison Collins por uma resposta no tópico
1 pontoTente isso : Crie um arquivo .lua chamado : addpremium.lua. Cole esse script dentro : function onSay(cid, words, param, channel) local t = string.explode(param, ",") if(param == '') then pid = getCreatureTarget(cid) if(pid == 0) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return true end else pid = getPlayerByNameWildcard(t[1]) end if(not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. t[1] .. " is not currently online.") return true end local m = tonumber(t[2]) doPlayerSendTextMessage(pid, MESSAGE_STATUS_CONSOLE_BLUE, "You have received ".. m .." premium account days") doPlayerAddPremiumDays(pid, m) return true end Depois crie a TAG na talkaction.xml assim : <talkaction log="yes" words="/addpremium" access="5" event="script" value="addpremium.lua"/> Você usará assim : /addpremium nomedoplayer, diasdepremium1 ponto -
[8.6] War On Rookgaard Team
1 pontoRookwar - V.0.2 Based on TFS 0.3.6 Client 8.60 2 Teams Red Team Green Team Content: Creating your own accounts 1 / 1, You begin to level 100, Entering receives your skills, you do not lose items to die only in Red and black skull, By killing a player receives 500gps, Automatic broadcast, Map Rookgaard (edited), Red team temple, Green team temple, Global Temple, Trainers, Depot, Shops. Depot, Shops. Npcs: Npc Skuller sell Sacred skull for remove skulls and frags, Npc Varkhal sell first and secconds addons, Npc Amuletero sell amulets, Npc Donal sell food, Npc Pancho the seller of loot. Scripts: mods/remove_skulls.xml, creaturescripts/deathBroadcast.lua, creaturescripts/onkill.lua, creaturescripts/skills.lua, creaturescripts/onlogout.lua, creaturescripts/firstitems.lua, movements/Green.lua, movements/Red.lua. Screens Shots: Account god: Acc: god Pass: god Download: 4Shared Scan Rook: Virus Total Download Dlls: 4Shared1 ponto
-
[Action] Destruir Paredes
[Action] Destruir Paredes
santoss011 reagiu a Ryzor por uma resposta no tópico
1 pontoOlá pessoal eu venho aqui contribuir com algo que creio eu que não á por aqui. é o meu primeiro Script (action) que fiz com a intenção de trazer mais RPG a servidores. Testado em: TFS 0.3.6 (8.60) Descrição: O Script funciona da seguinte maneira, o player da use em um Machado e clica na parede, logo depois a parede será destruida, a parede quebra em 3 Partes, ou seja tem que usar o machado 3 vezes na parede. Bom vamos ao Script 1° Primeiramente você tera que ir no RME e colar um UniqueID na parede que será destruída Em data/actions/scripts copie um arquivo qualquer e renomeie para destruction.lua 2° Agora em data/actions/actions.xml adicione: Código: <action itemid="2391" event="script" value="destruction.lua"/> Legenda: Verde: ID do item que será usado para destruir a parede, eu uso este: Vermelho: São os id das paredes, Ex: parede normal, parede destruida, parede mais destruida. Azul: São os id das paredes depois de destruida, Ex: id 3361 vai virar 3399, depois 3399 vai virar 3387 assim por diante Vídeo mostrando o Sistema; http://youtu.be/-01nLh9L3Bg Créditos: Bloodwalker ( Por Fazer O Script ) GodMarini ( Por trazer Ao TK )1 ponto -
Dicas para Treiners Naturais
Dicas para Treiners Naturais
santoss011 reagiu a Ryzor por uma resposta no tópico
1 pontoDicas para Treiners Naturais A intenção deste tutorial é mostrar aos mappers, iniciantes ou não, como pode ser feito áreas para treino naturais, ou seja, um lugar para os players treinar sem ser exatamente com treiner monk. Você deve estar se perguntando: "Porque vou me dar ao trabalho de criar algo assim se com um monte de treiner monk num prédio é mais fácil?" Não existe uma resposta especifica para esta pergunta, mas veja bem, se utilizar a idéia deste tutorial você poderá fazer um mapa diferente, bonito e inovador, a idéia deste tutorial não é lhe ensinar "tin tin por tin tin", mas dar uma visão diferente sobre treiners. -A caverna do treino: Na imagem abaixo mostro onde o player irá treinar. Se você reparar bem, há "cantos" onde o player pode ficar que somente duas criaturas irão ataca-lo. -Veja a outra imagem: As bolinhas vermelhas é a posição do player e os quadrados verdes são onde os slimes (ou outra criaturas) ficariam. Tibia possui possui muita variedade de criaturas, e com a edição podemos criar um número infinito delas. Há a possibilidade de fazer várias áreas diferentes, não só com slimes, mas com rotworms, cyclops, tudo que for favorável ao treino de skills. -Cave de rotworms: Tudo o que precisamos fazer como mapper é dar ao jogador a possibilidade do treino, moldando o mapa para tal e adicionando o monstro certo. Talvez seja necessário um editada nos monstros, como os slimes, crie um monstro chamado Slime Mother e faça-o summonar slimes normais, assim os players saberão quem é o slime que não poderão atacar. Crie uma Rotworm Queen que sumonne Rotworms ou Carrion Worms, ou até mesmo uma máquina que sumonne dwarfs. -Localização: Acho que é importante ressaltar que não ficaria legal colocar esses treiners naturais no meio da cidade com uma plaquinha dizendo: "Treiners Here!" Legal mesmo é colocar eles no meio de uma hunt, dentro de uma caverna, fazer com que o player VEJA que ali ele pode treinar. -Considerações finais: Bem, espero que esse tutorial tenha dado boas dicas a todos vocês e espere ver serves com treiners assim, bem natural. Abraços!1 ponto -
[8.6] War On Rookgaard Team
1 pontoComentem ae no que achou1 ponto
-
[8.6] War On Rookgaard Team
1 pontodlls está ai funcionando,scan está com erro + prometo atulizar,creditos achei em um outro forum vi que aki não tinha e coloquei aki.1 ponto