
TNTDZ
Membro
-
Registro em
-
Última visita
Histórico de Curtidas
-
TNTDZ deu reputação a Natanael Beckman em DEV C++ Compilando TFS no WindowsDEV C++, aprenda a compila uma source TFS!
Downloads(Baixe de acordo as configurações do seu windows):
DEV C++ CONFIGURADO PARA 32BITS
DEV C++ CONFIGURADO PARA 64BITS
REV 3884 TFS 0.4
Certo, feitos os downloads, extrai DEV C++ no Disco C e REV 3884 em Documentos.
======================================
Abra o DEV C++:
======================================
======================================
Abra a Source:
======================================
======================================
Localize a pasta da Source e abra o arquivo TheForgottenServer.dev, Documentos> trunk.r3884> dev-cpp> TheForgottenServer.dev:
======================================
=============================================================
======================================
Aguarde carregar todos os arquivos:
======================================
======================================
Vamos adicionar o parâmetro -D__CONSOLE__ no teclado digita ALT + P, clique em parameters e adicione o parâmetro... Feito? clique em OK:
======================================
======================================
Vamos compilar Source, no teclado digite CTRL+F9 e aguarde finalizar o processo:
======================================
======================================
Se der tudo certo em Log vai estar como mostra a imagem abaixo:
======================================
======================================
Verifique na pasta Documentos> trunk.r3884> dev-cpp você vai encontrar o arquivo TheForgottenServer.exe e pronto meu parabéns você compilou!
======================================
===========================================
Só isso galera tutorial rápido resumido e útil!
Créditos Natanael Beckman!
===========================================
Caso você adquira uma source com apenas os arquivos .cpp e .h e não sabe como compilar o projeto, abaixo vamos explicar:
Na pasta onde está localizado os arquivos .cpp e .h crie uma pasta chamada dev-cpp, e dentro dela adicione uma imagem icone.
Abra o DEV-C++, clique em File> New> Project:
Logo em seguida selecione Empty Project, em name terá o nome Project1 altere utilize o nome quer quiser, após isso clique em OK e em seguida selecione a pasta dev-cpp que criamos:
Agora selecione a opção Win32GUI caso use source OTX ou TFS selecione Win32Console ao lado << Browse selecione a imagem do icone que está na pasta Dev-Cpp.
No mesmo menu na aba Parameters em C++ compiler adicione os seguintes parâmetros:
-D__ENABLE_SERVER_DIAGNOSTIC__ -D__ROOT_PERMISSION__ -D__GROUND_CACHE__ -D__USE_SQLITE__ -D__USE_MYSQL__ -D__CONSOLE__ -D__WAR_SYSTEM__ E em Linker adicione as seguintes libs:
-lboost_filesystem -lboost_thread -lboost_system -lboost_regex -lsqlite3 -lwsock32 -llua5.1 -lws2_32 -leay32 -lmysql -lxml2 -lgmp -lz -s No mesmo Menu na aba Build Option escreva na segunda coluna horizontal escreva Obj e dê OK. Na lateral terá o nome do seu projeto o meu no caso é The Forgotten Server, clique com o botão direito do mouse em cima do nome e clique na opção Add Project: Selecione na pasta da sua source todos os arquivos .cpp e .h após isso salva o projeto e já pode compilar CTRL+F9: OpenSSL 0.9.8 1º baixe http://devpaks.org/details.php?devpak=73 2° abra Dev-Cpp > Tools > Packager Manager > Install > Seleciona o arquivo baixado e instala, fecha abre e testa!
Clica aqui \/ -
TNTDZ deu reputação a palubo em Como criar uma nova skillFala, galera! Beleza?
Sou novo aqui no TK e queria trazer algo para vocês. Dei uma procurada e não achei nada do tipo, então creio que esse tutorial possa ajudar algumas pessoas!
O que vou ensinar a vocês é como criar uma skill direto na source, o que permite que você utilize comandos como "getPlayerSkill", "doPlayerAddSkillTry" etc em seus scripts em Lua. Esse tutorial NÃO serve para criar skills de "combate", como sword, axe etc. Esse tipo de skill envolve vários outros parâmetros além do que mostrarei aqui. Quem sabe eu faça um tutorial sobre isso daqui um tempo.
Preview de uma skill que criei para meu projeto:
Para este tutorial, eu usei:
Sources do The Forgotten Server 0.3.7: Aqui serão feitas várias edições, criando a nova skill e tudo que é necessário para a skill funcionar corretamente. Microsoft Visual Studio 2010 Professional: Utilizei para compilar o TFS com as novas edições. Se não souber compilar, procure em outros tópicos aqui do fórum. Não é meu objetivo aqui ensinar como compilar. É necessário compilar com o MVS? Não. Se você preferir, pode fazer com outros programas. Notepad++: Usei porque acho um editor de texto simples, prático e funcional. Não gosto de editar os códigos no MVS. Porém sinta-se à vontade para usar o editor que quiser. haha SQLiteStudio 2.1.4: Será necessário para fazer pequenas alterações para que seu banco de dados funcione corretamente. Se você utiliza MySQL, terá que fazer essas edições por outro programa. Sources do OTClient: Como utilizo o OTClient em meu servidor, usarei ele para demonstrar como adicionar a barrinha à janela de Skill. Se você utiliza outro client, infelizmente, não poderei dar suporte, já que nunca editei outros clients. Codeblocks: Usei para compilar o OTClient. Mas pode ser feito com o MVS também. A escolha é sua! Passo 1 - Editar a source do TFS:
Passo 2 - Editar o OTClient:
Passo 3 - Editar o TFS:
Passo 4 - Editar a database:
Pronto! Seu servidor já está configurado com a nova skill! Agora você poderá usar Lua para configurá-la!
Vou dar um exemplo MUITO simples de como isso poderia ser feito em Lua:
Claro que essa action acima é algo muito simples, mas, tendo o servidor já configurado, acredito que essas modificações abram uma gama de possibilidades imensas a todos que querem desenvolver uma nova skill. Espero que tenham gostado e que o tutorial seja útil para alguém! haha
Qualquer erro ou bug, me avisem!
Atenciosamente,
Auro Mota.
-
TNTDZ deu reputação a xWhiteWolf em New Library v. 1.2Fala galera, hoje vim trazer pra vocês uma nova biblioteca de funções que eu venho desenvolvendo, pretendo ir atualizando esse tópico constantemente sempre adicionando funções novas e explicando a utilização delas. Algumas funções que eu coloquei aqui estão presentes na OTAL também, porém algumas eu fiz pequenas correções de forma que essa lib poderia facilmente substituir a OTAL sem grandes problemas (pelo menos se você utilizava apenas as funções básicas da otal)
Todas as funções que não tem -- nome do autor do lado dela foram feitas por mim, xWhiteWolf ou Night Wolf (NW). O restante delas são créditos dos devidos autores, apenas coloquei pois considero funções vitais no server de cada um. Crie um arquivo em data/lib chamado 075 - White Wolf Functions.lua e coloque o seguinte código dentro:
Agora eu vou explicar oque cada função faz porque de nada adianta lançar uma lib e não explicar oque ela faz não é mesmo? hahaha
Obs inicial: quando uma função tiver em seus parametros um [] significa que oque está dentro do colchetes não é um parâmetro obrigatório.
Como usar: doShowTimeByPos(cid, getCreaturePosition(cid), 20, 20)
Irá fazer uma contagem regressiva na posição que o player se encontra começando de 20 e mandando a mensagem na mesma cor da fala dos monstros.
Essa função é bem útil em actions/spells para fazer contagem de tempo em runas como a magic wall e ver quanto tempo falta pra magic wall sumir)
Obs: Espero que ajude bastante pessoas a entender sobre funções, eu utilizei cid como o principal uid das funções nos exemplos mas você pode muito bem utilizar outros uids, fica a critério seu.
Qualquer dúvida comentem abaixo que eu vou tentar ajudar da melhor maneira.
Ahhh, isso daí foi testado em 8.54 mas deve funcionar em quase todas as versões que tenham as funções básicas do TFS.
EDIT: Pessoal, agora é sério, essa lib tem fácil umas 600 linhas, das quais umas 500 eu devo ter codado sozinho (na mão, linha por linha). Eu tive todo o trabalho de testar cada uma delas e oque eu peço é o mínimo de gratidão e respeito. Se eu te ajudei clique em Gostei, se você tiver alguma dúvida eu to me colocando a disposição de responder qualquer coisa relacionada ao tópico, mesmo que você não saiba nem oque é uma lib apenas venha aqui e escreva sua dúvida.
EDIT 2: Duas novas funções adicionas, espero que gostem!
EDIT 3: Três novas funções adicionadas juntamente com suas respectivas explicações.
-
TNTDZ deu reputação a xWhiteWolf em Callbacks de creaturescriptsFala 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. :]
-
TNTDZ deu reputação a Rusherzin em (Resolvido)pedido tabela experiencia para levelSim, é na source. Mais especificamente em player.h.
static uint64_t getExpForLevel(uint32_t lv) { lv--; return ((50ULL * lv * lv * lv) - (150ULL * lv * lv) + (400ULL * lv)) / 3ULL; } -
TNTDZ deu reputação a Pedro. em duvida para nao perder experiencia nem backpackcreaturescripts\scripts
local blessLevel = 80 function onLogin(player) if player:getLevel() <= blessLevel then for i = 1, 5 do player:addBlessing(i) end player:getPosition() end return true end se for tfs 1.0 registre em login assim
player:registerEvent("BlessProtect") dps em xml
<event type="login" name="BlessProtect" script="bless_protect.lua"/> @edit li errado voce n qer perder nenhum % de nd ne?
-
TNTDZ deu reputação a Bruno Carvalho em LUA FunctionsTodas as funções do TFS 1.0
Ordem alfabética classificada excluindo metamétodos
Funções com metamétodos
Funções na source
http://pastebin.com/s5b4yVa7
Funções em lua
http://pastebin.com/bgpNHax2
Tópico original
-
TNTDZ deu reputação a xWhiteWolf em (Resolvido)duvida absorver elementossó itemsetAttribute, mas vc pode juntar as funções e colocando pra setar o atual + alguma coisa, semelhante ao que fazemos com storage. Só que aqui é concatenação de string (em vez de + vc vai usar ..)
Ex:
juntar 3 strings em uma frase
local a = "Meu nome"
local b = " é "
local c = "Anderson Faria"
local frase = a..b..c
supondo que temos só a e c poderiamos fazer:
local frase = a.." é "..c
-
TNTDZ deu reputação a xWhiteWolf em (Resolvido)duvida absorver elementosOlá amigo, primeiramente queria dizer que fico feliz de saber que meus scripts estão sendo úteis. Pro seu problema de healar apenas para danos de fogo: no callback onStatsChange nós temos alguns parametros que nos permite manipular que tipo de dano estamos recebendo:
function onStatsChange(cid, attacker, type, combat, value) cid - uid do player que tem os stats alterados
attacker - uid do player que implica essa mudança de stats
type - tipo de mudança de stats que está ocorrendo
combat - o tipo de combat que está sendo utilizado para fazer a alteração de stats
value - valor da mudança de stats
vide> http://www.tibiaking.com/forum/topic/34420-callbacks-de-creaturescripts/
Como você quer dar heal somente em danos de fogo, estamos procurando um combat do tipo
COMBAT_FIREDAMAGE Apenas faça um if combat == COMBAT_FIREDAMAGE ou if combat == 8 (no lugar desse 8 você bota no numero que aparece lá em data/lib/constant.lua
O meu está COMBAT_FIREDAMAGE = 8 então eu posso usar tanto 8 quanto COMBAT_FIREDAMAGE e aí você aplica o heal dentro dessa condição. Espero ter ajudado em algo