dyego2008 149 Postado Fevereiro 24, 2014 Share Postado Fevereiro 24, 2014 Olha uma ótima iniciativa, parabéns pelo trabalho Killua Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/2/#findComment-1616147 Compartilhar em outros sites More sharing options...
RodriigoRobson 111 Postado Fevereiro 24, 2014 Share Postado Fevereiro 24, 2014 (editado) Como Eu Posso por um Limite nesse Script aki (tonumber) eu nao Estou conseguindo! No caso Seria 50 function onUse(cid, item, frompos, item2, topos)local boost = tonumber(boost) or 0if (boost >= 50) thendoPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon is already the maximum allowed boost")return trueendlocal ball_id = {2222, 2220}local pedras = {[5468] = {names = "Typhlosion, Slugma, Quilava, Magcargo, Magcarbo, Magby, Houndour, Houndoom, Ho oh, Entei, Cyndaquil, Charmander, Charizard, Charmeleon, Arcanine, Growlithe, Flareon, Magmar, Ninetales, Rapidash, Vulpix, Ponyta, Moltres, Shiny Arcanine, Elder Charizard, Shiny Growlithe,Skarmory, Kingdra, Dragonite, Dragonair, Shiny Dragonair, Shiny Dratini, Dratini,Xatu, Unown C, Unown D, Unown E, Unown F, Unown G, Unown H, Unown I, Unown J, Unown K, Unown L, Unown M, Unown N, Unown O, Unown P, Unown Q, Unown R, Unown S, Unown T, Unown U, Unown V, Unown W, Unown X, Unown Y, Unown Z, Unown B, Unown A, Slowking, Natu, Girafarig, Espeon, Alakazam, Shiny Alakazam, Abra, Kadabra, Hypno, Drowzee, Mr Mime, Mew, Mewtwo,Qwilfish, Gligar, Crobat, Nidoking, Nidoqueen, Muk, Grimer, Weezing, Koffing, Ekans, Arbok, Golbat, Zubat, Nidoranfemale, Nidoranmale, Nidorina, Nidorino, Venonat, Venomoth, Shiny Venomoth, Shiny Zubat, Shiny Golbat, Shiny Muk, Shiny Grimer, Shiny Venonat,Raikou, Pichu, Mareep, Flaaffy, Elekid, Ampharos, Electabuzz, Raichu, Pikachu, Electrode, Voltorb, Jolteon, Magnetom, Magnemite, Zapdos, Shiny Electabuzz, Shiny Raichu, Shiny Voltorb, Shiny Electrode,Yanma, Spinarak, Scizor, Pineco, Ledian, Ledyba, Heracross, Forretress, Dunsparce, Ariados, Scyther, Parasect, Shiny Parasect, Paras, Caterpie, Weedle, Beedrill, Butterfree, Kakuna, Metapod, Pinsir, Shiny Scyther, Shiny Beedrill, Shiny Butterfree, Shiny Paras,Sunkern, Sunflora, Skiploom, Meganium, Jumpluff, Hoppip, Chikorita, Celebi, Bellossom, Bayleef, Venusaur, Bulbasaur, Ivysaur, Tangela, Exeggutor, Weepinbell, Bellsprout, Victreebel, Oddish, Vileplume, Gloom, Exeggcute, Shiny Venusaur, Shiny Oddish,Wooper, Totodile, Suicune, Remoraid, Quagsire, Politoed, Octilery, Marill, Mantine, Lugia, Lanturn, Feraligatr, Croconaw, Corsola, Chinchou, Azumarill, Magikarp, Blastoise, Squirtle, Wartortle, Vaporeon, Gyarados, Omastar, Omanyte, Lapras, Poliwrath, Poliwag, poliwhirl, Horsea, Seadra, Krabby, Kingler, Psyduck, Golduck, Tentacool, Tentacruel, Slowpoke, Slowbro, Goldeen, Seaking, Staryu, Starmie, Lapras, Shiny Blastoise, Shiny Seadra, Shiny Krabby, Shiny Kingler, Shiny Tentacool, Shiny Tentacruel, Shiny Horsea, Red Gyarados, Shiny Magikarp, Shiny Big Magikarp,Wobbuffet, Ursaring, Togetic, Togepi, Teddiursa, Stantler, Snubbull, Smeargle, Sentret, Porygon2, Noctowl, Miltank, Igglybuff, Hoothoot, Granbull, Furret, Delibird, Cleffa, Blissey, Pidgeotto, Fearow, Pidgey, Chansey, Clefable, Wiglyttuff, Kangaskhan, Porygon, Raticate, Rattata, Doduo, Dodrio, Spearow, Clefairy, Jigglypuff, Meowth, Persian, Farfetchd, Lickitung, Ditto, Eevee, Snorlax, Shiny Pidgeot, Shiny Rattata, Shiny Raticate, Elite Farfetchd, Aipom, Pidgeot,Murkrow, Misdreavus, Haunter, Gengar, Gastly, Dark Abra, Shiny Gengar,Tyrogue, Hitmontop, Hitmonchan, Hitmonlee, Machamp, Elite Hitmonlee, Elite Hitmonchan, Mankey, Primeape, Machop, Machoke,Phanpy, Dophan, Diglett, Sandslash, Dugtrio, Sandsherew, Marowak, Cubone, Shiny Marowak,Tyranitar, Sudowoodo, Steelix, Shuckle, Pupitar, Larvitar, Geodude, Golem, Rhydon, Graveler, Rhyhorn, Aerodactyl, Kabutops, Kabuto, Onix, Crystal Onix,Swinub, Sneasel, Smoochum, Piloswine, Seel, Jynx, Dewgong, Cloyster, Shellder, Articuno, Shiny Jynx"} ,}local ball = getPlayerSlotItem(cid, CONST_SLOT_FEET) ;if not(ball.uid > 0) thenreturn doPlayerSendTextMessage(cid, 19, "[boost] Coloca A Ball no Slot")endlocal pokename = getItemSpecialDescription(ball.uid)local name = getItemAttribute(ball.uid, "poke"):match("This is (.+)'s pokeball.")if(pokename:find("\+(%d+)"))thenlocal boost = pokename:match("\+(%d+)")doItemSetAttribute(ball.uid, "description", tostring(pokename:gsub(boost, ((tonumber(boost)+1)))))doPlayerSendTextMessage(cid, 19, "Seu pokemon Esta + "..boost + 1)elsedoItemSetAttribute(ball.uid, "description", "Contains a "..name.." +1.")endreturn trueend O Script funciona , ai queria por um Limite de quando chega-se no +50 nao poderia Bostar ,eu nao sei como funciona a funçao (tonumber) se Alguem Puder me explicar Tambem AGradeço Editado Fevereiro 24, 2014 por Nextbr Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/2/#findComment-1616183 Compartilhar em outros sites More sharing options...
zipter98 1102 Postado Fevereiro 24, 2014 Share Postado Fevereiro 24, 2014 (editado) @Nextbr O erro do seu código está nessa linha: local boost = tonumber(boost) or 0 Você está "tornando" um número [tonumber(boost)] uma variável que não foi declarada anteriormente (no caso, boost). Assim, obviamente, a variável que está sendo declarada na linha que acabo de mencionar assumirá um valor nulo. Eu lhe recomendaria armazenar o boost do pokémon num atributo. Assim, ficaria, além de mais prático, mais fácil de fazer o quê você quer. Ex.: Primeiramente, declare a variável boost, que assumirá o valor que corresponde ao boost do pokémon: local boost = getItemAttribute(ball.uid, "boost") or 0 Aumentando o boost: doItemSetAttribute(ball.uid, "boost", boost + 1) Verificando se o boost é maior ou igual à 50: if boost >= 50 then Editado Fevereiro 24, 2014 por zipter98 Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/2/#findComment-1616284 Compartilhar em outros sites More sharing options...
DuuhCarvalho 327 Postado Fevereiro 24, 2014 Share Postado Fevereiro 24, 2014 (editado) Bom eu tava criando um script que quando o player mata outro e pega Skull, Black ou Red , então cai um gravestone com um texo .. queria saber porque não funciona, não conseguir imaginar outro jeito de chegar se o player pegou a skull.. creio que do jeito que eu fiz so cai se já tiver a skull , não tem como eu testar pq tenho que pegar skull, e meu ot ainda não ta online . function onKill(cid, target, lastHit) local pos = getCreaturePosition(target) local name = getCreatureName(cid) local name2 = getCreatureName(target) if isPlayer(cid) and isPlayer(target) then if getCreatureSkullType(cid) == SKULL_BLACK then doItemSetAttribute(doCreateItem(1409, 1, pos), "text", "O Jogador "..name.." pegou Black Skull Aqui.") doBroadcastMessage("O jogador "..name.." pegou Black Skull no Jogador "..name2..".") elseif getCreatureSkullType(cid) == SKULL_RED then doItemSetAttribute(doCreateItem(1409, 1, pos), "text", "O Jogador "..name.." pegou Red Skull Aqui.") doBroadcastMessage("O jogador "..name.." pegou Red Skull no Jogador "..name2..".") end end return TRUE end e como eu faço para o corpo do jogador sumir , pq fica em cima do gravestone Editado Fevereiro 24, 2014 por DuuhCarvalho Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/2/#findComment-1616294 Compartilhar em outros sites More sharing options...
lucasromero0110 0 Postado Fevereiro 24, 2014 Share Postado Fevereiro 24, 2014 (editado) <-> Resolvido <-> Editado Fevereiro 25, 2014 por lucasromero0110 Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/2/#findComment-1616368 Compartilhar em outros sites More sharing options...
Omega 377 Postado Fevereiro 24, 2014 Share Postado Fevereiro 24, 2014 Bom eu tava criando um script que quando o player mata outro e pega Skull, Black ou Red , então cai um gravestone com um texo .. queria saber porque não funciona, não conseguir imaginar outro jeito de chegar se o player pegou a skull.. creio que do jeito que eu fiz so cai se já tiver a skull , não tem como eu testar pq tenho que pegar skull, e meu ot ainda não ta online . function onKill(cid, target, lastHit) local pos = getCreaturePosition(target) local name = getCreatureName(cid) local name2 = getCreatureName(target) if isPlayer(cid) and isPlayer(target) then if getCreatureSkullType(cid) == SKULL_BLACK then doItemSetAttribute(doCreateItem(1409, 1, pos), "text", "O Jogador "..name.." pegou Black Skull Aqui.") doBroadcastMessage("O jogador "..name.." pegou Black Skull no Jogador "..name2..".") elseif getCreatureSkullType(cid) == SKULL_RED then doItemSetAttribute(doCreateItem(1409, 1, pos), "text", "O Jogador "..name.." pegou Red Skull Aqui.") doBroadcastMessage("O jogador "..name.." pegou Red Skull no Jogador "..name2..".") end end return TRUE end e como eu faço para o corpo do jogador sumir , pq fica em cima do gravestone O que você pode fazer é usar um addEvent de 10 ms (que será imperceptível pelos jogadores), mas o jogador já terá recebido ou não a skull, permitindo que você cheque. Crie uma função que faça todas essas coisas que você quer fora da função principal (onKill). Use todos os parâmetros que você usaria normalmente na função principal, mas lembrando que o target já não existirá mais, pois terá morrido. Então, em vez de getCreaturePosition(target), utilize targetPos e passe essa posição como parâmetro para sua função secundária (a que você deve criar). Então você deve checar se a skull que ele tinha no momento de execução do script é diferente do momento em que sua função será executada. Se for diferente, então ele acabou de ganhar skull e você deverá criar a gravestone. Mas como o corpo já estará no chão, a gravestone será criada por cima. Um esboço: http://pastebin.com/9rmeUmSs TRUE é uma variável com valor de true. Portanto, é mais fácil (e mais correto) usar true. Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/2/#findComment-1616375 Compartilhar em outros sites More sharing options...
Vills 39 Postado Março 1, 2014 Share Postado Março 1, 2014 (editado) function doHealOverTime(cid, div, turn, effect) if not isCreature(cid) then return true end if turn <= 0 or (getCreatureHealth(cid) == getCreatureMaxHealth(cid)) or getPlayerStorageValue(cid, 400) <= 0 then setPlayerStorageValue(cid, 400, -1) return true end local d = div / 10000 local amount = math.floor(getCreatureMaxHealth(cid) * d) doCreatureAddHealth(cid, amount) if math.floor(turn/10) == turn/10 then doSendMagicEffect(getThingPos(cid), effect) end addEvent(doHealOverTime, 100, cid, div, turn - 1, effect) end local potions = { [12347] = {effect = 13, div = 30}, --Meat [12348] = {effect = 13, div = 60}, --Ham [12346] = {effect = 12, div = 80}, --Ramem [12345] = {effect = 14, div = 90}, --Medicine Puills } function onUse(cid, item, frompos, item2, topos) local pid = getThingFromPosWithProtect(topos) if not isPlayer(item2.uid) then return doPlayerSendCancel(cid, "Você pode usar isto somente em sí mesmo!") end if getCreatureHealth(pid) == getCreatureMaxHealth(pid) then return doPlayerSendCancel(cid, "Você já está com a vida cheia.") end if getPlayerStorageValue(pid, 400) >= 1 then return doPlayerSendCancel(cid, "Você já está sob o efeito desta comida.") end if getPlayerStorageValue(cid, 52488) >= 1 then return doPlayerSendCancel(cid, "Você não pode usar isto durante um duelo.") end doCreatureSay(cid, "Delicioso!", TALKTYPE_SAY) doSendMagicEffect(getThingPos(pid), 300) setPlayerStorageValue(pid, 400, 1) doRemoveItem(item.uid, 1) local a = potions[item.itemid] doHealOverTime(pid, a.div, 100, a.effect) return true end Minha duvida é o seguinte, esse codigo na teoria é para ir aumentando a life aos pouquinhos porem ele só dá o efeito de como cê estivesse aumentando mas não aumenta na verdade alguém pode indicar onde está o erro ? Editado Março 1, 2014 por Vills Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/2/#findComment-1617726 Compartilhar em outros sites More sharing options...
akira021 28 Postado Março 1, 2014 Share Postado Março 1, 2014 Amigo faltou soh o addEvent na function onUse, pois vc tem que usa-lo para puxar a outra function.. Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/2/#findComment-1617758 Compartilhar em outros sites More sharing options...
Killua 389 Postado Março 1, 2014 Autor Share Postado Março 1, 2014 Amigo, aparentemente seu script está certo. Os problemas que eu encontrei nele foram: getThingFromPosWithProtect(topos) Vc já tem essa função instalada? Ela não é uma função padrão, ela foi feita pelo Slicer. O outro "problema" é o seguinte, o script manda essa mensagem quando o player tenta usar o item em algo que não seja um player: "Você pode usar isto somente em sí mesmo!" Isso não condiz com o script, pois é possível usar esse item em outros jogadores. Para fazer com que se possa usar somente em si mesmo, vc tem que comparar o item2.uid com o cid (Vou deixar vc fazer isso). Essa linha abaixo faz com que a função doHealOverTime seja chamada a cada 0.1 segundos, healando o player e mandando o efeito. Isso não é um problema, só estou te alertando. addEvent(doHealOverTime, 100, cid, div, turn - 1, effect) Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/2/#findComment-1617906 Compartilhar em outros sites More sharing options...
Vills 39 Postado Março 2, 2014 Share Postado Março 2, 2014 Obg pela ajuda já concertei tudo Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/2/#findComment-1618291 Compartilhar em outros sites More sharing options...
Killua 389 Postado Março 4, 2014 Autor Share Postado Março 4, 2014 Que bom , fique a vontade para tirar mais dúvidas. Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/2/#findComment-1618821 Compartilhar em outros sites More sharing options...
Alexclusive 687 Postado Março 4, 2014 Share Postado Março 4, 2014 Passando apenas para parabenizar a iniciativa de vocês! Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/2/#findComment-1618824 Compartilhar em outros sites More sharing options...
dheikon 0 Postado Março 13, 2014 Share Postado Março 13, 2014 Ótima iniciativa, espero que me ajude muito, pra começar tenho um script que comecei fazer e esta dando um erro que faço ideia do que possa ser. O script abaixo funciona, ou era pra funcionar da seguinte forma, ao jogador entrar o sistema iria checar a vocação e lhe conceder uma outfit sem addons conforme a vocação, nas versões mais simples desse script (dava uma outfit sem considerar o sexo) ele não funcionou, na verdade até funcionou, mas o char não entrava no jogo. Eu fiz um teste com o mesmo script para dar itens (mesmo esquema, mas sem considerar o sexo, apenas a vocação) e também não funcionou, o char não entrava, mas no log do servidor ele entrava e saia instantaneamente. function onLogin(cid) if getPlayerVocation(cid) == 1 then if getPlayerSex(cid) == 0 then doPlayerAddOutfit(cid,137,0) --hunter female else getPlayerSex(cid) == 1 then doPlayerAddOutfit(cid,129,0) --hunter male end elseif getPlayerVocation(cid) == 2 then if getPlayerSex(cid) == 0 then doPlayerAddOutfit(cid,138,0) --mage female else getPlayerSex(cid) == 1 then doPlayerAddOutfit(cid,130,0) --mage male end elseif getPlayerVocation(cid) == 3 then if getPlayerSex(cid) == 0 then doPlayerAddOutfit(cid,139,0) --knight female else getPlayerSex(cid) == 1 then doPlayerAddOutfit(cid,131,0) --knight male end elseif getPlayerVocation(cid) == 4 then if getPlayerSex(cid) == 0 then doPlayerAddOutfit(cid,140,0) --noblewoman female else getPlayerSex(cid) == 1 then doPlayerAddOutfit(cid,132,0) --nobleman male end end end Nesse script ele da um erro no log do servidor dizendo: [Warning - Event::checkScript] Can not load script: scripts/outfits.lua data/creaturescript/outfits.lua:6: unexpected symbol near "==" Servidor utilizado TFS 1.0. Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/2/#findComment-1622683 Compartilhar em outros sites More sharing options...
Killua 389 Postado Março 13, 2014 Autor Share Postado Março 13, 2014 Olá amigo, finalmente mais um interessado rs. O seu erro foi confundir else com elseif. Quando se usa o else, não se pode colocar uma segunda condição (else getPlayerSex(cid) == 1). Isso só pode ser feito com o elseif, igual vc fez em elseif getPlayerVocation(cid) == 4. O else simplesmente diz oq será feito caso a condição anterior não seja aceita e também não exige um then, por exemplo: Se você usar: if getPlayerVocation(cid) == 1 then if getPlayerSex(cid) == 0 then doPlayerAddOutfit(cid, 137, 0) else doPlayerAddOutfit(cid, 129, 0) end end O script vai ser entendido da seguinte forma: Se o player tiver voc = 1, ele vai prosseguir. Em seguida, vai checar se o player tem sexo = 0, se tiver, vai adicionar o outfit 137, caso contrário, adicionará o outfit 129. Obviamente se o player não for do sexo 0, ele será do sexo 1, já que só existem esses 2... Portanto, o script vai interpretar tudo corretamente. Espero que tenha entendido, abraços. Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/2/#findComment-1622748 Compartilhar em outros sites More sharing options...
vagnho 0 Postado Março 14, 2014 Share Postado Março 14, 2014 Killua, estou tentando fazer alguns scripts mais não sei nem por onde começar, vou dizer dois sobre itens o primeiro é um axe que deixa o player com stun e a chance é de 25% o outro é uma amor que solta um dano em sua volta com a change de 15% de fazer esse dano a cada hit recebido espero que me ajude !!! Link para o comentário https://xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/page/2/#findComment-1622872 Compartilhar em outros sites More sharing options...
Posts Recomendados