Ir para conteúdo

jhon992

Conde
  • Total de itens

    631
  • Registro em

  • Última visita

  • Dias Ganhos

    13

Tudo que jhon992 postou

  1. jhon992

    Scripting

    Claro que tem como. Vai em data/actions/scripts e duplique um arquivo, nomeie para "stonemonster" sem as aspas e nele cole isso: function onUse(cid, item, fromPosition, itemEx, toPosition) local effect = 30 -- efeito que ocorrera no player ao clicar na pedra local pos = getPlayerPosition(cid) -- não mecha, essa função retorna a posição atual do player doRemoveItem(item.uid, 1) doSendMagicEffect(pos, effect) pid = doSummonCreature("DEMON", getPlayerLookPos(cid)) -- no lugar de "DEMON" poem o monstro que você desejar return TRUE end Agora vai em data/actions/actions.xml e cole a tag: <action actionid="2012" event="script" value="stonemonster.lua"/> Por último com seu mapa editor, vai nas stones desejadas e coloque o actionid = 2012. Acho que só assim ja deve funcionar, qualquer erro ou duvida me pergunte.
  2. pq "mid" vai ser o "cid" do monstro que é recebido nessa linha: mid = doSummonCreature("Emperium",config.empe,false)
  3. Assim é pra funcionar: local storage = 1755 local emGuerra = 1756 local War = { fromPos={x=1349, y=1101, z=7, stackpos=253}, toPos={x=1359, y=1111, z=0, stackpos=253}, rewardRoom = {x=518,y=840,z=7,stackpos=1}} local config = { empe = {x=55, y=34, z=5}, pre1 = {x=68, y=37, z=6}, pre2 = {x=42, y=37, z=6} } local tpId = 1387 local tp = { pos1 = {x=51, y=28, z=6}, pos2 = {x=59, y=28, z=6} } function removeTp(tp) local t = getTileItemById(tp.pos1, tpId) if t then doRemoveItem(t.uid, 1) doSendMagicEffect(tp.pos1, CONST_ME_POFF) end end function removeTeleport(tps) local t = getTileItemById(tp.pos2, tpId) if t then doRemoveItem(t.uid, 1) doSendMagicEffect(tp.pos2, CONST_ME_POFF) end end function onSay(cid, words, param) if param == "open" then setGlobalStorageValue(emGuerra,1) doBroadcastMessage("War of Emperium has began!",22) mid = doSummonCreature("Emperium",config.empe,false) doSummonCreature("Emperium Guard",config.pre1,false) doSummonCreature("Emperium Guardian",config.pre2,false) addEvent(removeTp, 2*1000, tp) addEvent(removeTeleport, 2*1000, tps) return true elseif param == "close" then for _, pid in ipairs(getPlayersOnline()) do if isInArea(getPlayerPosition(pid), War.fromPos, War.toPos) then if getGlobalStorageValue(storage) ~= getPlayerGuildId(pid) then doTeleportThing(pid, War.rewardRoom, false) doPlayerSendTextMessage(pid, MESSAGE_STATUS_CONSOLE_BLUE,"Sorry, your guild not win the war!") else doPlayerSendTextMessage(pid,MESSAGE_STATUS_CONSOLE_BLUE,"Your guild has domation the castle. Congratulations to help her!") end end end setGlobalStorageValue(emGuerra,0) doRemoveCreature(mid) doBroadcastMessage("The war for the castle has ended!",22) else return doPlayerSendCancel(cid,"Talk /war open[for begin the wr] or /war close[for end the war]") end return true end
  4. Entaum faiz assim, vai na pasta mods do seu ot e duplica um arquivo, nomeia para "firstitems" sem as aspas e nele cole: <?xml version="1.0" encoding="UTF-8"?> <mod name="First Items" version="1.0" author="The Forgotten Server" contact="otland.net" enabled="yes"> <config name="firstitems_config"><![CDATA[ config = { storage = 30001, items = {2050, 2382} } ]]></config> <event type="login" name="FirstItems" event="script"> <![CDATA[ domodlib('firstitems_config') function onLogin(cid) local config = { voc_items = { { -- SORC {2190}, -- wand of vortex {2175}, -- spellbook {8820}, -- mage hat {8819} -- mage robe }, { -- DRUID {2182}, -- snakebite rod {2175}, -- spellbook {8820}, -- mage hat {8819} -- mage robe }, { -- PALADIN {2410}, -- throwing knife {2530}, -- copper shield {2480}, -- legion helmet {2464} -- chain armor }, { -- KNIGHT {2409}, -- serpent sword {2530}, -- copper shield {2480}, -- legion helmet {2464} -- chain armor } }, all_items = { {2468}, -- studded legs {2643} -- leather boots }, extra_items = { {2789, 15}, {2120}, {5710} }, knight_weapons = { {2423}, -- clerical mace {2429} -- barbarian axe } } if getPlayerGroupId(cid) < 3 then if getPlayerStorageValue(cid, storage) == -1 then local common = config.voc_items[getPlayerVocation(cid)] if common ~= nil then for _, v in ipairs(common) do doPlayerAddItem(cid, v[1], v[2] or 1) end end local all = config.all_items if all ~= nil then for _, v in ipairs(all) do doPlayerAddItem(cid, v[1], v[2] or 1) end end local extra = config.extra_items local bp = doPlayerAddItem(cid, 1988, 1) if extra ~= nil then for _, v in ipairs(extra) do doAddContainerItem(bp, v[1], v[2] or 1) end end local weapons = config.knight_weapons if weapons ~= nil then for _, w in ipairs(weapons) do if isKnight(cid) then doAddContainerItem(bp, w[1], w[2] or 1) end end end setPlayerStorageValue(cid, storage, 1) end end return true end ]]></event> </mod> Créditos: Collz JDB
  5. Se não entendeu, faiz assim abre o data/creaturescripts/creaturescripts.xml e procura o script que tem o event type = kill, dae marca o nome do script correspondente dessa linha e abre o creaturescripts/scripts procure o script que voce marcou o nome e cole o script aqui. Ou cole essa tag no seu script antes do "return TRUE" doPlayerAddItem(cid,2160,1)
  6. Vlw a dica @Demonbholder, quando tiver tempo estudo essa função e mudo no tópico.
  7. Ta aew o script pra você: Duplica um arquivo na pasta data/spells/scripts e nomeia para sennin e nele cole: local outfit = {lookType = 32} -- ropa do modo sanin local tempo = 60 * 1000 -- Tempo, nesse caso esta 60 segundos Lembrando que 1000 = 1 segundo local efeito = 48 -- efeito no player local ml = 2 -- quantos ira aumentar o skill de ML local skillfist = 2 -- quantos ira aumentar o skill de Fist local skillsword = 2 -- quantos ira aumentar o skill de Sword local skillaxe = 2 -- quantos ira aumentar o skill de Axe local skillclub = 2 -- quantos ira aumentar o skill de Club local skilldistance = 2 -- quantos ira aumentar o skill de Distance local skillshield = 2 -- quantos ira aumentar o skill de Shield local health = 20 -- A cada 1 segundo quantos aumentar de vida local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, efeito) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, tempo) setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, ml) setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, skillfist) setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD, skillsword) setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, skillaxe) setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB, skillclub) setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, skilldistance) setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, skillshield) setConditionParam(condition, CONDITION_PARAM_OUTFIT, outfit) setCombatCondition(combat, condition) local condition = createConditionObject(CONDITION_HASTE) setConditionParam(condition, CONDITION_PARAM_SPEED, 250) setConditionParam(condition, CONDITION_PARAM_TICKS, tempo) setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE) setCombatCondition(combat, condition) local condition = createConditionObject(CONDITION_REGENERATION) setConditionParam(condition, CONDITION_PARAM_SUBID, 1) setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE) setConditionParam(condition, CONDITION_PARAM_TICKS, tempo) setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, health) setConditionParam(condition, CONDITION_PARAM_HEALTHTICKS, 1000) setCombatCondition(combat, condition) local sys = createConditionObject(CONDITION_OUTFIT) setConditionParam(sys, CONDITION_PARAM_TICKS, tempo) addOutfitCondition(sys, outfit) setCombatCondition(combat, sys) function onCastSpell(cid, var) return doCombat(cid, combat, var) end E no spells.xml cola a tag: <instant name="sannin" words="sannin" aggressive="0" lvl="1" mana="40" selftarget="1" exhaustion="1500" script="transform.lua"> <vocation id="5"/> <vocation id="6"/> <vocation id="7"/> <vocation id="8"/> <vocation id="4"/> </instant> Edita como você quiser!
  8. Verifica se no arquivo, data/creaturescripts/script/login.lua tem uma parte assim: doPlayerSetLossSkill(cid, 0) Se encontrar exclua! Verifica tambem se no teu creaturescripts.xml não tem nenhum arquivo do tipo onDeath ou PrepareDeath, se tiver vaia no arquivo correspondente e procure por essa mesma linha de codigo: doPlayerSetLossSkill(cid, 0) E se possuir essa linha, que provavemente é o erro, simplesmente exclua a linha.
  9. jhon992

    Bug Spell 8.5

  10. Vlw a dica @Vodkart, é que eu nem conheço todos os for de lua ainda mais acho que e assim que é pra usar esse for. Se tiver errado me corrige.
  11. jhon992

    Bug Spell 8.5

    Vai em data/lib/000-constant.lua, la tem tudo que voce precisa. Da um ctrl+f e procura por COMBAT_PHYSICALDAMAGE, você encontrara os outros tipos!
  12. Hoje vamos criar um Sisteminha para que só jogadores vips possam usar determinados items! Vamos denominar esse sistema de [Vip Items System]. Então vamos começar com a brincadeira! ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Vai em data/movements/script e duplica um arquivo dessa pasta e nomeie para "itemvip" sem aspas, abra-o e cole: local storageVIp = 55555 -- mude a storage vip, conforme a storage do sistema vip do seu otserv! function onEquip(cid, item, slot) if getPlayerStorageValue(cid, storageVIp) <= 0 then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Apenas players vip podem usar essa arma!") return FALSE end return TRUE end Agora vai em data/movements/movements.xml abre e adicione a tag: <movevent type="Equip" itemid="id do seu item" slot="hand" event="script" value="itemvip.lua"/> E se quiser adicionar mais armas vip, sóh duplica a linha acima e muda o id do item e o slot! Tipos de Slots: head armor legs hand shield ring necklace feet pickupable ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Agora vamos fazer um script para que quando a vip acabe, o item saia do slot! Abra data/creaturescripts/scripts e duplica um arquivo, renomeia para "itemlogin" sem as aspas e nele cole: function onLogin(cid) itensVip = { "2408", "8850", "7413" } -- itens vips if (getPlayerStorageValue(cid, 55555) <= 0) then for i=0, #itensVip do for b = 1,9 do if (getPlayerSlotItem(cid, b) == itensVip[i]) then doPlayerRemoveItem(cid, itensVip[i]) local bag = doPlayerAddItem(cid, 1988, 1) doAddContainerItem(bag, itensVip[i], 1) end end end end return TRUE end E por último, abra data/creaturescripts/creaturescripts.xml e cole a tag: <event type="login" name="ItemLogin" event="script" value="itemlogin.lua"/> Pronto, é isso aew. Terminamos nosso [Vip Items System]!
  13. vai em data/movements/scripts, duplica um arquivo e renomeia para "relogioxp" sem as aspas e nele cole: local rate = 1.4 -- 1.4 = 40%, 1.5 = 50%... function onEquip(cid, item, slot) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your exp rate + "..((rate - 1)*100).."%.") doPlayerSetExperienceRate(cid, rate) return true end function onDeEquip(cid, item, slot) doPlayerSetExperienceRate(cid, 1.0) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Sua experiência extra terminou.") return true end Agora em movements.xml cole as tags: <movevent type="Equip" itemid="8187" slot="ring" event="script" value="relogioxp.lua"/> <movevent type="DeEquip" itemid="8187" slot="ring" event="script" value="relogioxp.lua"/> E por último vai em data/items/items.xml procure pelo id do seu relogio e substitua: <item id="8187" article="a" name="magical watch"> <attribute key="weight" value="50" /> </item> Por isso: <item id="8187" article="an" name="relogio de xp"> <attribute key="weight" value="80"/> <attribute key="slotType" value="ring"/> </item> Créditos @kelvinvictor.
  14. vai nos scripts e troque isso: function onGetFormulaValues(cid, level, skill, attack, factor) return -(((skill + 25) / 3) + (level / 5)), -((skill + 25) + (level / 5)) end por isso: function onGetFormulaValues(cid, level, skill, attack, factor) return -(((skill + 25) / 3) + (level / 5)), -((skill + 100) + (level / 5)) end Ou seja, muda o segundo 25 por 100 ou + que vai ser a variação do attack. Acho que vai funcionar.
  15. Se tu der uma explicação melhor, talvez alguem possa ajudar. Pois nem todos conhecem esse otserv que você esta mencionando e para que serve isso "tradevip fulano, 10".
  16. Vai em data/creaturescripts/scripts e abre o arquivo login.lua nele cole a tag: setPlayerStorageValue(cid, 471121200, 0) Dae sempre que o player logar o storage vai ser zerado!
  17. 1. Tem sim como fazer um comando que adicione vip para os player onlines! Só é preciso do seu sistema vip. 2. Com certeza um otserv com 20 players pode ir longe, ou se acha que todo otserv de respeito começou com 300 players online. O otserv vai crescendo aos poucos e quanto mais ele inovar e se diferenciar dos outros por suas proprias caracteristicas, mais ele tende a crescer! Não necessariamente é preciso de um site fixo, mas atualmente é muito comun os otservs terem esse tipo de site, pois ajuda na divugação, criação de accounts com praticidade, e etc.
  18. Pelo amor de Deus, que script bem embaralhado sahuda Ta aew resolvido:
  19. jhon992

    Alguem Me Ajuda

    vai em data/actions/scripts/other e se não tiver o arquivo "blueberrybush" cria um e cole: function onUse(cid, item, fromPosition, itemEx, toPosition) doCreateItem(2677, 3, fromPosition) doTransformItem(item.uid, 2786) doDecayItem(item.uid) return true end Em data/actions/actions.xml cola essa tag se não tiver: <action itemid="2785" event="script" value="other/blueberrybush.lua"/>
  20. Sóh de perto, tem uma linha de código que verifica se tu ta a menos de 1 sqm de distancia de seu oponente, se tiver mais distante n usa o paralize. Linha: if ((getCreaturePosition(target).x == getCreaturePosition(cid).x or getCreaturePosition(target).x == getCreaturePosition(cid).x+1 or getCreaturePosition(target).x == getCreaturePosition(cid).x-1) and (getCreaturePosition(target).y == getCreaturePosition(cid).y or getCreaturePosition(target).y == getCreaturePosition(cid).y+1 or getCreaturePosition(target).y == getCreaturePosition(cid).y-1)) then
  21. vai na pasta data/creaturescripts/scripts, duplica um arquivo e renomeia para "itensvip" sem as aspas e nele cole: function onLogin(cid) itensVipHand = { "2408", "8850", "7413" } -- itens vips vipStorage = 55555 -- storage vip if (getPlayerStorageValue(cid, vipStorage) <= 0) then for i=0, #itensVipHand do if (getPlayerSlotItem(cid, 5) == itensVipHand[i]) then doPlayerRemoveItem(cid, itensVipHand[i]) local bag = doPlayerAddItem(cid, 1988, 1) doAddContainerItem(bag, itensVipHand[i], 1) end if (getPlayerSlotItem(cid, 6) == itensVipHand[i]) then doPlayerRemoveItem(cid, itensVipHand[i]) local bag = doPlayerAddItem(cid, 1988, 1) doAddContainerItem(bag, itensVipHand[i], 1) end end end return TRUE end Agora em creaturescripts.xml cole a tag: <event type="login" name="ItensVip" event="script" value="itensvip.lua"/> Esse arquivo funcionara com o sistema vip do mock, se no seu ot n funcionar troque o storage pelo do seu sistema vip, ou me diga qual seu sistema vip que arrumo o script para você!
  22. troca a terceira e quarta linha por isso: local tmp = {accountId = getPlayerAccountId(cid), ip = getPlayerIp(cid)} local pos = getCreaturePosition(cid)
  23. if (getPlayerStorageValue(cid, getPlayerAccountId(cid)+3210) ~= 1) then doPlayerAddPremiumDays(cid, 5) -- 5 é o numero de dias premmy pode trocar se quiser doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Congratulations, good luck on your journey, I almost forgot here are your 5 days of premium.") setPlayerStorageValue(cid, getPlayerAccountId(cid)+3210, 1) end
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...