IPB

Bem-vindo, visitante ( Entrar | Registrar )

Capítulo 2: Objetos Tipo Item, Criando Itens.
Galthar, O Erran...
post Apr 22 2004, 10:16 PM
Post #1


Minhauuu!!!


Grupo: Members
Posts: 2660
Registrado: 30/04/2002
De: São Paulo, Cidade Rock 'n' Roll
Membro N°: 500



Não.. esse capítulo não tem por objetivo trocar cores de robes, nem mudar danos de armas.
Vamso animar itens, criar scripts complexos de contrução de itens e tudo mais.

PARTE I - Layers
Os personágens tem Layers (camadas) onde objetos diferentes são colocados.
Por exemplo, spellbook, armas de uma mão e essas coisas vão para a layer 1.
Scripts de 'veneno' vão para a layer 42. Sua backpack fica SEMPRE na layer 21.
Quando você dá dclick num objeto equipável, ele procura a layer onde ele deve ficar e vai pra lá.
Então eaparece o GUMP dele no seu Paperdol (alt+p é paperdoll)

Vamos pega o mesmo exemplo para todos os ítens.
i_sword_long:
QUOTE
[ITEMDEF 0f60]
DEFNAME=i_sword_long
RESOURCES=12 i_ingot_iron
TYPE=T_WEAPON_SWORD
LAYER=1
FLIP=1
DAM=5,33
SKILL=Swordsmanship
REQSTR=25
TWOHANDS=N
WEIGHT=7
CATEGORY=Provisions - Weapons
SUBSECTION=Swords
DESCRIPTION=Longsword
SKILLMAKE=BLACKSMITHING 53.8
DUPELIST=0f61

ON=@Create
HITPOINTS={31 110}

Quando vc der dclick nela, ela VAI pra leyer 1.

Você não pode alterar o GUMP dela no paperdoll (apenas por edição de multi).


--------------------
"Com toda esta polêmica a propósito da clonagem, uma grande pergunta urge colocar:
Alguém que tenha relações sexuais com o seu próprio clone, é homossexual, está a masturbar-se ou se fudeu?"

Diga não às Drogas! user posted image
Go to the top of the page
 
+Quote Post
 
Start new topic
Respostas (1 - 6)
Galthar, O Erran...
post Apr 22 2004, 11:05 PM
Post #2


Minhauuu!!!


Grupo: Members
Posts: 2660
Registrado: 30/04/2002
De: São Paulo, Cidade Rock 'n' Roll
Membro N°: 500



PARTE 2: Sections [ITEMDEF xxx] comentadas.

A Section [ITEMDEF xxx] é um objeto de script do tipo ITEM.
Ele é existente do mundo o jogo (seja visível ou não).
pode ser um canhão, uma arma, uma linha de costura, uma pedra, um portal ou o cú que seja. Nunca um NPC ou um jogador.
Cuidado! Existem objetos que tem cara de item, cheiro de item, id de item mas não são itens.
Você não pode move-los ou mesmo remove-los.
São ITENS mas não estão no WORLDFILE* do seu Sphere e sim no SATICS0.MUL. As arvores por exemplo...
Voce pode tentar remover uma árvoe, mas não vai conseguir. Só editando o mul você pode fazer isso.

Os criadores do Sphere acharam melhor por os ITEMDEFs com nomes da ID do item. Por isso que a espada se chama 0f60.
0f60 é o código da PIC da espada (conhecido como ID).
Quer ver?
Baixe e intale o InsideUO.
Você vai usa-lo muitas vezes. Configure-o direitinho se não não abre.
Na parte de ArtWork e na guia Static Tiles, procure o 0f60.
BINGO!
Desenhinho da Longsword!

Não é bom você criar ITEMDEFs com números como nome. Isso fará o antigo ITEMDEF ser sobrescrito quando o Sphere abre. (ele vai continuar no aquivo .scp dele bonitinho, mas se vc der um .add nele, virá o novo).
A maioria dos scriptsrs (todos que eu conheço) colocam o DEFNAME como nome do ITEMDEF.
Isso quer dizer que, se você for fazer um item, ponha a ITEMDEF da seguinte maneira:
[ITEMDEF i_espada_justiceira]

Vamos para o ITEMDEF comentado:
QUOTE
[ITEMDEF 0f60]
DEFNAME=i_sword_long
RESOURCES=12 i_ingot_iron
TYPE=T_WEAPON_SWORD
LAYER=1
FLIP=1
DAM=5,33
SKILL=Swordsmanship
REQSTR=25
TWOHANDS=N
WEIGHT=7
CATEGORY=Provisions - Weapons
SUBSECTION=Swords
DESCRIPTION=Longsword
SKILLMAKE=BLACKSMITHING 53.8
DUPELIST=0f61

ON=@Create
HITPOINTS={31 110}


--====Cabeçalho====--

DEFNAME=i_sword_long: Defname tem o mesmo sentido da [SKILL X] que já falamos. Para adicionar a espada lonfa no mundo diga .add i_sword_long.
Para criar uma via script é assim:
SRC.NEWITEM=i_sword_long
SRC.ACT.BOUNCE

NAME=Longsword: Não foicolocada neste script, pois a ID 0f60 já tem um nome Hard Codded. Mas você pode por.

RESOURCES=12 i_ingot_iron: Quando o jogador utilizar o Blacksmithing para criar este item (somente pelo sistema de BS Hard Codded), ele vai antes testar pra ver se o jogador (SRC) tem 12 ingots de ferro e ao fazer a espada, vai consumir isso da backpack (layer 21) do jogador.

TYPE=T_WEAPON_SWORD: TYPE é legal. TYPE é o comportamento de script que o item tem. É no TYPE que esta guardado que qunado der dclick vai equipar e chamar a skill LUMBERJACKING (pra tirar kindling das árvores), que fica um comando que diz que na luta, vai dar dano, fica que quando ela fica velha se quebra e essas coisas. O SPhere tem MUITAS Types. Mas vc tb pode fazer as suas =-) Para se aprofundar nos TYPEs, visite o compêndio de SPhere 0.55 do Taran. Nos vamos se aprofundar neles mais pra frente.

LAYER=1: Já falei.

DAM=5,33: Quando o CONT acertar um golpe, vai dar um dano entre 5 e 33 (só funcina pra TYPE=t_weapon_*)

SKILL=Swordsmanship: É a skill que ele vai testar para tentar dar o golpe (só funcina pra TYPE=t_weapon_*)

REQSTR=25: Se o SRC não tiver 25 ou mais de STR, não pode equipar. Vai pra bag.

TWOHANDS=N: Se o TWOHANDS for igual a Y (ou 1), você não pode equipar nada na mão esquerda (layer 2) se equipar este. Não fica nada na layer 2, mas ele não deixa equipar nada se este item for de duas mãos.

WEIGHT=7: Peso (em stones) que tem este item. Se ele estiver em qualquer layer do personagem, mesmo na backpack (layer 21), este peso será somado no peso total do char, aumentando o rete de perda de stamina e se o peso total do char passar de um certo número, ele não pode se mover ou pegar mais qualquer coisa.

CATEGORY=Provisions - Weapons
SUBSECTION=Swords
DESCRIPTION=Longsword

Para referência do Axis. Procure no axis a categoria, subseção e descrição dele.

SKILLMAKE=BLACKSMITHING 53.8: Para fazer este item, é tastada a perícia Blacksmithing. Ele rola um número entre 1 e a sua skill Blacksmithing. Se este número for MAIOR que 53.8, você tem sucesso.

DUPELIST=0f61: Coisinha do mau mad.gif
Isso afirma que existe um outro item de ID=0f61 que possui as exatas mesmas características deste aqui. Mas para isso ser efetivado, você precisa criar um ITEMDEF como este a seguir:
CODE
[ITEMDEF 0f61]
//longsword
DUPEITEM=0f60


--====Trigges====--

ON=@Create: Quando este item for criado, o sphere executa linha por linha o script abaixo.
No nosso caso:
HITPOINTS={31 110} É o tanto de pancada que este item aguenta em combate.

eek.gif O Sphere compreende {} como um gerador aleatóreo. Um {0 1000} por exemplo vai resultar em um número qualquer entre 0 e 1000.

Se você quer fazer uma espada com nome e cor diferente, o @Create é o trigger certo.
CODE
on=@Create
color=026
name=espada vermelha do clitores sagrado


TODOS OS ITEMDEFs tem os seguintes Triggers:
@Create
@Death
@TIMER
@DClick
@Click
@Pickup
@Step (não só quando vc pisa, mas a cada segundo q vc está em cima)
@DropOn_Item (quando você jogar em cima de outro item)
@DropOn_Char
@DropOn_Self (quando você jogar em cima de vc ou no seu paperdoll)

ITEMDEFs de t_weapon_* tem mais esses:
@GetHit (quando a arma toma um dano)
@HitTry (quando o dono da arma tenta bater em alguém, antes de fazer testes e rolar danos)
@HitMiss (quando o dono erra)
@Hit (quando o dono acerta)


*WORLDFILE: Arquivo sphereworld.scp que fica na pasta SAVE. Nele consta todos os itens que tem no mundo e são dinâmicos como objeto de script.


--------------------
"Com toda esta polêmica a propósito da clonagem, uma grande pergunta urge colocar:
Alguém que tenha relações sexuais com o seu próprio clone, é homossexual, está a masturbar-se ou se fudeu?"

Diga não às Drogas! user posted image
Go to the top of the page
 
+Quote Post
Galthar, O Erran...
post Apr 22 2004, 11:54 PM
Post #3


Minhauuu!!!


Grupo: Members
Posts: 2660
Registrado: 30/04/2002
De: São Paulo, Cidade Rock 'n' Roll
Membro N°: 500



Parte 3 - Brincado com itens

Chega de blablabla, né caramba! Vamos botar pra rodar!

Vamos fazer uma espada, transparente, que dê um dano generoso, mas que quando bate, faz uns efeitos visuais legais.

Primeiro vamos cuidar dos efeitos visuais.

Vamos criar um objeto tipo item, que parece uma coluna de fogo, mas é transparente e quando você pisa toma um dano bacana.

QUOTE
[ITEMDEF i_fogo_sagrado]
ID=i_fx_firecolumn //procure isso pelo FIND do Axis. É uma animação.
TYPE=t_script //isso serve pro sphere não amolar com scripts hard codded
NAME=fogo do bem

on=@create
color=04fffff //cor de nada. transparente.

on=@Step
SRC.DAMAGE {1 5} 0204 //SRC tomará um dano de 1 a 5 do tipo GELO (0200) e do tipo MÁGICO (0004)
RETURN 1 //Isso barra qualquer outro script Hard Codded


Lindio!
Agora vamos para a espada:
CODE
[ITEMDEF i_espada_gelo]
ID=i_sword_long //faz sentido?
//DEFNAME=pra que isso? Pode chamar peo ITEMDEF q atende...
RESOURCES=20 i_ingot_iron, 30 i_sulforus_ash
TYPE=T_WEAPON_SWORD
LAYER=1
FLIP=1
DAM=25,42
SKILL=Swordsmanship
REQSTR=3
TWOHANDS=N
WEIGHT=2
CATEGORY=Testes
SUBSECTION=Espadas
DESCRIPTION=Espada de gelo
SKILLMAKE=BLACKSMITHING 100.0

ON=@Create
HITPOINTS={110 1110}
color=04fffff //cor de nada. transparente.

on=@Hit
if ({1 10}==1)//testesinho básico... Nada de mais. 10% de chance de acontecer.
 CONT.NEWITEM i_fogo_sagrado
 CONT.NEW.P=<SRC.P> //?????????
 CONT.NEW.ATTR=012 //quando expirar o tempo, ela vai sumir(002), e tb ng pode mexer nela (010).
 CONT.NEW.TIMER=3 //Ela vai contar 3 segundos e sumir
endif


Cabeçalho e crete beleza mas...
CONT?
<SRC.P>???
JC responde:
CONT não é o container? o container dele não é o Player? (É SIM! tá dentro do player!)

CONT.NEWITEM i_fogo_sagrado: Jogador, produza um Fogo do bem.
Onde vai por o fogo do bem? Ele já existe, mas não esta no mapa. Pod procurar ae q ele não tá nomapa, mas eu asseguro que ele existe.
Mas pq o CONT tem q criar o item?
Porque só CHARS (NPCs ou PCs) podem criar itens. Itens não podem criar itens.

Agora vem o detalhe:
No trigger @Hit, o SRC não é o jogador...
No trigger @Hit, o SRC é a FONTE do hit. o ALVO. SRC agora é o cara que tá apanhando!

Prosseguindo...
CONT.NEW.P=<SRC.P>: Jogador, pegue o fogo do bem e ponha a posição dele = a posição do cara que tá apanhamdo.

Tá, e porque os <>???
Wel...
Voltando ao primário:
PRIMEIRO MEMBRO: CONT.NEW.P
SEGUNDO MEMBRO: <SRC.P>

eek.gif SEMPRE que o segundo membo de uma igualdade for uma VARIÁVEL (P, MORE, TAG, UID, VAR, COLOR...) ele tem de estar entre <>.

Prosseguindo...
CONT.NEW.ATTR=012
ATTR= Atributos.
Abra o Axis e vá na guia Item Tweak.
Selecione os Attributes Decay e Never Movable.
Olha lá!!! Apareceu um 0012!
Decay: Quando o timer dele chegar a zero, ele some
Never Movable: Ninguém (exceto GMs) pode tirar ele do lugar.


CONT.NEW.TIMER=3
Em 3 segundo ele vai dar Decay (a menos que tenha um @Timer dizendo o contrário).

Agora vai brinca, muleke!
E se não funcionou, fassa funcionar!


--------------------
"Com toda esta polêmica a propósito da clonagem, uma grande pergunta urge colocar:
Alguém que tenha relações sexuais com o seu próprio clone, é homossexual, está a masturbar-se ou se fudeu?"

Diga não às Drogas! user posted image
Go to the top of the page
 
+Quote Post
Galthar, O Erran...
post Apr 25 2004, 10:11 PM
Post #4


Minhauuu!!!


Grupo: Members
Posts: 2660
Registrado: 30/04/2002
De: São Paulo, Cidade Rock 'n' Roll
Membro N°: 500



Capitulo II - Objetos tipo Item (Parte 4)
Triggers


Trigger do inglês é GATILHO.
Objetos diferentes podem ter triggers diferentes (ou iguais em alguns casos).
Um Trigger é uma parte de script que determina como o objeto se comportará em uma dada situação. O que acontece se arrastarmos ele, o que acontece se clicarmos nele, o que acontece se dermos um duplo click nele...

eek.gif Só objetos podem ter trigger! Scripts puros não tem triggers! Não tentem por triggers em uma FUNCTION, num MENU num DIALOG ou essas coisas! O único script puro que tem trigger é o EVENTS (e seus irmãos SKILLCLASS, SKILL, SPELL...) e o único objeto que não tem trigger é o SECTOR! Lembre-se sempre disto!

ITEMs e seus Triggers

Uma SECTION [ITEMDEF xxx] é composta por:
ITEMDEF
Cabeçalho
Triggers

ITEMDEF é o só a linha que chama a section.
Cabeçalho é a parte onde agente põe a ID inicial, o Nome, o TYPE, o DAM (dano das armas), a layer (de itens quipaveis) e mais algumas coisas que não cabe citar aqui.
Triggers é a parte FUNCIONAL do ITEM. É como vamos scriptar o comportamento do item.

Algumas vezes, os Triggers são dispenssaveis, pois estão compilados em um script puro que atribuimos ao item. Este script puro é o TYPE.
Olhe qualquer script de arma. Como o Sphere sabe que ele tem que dar um dano igual ao DAM? E como o Sphere sabe que ele é equipado na Layer 1?
Esta linha nos garante isso:
QUOTE
TYPE=T_WEAPON_SWORD

Existe, hard codded, uma section dentro do SphereSrv.exe que tem todos os triggers desta Type. Você pode adiocionar mais triggers se quiser, ou barrar as Hard Codded. Este 'curso' é voltado para a parte de BARRAR os triggers Hard Codded e criar novos, dando ao UO uma jogabilidade diferente da OSI.

eek.gif Você não pode adicionar mais de um TYPE no mesmo ITEM!!! (mas voc^epode trocar o Type)

Explicando os Triggers dos ITEMs.

on=@DClick
Após este trigger, você põe o que quer que acontessa quando alguem dar um duplo click no item.

OBJETOS:
<nada> ou I: retorna como objeto o próprio item.
SRC: Quem clicou.

QUOTE
[ITEMDEF i_espada_do_mau]
ID=i_sword_long
NAME=Espada
TYPE=t_weapon_sword
VALUE=10000

on=@dclick
src.suicide
remove
return 1

Engraçado... icon_rofl.gif

on=@Click
Após este trigger, você põe o que quer que acontessa quando alguem dar um click simples no item.
De fábrica, todos os itens ao ser clicados mostram seu nome para quem clicou.
Dar um RETURN 1 no final deste trigger significa que ele não vai mostrar su nome (pelo menos não pelo SCP Hard Codded)

OBJETOS:
<nada> ou I: O próprio item
SRC: quem clicou

QUOTE
[ITEMDEF i_espada_do_mau]
ID=i_sword_long
NAME=Espada
TYPE=t_weapon_sword
VALUE=10000

on=@dclick
src.suicide
remove
return 1

on=@click
message <name> (parece uma coisa ruin)
return 1


Aqui eu dei um geito de mostraro nome dele e uma mensagem a mais, quando você clica uma vez só nele.
MESSAGE seria um SAY particular.
Ninguém, alem do SRC vai ver esta mensagem.

on=@TIMER
MUUUUITO importante!
Você sempre pode atribuir um CRONÔMETRO interno a um ITEM. É o nosso uqerido, amado e idolatrado TIMER.
Assim que este timer chegar a 0, o trigger @Timer vai disparar.

eek.gif Sempre que o Timer chegar 0, o Sphere vai querer fazer ele rodar o script Hard Codded do DECAY. Se você não setar os atributos de DECAY, CAN DECAY ou STATIC no ITEM, uma menssagem de erro por falta de DECAY vai aparecer no seu console do Sphere e o item não vai sumir por DECAY. Se você não quer que isso acontessa (60% dos casos dos scripters) fassa o on=@timer retornar 1 no final.

OBJETOS:
@Timer não tem SRC.
SRC=Source. Então quem é a fonte do timer? Quem fez ele chegar a 0? Não tem lógica certo.
Só pra não esquecer... Errr... @Timer não tem SRC.
<nada> ou I: O próprio Item
SRC: Hey, cara chato! Já falei que @timer Não Tem SRC caramba! Eu sei que você vai cair nessa, eu sei, EU SEI!
Quer afetar o jogador??? Se isto for uma memory ou qq objeto equipado, use CONT! Se não linque o ITEM como jogador e comande o LINK!

NOTA: Todos se ferram com uma coisa que ainda não comentei. @TImer não tem SRC, tá? Os scripters inesperientes sempre tentam colocar um SCRzinho no @Timer, mas não funciona. @Timer não tem SRC.


QUOTE
[ITEMDEF i_espada_do_mau]
ID=i_sword_long
NAME=Espada
TYPE=t_weapon_sword
VALUE=10000

on=@dclick
timer=5
say Esta espada sumira em 5 segundos
return 1

on=@click
message <name> (parece uma coisa ruin)
return 1

on=@timer
remove
return 1


on=@Step
Interessante... O que acontesse se PISARMOS no item? BOOM??? Ele quebra? O cara que pisou fica envenenado? Hum...

eek.gif Quando você pisar no item, naturalmente este script roda. MAS... A cada segundo que você permanecer em cima dele, o @Step vai rodar de novo!!!

OBJETOS:
SRC: Quem pisou
<nada> ou I: Ela mesma

QUOTE
[ITEMDEF i_espada_do_mau]
ID=i_sword_long
NAME=Espada
TYPE=t_weapon_sword
VALUE=10000

on=@dclick
src.suicide
remove
return 1

on=@click
message <name> (parece uma coisa ruin)
return 1

on=@step
say Voce pisou em mim!
Say Vou sumir em 5 segundos!
timer 5
return 1

on=@timer
remove
return 1


on=@Create
Esse trigger dispara quando o ítem for criado.

Não tem objetos a não ser ele mesmo (I ou <nada>)

eek.gif NUNCA retorne 1 neste trigger! Isso 'pode' fazer com que ele não seja criado (não é 100% das vezes)

QUOTE
[ITEMDEF i_espada_do_mau]
ID=i_sword_long
NAME=Espada
TYPE=t_weapon_sword
VALUE=10000

on=@create
color=026
name=<name> vermelha //no final fica 'Espada vermelha'

on=@dclick
src.suicide
remove
return 1

on=@click
message <name> (parece uma coisa ruin)
return 1

on=@step
say Voce pisou em mim!
Say Vou sumir em 5 segundos!
timer 5
return 1

on=@timer
remove
return 1


(já comentei o caso de que @Timer não tem SRC?)

ON=@DAMAGE
Isso quer dizer que o ITEM perdeu HITPOINTS. Não são todos os itens que tem HITPOINTS, então não adianta por este trigger num portal ou numa porta. (a manos que você fassa um scripte que derrube portas). Isso é mais pra armas, roupas e armaduras...

OBJETOS:
SRC: Quem provocou o dano

QUOTE
[ITEMDEF i_espada_do_mau]
ID=i_sword_long
NAME=Espada
TYPE=t_weapon_sword
VALUE=10000

on=@create
color=026
name=<name> vermelha //no final fica 'Espada vermelha'

on=@dclick
src.suicide
remove
return 1

on=@click
message <name> (parece uma coisa ruin)
return 1

on=@Damage
cont.sysmessage <name> foi danificada por <src.name>.

on=@step
say Voce pisou em mim!
Say Vou sumir em 5 segundos!
timer 5
return 1

on=@timer
remove
return 1




--------------------
"Com toda esta polêmica a propósito da clonagem, uma grande pergunta urge colocar:
Alguém que tenha relações sexuais com o seu próprio clone, é homossexual, está a masturbar-se ou se fudeu?"

Diga não às Drogas! user posted image
Go to the top of the page
 
+Quote Post
Galthar, O Erran...
post Apr 25 2004, 11:16 PM
Post #5


Minhauuu!!!


Grupo: Members
Posts: 2660
Registrado: 30/04/2002
De: São Paulo, Cidade Rock 'n' Roll
Membro N°: 500



ON=@Destroy
Esse aqui dispara quando o item for removido do Worldfile. Fassa o que quizer com isso. Acho que eu nunca usei esse trigger.

O interessante é o obvio. Se você retornar 1, ela não some =-)

OBJETOS:
<nada> ou I: Ela mesma

QUOTE
[ITEMDEF i_espada_do_mau]
ID=i_sword_long
NAME=Espada
TYPE=t_weapon_sword
VALUE=10000

on=@create
color=026
name=<name> vermelha //no final fica 'Espada vermelha'

on=@dclick
src.suicide
remove
return 1

on=@click
message <name> (parece uma coisa ruin)
return 1

on=@Damage
cont.sysmessage <name> foi danificada.

on=@step
say Voce pisou em mim!
Say Vou sumir em 5 segundos!
timer 5
return 1

on=@timer
remove
return 1

on=@Destroy
serv.allclients sysmessage Nossa querida <name> foi destruida... Um minuto de silencio...


ON=@DROPON_CHAR
Isso dispara quando você tenta arrastar este item para alguem.

OBJETOS:
SRC: CHAR no qual você esta arrantando o ITEM.
<nada> ou I: Ela mesma.

QUOTE
[ITEMDEF i_espada_do_mau]
ID=i_sword_long
NAME=Espada
TYPE=t_weapon_sword
VALUE=10000

on=@create
color=026
name=<name> vermelha //no final fica 'Espada vermelha'

on=@dclick
src.suicide
remove
return 1

on=@click
message <name> (parece uma coisa ruin)
return 1

on=@Damage
cont.sysmessage <name> foi danificada.

on=@step
say Voce pisou em mim!
Say Vou sumir em 5 segundos!
timer 5
return 1

on=@timer
remove
return 1

on=@dropon_char
if (<src.body>==c_man)
src.sysmessage <name> não gosta de homens. Ela quer ficar com seu antigo dono.
return 1
else
return 0 //Oposto de RETURN 1. COntinua a fazer o que deveria
endif

on=@Destroy
serv.allclients sysmessage Nossa querida <name> foi destruida... Um minuto de silencio...


ON=@DROPON_GROUND
O que acontece se jogarmos ela no chão???

OBJETOS:
<nada> ou I: Ela mesma

QUOTE
[ITEMDEF i_espada_do_mau]
ID=i_sword_long
NAME=Espada
TYPE=t_weapon_sword
VALUE=10000

on=@create
color=026
name=<name> vermelha //no final fica 'Espada vermelha'

on=@dclick
src.suicide
remove
return 1

on=@click
message <name> (parece uma coisa ruin)
return 1

on=@Damage
cont.sysmessage <name> foi danificada.

on=@step
say Voce pisou em mim!
Say Vou sumir em 5 segundos!
timer 5
return 1

on=@timer
remove
return 1

on=@dropon_char
if (<src.body>==c_man)
src.sysmessage <name> não gosta de homens. Ela quer ficar com seu antigo dono.
return 1
else
return 0 //Oposto de RETURN 1. COntinua a fazer o que deveria
endif

on=@dropon_ground
say Hey! Este chão está frio!!!
//Par anão gastar MAIS UM return 0, você pode deixar sem. Dá no mesmo.

on=@Destroy
serv.allclients sysmessage Nossa querida <name> foi destruida... Um minuto de silencio...


ON=@EQUIP
É o que acontesse quando equipamos o item.
Hard codded, ela passa a ocupar a LAYER que o cabeçalho ou o TYPE aponta.

OBJETOS:
SRC: Quem está equipando
<nada> ou I: Ela mesma

Retornar 1 faz ela não ser equipada.

QUOTE
[ITEMDEF i_espada_do_mau]
ID=i_sword_long
NAME=Espada
TYPE=t_weapon_sword
VALUE=10000

on=@create
color=026
name=<name> vermelha //no final fica 'Espada vermelha'

on=@dclick
src.suicide
remove
return 1

on=@click
message <name> (parece uma coisa ruin)
return 1

on=@Damage
cont.sysmessage <name> foi danificada.

on=@step
say Voce pisou em mim!
Say Vou sumir em 5 segundos!
timer 5
return 1

on=@timer
remove
return 1

on=@dropon_char
if (<src.body>==c_man)
src.sysmessage <name> não gosta de homens. Ela quer ficar com seu antigo dono.
return 1
else
return 0 //Oposto de RETURN 1. COntinua a fazer o que deveria
endif

on=@equip
src.say GRAURRRR!!!
src.sysmessage Voce se sente fodamente foda!
src.str=<src.str>+30

on=@dropon_ground
say Hey! Este chão está frio!!!
//Par anão gastar MAIS UM return 0, você pode deixar sem. Dá no mesmo.

on=@Destroy
serv.allclients sysmessage Nossa querida <name> foi destruida... Um minuto de silencio...


on=@UNEQUIP

Dispenso maiores comentários, né???

Retornar 1 faz ela continuar equipada.

QUOTE
[ITEMDEF i_espada_do_mau]
ID=i_sword_long
NAME=Espada
TYPE=t_weapon_sword
VALUE=10000

on=@create
color=026
name=<name> vermelha //no final fica 'Espada vermelha'

on=@dclick
src.suicide
remove
return 1

on=@click
message <name> (parece uma coisa ruin)
return 1

on=@Damage
cont.sysmessage <name> foi danificada.

on=@step
say Voce pisou em mim!
Say Vou sumir em 5 segundos!
timer 5
return 1

on=@timer
remove
return 1

on=@dropon_char
if (<src.body>==c_man)
src.sysmessage <name> não gosta de homens. Ela quer ficar com seu antigo dono.
return 1
else
return 0 //Oposto de RETURN 1. COntinua a fazer o que deveria
endif

on=@equip
src.say GRAURRRR!!!
src.sysmessage Voce se sente fodamente foda!
src.str=<src.str>+30

on=@unequip
src.say *voz de biba*
src.say Aiiiiii!!!
src.sysmessage Voce broxou.
src.str=<src.str>-30

on=@dropon_ground
say Hey! Este chão está frio!!!
//Par anão gastar MAIS UM return 0, você pode deixar sem. Dá no mesmo.

on=@Destroy
serv.allclients sysmessage Nossa querida <name> foi destruida... Um minuto de silencio...




--------------------
"Com toda esta polêmica a propósito da clonagem, uma grande pergunta urge colocar:
Alguém que tenha relações sexuais com o seu próprio clone, é homossexual, está a masturbar-se ou se fudeu?"

Diga não às Drogas! user posted image
Go to the top of the page
 
+Quote Post
Galthar, O Erran...
post Apr 25 2004, 11:26 PM
Post #6


Minhauuu!!!


Grupo: Members
Posts: 2660
Registrado: 30/04/2002
De: São Paulo, Cidade Rock 'n' Roll
Membro N°: 500



on=@Dropon_Item
Igual o @Dropon_Char, mas serve pra itens.

OBJETOS:
<nada> o I: Ela mesma
SRC: Quem esta arrastando ela.
SRC.ATC: O objeto q vc esta tentando jogar ela.

QUOTE
[ITEMDEF i_espada_do_mau]
ID=i_sword_long
NAME=Espada
TYPE=t_weapon_sword
VALUE=10000

on=@create
color=026
name=<name> vermelha //no final fica 'Espada vermelha'

on=@dclick
src.suicide
remove
return 1

on=@click
message <name> (parece uma coisa ruin)
return 1

on=@Damage
cont.sysmessage <name> foi danificada.

on=@step
say Voce pisou em mim!
Say Vou sumir em 5 segundos!
timer 5
return 1

on=@timer
remove
return 1

on=@dropon_char
if (<src.body>==c_man)
src.sysmessage <name> não gosta de homens. Ela quer ficar com seu antigo dono.
return 1
else
return 0 //Oposto de RETURN 1. COntinua a fazer o que deveria
endif

on=@dropon_item
if (<src.act.more1>!=<more1>)
  src.say Isto nao se encaixa em <src.act.name>.
  return 1
endif

on=@equip
src.say GRAURRRR!!!
src.sysmessage Voce se sente fodamente foda!
src.str=<src.str>+30

on=@unequip
src.say *voz de biba*
src.say Aiiiiii!!!
src.sysmessage Voce broxou.
src.str=<src.str>-30

on=@dropon_ground
say Hey! Este chão está frio!!!
//Par anão gastar MAIS UM return 0, você pode deixar sem. Dá no mesmo.

on=@Destroy
serv.allclients sysmessage Nossa querida <name> foi destruida... Um minuto de silencio...


ON=@PICKUP_GROUND
Quando você pega ela do chão.

OBJETOS:
SRC: Quem está pegando
<nada> ou I: Ela mesma

CURIOSIDADE: Sabia que on=@Timer não tem SRC?

ON=@PICKUP_PACK
Quando você pega ela da sua Backback.

OBJETOS:
SRC: Quem está pegando
<nada> ou I: Ela mesma

ON=@TARGON_CHAR; ON=@TARGON_GROUND; ON=@TARGON_ITEM
São uma outra história.

ANTEÇÃO!!!
ON=@TIMER NÃÃÃÃÃÃÃO TEEEEEEEEMMM SRC!!!


--------------------
"Com toda esta polêmica a propósito da clonagem, uma grande pergunta urge colocar:
Alguém que tenha relações sexuais com o seu próprio clone, é homossexual, está a masturbar-se ou se fudeu?"

Diga não às Drogas! user posted image
Go to the top of the page
 
+Quote Post
Galthar, O Erran...
post Apr 26 2004, 07:03 AM
Post #7


Minhauuu!!!


Grupo: Members
Posts: 2660
Registrado: 30/04/2002
De: São Paulo, Cidade Rock 'n' Roll
Membro N°: 500



Capitulo II - Objetos tipo Item (Parte 5)
Targs e @Targon_*


Vou criar um script de modelo para explicar o funcionamento dos TARGS.

Uma coisa importante que eu já disse mas vale a pena ser repetida, é que só objetos tipo ITEM podem @Targon_*. Não ponha em DIALOGs, MENUs, FUNCTIONs e etc.

Vamos criar uma zarabatana, dardos e vamos fazer o cara jogar setinhas venenosas.

QUOTE
[ITEMDEF i_dardo_venenoso]
ID=01020 //ID da pena
TYPE=t_script
NAME=seta venenosa
SKILLMAKE=CARPENTRY 50.0
RESOURCES=1 i_feather, 2 i_bottle_green

on=@DClick
TARGET Onde deseja utilizar esta seta?
return 1

on=@Targon_char
src.sysmessage Voce nao pode jogar o dardo diretamente em uma pessoa.
src.sysmessage Utilize-o numa zarabatana.
return 1

on=@Targon_ground
src.sysmessage Voce nao pode jogar o dardo nisto.
src.sysmessage Utilize-o numa zarabatana.
return 1

on=@Targon_Item
if (<src.targ.BaseID>==i_zarabatana)
  if (<src.targ.more1>==1)
    src.sysmessage Esta zarabatana ja esta carregada.
    return 1
  else
    src.targ.more1=1
    if (<amount>==1)
      remove
    else
    amount=<amount>-1
  endif
  endif
else
  src.sysmessage Isso nao eh uma zarabatana.
endif
return 1

on=@Dropon_Item
if (<src.act.BaseID>==i_zarabatana)
  if (<src.act.more1>==1)
    src.sysmessage Esta zarabatana ja esta carregada.
    return 1
  else
    src.act.more1=1
    if (<amount>==1)
      remove
    else
      amount=<amount>-1
      update
    endif
  endif
endif


Comentando o @Dropon_Item.
Eu preciso de uma variável para guardar o estado da zarabatana para saber se ela já foi carregada ou não.
Todo o item tem uma variável chamada more1, que dependendo do TYPE tem um uso diferente. Mas como estou fazendo um item que não tem script Hard Codded (t_script) eu posso usar o more1 pra qualquer coisa que eu quizer.
Então, se a zarabatana tiver more1=1, ela está carregada. Se ela tiver more1=0, ela está descarregada.
if (<src.act.BaseID>==i_zarabatana)
Se o objeto que estou arrastando a seta for uma zarabatana, esta linha segue para a proxima linha. Se não for uma zarabatana, o script continua a correr a partir do ultimo ENDIF.
if (<src.act.more1>==1)
Se a variável more1 da zarabatana estiver em 1, corre a proxima linha. Caso contrário, vai para o ELSE deste bloco de IF (se não tivesse ELSE aqui, ele correria para o ENDIF).
src.sysmessage Esta zarabatana ja esta carregada.
return 1

O SRC (jogador) vai receber uma mensagem cinza no canto inferior esquerdo da tela dizendo 'Esta zarabatana ja esta carregada.'
Depois vai fingir que nada aconteceu e parar o script (return 1)
else
if (<amount>==1)
remove
else
amount=<amount>-1
update
endif
src.act.more1=1

Caso o nosso ultimo IF tenha falahado, ele vai executar as linhas entre o ELSE e o ENDIF deste bloco de IF.
Isso fará o jogador consumir uma seta venenosa e fazer com que o more1 da zarabatana fique 1.
Este tipo de script consome a seta em QUALQUER LUGAR. Mesmo se ele estiver usando a seta no chão. É diferente do 'SRC.CONSUME 1 i_dardo_venenoso' que só consumiria o dardo se estivesse na backpack.
A partir deste momento, se tentarmos colocar outra seta, ele vai dizer que a zarabatana já está carregada.
endif
endif

Fecha os dois blocos de IF.

QUOTE
[ITEMDEF i_zarabatana]
ID=0f8a //ID da pena
TYPE=t_script
NAME=zarabatana
SKILLMAKE=CARPENTRY 50.0
RESOURCES=1 i_LOG

on=@DClick
if (<more1>==1)
Target Atirar em quem?
else
src.sysmessage Esta descarregada...
endif
return 1

on=@Targon_char
more1=0
src.targ.effect 0 i_xbolt_x 16 16 0
src.targ.spelleffect s_poison, 300
return 1


O entendimento deste fica pra lição de casa tongue.gif
Outras dúvidas vão surgir com este script.
Conforme as duvidas aparecerem nos outros tópicos, vou esclarecendo e explicando melhor aqui.


--------------------
"Com toda esta polêmica a propósito da clonagem, uma grande pergunta urge colocar:
Alguém que tenha relações sexuais com o seu próprio clone, é homossexual, está a masturbar-se ou se fudeu?"

Diga não às Drogas! user posted image
Go to the top of the page
 
+Quote Post

Closed TopicStart new topic
1 usuário(s) está(ão) lendo este tópico (1 visitantes e 0 usuários anônimos)
0 membros:

 

Modos de Exibição: Mudar para: Padrão · Linear+ · Mudar para: Outline


Versão Simples Horário: 25th May 2013 - 07:19 PM