Ir para conteúdo
Entre para seguir isso  
Mock

Pac man system

Recommended Posts

Mock    32
Mock

pacman_record_020605.jpg

 

Graças a eventide, mock, skyen hasus e Hevancio conseguimos uma area privilegiada

:D obrigado!

 

 

Nome: Pac man system

 

envolve: actions, monsters, creaturescripts

Testado em: The forgotten server 0.3.1

Autor: mock

 

 

Um sistema para garantir a diversão dos player em seu server, o pacman sistem ficou bem parecido com o real.

Para começarmos temos que seguir alguns passos.

O primeiro é definir os scripts entao vamos até actions.xml e adcionamos isso:

<action actionid="7070" script="pacman.lua"/>

Preste atenção usei o actionid 7070 verifique se nao esta em uso.

Depois na pasta scripts de actions crie o pacman.lua e adcione isto:

[b]local player_start_pos = {x=3122,y=2741,z=7}[/b]



[left][b]local arena_up = {x=3130,y=2731,z=7}[/b]
[left][b]local arena_down = {x=3114,y=2749,z=7}[/b]
[b]local monsterpos = {x=3122,y=2739,z=7}[/b]
[b]local ponsts_storage = 7071 -- Será configurado mais tarde[/b]
local function criar(posbaxo,poscima)
pos2 = posbaxo
pos1 = poscima
for x = 0, math.abs(pos1.x-pos2.x) do
for y = 0, math.abs(pos1.y-pos2.y) do
pos3 = {x = pos1.x+x, y = pos1.y-y, z = pos1.z, stackpos = 0}
--doSendMagicEffect(pos3, 3)
local coisa = getThingfromPos(pos3)
if coisa.itemid == 407 and coisa.actionid ~= 100 then
doSendMagicEffect(pos3, 1)
pos3.stackpos = 1
local coisaa = getThingfromPos(pos3)
if coisaa.itemid == 1502 or coisaa.itemid == 8058 then
doRemoveItem(coisaa.uid,1)
end
if coisa.actionid == 7071 then
doCreateItem(8058, 1, pos3)
else
doCreateItem(1502, 1, pos3)
end
end
end
end
end
function onUse(cid, item, frompos, item2, topos)
if getGlobalStorageValue(7071) == -1 then
  doTeleportThing(cid,player_start_pos)
  setPlayerStorageValue(cid,ponsts_storage, 0)
  criar(arena_up,arena_down)
  local m1 = doSummonCreature('monster',{x=monsterpos.x-1,y=monsterpos.y,z=monsterpos.z})
  local m2 = doSummonCreature('monster',{x=monsterpos.x,y=monsterpos.y,z=monsterpos.z})
  local m3 = doSummonCreature('monster',{x=monsterpos.x+1,y=monsterpos.y,z=monsterpos.z})
  setGlobalStorageValue(7071, m1)
  setGlobalStorageValue(7072, m2)
  setGlobalStorageValue(7073, m3)
  return TRUE
else
  return TRUE
end
end[/left]

[/left]

 

Salve e deiche o arquivo aberto.

Abra o seu map editor escolha uma area GRANDE e siga a foto juntamente com a esplicação da config e cores

roxy.png

Tudo bem entao vamos por linha.

Você notou que do canto de > da foto tem uma coisa com molas, você pode por o item que quiser porem ele DEVE estar com actionid 7070

Agora...

local player_start_pos = {x=1,y=2,z=7}

Você deve preencher a tabela com as posições X,Y,Z na tabela vendo pelo seu map editor onde indica o ponto vermelho.

-----------------------------------------------

local arena_up = {x=3130,y=2731,z=7}

local arena_down = {x=3114,y=2749,z=7}

Obviamente é a posição indicada pelos pontos pretos (bolas) na foto e boviamente down e bacho entao e a bola de baicho e up a de cima :o, preencha a tabela com os devidos valores de posição x y z.

-----------------------------------

local ponsts_storage = 7071

^ISSO NAO PRESISA MECHER

-------------------------------

Você deve estar vendo alguns sqms roxos na foto nesses sqms você deve por NO CHAO actionid 100

----------------------------------

Ja nos verdes você deve por actionic 7071 neles.

---------------------------------

local monsterpos = {x=3122,y=2739,z=7}

Essa é a posição da bolinha laranja.

-------------------------------------------------------

 

Bom agora tenho 99.9% de certeza que seu servidor nao usa o itemid 1502 esse é o itemid usado para simular as bolinhas que o pacman come esse id e o do firefield que nao casa dano ao player (o pequeno) quaso você notar que ele some você deve ir em itens.xml procurar o id 1502 e tirar as linhas que informan duração.

Agora vamos adcionar os movements.

Vá ate movements.xml ponha esta tag

    <movevent event="StepIn" itemid="1502" script="pacman.lua"/>


[center] <movevent event="StepIn" itemid="8058" script="pacman.lua"/>[/center]

 

Em scripts de movements crie outro pacman.lua e ponha isso dentro:

local ponsts_storage = 7071


local exti_pos = {x=3134,y=2741,z=7}
---
local function transfMonst()
local m1 = getGlobalStorageValue(7071)
       local m2 = getGlobalStorageValue(7072)
       local m3 = getGlobalStorageValue(7073)
       local p1 = getThingPos(m1)
        local p2 = getThingPos(m2)
         local p3 = getThingPos(m3)
       doRemoveCreature(m1)
       doRemoveCreature(m2)
       doRemoveCreature(m3)
       m1 = doSummonCreature('monster', p1)
       m2 = doSummonCreature('monster', p2)
       m3 = doSummonCreature('monster', p3)
        setGlobalStorageValue(7071, m1)
      setGlobalStorageValue(7072, m2)
       setGlobalStorageValue(7073, m3)
end
function onStepIn(cid, item, pos)
if isMonster(cid) == TRUE then
return TRUE
end
       if item.itemid == 8058 then
       local m1 = getGlobalStorageValue(7071)
       local m2 = getGlobalStorageValue(7072)
       local m3 = getGlobalStorageValue(7073)
       local p1 = getThingPos(m1)
        local p2 = getThingPos(m2)
         local p3 = getThingPos(m3)
       doRemoveCreature(m1)
       doRemoveCreature(m2)
       doRemoveCreature(m3)
       doRemoveItem(item.uid,1)
       m1 = doSummonCreature('monster2', p1)
       m2 = doSummonCreature('monster2', p2)
       m3 = doSummonCreature('monster2', p3)
        setGlobalStorageValue(7071, m1)
      setGlobalStorageValue(7072, m2)
       setGlobalStorageValue(7073, m3)
       addEvent(transfMonst,20000,1)
       else
       doRemoveItem(item.uid,1)
       setPlayerStorageValue(cid,ponsts_storage, getPlayerStorageValue(cid, ponsts_storage)+1)
       doSendAnimatedText(pos, getPlayerStorageValue(cid, ponsts_storage).." pts", math.random(1,255))
       end
       if getPlayerStorageValue(cid, ponsts_storage) >= 170 then
       doTeleportThing(cid,exti_pos)
       local m1 = getGlobalStorageValue(7071)
       local m2 = getGlobalStorageValue(7072)
       local m3 = getGlobalStorageValue(7073)
       doRemoveCreature(m1)
       doRemoveCreature(m2)
       doRemoveCreature(m3)
       setGlobalStorageValue(7071,-1)
       setGlobalStorageValue(7072,-1)
       setGlobalStorageValue(7073,-1)
       end
end

 

-------------------------------------

Configure:

local exti_pos = {x=3134,y=2741,z=7}

é a posição de qual o player quando perder ou ganhar vai ir.

 

----------------------------------

Agora vamos a creaturescripts :D

Adcione estas tags:

<event type="death" name="nodie2" script="imorrivel2.lua"/>

<event type="attack" name="atk" script="move.lua"/>

 

Em inmorrivel2.lua coloque isto:

function onDeath(cid, corpse, killer,killer2)

local m1 = getGlobalStorageValue(7071)
local m2 = getGlobalStorageValue(7072)
local m3 = getGlobalStorageValue(7073)
[b]local ce = {x=3122,y=2739,z=7} --- mesma posição da bolinah laranja na foto![/b]
if cid == m1 then
m1 = doSummonCreature("monster2", ce)
setGlobalStorageValue(7071, m1)
elseif cid == m2 then
m2 = doSummonCreature("monster2", ce)
setGlobalStorageValue(7072, m2)
elseif cid == m3 then
m3 = doSummonCreature("monster2", ce)
setGlobalStorageValue(7073, m3)
end
return TRUE
end

 

Em move.lua basta por isto:

[b]local exti_pos = {x=3134,y=2741,z=7}
function getDistanceToCreature(cid,cre)
local c = getCreaturePosition(cid)
local s = getCreaturePosition(cre)
return math.max(math.abs(s.x - c.x), math.abs(s.y - c.y))
end

function onAttack(cid, target)
        if getCreatureName(cid) == "monstro" and getDistanceToCreature(cid,target) == 1 then 
          doTeleportThing(target,exti_pos)
          local m1 = getGlobalStorageValue(7071)
         local m2 = getGlobalStorageValue(7072)
        local m3 = getGlobalStorageValue(7073)
        addEvent(doRemoveCreature,300,m1)
        addEvent(doRemoveCreature,300,m2)
        addEvent(doRemoveCreature,300,m3)
        setGlobalStorageValue(7071,-1)
        setGlobalStorageValue(7072,-1)
        setGlobalStorageValue(7073,-1)
        return FALSE
        end
        return TRUE
end

 

------------------

ainda falta 1 parte :/

os monsters

Basta criar 2 monsters.

crie um XML chamado monstro.xml e um chamado monster2.xml

 

Agora em monstro.xml ponha:

 

<?xml version="1.0" encoding="UTF-8"?>
<monster name="monstro" nameDescription="a monstro" race="UNDEAD" experience="60" speed="60" manacost="100">
<health now="999" max="999"/>
<look type="48" head="20" body="30" legs="40" feet="50" corpse="5993"/>
<targetchange interval="5000" chance="8"/>
<strategy attack="100" defense="0"/>
<flags>
<flag summonable="0"/>
<flag attackable="0"/>
<flag hostile="1"/>
<flag illusionable="0"/>
<flag convinceable="0"/>
<flag pushable="1"/>
<flag canpushitems="1"/>
<flag canpushcreatures="0"/>
<flag targetdistance="1"/>
<flag staticattack="90"/>
<flag runonhealth="0"/>
</flags>
<attacks>
<attack name="melee" interval="2000" skill="1" attack="1"/>
</attacks>
<defenses armor="10" defense="10"/>
<elements>
<element physicalPercent="100"/>
<element earthPercent="100"/>
<element deathPercent="100"/>
</elements>
<immunities>
<immunity lifedrain="1"/>
<immunity fire="1"/>
<immunity paralyze="1"/>
</immunities>
<voices interval="5000" chance="10">
<voice sentence="Huh!"/>
<voice sentence="Shhhhhh"/>
<voice sentence="Buuuuuh"/>
</voices>
<script>
<event name="atk"/> 
</script>
</monster>

 

 

mosnter2.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<monster name="monstro" nameDescription="a monstro" race="UNDEAD" experience="1" speed="30" manacost="100">
<health now="1" max="1"/>
<look type="319" head="20" body="30" legs="40" feet="50" corpse="0"/>
<targetchange interval="5000" chance="8"/>
<strategy attack="100" defense="0"/>
<flags>
<flag summonable="0"/>
<flag attackable="1"/>
<flag hostile="0"/>
<flag illusionable="0"/>
<flag convinceable="0"/>
<flag pushable="1"/>
<flag canpushitems="1"/>
<flag canpushcreatures="0"/>
<flag targetdistance="9"/>
<flag staticattack="90"/>
<flag runonhealth="0"/>
</flags>
<attacks>
<attack name="melee" interval="2000" skill="1" attack="1"/>
</attacks>
<defenses armor="10" defense="10"/>
<immunities>
<immunity invisible="1"/>
<immunity fire="1"/>
</immunities>
<voices interval="5000" chance="10">
<voice sentence="AHHHH!"/>
</voices>
<script>
<event name="nodie2"/> 
</script>
</monster>

 

 

Agora para fechar com chave de ouro: vá ate monsters.xml e adcione 2 tags:

   <monster name="monster" file="monstro.xml"/>


[center] <monster name="monster2" file="monster2.xml"/>[/center]


 

 

SALVE FECHE TUDO e abra seu ot :D

provavelmente como o script tem muitos passos algo pode nao funcionar corretamente na hora entao revise os passos um por um com atenção caso nao funcione pode ser algum problema no script se for poste aqui.

 

Comentarios de:

Critica

Sujestoes

Duvidas (relacionadas a isto) são bem vindas

Editado por Mock
Problemas na formatação

Compartilhar este post


Link para o post
Eventide    7
Eventide

Se fez alguma coisa errada ali na tabulação.. u.u

e no 1° code como há uma formatação, pode dar erro com alguém que pegou o code por meio deste tópico usar.. ;o

 

fora isso, acho que o teleport poderia ser feito por script e sem effect, daria um ar mais "pac man" e menos "tibia"! xD

Compartilhar este post


Link para o post
Mock    32
Mock

Eventide

se quiser te mando o .lua a tabulação ta certa isso foi problema do topico quando eu postei tinha uams 5 caxa de spoiler (eu editei nauqele modo q vc ve como ta ficando)

e a formatação nao altera n.

sim boa ideia usar um script so que ia ser mais um code pro topico x.x

Compartilhar este post


Link para o post
Scryder    0
Scryder

Legal =D

nunca vi sistema de pacman antes (so um mapa imitando pacman que nem no global)

Mas dá pra por mais de 3 bixo? (é que dai daria pra faze níveis de dificuldade =D)

Compartilhar este post


Link para o post
Deragon    25
Deragon

Malkeng

nao sei se pode responder mas

é o tile envolta dos teleports e no centro da imagem

Mock

poe como código PHP os scripts que conserva a tabulação e ainda da um efeito melhor

Compartilhar este post


Link para o post
Gpwjhlkdcf    21
Gpwjhlkdcf
Legal vo por no meu ot

Leia as regras dessa seção. Somente dúvidas, bugs ou críticas. Posts inuteis serao deletados.

 

Se persirtir sera alertado.

 

Eu, Mock e Eventide demos duro pra convencer a criação desta seção.

 

@Mock~

Não sei que erro que é, mas é bom você arrumar. Seu OT caiu quando eu tava testando o sistema de Pac-Man.

Compartilhar este post


Link para o post
Mock    32
Mock

@deargon

sim ja fiz isso e tambem arrumei 1 code de creaturescritps que dava crash no server

@all

todos os players que postarem algo que nao seje: DUVIDA, CRITICA, SUJESTAO os posts serão deletados.

Compartilhar este post


Link para o post
Deragon    25
Deragon

voce só colocou as tags como PHP, falta os scripts que tem .lua

Compartilhar este post


Link para o post
Heiderson    0
Heiderson

Desculpa-me cê estiver infrigindo qualquer regra, mas como diz o tutorial, Comentarios de:

Critica

Sujestoes

Duvidas (relacionadas a isto) são bem vindas.

 

 

Acho que falto alguma explicação para

local exti_pos = {x=3134,y=2741,z=7}

Compartilhar este post


Link para o post
Mock    32
Mock
local exti_pos = {x=3134,y=2741,z=7}

e a posição que o player vai sair quando perder ou ganhar.

Compartilhar este post


Link para o post
Sweat Survivor    0
Sweat Survivor

Ta dando esse erro:

[10/03/2009 17:10:49] Lua Script Error: [Action Interface]

[10/03/2009 17:10:49] data/actions/scripts/pacman.lua:onUse

 

[10/03/2009 17:10:49] luaDoCreateMonster(). Can not create monster: monster

[10/03/2009 17:19:13] Lua Script Error: [Action Interface]

[10/03/2009 17:19:13] data/actions/scripts/pacman.lua:onUse

 

[10/03/2009 17:19:13] luaDoCreateNpc(). Npc name(monster) not found

 

E esse:

[10/03/2009 17:22:54] Lua Script Error: [MoveEvents Interface]

[10/03/2009 17:22:54] in a timer event called from:

[10/03/2009 17:22:54] data/movements/scripts/pacman.lua:onStepIn

Editado por kikkk

Compartilhar este post


Link para o post
Mock    32
Mock
[10/03/2009 17:10:49] Lua Script Error: [Action Interface]

[10/03/2009 17:10:49] data/actions/scripts/pacman.lua:onUse

 

[10/03/2009 17:10:49] luaDoCreateMonster(). Can not create monster: monster

 

1º você nao criou o monster que o system requere os 2 tao no topico.

 

[10/03/2009 17:19:13] Lua Script Error: [Action Interface]

[10/03/2009 17:19:13] data/actions/scripts/pacman.lua:onUse

 

[10/03/2009 17:19:13] luaDoCreateNpc(). Npc name(monster) not found

2º de onde vc tiro doCreateNPC isso n existe o0

Compartilhar este post


Link para o post
Sweat Survivor    0
Sweat Survivor

Criei sim os monsters

 

Foi esse o erro que apareceu mesmo

[10/03/2009 17:19:13] Lua Script Error: [Action Interface]

[10/03/2009 17:19:13] data/actions/scripts/pacman.lua:onUse

 

[10/03/2009 17:19:13] luaDoCreateNpc(). Npc name(monster) not found

 

Ta escrito errado la se escreveu mosnter2 xD

Editado por kikkk

Compartilhar este post


Link para o post
Mock    32
Mock
[10/03/2009 17:19:13] Lua Script Error: [Action Interface]

[10/03/2009 17:19:13] data/actions/scripts/pacman.lua:onUse

 

[10/03/2009 17:19:13] luaDoCreateNpc(). Npc name(monster) not found

Isso é erro no seu TFS

eeu puis monster2 sim são 2 monsters caso você nao reparou.

Esta dando print que você quer sumonar um npc, no codigo eu puis para monster.

Compartilhar este post


Link para o post
Shyzoul    0
Shyzoul

tenho mais umas duvidas =O

 

o que é PACMAN nunca vi issu.

 

como que o player vai pra pacman.

 

é so issu ;/

Compartilhar este post


Link para o post
Mock    32
Mock

@shynzoul

cara existe um botao chamado edit.gif

nele você edita um posts. postar 2 posts e considerado flood e vc pdoe ser exilado com isso.

cara vc nunca viu pacman???

se mata x.x

brinks oia ai:

[ame]

[/ame]

Compartilhar este post


Link para o post
Shyzoul    0
Shyzoul

EUHuehUEHuehUHEuheuHEU eh

ja tinha visto issu mais não sabia o nome ;/

 

mais serio aqui em casa não aparece na imagem a bola ROXA

saca Oo'

Compartilhar este post


Link para o post
Mock    32
Mock

Não seria uma bola e sim um sqm destacado de roxo

Compartilhar este post


Link para o post
Shyzoul    0
Shyzoul

Mesmo assim não esta aparecendo nada ;/

 

Uma SS pra você ve =(

 

 

55121495.jpg

 

 

LINCK CASO NÃO APAREÇA A IMAGEM

 

Gostei disso mais não consigo acha os "sqm Roxos =((( Bah

Compartilhar este post


Link para o post
Mock    32
Mock

o0

eu to vendo varios SQMS roxos no chao x.x'

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×