Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 05/12/18 em todas áreas
-
[Pedido] Prender player no chão por x tempo
[Pedido] Prender player no chão por x tempo
Vodkart e um outro reagiu a Storm por uma resposta no tópico
2 pontosfunction onCastSpell(cid, var) local target = getCreatureTarget(cid) local waittime = 60 -- tempo para poder travar o player dnv ( em segundos ) local storage = 2521 local time = 5 -- segundos que o target ficará preso local effect = 5 if exhaustion.check(cid, storage) then doPlayerSendCancel(cid, "Você tem que espera " .. exhaustion.get(cid, storage) .. " segundos.") return false end exhaustion.set(cid, storage, waittime) doCreatureSetNoMove(target, true) doSendMagicEffect(getCreaturePosition(target), effect) addEvent(doSendMagicEffect, time * 1000, getCreaturePosition(target), effect) addEvent(doCreatureSetNoMove, time * 1001, target, false) return true end2 pontos -
(Resolvido)NPC que conversa por Vocation
(Resolvido)NPC que conversa por Vocation
Vodkart e um outro reagiu a Storm por uma resposta no tópico
2 pontos<?xml version="1.0" encoding="UTF-8"?> <npc name="Helmut" floorchange="0" walkinterval="7500"> <health now="150" max="150"/> <look type="133" head="20" body="120" legs="75" feet="13"/> <interaction range="3" idletime="30"> <interact keywords="hi" param="sorcerer" focus="1"> <keywords>hello</keywords> <response text="Oh, be welcome |NAME|."/> </interact> <interact keywords="hi" focus="1"> <keywords>hello</keywords> <response text="Back from here."/> </interact> </interaction> </npc>2 pontos -
Adicionando novos elementos no TFS 0.3.6
ADICIONANDO O ELEMENTO muitas das vezes a gente precisa adicionar um novo elemento em nosso servidor, assim para criar novas magias, esse tutorial é para quem precisa disso. combat.cpp Abaixo de: case CONDITION_FIRE: return COMBAT_FIREDAMAGE; Adicione em baixo: case CONDITION_PLANTA: return COMBAT_PLANTADAMAGE; combat.cpp Abaixo de: case COMBAT_FIREDAMAGE: return CONDITION_FIRE; Adicone em baixo: case COMBAT_PLANTADAMAGE: return CONDITION_PLANTA; Condition.cpp Abaixo de: case CONDITION_FIRE: Adicione: case CONDITION_PLANTA: Abaixo de: case CONDITION_FIRE: return ICON_BURN; Adicione em baixo: case CONDITION_PLANTA: return ICON_NONE; Condition.h Abaixo de: CONDITION_HUNTING = 1 << 23, Adicione em Baixo: CONDITION_PLANTA = 1 << 24 const.h Abaixo de: TEXTCOLOR_WHITE = 215, Adicione: TEXTCOLOR_PLANTA = 18, enums.h Abaixo de: COMBAT_DEATHDAMAGE = 1 << 11, Adicione: COMBAT_PLANTADAMAGE = 1 << 12, Em COMBAT_LAST = COMBAT_DEATHDAMAGE para COMBAT_LAST = COMBAT_PLANTADAMAGE game.cpp Abaixo de: case COMBAT_ENERGYDAMAGE: Adicione: case COMBAT_PLANTADAMAGE: Abaixo de: case COMBAT_ENERGYDAMAGE: { textColor = TEXTCOLOR_PSYCHIC; magicEffect = MAGIC_EFFECT_DRAW_BLOOD; break; } Adicione: case COMBAT_PLANTADAMAGE: { textColor = TEXTCOLOR_PLANTA; magicEffect = MAGIC_EFFECT_DRAW_BLOOD; break; } monsters.cpp Abaixo de: else if(tmpName == "drown") combat->setParam(COMBATPARAM_COMBATTYPE, COMBAT_DROWNDAMAGE); Adicione: else if(tmpName == "planta") combat->setParam(COMBATPARAM_COMBATTYPE, COMBAT_PLANTADAMAGE); Abaixo de: else if(tmpStrValue == "energy") { mType->damageImmunities |= COMBAT_ENERGYDAMAGE; mType->conditionImmunities |= CONDITION_ENERGY; } Adicione: else if(tmpStrValue == "planta") { mType->damageImmunities |= COMBAT_PLANTADAMAGE; mType->conditionImmunities |= CONDITION_PLANTA; } Abaixo de: else if(readXMLString(tmpNode, "fire", strValue) && booleanString(strValue)) { mType->damageImmunities |= COMBAT_FIREDAMAGE; mType->conditionImmunities |= CONDITION_FIRE; } Adicione: else if(readXMLString(tmpNode, "planta", strValue) && booleanString(strValue)) { mType->damageImmunities |= COMBAT_PLANTADAMAGE; mType->conditionImmunities |= CONDITION_PLANTA; } Abaixo de: else if(readXMLInteger(tmpNode, "energyPercent", intValue)) mType->elementMap[COMBAT_ENERGYDAMAGE] = intValue; Adicione: else if(readXMLInteger(tmpNode, "plantaPercent", intValue)) mType->elementMap[COMBAT_PLANTADAMAGE] = intValue; player.cpp Abaixo de: case CONDITION_FIRE: tmp = "burning"; break; Adicione: case CONDITION_PLANTA: tmp = "dashing"; break; tools.cpp Abaixo de: {"fire", COMBAT_FIREDAMAGE}, Adicione: {"planta", COMBAT_PLANTADAMAGE}, Abaixo de: case COMBAT_ENERGYDAMAGE: return "energy"; Adicione: case COMBAT_PLANTADAMAGE: return "planta"; Pronto só recompilar, se caso não pegar apague tudo da pasta OBJ ATENÇÃO: Depois de compilar você precisa registrar na LIB também. 000-constant veja o ultimo numero GHOSTDAMAGE = 2048 Multiplique o 2048 por 2 vezes Ficando: COMBAT_PLANTADAMAGE = 4096 agora você pode adicionar na suas magias o novo elemento e nos monstro tbm se preferir: monstro.xml <elements> <element plantaPercent="50"/> </elements> spells COMBAT_PLANTADAMAGE local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PLANTADAMAGE) 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 + levelTotal), -(skillTotal * 1.7 + levelTotal) end setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") function onCastSpell(cid, var) return doCombat(cid, combat, var) end1 ponto
-
[8.60] OTXServer by Fir3z
1 pontoNome: OTXServer by Fir3z Versão: 8.60 Créditos: OTXServer Team, Fir3z (eu) Parei com TFS 0.4 e agora estou usando o OTXServer... Pra quem não conhece o OTX, ele tem praticamente as mesmas funções de um TFS, a equipe que iniciou o OTX retirou alguns bugs e algumas coisas irrelevantes, deixando a distro melhor, cada um tem sua opinião, eu estou usando agora o OTXServer, ai vai ele editado por mim =] Download (Source + Exe + Dlls) [4Shared] [MediaFire] [Mega] Oque tem na versão editada por mim, que não tem na versão original: ♦ Criar contas com encriptação no formato PLAIN (sem interferências). ♦ Usar Account Manager com SITE! (sem bug's). ♦ Usar qualquer versão de items. ♦ Bug de duplicar item usando elf bot, removido! * Lembrando que todos os OTXServer já contem war system.1 ponto
-
Thora Layout Completo
1 pontoEstou trazendo o layout do ThoraOT, foi disponibilizado em outro fórum cheio de erros, faltando várias coisas e como estou aprendendo php, entrando nesse ritmo quis da uma mexida nele e tô trazendo para vocês. Fixes; Fixado Players Online 100% Fixado Top Guilds 100% Fixado Powergamers 100% Added; Adicionado versão mais recente do boostrap Adicionado Cast System Page Adicionado Glyphicons Reformulada pagina de Characters. Reformulada Suporte Team (com funções) Adicionado World Map (passar o mouse no mapa e aparecer informações) Screens: Antes: DEPOIS: Vou adicionar créditos ao membro que disponibilizou o layout. Tabela para o a pagina de Suporte. ALTER TABLE `players` ADD `function` VARCHAR(100) NOT NULL DEFAULT ''; Download: http://www.mediafire.com/file/9zsn7l3xzas5v8x/Thora Layout.rar Scan: https://www.virustotal.com/#/file-analysis/OTUyM2RlZDIwZjFmOWZjNjRjMGE0YTNjYWRkMzA2YjI6MTUyNDE2NzI1NA==1 ponto
-
Trade OFF 8.60
1 ponto@Zzyzx muda essa parte if(string.len(t[3]) > 7 or (string.len(t[4]) > 3)) then 7 é o preço máximo tipo: 9999999 e o 3 é o item count1 ponto
-
(Resolvido)Habilidade que Causa danos continuo
(Resolvido)Habilidade que Causa danos continuo
wellington.penazzi reagiu a Storm por uma resposta no tópico
1 pontolocal condition = createConditionObject(CONDITION_POISON) -- FIRE, POISON, etc.. setConditionParam(condition, CONDITION_PARAM_DELAYED, 1) addDamageCondition(condition, 5, 3000, -45) -- vezes, intervalo, dano setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1) setCombatCondition(combat, condition) function onCastSpell(cid, var) return doCombat(cid, combat, var) end1 ponto -
(Resolvido)[Movement] Problema em Tiles de Summonar Monstro
(Resolvido)[Movement] Problema em Tiles de Summonar Monstro
luckeest reagiu a hallanehallex por uma resposta no tópico
1 ponto@luckeest , o problema pode ser porque o actionid já existe ou a posição esta errada, porque se não for isso era pra funcionar normalmente. Tenta alterara a posição do piso, e o actionid para um de 5 caracteres1 ponto -
Erro website
Erro website
luangop reagiu a 1xeuzinho1 por uma resposta no tópico
1 pontofaz o seguinte, faz um teste com outro site, pra ver si da o mesmo problema.1 ponto -
[Erro] Spell aparece com erro
1 pontolocal toPos = {x = 1517, y = 756, z = 7} --pos para onde o player vai ser teleportado local newPos = {x = 1517, y = 758, z = 7} --pos para inimigo local time = 30 local function teleport(cid, pos) if isCreature(cid) then doTeleportThing(cid, getClosestFreeTile(cid, pos)) doSendMagicEffect(getPlayerPosition(cid), 215) end end function onCastSpell(cid, var) if exhaustion.check(cid, 23083) == false then exhaustion.set(cid, 23083, 120) else doPlayerSendCancel(cid, "A Habilidade esta em tempo de recarga espere " ..exhaustion.get(cid, 23083).." segundos.") return false end local target = getCreatureTarget(cid) if not isCreature(target) then return doPlayerSendTextMessage(cid, 27, "Ataque um jogador para utilizar essa habilidade.") end local posTarget = getPlayerPosition(target) doTeleportThing(cid, toPos, false) teleport(target, newPos) addEvent(teleport, time*1000, cid, posTarget) addEvent(teleport, time*1000, target, posTarget) doSendMagicEffect(posTarget, 215) return true end1 ponto
-
[Pedido] Adicionar dano e tempo em spell
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLICE) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1) function onCastSpell(cid, var) local jogadorpos = getCreaturePosition(cid) local target = getCreatureTarget(cid) local monsterpos = getCreaturePosition(target) local waittime = 60 -- Exaust local storage = 2521 if exhaustion.check(cid, storage) then doPlayerSendCancel(cid, "Você tem que espera " .. exhaustion.get(cid, storage) .. " segundos.") return false end if target == isMonster or isCreature then doTeleportThing(cid,monsterpos) doSendMagicEffect(jogadorpos, 10) exhaustion.set(cid, storage, waittime) return doCombat(cid, combat, var) else doPlayerSendTextMessage(cid, 20, 'Precisa Selecionar um Alvo') end end1 ponto
-
Troll Clan Cave | Cave Hunt | 8.60
Cave hunt - Troll Clan Cave. Download: Here Scan: Here Imagens:1 ponto
-
(Resolvido)Texto em Piso!
(Resolvido)Texto em Piso!
luangop reagiu a tetheuscunha por uma resposta no tópico
1 pontoTenta Esse : <globalevent name="text" interval="3500" script="text.lua"/>1 ponto -
[RESOLVIDO] Bug Bless
[RESOLVIDO] Bug Bless
Adriano SwaTT reagiu a HenriqueFisch13 por uma resposta no tópico
1 pontoTestado em TFS 0.4 Bem eu tive esse erro no meu otserver 8.60 e depois de um longo tempo descobri o erro, é bem simples o erro que vinha acontecendo no meu baiak era, o Player que comprasse bless depois de X mortes ele voltava para o Level 1, sem mas delongas vou explicar o que se deve fazer. Abra a paste do seu otserver e vá em seuot/data/XML/vocation.xml em Vocation.XML você deve remover a frase "word lessloss="30" independente do valor que esteja ali contido, feito isso seu problema foi resolvido.1 ponto -
Trade OFF 8.60
1 pontolocal config = { levelRequiredToAdd = 20, maxOffersPerPlayer = 30, SendOffersOnlyInPZ = true, blocked_items = {2165, 2152, 2148, 2160, 2166, 2167, 2168, 2169, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2213, 2214, 2215, 2343, 2433, 2640, 6132, 6300, 6301, 9932, 9933} } function onSay(cid, words, param, channel) if(param == 'help') then doPlayerPopupFYI(cid, "#######Commands#######\n---------------------------------\n!market add, itemName, itemPrice, itemCount \nexample: !market add, plate armor, 500, 1 \n---------------------------------\n!market buy, AuctionID \nexample: !market buy, 1943 \n---------------------------------\n!market remove, AuctionID - example: !market remove, 1943 \n!market receber - Use this command to get money for sold items.\n---------------------------------") return true end local t = string.explode(param, ",") if(t[1] == "add") then if((not t[2]) or (not t[3]) or (not t[4])) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires param.") return true end if(not tonumber(t[3]) or (not tonumber(t[4]))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You don't set valid price or items count.") return true end if(string.len(t[3]) > 7 or (string.len(t[4]) > 3)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "This price or item count is too high.") return true end local item = getItemIdByName(t[2]) if(not item) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Item wich such name does not exists.") return true end if(getPlayerLevel(cid) < config.levelRequiredToAdd) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You don't have required (" .. config.levelRequiredToAdd .. ") level.") return true end if(isInArray(config.blocked_items, item)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "This item is blocked.") return true end if(getPlayerItemCount(cid, item) < (tonumber(t[4]))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry, you don't have this item(s).") return true end local check = db.getResult("SELECT `id` FROM `auction_system` WHERE `player` = " .. getPlayerGUID(cid) .. ";") if(check:getID() == -1) then elseif(check:getRows(true) >= config.maxOffersPerPlayer) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry you can't add more offers (max. " .. config.maxOffersPerPlayer .. ")") return true end if(config.SendOffersOnlyInPZ) then if(not getTilePzInfo(getPlayerPosition(cid))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You must be in PZ area when you add offert to database.") return true end end if(tonumber(t[4]) < 1 or (tonumber(t[3]) < 1)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have to type a number higher than 0.") return true end local itemcount, costgp = math.floor(t[4]), math.floor(t[3]) doPlayerRemoveItem(cid, item, itemcount) db.executeQuery("INSERT INTO `auction_system` (`player`, `item_name`, `item_id`, `count`, `cost`, `date`) VALUES (" .. getPlayerGUID(cid) .. ", \"" .. t[2] .. "\", " .. getItemIdByName(t[2]) .. ", " .. itemcount .. ", " .. costgp ..", " .. os.time() .. ")") doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You successfully add " .. itemcount .." " .. t[2] .." for " .. costgp .. " gps to offerts database.") end if(t[1] == "buy") then if(not tonumber(t[2])) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Wrong ID.") return true end local buy = db.getResult("SELECT * FROM `auction_system` WHERE `id` = " .. (tonumber(t[2])) .. ";") if(buy:getID() ~= -1) then if(getPlayerMoney(cid) < buy:getDataInt("cost")) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You don't have enoguh GP.") buy:free() return true end if(getPlayerName(cid) == getPlayerNameByGUID(buy:getDataInt("player"))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry, you can't buy your own items.") buy:free() return true end if(getPlayerFreeCap(cid) < getItemWeightById(buy:getDataInt("item_id"), buy:getDataInt("count")))then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You try to buy a " .. buy:getDataString("item_name") .. ". It weight " .. getItemWeightById(buy:getDataInt("item_id"), buy:getDataInt("count")) .. " cap oz. and you have only " .. getPlayerFreeCap(cid) .. " oz. free capacity. Put some items to depot and try again.") buy:free() return true end local item,amount = buy:getDataString("item_id"), buy:getDataInt("count") local parcel = doCreateItemEx(ITEM_PARCEL) if isItemStackable(item) or amount == 1 then doAddContainerItem(parcel, item, amount) else for i = 1, amount do doAddContainerItem(parcel, item, 1) end end local carta = doAddContainerItem(parcel, 1952) local texto = "[ Item Market ] - "..os.date("%d/%m/%Y ", os.time()).."\n(Buyer) "..getCreatureName(cid).." bought "..amount.."x "..getItemNameById(item).."." doItemSetAttribute(carta, "writer", "Item Market (ID:"..t[2]..")") doItemSetAttribute(carta, "text", texto) doPlayerAddItemEx(cid, parcel) doPlayerRemoveMoney(cid, buy:getDataInt("cost")) db.executeQuery("DELETE FROM `auction_system` WHERE `id` = " .. t[2] .. ";") doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You bought " .. buy:getDataInt("count") .. " ".. buy:getDataString("item_name") .. " for " .. buy:getDataInt("cost") .. " gps!") db.executeQuery("UPDATE `players` SET `auction_balance` = `auction_balance` + " .. buy:getDataInt("cost") .. " WHERE `id` = " .. buy:getDataInt("player") .. ";") buy:free() else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Wrong ID.") end end if(t[1] == "remove") then if((not tonumber(t[2]))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Wrong ID.") return true end if(config.SendOffersOnlyInPZ) then if(not getTilePzInfo(getPlayerPosition(cid))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You must be in PZ area when you remove offerts from database.") return true end end local delete = db.getResult("SELECT * FROM `auction_system` WHERE `id` = " .. (tonumber(t[2])) .. ";") if(delete:getID() ~= -1) then if(getPlayerGUID(cid) == delete:getDataInt("player")) then db.executeQuery("DELETE FROM `auction_system` WHERE `id` = " .. t[2] .. ";") if(isItemStackable(delete:getDataString("item_id"))) then doPlayerAddItem(cid, delete:getDataString("item_id"), delete:getDataInt("count")) else for i = 1, delete:getDataInt("count") do doPlayerAddItem(cid, delete:getDataString("item_id"), 1) end end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your offert has been deleted from offerts database.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "This is not your offert!") end delete:free() else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Wrong ID.") end end if(t[1] == "receber") then local balance = db.getResult("SELECT `auction_balance` FROM `players` WHERE `id` = " .. getPlayerGUID(cid) .. ";") if(balance:getDataInt("auction_balance") < 1) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You don't have money on your auction balance.") balance:free() return true end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You got " .. balance:getDataInt("auction_balance") .. " gps from auction system!") doPlayerAddMoney(cid, balance:getDataInt("auction_balance")) db.executeQuery("UPDATE `players` SET `auction_balance` = '0' WHERE `id` = " .. getPlayerGUID(cid) .. ";") balance:free() end return true end1 ponto
-
PokeLuck 8.54 formação de equipe
PokeLuck 8.54 formação de equipe
renatapoke1994 reagiu a Xmilzzk por uma resposta no tópico
0 pontosBom estou com um projeto que quero restaurar o Otpokemon de ano de 2014 por ai por isso criei esse projeto já está com VPS paga e tudo mais 24 horas online mais preciso de uma ajuda como Script para sistemas , Mapper para criar quests criativa , uma pessoa que mexe com ambos clients new e old.0 pontos