-
Total de itens
1347 -
Registro em
-
Última visita
-
Dias Ganhos
36
Tudo que Oneshot postou
-
Lembra quando você tinha uma lojinha de scripts (que não eram de sua autoria) e servidores? Vamos dizer que eu vou lá e compro um servidor seu, edito umas "coisinhas" e libero para a galera num tópico intitulado "Servidor da Subwatsoft", você iria gostar? Acho que a mesma coisa está acontecendo aqui. Não tiro a razão deles de ter apagado o tópico, mas acho também um ato meio que hipócrita, pois deixam um monte de tópicos: Baiak Extreme, Emporia Vapus, várias revisões do The Forgotten Server 0.4 e só apagam justamente esse. Abraços.
-
Só dando uma ajuda a vocês, porque diabos vocês estão manipulando o HP/MP máximo dos jogadores, quando, na verdade, sem nenhuma complicação, vocês podem adicionar uma condition ao jogador que aumente HP e MP? local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, -1) setConditionParam(condition, CONDITION_PARAM_STAT_MAXHEALTH, 150) setConditionParam(condition, CONDITION_PARAM_BUFF, true) local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, -1) setConditionParam(condition, CONDITION_PARAM_STAT_MAXMANA, 150) setConditionParam(condition, CONDITION_PARAM_BUFF, true) doAddCondition(cid, condition) Abraços.
- 32 respostas
-
- por favor adicione as 5 runas
- tibia
- (e 2 mais)
-
Só usar essa talkaction, é a mesma coisa do tópico que você passou, mas verifica se o jogador tem premium. local stor, limit = 7575, 5 --storage, limit to add. local allow_container = false --empty! not looted with items, atleast for now. function onSay(cid, words, param) if not isPremium(cid) then doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUNEEDPREMIUMACCOUNT) return true end local expl = param:explode(':') local action, rst = expl[1], expl[2] if (action:lower() == 'check') then local infos, list = getPlayerStorageValue(cid, stor), {} if (infos ~= -1) then list = tostring(infos):explode(',') end local txt = 'Autoloot List:\n' if (#list > 0) then for k, id in ipairs(list) do id = id:gsub('_', '') if tonumber(id) then txt = txt .. getItemNameById(tonumber(id)) .. ((k < #list) and '\n' or '') end end else txt = 'Empty' end doPlayerPopupFYI(cid, txt) elseif (action:lower() == 'add') then local infos, list = getPlayerStorageValue(cid, stor), {} if (infos ~= -1) then list = tostring(infos):gsub('_', ''):explode(',') end if (#list >= limit) then return doPlayerSendCancel(cid, 'You already have ' .. limit .. ' autolooting items.') end local item = tonumber(rst) if not item then item = getItemIdByName(rst, false) if not item then return doPlayerSendCancel(cid, 'not valid item.') end end if not allow_container and isItemContainer(item) then return doPlayerSendCancel(cid, 'this item can not be autolooted.') end local attrs = getItemInfo(item) if not attrs then return doPlayerSendCancel(cid, 'not valid item.') elseif not attrs.movable or not attrs.pickupable then return doPlayerSendCancel(cid, 'this item can not be autolooted.') end if isInArray(list, item) then return doPlayerSendCancel(cid, 'already added.') end table.insert(list, tostring(item)) local new = '' for v, id in ipairs(list) do new = new .. '_' .. id:gsub('_' ,'') .. ((v < #list) and ',' or '') end doPlayerSetStorageValue(cid, stor, tostring(new)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Item >>' .. getItemNameById(item) .. '<< has been added to the autoloot list.') elseif (action:lower() == 'remove') then local infos, list = getPlayerStorageValue(cid, stor), {} if (infos ~= -1) then list = tostring(infos):gsub('_', ''):explode(',') end if (#list == 0) then return doPlayerSendCancel(cid, 'You dont have any item added.') end if (#list >= limit) then return doPlayerSendCancel(cid, 'You already have ' .. limit .. ' autolooting items.') end local item = tonumber(rst) if not item then item = getItemIdByName(rst, false) if not item then return doPlayerSendCancel(cid, 'not valid item.') end end if not isInArray(list, item) then return doPlayerSendCancel(cid, 'This item is not in the list.') end local new = '' for v, id in ipairs(list) do if (tonumber(id) ~= item) then new = new .. '_' .. id:gsub('_' ,'') .. ((v < #list) and ',' or '') end end doPlayerSetStorageValue(cid, stor, tostring(new)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Item >>' .. getItemNameById(item) .. '<< removed from the autoloot list.') end return true end
- 2 respostas
-
- duvida
- auto loot poketibia
- (e 3 mais)
-
Talvez eu separe depois e até exemplifique. Essa é uma versão temporária da lista. Abraços.
-
Olá, essa é uma lista dos possíveis atributos que podem ser usados na configuração de itens no seu servidor, criada por mim. Não se trata de um tutorial, mas apenas uma pequena ajuda para aqueles que querem criar equipamentos criativos ou itens em geral. Se um atributo requerir certos tipos de valores, estes serão listados logo abaixo. name article plural type container magicfield depot mailbox trashholder teleport door bed rune clientid description weight showcount blocksolid || blocking blockprojectile blockpathfind || blockpathing || blockpath movable || moveable pickupable allowpickupable forceserialize || forceserialization || forcesave leveldoor lightlevel lightcolor runespellname armor defense extradefense || extradef attack extraattack || extraatk attackspeed floorchange down north south west east northex southex westex eastex corpsetype venom blood undead fire energy fluidsource containersize writeable || writable readable maxtextlen || maxtextlenght text author || writer date writeonceitemid worth weapontype sword club axe shield distance || dist wand || rod ammunition || ammo fist slottype head body legs feet backpack two-handed necklace ring ammo hand ammotype shoottype effect range duration showduration stopduration decayto transformequipto || onequipto transformdeequipto || ondeequipto charges showcharges showattributes breakchance ammoaction hitchance maxhitchance dualwield preventloss preventdrop invisible manashield speed healthgain healthticks managain manaticks skillsword skillaxe skillclub skilldist skillfish skillshield skillfist maxhealthpoints || maxhitpoints maxhealthpercent || maxhitpointspercent maxmanapoints maxmanapercent || maxmanapointspercent soulpoints soulpercent || soulpointspercent magiclevelpoints || magicpoints magiclevelpercent || magicpointspercent increasemagicvalue increasemagicpercent increasehealingvalue increasehealingpercent fieldabsorbpercentenergy fieldabsorbpercentfire fieldabsorbpercentpoison || fieldabsorbpercentearth absorbpercentall absorbpercentelements absorbpercentmagic absorbpercentenergy absorbpercentfire absorbpercentpoison || absorbpercentearth absorbpercentice absorbpercentholy absorbpercentdeath absorbpercentlifedrain absorbpercentmanadrain absorbpercentdrown absorbpercentphysical absorbpercenthealing absorbpercentundefined reflectpercentall reflectpercentelements reflectpercentmagic reflectpercentenergy reflectpercentfire reflectpercentpoison || reflectpercentearth reflectpercentice reflectpercentholy reflectpercentdeath reflectpercentlifedrain reflectpercentmanadrain reflectpercentdrown reflectpercentphysical reflectpercenthealing reflectpercentundefined reflectchanceall reflectchanceelements reflectchancemagic reflectchanceenergy reflectchancefire reflectchancepoison || reflectchanceearth reflectchanceice reflectchanceholy reflectchancedeath reflectchancelifedrain reflectchancemanadrain reflectchancedrown reflectchancephysical reflectchancehealing reflectchanceundefined suppressshock || suppressenergy suppressburn || suppressfire suppresspoison || suppressearth suppressfreeze || suppressice suppressdazzle || suppressholy suppresscurse || suppressdeath suppressdrown suppressphysical suppresshaste suppressparalyze suppressdrunk suppressregeneration suppresssoul suppressoutfit suppressinvisible suppressinfight suppressexhaust suppressmuted suppresspacified suppresslight suppressattributes suppressmanashield field fire energy poison || earth ice || freezing holy || dazzled death || cursed drown physical ticks count start damage elementphysical elementfire elementenergy elementearth elementice elementholy elementdeath elementlifedrain elementmanadrain elementhealing elementundefined replacable partnerdirection maletransformto femaletransformto transformto rotateto walkstack Abraços.
-
O tópico foi criado em uma área inapropriada, amigo, a seção correta é Pedidos e dúvidas - Geral Estou reportando para a moderação para que movam o tópico. Abraços.
-
Acho que sei seu problema. Procure no config.lua por isso: storeTrash Se estiver assim storeTrash = false Mude para storeTrash = true Abraços.
-
pedido Nao Mostrar Ip Das Pessoas Para Senior Tutores
pergunta respondeu ao Subwat de Oneshot em Resolvidos
Isso não é feito nas sources. O certo é você procurar por um gerador de flags e calcular o número sem a opção de ver a descrição especial das criaturas para o grupo Senior Tutor. Player Flags Custom Flags As flags são configuradas no arquivo groups.xml, usualmente encontrado em data/XML. -
Só agora que você resolveu dizer que é para a versão 8.0? Pelo amor, hein... Infelizmente não sei como posso te ajudar, então, boa sorte. Abraços.
-
Não, não possuo.
-
pedido [Encerrado] Galera Ajudem A Arrrumar Este Bug No Distro.
tópico respondeu ao KennyConrad de Oneshot em Tópicos Sem Resposta
Esse erro não tem absolutamente nada a ver com o fato de os jogadores não estarem entrando no seu servidor. Esse erro simplesmente se dá quando a SVN da OTLand (responsável pelo The Forgotten Server) está fora do ar e então, o executável não consegue "puxar" informações sobre a versão mais atual do The Forgotten Server e dentre outras coisas. Recomendo que você reinicie seu modem para que ele escolha um novo IP, verifique se o seu IP fixo está redirecionando para o IP atual, ou remova as portas 7171 e 7172 do firewall e as adicione novamente. Abraços. -
http://www.mediafire.com/?2z4kalw589upakm Abraços
-
Como prometido, Biohazard
-
Olá, Pess0a Em data/creaturescripts/scripts, crie um arquivo chamado ondeath_storage.lua e adicione o seguinte conteúdo: local key = 100000 function onDeath(cid, corpse, deathList) local killer = deathList[1] if not isPlayer(killer) then return true end doCreatureSetStorage(killer, key, 1) doPlayerSendTextMessage(killer, MESSAGE_INFO_DESCR, "Você desferiu o último golpe em ".. getCreatureName(cid) ..".") return true end Em creaturescripts.xml <event type="death" name="onDeathStorage" event="script" value="ondeath_storage.lua"/> No arquivo XML da criatura que executará o creaturescript: <script> <event name="onDeathStorage"/> </script> Abraços.
-
pedido Dar Iten Para X Level Para Cada Vocação!
pergunta respondeu ao leandroskt8 de Oneshot em Scripts
Fiz um aqui: local config = { [1] = { [100] = { {2160, 30}, } }, [2] = { [100] = { {2160, 30}, } }, [3] = { [100] = { {2160, 30} } }, [4] = { [100] = { {2160, 30} } } } function onAdvance(cid, skill, oldLevel, newLevel) if skill == SKILL__LEVEL then local x = (config[getPlayerVocation(cid)] or config[getVocationInfo(getPlayerVocation(cid)).fromVocation]) if not x then return true end local y = x[newLevel] if not y then return true end local items = "" local n = 1 local gift for _, item in ipairs(y) do if type(item) == "table" then gift = doCreateItemEx(item[1], item[2]) items = items .. (n == 1 and "" or ", ") .. item[2] .." ".. getItemNameById(item[1]) else gift = doCreateItemEx(item, 1) items = items .. (n == 1 and "" or ", ") .. getItemNameById(item) end doPlayerAddItemEx(cid, gift, true) n = n + 1 end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have received: ".. items ..".") end return true end Para configurar, basta mexer nessa tabela: local config = { [1] = { [100] = { {2160, 30} } }, [2] = { [100] = { {2160, 30}, {2157, 3}, 2158 } }, [3] = { [100] = { {2160, 30} } }, [4] = { [100] = { {2160, 30} } } } Ele já está pré-configurado para dar 30 crystal coins para qualquer vocação no level 100. Vamos agora a um exemplo básico, uma Magic Sword no level 300 para Knights. local config = { [1] = { [100] = { {2160, 30} } }, [2] = { [100] = { {2160, 30}, {2157, 3}, 2158 } }, [3] = { [100] = { {2160, 30} } }, [4] = { [100] = { {2160, 30} }, [300] = { 2400 } } } O sistema suporta múltiplos itens, basta adicionar uma vírgula no fim de cada linha, com exceção da última. [1] = { [100] = { {2160, 30}, 1111, 2222, 3333, 4444 } O sistema é inteligente e procura na tabela pela vocação-base de jogadores promovidos, então você não precisa adicionar outras vocações. Abraços. -
No ID da armadura que você quer, adicione essa linha: <attribute key="maxhealthpoints" value="2000"/> Por exemplo, com a Magic Plate Armor: <item id="2472" article="a" name="magic plate armor"> <attribute key="weight" value="8500"/> <attribute key="armor" value="17"/> <attribute key="maxhealthpoints" value="2000"/> <attribute key="slotType" value="body"/> </item> E no movements.xml, adicione as linhas: <movevent type="Equip" itemid="2472" slot="armor" event="function" value="onEquipItem"/> <movevent type="DeEquip" itemid="2472" slot="armor" event="function" value="onDeEquipItem"/> Tomando como exemplo a Magic Plate Armor
-
local config = { messages = {"AUSENTE!", "VOLTO JÁ!"}, delay = 10 } local function automessage(cid, position) if isCreature(cid) then if getCreatureStorage(cid, 101010) == 1 then if getThingPosition(cid) == position then doCreatureSay(cid, config.messages[math.random(1, #config.messages)], TALKTYPE_ORANGE_1) addEvent(automessage, config.delay * 1000, cid) else doCreatureSetStorage(cid, 101010, -1) end end end return end function onSay(cid, words, param, channel) if getCreatureStorage(cid, 101010) == -1 then doCreatureSay(cid, config.messages[math.random(1, #config.messages)], TALKTYPE_ORANGE_1) addEvent(automessage, config.delay * 1000, cid, getThingPosition(cid)) doPlayerSendCancel(cid, "Ausente Ativado") doCreatureSetStorage(cid, 101010, 1) else doPlayerSendCancel(cid, "Ausente Desativado") doCreatureSetStorage(cid, 101010, -1) end return true end
-
Isso deve ser feito no vocations.xml, precisamente nessa linha de cada vocação: <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/> Esses são multiplicadores de dano, seja ele físico ou mágico e também de defesa física/mágica. meleeDamage = Dano físico distDamage = Dano físico a distância wandDamage = Dano mágico com wands/rods magDamage = Dano mágico com magias
-
local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) 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 function onGreetCallback(cid) npcHandler:say("Olá, ".. getCreatureName(cid) ..". Siga o caminho da esquerda para escolher seu destino.", cid) return false end npcHandler:setCallback(CALLBACK_GREET, onGreetCallback) npcHandler:addModule(FocusModule:new()) <?xml version="1.0" encoding="UTF-8"?> <npc name="NPC" script="nome_do_arquivo.lua" walkinterval="0" floorchange="0"> <health now="100" max="100"/> <look type="128" head="17" body="54" legs="114" feet="0" addons="2"/> </npc>
- 3 respostas
-
- npc de fala
- otserv
-
(e 2 mais)
Tags:
-
Triplicar em que sentido? O número de hits? Se for isso, segue abaixo: local scom1 = createCombatObject() local scom2 = createCombatObject() local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 255) setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_WEAPONTYPE) setCombatFormula(combat1, COMBAT_FORMULA_SKILL, 18, 15, 6.0, -9) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, 9) setCombatParam(combat2, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_WEAPONTYPE) setCombatFormula(combat2, COMBAT_FORMULA_SKILL, 0, 0, 0.0, 0) arr1 = { {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0} } arr2 = { {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0}, {0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0}, {0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0}, {0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0} } local area1 = createCombatArea(arr1) local area2 = createCombatArea(arr2) setCombatArea(scom1, area1) setCombatArea(scom2, area2) function onTargetTile(cid, pos) doCombat(cid,combat1,positionToVariant(pos)) end function onTargetTile2(cid, pos) doCombat(cid,combat2,positionToVariant(pos)) end setCombatCallback(scom1, CALLBACK_PARAM_TARGETTILE, "onTargetTile") setCombatCallback(scom2, CALLBACK_PARAM_TARGETTILE, "onTargetTile2") local function onCastSpell1(parameters) doCombat(parameters.cid, scom1, parameters.var) end local function onCastSpell2(parameters) doCombat(parameters.cid, scom2, parameters.var) end function onCastSpell(cid, var) local parameters = {cid = cid, var = var} for i = 1, 3 do addEvent(onCastSpell1, 100 * i, parameters) addEvent(onCastSpell2, 200 * i, parameters) end return TRUE end
-
Para que os jogadores não percam nenhum loot ao morrer, abra seu login.lua em data/creaturescripts/scripts e adicione a seguinte linha: doCreatureSetDropLoot(cid, false) Antes de: return true E para que jogadores deem experiência, altere essa linha: rateExperienceFromPlayers = 0 Não coloque um valor absurdo, uma vez que a experiência dada por jogadores mortos já é um valor alto. E altere os valores desses dois parâmetros: minLevelThresholdForKilledPlayer = 0.9 maxLevelThresholdForKilledPlayer = 1.1 Para isso: minLevelThresholdForKilledPlayer = 0 maxLevelThresholdForKilledPlayer = 0
-
data/creaturescripts/scripts/nome_do_arquivo.lua function onAreaCombat(cid, ground, position, aggressive) if aggressive == true and getWorldType() == 1 then return false end return true end data/creaturescripts/scripts/login.lua registerCreatureEvent(cid, "BloquearMagia") data/creaturescripts/creaturescripts.xml <event type="areacombat" name="BloquearMagia" event="script" value="nome_do_arquivo.lua"/>
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.