-
Total de itens
301 -
Registro em
-
Última visita
Tudo que colex postou
-
desta vez a maior parte du Code é NPC mas tem um pouco de action ke tbm ajuda mas ja devem ter encontrado algum erro afinal eu naum nasci sabendu vlw pelo comment cya~~
-
Ola, (só faltava eu postar um NPC meu mesmu) xD Agora vou postar uma "compilação" e um NPC feito por mim e uma action tbm feita por mim =P Em que consiste a Blind Man Quest? A Blind Man Quest consiste em uma quest em que voce fala com um homem cego que esta dentro de uma cave (ou otro lugar qualquer), depois voce pede ajuda pra ele e ele vai te pedir umas 3 coisas em trocas (money, 1 bread e holy scarab), depois de voce dar as 3 coisas voce podera controlar ele, (se vc naum tiver tudo pra dar pra ele na hora, vc podi dar uma coisa de cada vez) vc só vai poder controlar ele até vc passar u teleport, dps de passar u teleport ele ja naum te ajuda mais. Qual teleport? Teleport são 3 tiles no chão, 2 para 2 players e um para o NPC, voce tem que CONTROLAR o NPC até o tile dele. Como controlar o NPC? Primeiro negocie com ele e diz pra ele up (cima), down (baixo), left (esquerda) e right (direita) e ele se movimentaram, mas lembrando que ele é cego e pode tropeçar muitas vezes (complicando as coisas) e se voce ficar muito tempo sem falar com ele, ele vai voltar para o inicio. comeceremos pelo npc 1º na pasta data/npc/scripts crie um arquivo com nome blind.lua e adicione o seguinte dentro dele: ----------Blind Man Quest by Colex-------------focus = 0talk_start = 0target = 0following = falseattacking = falseox = 540 ----posição X dele oy = 518 ----posição Y deleoz = 7 ----posição Z delemax = 500 dealing = 0money = 100 ---Dinheiro necessario para pagar pro blind manfunction onThingMove(creature, thing, oldpos, oldstackpos)endfunction onCreatureAppear(creature)endfunction onCreatureDisappear(cid, pos) if focus == cid then selfSay('Good bye then.') focus = 0 talk_start = 0 endendfunction onCreatureTurn(creature)endfunction msgcontains(txt, str) return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))endfunction onCreatureSay(cid, type, msg) msg = string.lower(msg) if (msgcontains(msg, 'hi') or msgcontains(msg, 'hello')) and (focus == 0) and getDistanceToCreature(cid) < 6 and getPlayerStorageValue(cid,1430) < 3 then selfSay('Hello foreigner, i have some secrets of this room my friend.') focus = cid talk_start = os.clock() elseif (msgcontains(msg, 'hi') or msgcontains(msg, 'hello')) and (focus == 0) and getDistanceToCreature(cid) < 6 and getPlayerStorageValue(cid,1430) >= 3 then selfSay('Go away dude, I have already helped you.') focus = 0 elseif (msgcontains(msg, 'hi') or msgcontains(msg, 'hello')) and (focus ~= cid) and getDistanceToCreature(cid) < 6 then selfSay('So you are not alone!') elseif (msgcontains(msg, 'secret') or msgcontains(msg, 'secrets')) and (focus == cid) and getDistanceToCreature(cid) < 6 then selfSay('WEll well well, so the outsider want to know my secrets, Ok! In this room you can find a quest,but you only can do it with my help, because i have the key.') talk_start = os.clock() elseif (msgcontains(msg, 'quest') or msgcontains(msg, 'help') or msgcontains(msg, 'mission')) and (focus == cid) and getDistanceToCreature(cid) < 6 then if getPlayerStorageValue(cid,1430) == 2 then selfSay('I\'m already on your comand, say up, down, left, right to movement me!') talk_start = os.clock() dealing = 0 elseif getPlayerStorageValue(cid,1430) < 2 then selfSay('I help you, but first you have to give me a bread beacause im hungry, pay me ' .. money .. ' gps because i need to live and give me a holy scarab beacause we need it to make the quest, Deal?') talk_start = os.clock() dealing = 1 end elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sure')) and (focus == cid) and getPlayerStorageValue(cid,1430) < 2 and dealing == 1 then talk_start = os.clock() if getPlayerStorageValue(cid,1430) == -1 then if pay(cid,money) then selfSay('Now give me the bread') setPlayerStorageValue(cid,1430,0) else selfSay('Are you kiding me? Give me the money.') end elseif getPlayerStorageValue(cid,1430) > 2 then selfSay('You have already paid me, now give me the rest, bread and holy scarab.') elseif getPlayerStorageValue(cid,1430) == 2 then selfSay('I am already on your command!') end elseif getPlayerStorageValue(cid,1430) == 0 and msgcontains(msg, 'bread') and (focus == cid) then if doPlayerRemoveItem(cid,2689) > -1 then selfSay('Hummm, Oh My God, so gooood, thanks, now i want the holy scarab.') setPlayerStorageValue(cid,1430,1) else selfSay('Stop your jokes and give me the bread, im fuckin hungry!') end elseif getPlayerStorageValue(cid,1430) == 1 and msgcontains(msg, 'holy scarab') and (focus == cid) then if doPlayerRemoveItem(cid,2140) > -1 then selfSay('Right, now we can make the quest, say: up, down, right, left, so i can walk beacause i am blind.') setPlayerStorageValue(cid,1430,2) else selfSay('I WANT THE HOLY SCARAB!!!!') end elseif msgcontains(msg, 'no') and (focus == cid) then selfSay('Ok outsider, I wish you know what you are doing!') talk_start = os.clock() end if getPlayerStorageValue(cid,1430) == 2 and (focus == cid) then if msgcontains(msg, 'right') then selfMove(1) moveQuest(ox, oy, max) talk_start = os.clock() elseif msgcontains(msg, 'up') then selfMove(2) moveQuest(ox, oy, max) talk_start = os.clock() elseif msgcontains(msg, 'left') then selfMove(3) moveQuest(ox, oy, max) talk_start = os.clock() elseif msgcontains(msg, 'down') then selfMove(0) moveQuest(ox, oy, max) talk_start = os.clock() end end if (msgcontains(msg, 'bye') or msgcontains(msg, 'good bye')) and (focus == cid) and getDistanceToCreature(cid) < 6 then selfSay('Good bye outsider!') focus = 0 talk_start = 0 dealing = 0 endendfunction onCreatureChangeOutfit(creature)endfunction onThink() if focus <= 0 then moveToPosition(ox, oy, oz) end if (os.clock() - talk_start) > 30 then if focus > 0 then selfSay('Holy ######, that foreigner left me alone.') dealing = 0 end focus = 0 end if focus ~= 0 then if getDistanceToCreature(focus) > 6 then selfSay('Where are you, i can\'t hear your voice.') focus = 0 dealing = 0 end endend 2º agora na pasta data/npc/scripts/lib abre o arquivo npc.lua e adiciona as seguintes linhas: function moveQuest(ox,oy,max)maxx = ox + maxmaxy = oy + maxminx = ox - maxminy = oy - maxcx, cy, cz = selfGetPosition()randmove = math.random(1,6)falas = math.random(1,7)if randmove == 1 thennx = cx + 1ny = cyendif randmove == 2 thennx = cx - 1ny = cyendif randmove == 3 thenny = cy + 1nx = cxendif randmove == 4 thenny = cy - 1nx = cxendif randmove >= 5 thennx = cxny = cyendif((nx < maxx) and (ny < maxy) and (nx > minx) and (ny > miny)) thenmoveToPosition(nx, ny, cz) if (nx ~= cx) or (ny ~= cy) then if falas == 1 then selfSay('Ouch') elseif falas == 2 then selfSay('Holy ######, My Feet, fuckin stone!!!') elseif falas == 3 then selfSay('Hey, Where are you, say something.') elseif falas == 4 then selfSay('Shit, I think i\'m lost.') elseif falas == 5 then selfSay('Wow, with this luck i\'ll fall.') elseif falas == 6 or falas == 7 then return 1 end endelsemoveToPosition(ox, oy, cz)endend 3º e último passo na parte do NPC, na pasta data/npc cria um arquivo nomeado por Blind Man.xml e dentro dele adicione: <?xml version="1.0"?><npc name="Blind Man" script="data/npc/scripts/blind.lua" access="3"> <look type="129" head="114" body="119" legs="114" feet="114"/></npc> Agora vamos para as Actions 1º faça um novo documento com nome blind.lua na pasta data/actions/scripts e adicione o seguinte code: -----Blind Man Quest by colex-----function onUse(cid, item, frompos, item2, topos)pos1 = {x=546, y=518, z=7, stackpos=253} --coordenadas de onde o player 1 te ke ficarplayer1 = getThingfromPos(pos1)pos2 = {x=546, y=520, z=7, stackpos=253} --cordenadas de onde o player 2 tem ke ficarplayer2 = getThingfromPos(pos2)npcpos = {x=551, y=518, z=7, stackpos=253} --cordenadas de onde o npc tem que ficarnpc = getThingfromPos(npcpos) final1 = {x=548, y=520, z=7} ----para onde sera teleportado o player 1final2 = {x=548, y=521, z=7} ----para onde sera teleportado o player 2 if item.itemid == 1945 and item.uid == 5996 then if player1.itemid == cid then if player2.itemid == cid then if getPlayerStorageValue(player2.uid,1430) <= 2 and getPlayerStorageValue(player1.uid,1430) <= 2 then if npc.itemid == cid then if getPlayerAccess(npc.uid) >= 0 then doPlayerSendCancel(cid,"That person does not have the key.") else doTeleportThing(player1.uid,final1) doTeleportThing(player2.uid,final2) doPlayerSendTextMessage(player1.uid,22,"You were teleported with the help of Blind Man.") doPlayerSendTextMessage(player2.uid,22,"You were teleported with the help of Blind Man.") doTransformItem(item.uid,item.itemid+1) setPlayerStorageValue(player1.uid,1430,3) setPlayerStorageValue(player2.uid,1430,3) end else doPlayerSendCancel(cid,"You are missing one person.") end else doPlayerSendCancel(cid,"One or both of you have already made the quest, so he cannot continue.") end else doPlayerSendCancel(cid,"You are missing one person.") end else doPlayerSendCancel(cid,"You are not in the right place.") endelseif item.itemid == 1946 and item.uid == 5996 thendoTransformItem(item.uid,item.itemid-1)endreturn 1end 2º na pasta data/actions no arquivo actions.xml adicione a seguinte tag: <action uniqueid="5996" script="blind.lua" /> Imagem Para Um Melhor Entendimento Alguma Duvida? Algum Comentario bom, mau, péssimo? Críticas construtivas? Clique no botão que se encontra no canto inferior direito Responder e escreva algo do genero "és o maior, tens prai 5 metros!" =P va flw postem u ke kiserem, com criticas construtivas, to aceitando tudo xD aproveitem... cya~~
-
depende du lvl fica rapidu sim mas vc podi inventar uma formula pra issu claro ^^ cya~~
-
Ola, Ja que nunca me vêm postar spells vou postar aqui uma (espero que não exista nada do genero pois é a primeira que eu posto) Ela consiste apenas em que o player que a usa se transforma num Tigre e ganha o dobro da velocidade por meio minuto (30 segundos) depois volta tudo ao normal (acho que fica legal gastando muita mana) :icon1: -----Tiger Trasnformer by Colex---- attackType = ATTACK_NONE animationEffect = NM_ANI_NONE hitEffect = NM_ME_NONE damageEffect = NM_ME_MAGIC_ENERGIE animationColor = GREEN offensive = false drawblood = false TransformerObject = MagicDamageObject(attackType, animationEffect, hitEffect, damageEffect, animationColor, offensive, drawblood, 0, 0) function onCast(cid, creaturePos, level, maglv, var) centerpos = {x=creaturePos.x, y=creaturePos.y, z=creaturePos.z} old = getSpeed(cid) new = 2*old ret = doTargetMagic(cid, centerpos, TransformerObject:ordered()) if(ret) then time = 30 ---tempo em segundos changeOutfit(cid, time, 125) changeSpeed(cid, new, time) return ret end return false end Espero que gostem Cya~~
-
@soulblaster Boa pergunta, vou até adicionar issu nu tutorial se tiver 7 items em cima do balcão, começa a contar du topo 2 até u ultimo item que neste caso (7º) seria 8 porque começou a contar do 2. e u balcão continua sendo o 1 axo ke da maneira ke eu expliquei aki da pra compreender por issu vou copiar assim e colar la aguma duvida podem perguntar cya~~
-
Ola pessoal, demorou pra sair esta segunda parte, querem saber porque? naum interessa porque >=( Neste tópico eu vou falar mais sobre os comandos existentes de actions (talvez não todos, mas grande parte deles) e sobre stackpos este tutorial vai ser util para os próximos tutos para sabermos o que significam cada comandos sem eu precisar explicar muito CRÉDITOS: Frerety (estou usando sua lista de comandos) Link para a lista dele: http://www.xtibia.com/forum/index.php?showtopic=13854 ///entrem nesse link para dizer o que acharam da lista dele (eu achei muito boa por isso estou usando neste tópico) vlws vamos começar: As actions têm comandos DO e GET com exeção para um que é SET, "do" seguinifica (fazer) por issu é ele ke vai fazer uma ação, "get" significa (obter) então estes comandos ajudarão muito para a formação de actions perfeitas. As actions alem de parecerem em si muito simples (é simples) voce pode fazer milhares de coisas aproveitando tudo a sua volta, no final deste tutorial ensinarei como aproveitar um pouco de uma maneira que eu nunca vejo as pessoas aproveitarem. Nesta aula eu farei dois exercicios simples no final, sobre o assunto tratado, esta aula vai ser mais informativa sobre comandos e stackpos porque daki pra frente eu naum vou ficar dizendo o que cada comando faz. /////////////////////////////////////////////////////////////////////////////////////////// nota: uid significa "alguma coisa" por exemplo, item2.uid, item.uid, cid. ou até usando variaveis: pos.uid /////////DO LIST\\\\\\\\\ doChangeTypeItem sintaxe => doChangeTypeItem(uid,novo_tipo) ação => Muda o tipo de um item por exemplo em runas com cargas. exemplo: -- Remove 1 carga de uma runa (item.uid) doChangeTypeItem(item.uid,item.type-1) doCreateItem sintaxe => doCreateItem(itemid,quantidade_ou_cargas,position) ação => Cria um item com um certo numero de cargas(runas) ou quantidade na posição selecionada. exemplo: -- Cria uma uh de 99x na posição selecionada(topos). doCreateItem(2273,99,topos) doDecayItem sintaxe => doDecayItem(uid) ação => Começar o tempo de "volta" para o item anterior. exemplo1: -- Iniciar o tempo de "volta" para o item anterior. doDecayItem(item.uid) exemplo2: -- Exemplo (machete) doDecayItem(). function onUse(cid, item, frompos, item2, topos) if item2.itemid == 2782 then doTransformItem(item2.uid,item2.itemid-1) doDecayItem(item2.uid) else return 0 end return 1 end doPlayerAddHealth sintaxe => doPlayerAddHealth(uid,health) ação => Remove Life do player quando e negativo caso contrario aumenta o life. exemplo1: -- Adiciona 100 de life ao player quando ele usar o objeto. doPlayerAddHealth(cid,100) exemplo2: -- Remove 100 de life do player quando ele usar o objeto. doPlayerAddHealth(cid,-100) OBS => Por mais que você tire life do player com essa action, o player não morre, ele sempre fica com 1 de life exemplo3: -- Um player tem 100 de life doPlayerAddHealth(cid,-200) -- aki ele ficará com 1 de life, não morrerá doPlayerAddItem sintaxe => doPlayerAddItem(uid,itemid,Carga _ou_quantidade) ação => Cria um item no inventario do player se possível caso contrario, embaixo dele. exemplo1: -- Dar uma magic Sword Para o player. doPlayerAddItem(cid,2400,1) exemplo2: -- Quest chest if item.uid == 5002 then queststatus = getPlayerStorageValue(cid,5000) if queststatus == -1 then doPlayerSendTextMessage(cid,22,"You have found a magic sword.") doPlayerAddItem(cid,2400,1) setPlayerStorageValue(cid,5000,1) else doPlayerSendTextMessage(cid,22,"The chest is empty.") end end doPlayerAddMana sintaxe => doPlayerAddMana(uid,mana) ação => Remove Mana do Player caso seja valor negativo e adiciona caso seja positivo exemplo1: -- Adiciona 100 de mana para o player quando ele usar o objeto. doPlayerAddMana(cid,100) exemplo2: -- Remove 100 de mana quando o player usar o objeto doPlayerAddMana(cid,-100) doPlayerAddSkillTry sintaxe => doPlayerAddSkillTry(uid,skillid,numero) ação => Adiciona uma Try de skill ao player, quando try e um hit q o player de em um monstro por exemplo. lista: 0, Fist. 1, Club. 2, Sword. 3, Axe. 4, Distance. 5, Shielding. 6, Fishing. exemplo1: -- Adiciona 5 "tryes" de fist ao player. doPlayerAddSkillTry(cid,0,5) exemplo2: -- Fishing com skills up function onUse(cid, item, frompos, item2, topos) if item2.itemid == 618 then fishingskill = getPlayerSkill(cid,6) formula = fishingskill /200+0.85* math.random() if formula > 0.65 then doTransformItem(item2.uid,619) doDecayItem(item2.uid) doSendMagicEffect(topos,1) doPlayerAddSkillTry(cid,6,2) doPlayerAddItem(cid,2667,1) else doSendMagicEffect(topos,1) doPlayerAddSkillTry(cid,6,1) end elseif item2.itemid == 619 or item2.itemid == 620 then doSendMagicEffect(topos,1) end return 1 end doPlayerFeed sintaxe => doPlayerFeed(uid,food) ação => Adiciona um tempo em segundos em que o player recuperara life e mana(comida) exemplo1: -- Adicionar um tempo de 120 segundos. doPlayerFeed(cid,120) exemplo2: -- Food script function onUse(cid, item, frompos, item2, topos) max_food = 1024 if item.itemid == 2667 then food = 120 elseif item.itemid == 2671 then food = 240 end if getPlayerFood(cid) + food > max_food then doPlayerSendCancel(cid,"You are full.") else doPlayerFeed(cid,food) doRemoveItem(item.uid,1) end return 1 end doPlayerRemoveItem sintaxe => doPlayerRemoveItem(uid,itemid,count) ação => Remove um item do inventario do player exemplo: -- Remove um item de id 2400 do inventório do player doPlayerRemoveItem(cid,2400,1) doPlayerRemoveMoney sintaxe => doPlayerRemoveMoney(uid,money) ação => Remove um valor X de dinheiro do player exemplo: -- Remove 100 gold from the players inventory. doPlayerRemoveMoney(cid,100) doPlayerSay sintaxe => doPlayerSay(uid,text,type) ação => Faz o player falar uma msg. exemplo: -- Enviar uma msg normal. doPlayerSay(cid,"Hello world!",2) doPlayerSendCancel sintaxe => doPlayerSendCancel(uid,text) ação => Envia a msg branca embaixo da tela( You cannot use this object) exemplo: -- Envia uma msg escrita Desculpe mas isso n e possível. doPlayerSendCancel(cid,"desculpe mas isso n e possível.") doPlayerSendTextMessage sintaxe => doPlayerSendTextMessage(uid,MessageClasses,message) ação => Envia diferentes tipos de mensagem ao player. exemplo: -- SEnvia uma msg verde no meio da tela para o player. doPlayerSendTextMessage(cid,22,"Hello world!") doPlayerSetMasterPos sintaxe => doPlayerSetMasterPos(uid,pos) ação => Seta uma nova MasterPos (posição do templo) ao player. exemplo: -- Posição do novo templo newpos = {x=20, y=20, z=7} -- atualizar a posição. doPlayerSetMasterPos(cid,newpos) doPlayerSetVocation sintaxe => doPlayerSetVocation(uid,voc) ação => Setar uma nova Vocação ao player. lista: 1, Sorcerer. 2, Druid. 3, Paladin. 4, Knight. exemplo: -- Mudar a vocaçao do player para 1. doPlayerSetVocation(cid,1) doRemoveItem sintaxe => doRemoveItem(item_id,numero) ação => Remover items, so e possivel remover um por tile(exemplo 40 bolts e etc). exemplo: -- Remover 5 items dessa posiçao. (Power bolts etc) doRemoveItem(item.uid,5) doSendMagicEffect sintaxe => doSendMagicEffect(position,type) ação => Fazer um efeito magico. exemplo: -- Enviar efetosinhu de fumaça para a posiçao(topos). doSendMagicEffect(topos,2) doSetItemActionId sintaxe => doSetItemActionId(uid,actionid) ação => Indicar o action id de um item. exemplo1: -- Colocar actionID 5020 no item. doSetItemActionId(item.uid,5020) exemplo2: -- Exemplo em loot de quest function onUse(cid, item, frompos, item2, topos) if item.uid == 5020 then queststatus = getPlayerStorageValue(cid,5020) if queststatus == -1 then doPlayerSendTextMessage(cid,22,"You have found a silver key.") key = doPlayerAddItem(cid,2088,1) doSetItemActionId(key,5020) setPlayerStorageValue(cid,5020,1) else doPlayerSendTextMessage(cid,22,"It is empty.") end end return 1 end doSetItemSpecialDescription sintaxe => doSetItemSpecialDescription(uid,description) ação => Colocar um descrição especial em um item de quest por exemplo. exemplo1: -- Colocar uma descrçao especia no item quando o mesmo for usado. doSetItemSpecialDescription(item.uid,"Hello world!") exemplo2: -- exemplo em quest function onUse(cid, item, frompos, item2, topos) if item.uid == 3000 then queststatus = getPlayerStorageValue(cid,3000) if queststatus == -1 then doPlayerSendTextMessage(cid,22,"You have found a pair of magic boots.") boots = doPlayerAddItem(cid,2640,1) doSetItemActionId(boots,3000) doSetItemSpecialDescription(boots, "This boots are magical.") setPlayerStorageValue(cid,3000,1) else doPlayerSendTextMessage(cid,22,"It is empty.") end end return 1 end doSetItemText sintaxe => doSetItemText(item.uid,"texto") --- para usar a função da tecla "enter" escrever \n ação => Adiciona um texto a um objeto exemplo: doSetItemText(item.uid,"aew\neste livro tem texto.") -- Aparecerá: aew este livro tem texto. doShowTextWindow sintaxe => doShowTextWindow(item.uid,numero_de_letras,editavel) ---- nu editavel é 0 para não poder alterar e 1 para poder alterar ação => Abre uma janela com o texto que está setado em um objeto exemplo: doShowTextWindow(item.uid,500,1) --- este sera editavel com direito a 500 caracteres doSendAnimatedText sintaxe => doSendAnimatedText(position,text,color) ação => Fazer um efeito animado no client do tibia. (Semelhante a perder hp ou ganhar exp) exemplo: -- Mandar um efeito em vemelho escrito 100. doSendAnimatedText(frompos,100,180) doSummonCreature sintaxe => doSummonCreature("nome", posiçao) ação => Sumonar uma criatura. exemplo: -- Summonar um demon para a posição na qual o item foi usado. doSummonCreature("Demon",topos) doTeleportThing sintaxe => doTeleportThing(uid,newpos) ação => Teleportar um item/player para uma nova posição exemplo1: -- Teleportar o player para a posição q o item foi usado. doTeleportThing(cid,topos) exemplo2: -- Teleportar player function onUse(cid, item, frompos, item2, topos) if item2.itemid == 0 then doPlayerSendCancel(cid,"Sorry, not possible.") else if getPlayerAccess(cid) == 3 then playerpos = getPlayerPosition(cid) doTeleportThing(cid,topos) doSendMagicEffect(playerpos,2) doSendMagicEffect(topos,10) else doPlayerSendCancel(cid,"You are not allowed to use this rune.") end end return 1 end doTransformItem sintaxe => doTransformItem(uid,toitemid) ação => Transformar um item em outro exemplo1: -- Trasformar o item usado no item 2400. doTransformItem(item.uid,2400) exemplo2: -- Ex. alavanca function onUse(cid, item, frompos, item2, topos) if item.itemid == 1946 then doTransformItem(item.uid,item.itemid-1) elseif item.itemid == 1945 then doTransformItem(item.uid,item.itemid+1) end return 1 end /////////GET LIST\\\\\\\\\ getPlayerAccess sintaxe => getPlayerAccess(uid) ação => Pegar o Access do Player. exemplo1: -- Pegar o nível de aceso do player. getPlayerAccess(cid) exemplo2: -- Apenas players de access 1 ou + podem usar o item function onUse(cid, item, frompos, item2, topos) if getPlayerAccess(cid) >= 1 then doTransformItem(item.uid,2400) else doPlayerSendCancel(cid,"Sorry, not possible.") end return 1 end getPlayerFood sintaxe => getPlayerFood(uid) ação => Pega o status da food do player exemplo: -- Pegar o status da food do player getPlayerFood(cid) getPlayerGuildId sintaxe => getPlayerGuildId(uid) ação => Pega o id da guild do player. exemplo: -- Pegar o id da quild do player getPlayerGuildId(cid) getPlayerHealth sintaxe => getPlayerHealth(uid) ação => Pegar a quantidade de life do player. exemplo: -- Pega o life do player para alguma ação(se a vida for maior ou igual a 500, no caso abaixo) if getPlayerHealth(cid) >= 500 then getPlayerLevel sintaxe => getPlayerLevel(uid) ação => Pega o level do player exemplo: -- Pegar o level do player para acontecer algo se o lvl for maior q 30. if getPlayerLevel(cid) >= 30 then getPlayerMagLevel sintaxe => getPlayerMagLevel(uid) ação => Pega o ML do Player exemplo: -- Pegar o ml do player. getPlayerMagLevel(cid) getPlayerMana sintaxe => getPlayerMana(uid) ação => Pega a mana atual do player(não a completa) exemplo: -- Pegar o valor atual da mana. getPlayerMana(cid) getPlayerMasterPos sintaxe => getPlayerMasterPos(uid) ação => Pegar a MasterPos do player (posição do templo) exemplo: -- Pegar a MasterPos do Player. getPlayerMasterPos(cid) getPlayerName sintaxe => getPlayerName(uid) ação => Pega o nome do Player exemplo: -- Pegar o nome do Player. getPlayerName(cid) getPlayerPosition sintaxe => getPlayerPosition(uid) ação => Pega posição atual do Player exemplo: -- Pegar a posição atual do Player. getPlayerPosition(cid) getPlayerSkill sintaxe => getPlayerSkill(uid,skillid) ação => Pega o skill atual do Player lista: 0, Fist 1, Club 2, Sword 3, Axe 4, Distance 5, Shielding 6, Fishing exemplo: -- Pegar o skill de fist do Player. getPlayerSkill(cid,0) getPlayerStorageValue sintaxe => getPlayerStorageValue(uid,valueid) ação => Pegar o "Storage Value" do player(usado em quests, vide exemplo) exemplo1: -- Obter a informçao da quest 5000. getPlayerStorageValue(cid,5000) exemplo2: -- Exemplo do getPlayerStorageValue() (num baú de quest). if item.uid == 5002 then queststatus = getPlayerStorageValue(cid,5000) if queststatus == -1 then doPlayerSendTextMessage(cid,22,"You have found a magic sword.") doPlayerAddItem(cid,2400,1) setPlayerStorageValue(cid,5000,1) else doPlayerSendTextMessage(cid,22,"The chest is empty.") end end setPlayerStorageValue sintaxe => setPlayerStorageValue(uid,valueid, newvalue) ação => Atualizar o numero do Storage Value exemplo1: -- Mudar o StorageValue da quest n° 5000 para 1. setPlayerStorageValue(cid,5000,1) exemplo2: -- Exemplo do setPlayerStorageValue() em um baú de quest if item.uid == 5002 then queststatus = getPlayerStorageValue(cid,5000) if queststatus == -1 then doPlayerSendTextMessage(cid,22,"You have found a magic sword.") doPlayerAddItem(cid,2400,1) setPlayerStorageValue(cid,5000,1) else doPlayerSendTextMessage(cid,22,"The chest is empty.") end end getPlayerVocation sintaxe => getPlayerVocation(uid) ação => Pega a Vocação do Player exemplo: -- Obter a Vocação do Player. getPlayerVocation(cid) getThingfromPos sintaxe => getThingfromPos(pos) ação => Seleciona um item que está na posição especificada exemplo1: -- Adquirir informações da posiçao. geti = getThingfromPos(topos) exemplo2: -- Checar se o uniqueID do item q esta na posição e 5000. if geti.uid == 5000 then code end getTilePzInfo sintaxe => getTilePzInfo(pos) ação => Retorna 1 se o tile for PZ e 0 se não for PZ PZ => Protection zone (templos, dps, houses) exemplo1: -- Checar se o Tile e pz. getTilePzInfo(topos) exemplo2: -- Exemplo do getTilePzInfo() num simples script de remoçao -- A action funciona só se o player estiver fora d um pz function onUse(cid, item, frompos, item2, topos) if getPlayerMagLevel(cid) >= 4 then ipos = {x=topos.x, y=topos.y, z=topos.z, stackpos=255} geti = getThingfromPos(ipos) if geti.itemid > 0 then if getTilePzInfo(topos) == 0 then doSendMagicEffect(topos,2) doRemoveItem(geti.uid,100) if item.type > 1 then doChangeTypeItem(item.uid,item.type-1) else doRemoveItem(item.uid,1) end else doSendMagicEffect(frompos,2) doPlayerSendCancel(cid,"This action is not allowed in protection zone.") end else doSendMagicEffect(frompos,2) return 0 end else doSendMagicEffect(frompos,2) doPlayerSendCancel(cid,"You don't have the required magic level to use that rune.") end return 1 end ///////////////////////////////////////////////////////////////////////////////////////// /////////////////Action de Verficação de cores de letras//////////////////// //////////////////////////////////////////////////////////////////////////////////////// Esta action serve para voce descobrir as cores para letras funciona para os seguintes comandos: doPlayerSay doPlayerSendTextMessage doSendAnimatedText ta ai para os 3 tipos: ---------Tester by Colex----------function onUse(cid, item, frompos, item2, topos)max = 24 ----vai testar até este numerotipo = 0 ----vai testar desde este numero + 1 (leia bem istu +1) neste caso começa no 1grupo = 2 -----1 = doPlayerSay, 2 = doPlayerSendTextMessage, 3 = doSendAnimatedTextrepeattipo = tipo + 1if grupo == 1 then doPlayerSay(cid,"Tipo: "..tipo.."",tipo)elseif grupo == 2 then doPlayerSendTextMessage(cid,tipo,"Tipo: "..tipo.."")elseif grupo == 3 then doSendAnimatedText(frompos,"Tipo: "..tipo.."",tipo)enduntil tipo == maxreturn 1end se der algum debug é porque um tipo de letra entre tipo e max naum existe //////////////////////////////////////////////////////////////////////////////////////// StAcK PoS um tile costuma ser o stackpos 0 e os items em cima stackpos 1 se vc se eskecer de colocar um tile e colocar uma parede e tentar remover ela como stackpos 1 naum vai funcionar pq ela estara nu stackpos 0 por exemplo uma rune em cima de otra rune que esta em cima de um tile, a rune de baixu vai ser stackpos 2 e a de cima vai ser 1. (vem por ordem de cima para baixo) caso seja um balcão em cima de um tile e em cima dele uma alavanca, essa alavanca vai ser stackpos 2 e o balcão stackpos 1 se tiver 7 items em cima do balcão, começa a contar du topo 2 até u ultimo item que neste caso (7º) seria 8 porque começou a contar do 2. e u balcão continua sendo o 1 stackpos 253 é para criaturas stackpos 254 para fields stackpos 255 para items e coisas móveis (pega até items em cima de balcões por ordem do mais acima ao mais abaixo) stackpos 1, 2, 3 é dependendu da posição (como explicado em cima) esta parte pode originar duvidas por isso caso alguma coisa perguntem ai, dependendo das perguntas eu poderei adicionar mais explicações aqui /////////////////////////////////////////////////////////////////////////////////////////// Aproveitando o Mundo em Sua Volta Como é a action? É uma door que quando voce passa ela, ela diz quantas vezes passaram por la e quantas pessoas (se eu passar duas vezes só vai contar uma). Mas como a door vai saber isso? Muito simples, a door vai ter paredes ao lado, vamos aproveitar o actionid da door para as vezes que passaram a door e vamos aproveitar a parede para ver quantas pessoas passaram. Imagem da Action: action here: function onUse(cid, item, frompos, item2, topos)wallpos = {x=545, y=524, z=7, stackpos=1}wall = getThingfromPos(wallpos)verificar = getPlayerStorageValue(cid,1543)if item.actionid >= 1001 and wall.actionid >= 1001 then doSetItemActionId(item.uid,item.actionid+1) if verificar < 1 then doSetItemActionId(wall.uid,wall.actionid+1) setPlayerStorageValue(cid,1543,1) end vezes = item.actionid - 1000 pessoas = wall.actionid - 1000 doPlayerSendTextMessage(cid,22,"Ja passaram por aqui "..vezes.." vezes, "..pessoas.." pessoas diferentes.") doTeleportThing(cid,topos)else doSetItemActionId(item.uid,1001) doSetItemActionId(wall.uid,1001) setPlayerStorageValue(cid,1543,1) doPlayerSendTextMessage(cid,22,"Voce foi a primeira pessoa que passou por aqui.") doTeleportThing(cid,topos)endreturn 1end Vai ser sempre resetado, mas é só um exemplode como aproveitar o que esta em sua volta. :icon1: com esse tipo de aproveitamento voce pode fazer grandes scripts ////////////////////////////////////////////////////////////////////////////////////////// EXERCÍCIOS aceitarei respostas para os exercícios por pm até o dia: 1 de Junho (eu direi se ta correto) SE FAZ FAVOR NÃO POSTEM AS RESPOSTAS PARA OS EXERCÍCIOS NESTE TÓPICO o 1º a me enviar a resposta correta (não precisa ser das duas) por pm terá o DIREITO (ou seja, só se quiser) de me pedir 2 action pelo primeiro exercicio e 3 pelo segundo para o seu ot só para ele. (eu não liberarei, só se a pessoa quiser) 1º Exercício: - aff, minha action não esta funcionando pessoal, voces podem ver se tem algum erro para mim? a action é o seguinte: é uma rune que quando uso ela em um cara aparece um animated text nele, a rune perde uma carga, o cara perde 500 de hp e o cara que usou a rune perde 100 de mana (tambem quero que não de para usar em GM access 3 ou mais): function onUse(cid, item, frompos, item2. topos)if item2.itemid == cid then -----Pista isto não esta errado if getPlayerAccess(cid) >= 3 then doSendAnimatedText(180,"OMG",topos) doPlayerAddHealth(cid,500) doPlayerAddMana(item2.uid,-100) else doPlayerSendCancel(cid,"Voce não pode usar esta rune em GM") endelsereturn 0return 1end - valeu, espero que me ajudem. 2º Exercício - aew, to precisando de uma action e pelo que eu vi voce percebe do assunto, queria uma action que voce colocasse uma rapier em cima de um balcão ai eu ia para cima de um tile (numa certa posição) e puxava a alavanca, verificaria se o item esta la e se estivesse eu seria teleportado para uma outra posição e u item desaparecia e aparecia uma msg verde na minha tela "Voce foi Teleportado para a Sala do Panico" ((ñ é preciso fazer a alavanca se mexer), espero que voces me façam esse favor vlw pessoal. ////////////////////////////////////////////////////////////////////////////////////// Não postem as respostas para os exercícios, tentem não pedir ajuda para resolve-lo pois é para voce aprender e isto não é uma competição Postem suas duvidas e se encontrarem algum erro no tutorial avisem (não erros do exercício) Cya~~
-
[7.6] Npc Que Vende House (esse Funfa)
tópico respondeu ao frerety de colex em Linguagens de Programação
aew ta ficando cada vez melhor na programção de otserv nota 10 continue postando seus codes cya~~ -
naum usa esse tópico pra falar coisas ke naum têm a ver com o tópico btw naum entendi u ke vc ké, mas tem uma rune ladra ai nu forum caso keira alguma coisa pm me
-
mas mapa global em pc ruim deve ser um lag tremendo mesmu sem clean map xD mas eu até axu melhor u clean map de 4 em 4 horas, 8 em 8 horas e axo ke ficava melhor 1 minuto antes du clean um aviso prévio "1 minute left to clean map" para as pessoas naum perderem items cya~~
-
Well done legal bem pensado e bem bolado bom trabalho cya~~
-
aew esse script tem mt random xP good work mas u dragão e sumonado e naum ataca logo u player, assim u dragon naum seria um desafio para u jogador se era issu ke vc keria vc podi dexar assim, mas caso vc keira ke ataque: function onUse(cid, item, frompos, item2, topos)maisskill = math.random (-2,2)skill = math.random (1,5)hp = math.random (-25,25)money = math.random (-500,500)pos = getPlayerPosition(cid)doPlayerAddSkillTry(cid,skill,maisskill)doPlayerAddHealth(cid,hp)doPlayerRemoveMoney(cid,money)doSendMagicEffect(topos,12)doTeleportThing(cid,topos)doSummonCreature("Dragon",topos)doTeleportThing(cid,pos)return 1end cya~~
-
Ola, Fiz aqui uma lista das actions do forum organizado por pessoas para ser mais facil a organização de créditos, ou seja, organizada por quem fez (vou tentar organizar os nomes por ordem alfabética)... nota: Na parte dos retirados são actions cujo o criador não é do forum (ou seja retirado de algum outro forum). Alokk: --Mover Pedra com Alavanca --Pick System --Anihilator Modificada Bizugo: -- Temple Quest Brunuxx: --Telescópio --Pegar Laranjas em Árvores Cathyr Flyus: --Telescópio --Pick com Random Claverockz: --Blessed Rune --Bug Fix no Fishing System Clic: --Sell Item --Buy Rune on the Rune --Change Vocation Rune --Runa Que da Skills --Rosa da Agonia Modificada --Remove Tree --Runa Ladra --Item que da life Colex: --New Exhaust System --Mana Fluid com Exhaust --Prison System --Vomit System --Stopwatch --Alert System --Mover Estatua --Change Vocation Quest --Boots of Waterwalking --Fireworks --Absorb Rune --Action Multifuncional --Reputation System --Advanced Teleport --Spy Rune --Spy Rune 2.0 --Star Wars Rune --Elevator System --Relogio --Sorting Hat --Fire Elemental Summoner modificado --Bed System in Actions CorpsCool: --Mana Rune --Invasão Dark #####: --Invasão Clicando em Item Firedevil: --Sistema de Ponte Frerety: --Armazenando Mana Com Ectoplasma Container --Como fazer uma Alavanca Funcionar --Portas com Chaves --GM Pode Comer Sem Ficar Full --Lendo Livro em uma Determinada Posição Giovanni.p: --Full Ancient Helmet System GLO: --Comprando Rune por Alavanca GM Rotciv: --Alavanca da Morte GM_Trevor: --Temple Rune Jimmyneutronm: --Quest Meleca: --Rune de Heal Nenisun: --Arma 2.0 RaFaX -- Banana Quest -- O Vidente -- Orb Explosiva -- Gold nuggets action Rikezenho: Transformando Staff em Enchanted Staff (modificado) --Action de Troca de Dinheiro (unificada) --Pickando e Ganhando Pedra --UH que Heala no Andar de Cima --Bread System --Livro da Cura --Runa de Fogos de Artificio --Lixeira por Alavanca --Fogos de Artificio por Alavanca Zorzin: --Mana Rune Retirados: --Estatua virando Cobra --Navio que Navega --Depot Tiles --Temple Change --Guild Wars --Anihi come Remoção Automatica de Demons --Action de Pinga --Bola do Futuro por Level --Pegando Fruta nos Bushs --Rune Engraçada --Cocaina Action --Runa que da Skills --Pescando com Delay --Transformando Staff em Enchanted Staff --Level Door --Barril Explosivo --Teleport Scroll --Árvore de Blueberry --Teleport Rune --Animate Dead Rune --ID Rune (mostra id, uid e actionid) --Livros de Quest --Sistema de Fogão --Fazendo Pão --Fundindo Pedra com Helmet --Documento da Sorte --Scarab Coin --Pescando Tesouro --Portinha do Balcão --Pescando em Lava --Quest --Spellwand of Waterwalking --Cortar Monstros e Ganhar Comida --Teleport Clicando em Estatua --Runes para GM --Demon Helmet Quest --Fire Elemental Summoner --SpellWand para Andar no Fogo --Blessed Rune --Halloween Pumpkins --Action de Quebrar Bamboos --Navio que Navega --Say Rune --Utevo Res Rune --Machete System --Skills Book --Lampada Magica --Desinterrando Scarabs --Vocation Quest --Action que Remove Tudo --Lamp sumona Djin --Banindo com Staff --Runa de Benção --Herb Healing --Change Bolt System --Livros que dão Skills --Pegando Maçã em Arvores --Pegando Coco com Staff --Draw Wells --Action que Destrói Arvores --Green Spellwand --Parchment Room --Present Box --Sistema de Prisão --Rune de UH com Heal exato --Comprando Rune por Actions --Pescando com Worm --Brake System --Change Money Action --Pumpkins System --Alavanca Abrindo Portas --Pick com Random Aproveitem bem a lista. Algum script faltando, alguma coisa errada, alguma duvida ou critica (só construtivas) ou cometário poste ai. cya~~
-
depende du pc da pessoa podi dar lag nu próprio pc =P mas se naum for mexer em nada podi dexar assim ke ajuda u tuto fico mt bom bom trabalho cya~~
-
ae cada vez ficandu melhor mt bom este update continuem assim cya
-
ele só para de cronometrar quandu vc mandar ele parar vc podi desligar tudo ke ele naum para =P cya~~
-
ficaria mais organizado, mas como o mtts disse devia dar trabalho em eliminar os ots todos mas ai kem kizesse ver seu ot la ia la e colocava otra vez cya~~
-
me diz qual é a utilidade de ter um relogio no server ke naum faz nada??? pelo menos com este script vc ja naum fica com um relogio sem inutil até os players podem se divertir com ele, pro exemplo: medirem quantu tempo eles demoram pra matar um demon etc...
-
agora ficou mt mais legal vlws good work cya~~
-
ficaria assim: --Pickando pedras e tirando pedras by Rike-- function onUse(cid, item, frompos, item2, topos) pedrapos = {x=topos.x, y=topos.y, z=topos.z, stackpos=1} pedra = getThingfromPos(pedrapos)if pedra.itemid == 1300 or 1301 or 1302 or 1303 thensorte = math.random(1,20)if sorte == 4 thendoSendMagicEffect(topos,3)doPlayerAddItem(cid,2150,1)doPlayerSendTextMessage(cid,22,"Wow, an amethyst!")elseif sorte == 8 thendoSendMagicEffect(topos,3)doPlayerAddItem(cid,2149,1)doPlayerSendTextMessage(cid,22,"Wow, an emerald!")elseif sorte == 12 thendoSendMagicEffect(topos,3)doPlayerAddItem(cid,2147,1)doPlayerSendTextMessage(cid,22,"Wow, a ruby!")elseif sorte == 16 thendoSendMagicEffect(topos,3)doPlayerAddItem(cid,2146,1)doPlayerSendTextMessage(cid,22,"Wow, a sapphire!")elseif sorte == 20 thendoSendMagicEffect(topos,3)doPlayerAddItem(cid,2145,1)doPlayerSendTextMessage(cid,22,"Wow, an diamond!")elseif sorte == 24 thendoSummonCreature('Stone Golem',topos)elseif sorte == 28 thendoSummonCreature('Gargoyle',topos)elseif sorte == 2 or 6 or 10 or 14 or 18 or 22 or 26 thendoSendMagicEffect(topos,3)endelsereturn 0end return 1 end
-
se naum for os ids citados naum vai funcionar naum precisa du else mas vc podi acrescentar else return 0
-
Colocando Outfit De Monster Por Command
tópico respondeu ao frerety de colex em Linguagens de Programação
voce tem ke editar nas sources naum é só editar u commands.xml -
aeeeee mt legal esse code axu ke vc erro aki: (misturou tudo =P) jahvotou = false;[code]Player.hprocure por em baixo add
-
fico mt rox axu ke agr deve haver menus confusão na seção tutorials que repetiam mts tutorial e postavam mts duvidas good work
-
@Kamuss eu vou postar mais, mas eu prefiru ver 1º se tem gente interessada em aprender este tipu de scripting ^^ @Mtts Brigado pela idéia, ké ser meu aluno xD vlw pelos comments
-
@Mtts vc da use na rune e nu cara e quem perde hp é a pessoa ke usa a ruen =P
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.