Dividi em fases
Entaum vamos lah ensinalo a ser um scripter:
NPC'S
vou ensinar a base de um npc seller,passa o script de comando,
Npc Seller:
vá em data>Npcs> Copie qualquer um cole na pasta abra com bloco de notas,
Vai estar Assim:
<?xml version="1.0"?>
<npc name="NOME script="Diretorio/Arquivo.lua" access="3">
<look type="look" head="head" body="body" legs="legs" feet="57"/>
</npc>
Explicando:
Npc Name= Nome do Npc
script= é onde está localizado o script do npc,ponha na pasta scripts dentro da pasta npc,e no final ponha o nome do arquivo lua,e sempre ponha .lua no final
Acces = é o acesso do npc,por exemplo se um player de acces 4 chega nele e fala "hi" dá um debug no server,portanto se o acces de seu gm é 10000 o acces do npc tem que ser 10000.
Look: é o Look do Npc,exemplo: se a ordem de numeros estiver 0,0,0,0 o Npc será todo branco,alguns ot's vêem as cores do outfit(acho)
_________________-Script do Npc_______________________
vai na pasta scripts copie qualquer um, e renomeie de acordo com o que vc pois no .xml do npc na pasta anterior
no começo tem assim:
target = 0 following = false attacking = false focus = 0itemid = 0 count = 0payback = 0talkcount = 0talk_start = 0function onThingMove(creature, thing, oldpos, oldstackpos) end function onCreatureAppear(creature) end function onCreatureDisappear(id) if id == target then target = 0 attacking = false selfAttackCreature(0) following = false endfocus = 0itemid = 0 end function onCreatureTurn(creature) end function onCreatureSay(cid, type, msg)msg = string.lower(msg) dist = getDistanceToCreature(cid)if dist >= 8 thenreturnendtalk_start = os.clock() if string.find(msg, 'hi') and string.len(msg) == 2 thenif focus == cid thenselfSay('I am talking to you.')else if focus > 0 then selfSay('Wait.') endendif(focus == 0) thenselfSay('Hello ' .. creatureGetName(cid) .. '! .')focus = cidendtalk_start = os.clock()endExplicando :Nesta Parte se vc fala hi para ele,ele fala: Hello ( e seu nome)[color=blue]' .. creatureGetName(cid) .. ' Esse comando Faz o Npc falar o nome do char(cid) que falou hi[/color]Sempre Use essa parte no começo,se um char,fala hi e depois fala hi denovo o npc fala: I'm Already Talking to You,Pode Ser Alterado nesta Parte:if string.find(msg, 'hi') and string.len(msg) == 2 thenif focus == cid thenselfSay('I am talking to you.')<---else if focus > 0 then selfSay('Wait.')<--neste é quando o npc está atendendo outra pessoas endend Continuando(vamos usar como exemplo um npc que vende um axe ring
if string.find(msg, '(%a*)offer(%a*)') and cid == focus thenselfSay('I am selling all types of rings!')endif string.find(msg, '(%a*)axe ring(%a*)') and cid == focus thenselfSay('Do You want to buy an Axe Ring for 400gps?')talk_start = os.clock()itemid = 2208count = 1cost = 400talkcount = 1returnendif string.find(msg, 'yes(%a*)') and cid == focus and talkcount == 1 then talkcount = 0buy(focus,itemid,count,cost)endif string.find(msg, '(%a*)no(%a*)') and cid == focus thenselfSay('Ok, is there something else you want? If so tell me.')itemid = 0count = 0cost = 0talkcount = 0end
Significados:
________________________________________________________
if string.find(msg, '(%a*)offer(%a*)') and cid == focus then
selfSay('I am selling all types of rings!')
end
_________________________________________________________
Quando voce falar "offer" o Npc falará o que voce por nesta parte:
selfSay('Aqui! Sempre entre parentese e aspas')
voce pode por ele para falar mais coisas,
Axe Ring:
________________________________________________________________
if string.find(msg, '(%a*)Se vc falar > axe ring(%a*)') and cid == focus then
selfSay('Do You want to buy an Axe Ring for 400gps?')<Ele fala <
talk_start = os.clock()
itemid = 2208 <--Id do Objeto que voce vai comprar
count = 1 <-- Quantidade
cost = 400 <-- Custo(em gp's)
talkcount = 1 <-- TalkCount(numero da pergunta,ex: se a pergunta é numero 1,a outra tem que ser 2 assim por diante,para vc fazer respostas diferentes para cada pergunta,depois explico melhor
return
end
___________________________________________________________-
Vou explica dentro do quote
Agora a parte da resposta:
if string.find(msg, 'yes(%a*)') and cid == focus and talkcount == 1 thentalkcount = 0
buy(focus,itemid,count,cost)
end
if string.find(msg, '(%a*)no(%a*)') and cid == focus then
selfSay('Ok, is there something else you want? If so tell me.')
itemid = 0
count = 0
cost = 0
talkcount = 0
end
if string.find(msg, 'yes(%a*)') and cid == focus and talkcount == 1 then
talkcount = 0
buy(focus,itemid,count,cost)
end
se o char,falar yes,ele responde ao talk 1
if string.find(msg, 'yes(%a*)') and cid == focus and talkcount == 1
se voce por 2,3,4,etc.. vc tem que por a resposta de acordo
if string.find(msg, '(%a*)no(%a*)') and cid == focus then
selfSay('Ok, is there something else you want? If so tell me.')
itemid = 0
count = 0
cost = 0
talkcount = 0
end
se o char falar no, ele fla: Ok, is there something else you want? If so tell me, e nao acontece nada,e nada parte final vc poe:
_____________________________________________________-
if string.find(msg, 'bye(%a*)') and cid == focus then
selfSay('Farewell, ' .. creatureGetName(cid) .. '!')
focus = 0
itemid = 0
talk_start = 0
talkcount = 0
end
end
function onCreatureChangeOutfit(creature)
end
function onThink()
if (os.clock() - talk_start) > 10 then
if focus > 0 then
selfSay('Next please!')
talkcount = 0
end
focus = 0
itemid = 0
talk_start = 0
end
if focus == 0 then
cx, cy, cz = selfGetPosition()
randmove = math.random(1,50)
if randmove == 1 then
nx = cx + 1
end
if randmove == 2 then
nx = cx - 1
end
if randmove == 3 then
ny = cy + 1
end
if randmove == 4 then
ny = cy - 1
end
if randmove >= 5 then
nx = cx
ny = cy
end
moveToPosition(nx, ny, cz)
--summons = 30
--summons2 = 30
end
end
_______________________________________________
ficando assim o script:
target = 0 following = false attacking = false focus = 0itemid = 0 count = 0payback = 0talkcount = 0talk_start = 0function onThingMove(creature, thing, oldpos, oldstackpos) end function onCreatureAppear(creature) end function onCreatureDisappear(id) if id == target then target = 0 attacking = false selfAttackCreature(0) following = false endfocus = 0itemid = 0 end function onCreatureTurn(creature) end function onCreatureSay(cid, type, msg)msg = string.lower(msg) dist = getDistanceToCreature(cid)if dist >= 8 thenreturnendtalk_start = os.clock() if string.find(msg, 'hi') and string.len(msg) == 2 thenif focus == cid thenselfSay('I am talking to you.')else if focus > 0 then selfSay('Wait.') endendif(focus == 0) thenselfSay('Hello ' .. creatureGetName(cid) .. '! .')focus = cidendtalk_start = os.clock()endif string.find(msg, '(%a*)offer(%a*)') and cid == focus thenselfSay('I am selling all types of rings!')endif string.find(msg, '(%a*)rings(%a*)') and cid == focus thenselfSay('I Sell Axe Ring,Club Ring,Crystal Ring,Dwarven Ring,Esmerald Bagle,Energy Ring,Gold Ring,Life Ring.Might Ring,Power Ring,Ring of Healing,Ring of the Skies,Stealth Ring,Sword Ring,Time Ring and Weding Ring.')talk_start = os.clock()returnendif string.find(msg, '(%a*)axe ring(%a*)') and cid == focus thenselfSay('Do You want to buy an Axe Ring for 400gps?')talk_start = os.clock()itemid = 2208count = 1cost = 400talkcount = 1returnendif string.find(msg, 'yes(%a*)') and cid == focus and talkcount == 1 then talkcount = 0buy(focus,itemid,count,cost)endif string.find(msg, '(%a*)no(%a*)') and cid == focus thenselfSay('Ok, is there something else you want? If so tell me.')itemid = 0count = 0cost = 0talkcount = 0end if string.find(msg, 'bye(%a*)') and cid == focus thenselfSay('Farewell, ' .. creatureGetName(cid) .. '!')focus = 0itemid = 0talk_start = 0talkcount = 0end endfunction onCreatureChangeOutfit(creature)endfunction onThink() if (os.clock() - talk_start) > 10 then if focus > 0 then selfSay('Next please!') talkcount = 0end focus = 0 itemid = 0talk_start = 0 end if focus == 0 thencx, cy, cz = selfGetPosition()randmove = math.random(1,50)if randmove == 1 thennx = cx + 1endif randmove == 2 thennx = cx - 1endif randmove == 3 thenny = cy + 1endif randmove == 4 thenny = cy - 1endif randmove >= 5 thennx = cxny = cyendmoveToPosition(nx, ny, cz)--summons = 30--summons2 = 30endend
pronto vc fez um npc seller,pelo menos a base,se vc quiser adicionar comando para vender,comando de respostas,vendas etc...
LEMBRE-SE:SEMPRE PULE DUAS LINHAS(APERTE ENTER DUAS VEZES)
Script de comando:
_________________________________________________________________
elseif talk_state == <number> then
if msgcontains(msg, 'yes') then
if pay(cid,10000) then
selfSay('/premmy 15 ' .. creatureGetName(cid))
selfSay('Now this character have some days of premium account.')
else
selfSay('Sorry, you do not have enough money.')
end
end
talk_state = 0
_________________________________________________________________
Significados:
esse comando é como funciona a premmy,onde está /premmy...vc troca pelo comando,exemplo: /m XxXxXXxXx,/promote
e o outro selfsay é o que ele vai falar
e aqui acaba a parte dos NPC'S Espero que entenderam
qualquer duvidas msg me
Ah
Um exercicio para garantir,Faça um Npc Com o Nome E-plate,e ponham ele para vender uma e-plate
e depois me falem os resultados,
me falem error,error de concordancia,dificuldade em tal lugar etc...
agora próxima fase:
SPELLS
Vá em Data>Spells,Copie e cole qualquer um e ponha o nome de Fire
apague tudo dentro e ponha isso:
area = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
}
attackType = ATTACK_PHYSICAL
needDirection = false
areaEffect = NM_ME_EXPLOSION_AREA
animationEffect = NM_ANI_NONE
hitEffect = NM_ME_EXPLOSION_DAMAGE
damageEffect = NM_ME_DRAW_BLOOD
animationColor = RED
offensive = true
drawblood = true
UltimateExplosionObject = 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}
n = tonumber(var) -- try to convert it to a number
if n ~= nil then
-- bugged
-- ultimateExplosionObject.minDmg = var+0
-- UltimateExplosionObject.maxDmg = var+0
UltimateExplosionObject.minDmg = 0
UltimateExplosionObject.maxDmg = 0
else
UltimateExplosionObject.minDmg = (level * 3 + maglv * 4) * 3.4 - 40
UltimateExplosionObject.maxDmg = (level * 3 + maglv * 4) * 4.0
end
return doAreaMagic(cid, centerpos, needDirection, areaEffect, area, UltimateExplosionObject:ordered())
end
Explicando:
Atack Type:
Physical o que eu puis neste é o melhor pois o unico monstro imune é o diptrah e o ghost
needDirection: É se precisa de direção,se voce colocar true,vc vai pricisar por 1,2,3,4 nas direções exemplo:
se voce por direção,voce vai ter que por assim:
exemplo exori flam
____________________________________________________________
area = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
}
_______________________________________________________________
e se voce por false,só poe o numero 1,que vai acertar em tal area INDENPENDETE DA Posição
areaEffect = NM_ME_EXPLOSION_AREAanimationEffect = NM_ANI_NONE
hitEffect = NM_ME_EXPLOSION_DAMAGE
damageEffect = NM_ME_DRAW_BLOOD
esses quatro é onde mudamos a animação...
areaEffect: é o principal tipo,esse explosion que está ai,vai sai fire,igual uma ue,mais se pode mudar,para mudar vá em outras spells,exemplo quero por de sd,
Vai na runa de sd vai em areaEffect e copie o que está lá e cole na magia
hitEffect = NM_ME_EXPLOSION_DAMAGE
quando vc hitar,acertar algum char ou monstro é o que vai ficar,nesse caso ae vai suir um fogo,para mudar é igual o primeiro,faça a mesma coisa só que no comando diferente(claro)
os Outros deixe do jeito que está pois senão pode dar debug
onde está assim:
_____________________________________________________________
UltimateExplosionObject.minDmg = (level * 3 + maglv * 4) * 3.4 - 40
UltimateExplosionObject.maxDmg = (level * 3 + maglv * 4) * 4.0
end
_____________________________________________________________
o dano vai causar,por 3x seu lv e 3.4x seu ml,
vc pode diminui para fazer uma spell mais fraca, e aumentar para fazer uma spell exagerada,
Você Pode encontrar diferentes tipos de atacks,modos,efeitos,na pasta Lib do seu OTServer
Spells.xml
<spell name="Nome" words="palavras magicas" maglv="ml" mana="<mana>" enabled="1"><vocation id="2" /><vocation id="1" /></spell>
Signs:
spell name = Nome da Spell
words = Palavras magicas)o que voê fala para soltar a magia)
maglv = ml para soltar a spell
mana = mana para soltar a magis
enabled = Se a Magia é promovida ou não
vocation id = é a vocação que a usa
1= sorc, 2= druid , 3= pally , 4= kina
E Aqui Já Acabou a Parte das Spell
Exercicio
faça uma magia que saia,4 traços pros lados de qualquer tipo, e uma que saia 4 areas na sua frente para o lado que voce virar...
MONSTERS
Os monstros sao uns dos mais facéis
Começando:
<?xml version="1.0"?><monster name="Elf" level="20" maglevel="30" experience="42" pushable="0" armor="15" defense="20" canpushitems="1" staticattack="50" changetarget="200" speed="190">
<health now="100" max="100"/>
<look type="62" head="20" body="30" legs="40" feet="50" corpse="4061"/>
<combat targetdistance="1" runonhealth="20"/>
<attacks>
<attack type="melee" maxdamage="60"/>
</attacks>
<defenses>
</defenses>
<loot>
<item id="2969" countmax="15" chance1="100000" chancemax="0"/>
<item id="3385" countmax="6" chance1="800000" chancemax="0"/>
<item id="3312" chance="10000"/>
<item id="3316" chance="20000"/>
<item id="3310" chance="4000"/>
<item id="3490" chance="25000"/>
<item id="2811" chance="6666"/>
<item id="2791" chance="100000">
<inside>
<item id="3223" chance="5000"/>
<item id="3523" countmax="4" chance1="800000" chancemax="0"/>
<item id="3489" chance="9000"/>
<item id="3288" chance="6666"/>
</inside>
</item>
</loot>
</monster>
Os monstros sao facéis por causa da ordem olhe no começo bem facil de editar
Explicando:
Monster name = Nome do Monstro(lembre-se ele tem que ser renomeado por fora tambem,
Level = Nao precisa nem falar né? quanto mais level mais forte
MgLevel,quando mais ml mais forte as magias
canpushitems,se o monstro pode mover objetos
changetarget = indica a dificuldae,facilidade para o monster trocar de alvo
combat targetdistance = a distancia de quantos sqm o monster deverá ficar do player
runonhealth = A life em que o monstro irá fugir
defenses = imunes do monter
voices = voz dos monstros(aquelas alaranjadas)
tudo quanto maior, mais forte o monstro...
Atacks
<attack type="melee" maxdamage="60"/>
isso ele irá atacar com melee(fist somente)
a o maximo de dano será 60
vc pode adicionar para ele tacar bolts>
<attack type="distance" name="bolts" mindamage="<minimo>" maxdamage="<maximo>"/>
arrows:
<attack type="distance" name="arrows" maxdamage="60"/>
em maxdamage vc altera o maximo que irá causar
<atack type ="distance"
Significa ataque do tipo distance(arrow,bolt,power bolt,spear,stones,entre outros)
Danos Com Runas:
<attack type="rune" name="nome da runa" exhaustion="exaustion do monstro" cycleticks="8000" probability="chances de acertar"/>
Loot:
<item id="3288" chance="6666"/>
item id = id do item que vai cair, chance é a chance de cair maximo 10000,que cai sempre,no forum>downloads de scripts,outros, tem um topico falando as chances
Summons:
<summons maxSummons="Quantos Summons">
<summon name="Nome do Monstro" chance="Chance"/>
</summons>
para atacar Spells:
<attack type="instant" name="Spell" exhaustion="500" cycleticks="20000" probability="40"/>
e aqui termina os monstros
<loot>
<item id="3288" chance="6666"/>
item id = id do item
chance = chance do item cair
aqui temos a lista de chances:
--100000= all time----50000= each 2 time----33333= each 3 time----20000= each 5 time----10000= each 10 time----6666= each 15 time----5000 = each 20 time----4000 = each 25 time----3333 = each 30 time----2857 = each 35 time----2500 = each 40 time----2222 = each 45 time----2000 = each 50 time----1818 = each 55 time----1666 = each 60 time----1538 = each 65 time----1428 = each 70 time----1333 = each 75 time----1000 = each 100 time----909 = each 110 time----833 = each 120 time----800 = each 125 time--666 = each 150 time----588 = each 170 time----555 = each 180 time----500 = each 200 time----400 = each 250 time----333 = each 300 time--
Quests
Quests é nas Actions, e na verdade nem é tão dificil
ai vai
crie um arquivo .lua chamado hmm
- Hmm Questfunction onUse(cid, item, frompos, item2, topos) if item.uid == 5003 then queststatus = getPlayerStorageValue(cid,5003) if queststatus == -1 then doPlayerSendTextMessage(cid,22,"You Have Found 100 hmm's to Hunt.") doPlayerAddItem(cid,2311,100) setPlayerStorageValue(cid,5003,1) else doPlayerSendTextMessage(cid,22,"It is empty.") end elseif item.uid == 5004 then queststatus = getPlayerStorageValue(cid,5003) if queststatus == -1 then doPlayerSendTextMessage(cid,22,"You have Found 100 uh to Hunt.") doPlayerAddItem(cid,2265,100) setPlayerStorageValue(cid,5003,1) else doPlayerSendTextMessage(cid,22,"It is empty.") endelseif item.uid == 5017 then queststatus = getPlayerStorageValue(cid,5003) if queststatus == -1 then doPlayerSendTextMessage(cid,22,"You have found 100 explosion to hunt.") doPlayerAddItem(cid,2305,1) setPlayerStorageValue(cid,5003,1) endelse return 0 end return 1end
_______________________________________________________________
Explicando:
______________________________________________________________
if item.uid == <id> then
queststatus = getPlayerStorageValue(cid,<id>)
if queststatus == -1 then
doPlayerSendTextMessage(cid,22,"You Have Found 100 hmm's to Hunt.")
doPlayerAddItem(cid,2311,100)
setPlayerStorageValue(cid,5003,1)
else
_____________________________________________________________
if item.uid == <id> then
onde está escrito <id> é a continuação exemplo
vc vai em chest .lua(que se localiza na pasta actions)
o ultimo foi 5010 o proximo deve ser 5011 e assim por diante
if queststatus == -1 then
doPlayerSendTextMessage(cid,22,"You Have Found 100 hmm's to Hunt.")
_________________________________________________________
if quest status == 1
traduzindo: se status de quest ==1 ,
traduzindo: se o player nao fez a quest
-_____________________________________________________________-
doPlayerSendTextMessage(cid,22,"You Have Found 100 hmm's to Hunt.")
____________________________________________________________
Recebe esta msg
e recebe o item
doPlayerAddItem(cid,2311,100)
setPlayerStorageValue(cid,<id>,1)
doPlayerAddItem(cid,2311,100
2311 é o id do item que o char recebe
se voce quiser por level na quest add o seguinte antes de:
_________________________________________________________
else
doPlayerSendTextMessage(cid,22,"It is empty.")
________________________________________________________
add isso:
doPlayerSendTextMessage(cid,22,"You need level 20 to get prize.")end
Não Necessariamente level,essa é a mensagem que ele recebe se não tiver Level
e depois de:
if queststatus == -1 then
add isso:
if getPlayerLevel(cid) >= 20 then
if getPlayerLevel(cid) >= 20 then
significa
Se o player tiver Level <lv> ele passa na quest
mais se for inferior
doPlayerSendTextMessage(cid,22,"You need level 20 to get prize.")
e assim voce faz uma quest,
depois é só ir no mapa editor,colocar o chets no lugar que vc quer,e clica com o direito e em
uid
add
o numero da quest
Lembre-se se a ultima foi 5010 a proxima é 5011 e assim por diante
Próximo:
e Ultimo (q demoro pakas heim muitos poukos devem estar lendo aki neh mais tudu bem)
Lv Door
ai vai:
--Hmm function onUse(cid, item, frompos, item2, topos)doorpos = {x=frompos.x, y=frompos.y, z=frompos.z}playerpos = getPlayerPosition(cid)playerlevel = getPlayerLevel(cid)if item.itemid == 1234 and doorpos.x == 1 and doorpos.y == 1 and doorpos.z == 1 thenif playerlevel > 100 thendoTeleportThing(cid,doorpos)elseif playerlevel < 100 thendoPlayerSendTextMessage(cid,22,"Você precisa ser level 100 para passar.")endendreturn 1end
__________________________________________________--
Explicando:
Coisa que vc precisa Mudar:
if item.itemid == <id> and doorpos.x == <xxx> and doorpos.y == <yyy> and doorpos.z == <z> then
<id> = Id da porta
doorpos.x,doorpos.y,doorpos.z,
São as coordenadas da Porta,isso você vê no MapEditor
você poe o mouse sobre o lugar,e embaixo,do lado direito aparecem as coordenadas.
Ajuste Isso de acordo com o lugar de onde voce por a level door no ot
Level
if playerlevel > 100 then
Onde Está Escrito 100 then
<100> é o level necessario para passar na door
voce poe o level que quiser
doPlayerSendTextMessage(cid,22,"Você precisa ser level 100 para passar.")
Mensagem que o Player Recebe ao nao ter Level para passar...
Exemplo:
if playerlevel > 200 then
doPlayerSendTextMessage(cid,22,"Se acha que passa né?Ahhh Rapa!Pricisa de Level 200,Meia Volta.")
ufa acabo ateh q enfim heim
quase ngm deve ter vindo ateh aki
se vc veio nossa como vc aguenta?
hehe
espero q tenhaum gostado
Créditos: Dum amigo rl q axo na net na casa do primo dele dai ele sabia q eu ia volta aki e me deu pra eu posta e kramba demorei quase 2h pra escreve tudu issu hehe, e infelizmente os créditos não sao meus dinovu, mais eu to voltando agora e logo logo farei um como o meu ultimo q felizmente ao chegar aki fikei sabendo q ele foi fixado ainda num descobri onde neh hehe mais ele fo fixado!
vlw ae comentem plz!
Atenciosamente,
Sir Picaralhos.
:laughing: