Ir para conteúdo

Quer Aprender A Ser Scripter?


Posts Recomendados

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 then      

talkcount = 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_AREA

   animationEffect = 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: :P:

Link para o comentário
Compartilhar em outros sites

  • 8 months later...
As aulas do colex de actions...

http://www.xtibia.com/forum/index.php?showforum=101

Nesse fórum vocês podem encontrar tópicos fixados com aulas de action by Colex.

É muito bom e ficarão scripters de verdade...

 

 

 

Putz o cara deve ter demorado pra caramba e tu chega botando umas aulas do colex no meio? Que sem graça, assim num tem nem concorrência...

@Topic

Muito bom pra iniciantes, abranje vário temas... :)

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...

nao mi ajudou =/

eu keria axar um tutorial q falava de um npc q soh teletransporta premmy players ou um jeito d fazer uma area so para premmys? alguem pode mi ajudar???

seria de muita ajuda !

Link para o comentário
Compartilhar em outros sites

Sera que ninguen pode colocar scripts de como criar um npc de criar char e pra ot 7.9 pq eu to procurando a dias e num acho !!!!

e isso aew num ajudo em nada tah meio velinho!

Link para o comentário
Compartilhar em outros sites

  • 3 months later...
×
×
  • Criar Novo...