Ir para conteúdo

jhon992

Conde
  • Total de itens

    631
  • Registro em

  • Última visita

  • Dias Ganhos

    13

Tudo que jhon992 postou

  1. Acho que assim fica mais organizado e explicado: Vai em data/movements/scripts/ duplica um arquivo e nomeia para "tp_town1" sem as aspas e nele cole: local pos = {x=100, y=200, z=7} -- coordenada do templo local cidade_id = 1 -- id da cidade function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if getPlayerStorageValue(cid, 109823) == cidade_id then doPlayerSendTextMessage(cid, "Você ja é morador desta cidade") doTeleportThing(cid, lastPosition) else doTeleportThing(cid, pos) doSendMagicEffect(getPlayerPosition(cid), 10) doPlayerSetTown(cid, cidade_id) doPlayerSendTextMessage(cid, "Você agora é um morador de " .. getTownName(cidade_id) .."!") setPlayerStorageValue(cid, 109823, cidade_id) end return TRUE end Agora em data/movements/movements.xml cole a tag: <movevent type="StepIn" actionid="20305" event="script" value="tp_town1.lua"/> Para funcionar basta apenas colocar o actionid=20305, no teleport pelo Map Editor. Dae em cada cidade poem um teleport diferente, duplica o arquivo "tp_town1" renomeia e dentro dele muda apenas o cidade_id. Depois duplica a tag no xml e troca o actionid. Créditos pro @xFkyx.
  2. Na última parte faltou um "end" era pra estar assim: ---Piccolo--- if getPlayerVocation(cid) == 378 then if getPlayerLevel(cid) >= 450 then doPlayerSetVocation(cid,407) doSetCreatureOutfit(cid, piccolo, -1) addEvent(trans,ext,cid) doSendMagicEffect(getPlayerPosition(cid), 233) else doPlayerSendCancel(cid, "You need 450 level to first transform") doSendMagicEffect(getPlayerPosition(cid), 2) end elseif getPlayerVocation(cid) == 407 then if getPlayerLevel(cid) >= 600 then doPlayerSetVocation(cid,408) addEvent(trans1,ext,cid) doSendMagicEffect(getPlayerPosition(cid), 33) doSetCreatureOutfit(cid, piccolo1, -1) else doPlayerSendCancel(cid, "You need 600 level to next transform") doSendMagicEffect(getPlayerPosition(cid), 2) end elseif getPlayerVocation(cid) == 408 then if getPlayerLevel(cid) >= 850 then doPlayerSetVocation(cid,409) addEvent(trans2,ext,cid) doSendMagicEffect(getPlayerPosition(cid), 18) doSetCreatureOutfit(cid, piccolo2, -1) else doPlayerSendCancel(cid, "You need 850 level to next transform") doSendMagicEffect(getPlayerPosition(cid), 2) end end
  3. esse aqui é um ótimo npc de task, sóh saber configurar. http://www.xtibia.com/forum/topic/172790-npc-de-task/ [1] = {questStarted = 1510, questStorage = 65000, killsRequired = 100, raceName = "Trolls", rewards = {first = {enable = true, type = "exp", values = 200}, second = {enable = true, type = "money", values = 200}, third = {enable = true, type = "item", values = {1234, 5678}}}}, killsRequired > Quantidade para matar raceName > Nome do monstro rewards > recompensa first = {enable = true, type = "exp", values = 200} > primeira = {verdadeira, experiencia, 200} second = {enable = true, type = "money", values = 200} > segunda = {verdadeira, dinheiro, 200} third = {enable = true, type = "item", values = {1234, 5678}} > terceira = {verdadeira, itens, id 1234,5678}
  4. da pra fazer assim oh: http://www.xtibia.com/forum/topic/158192-sistema-de-novos-items/
  5. function onCastSpell(cid, var) target = getCreatureTarget(cid) if (target ~= 0) then Shar_Dim = {x=2458, y=2467, z=7} -- posição que teletronsportara doTeleportThing(target, Shar_Dim) return true end return false end
  6. jhon992

    [House] Perder A House

    ashudahu, não néh. ta arrumado pq eu modifiquei o último post, então é sóh substituir os scripts.
  7. jhon992

    [House] Perder A House

    ta arrumado.
  8. script muito bom, parabéns em Anne ta ficando cada dia melhor
  9. jhon992

    [House] Perder A House

    Modifiquei para aceitar dias, sóh testar. Vai em data/globalscripts/scripts/ duplica um arquivo e nomeia para "houseclean" sem as aspas e nele cole: function onThink(interval, lastExecution, thinkInterval) local days = 15 -- quantidade de dias para executar local b = 0 local d = db.getResult("SELECT `owner` FROM `houses` WHERE `owner` > "..b..";") if (d:getDataInt("owner") ~= false) then local c = db.getResult("SELECT `name` FROM `players` WHERE `id` == "..d:getDataInt("owner")..";") local lastLogin = getPlayerLastLoginSaved(getPlayerByName(c:getDataString("name"))) local e = db.getResult("SELECT `id` FROM `houses` WHERE `owner` == "..d:getDataInt("owner")..";") if (os.date("%d") - os.date("%d", lastLogin) >= days) then doCleanHouse(e:getDataInt("id")) setHouseOwner(e:getDataInt("id"), 0) elseif (os.date("%d") < 30 and os.date("%b", lastLogin) ~= os.date("%b")) then if ((30 - os.date("%d", lastLogin)) + os.date("%d") > days) then doCleanHouse(e:getDataInt("id")) setHouseOwner(e:getDataInt("id"), 0) end end end while (d:next() ~= false) do c = db.getResult("SELECT `name` FROM `players` WHERE `group_id` == "..d:getDataInt("owner")..";") lastLogin = getPlayerLastLoginSaved(getPlayerByName(c:getDataString("name"))) e = db.getResult("SELECT `id` FROM `houses` WHERE `owner` == "..d:getDataInt("owner")..";") if (os.date("%d") - os.date("%d", lastLogin) >= days) then doCleanHouse(e:getDataInt("id")) setHouseOwner(e:getDataInt("id"), 0) elseif (os.date("%d") < 30 and os.date("%b", lastLogin) ~= os.date("%b")) then if ((30 - os.date("%d", lastLogin)) + os.date("%d") > days) then doCleanHouse(e:getDataInt("id")) setHouseOwner(e:getDataInt("id"), 0) end end end return true end Agora em globalevents.xml cole a tag: <globalevent name="houseclean" interval="3600" event="script" value="houseclean.lua"/> O script vai ser executado a cada 1 hra e verificara tem não loga a + de 15 dias. Pode modificar a execução é sóh alterando o interval do globalevents. E para mudar a quantidade de dias para remover a house é sóh alterar o "local days = 15 -- quantidade de dias para executar".
  10. jhon992

    [House] Perder A House

    Fiz um aqui, testei mais pouco. Qualquer erro fala. E funciona quando o player fica 30 dias sem logar. Eu tava fazendo antes do Beeki postar, então vou postar msm assim. Vai em data/globalscripts/scripts/ duplica um arquivo e nomeia para "houseclean" sem as aspas e nele cole: function onThink(interval, lastExecution, thinkInterval) local b = 0 local d = db.getResult("SELECT `owner` FROM `houses` WHERE `owner` > "..b..";") if (d:getDataInt("owner") ~= false) then local c = db.getResult("SELECT `name` FROM `players` WHERE `id` == "..d:getDataInt("owner")..";") local lastLogin = getPlayerLastLoginSaved(getPlayerByName(c:getDataString("name"))) local e = db.getResult("SELECT `id` FROM `houses` WHERE `owner` == "..d:getDataInt("owner")..";") if (os.date("%d", lastLogin) <= os.date("%d") and os.date("%b", lastLogin) ~= os.date("%b")) then doCleanHouse(e:getDataInt("id")) setHouseOwner(e:getDataInt("id"), 0) end end while (d:next() ~= false) do c = db.getResult("SELECT `name` FROM `players` WHERE `group_id` == "..d:getDataInt("owner")..";") lastLogin = getPlayerLastLoginSaved(getPlayerByName(c:getDataString("name"))) e = db.getResult("SELECT `id` FROM `houses` WHERE `owner` == "..d:getDataInt("owner")..";") if (os.date("%d", lastLogin) <= os.date("%d") and os.date("%b", lastLogin) ~= os.date("%b")) then doCleanHouse(e:getDataInt("id")) setHouseOwner(e:getDataInt("id"), 0) end end return true end Agora em globalevents.xml cole a tag: <globalevent name="houseclean" interval="86400" event="script" value="houseclean.lua"/>
  11. Adiciona promotion depois usa o comando "!promotion days" e me diz oque aparece.
  12. <event type="think" name="Idle2" event="script" value="nomedoscript.lua"/> Em creaturescripts/scripts/login.lua, antes do último return true cole a tag: registerCreatureEvent(cid, "Idle2")
  13. Pra que esse script monstruoso? ahsudas vai em data/creaturescripts/scripts, duplica um arquivo e nomeia para "demonicgain" sem as aspas e nele cole: function onKill(cid, target, lastHit) local itemid = 1234 -- id das demonic local quant = 5 -- quantidade de demonic if (isPlayer(target) == true) then doPlayerAddItem(cid, itemid, quant) end return TRUE end Agora em data/creaturescripts/creaturescripts.xml cole a tag: <event type="kill" name="DemonicGain" event="script" value="demonicgain.lua"/> E por último abra data/creaturescripts/scripts/login.lua e cole antes do último return true, isso: registerCreatureEvent(cid, "DemonicGain")
  14. Vai em data/talkactions/scritps e duplica um arquivo, e renomeia para "newpromotion" sem as aspas e nele cole: function onSay(cid, words, param, channel) if (getPlayerPromotionLevel(cid) > 0 and param == "days") then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. math.floor((getPlayerStorageValue(cid, 403010) - os.time())/(24 * 60 * 60)) .." dias de VIP restantes.") return TRUE end local storageNeed = 1234 -- storage que precisa para executar o script. local money = 500000 -- dinheiro em gps local days = 30 -- dias que serão adicionados time = getPlayerStorageValue(cid, 403010) + (days * 24 * 60 * 60) if (getPlayerPromotionLevel(cid) > 0) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua promote vip ainda não acabou!") return TRUE elseif (getPlayerStorageValue(cid, storageNeed) <= 0) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você presica ser vip!") return TRUE elseif (doPlayerRemoveMoney(cid, money)) then doPlayerSetVocation(cid,getPlayerVocation(cid)+4) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns, você foi promovido!") setPlayerStorageValue(cid, 403010, time) doSendMagicEffect(getPlayerPosition(cid), math.random(28,30)) end return TRUE end Agora em talkactions.xml cole a tag: <talkaction words="!promotion" event="script" value="newpromotion.lua"/> Vamos fazer a parte para voltar a vocação sem promotion quando acabar os dias agora. Vai em data/creaturescripts/scripts, duplica um arquivo e nomeia para "promotioncheck" sem as aspas e nele cole: function onLogin(cid) if (math.floor((getPlayerStorageValue(cid, 403010) - os.time())/(24 * 60 * 60)) <= 0 and getPlayerPromotionLevel(cid) > 0) then doPlayerSetVocation(cid,getPlayerVocation(cid)-4) end return TRUE end Por fim, em creaturescripts.xml cole a tag: <event type="login" name="CheckPromo" event="script" value="promotioncheck.lua"/> ---------------------------------------------------------- Não esquece de configurar o newpromotion como você desejar, e os comandos são: !promotion -- para adiquirir !promotion days -- para ver dias restantes Obs: nem testei, caso não funcione me diga.
  15. Claro que sim usa "doRemoveItem(item.uid, 1)". function onUse(cid, topos, item, item2, frompos) local nonremskulls = {red = SKULL_RED, white = SKULL_WHITE, black = SKULL_BLACK} if isInArray(nonremskulls, getPlayerSkullType(cid)) then doPlayerSendCancel(cid,"Você não pode remover o seus frags e seus skulls.") doSendMagicEffect(getPlayerPosition(cid), 2) else db.executeQuery("UPDATE `killers` SET `unjustified` = 0 WHERE `id` IN (SELECT `kill_id` FROM `player_killers` WHERE `player_id` = " .. getPlayerGUID(cid) .. ")") doCreatureSetSkullType(cid,0) doCreatureSay(cid,"Seus frags e skulls foram removidos!",19) doSendMagicEffect(getPlayerPosition(cid), 26) doRemoveItem(item.uid, 1) return true end return true end E não podia da o "return" antes de remover o item.
  16. @XFkyx, onde você colocou "uid" não seria "cid".
  17. vai em data/creaturescripts/scripts/ duplica um arquivo e nomeia pra "createffect" e nele cola: function onLogin(cid) if getPlayerLevel(cid)>= 500 then addEvent(creatEffect(cid), 1000, cid) end return TRUE end function creatEffect(cid) if (isPlayer) then local effect = 30 -- efeito doSendMagicEffect(getPlayerPosition(cid), effect) addEvent(creatEffect(cid), 1000, cid) end end Agora no creaturescripts.xml cola a tag: <event type="login" name="createffect" event="script" value="createffect.lua"/> Não precisa registrar nada no arquivo login.lua, pq esse script ja é do tipo onLogin. Obs: Nem testei ele, qualquer erro me fala.
  18. Aqui funcionou perfeitamente. =/
  19. jhon992

    Arena Duelo

    Um geito seria, quando o player tivesse nesse determinado tile, adiciona-se um storage nele. Sóh que dae, em todos os scripts de magias de heal e potions teria que fazer uma verificação de storage.
  20. em movements/script, duplica um arquiv e nomeia para "helmetTrans" sem as aspas e nele cole: local condition = createConditionObject(CONDITION_OUTFIT) setConditionParam(condition, CONDITION_PARAM_TICKS, -1) addOutfitCondition(condition, {lookType = 230}) -- 230, toque pelo outfit desejado function onEquip(cid, item, slot) doAddCondition(cid, condition) return TRUE end function onDeEquip(cid, item, slot) doRemoveCondition(cid, CONDITION_OUTFIT) return TRUE end Agora em movements.xml cole a tag: <movevent type="Equip" itemid="7901" slot="head" event="function" value="onEquipItem"/> <movevent type="DeEquip" itemid="7901" slot="head" event="function" value="onDeEquipItem"/>
  21. em actions/scripts duplica um arquivo e nomeia para "questItens" sem as aspas e nele cole: function onUse(cid, item, fromPosition, itemEx, toPosition) local itensId = {1234,5678,9876,5443,2212} -- coloque os id's dos itens local effect = 30 -- efeito que aparecera no player if (getPlayerStorageValue(cid, 35369) <= 0) then for i=1,#itensId do doPlayerAddItem(cid, tonumber(itensId[i]), 1) end doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Parabéns, você completou a quest!") doSendMagicEffect(getPlayerPosition(cid), effect) setPlayerStorageValue(cid, 35369, 1) else doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você ja completou essa quest!") end return TRUE end Agora em actions.xml cole a tag: <action actionid="2345" event="script" value="questItens.lua"/> E por último com seu Map Editor, coloque o actionid no bu desejado!
  22. Òtimo projeto, to na equipe. E esta indo bem o projeto presando oque tem mais importante nos MMORPG's e que vem sumindo aos poucos, o puro RPG! Com muita aventura, dinamismo e envolvendo sempre o jogador. Projeto andando a todo vapor! Fiquem ligado a cada coisa nova que desenvolvemos será postado aqui ou no site: Shadow RPG! E estamos sempre abertos para criticas e sugestões, então opnem!
  23. Se as funções que estão no codigo estao certas, assim deve funcionar: function onLogin(cid) if getGlobalStorageValue(getPlayerAccountId(cid)) <= 0 then setGlobalStorageValue(getPlayerAccountId(cid), 1) id = tonumber(2) or 1 vip.addVipByAccount(getPlayerAccount(cid) ,vip.getDays(id)) end return true end
  24. Deu uma arrumada minima e uma organizada: function onSay(cid, words, param) local vip = "yes" -- somente vip players poderam usar o comando? ("yes" or "no") local storage = 13540 -- Storage Id da sua vip account caso for usar somente vips if (vip == "yes") and getPlayerStorageValue(cid, storage) <= 0 then doPlayerSendCancel(cid,"Você não possui uma conta Vip.") return TRUE end if (doPlayerRemoveItem(cid,11192,3000)) then doPlayerAddItem(cid,iddoshield,1) -- coloque id do shield aqui doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MORTAREA) doCreatureSay(cid, "Loucura Loucura", TALKTYPE_ORANGE_1) else doPlayerSendCancel(cid, 'You do not have 3000 vip coins.') doSendMagicEffect(getPlayerPosition(cid), CONST_ME_FLAMEAREA) end return TRUE end Créditos pro @Zmovir.
  25. ou if (math.random(0,100) >= 80) then doPlayerSendCancel(cid, "You failed to heal the poison") Quando aparecer algum erro no script que tiver fazendo pro shadow, manda duvida pro meu inbox.
  • Quem Está Navegando   0 membros estão online

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