Ir para conteúdo

AndreAmaral

Campones
  • Total de itens

    9
  • Registro em

  • Última visita

Histórico de Reputação

  1. Upvote
    AndreAmaral deu reputação a jhon992 em Remover Red Atravéz De Item!? Ajuda Plx Rep+   
    Vai em data/actions/scripts e duplique um arquivo, nomeie para "skullamulet" sem as aspas e nele cole isso:
     

    function onUse(cid, item, fromPosition, itemEx, toPosition) local effect = 25 -- efeito ao usar if (getCreatureSkullType(cid) > 2) then doCreatureSetSkullType(cid, SKULL_NONE) doPlayerSendTextMessage(cid, 25, "Sua Skull foi retirada.") doRemoveItem(item.uid, 1) doSendMagicEffect(getPlayerPosition(cid) , effect) else doPlayerSendTextMessage(cid, 25, "Voce nao possui Skull.") end return TRUE end
     
    Agora vai em data/actions/actions.xml e cole a tag:
     

    <action itemid="8474" event="script" value="skullamulet.lua"/>
  2. Upvote
    AndreAmaral deu reputação a jhon992 em [Movements / Creaturescripts] - { Vip Items System }   
    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]!
  3. Upvote
    AndreAmaral deu reputação a jhon992 em [Creaturescript] Weapons Paralyze!   
    Sóh adicionar mais conditions antes da função onAttack
     
    Fire:

    local condition = createConditionObject(CONDITION_FIRE) setConditionParam(condition, CONDITION_PARAM_TICKS, 10000) -- aqui vai o tempo de fire, 1000 = 1 segundo setConditionFormula(condition, 0, 0, 0, 0) setCombatCondition(combat, condition)
     
    Ice:

    local condition = createConditionObject(CONDITION_FREEZING) setConditionParam(condition, CONDITION_PARAM_TICKS, 10000) -- aqui vai o tempo de fire, 1000 = 1 segundo setConditionFormula(condition, 0, 0, 0, 0) setCombatCondition(combat, condition)
     
    Lista de Conditions:

    CONDITION_NONE = 0 CONDITION_POISON = 1 CONDITION_FIRE = 2 CONDITION_ENERGY = 4 CONDITION_PHYSICAL = 8 CONDITION_HASTE = 16 CONDITION_PARALYZE = 32 CONDITION_OUTFIT = 64 CONDITION_INVISIBLE = 128 CONDITION_LIGHT = 256 CONDITION_MANASHIELD = 512 CONDITION_INFIGHT = 1024 CONDITION_DRUNK = 2048 CONDITION_EXHAUST = 4096 CONDITION_FOOD = 8192 CONDITION_REGENERATION = 8192 CONDITION_SOUL = 16384 CONDITION_DROWN = 32768 CONDITION_MUTED = 65536 CONDITION_ATTRIBUTES = 131072 CONDITION_FREEZING = 262144 CONDITION_DAZZLED = 524288 CONDITION_CURSED = 1048576 CONDITION_PACIFIED = 2097152 CONDITION_GAMEMASTER = 4194304 CONDITION_HUNTING = 8388608
  4. Upvote
    AndreAmaral deu reputação a jhon992 em [Creaturescript] Simple Reputation System !   
    Estou aqui hoje para trazer um sistema simples que eu criei, porém pode ser até muito útil, o Sistema de Reputação !
    Esse sistema vai funcionar da seguinte forma, você adiciona os monstros que darão Rep+ ao morrer, e a cada monstro desse, o player que o matou conquista +1 ponto de Reputação. Exemplo de monstro que seria legal adicionar: Bosses.
    Outro meio de ganhar Reputação com esse sistema será matando outros players que estejam pk.
    E o único meio de perder Pontos de Reputação é matando players que não estejam pk.
    O Sistema também vem com um rank de Reputação que sera adicionado nas talkactions e listara os tops Reputação e um comando para verificar seus pontos de reputação.

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     
    Para que Esse Sistema pode ser Útil:
    Vamos pensar da seguinte maneira, pontos ao matar. Diminuirá o número de pk's in-game pois mais players vão querer mata-los. (REP +)
    Pontos negativos ao matar players comuns, também contribuirá para diminuição de pk's. (REP -)
    Pontos por matar bosses e outros monstros fortes, vai estimular os player's a matarem monstros mais perigosos. (REP +)

     
    Esse Sistema pode ser útil também para que só players com certa quantidade de Rep+ possam:
     
    -Entrar em lugares;
    -Fazer quests;
    -Usar magias;
    -Usar outras talkactions;
    -E várias outras coisas.
     
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     
    Agora vamos ao que interessa os scripts:
     
    Primeiro vai em "data/creaturescripts/scripts/" duplica um arquivo dessa pasta e renomeia para "repsystem" sem as aspas, nele cole:

    --<Script by jhon992>-- function onKill(cid, target, lastHit) vetMonster = { "Demon", "Morgaroth", "Hydra", "Dragon" } -- adicionar monstros que darão rep+ -- Ao matar monstros do vetMonster, ganhara rep+. for i=0, #vetMonster do if (getCreatureName(target) == vetMonster[i]) then setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086)+1) doSendAnimatedText(getThingPos(cid), 'Rep+', 30) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você ganhou 1 ponto de reputação por matar um "..vetMonster[i]..".") return TRUE end end -- Ao matar um pk, ganhara rep+. if (isPlayer(target) == true) then if (getCreatureSkullType(target) > 2) then setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086)+1) doSendAnimatedText(getThingPos(cid), 'Rep+', 30) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você ganhou 1 ponto de reputação por matar "..getCreatureName(target)..".") return TRUE end -- Ao matar um player normal, ganhara rep-. setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086)-1) doSendAnimatedText(getThingPos(cid), 'Rep-', 144) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você perdeu 1 ponto de reputação por matar "..getCreatureName(target)..".") return TRUE end return TRUE end
     
    Agora em "data/creaturescripts/creaturescripts.xml" cole a tag:
     

    <event type="kill" name="RepSystem" event="script" value="repsystem.lua"/>
     
    Entre na pasta "data/creaturescripts/scripts" novamente, e abra o arquivo "login.lua" sem as aspas. Nele cole a tag:
     

    -- Verificar se é primeira vez que loga, pois ao usar storage ele ja começa com -1, -- Então vamos zera-lo para que sua Reputação comece do 0. if (getPlayerStorageValue(cid, 102087) ~= 1) then setPlayerStorageValue(cid, 102087, 1) setPlayerStorageValue(cid, 102086, 0) end registerCreatureEvent(cid, "RepSystem")
     
    Terminamos a parte do Sistema e agora vamos para o talkaction de rank.
     
    Vai na pasta "data/talkaction/scripts", duplique um arquivo e remomeie para "rankrep" sem as aspas. Abra-o e cole:
     

    function getPlayerNameByGUID2(n) local c = db.getResult("SELECT `name` FROM `players` WHERE `id` = "..n..";") if c:getID() == -1 then return "SQL_ERROR["..n.."]" end return c:getDataString("name") end function onSay(cid, words, param) if (param == "") then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você possui "..getPlayerStorageValue(cid, 102086).." pontos de Reputação.") return TRUE end if (param == "rank") then local max = 50 local letters_to_next = 50 local name_now local name = "Highscore for Reputação\n" local rkn = 0 local no_break = 0 name = name.."\n" name = name.."Rank. Pontos | Nome do Jogador\n" local v = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = 102086 ORDER BY cast(value as INTEGER) DESC;") local kk = 0 repeat if kk == max or v:getID() == -1 then break end kk = kk+1 name_now, l = getPlayerNameByGUID2(v:getDataInt("player_id")), string.len(getPlayerNameByGUID2(v:getDataInt("player_id"))) space = "" for i=1, letters_to_next-l do space = space.." " end if name_now == nil then name_now = 'sql error['..v:getDataInt("player_id")..']' end name = name..kk..". "..v:getDataInt("value").." | "..name_now..space.." \n" until v:next() == false if name ~= "Highscore\n" then doPlayerPopupFYI(cid, name) end return TRUE else doPlayerSendCancel(cid, "Command valid: !rep, !rep rank.") return TRUE end end
     
    E por último mais não menos importante, abra "data/talkactions/talkacitons.xml" e cole a tag:
     

    <talkaction words="!rep" event="script" value="rankrep.lua"/>
    Pronto, terminamos o nosso Simple Reputation System!
     
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     
    ----- Reputation Door-----
     
    Vai em data/actions/script, duplica um arquivo e nomeia para "repDoor" sem as aspas e nele cole:
     

    function onUse(cid, item, frompos, item2, topos) local quantRep = 30 -- quantidade de reset para entrar na porta newnPosition = {x=784, y=805, z=7} -- onde será teleportado ao clicar na porta if item.actionid == 2085 and getPlayerStorageValue(cid, 102086) >= quantRep then doTeleportThing(cid, newnPosition) doSendMagicEffect(newnPosition, 10) else doCreatureSay(cid, "Voce nao tem reputação suficiente para entrar!", TALKTYPE_ORANGE_1) end return TRUE end
     
    Agora em data/actions/actions.xml cole a tag:
     

    <action actionid="2085" script="repDoor.lua"/>
     
    E por último com seu mapa editor, vai na porta desejada do seu server e coloque o actionid 2085.
     
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     
    Agora para fazer alavancas, baús e etc, basta seguir o exemplo do script acima da repDoor.
     
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     
    ----- Quantidade de Reputação para usar determinado item -----
     
    Vai em data/movements/script e duplica um arquivo dessa pasta e nomeie para "itemRep" sem aspas, abra-o e cole:
     

    local quantRep = 30 -- quantidade de reset para usar determinado item function onEquip(cid, item, slot) if getPlayerStorageValue(cid, 102086) < quantRep then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Apenas players com "..quantRep.." pontos de reputação ou mais, 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="itemRep.lua"/>
     
    Troque os slots na tag acima como desejar, tipos de slots:
     

    head armor legs hand shield ring necklace feet pickupable
     
    Para itens que você for usar com a mesma quantidade de reps que o item anterior, apenas crie uma nova tag no movementes.xml com o itemid diferente. Senão você devera criar um novo script com o nome diferente e mudar a quantRep.
     
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     
    ----- Comprar determinado item com Pontos de Reputação -----
     
    Vai em data/talkactions/scripts, duplique um arquivo e nomeiei para "buyrep" sem as aspas e nele cole:
     

    local itemNames = { {name = "Dragon Shield", pontos = 2}, -- nome do item e pontos que gastara. {name = "Crown Armor", pontos = 8}, {name = "Arbalest", pontos = 25}, {name = "Heroic Axe", pontos = 20}, {name = "Magic Sword", pontos = 30}, {name = "Demon Armor", pontos = 50} } function onSay(cid, words, param, channel) if param == "" then for i=1, #itemNames do if i == 1 then text = "-- Lista de Items --\n" else text = text .. (itemNames[i].name) .." = ".. itemNames[i].pontos .." pontos\n" end end doShowTextDialog(cid,8977,text) return true end param = string.upper(param) for j=1, #itemNames do if (param == string.upper(itemNames[j].name)) then if getPlayerStorageValue(cid, 102086) < tonumber(itemNames[j].pontos) then doPlayerSendCancel(cid,"Você não possui pontos suficientes.") return true else doPlayerAddItem(cid, getItemIdByName(param)) doPlayerSendTextMessage(cid, 22, "Você comprou 1 ".. itemNames[j].name ..".") setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086) - itemNames[j].pontos) return true end end end doPlayerSendCancel(cid,"Este item não existe.") return true end
     
    Agora em data/talkactions/talkactions.xml cole a tag:
     

    <talkaction words="!buy" event="script" value="buyrep.lua"/>
     
    Em jogo, ao falar "!buy" aparecera a lista de itens que pode ser comprado e seus determinados custos, conforme foram configurados no arquivo "buyrep.lua".
    Para comprar um item basta ter a quantidade de reputação necessaria e usar o comando "!buy NomeDoItem".
     
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     
    ----- Mostrar Reputação no Look (by Vodkart)-----
     
    Vai em data/creaturescripts/scripts, duplique um arquivo e nomeiei para "showrep" sem as aspas e nele cole:

    function getReps(cid) return getPlayerStorageValue(cid,102086) < 0 and 0 or getPlayerStorageValue(cid,102086) end function onLook(cid, thing, position, lookDistance) if isPlayer(thing.uid) then doPlayerSetSpecialDescription(thing.uid, "\n[Reps: " .. getReps(thing.uid) .."]") end return true end
     
    No creaturescripts.xml cole a tag:

    <event type="look" name="showRep" event="script" value="showrep.lua"/>
     
    E no arquivo login.lua, antes do último return true:

    registerCreatureEvent(cid, "showRep")
     
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     
    ----- Versão 2.0 repsystem.lua -----
    Caso você queira que cada monstro que você matar de pontos diferentes de reputação, voce deve substituir oque tem dentro do seu arquivo inicialmente criado e nomeado como repsystem.lua por isso:
     
     
     
    É isso aew galera, qualquer coisa que precise ser modificado ou dica para melhorar os scripts e o sistema serão bem vindas!
  5. Upvote
    AndreAmaral deu reputação a jhon992 em [Creaturescript] Weapons Paralyze!   
    Vi que no fórum de dúvidas varias pessoas perguntam como fazer para Weapons darem Paralyze, então resolvi criar o Weapon Paralyze!
     
    O script é de fácil entendimento e qualquer um pode editar facilmente, vai ser possível adicionar mais weapons, regular a chance de ocorrer o paralyze entre outras configurações.
     
    -------------------------------------------------------------------------------------------------------------------------------
     
    Vamos ao que interessa, abra a pasta "data/creaturescripts/scripts" duplique um arquivo qualquer e renomeie para "weaponpar" sem as aspas e nele cole:

    -- <Script by jhon992> -- local weaponpar = {2377, 2378, 2379, 2380} -- id dos items que darão paralize local chancepar = 5 -- chance de ocorrer o paralize (10 = 10%, 20 = 20%, 30 = 30%, 1 = 1%, 5 = 5%) e assim por diante local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1, 0, 1, 0) -- aqui edita os valores pro dano de paralize, vai mudando ae e testando até achar o desejado local condition = createConditionObject(CONDITION_PARALYZE) setConditionParam(condition, CONDITION_PARAM_TICKS, 10000) -- aqui vai o tempo de paralyze, 1000 = 1 segundo setConditionParam(condition, CONDITION_PARAM_SPEED, -400) -- velocidade que o monstro irá perder setConditionFormula(condition, 0, 0, 0, 0) setCombatCondition(combat, condition) function onAttack(cid, target) 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 for i=0, #weaponpar do if (getPlayerSlotItem(cid, 5).itemid == weaponpar[i] or getPlayerSlotItem(cid, 6).itemid == weaponpar[i]) then if (math.random(1,100) > (100 - chancepar)) then doPlayerSendTextMessage(cid, 23, getCreatureName(target).." has paralized.") doAddCondition(target, condition) return true else return true end end end end return true end
     
    Agora no arquivo, "data/creaturescripts/creaturescripts.xml" cole a tag:

    <event type="attack" name="WeaponPar" event="script" value="weaponpar.lua"/>
     
    E por último, abra o arquivo login.lua que esta localizado em "data/creaturescripts/scripts" e cole a tag:

    registerCreatureEvent(cid, "WeaponPar")
     
    Pronto, terminamos o Weapon Paralyze! Se tiverem alguma dúvida ou aparecer algum erro inesperado só me falar.
  6. Upvote
    AndreAmaral deu reputação a Vodkart em Ant-Exit   
    Creditos: Maestrial(60%),MatheusMkalo(20%) & Vodkart(20%) pelas correção de Bugs.

    Explicaçao: Quando o player pisa no tile do treiner é mandando uma mensagem dizendo que se ele nao se movimentar em alguns minutos ele será mandado para o templo e será kikado automaticamente.


    MoveEvent/Scripts

    autokick.lua
    events1,events2= {},{}local config = {tempo = 15,storage = 20000 }function onStepIn(cid, item, frompos, topos)if isPlayer(cid) and getPlayerStorageValue(cid, config.storage) <= 0 thendoPlayerSendTextMessage(cid, 22, "[Trainer]: Movimente-se a cada " .. config.tempo .. " minutos, caso contrário, seu char será levado ao templo.")setPlayerStorageValue(cid, config.storage, 1)events1[getPlayerGUID(cid)] = addEvent(setPlayerStorageValue, config.tempo*60*1000-1000, cid, config.storage, -1)events2[getPlayerGUID(cid)] = addEvent(doTeleportThing, config.tempo*60*1000-500, cid, getTownTemplePosition(getPlayerTown(cid)))endreturn trueendfunction onStepOut(cid, item, frompos, topos)if isPlayer(cid) and getPlayerStorageValue(cid, config.storage) >= 1 thensetPlayerStorageValue(cid, config.storage, -1)doPlayerSendTextMessage(cid, 23, "System kick off!")stopEvent(events1[getPlayerGUID(cid)])stopEvent(events2[getPlayerGUID(cid)])endreturn trueend

    movements.xml
    <movevent type="StepIn" actionid="25000" event="script" value="autokick.lua"/><movevent type="StepOut" actionid="25000" event="script" value="autokick.lua"/>

    Agora abra o MAP EDITOR e coloque no TILE dos trainers o action id 25000

    Seu sistema anti Exit está pronto.[/i]
  • Quem Está Navegando   0 membros estão online

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