Ir para conteúdo
Entre para seguir isso  
SubythKiller

Presence diary[8.6]

Recommended Posts

SubythKiller    2
SubythKiller

Nome: Presence diary

Versão: 8.60

Ultilidade: O player que atingir tal level, poderá pegar 1 presence diary por dia...

Exemplo: eu peguei level 200, ai todos os dias posso chegar no npc e pegar meu presente, dentro deste presente, ao dar use, poderei ganhar 10 tipos de itens random. Só poderei pegar 1 presence diary por dia...

 

[spoiler=V 1.0]

- [ARRUMADO] apenas 1 item por dia - às 00:00 o npc é resetado e os players poderam pegar os items novamente

- [ARRUMADO] apenas [tal level] poderá pegar o item por dia

 

 

[spoiler=V 2.0]

- [CRIADO] Pagina para gesior sobre o presence diary

- [CRIADO] Npc além de dar presence diary, irá dar também experiencia ao jogador

 

 

Vamos ao que intereça, a instalação é a melhor parte!

 

Primeiro, crie um arquivo com extenção .lua em SeuOtServ\data\npc\scripts com o nome Present, abra-o como bloco de notas e adicione isto:

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function onCreatureAppear(cid)                npcHandler:onCreatureAppear(cid)            end
function onCreatureDisappear(cid)            npcHandler:onCreatureDisappear(cid)            end
function onCreatureSay(cid, type, msg)            npcHandler:onCreatureSay(cid, type, msg)        end
function onThink()                    npcHandler:onThink()                    end

function creatureSayCallback(cid, type, msg)
   if(not npcHandler:isFocused(cid)) then
       return false
   end

   local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
   ---------------- config msg ------------------
   local frase1 = 'Present'  -- (Player) -- Present --
   local frase2 = 'Presente'  -- (Player) -- caixa --
   local frase3 = 'You want present now?'-- Npc)  -- voce quer agora? --
   local frase4 = 'yes' -- (Player) -- yes --
   local frase5 = 'Sorry, you alrealy gained.' -- (Npc) -- voce ja ganhou por hj --
   local frase6 = 'here this and be happy' -- (Npc) -- aqui esta e seja feliz --
   local frase7 = 'no' -- (Player) -- nao --
   local frase8 = 'ok then picks up later' -- (Npc) -- ok entao pega mais tarde --
   local frase9 = 'Desculpe, apenas players acima do level 100 podem receber o presente ' -- (Npc) -- caso nao tenha lvl 100 + --
   local storage = 3333 -- storage que define o dia nao mexa a nao ser que saiba ps: use uma storage que nao esteja sendo usada =D--
   local itemid = 7722 -- Present Diary --
   ----------------------------------------------
   if getPlayerLevel(cid) <= 99 then
   selfSay(frase9, cid)
   return TRUE
   end
   if (msgcontains(msg, frase1) or msgcontains(msg, frase2)) and getPlayerStorageValue(cid, storage) == tonumber(string.sub(os.date(),4,5)) then
               selfSay(frase5, cid)
   elseif(msgcontains(msg, frase1) or msgcontains(msg, frase2)) then
       selfSay(frase3, cid)
       talkState[talkUser] = 1
   elseif(msgcontains(msg, frase4) and talkState[talkUser] == 1) then
           selfSay(frase6, cid)
           setPlayerStorageValue(cid, storage, tonumber(string.sub(os.date(),4,5)))
           doPlayerAddItem(cid, itemid)
       talkState[talkUser] = 0
   elseif(msgcontains(msg, frase7) and isInArray({1}, talkState[talkUser]) == TRUE) then
       talkState[talkUser] = 0
       selfSay(frase8, cid)
       end
   return TRUE
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Configurando [TUTORIAL]

 

[spoiler=Clique Aqui]Frase1 = Oque o player irá falar ao npc

Frase2 = Outra fala, podendo ser a frase 1 ou 2

Frase3 = Oque o npc fala ao player depois da frase 1 e 2

Frase4 = Oque o player fala depois da frase 3

Frase5 = Oque o npc fala quando o player já recebeu o presente de hoje

Frase6 = Oque o npc fala quando o player recebe o presente

Frase7 = Oque o player fala caso não queira receber o presente

Frase8 = Oque o npc fala caso o player fale não

Frase9 = Oque o npc fala se o player não tiver o level necessario

 

local storage = 3333 = Storage value que o npc da ao player todos os dias

(PS: quando chega 00:00, o script reseta a storage)

local itemid = 7722 = ID do item (presence diary)

 

if getPlayerLevel(cid) <= 99 then

É o level minimo do player [99] para receber o presence diary

 

 

Agora em SeuOtServ\otserv\data\npc crie um arquivo com extensão .xml e abra-o como bloco de notas, adicione isto dentro:

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Present Diary" script="Present.lua" walkinterval="2000" floorchange="0">
   <health now="100" max="100"/>
   <look type="128" head="17" body="54" legs="114" feet="0" addons="3"/>
   <parameters>
       <parameter key="message_greet" value="Hello |PLAYERNAME|, I am a Present diary! Say {present} to receive your gift today."/>
   </parameters>
</npc>

 

Modifique a roupa dele aqui:

   <look type="128" head="17" body="54" legs="114" feet="0" addons="3"/>

 

ScreenShot do número das cores

numerocoroutfit.png

 

 

Agora em MeuOtServ\otserv\data\actions\scripts crie um arquivo com extensão .lua e com o nome marca_presensa e abra-o como bloco de notas, adicione:

function onUse(cid, item, fromPos, itemEx, toPos)


items = 


{


[0] = {id = 146, count = 1, chance = 1, name = "Zombie Ring"},


[1] = {id = 117, count = 1, chance = 5, name = "Super Soft Boots"},


[2] = {id = 116, count = 1, chance = 10, name = "Stamina Potion"},


[3] = {id = 2160, count = 30, chance = 50, name = "300k"}


}


for i = 0, #items do


if (items[i].chance >= math.random(1, 100)) then


doRemoveItem(item.uid, 1)


doPlayerAddExp(cid,1000000) 						


doPlayerAddItem(cid, items[i].id, items[i].count)


doBroadcastMessage("De acordo com as fontes confiaveis: O player " ..getPlayerName(cid).. " Acabou De Adiquirir " ..items[i].name.. " no Presence Diary.", 22)


return TRUE


end


end


end

 

Configuração[Tutorial]

 

[spoiler=Clique Aqui]doPlayerAddExp(cid,1000000)

Experiencia que o jogador irá ganhar após abrir o presente

 

[0] = {id = 146, count = 1, chance = 1, name = "Zombie Ring"},

[1] = {id = 117, count = 1, chance = 5, name = "Super Soft Boots"},

[2] = {id = 116, count = 1, chance = 10, name = "Stamina Potion"},

[3] = {id = 2160, count = 30, chance = 50, name = "300k"}

Item que o player irá ganhar randomicamente...

[Pode almentar conforme queira]

 

 

Agora em MeuOtServ\otserv\data\actions abra o actions.xml como bloco de notas e adicione:

     <action itemid="7722"  script="marca_presensa.lua"/>

Agora salve e feche...

 

Va em SeuOtServ\otserv\data\items e abra o items.xml como bloco de notas, procure pelo ID 7722 e modifique para:

   <item id="7722" article="a" name="presence diary" plural="presence diarys">
       <attribute key="description" value="Use no item... Item valioso que apenas os verdadeiros guerreios possuem." />
       <attribute key="weight" value="10000" />
   </item>

 

Salve e feche, agora vamos partir para o website (caso não tenha um website, pode parar por aqui, adicionar minha rep+ caso queira)

 

Vá em xampp\htdocs e crie um arquivo com extesão .php e nome present, abra-o como bloco de notas e adicione:

<HTML> 
<HEAD> 
<TITLE>
<?php
   $main_content .= '
   <h1><center><b>Presença Diária<h1></center></b>
<table width="100%" cellspacing=1 cellpadding=4 border="0">
 <tr bgcolor="'.$config['site']['vdarkborder'].'">
   <th align="left">Legenda</th>
 </tr>
 <tr bgcolor="'.$config['site']['darkborder'].'">
   <td align="left" valign="top">
   <ul>
   <li>
   <strong>
   Você terá a oportunidade de participar da Missão de Presença Diária obtida com a NPC Fiscal de Presença, ganhando recompensas diárias. São dez tipos de recompensas, então se programe para não perder nenhum dia do evento em busca da recompensa máxima!
   </strong>
   </li>
     <br>
     <li>
   <strong>
     Essa é uma missão especial que fica disponível temporariamente de tempos em tempos. Basta já ter alcançado no mínimo o nível 200 para poder participar. Você pode repetir a missão diariamente e acumular prêmios.</td>
   </strong>
   </li>
   </ul>
 </tr>
</table>
<br>
<table width="100%" cellspacing=1 cellpadding=4 border="0">
 <tr bgcolor="'.$config['site']['vdarkborder'].'">
   <th width="100%">Como participar?</th>
 </tr>
</table>
<table cellspacing=1 cellpadding=4 width="100%" border="0">
 <tr bgcolor="'.$config['site']['darkborder'].'" align="center">
   <td width="100%" align="center"><strong>Primeiro, você precisa falar com o NPC Fiscal de Presença localizado próximo ao "NPC DE RINGS" na cidade principal de Draconia para pegar a Missão. Lembrando que você só pode pegar essa Missão uma vez por dia.</strong></td>
 </tr>
</table>
<br>
<table width="100%" cellspacing=1 cellpadding=4 border="0">
 <tr bgcolor="'.$config['site']['vdarkborder'].'">
   <th width="100%">E qual é essa recompensa?</th>
 </tr>
</table>
<table cellspacing=1 cellpadding=4 width="100%" border="0">
 <tr bgcolor="'.$config['site']['darkborder'].'" align="center">
   <td width="100%" align="center"><strong>Todo dia que você completar a Missão, vai receber um pacote de itens. Abaixo listarei os items disponiveis possiveis de dropar no "presencia diaria".</strong></td>
 </tr>
</table>
<br>
<table width="100%" cellspacing=1 cellpadding=4 border="0">
 <tr bgcolor="'.$config['site']['vdarkborder'].'">
   <th width="33%">Item</th>
   <th width="33%">Chance de droop</th>
 </tr>
</table>
<table cellspacing=1 cellpadding=4 width="100%" border="0">
 <tr bgcolor="'.$config['site']['darkborder'].'" align="center">
   <td width="33%" align="center"><strong>100k</strong></td>
   <td width="33%"><strong>10%</strong></td>
 </tr>
 <tr bgcolor="'.$config['site']['lightborder'].'" align="center">
   <td width="33%"><strong>Magic Plate Armor</strong></td>
   <td width="33%"><strong>10%</strong></td>
 </tr>
 <tr bgcolor="'.$config['site']['darkborder'].'" align="center">
   <td width="33%"><strong>Boots Of Haste</strong></td>
   <td width="33%"><strong>10%</strong></td>
 </tr>
 <tr bgcolor="'.$config['site']['lightborder'].'" align="center">
   <td width="33%"><strong>Demon Shield</strong></td>
   <td width="33%"><strong>10%</strong></td>
 </tr>
 <tr bgcolor="'.$config['site']['darkborder'].'" align="center">
   <td width="33%"><strong>Frozen Starlight</strong></td>
   <td width="33%"><strong>10%</strong></td>
 </tr>
 <tr bgcolor="'.$config['site']['lightborder'].'" align="center">
   <td width="33%"><strong>Annihilation Bear</strong></td>
   <td width="33%"><strong>10%</strong></td>
 </tr>
 <tr bgcolor="'.$config['site']['darkborder'].'" align="center">
   <td width="33%"><strong>Piece Of Draconian Steel</strong></td>
   <td width="33%"><strong>10%</strong></td>
 </tr>
 <tr bgcolor="'.$config['site']['lightborder'].'" align="center">
   <td width="33%"><strong>Golden Legs</strong></td>
   <td width="33%"><strong>10%</strong></td>
 </tr>
 <tr bgcolor="'.$config['site']['darkborder'].'" align="center">
   <td width="33%"><strong>Crown</strong></td>
   <td width="33%"><strong>10%</strong></td>
 </tr>
 <tr bgcolor="'.$config['site']['lightborder'].'" align="center">
   <td width="33%"><strong>Goldfish Bowl</strong></td>
   <td width="33%"><strong>10%</strong></td>
 </tr>
</table>
<br>
<p align="right">
Page Present By: <a href="mailto:[email protected]">Weslley</a>

   ';
?>
</TITLE> 
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1"> 
</HEAD>

 

Agora em xampp\htdocs\layouts\tibiacom adicione isto, pode ser em baixo de poll

<a href='?subtopic=present'>
 <div id='submenu_present' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'>
   <div class='LeftChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div>
   <div id='ActiveSubmenuItemIcon_present' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div>
   <div class='SubmenuitemLabel'>Presence diary</div>
   <div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div>
 </div>
</a>
</div>
</div>

 

Agora va em xampp\htdocs Procure por index.php, abra e adicione(caso tenha colocado em baixo de poll, pode colocar aqui também...)

       case "present":
               $topic = "Present Diary";
               $subtopic = "present";
               include("present.php");
       break;

 

Tutorial terminado =9

Ficou cansado? imagina eu >.<

Creditos: 100% eu

 

-- Edit --

Edite os items da pagina present.php, pois lá possui 10 items, diferente dos que se ganham no present diary, edite também o presenca_diaria.lua em action, pois tem items editados que não devem existir no seu items.xml

Compartilhar este post


Link para o post
iuniX    4
iuniX

Bem legal a ideia. Alguns erros bobos nos scripts, mas nada que vá fazer eles não funcionarem.

 

 

Obrigado pela contribuição, aprovado e movido.

Compartilhar este post


Link para o post
xxgustavorx    0
xxgustavorx

Bem legal,

obrigado pela colaboração.

Compartilhar este post


Link para o post
SubythKiller    2
SubythKiller
Bem legal,

obrigado pela colaboração.

 

Nada :P

Fico feliz que tenha gostado, principalmente da ídeia, e obrigado!

Compartilhar este post


Link para o post
Biozard    0
Biozard

Bom script ate...obrigado

poderia melhorar ele, e com essa modificação ele da o item e a exp?

Compartilhar este post


Link para o post
Ribas1574    1
Ribas1574

Muito bom, muito bom mesmo...

Obrigado por compartilhar, estou usando :D

Compartilhar este post


Link para o post
tigerx2    1
tigerx2
Vamos ao que intereça, a instalação é a melhor parte!

parei aqui,

não precisava de página no gesior e os caralho, afinal é bem simples.

Compartilhar este post


Link para o post
SubythKiller    2
SubythKiller
parei aqui,

não precisava de página no gesior e os caralho, afinal é bem simples.

 

Sim, sei que não precisava, mais não custou nada colocar, afinal, players que entrariam no website, poderiam ver este tal evento e saber +/- como funciona...

Compartilhar este post


Link para o post
Kekezito_LHP    1
Kekezito_LHP

Teria Como Coloca Pra Semanal Ao Enves de Diario ?

Compartilhar este post


Link para o post
Llol    0
Llol

Cara, aqui quando eu falo para ele "Present" ele n responde nda, como eu arrumo isso?

Compartilhar este post


Link para o post
Asould Acalaylaa    5
Asould Acalaylaa

Aonde que faz o NPC "resetar" às 00:00? Parabens.

Compartilhar este post


Link para o post
SubythKiller    2
SubythKiller
Cara, aqui quando eu falo para ele "Present" ele n responde nda, como eu arrumo isso?

 

Você deve ter feito a instalação errada, tente instalar corretamente, ou intão poste uma screenshot do distro se tiver algum erro lá...

 

Teria Como Coloca Pra Semanal Ao Enves de Diario ?

 

Desculpe, mais eu não sei como criar em semanal, apenas em diario pois não fica tão grande o time.

 

Aonde que faz o NPC "resetar" às 00:00? Parabens.

 

Ele reseta altomaticamente.. Você não precisa se preocupar com ele "resetar".

Compartilhar este post


Link para o post
vedovi    0
vedovi

estava pensando num script assim mais era em questbox mais esse ai ta bom pakas.

Compartilhar este post


Link para o post
Lyon    3
Lyon

Mandou bem SubythKiller,parabéns pela criatividade cara!!

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.

×