Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 05/20/10 em todas áreas

  1. Saymon14

    Bazzuka

    Bem eu resolvi fazer essa weapon por dois motivos vi uma especie de pedido em um topico e porque ela é facil de fazer. Primeiro vamos ao ITEM.XML em \data\items, pressione Ctrl + F e procure por 2140, em seguida cole isso no lugar: <item id="2140" article="a" name="Bazzuka"> <attribute key="weight" value="2000" /> <attribute key="attack" value="110" /> <attribute key="maxHitChance" value="100" /> <attribute key="weaponType" value="distance" /> <attribute key="range" value="8" /> <attribute key="breakChance" value="0" /> <attribute key="ammoAction" value="moveback" /> Feito isso vamos em \data\weapons\scripts, nessa pasta crie um arquivo com o nome bazzuka.lua e cole isso dentro: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 3) setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1, 0, 1, 0) local area = createCombatArea({ {0, 0, 1, 0, 0}, {0, 1, 1, 1, 0}, {0, 1, 1, 1, 0}, {1, 1, 3, 1, 1}, {0, 1, 1, 1, 0}, {0, 1, 1, 1, 0}, {0, 0, 1, 0, 0}}) setCombatArea(combat, area) function onUseWeapon(cid, var) return doCombat(cid, combat, var) end Depois abra o WEAPONS.XML, vá no final do arquivo onde fica Amumnition de Paladins e adicione essa linha: <distance id="2140" event="script" value="bazzuka.lua"/> Pronto ! Sua Bazzuka ja esta inserida. SCREENSHOT: O bom dessa Weapon é porque o attack dela é aleatorio, na vertical é um tipo de ataque e na horizontal é outro.
    2 pontos
  2. EDIT-- Como prometido adicionei velocidade na montaria, e fiz um sistema de blokeio para impossibilitar abrir o loot da criatura e assim debugar o server, aumentei o tempo de montaria e só espero que gostem --------------------------------------------------------------------------------------------------- Novato na area galera, bom esse sistema vai funcionar assim voce mata o War wolf clika nele (quando ele tiver morto) e voce vira um orc rider e o corpo dele some (pra deixar mais realista pra variar)... sem mais delongas peguei esse script do usuario chain q nao tinha nada a ver com esse abaixo e o editei, depois posto o link original -- Montaria system by Chain and Modified for Saymon14 ;D local function montar(parametros) cid = params[1] if getPlayerStorageValue(cid, 5555) == 1 then setPlayerStorageValue(cid,montado,-1) doPlayerSendTextMessage(cid,22,"Voce desceu da montaria.") if voc == 1 or voc == 5 then elseif voc == 2 or voc == 6 then elseif voc == 3 or voc == 7 then elseif voc == 4 or voc == 8 then end end end function onUse(cid, item, frompos, item2, itemEx, topos) --Configs-- local mount_creature = 6009 -- id do corpo da criatura local vipstorage = 1111 -- id do storagevalue do vip local voc = getPlayerVocation(cid) local sex = getPlayerSex(cid) params = { [1]=cid, [2]=lvl, [3]=voc, [4]=ml } roupamontado1 = {lookType = 4} roupamontado2 = {lookType = 4} roupamontado3 = {lookType = 4} roupamontado4 = {lookType = 4} local speed = 40 getCreatureSpeed(cid) montado = getPlayerStorageValue(cid,5555) vip = getPlayerStorageValue(cid,vipstorage) --end of configs-- --ACTION TIME!-- if item.itemid == mount_creature then addEvent(montar, 120000, params) --Sorc if voc == 1 or voc == 5 then doSendAnimatedText(getPlayerPosition(cid), "Uhuuuu!...", TEXTCOLOR_ORANGE) setPlayerStorageValue(cid,montado,1) doChangeSpeed(cid, speed) doRemoveItem(item.uid, 1) doSendMagicEffect(roupamontado1, 14) doSetCreatureOutfit(cid,roupamontado1, 120000) --Druid elseif voc == 2 or voc == 6 then doSendAnimatedText(getPlayerPosition(cid), "Uhuuuu!...", TEXTCOLOR_ORANGE) setPlayerStorageValue(cid,montado,1) doChangeSpeed(cid, speed) doRemoveItem(item.uid, 1) doSendMagicEffect(roupamontado1, 14) doSetCreatureOutfit(cid,roupamontado2, 12000) --Pally elseif voc == 3 or voc == 7 then doSendAnimatedText(getPlayerPosition(cid), "Uhuuuu!...", TEXTCOLOR_ORANGE) setPlayerStorageValue(cid,montado,1) doChangeSpeed(cid, speed) doRemoveItem(item.uid, 1) doSendMagicEffect(roupamontado1, 14) doSetCreatureOutfit(cid,roupamontado3, 120000) --Kina elseif voc == 4 or voc == 8 then doSendAnimatedText(getPlayerPosition(cid), "Uhuuuu!...", TEXTCOLOR_ORANGE) setPlayerStorageValue(cid,montado,1) doChangeSpeed(cid, speed) doRemoveItem(item.uid, 1) doSendMagicEffect(roupamontado1, 14) doSetCreatureOutfit(cid,roupamontado4, 120000) --No Voc elseif voc == 0 then doPlayerSay(cid,"Eu nao tenho voc!", 17) --- else return 0 end end return TRUE end <action itemid="6009" script="mwolf.lua" /> esse ID 6009 é o corpo do War Wolf, esse script gasta 1 de Soul para montar. DICA: tire o loot do War Wolf do seu server porque se os players mexer no loot dele tipo pega o food dentro do corpo vai dar DEBUG no server. SS: para os troxas coleguinhas que axam que só fiz Copiar, Colar, ta ai o LINK Original(CREDITOS 100% ao usuario CHAIN): Clique aqui INSTALANDO: va em \data\actions\scripts, copie qualquer arquivo e cole edit, dentro dele cole o codigo la de cima, e em seguida cole a tag no actions.XML -------------------------------------------------------------------------------- Finalizado ai em cima vamos seguir para um novo script Sistema de Montaria com Orc Marauder: -- Montaria system by Chain and Modified for Saymon14 ;D local function montar(parametros) cid = params[1] if getPlayerStorageValue(cid, 5555) == 1 then setPlayerStorageValue(cid,montado,-1) doPlayerSendTextMessage(cid,22,"Voce desceu da montaria.") if voc == 1 or voc == 5 then elseif voc == 2 or voc == 6 then elseif voc == 3 or voc == 7 then elseif voc == 4 or voc == 8 then end end end function onUse(cid, item, frompos, item2, itemEx, topos) --Configs-- local mount_creature = 11241 -- id do corpo da criatura local vipstorage = 1111 -- id do storagevalue do vip local voc = getPlayerVocation(cid) local sex = getPlayerSex(cid) params = { [1]=cid, [2]=lvl, [3]=voc, [4]=ml } roupamontado1 = {lookType = 342} roupamontado2 = {lookType = 342} roupamontado3 = {lookType = 342} roupamontado4 = {lookType = 342} local speed = 40 getCreatureSpeed(cid) montado = getPlayerStorageValue(cid,5555) vip = getPlayerStorageValue(cid,vipstorage) --end of configs-- --ACTION TIME!-- if item.itemid == mount_creature then addEvent(montar, 120000, params) --Sorc if voc == 1 or voc == 5 then doSendAnimatedText(getPlayerPosition(cid), "Uhuuuu!...", TEXTCOLOR_ORANGE) setPlayerStorageValue(cid,montado,1) doChangeSpeed(cid, speed) doRemoveItem(item.uid, 1) doSendMagicEffect(roupamontado1, 14) doSetCreatureOutfit(cid,roupamontado1, 120000) --Druid elseif voc == 2 or voc == 6 then doSendAnimatedText(getPlayerPosition(cid), "Uhuuuu!...", TEXTCOLOR_ORANGE) setPlayerStorageValue(cid,montado,1) doChangeSpeed(cid, speed) doRemoveItem(item.uid, 1) doSendMagicEffect(roupamontado1, 14) doSetCreatureOutfit(cid,roupamontado2, 12000) --Pally elseif voc == 3 or voc == 7 then doSendAnimatedText(getPlayerPosition(cid), "Uhuuuu!...", TEXTCOLOR_ORANGE) setPlayerStorageValue(cid,montado,1) doChangeSpeed(cid, speed) doRemoveItem(item.uid, 1) doSendMagicEffect(roupamontado1, 14) doSetCreatureOutfit(cid,roupamontado3, 120000) --Kina elseif voc == 4 or voc == 8 then doSendAnimatedText(getPlayerPosition(cid), "Uhuuuu!...", TEXTCOLOR_ORANGE) setPlayerStorageValue(cid,montado,1) doChangeSpeed(cid, speed) doRemoveItem(item.uid, 1) doSendMagicEffect(roupamontado1, 14) doSetCreatureOutfit(cid,roupamontado4, 120000) --No Voc elseif voc == 0 then doPlayerSay(cid,"Eu nao tenho voc!", 17) --- else return 0 end end return TRUE end <action itemid="11241" script="marauder.lua" /> Mesma coisa do outro só mudei o ID (11241) do corpo e o Looktype para os novatos que nao sabem modificar... SS LEMBRE SE Tire o loot das duas criaturas acima porque senao, dar DEBUG
    1 ponto
  3. Saymon14

    Dive System [8.54+]

    Bom ontem a noite em quanto eu tava cagando tive a idéia do DIVE SYSTEM que é o player chegar em uma area com Agua (Walkable) e falar o comando !dive e ser teletransportado para dentro do Mar... CREDITOS: modifiquei o Fly system do usuario Forcera... Link Original: CLIKE AKI Bom primeira coisa a fazer criar uma area com agua (Walkable) no Floor '7' e criar uma area Underwater no Floor '14', Depois adicione os seguintes Scripts na Pasta \data\talkactions\scripts COMANDO: !DIVE function onSay(cid, words, param, channel) flypos = getCreaturePosition(cid) npos = {x=flypos.x, y=flypos.y, z=flypos.z + 7} pos = getCreaturePosition(cid) if pos.z == 7 then if doTeleportThing(cid, npos) then doSendMagicEffect(npos, 14) else return 0 end end return TRUE end Esse comando faz voce ir para o fundo do Mar COMANDO: !BACK function onSay(cid, words, param, channel) flypos = getCreaturePosition(cid) npos2 = getPlayerMasterPos(cid) poszao = {x=flypos.x, y=flypos.y, z=flypos.z - 7} pos = getCreaturePosition(cid) if pos.z == 14 then doTeleportThing(cid, poszao) doSendMagicEffect(poszao, 14) end end Esse comando faz voce voltar para o Floor 7 TAGS: <talkaction words="!dive" event="script" value="dive.lua"/> <talkaction words="!back" event="script" value="backdive.lua"/> SS 01(Em cima da Agua Walkable): SS 02 (Fundo do Mar): Bom Esse Script nao precisa de Outfit propio pois no Tibia Global nao se usa outfit no fundo do mar (colocar o outfit do Swimmer nao presta porque nao combina com a agua)
    1 ponto
  4. joaohd

    Introdução À Programação Lua

    Introdução à programação LUA e lógica de programação Assim como todas as linguagens de programação, LUA tem suas particularidades e sua estrutura lógica própria, a qual envolve suas funções, operadores e engines. Para começarmos a programação em LUA, devemos conhecer sua lógica, para que possamos aplicá-la em nossos códigos. Abaixo, você encontra os operadores da linguagem e sua explicação: • “Local” = É usado para a definição de variáveis. Pode ser encontrado também destacando uma função. Neste último caso, seu uso pode ser dispensado quando a função não se encontra embutida na função principal. Exemplo de uso: ► local a = 1 ► function onUse(cid, item, fromPosition, itemEx, toPosition) local function helloWorld() print("Hello World") return TRUE end return helloWorld() end ► function helloWorld() print("Hello World") return TRUE end function onUse(cid, item, fromPosition, itemEx, toPosition) return helloWorld() end Note a diferença entre o segundo e o terceiro exemplos. Em ambos, a função principal é a “onUse”, porém, em um dos casos foi usado o operador “local” destacando a função secundária, que se encontrava embutida na função principal, ou seja, “abaixo” da função principal. • “If” = É usado para definir condições. Ele é bastante usado para tornar o script restrito ao uso não programado. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) > 10 then print("O jogador possui level maior que 10") end return TRUE end Neste exemplo, o código só poderá ser usado para jogadores com level maior que 10 e retornará a mensagem “O jogador possui level maior que 10”. • “Elseif” = Assim como o “if”, é usado para definir condições, porém, seu uso deve estar obrigatoriamente associado ao “if”. Este operador define outras condições para que o código entre em vigor. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) > 10 then print("O jogador possui level maior que 10") elseif getPlayerLevel(cid) == 10 then print("O jogador possui level 10") end return TRUE end Neste exemplo, caso o jogador tenha level maior que 10, o código retornará a mensagem “O jogador possui level maior que 10”, mas se o jogador tiver level 10, o código retornará a mensagem “O jogador possui level 10”. Note que para usar o “elseif”, antes tive de usar um “if”. • “For” = É usado para fazer loops no código, executando várias ações ao mesmo tempo. Seu uso é indicado para encurtamento de scripts, fazendo com que leve menos tempo para o código ser processado e economizando memória. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) local pos = { {x=1, y=2, z=3}, {x=4, y=5, z=6} } for a = 1,2 do doSummonCreature("rat", pos[a]) end return TRUE end Neste exemplo, uma tabela indica as posições onde serão sumonados os monstros. O “for” foi usado para indicar que deveriam ser sumonados 1 rat em cada uma das posições especificadas na tabela. • “While” = É usado para fazer loops no código, porém, diferente do “for”, este executa a ação até ser interrompido. Não é muito usado em OpenTibia pelo fato de usar muita memória para ser executado. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) local i = 0 while i < 10 do print (i) i = i + 1 end return TRUE end No caso acima, a variável “i” foi definida inicialmente como sendo zero. Quando o código é executado, os valores assumidos por “i” são retornados até que “i” chegue ao valor nove, que é quando o código se encerra. • “Else” = É usado para definir o que será feito caso a condição definida anteriormente seja falsa ou verdadeira, de acordo com o código e com o que se deseja. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) >= 10 then print("O jogador possui level 10 ou mais") else print("O jogador possui level 9 ou menos") end return TRUE end Note que foi usado anteriormente um “if” para a definição da condição. Neste exemplo, caso o jogador tenha level 10 ou mais, será retornada a mensagem “O jogador possui level 10 ou mais”. Mas se o jogador não tiver atingido level 10, será retornado “O jogador possui level 9 ou menos”. Operadores matemáticos em LUA Após entender a função de cada operador de linguagem acima, podemos passar aos operadores matemáticos ou “Operadores relacionais”. São usados para fazer a comparação numérica ou de uma string. Veja abaixo: • “<” = É usado para dizer que algo é “menor que” outro. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) < 8 then print("O jogador não possui vocação, pois seu level é menor que oito") end return TRUE end A comparação feita mostra se o jogador possui vocação de acordo com seu level, mostrando se ele tem level mínimo para ter vocação, visto que no Tíbia, jogadores abaixo do level 8 não possuem vocação. • “>” = O inverso de seu antecessor. É usado para dizer que algo é “maior que” outro. Exemplo de uso: ►function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) > 8 then print("O jogador pode posuir vocação") end return TRUE end Neste caso, o código retornará que o jogador pode possuir alguma vocação pois possui level maior que 8. •“<=” = Este operador faz a comparação que algo é “menor ou igual” que/a outro. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) <= 8 then print("O jogador não pode usar exura") end return TRUE end Neste exemplo, o código verifica se o jogador possui level 8 ou menos para dizer se ele pode ou não usar exura, visto que no Tíbia o jogador só pode usar exura se tiver level 9 ou maior. • “>=” = Este operador faz a comparação que algo é “maior ou igual” que/a outro. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) >= 9 then print("O jogador pode usar exura") end return TRUE end Neste caso, o código verifica se o jogador possui level 9 ou mais para dizer se ele pode ou não usar exura. • “==” = Este operador faz a comparação de igualdade. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) == 8 then print("O jogador já pode abandonar rookgaard") end return TRUE end A comparação feita mostra se o level do jogador é ou não 8. Se for 8, o código retorna a mensagem “O jogador já pode abandonar rookgaard”. • “~=” = Este operador faz a comparação de diferença. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) ~= 10 then print("Somente jogadores com level 10 podem usar") end return TRUE end O exemplo restringe o uso apenas a jogadores com level 10. Se o jogador não possuir level 10, o código retorna a mensagem “Somente jogadores com level 10 podem usar”. _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._. Bom, é isso. Tentei fazer um tutorial completo e que ajudasse quem quisesse aprender a linguagem. Tutorial feito totalmente por mim. Espero que esteja bom e espero comentários também. @Editado Editado a fim de corrigir alguns erros de ortografia e nos scripts. Será que ganho um ponto de reputação?
    1 ponto
  5. Doidin

    Preciso Script De Potions

    Ok, as potions bem balanceadas: Actions > Scripts > liquids, adicione este script: local config = { removeOnUse = "no", usableOnTarget = "yes", -- can be used on target? (fe. healing friend) splashable = "no", realAnimation = "no", -- make text effect visible only for players in range 1x1 healthMultiplier = 1.0, manaMultiplier = 1.0 } config.removeOnUse = getBooleanFromString(config.removeOnUse) config.usableOnTarget = getBooleanFromString(config.usableOnTarget) config.splashable = getBooleanFromString(config.splashable) config.realAnimation = getBooleanFromString(config.realAnimation) local POTIONS = { [8704] = {empty = 7636, splash = 2, health = {50, 100}}, -- small health potion [7618] = {empty = 7636, splash = 2, health = {100, 200}}, -- health potion [7588] = {empty = 7634, splash = 2, health = {200, 300}, level = 50, vocations = {3, 4, 7, 8, 11, 12}, vocStr = "knights and paladins"}, -- strong health potion [7591] = {empty = 7635, splash = 2, health = {400, 500}, level = 80, vocations = {4, 8, 12}, vocStr = "knights"}, -- great health potion [8473] = {empty = 7635, splash = 2, health = {650, 900}, level = 130, vocations = {4, 8, 12}, vocStr = "knights"}, -- ultimate health potion [7620] = {empty = 7636, splash = 7, mana = {70, 130}}, -- mana potion [7589] = {empty = 7634, splash = 7, mana = {190, 290}, level = 50, vocations = {1, 2, 3, 5, 6, 7, 9, 10, 11}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion [7590] = {empty = 7635, splash = 7, mana = {300, 450}, level = 80, vocations = {1, 2, 5, 6, 9, 10}, vocStr = "sorcerers and druids"}, -- great mana potion [8472] = {empty = 7635, splash = 3, health = {200, 400}, mana = {110, 190}, level = 80, vocations = {3, 7, 11}, vocStr = "paladins"} -- great spirit potion } local exhaust = createConditionObject(CONDITION_EXHAUST) setConditionParam(exhaust, CONDITION_PARAM_TICKS, (getConfigInfo('timeBetweenExActions') - 100)) function onUse(cid, item, fromPosition, itemEx, toPosition) local potion = POTIONS[item.itemid] if(not potion) then return false end if(not isPlayer(itemEx.uid) or (not config.usableOnTarget and cid ~= itemEx.uid)) then if(not config.splashable) then return false end if(toPosition.x == CONTAINER_POSITION) then toPosition = getThingPos(item.uid) end doDecayItem(doCreateItem(2016, potion.splash, toPosition)) doTransformItem(item.uid, potion.empty) return true end if(hasCondition(cid, CONDITION_EXHAUST_HEAL)) then doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED) return true end if(((potion.level and getPlayerLevel(cid) < potion.level) or (potion.vocations and not isInArray(potion.vocations, getPlayerVocation(cid)))) and not getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES)) then doCreatureSay(itemEx.uid, "Only " .. potion.vocStr .. (potion.level and (" of level " .. potion.level) or "") .. " or above may drink this fluid.", TALKTYPE_ORANGE_1) return true end local health = potion.health if(health and not doCreatureAddHealth(itemEx.uid, math.ceil(math.random(health[1], health[2]) * config.healthMultiplier))) then return false end local mana = potion.mana if(mana and not doPlayerAddMana(itemEx.uid, math.ceil(math.random(mana[1], mana[2]) * config.manaMultiplier))) then return false end doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_MAGIC_BLUE) if(not realAnimation) then doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1) else for i, tid in ipairs(getSpectators(getCreaturePosition(cid), 1, 1)) do if(isPlayer(tid)) then doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1, false, tid) end end end doAddCondition(cid, exhaust) if(not potion.empty or config.removeOnUse) then doRemoveItem(item.uid) return true end doTransformItem(item.uid, potion.empty) return true end Action > Action.xml, adicione esta tag: <action itemid="7588-7591;8472-8473;7618;7620;8704" event="script" value="liquids/potions.lua"/> Abraços...
    1 ponto
  6. Dj Sky

    Explicacao Da Img 2

    eu entendi o que voce quis dizer.. que voce montou tudo usando as imagens e deu o resultado da imagem 2 no caso acho dificil mas entendi
    1 ponto
  7. safra

    Explicacao Da Img 2

    ãn? explica melhor ae que ta foda!
    1 ponto
  8. Opa, eu tenho todas as sprites aque ja em formato .spr, só por na pasta do Tibia, vai substituir, dps abrir pelo map editor e talz... As sprs estão na versão 8.40 Download : http://www.megaupload.com/?d=Y6AANBZ0 Espero ter ajudado, Rep +
    1 ponto
  9. Adicione as seguintes tags ao seu movements.xml: <movement type="Equip" itemid="7730" slot="legs" event="function" value="onEquipItem"/> <movement type="DeEquip" itemid="7730" slot="legs" event="function" value="onDeEquipItem"/> flw
    1 ponto
  10. Barthy

    [ Weapon ] Dano Elemental

    Quando eu ataco com o fire axe (com o script que vc mandou) nao sobe o axe skill ;/ Realmente, esqueci de por isso no 'Contras' Vou acrescentar isso lá. E nao aparece effect quando da o "critical", eu nao vou add effect pq nao sei de script , Aqui aparece um fogo qnd acerta: Se não aparecer, abra o Fire Dual.lua e onde está: local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatParam(combat2, COMBAT_PARAM_MEELEFFECT, CONST_ANI_FIRE) setCombatFormula(combat2, COMBAT_FORMULA_SKILL, 0, -40, 0, -95) Adicione: setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA) Ficando assim: local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatParam(combat2, COMBAT_PARAM_MEELEFFECT, CONST_ANI_FIRE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA) setCombatFormula(combat2, COMBAT_FORMULA_SKILL, 0, -40, 0, -95) E aparecerá o effect da gfb. Caso queira altera-lo, mude o CONST_ME_FIREAREA para outro CONST_ME (vc encontra todos eles no global.lua na pasta data de seu ot) Cya Ciao.
    1 ponto
  11. Antharaz

    Function Emarea(Cid,frompos,topos)

    ATENÇÃO: NÃO SE TRATA DE UM TUTORIAL, MAS DE UMA FUNCTION. COMO NÃO TEM UM LUGAR PARA FUNCTIONS, TIVE QUE POSTAR AQUI. Nome: emarea(cid,frompos,topos) Autor: Antharaz Versão Testada: TFS 0.3.6 e TCS (todas versões) Informações adicionais: Bem, não sei se já existe um function com este mesmo objetivo, mas eu pelo menos nunca vi. Ela verifica se determinado player está em certa área. Como se usar: Declare 2 variáveis, uma com as coordenadas do 1º sqm superior esquerdo da área e outro com as coordenadas do último sqm da parte inferior direita da área. A da parte superior esquerda corresponde a frompos e a outra a topos. Não precisa colocar a coordenada z de cada sqm, isto é OPCIONAL, mas se colocar, coloque a do andar mais baixó no frompos e a do último andar que deseja verificar na topos. Caso o player esteja na área, irá retornar TRUE, caso não esteje, irá retornar false. Exemplos: Abaixo haverá um exemplo no qual eu usei a function em uma talkction: 1º - usando com a coordenada Z local frompos = {x=517,y=460,z=3} local topos = {x=524,y=464,z=1} function onSay(cid, words, param, channel) if emarea(cid,frompos,topos) then doBroadcastMessage("Está na área.") else doBroadcastMessage("Não está na área.") end return TRUE end Resultado com god na pos [X: 520] [Y: 462] [Z: 2] Resultado com god na pos [X: 520] [Y: 463] [Z: 4] 2º - retirando a coordenada z das variáveis: local frompos = {x=517,y=460} local topos = {x=524,y=464} function onSay(cid, words, param, channel) if emarea(cid,frompos,topos) then doBroadcastMessage("Está na área.") else doBroadcastMessage("Não está na área.") end return TRUE end Resultado com god na pos [X: 520] [Y: 462] [Z: 2] Resultado com god na pos [X: 520] [Y: 463] [Z: 4] Como deu para ver pelas SSs, a diferença entre colocar o Z e não colocar, é que ele também verificará o andar. Abaixo segue o code da function: function emarea(cid,frompos,topos) if frompos.x <= getThingPos(cid).x and topos.x >= getThingPos(cid).x and frompos.y <= getThingPos(cid).y and topos.y >= getThingPos(cid).y then if frompos.z and topos.z then if frompos.z >= getThingPos(cid).z and topos.z <= getThingPos(cid).z then return TRUE end else return TRUE end end return FALSE end
    1 ponto
  12. setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 0, -60, 0, -70) Em -60 está o dano mínino e -70 o máximo que a wand of infeno pode tirar... basta mudar esses valores para aumentar/diminuir o dano. setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 0, -100, 0, -150) O dano será entre 100 e 150. setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 0, -30, 0, -50) O dano será entre 30 e 50. Quanto ao skill rod, creio que teria que compilar, pois não vem já algo desse tipo editado.
    1 ponto
  13. flavinhoo

    Vancini Ot 8.55

    ot serv bom men precisa qe fazer muitas coisas mele
    1 ponto
  14. joaohd

    Ações Bancárias

    Ações bancárias Sistema desenvolvido por mim (apocarai), idéia e correções por matheusMkalo. Como funciona: Você deposita uma quantia e, dependendo da cotação, você pode ganhar ou perder dinheiro. Então, mãos à obra: Primeiramente, crie um arquivo com o nome BankSharesEvent.lua em seu diretório globalevents/scripts, colocando o script abaixo: --Script por apocarai, matheusMkalo-- s = {} y = {} function countAuctions() return #s end function chance() -- função para balanceamento das ações. if math.random(1,10) <= 2 then x = (math.random(1,3)*10/100) elseif math.random(1,10) >= 3 and math.random(1,10) <= 5 then x = (math.random(2,5)*10/100) elseif math.random(1,10) >= 6 and math.random(1,10) <= 8 then x = (math.random(3,7)*10/100) elseif math.random(1,10) == 9 then x = (math.random(4,8)*10/100) elseif math.random(1,10) == 10 then x = (math.random(5,9)*10/100) end return table.insert(y, 1, x) end function doExecuteBankShares(cid) if math.random(1,10) >= 6 then return chance(), doPlayerSetBalance(cid, (getPlayerBalance(cid))*(1+tonumber(y[1]))), doPlayerSendTextMessage(cid, TALKTYPE_ORANGE_1, "As a\ç\õ\es bancárias est\ã\o em alta. Seu saldo teve acréscimo de " .. (tonumber(y[1])*100) .. "'\%\'. Agora seu saldo é de: " .. getPlayerBalance(cid) .. " gp's. Hoje tivemos: " .. countAuctions() .. " movimenta\ç\õ\es financeiras."), table.remove(y,1) elseif math.random(1,10) == 10 then return doPlayerSetBalance(cid, 0), doPlayerSendTextMessage(cid, TALKTYPE_ORANGE_1, "Os bancos faliram. Voc\ê\ perdeu todo seu investimento. Seu saldo atual é de: " .. getPlayerBalance(cid) .. " gp's. Hoje tivemos: " .. countAuctions() .. " movimenta\ç\\õ\es financeiras.") else return chance(), doPlayerSetBalance(cid, (getPlayerBalance(cid))*(tonumber(y[1]))), doPlayerSendTextMessage(cid, TALKTYPE_ORANGE_1, "As a\ç\õ\es bancárias estão sofrendo quedas. Seu saldo teve queda de " .. (tonumber(y[1])*100) .. "'\%\' gp's . Seu saldo atual é de: " .. getPlayerBalance(cid) .. " gp's. Hoje tivemos: " .. countAuctions() .. " movimenta\ç\õ\es financeiras."), table.remove(y,1) end return TRUE end function onThink(interval, lastExecution) table.insert(s,"Bank shares: Ok!") for i = 1, #getOnlinePlayers() do if getPlayerStorageValue(getCreatureByName(getOnlinePlayers()[i]),99889) >= 1 then if getPlayerBalance(getCreatureByName(getOnlinePlayers()[i])) ~= 0 then doExecuteBankShares(getCreatureByName(getOnlinePlayers()[i])) print("[bank Shares System:: Executado com sucesso.]") end end end return TRUE end Salve e feche. Agora, adicione a seguinte tag em seu globalevents.xml: <globalevent name="BankShares" interval="3600" event="script" value="BankSharesEvent.lua"/> Caso queira alterar o tempo entre as execuções, modifique o interval. Caso contrário, somente salve e feche. Em seu diretório npc/scripts, crie um arquivo com o nome BankShares.lua, colocando o script abaixo: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} local moneyTo = {} local playerTo = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end local function isValidMoney(cid, money) if isNumber(money) == TRUE and money > 0 and money < 999999999 and money <= getPlayerMoney(cid) then return TRUE end return FALSE end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end if msgcontains(msg, 'ajuda') or msgcontains(msg, 'ofertas') then selfSay("Voce pode checar seu {saldo} da sua conta, {depositar} dinheiro ou {extrair} para retirar. Voce tambem pode {transferir} dinheiro para outros players, tambem pode entrar nas {açoes}, diga {informaçoes} para saber sobre as açoes.", cid) talkState[cid] = 0 ----------------------------------------------------------------- ---------------------------- Balance ---------------------------- ----------------------------------------------------------------- elseif msgcontains(msg, 'saldo') or msgcontains(msg, 'Saldo') then selfSay('Seu saldo é '..getPlayerBalance(cid)..' gold.', cid) talkState[cid] = 0 ----------------------------------------------------------------- ---------------------------- Help ------------------------------- ----------------------------------------------------------------- elseif msgcontains(msg, 'basic functions') then selfSay('Voce pode checar seu {balance} da sua conta, {deposit} dinheiro ou {withdraw} para extrair. Voce tambem pode {transfer} dinheiro para outros players, tambem pode entrar nas {açoes}.', cid) talkState[cid] = 0 elseif msgcontains(msg, 'informaçoes') then selfSay('Açoes, voce tem uma chance de ganhar ou de perder de 10% a 90% do valor total do balance da sua conta.', cid) talkState[cid] = 0 ----------------------------------------------------------------- ---------------------------- Deposit ---------------------------- ----------------------------------------------------------------- elseif msgcontains(msg, 'depositar tudo') then moneyTo[cid] = getPlayerMoney(cid) if moneyTo[cid] < 1 then selfSay('Voce nao tem dinheiro.', cid) talkState[cid] = 0 else selfSay('Voce realmente quer adicionar '..moneyTo[cid]..' gold?', cid) talkState[cid] = 2 end elseif msgcontains(msg, 'depositar') then selfSay("Porfavor me diga quanto voce quer depositar.", cid) talkState[cid] = 1 elseif talkState[cid] == 1 then moneyTo[cid] = tonumber(msg) if isValidMoney(cid, moneyTo[cid]) == TRUE then selfSay('Voce realmente quer depositar '..moneyTo[cid]..' gold?', cid) talkState[cid] = 2 else selfSay('Nao é uma quantia valida para deposito.', cid) talkState[cid] = 0 end elseif talkState[cid] == 2 then if msgcontains(msg, 'sim') then if doPlayerDepositMoney(cid, moneyTo[cid], 1) ~= TRUE then selfSay('Voce nao tem esse dinheiro.', cid) else selfSay('Tudo bem, nos adicionamos '..moneyTo[cid]..' gold para seu saldo. Voce pode extrair seu dinheiro quando quiser. Seu saldo é ' .. getPlayerBalance(cid) .. '.', cid) end elseif msgcontains(msg, 'nao') then selfSay('Como desejar. Posso fazer mais alguma coisa por voce?', cid) end talkState[cid] = 0 ----------------------------------------------------------------- ---------------------------- Withdraw --------------------------- ----------------------------------------------------------------- elseif msgcontains(msg, 'extrair') then selfSay("Porfavor, diga-me quanto voce deseja extrair.", cid) talkState[cid] = 6 elseif talkState[cid] == 6 then moneyTo[cid] = tonumber(msg) if isValidMoney(cid, moneyTo[cid]) == TRUE then selfSay('Voce esta certo que quer extrair '..moneyTo[cid]..' gold de sua conta de banco?', cid) talkState[cid] = 7 else selfSay('Nao é uma quantia valida para extraçao.', cid) talkState[cid] = 0 end elseif talkState[cid] == 7 then if msgcontains(msg, 'sim') then if doPlayerWithdrawMoney(cid, moneyTo[cid]) ~= TRUE then selfSay('Voce nao tem essa quantia em sua conta. Seu saldo é '..getPlayerBalance(cid)..'. Por favor, diga-me quanto quer extrair.', cid) else selfSay('Aqui esta, ' .. moneyTo[cid] .. ' gold. Porfavor, digame se quizer mais alguma coisa.', cid) talkState[cid] = 0 end elseif msgcontains(msg, 'nao') then selfSay('Como desejar. Posso fazer mais algo?', cid) talkState[cid] = 0 end ----------------------------------------------------------------- ---------------------------- Transfer --------------------------- ----------------------------------------------------------------- elseif msgcontains(msg, 'transferir') then selfSay("Por favor, digame quanto de dinheiro voce quer transferir.", cid) talkState[cid] = 11 elseif talkState[cid] == 11 then moneyTo[cid] = tonumber(msg) if isValidMoney(cid, moneyTo[cid]) == TRUE then selfSay('Voce gostaria de transferir '..moneyTo[cid]..' gold para?', cid) talkState[cid] = 12 else selfSay('Nao é uma quantia valida para deposito.', cid) talkState[cid] = 0 end elseif talkState[cid] == 12 then playerTo[cid] = msg if getCreatureName(cid) == playerTo[cid] then selfSay('Voce deseja transferir dinheiro para voce mesmo? Isto e impossivel!', cid) talkState[cid] = 0 return TRUE end if playerExists(playerTo[cid]) then selfSay('Voce deseja transferir ' .. moneyTo[cid] .. ' gold para "' .. playerTo[cid] .. '" ?', cid) talkState[cid] = 13 else selfSay('O player "' .. playerTo[cid] .. '" nao existe.', cid) talkState[cid] = 0 end elseif talkState[cid] == 13 then if msgcontains(msg, 'sim') then if getPlayerBalance(cid) < moneyTo[cid] then selfSay('Voce nao tem dinheiro em sua conta.', cid) return TRUE end if doPlayerTransferMoneyTo(cid, playerTo[cid], moneyTo[cid]) ~= TRUE then selfSay('Esse player nao existe ou ainda nao tem vocaçao.', cid) else selfSay('Voce transferiu ' .. moneyTo[cid] .. ' gold tpara "' .. playerTo[cid] ..' ".', cid) playerTo[cid] = nil end elseif msgcontains(msg, 'nao') then selfSay('Como deseja. Posso fazer mais alguma coisa para voce?', cid) end talkState[cid] = 0 -------------------------------------------------------------------------------- -------------------------Bank shares-------------------------------------------- -------------------------------------------------------------------------------- elseif msgcontains(msg, "açoes") then selfSay('Açoes, deseja {entrar} ou {sair}?', cid) talkState[cid] = 14 elseif msgcontains(msg, 'entrar') and talkState[cid] == 14 then if getPlayerStorageValue(cid, 99889) <= 0 then if getPlayerBalance(cid) == 0 then selfSay('Okay. Mas, estou vendo seu saldo e ele é 0 gold coins. Quanto voce quer depositar?', cid) talkState[cid] = 15 else selfSay('Parabens. Agora, fique preparado para as açoes. Pode acontecer a qualquer hora.', cid) setPlayerStorageValue(cid, 99889, 1) talkState[cid] = 0 end else selfSay('Voce ja esta nas açoes. Verifique seu saldo.', cid) talkState[cid] = 0 end elseif talkState[cid] == 15 then moneyTo[cid] = tonumber(msg) if isValidMoney(cid, moneyTo[cid]) == TRUE then selfSay('Voce realmente quer depositar '..moneyTo[cid]..' gold?', cid) talkState[cid] = 16 else selfSay('Voce nao tem esse dinheiro para depositar.', cid) talkState[cid] = 0 end elseif talkState[cid] == 16 then if msgcontains(msg, 'sim') then if doPlayerDepositMoney(cid, moneyTo[cid], 1) ~= TRUE then selfSay('Voce nao tem nenhum dinheiro.', cid) talkState[cid] = 0 else selfSay('Tudo bem, nos adicionamos '..moneyTo[cid]..' gold para seu saldo. A partir de agora você está apto a participar das a\ç\ões do banco. Seu saldo é ' .. getPlayerBalance(cid) .. '.', cid) setPlayerStorageValue(cid, 99889, 1) end end elseif msgcontains(msg, 'nao') then selfSay('Como quiser. Posso fazer mais alguma coisa por voce?', cid) talkState[cid] = 0 elseif msg == 'sair' and talkState[cid] == 14 then if getPlayerStorageValue(cid, 99889) == 1 then selfSay('Feito. Obrigado por usar nossos servicos.', cid) setPlayerStorageValue(cid, 99889, -1) talkState[cid] = 0 else selfSay('Voce nao esta em nossos registros.', cid) talkState[cid] = 0 end end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Salve e feche. Agora, crie um arquivo com o nome Bank.xml em seu diretório npc, adicionando o código abaixo: <npc name="Bank" script="data/npc/scripts/BankShares.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="134" head="78" body="88" legs="0" feet="88" addons="3"/> <parameters> <parameter key="message_greet" value="Ola. Para mais informacoes de meus servicos diga {ajuda}." /> <parameter key="message_farewell" value="Tchau." /> <parameter key="message_walkaway" value="Tchau." /> </parameters> </npc> Salve e feche. Agora, abra seu config.lua e localize: bankSystem = false ou também: bankSystem = "no" E substitua por true,em caso de estar false; e yes, em caso de estar no. Sistema implantado. Agora, simplesmente adicione um respawn do npc bank em seu mapa e negocie as açoes com ele, dizendo hi;açoes;entrar (caso tenha algum dinheiro depositado), ou hi;açoes;entrar;(quantidade que deseja depositar);sim. Favor não postar em outros fóruns. Caso tenham algum problema com o sistema, poste sua dúvida para que possa saná-la. flw Obs: O npc que usei, é do servidor do alissow, modifiquei e matheusMkalo traduziu (não gostei).
    1 ponto
  15. pq seis n vao estudar em vez de ficar postando merda aqui PQP
    -1 pontos
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...