vo começar a postar mini tutoriais sobre actions
hoje vo postar a 1º parte e naum vo postar tudo numa só para naum ficar embaralhada as explicações, postarei a proxima parte se eu ver ke ajudou algumas pessoas ou ke gostaram :icon1:
atenção: alguma informação errada me avise ke eu irei editar.
vo primeiru começar por dizer uma coisa antes de começar u tutor
us comandos ke eu usar "cid" ou "item2.uid" neste tutorial podem ser substituidos por otros em otros scripts, vo fazer uma lista:
- cid --- criatura
- item.uid --- item em ke se deu a ação
- item2.uid --- 2º item ke entrou na ação (por exemplo nu use with) o 1º item nosi damu "use with" e dps clicamus em cima de otro item (item2)
- ou otras variavel declarada antes por exemplo:
vou declarar a variavel umas coordenadas e dps pegar a info de um player*(explico issu noutro tuto) desse local e ver u a vocação dele...
lugar = {x=100, y=100, z=7, stackpos=253} ---- declarada a variavel LUGAR com as coordenadas (estackpos eu explico dps)lugarinfo = getThingfromPos(lugar) ---- peguei a info de creture dakelas coordenadasvoc = getPlayerVocation(lugarinfo.uid) --- peguei a vocação do player ke a var "lugarinfo" pegou a informação
----------------------------------------------------------------
agora nesta 1º parte vo fazer uma leveldoor baseada em actionid explicandu tudo passo a passo para naum haver duvidas e se houver eu tentarei responder
LevelDoor é um script facil e não contem muita dificuldades intaum sera facil ensinar
começaremos por abrir u bloco de notas e escreveremos a primeira tag de todas as actions:
function onUse(cid, item, frompos, item2, topos)
esta é a função basica das actions ke vc podera ver em todas elas, nos npcs e spells vc encontra otro tipu de funções
nesta função voce podi ver 4 "variaveis predefinidas" nas sources.
agora vamos declarar 2 variaveis em ke a 2º variavels vai conter um calculo
adicione u seguinte na continuação da tag de cima:
player = getPlayerLevel(cid) ---- variavel ke pega u level de um playerlevel = item.actionid - 1000
1º declaramos a variavel de pegar o lvl do player, claru pq nois precisamus saber u lvl du player pra ver se ele podi passar, mas fizemos o calculo subtrair o actionid do item (item.actionid) por 1000.
ja vo dizer porque isso, eu fiz isso porque us actionid para funcionar é 1000 pra cima
intaum vc coloca 1030 (como actionid) - 1000 = 30 <--- level necessario, ou seja, vc coloca nu actionid da door o level necessario mais 1000 ke dps u script vai "tirar" esses 1000 e vai saber u valor exato.
Agora vem a parte principal, u "corpo" da action, vc vaum reparar ke nas minhas actions em cada "enter" ke eu dou entre duas funções, eu clico duas vezes nu "espaço" para dexar a action mais organizado e bem mais simples na parte dus "elses":
if player >= level then doTeleportThing(cid,topos) doSendMagicEffect(topos,12)else --- else fica alinhado com u if num caso de muitos ifs istu ajuda doPlayerSendCancel(cid,"Voce necessita level "..level.." para passar.")endreturn 1end
Agora explicando:
1º de tudo vem uma expressão de "verificação" em ke usamos u "if"
akela frase traduzida para portugues ficaria +/- u seguinte:
se "player" for maior ou igual (>=) que "level" então...
se essa expressão for verdadeira a action vai teleportar o player para a posição da porta é a mesma du topos (topos = to position), issu acontece com u seguinte comando:
doTeleportThing(cid,topos)
esse comando é doTeleportTHING porque funciona com outras coisas a naum ser players
e para enfeitar a level door eu inda coloquei para aparecer um efeito no player dps de ser teleportado ke tbm é igual ao topos, para issu usamos o seguinte comando:
doSendMagicEffect(topos,12)
eu coloquei ali "12" como efeito magico, mas vc podi mudar, para vc ver us efeitos magicos entre com seu gm e diz "/z numero" sem os "".
atenção: neste comando naum utilize cid ou item2.uid use sempre algu como cordenadas ou posção por exemplo (topos, frompos, {x=10, y=256, z=7})
agora vamus ver ke caso a expressão seja falsa (o level do player naum é maior nem igual ke o level requirido) a action vai mandar uma menssagem de cancelamento para o player dizendo ke ele precisa de um certo level pra passar:
1º para issu devemos colocar "else"(senão) ou "elseif"(senão + expressão), neste caso usaremos o "else"(senão) e logo depois colocaremos o comando do ke ira acontecer:
else doPlayerSendCancel(cid,"Voce necessita level "..level.." para passar.")
esse comando faz aparecer akela msg branca na parte de baixu da tela, vcs podem ver ke eu escrevi ali ("..level..") esses ("..---..") vai passar para texto uma variavel por exemplo a variavel ke eu usei "..level..", ou até um comando por exemplo "..getPlayerName(cid).." -- este ira escrever u nome du player.
Agora só falta 2 coisas para terminar o script
1º Fechar a expressão "if"
2º fechar a função "onUse"
Para fechar a expressão usamos u simples end(terminar):
end
Para fechar a funºção usamo u return(reponder) com um valor positivo ou nulo e um end:
return 1end
Então a action ficara assim:
function onUse(cid, item, frompos, item2, topos)player = getPlayerLevel(cid)level = item.actionid - 1000if player >= level then doTeleportThing(cid,topos) doSendMagicEffect(topos,12)else --- else fica alinhado com u if num caso de muitos ifs istu ajuda doPlayerSendCancel(cid,"Voce necessita level "..level.." para passar.")endreturn 1end
Agora salve o documento do bloco de notas com nome lvldoor.LUA na pasta:
data/actions/scripts
Vai no arquivo actions.XML da pasta:
data/actions
e adicione a seguinte tag ke abrira o script ke vc fez:
<action itemid="id_da_porta" script="lvldoor.lua" />
em vez de itemid pode tbm ser usado:
- actionid
- uniqueid
mas neste caso usamos itemid
id da porta naum tem nada ke explicar (um exemplo: 1229)
script="lvldoor.lua" é u ke vai chamar u script ke vc criou com esse nome na pasta (data/actions/scripts)
e aki termina o primeiro tuto sobre actions
espero ke tenham gostado e aprendido mais algumas coisa sobre actions
se eu ver ke gostaram e ke deu pra aprender alguma coisa eu postarei us proximos tutos explicando coisas mais dificeis
Comentem u ke axam, erros e u ke naum perceberam ke eu tentarei responder
tutorial 100% by Colex