Ir para conteúdo

joaohd

Visconde
  • Total de itens

    361
  • Registro em

  • Última visita

  • Dias Ganhos

    10

Tudo que joaohd postou

  1. Vixi cara, pra vc colocar acho que é pelas sources do executável. Recomendo baixar algum executável que já tenha os ícones pq vai ser muito mais fácil. flw
  2. joaohd

    Sobre Portas ¬¬

    os storage values tão certos? tem q estar igual o dos dois scripts edited ve se agora vai. eu tirei o "isPlayer(cid)". n sei se muda algo mas tenta ae.
  3. Eu quero muuuito essa city, porem o map editor n abre ela. Aparece escrito Unsupported version. E fecha de qualquer modo, muito boa essa cidade. Vlw por trazer pra nós flw edited eita¬¬ foi mal é q o map editor q eu tava abrindo era o errado. flw
  4. joaohd

    Sobre Portas ¬¬

    É o seguinte: vc vai precisar de 2 scripts.O 1º é esse aki ó : isso vai em data/creaturescripts/scripts function onDeath(cid, corpse, killer) registerCreatureEvent(cid, "NOME DO EVENTO") --Dica: coloque por exemplo demon_death local creaturename = getCreatureName(cid) local storage = 12345 if creaturename == 'NOME DO BIXO' then setPlayerStorageValue(cid, storage, 1) doCreatureSay(cid, "You have killed the guardian. Now you can pass the door.", TALKTYPE_ORANGE_1) end return TRUE end no creaturescripts.xml coloca isso: <event type="death" name="NOME DO BIXO" script="NOME DO EVENTO.lua"/> obs: é recomendado que o nome do arquivo.lua seja igual ao nome do evento agora o script do chão vai em data/movements/scripts function onStepIn(cid, item, position, fromPosition) if getPlayerStorageValue(cid,12345) == 1 then else dir = getPlayerLookDir(cid) pos = getCreaturePosition(cid) if dir == 0 then newpos = {x=pos.x, y=pos.y+1, z=pos.z} elseif dir == 2 then newpos = {x=pos.x, y=pos.y-1, z=pos.z} elseif dir == 1 then newpos = {x=pos.x-1, y=pos.y, z=pos.z} elseif dir == 3 then newpos = {x=pos.x+1, y=pos.y, z=pos.z} end doTeleportThing(cid, newpos, dir) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Somente jogadores que matarem o guardião podem passar.") end end eu preferi colocar como um tile q só passa quem matar o monstro. então coloque o Action ID do tile igual ao storage q vc colocou nos scripts. no movements.xml coloca isso: <movevent event="StepIn" actionid="12345" script="NOME DO ARQUIVO.lua"/> onde tem NOME DO EVENTO coloca tipo demon_death. No lugar do 12345 coloca a storage que vc quer. no lugar do NOME DO BIXO coloca o nome certo do bixo que vc quer. OBS²: Não testei nada disso. mas provavelmente funciona. e eu sei q ta meio omplicado mas da pra entender... espero ter ajudado. flws
  5. Aeeeeeeeeeeeeeeeeeeeeeee! Achei que o tópico ja tinha ido pro brejo vlw ae gente por comentar, mesmo depois de o tópico ter quase passado pra 2ª página de tópicos. Quem quiser usar, pode usar pow. Nem precisa pedir fico feliz em entrar em um ot e ver que tem um pouquinho de mim (ficou estranho) nele X) vlww flw
  6. só tinha uma palavra fora do lugar... acho q agora vai function onUse(cid, item, frompos, item2, topos) piece1pos = {x=364, y=43, z=7, stackpos=1} rockpos = {x=364, y=43, z=7, stackpos=1} getpiece1 = getThingfromPos(piece1pos) if item.uid == 9221 and item.itemid == 9825 and getpiece1.itemid == 1543 and doPlayerRemoveMoney(cid, 50000) == TRUE then doRemoveItem(getpiece1.uid,1) doTransformItem(item.uid,item.itemid+1) doPlayerSendTextMessage(cid,22,"Voce tem um minuto para passar.") parameters = {cid = cid, itemid = item.itemid, itemuid = item.uid, rockpos = rockpos} evento = addEvent(pedranormal, 60000, parameters) else doPlayerSendTextMessage(cid,22,"Sorry, not possible.") end return 1 end function pedranormal(parameters) doCreateItem(1543,1,parameters.rockpos) doTransformItem(parameters.itemuid,parameters.itemid-1) stopEvent(evento) end o script é o do lucasjockey, so tirei a palavra "evento" que tava fazendo o erro. n testei se funciona... flw
  7. Magia manera manow. parabéns. o unico problema é que quando vc solta vc fica trapado por um tempo... fora isso ta bem rox parabéns flw
  8. o problema dela n tira dano é pq ele errou na hora de escolher o tipo de ataque. a solução é simples: no lugar de ICYDAMAGE coloque ICEDAMAGE e está arrumado.... flws
  9. se ela n ta no movements vc tem que colocar as tags lá pra funcionar. <movevent type="Equip" itemid="XXXX" event="function" value="onEquipItem"/> <movevent type="DeEquip" itemid="XXXX" event="function" value="onDeEquipItem"/> onde tem XXXX coloca o id na red tunic. acho que isso resolve seu problema... flws
  10. faz o seguinte manow, ve se no seu config.lua tem uma linha assim: allowclones = "yes" se tiver isso, muda pra "no" se não for isso eu não sei o que é. flw
  11. eu acho que isso é o que você quer local config = { deathListEnabled = getBooleanFromString(getConfigInfo('deathListEnabled')), sqlType = getConfigInfo('sqlType'), maxDeathRecords = getConfigInfo('maxDeathRecords') } config.sqlType = config.sqlType == " mysql" and DATABASE_ENGINE_SQLITE or DATABASE_ENGINE_MYSQL function onDeath(cid, corpse, lastHitKiller, mostDamageKiller) if(config.deathListEnabled ~= TRUE) then return end local hitKillerName = "field item" local damageKillerName = "" if(lastHitKiller ~= FALSE) then if(isPlayer(lastHitKiller) == TRUE) then hitKillerName = getCreatureName(lastHitKiller) else hitKillerName = getCreatureName(lastHitKiller) end doBroadcastMessage(cid, ""..hitKillerName.." Matou "..getPlayerName(cid)..".", TALKTYPE_ORANGE_1) if(mostDamageKiller ~= FALSE and mostDamageKiller ~= lastHitKiller and getCreatureName(mostDamageKiller) ~= getCreatureName(lastHitKiller)) then if(isPlayer(mostDamageKiller) == TRUE) then damageKillerName = getPlayerGUID(mostDamageKiller) else damageKillerName = getCreatureName(mostDamageKiller) end end end db.executeQuery(" INSERT INTO `player_deaths` (`player_id`, `time`, `level`, `killed_by`, `altkilled_by`) VALUES (" .. getPlayerGUID(cid) .. ", " .. os.time() .. ", " .. getPlayerLevel(cid) .. ", " .. db.escapeString(hitKillerName) .. ", " .. db.escapeString(damageKillerName) .. ");") local rows = db.getResult("SELECT `player_id` FROM `player_deaths` WHERE `player_id` = " .. getPlayerGUID(cid) .. ";") if(rows:getID() ~= -1) then local amount = rows:getRows(true) - config.maxDeathRecords if(amount > 0) then if(config.sqlType == DATABASE_ENGINE_SQLITE) then for i = 1, amount do db.executeQuery("DELETE FROM `player_deaths` WHERE `rowid` = (SELECT `rowid` FROM `player_deaths` WHERE `player_id` = " .. getPlayerGUID(cid) .. " ORDER BY `time` LIMIT 1);") end else db.executeQuery("DELETE FROM `player_deaths` WHERE `player_id` = " .. getPlayerGUID(cid) .. " ORDER BY `time` LIMIT " .. amount .. ";") end end end end eu acho que vai funcionar. não testei. mas era só inverter a sequencia. flws
  12. Ta blz, funciona, mas aki... pra q essa linha aki setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) se o wand é de SD? (SD == death damage ~= physical damage) muda aí pra setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE) que aí sim ela fica atirando SD. flws
  13. eu n sabia que existia akela função setItemExtraAttack. mas sabia que existia algo do tipo. eu sei que specialDescription n aumenta attack. só coloca algo no nome do item. mas agora ja sei do extra attack e provavelmente vou fazer um sistema com isso vlw
  14. muito simples cara. na pasta do seu ot vai em data/creaturescripts/firstitens.lua só mexer aí do jeito que voce quiser
  15. pow manow, tenta esse script aki. criei agora e n testei mas acho que funfa. é mais facil editar ele do que o seu: function onUse(cid,item,frompos,item2,topos) --Posições dos summons-- pos1 = {x=111, y=626, z=7} pos2 = {x=111, y=635, z=7} pos3 = {x=114, y=639, z=7} --Fim das posições-- if item.itemid == 3019 then doSummonCreature("Azerus", pos1) doSummonCreature("Azerus", pos2) doSummonCreature("Ushuriel", pos3) doSendMagicEffect(topos,14) broadcastMessage("Sua Mensagem",TALKTYPE_ORANGE_1) end return 1 end acho que funfa hein. se der certo... ok flws
  16. joaohd

    Bug Do Aol

    ve seu aol no items.xml. coloca isso no lugar dele: <item id="2173" article="an" name="amulet of loss"> <attribute key="weight" value="420"/> <attribute key="slotType" value="necklace"/> <attribute key="preventDrop" value="1"/> </item> provavelmente o seu teve ter <attributes key="charges" value="1"> com isso o aol n cai ve se deu certo ae flws
  17. vai na pasta do seu ot em data/creaturescripts/playerdeath.lua e apaga o que tem lah. cola isso e salva: local config = { deathListEnabled = getBooleanFromString(getConfigInfo('deathListEnabled')), sqlType = getConfigInfo('sqlType'), maxDeathRecords = getConfigInfo('maxDeathRecords') } config.sqlType = config.sqlType == "sqlite" and DATABASE_ENGINE_SQLITE or DATABASE_ENGINE_MYSQL function onDeath(cid, corpse, lastHitKiller, mostDamageKiller) if(config.deathListEnabled ~= TRUE) then return end local hitKillerName = "field item" local damageKillerName = "" if(lastHitKiller ~= FALSE) then if(isPlayer(lastHitKiller) == TRUE) then hitKillerName = getCreatureName(lastHitKiller) else hitKillerName = getCreatureName(lastHitKiller) end doBroadcastMessage(""..getPlayerName(cid).." has been killed by "..hitKillerName..".") if(mostDamageKiller ~= FALSE and mostDamageKiller ~= lastHitKiller and getCreatureName(mostDamageKiller) ~= getCreatureName(lastHitKiller)) then if(isPlayer(mostDamageKiller) == TRUE) then damageKillerName = getPlayerGUID(mostDamageKiller) else damageKillerName = getCreatureName(mostDamageKiller) end end end db.executeQuery("INSERT INTO `player_deaths` (`player_id`, `time`, `level`, `killed_by`, `altkilled_by`) VALUES (" .. getPlayerGUID(cid) .. ", " .. os.time() .. ", " .. getPlayerLevel(cid) .. ", " .. db.escapeString(hitKillerName) .. ", " .. db.escapeString(damageKillerName) .. ");") local rows = db.getResult("SELECT `player_id` FROM `player_deaths` WHERE `player_id` = " .. getPlayerGUID(cid) .. ";") if(rows:getID() ~= -1) then local amount = rows:getRows(true) - config.maxDeathRecords if(amount > 0) then if(config.sqlType == DATABASE_ENGINE_SQLITE) then for i = 1, amount do db.executeQuery("DELETE FROM `player_deaths` WHERE `rowid` = (SELECT `rowid` FROM `player_deaths` WHERE `player_id` = " .. getPlayerGUID(cid) .. " ORDER BY `time` LIMIT 1);") end else db.executeQuery("DELETE FROM `player_deaths` WHERE `player_id` = " .. getPlayerGUID(cid) .. " ORDER BY `time` LIMIT " .. amount .. ";") end end end end se funfar fala ae. flws
  18. será que não tem nenhuma função em LUA que da setSpecialitemDescription ou algo parecido não?
  19. esse servidor é o styller yurots?? Tenta esse aki ó : local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} 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 creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'Light Healing') or msgcontains(msg, 'light healing') then if getPlayerLevel >= 9 then selfSay('Você deseja comprar a magia {Light Healing} ?', cid) talk_state = 1 else selfSay('Você não tem level suficiente.', cid) talk_state = 0 end local cost = 1000 elseif msgcontains(msg, 'yes') or msgcontains(msg, 'sim') and talk_state == 1 then if doPlayerRemoveMoney(cid, cost) then doPlayerLearnInstantSpell(cid, 'Light Healing') selfSay('Você aprendeu a magia {Light healing}.', cid) else selfSay('Você não tem dinheiro suficiente!', cid) talk_state = 0 end elseif msgcontains(msg, 'no') then selfSay('Ok than.', cid) talk_state = 0 end -- Place all your code in here. Remember that hi, bye and all that stuff is already handled by the npcsystem, so you do not have to take care of that yourself. return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) esse eu acho que funciona. eu acho que o erro todo tava na linha "if doPlayerRemoveMoney(cid,cost) == true then se n me engano n precisava dakele == true porque o if ja faz a condição só ocorrer se for verdadeira. flws
  20. eu não entendi muito bem o que vc quis dizer, mas consegui pensar em 2 soluções: 1ª se sua spell for de wave tipo exevo flam hur vc tem q colocar no spell.xml na tag da spell esse comando : direction="1" pra ela ir pra onde o char estiver olhando. 2º se sua spell for do tipo exevo gran mas vis, voce tem q mexer na area dela. se ela estiver por exemplo: {1, 1, 1, 1, 1} {1, 1, 1, 1, 1} {1, 1, 1, 1, 1} voce coloca assim {1, 1, 1, 1, 1} {1, 1, 2, 1, 1} {1, 1, 1, 1, 1} esse 2 no meio da spell é o lugar que o char vai ficar. pode ser 2 ou 3 mas cada um faz uma coisa. acho que o 2 a spell n atinge akele lugar e o 3 atinge. flws
  21. eu discordo da 2ª solução. O negocio é o seguinte: vc criou essas casas certo? provavelmente la no map editor vc n deve ter colocado a saída da casa. A solução é simples e pode ser feita de 2 maneiras: 1º no map editor, na ferramenta houses temos 2 botões : House Tiles e Select Exit (se n me engano os nomes são esses). vc pega a ferramenta elect exit e clica com ela no sqm que estiver na frente da porta da casa. 2º voce abre seu X-house.xml e procura pelas casas referidas. a linha delas deve estar assim: <house name="vip35" houseid="1371" entryx="0" entryy="0" entryz="0" rent="0" townid="0" size="64"/> só vc pegar as coordenadas da porta dela e colocar em entryx, entryy e entryz. só salvar e se divertir
  22. é muito simples. eu também tive esse problema . a solução é a seguinte: vai na pasta do seu ot e da delete nela e depois esvazia a lixeira. kkkk zuera manow. é o seguinte vc abre seu itens.xml e procura por dustbin. no lugar que tiver ela coloca isso : <item id="1777" article="a" name="dustbin"> <attribute key="type" value="trashholder"/> <attribute key="allowpickupable" value="1"/> </item> la no seu n tem a tag <attribute key="allowpickupable" value="1"> e é essa linha q fala q ele pode receber itens pra deletar. flws
  23. as acc ficam na database. deve ter um arquivo na sua pasta data que a extensão dele é .s3db para vc mudar de uma pra outra é meio complicado. se for o mesmo servidor vc pode só copiar e colar a database. se não for é dificil...
  24. ae gente, script 100% meu e funciona!! ele funciona assim: Quando o player é "leigo" em recharge ele tem 10% de chance de conseguir recarregar, a cada skill que ele aumenta, a porcentagem de acerto aumenta em 20% até ele obter 100% de skill e conseguir recarregar todas as soft boots. pode ser que seja inutil, porém eu to feliz porque eu consegui!! é um script até simples. Vê aí: 1º Vá em data/actions/scripts/others. Lá tem um arquivo chamado softboots.lua. Abra ele e apague o que tiver dentro e cole isto : --Feito 100% por Apocarai-- function onUse(cid, item, frompos, item2, topos) if getPlayerStorageValue(cid,5050) == -1 then if math.random(1,10) == 1 then doRemoveItem(item.uid,1) doPlayerAddItem(cid,2640,1) setPlayerStorageValue(cid,5050,1) doPlayerSendTextMessage(cid,TALKTYPE_ORANGE_1,'You advanced in recharge skill' ) else doPlayerSendTextMessage(cid,TALKTYPE_ORANGE_1, 'Opss. You are not specialised yet' ) doPlayerRemoveItem(cid,6530,1) end elseif getPlayerStorageValue(cid,5050) == 1 then if math.random(1,8) == 1 then doRemoveItem(item.uid,1) doPlayerAddItem(cid,2640,1) setPlayerStorageValue(cid,5050,2) doPlayerSendTextMessage(cid,TALKTYPE_ORANGE_1, 'You advanced in recharge skill' ) else doPlayerSendTextMessage(cid,TALKTYPE_ORANGE_1, 'Opss. You are not specialised yet' ) doPlayerRemoveItem(cid,6530,1) end elseif getPlayerStorageValue(cid,5050) == 2 then if math.random(1,6) == 1 then doRemoveItem(item.uid,1) doPlayerAddItem(cid,2640,1) setPlayerStorageValue(cid,5050,3) doPlayerSendTextMessage(cid,TALKTYPE_ORANGE_1, 'You advanced in recharge skill' ) else doPlayerSendTextMessage(cid,TALKTYPE_ORANGE_1, 'Opss. You are not specialised yet' ) doPlayerRemoveItem(cid,6530,1) end elseif getPlayerStorageValue(cid,5050) == 3 then if math.random(1,4) == 1 then doRemoveItem(item.uid,1) doPlayerAddItem(cid,2640,1) setPlayerStorageValue(cid,5050,4) doPlayerSendTextMessage(cid,TALKTYPE_ORANGE_1, 'You advanced in recharge skill' ) else doPlayerSendTextMessage(cid,TALKTYPE_ORANGE_1, 'Opss. You are not specialised yet' ) doPlayerRemoveItem(cid,6530,1) end elseif getPlayerStorageValue(cid,5050) == 4 then if math.random(1,2) == 1 then doRemoveItem(item.uid,1) doPlayerAddItem(cid,2640,1) setPlayerStorageValue(cid,5050,5) doPlayerSendTextMessage(cid,TALKTYPE_ORANGE_1, 'You advanced in recharge skill' ) else doPlayerSendTextMessage(cid,TALKTYPE_ORANGE_1, 'Opss. You are not specialised yet' ) doPlayerRemoveItem(cid,6530,1) end elseif getPlayerStorageValue(cid,5050) == 5 then doRemoveItem(item.uid,1) doPlayerAddItem(cid,2640,1) doPlayerSendTextMessage(cid,TALKTYPE_ORANGE_1, 'You are specialised in boots recharge' ) end end depois salve e feche. Pronto! só ir no seu ot e tentar upar seus skills de recharge ps: se o ingles das frases estiver errado, consertem por favor pq n sei mta coisa da lingua inglesa Comentem
  25. Não né lol. quando vc der o !hunted o sistema tira a grana de voce pra pagar o "matador". até porque senão seria meio sem controle o pessoal ia dar hunted pra ganhar grana.
  • Quem Está Navegando   0 membros estão online

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