
Tudo que xWhiteWolf postou
- (Resolvido)Dois pedidos!
-
[Ajuda] DamageCondition
pensei numa solução aqui e vou tentar testar amanhã a noite. Até agora o script de ignite ficou assim: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 5) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 3) local condition = createConditionObject(CONDITION_FIRE) setConditionParam(condition, CONDITION_PARAM_DELAYED, 1) setCombatCondition(combat, condition) addDamageCondition(condition, 1, 100, -math.random(390,1100)) local cooldown = 300 function onCastSpell(cid, var) if os.time() - getPlayerStorageValue(cid, 19329) >= cooldown then doPlayerSetStorageValue(cid, 19329, os.time()) doCombat(cid, combat, var) local target = getCreatureTarget(cid) for i = 1,5 do addEvent(function() if target ~= 0 and isCreature(target) and isCreature(cid) then doTargetCombatCondition(cid, target, condition, 15) end end, 1000*i) end else doPlayerSendCancel(cid, "Your ignite is in cooldown, you must wait "..(cooldown - (os.time() - getPlayerStorageValue(cid, 19329))).." seconds.") end return false end to pensando se faço por ataque normal e faço parecer que é uma condition ou se crio várias outras conditions e dependendo do (level + ml) /5 ele retorna uma condition diferente
- Sistema de Reset 100%
-
exori por stage level
ali no meio vc tem a fórmula e vc pode ver que ela utiliza level local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA) setCombatParam(combat, COMBAT_PARAM_USECHARGES, true) local area = createCombatArea(AREA_SQUARE1X1) setCombatArea(combat, area) function onGetFormulaValues(cid, level, skill, attack, factor) local skillTotal, levelTotal = skill + attack, level / 5 return -(skillTotal * 1.5 + levelTotal), -(skillTotal * 2.5 + levelTotal) end setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") function onCastSpell(cid, var) return doCombat(cid, combat, var) end nesse caso o exori vai pegar sua skill total e multiplicar por 1.5x e somar com seu level.. isso vai ser o dano minimo; O dano máximo é a skilltotal multiplicada por 2.5x e somada com o level total.
-
(Resolvido)Não consigo adicionar atributos aos itens
seguinte amigo, weapons.xml só serve pra vc editar dano das wands ou fazer scripts pras weapons.. tudo que vc quiser fazer de dar atributo (algo secundário) tem que ser pelo movements.xml pq vai ser ele que vai ativar ou desativar os atributos a mais, tanto ao equipar (Function onEquip) como ao desequipar (Function DeEquip)
-
[Ajuda] DamageCondition
tentei de tudo mas não consegui.. Acho q função certa seria essa daqui setConditionFormula(combat, mina, minb, maxa, maxb) mas não consegui utilizar ela. na melhor das hipóteses consegui deixar assim addDamageCondition(condition, 1, 100, -math.random(390,1100)) mas como a condition obrigatoriamente tem que ficar fora do script o math.random é sempre o mesmo até o script ser recarregado novamente. Esse fds vou procurar melhor e tento te dar uma resposta mais satisfadora
-
(Resolvido)[erro] Pq o storage desse script não esta setando devolta?
os.time() é uma função que retorna o Unix time. Basicamente são os segundos que se passaram desde 00:00:00 de 1 de janeiro de 1970. Foi a data em que o "tempo" começou na era dos computadores e a medida acabou sendo usada até hoje. É uma ótima função para brincar com o tempo e é amplamente usada em todo tipo de linguagem. No tibia seus principais usos estão em global events e storages (exaustão entre comandos). O formato principal dessa função é assim. Fazer tal coisa salva o os.time num storage fim pegar o os.time novo e subtrair o os.time antigo (getPlayerStorageValue), se isso for >= ao tempo que vc quer, então permitir o resto do script senão retorna erro: falta ainda (tempo + (getPlayerStorageValue (storage do os.time) - os.time() (novo)) ) fim http://en.wikipedia.org/wiki/Unix_time
-
[ PEDIDO ] Da Use em um item e ganha uma talkactions por dias
isso aí llucas, to gostando de ver! Rep + pra ti
-
(Resolvido)Attack msm q no bixo
acho q o problema foi que vc deixou um numero muito alto no multiplicador de dano e deixou um numero mt pequeno no multiplicador de defesa: <formula meleeDamage="8.0" distDamage="8.0" wandDamage="3.0" magDamage="3.5" magHealingDamage="7.0" defense="1.1" magdefense="1.3" armor="50.0"/> aumenta o defense, magdefense e o armor.. isso pra cada classe!
- Sistema de Reset 100%
-
[PEDIDO] Cast system para 8.6
Vou te ensinar 5 passos simples pra conseguir tudo que vc quiser aqui: 1) clica no Procurar e escreve oque vc quiser. 2) Repita os passos anteriores pra qualquer dúvida que vc tenha; 3) Caso não ache, procure no google seguido de otserv.. exemplo: quero achar um castle war 24h, então eu escrevo: "Castle War 24h otserv" 4) Caso não tenha sucesso, crie um tópico MUITO BEM EXPLICADO sobre qual é sua dúvida, faça questão de reler seu tópico a fim de não deixar nenhuma dúvida e checar possíveis erros de ortografia que tornem a leitura dúbia, lembre de falar sua versão de server e que versão de tibia é seu OTserv 5) Seja paciente e agradeça a qualquer um que se disponha em responder seu tópico, mesmo que ele não ajude. Edit: achei esses 2 tópicos aqui, espero que ajude: http://www.tibiaking.com/forum/topic/26602-sistema-cast-system-para-86/ http://www.tibiaking.com/forum/topic/27617-cast-system-tfs-04-86/
-
(Resolvido)Dois pedidos!
danih, vc só colocar as coisas fora da function principal quando elas não variam com o tempo. a pos do player tem que ser pega quando ele clicar na alavanca e não quando liga o server. o certo seria: function onUse(cid, item, fromPosition, itemEx, toPosition) local pos = getPlayerPosition(cid) local up = {x= pos.x, y = pos.y, z= pos.z+1} -- aumenta um andar local down = {x= pos.x, y = pos.y, z= pos.z-1} -- diminui um andar. if (item.itemid == 1946) then doTeleportThing(cid, up) elseif (item.itemid == 1945) then doTeleportThing(cid, down) end return true end função ao Usar: pega a posição do Player calcula up e down se o itemid que é clicado tiver valor igual a 1946 então teleportar pra up senão, se o itemid que é clicado tiver valor igual a 1945 então teleportar pra cima fim do se retornar verdadeiro para a função (nesse caso ele checa a função e permite ou não a clicagem, se tivesse return false ele não permitira que vc clicasse e seria como se n tivesse usado (é util pra scripts que utilizem doRemoveItem) ) fim da função ___________________________________________ Vale lembrar que não irá bugar porque nesse script ele não muda o id da alavanca ao clicar;
-
(Resolvido)Diferença entre scripts
bom, a galera tá usando mais loops [for, while] (digamos que tá na moda) e tão preferindo fazer funções. O script novo é basicamente isso, e sem contar tb que ele é pro TFS novo (1.0) nessa nova versão você pode inserir uma função dentro de outra usando ":" como nesse exemplo aqui for i = 1,4 do Player(cid[5-i]):teleportTo(new_player_pos[i]) para i = 1,4 fazer: Player(cid[5-i]): teleportar para (NovaPosiçãoDePlayer) Ele vai começar com i = 1, daí teremos Player de numero 4 vai ser teleportado para a posição de numero 1 da table de new_player_pos dps o player de numero 3 vai ser teleportado pra pos de numero 2... e assim até i = 4. O resto é meio q entendível percebendo essa lógica das tables.. #Table retorna o numero de elementos que essa Table possui; No caso local players_area é uma table de 2 elementos. local players_area = { {x = 33225, y = 31671, z = 13}, --- PRIMEIRO ELEMENTO {x = 33222, y = 31671, z = 13} ---- SEGUNDO } já a new _player_pos possui 4 elementos, um pra cada player local new_player_pos = { {x = 33222, y = 31659, z = 13}, {x = 33221, y = 31659, z = 13}, {x = 33220, y = 31659, z = 13}, {x = 33219, y = 31659, z = 13} }
-
(Resolvido)Dois pedidos!
dica pra fazer o do elevador: if item.id = 1945 then local pos = getPlayerPos (cid) np = {x= pos.x, y = pos.y, z= pos.z+1} -- aumenta um andar doTeleportThing(cid, np) elseif item.id = 1946 then np = {x= pos.x, y = pos.y, z= pos.z-1} -- diminui um andar. doTeleportThing(cid, np) end ISSO É SÓ UM ESBOÇO de como fazer o script. Daí vc coloca um actionid no actions.xml e coloca eles na alavanca, se o item for 1945 ele sobe o player e se for 1946 ele desce um andar.
- Heal aura system
-
Retirando a vida e mana do player
não precisa fazer por query :/ é só colocar do jeito que o Max demonstrou pois já há a função setCreatureMaxHealth(cid, newHp) e setCreatureMaxMana(cid, newMana) eu usei assim no meu sistema de reset: local hp = getCreatureMaxHealth(cid) local resethp = hp*(config.percent/100) setCreatureMaxHealth(cid, resethp) local differencehp = (hp - resethp) doCreatureAddHealth(cid, -differencehp) local mana = getCreatureMaxMana(cid) local resetmana = mana*(config.percent/100) setCreatureMaxMana(cid, resetmana) local differencemana = (mana - resetmana) doCreatureAddMana(cid, -differencemana) se vc quiser conferir como ficou é só clicar na minha assinatura pra ver o script.
-
Castle War 24hras Ligando Automaticamente
tem outros sistemas de castle que contém o global events, dá uma procurada aí que vc acha.. aqui no TK tem pelo menos uns 2
-
Oque usar talkactions
faz uma function onLogin que sete um storage com os.time () no player, dai na talkaction vc coloca pra checar os.time () - esse storage que vc salvou. Dessa forma vc vai ter como medir a diferença de tempo em que ele logou e o tempo na hora que ele executa a talkaction.
- (Resolvido)Attack msm q no bixo
-
[ PEDIDO ] Da Use em um item e ganha uma talkactions por dias
único erro aparente é que o os.time() não usa milisegundos, ele usa o tempo em segundos.. então não precisa multiplicar por mil; local pausa = days*24*60*60*1000 ficaria local pausa = days*24*60*60 e um adendo: quando vc pretende colocar action por itemid você não precisa colocar esse if item.itemid == seuitem porque o script só vai ser ativado quando for aquele itemid então não faz sentido isso. A gente coloca essa condicional quando tiver mexendo com dois ou mais items no mesmo script ou em alguns casos extremos quando o cara quer ter certeza absoluta que o action/uniqueid pertence aquele item específico
-
Sistema de Reset 100%
Ulatson, eu ando meio ocupado pra ficar scriptando então só vou dar dicas de como fazer ou onde conseguir: tem como colocar no script por exemplo para o Player falar só !resetar? Esse script foi feito para ser com Npc (porque eu acredito que dá mais RPG pro jogo), aqui no fórum vc encontra outros scripts feitos em talkaction desse modelo aí que você quer nesse script os outros jogadores vão conseguir visualizar quantos resets o player tem ? sim, ao dar Look aparece a quantidade de resets. tem como colocar nesse modelo abaixo: level 10.000 -3 resets após 3 resets o player só vai poder resetar no level 50.000 apos 7 resets o player vai ter que resetar 70.000 Ter tem, faz uma function checkLvl (cid) que verifique o numero de resets, se for <3 return 10000, se for >=3 e <7 return 50000 e se for >=7 return 70000, daí no local newminlevel = config.minlevel + (getResets(cid) * config.levelbyreset) vc coloca só checkLvl (cid) pra executar a função. e ter magias por exemplo star dead (3 resets) exevo gran mas mort (7 resets ) pra fazer isso é só criar a magia que vc quiser e colocar logo depois do function onCastSpell: if getPlayerStorageValue(cid, 378378) >=3 then resto do script end return true ---da função oncastspell end ---- da função on cast spell pra de 7 resets é só fazer a mesma coisa
-
Sistema de Reset para outra vocation
no caso vc teria que criar novas vocações como sendo Hibridos, exemplo: Se o cara era Paladino (3) e decide Virar Sorc (1) ele resetava como sendo Dark Paladin (9) e poderia usar algumas magias de paladin, algumas de sorc. Dava pra fazer tb algumas magias exclusivas de vocações como uma flecha encantada ou coisas parecidas.. A idéia é legal mas pra eu te ensinar a fazer isso você teria que manjar bastante das engines do seu server porque requer bastante trabalho manual. Em todo caso vou deixar essa resposta aqui e se alguém tiver muita paciência pra fazer pra ti ele pode usar essa lógica aqui pra te ajudar.
- (Resolvido)Attack msm q no bixo
- KNJ OTS, Custom
-
(Resolvido)[erro] Pq o storage desse script não esta setando devolta?
não executa porque "pos" não existe... que parametro é esse "pos" que você utilizou? function potion(pos, cid) local limitedeuso = 49012 doPlayerSetExperienceRate(pos,expfinal) doPlayerSendTextMessage(pos,22,textofinal) setPlayerStorageValue(cid, limitedeuso, 0) end você tinha que ter declarado ele antes ou utilizado outro parametro já conhecinho. Eis os conhecidos: function onUse(cid, item, frompos, item2, topos)