Ir para conteúdo

Markin

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    Markin recebeu reputação de GuiAmaro em Gui's place - Show oFF   
    que saudade de mappear :c 
    -----------------------------------
     
    seus mapas estão lindos!
     
    Achei muito bacana este aqui:



  2. Obrigado
    Markin recebeu reputação de GiMZ3ro em NPC Dicer   
    Bom dia jovens, graças ao grande Omega eu consegui terminar o código do NPC Dicer, a função para checar o gold foi feita por ele então deem um beijo nele
    O NPC é parecido com aqueles BOTS que ficam no tibia global em yalahar normalmente, você joga uma quantia em gold e fala L ou H também pode ser Low ou High e com sorte pode ganhar o dobro da quantia apostada, exemplo:
     
    Eu vou lá jogo 20k na mesa e falo Low, caso caia nos números 1, 2 ou 3 eu irei ganhar o dobro da quantia que eu apostei que no foi 20k, mas se cair nos números 4, 5 ou 6 eu iria perder esses 20k.
    O High é a mesma coisa porém ao contrario, se eu falo High e cair nos numero 4, 5 ou 6 eu ganho o dobro da quantia que eu apostei e se cair no 1, 2 ou 3 eu perderia tudo.
     
    Crie um arquivo em data/npc com o nome dicer.xml e adicione isso dentro:
    <?xml version="1.0"?> <npc name="Dicer" script="data/npc/scripts/dicer.lua" walkinterval="1000" floorchange="0"> <health now="100" max="100"/> <look type="132" head="114" body="0" legs="0" feet="114" addons="3"/> <parameters> <parameter key="message_greet" value="Ola {|PLAYERNAME|}, caso queria tentar a sorte diga {L} ou {Low} para apostar nos numeros {1}, {2} ou {3} ||| {H} ou {High} para apostar nos numeros {4}, {5} ou {6}!" /> </parameters> </npc> Agora vá até data/npc/scripts e crie um arquivo com o nome dicer.lua e adicione isso dentro:
    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 local coins = {[2148] = 1, [2152] = 100, [2160] = 10000} function countMoneyOnPos(pos) local money = 0 for stack = 1, 50 do pos.stackpos = stack local item = getThingFromPos(pos) if item and item.uid > 0 then if coins[item.itemid] then money = money + coins[item.itemid] * item.type end end end return money end local posCoal = {x = 169, y = 58, z = 7} -- POSIÇÃO DO COAL, ONDE O GOLD DEVE ESTAR local posNpc = {x = 193, y = 45, z = 7} -- POSIÇÃO DO NPC local pos = getPosByDir(getThingPos(cid), getCreatureLookDirection(cid), 1) -- NÃO ALTERAR if msgcontains(msg, 'l') or msgcontains(msg, 'L') or msgcontains(msg, 'low') or msgcontains(msg, 'Low') then if countMoneyOnPos(pos) > 0 then if math.random(1, 6) <= 3 then doPlayerAddMoney(cid, countMoneyOnPos(pos)*2) doRemoveItem(getTileItemById(pos, 2148).uid) repeat until not doRemoveItem(getTileItemById(pos, 2148).uid) doRemoveItem(getTileItemById(pos, 2152).uid) repeat until not doRemoveItem(getTileItemById(pos, 2152).uid) doRemoveItem(getTileItemById(pos, 2160).uid) repeat until not doRemoveItem(getTileItemById(pos, 2160).uid) doSendMagicEffect(posNpc, 26) doSendMagicEffect(posNpc, 28) doCreatureSay(getNpcId(), getCreatureName(cid)..' tirou o numero '..math.random(1, 3)..', parabéns!', TALKTYPE_ORANGE_1) else doRemoveItem(getTileItemById(pos, 2148).uid) repeat until not doRemoveItem(getTileItemById(pos, 2148).uid) doRemoveItem(getTileItemById(pos, 2152).uid) repeat until not doRemoveItem(getTileItemById(pos, 2152).uid) doRemoveItem(getTileItemById(pos, 2160).uid) repeat until not doRemoveItem(getTileItemById(pos, 2160).uid) doSendMagicEffect(posNpc, 2) doSendMagicEffect(posNpc, 26) doCreatureSay(getNpcId(), getCreatureName(cid)..' tirou o numero '..math.random(4, 6)..', tente novamente!', TALKTYPE_ORANGE_1) end else doCreatureSay(getNpcId(), getCreatureName(cid)..', coloque uma quantia de gold no recipiente para começar a apostar!', TALKTYPE_ORANGE_1) end elseif msgcontains(msg, 'h') or msgcontains(msg, 'H') or msgcontains(msg, 'high') or msgcontains(msg, 'High') then if countMoneyOnPos(pos) > 0 then if math.random(1, 6) <= 3 then doPlayerAddMoney(cid, countMoneyOnPos(pos)*2) doRemoveItem(getTileItemById(pos, 2148).uid) repeat until not doRemoveItem(getTileItemById(pos, 2148).uid) doRemoveItem(getTileItemById(pos, 2152).uid) repeat until not doRemoveItem(getTileItemById(pos, 2152).uid) doRemoveItem(getTileItemById(pos, 2160).uid) repeat until not doRemoveItem(getTileItemById(pos, 2160).uid) doSendMagicEffect(posNpc, 26) doSendMagicEffect(posNpc, 28) doCreatureSay(getNpcId(), getCreatureName(cid)..' tirou o numero '..math.random(4, 6)..', parabéns!', TALKTYPE_ORANGE_1) else doRemoveItem(getTileItemById(pos, 2148).uid) repeat until not doRemoveItem(getTileItemById(pos, 2148).uid) doRemoveItem(getTileItemById(pos, 2152).uid) repeat until not doRemoveItem(getTileItemById(pos, 2152).uid) doRemoveItem(getTileItemById(pos, 2160).uid) repeat until not doRemoveItem(getTileItemById(pos, 2160).uid) doSendMagicEffect(posNpc, 2) doSendMagicEffect(posNpc, 26) doCreatureSay(getNpcId(), getCreatureName(cid)..' tirou o numero '..math.random(1, 3)..', tente novamente!', TALKTYPE_ORANGE_1) end else doCreatureSay(getNpcId(), getCreatureName(cid)..', coloque uma quantia de gold no recipiente para começar a apostar!', TALKTYPE_ORANGE_1) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Você deve fazer alterações nesta parte:
    local posCoal = {x = 169, y = 58, z = 7} -- POSIÇÃO DO COAL, ONDE O GOLD DEVE ESTAR local posNpc = {x = 193, y = 45, z = 7} -- POSIÇÃO DO NPC Aconselhável montar uma área pro npc ficar idêntica a da fotos para não bugar o código, o coal() deve sempre ficar na frente do player pois a função ira chegar o gold a frente do player.
     
     
    Ao falar Hi

     
     
    Npc verificando que não tem gold no coal

     
     
    Vencendo uma aposta

     
     
    Perdendo uma aposta

     
    Créditos:
    Markin(Anne)
    Omega pela função de checar o gold
  3. Curtir
    Markin recebeu reputação de Maarkiin em [Gesior AAC] Most Creature Killers   
    Bom, hoje fiquei um bom tempo para achar este conteúdo que eu acho que vale a pena estar neste fórum... Eu achei ele neste fórum porém o tópico que ele foi postado esta tudo bagunçado contendo apenas CTRL+C e CTRL+V(este aqui)...
    --------------------------------------------------------------------------------------------------------------------
    A função deste código é mostrar em uma pagina de seu site um ranking em que mostra quem matou a maior quantidade de determinados monstros...  Eu particularmente acho muito bom este sistema.
     
    Imagem de exemplo:

    --------------------------------------------------------------------------------------------------------------------
     
    Crie um arquivo dentro da pasta htdocs com o nome countKill.php e adicione isso dentro:
    <?php /* Scrip by zonet */ $kills = $config['site']['creatureKills']; $limit = $config['site']['creatureKillShowLimit']; $main_content .= '<table border="0px" cellspacing="1px" cellpadding="4px" width="100%"> <tr bgcolor="#505050" style="color: white;"><th width="10%">Creature</th><th>Creature name</th><th>Most Killer ( '.$limit.' )</th></tr>'; $row = 1; foreach($kills as $name => $storage) { $qa = $SQL->query('SELECT `player_storage`.`player_id`, `player_storage`.`key`, `player_storage`.`value` AS `value`, `players`.`id`, `players`.`name` AS `name` FROM `player_storage` LEFT JOIN `players` ON `player_storage`.`player_id` = `players`.`id` WHERE `player_storage`.`key` = '.$storage.' ORDER BY ABS(value) DESC LIMIT '.$limit)->fetchAll(); $color = ( $row % 2 ? $config['site']['darkborder'] : $config['site']['lightborder']); $row++; $main_content .= '<tr bgcolor="'.$color.'"><td><img src="/images/monsters/'.(str_replace(" ", "" , $name)).'.gif"></td><td width="20%" style="font-size: 13pt; font-weight: bold; color: darkorange;"><center>'.(ucfirst($name)).'</center></td><td>'; $a = 0; foreach( $qa as $q ) { $a++; if($a == 1) $main_content .= '<font color="green">'; if($a == $limit) $main_content .= '<font color="red">'; if($a == $limit/2) $main_content .= '<font color="darkorange">'; $main_content .= '<b>'.$a.'. Name:</b> <a href="?subtopic=characters&name='.urlencode($q['name']).'">'.$q['name'].'</a> (Kills: '.$q['value'].') </font></font></font><br />'; } } $main_content .= '</td></table>'; ?> Em htdocs/config abra o arquivo config.php e adicione a seguinte linha no final:
    $config['site']['creatureKillShowLimit'] = 6; $config['site']['creatureKills'] = array('dragon' => 9541, 'dragon lord' => 9542, 'frost dragon' => 9543, 'wyrm' => 9544, 'demon' => 9545); Agora abra o arquivo index.php que fica dentro da pasta htdocs e logo abaixo desta parte:
    case "killstatistics"; $topic = "Last Kills"; $subtopic = "killstatistics"; include("killstatistics.php"); break; Adicione isso:
    case "countkill"; $topic = "Count Kills"; $subtopic = "countkill"; include("countKill.php"); break; Em htdocs/layouts/tibiacom abra o arquivo layouts.php e logo abaixo disto:
    <a href='index.php?subtopic=killstatistics'> <div id='submenu_killstatistics' 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_killstatistics' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo "$layout_name"; ?>/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'>Last Kills</div> <div class='RightChain' style='background-image:url(<?PHP echo "$layout_name"; ?>/images/general/chain.gif);'></div> </div> </a> Adicione isso:
    <a href='index.php?subtopic=countkill'> <div id='submenu_countkill' 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_killstatistics' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo "$layout_name"; ?>/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'>Count Kills</div> <div class='RightChain' style='background-image:url(<?PHP echo "$layout_name"; ?>/images/general/chain.gif);'></div> </div> </a> Bom a parte do website esta pronta, vamos para o servidor agora!
    Em creaturescripts/scripts crie um arquivo com o nome count.lua e adicione isso dentro:
    local monsters = { ["dragon"] = 9541, ["dragon lord"] = 9542, ["frost dragon"] = 9543, ["wyrm"] = 9544, ["demon"] = 9545, } function onKill(cid, target) if(isPlayer(target) ~= true and isPlayer(cid)) then local name = getCreatureName(target) local monster = monsters[string.lower(name)] if(monster) then local killedMonsters = getPlayerStorageValue(cid, monster) if(killedMonsters < 0) then killedMonsters = 1 end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You killed " .. killedMonsters .. " " .. name .. "'s.") setPlayerStorageValue(cid, monster, killedMonsters + 1) end end return true end Em creaturescripts abra o arquivo creaturescripts.xml e adicione isso dentro:
    <event type="kill" name="countKill" event="script" value="count.lua"/> Em creaturescripts/scripts abra o arquivo login.lua e adicione esta tag:
    registerCreatureEvent(cid, "countKill") Pronto, o sistema foi instalado, agora vamos configurar!
    Para adicionar novos monstros basta modificar esta parte no código lua em creaturescripts:
    local monsters = { ["dragon"] = 9541, ["dragon lord"] = 9542, ["frost dragon"] = 9543, ["wyrm"] = 9544, ["demon"] = 9545, } E nesta parte em layouts.php
    $config['site']['creatureKillShowLimit'] = 6; $config['site']['creatureKills'] = array('dragon' => 9541, 'dragon lord' => 9542, 'frost dragon' => 9543, 'wyrm' => 9544, 'demon' => 9545); Tópico original: Aqui
    Créditos: Zonet
  4. Curtir
    Markin recebeu reputação de Maarkiin em (Resolvido)[AJUDA] erro de servidor por uma script   
    usa esse aqui:
    local config = { positions = { ["Hunts"] = { x = 1024, y = 908, z = 5 }, ["Vocation"] = { x = 1033, y = 909, z = 5 }, ["Konoha"] = { x = 11, y = 794, z = 7 }, ["Retornar"] = { x = 395, y = 1223, z = 7 } } } function onThink(cid, interval, lastExecution) for text, pos in pairs(config.positions) do doSendAnimatedText(pos, text, math.random(1, 255)) end return TRUE end globalevents.xml
    <globalevent name="tpmensagem1" interval="2100" script="tlpmenssage.lua"/>
  5. Curtir
    Markin recebeu reputação de Maarkiin em NPC Dicer   
    Bom dia jovens, graças ao grande Omega eu consegui terminar o código do NPC Dicer, a função para checar o gold foi feita por ele então deem um beijo nele
    O NPC é parecido com aqueles BOTS que ficam no tibia global em yalahar normalmente, você joga uma quantia em gold e fala L ou H também pode ser Low ou High e com sorte pode ganhar o dobro da quantia apostada, exemplo:
     
    Eu vou lá jogo 20k na mesa e falo Low, caso caia nos números 1, 2 ou 3 eu irei ganhar o dobro da quantia que eu apostei que no foi 20k, mas se cair nos números 4, 5 ou 6 eu iria perder esses 20k.
    O High é a mesma coisa porém ao contrario, se eu falo High e cair nos numero 4, 5 ou 6 eu ganho o dobro da quantia que eu apostei e se cair no 1, 2 ou 3 eu perderia tudo.
     
    Crie um arquivo em data/npc com o nome dicer.xml e adicione isso dentro:
    <?xml version="1.0"?> <npc name="Dicer" script="data/npc/scripts/dicer.lua" walkinterval="1000" floorchange="0"> <health now="100" max="100"/> <look type="132" head="114" body="0" legs="0" feet="114" addons="3"/> <parameters> <parameter key="message_greet" value="Ola {|PLAYERNAME|}, caso queria tentar a sorte diga {L} ou {Low} para apostar nos numeros {1}, {2} ou {3} ||| {H} ou {High} para apostar nos numeros {4}, {5} ou {6}!" /> </parameters> </npc> Agora vá até data/npc/scripts e crie um arquivo com o nome dicer.lua e adicione isso dentro:
    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 local coins = {[2148] = 1, [2152] = 100, [2160] = 10000} function countMoneyOnPos(pos) local money = 0 for stack = 1, 50 do pos.stackpos = stack local item = getThingFromPos(pos) if item and item.uid > 0 then if coins[item.itemid] then money = money + coins[item.itemid] * item.type end end end return money end local posCoal = {x = 169, y = 58, z = 7} -- POSIÇÃO DO COAL, ONDE O GOLD DEVE ESTAR local posNpc = {x = 193, y = 45, z = 7} -- POSIÇÃO DO NPC local pos = getPosByDir(getThingPos(cid), getCreatureLookDirection(cid), 1) -- NÃO ALTERAR if msgcontains(msg, 'l') or msgcontains(msg, 'L') or msgcontains(msg, 'low') or msgcontains(msg, 'Low') then if countMoneyOnPos(pos) > 0 then if math.random(1, 6) <= 3 then doPlayerAddMoney(cid, countMoneyOnPos(pos)*2) doRemoveItem(getTileItemById(pos, 2148).uid) repeat until not doRemoveItem(getTileItemById(pos, 2148).uid) doRemoveItem(getTileItemById(pos, 2152).uid) repeat until not doRemoveItem(getTileItemById(pos, 2152).uid) doRemoveItem(getTileItemById(pos, 2160).uid) repeat until not doRemoveItem(getTileItemById(pos, 2160).uid) doSendMagicEffect(posNpc, 26) doSendMagicEffect(posNpc, 28) doCreatureSay(getNpcId(), getCreatureName(cid)..' tirou o numero '..math.random(1, 3)..', parabéns!', TALKTYPE_ORANGE_1) else doRemoveItem(getTileItemById(pos, 2148).uid) repeat until not doRemoveItem(getTileItemById(pos, 2148).uid) doRemoveItem(getTileItemById(pos, 2152).uid) repeat until not doRemoveItem(getTileItemById(pos, 2152).uid) doRemoveItem(getTileItemById(pos, 2160).uid) repeat until not doRemoveItem(getTileItemById(pos, 2160).uid) doSendMagicEffect(posNpc, 2) doSendMagicEffect(posNpc, 26) doCreatureSay(getNpcId(), getCreatureName(cid)..' tirou o numero '..math.random(4, 6)..', tente novamente!', TALKTYPE_ORANGE_1) end else doCreatureSay(getNpcId(), getCreatureName(cid)..', coloque uma quantia de gold no recipiente para começar a apostar!', TALKTYPE_ORANGE_1) end elseif msgcontains(msg, 'h') or msgcontains(msg, 'H') or msgcontains(msg, 'high') or msgcontains(msg, 'High') then if countMoneyOnPos(pos) > 0 then if math.random(1, 6) <= 3 then doPlayerAddMoney(cid, countMoneyOnPos(pos)*2) doRemoveItem(getTileItemById(pos, 2148).uid) repeat until not doRemoveItem(getTileItemById(pos, 2148).uid) doRemoveItem(getTileItemById(pos, 2152).uid) repeat until not doRemoveItem(getTileItemById(pos, 2152).uid) doRemoveItem(getTileItemById(pos, 2160).uid) repeat until not doRemoveItem(getTileItemById(pos, 2160).uid) doSendMagicEffect(posNpc, 26) doSendMagicEffect(posNpc, 28) doCreatureSay(getNpcId(), getCreatureName(cid)..' tirou o numero '..math.random(4, 6)..', parabéns!', TALKTYPE_ORANGE_1) else doRemoveItem(getTileItemById(pos, 2148).uid) repeat until not doRemoveItem(getTileItemById(pos, 2148).uid) doRemoveItem(getTileItemById(pos, 2152).uid) repeat until not doRemoveItem(getTileItemById(pos, 2152).uid) doRemoveItem(getTileItemById(pos, 2160).uid) repeat until not doRemoveItem(getTileItemById(pos, 2160).uid) doSendMagicEffect(posNpc, 2) doSendMagicEffect(posNpc, 26) doCreatureSay(getNpcId(), getCreatureName(cid)..' tirou o numero '..math.random(1, 3)..', tente novamente!', TALKTYPE_ORANGE_1) end else doCreatureSay(getNpcId(), getCreatureName(cid)..', coloque uma quantia de gold no recipiente para começar a apostar!', TALKTYPE_ORANGE_1) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Você deve fazer alterações nesta parte:
    local posCoal = {x = 169, y = 58, z = 7} -- POSIÇÃO DO COAL, ONDE O GOLD DEVE ESTAR local posNpc = {x = 193, y = 45, z = 7} -- POSIÇÃO DO NPC Aconselhável montar uma área pro npc ficar idêntica a da fotos para não bugar o código, o coal() deve sempre ficar na frente do player pois a função ira chegar o gold a frente do player.
     
     
    Ao falar Hi

     
     
    Npc verificando que não tem gold no coal

     
     
    Vencendo uma aposta

     
     
    Perdendo uma aposta

     
    Créditos:
    Markin(Anne)
    Omega pela função de checar o gold
  6. Gostei
    Markin recebeu reputação de alexzika em [8.60] HollisterOT Baiak + Site + DB = Sem Erros na Distro   
    negativado por desmerecer o trabalho de outros membros.
  7. Gostei
    Markin recebeu reputação de tsoad12 em [PEDIDO] NPC vocation   
    arquivo.xml
    <?xml version="1.0"?> <npc name="Daniel" script="data/npc/scripts/setvocation.lua" walkinterval="1000" floorchange="0"> <health now="100" max="100"/> <look type="133" head="114" body="119" legs="132" feet="114" addons="3"/> <parameters> <parameter key="message_greet" value="Ola {|PLAYERNAME|}, voce pode se transformar em um {sorcerer}, {druid}, {paladin} ou {knight}." /> </parameters> </npc> setvocation.lua
    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 local storage = 67413 if msgcontains(msg, 'sorcerer') then if getPlayerStorageValue(cid, storage) == -1 then doPlayerSetVocation(cid, 1) doSendMagicEffect(getPlayerPosition(cid), 28) doPlayerSetStorageValue(cid, storage, 1) selfSay('Parabéns {'..getPlayerName(cid)..'} agora você é um {'..getPlayerVocation(cid)..'}!', cid) else selfSay('Desculpe {'..getPlayerName(cid)..'} mais você já tem uma vocação!', cid) end elseif msgcontains(msg, 'druid') then if getPlayerStorageValue(cid, storage) == -1 then doPlayerSetVocation(cid, 2) doSendMagicEffect(getPlayerPosition(cid), 28) doPlayerSetStorageValue(cid, storage, 1) selfSay('Parabéns {'..getPlayerName(cid)..'} agora você é um {'..getPlayerVocation(cid)..'}!', cid) else selfSay('Desculpe {'..getPlayerName(cid)..'} mais você já tem uma vocação!', cid) end elseif msgcontains(msg, 'paladin') then if getPlayerStorageValue(cid, storage) == -1 then doPlayerSetVocation(cid, 3) doSendMagicEffect(getPlayerPosition(cid), 28) doPlayerSetStorageValue(cid, storage, 1) selfSay('Parabéns {'..getPlayerName(cid)..'} agora você é um {'..getPlayerVocation(cid)..'}!', cid) else selfSay('Desculpe {'..getPlayerName(cid)..'} mais você já tem uma vocação!', cid) end elseif msgcontains(msg, 'knight') then if getPlayerStorageValue(cid, storage) == -1 then doPlayerSetVocation(cid, 4) doSendMagicEffect(getPlayerPosition(cid), 28) doPlayerSetStorageValue(cid, storage, 1) selfSay('Parabéns {'..getPlayerName(cid)..'} agora você é um {'..getPlayerVocation(cid)..'}!', cid) else selfSay('Desculpe {'..getPlayerName(cid)..'} mais você já tem uma vocação!', cid) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  8. Gostei
    Markin recebeu reputação de Yago Blind. em NPC Dicer   
    Bom dia jovens, graças ao grande Omega eu consegui terminar o código do NPC Dicer, a função para checar o gold foi feita por ele então deem um beijo nele
    O NPC é parecido com aqueles BOTS que ficam no tibia global em yalahar normalmente, você joga uma quantia em gold e fala L ou H também pode ser Low ou High e com sorte pode ganhar o dobro da quantia apostada, exemplo:
     
    Eu vou lá jogo 20k na mesa e falo Low, caso caia nos números 1, 2 ou 3 eu irei ganhar o dobro da quantia que eu apostei que no foi 20k, mas se cair nos números 4, 5 ou 6 eu iria perder esses 20k.
    O High é a mesma coisa porém ao contrario, se eu falo High e cair nos numero 4, 5 ou 6 eu ganho o dobro da quantia que eu apostei e se cair no 1, 2 ou 3 eu perderia tudo.
     
    Crie um arquivo em data/npc com o nome dicer.xml e adicione isso dentro:
    <?xml version="1.0"?> <npc name="Dicer" script="data/npc/scripts/dicer.lua" walkinterval="1000" floorchange="0"> <health now="100" max="100"/> <look type="132" head="114" body="0" legs="0" feet="114" addons="3"/> <parameters> <parameter key="message_greet" value="Ola {|PLAYERNAME|}, caso queria tentar a sorte diga {L} ou {Low} para apostar nos numeros {1}, {2} ou {3} ||| {H} ou {High} para apostar nos numeros {4}, {5} ou {6}!" /> </parameters> </npc> Agora vá até data/npc/scripts e crie um arquivo com o nome dicer.lua e adicione isso dentro:
    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 local coins = {[2148] = 1, [2152] = 100, [2160] = 10000} function countMoneyOnPos(pos) local money = 0 for stack = 1, 50 do pos.stackpos = stack local item = getThingFromPos(pos) if item and item.uid > 0 then if coins[item.itemid] then money = money + coins[item.itemid] * item.type end end end return money end local posCoal = {x = 169, y = 58, z = 7} -- POSIÇÃO DO COAL, ONDE O GOLD DEVE ESTAR local posNpc = {x = 193, y = 45, z = 7} -- POSIÇÃO DO NPC local pos = getPosByDir(getThingPos(cid), getCreatureLookDirection(cid), 1) -- NÃO ALTERAR if msgcontains(msg, 'l') or msgcontains(msg, 'L') or msgcontains(msg, 'low') or msgcontains(msg, 'Low') then if countMoneyOnPos(pos) > 0 then if math.random(1, 6) <= 3 then doPlayerAddMoney(cid, countMoneyOnPos(pos)*2) doRemoveItem(getTileItemById(pos, 2148).uid) repeat until not doRemoveItem(getTileItemById(pos, 2148).uid) doRemoveItem(getTileItemById(pos, 2152).uid) repeat until not doRemoveItem(getTileItemById(pos, 2152).uid) doRemoveItem(getTileItemById(pos, 2160).uid) repeat until not doRemoveItem(getTileItemById(pos, 2160).uid) doSendMagicEffect(posNpc, 26) doSendMagicEffect(posNpc, 28) doCreatureSay(getNpcId(), getCreatureName(cid)..' tirou o numero '..math.random(1, 3)..', parabéns!', TALKTYPE_ORANGE_1) else doRemoveItem(getTileItemById(pos, 2148).uid) repeat until not doRemoveItem(getTileItemById(pos, 2148).uid) doRemoveItem(getTileItemById(pos, 2152).uid) repeat until not doRemoveItem(getTileItemById(pos, 2152).uid) doRemoveItem(getTileItemById(pos, 2160).uid) repeat until not doRemoveItem(getTileItemById(pos, 2160).uid) doSendMagicEffect(posNpc, 2) doSendMagicEffect(posNpc, 26) doCreatureSay(getNpcId(), getCreatureName(cid)..' tirou o numero '..math.random(4, 6)..', tente novamente!', TALKTYPE_ORANGE_1) end else doCreatureSay(getNpcId(), getCreatureName(cid)..', coloque uma quantia de gold no recipiente para começar a apostar!', TALKTYPE_ORANGE_1) end elseif msgcontains(msg, 'h') or msgcontains(msg, 'H') or msgcontains(msg, 'high') or msgcontains(msg, 'High') then if countMoneyOnPos(pos) > 0 then if math.random(1, 6) <= 3 then doPlayerAddMoney(cid, countMoneyOnPos(pos)*2) doRemoveItem(getTileItemById(pos, 2148).uid) repeat until not doRemoveItem(getTileItemById(pos, 2148).uid) doRemoveItem(getTileItemById(pos, 2152).uid) repeat until not doRemoveItem(getTileItemById(pos, 2152).uid) doRemoveItem(getTileItemById(pos, 2160).uid) repeat until not doRemoveItem(getTileItemById(pos, 2160).uid) doSendMagicEffect(posNpc, 26) doSendMagicEffect(posNpc, 28) doCreatureSay(getNpcId(), getCreatureName(cid)..' tirou o numero '..math.random(4, 6)..', parabéns!', TALKTYPE_ORANGE_1) else doRemoveItem(getTileItemById(pos, 2148).uid) repeat until not doRemoveItem(getTileItemById(pos, 2148).uid) doRemoveItem(getTileItemById(pos, 2152).uid) repeat until not doRemoveItem(getTileItemById(pos, 2152).uid) doRemoveItem(getTileItemById(pos, 2160).uid) repeat until not doRemoveItem(getTileItemById(pos, 2160).uid) doSendMagicEffect(posNpc, 2) doSendMagicEffect(posNpc, 26) doCreatureSay(getNpcId(), getCreatureName(cid)..' tirou o numero '..math.random(1, 3)..', tente novamente!', TALKTYPE_ORANGE_1) end else doCreatureSay(getNpcId(), getCreatureName(cid)..', coloque uma quantia de gold no recipiente para começar a apostar!', TALKTYPE_ORANGE_1) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Você deve fazer alterações nesta parte:
    local posCoal = {x = 169, y = 58, z = 7} -- POSIÇÃO DO COAL, ONDE O GOLD DEVE ESTAR local posNpc = {x = 193, y = 45, z = 7} -- POSIÇÃO DO NPC Aconselhável montar uma área pro npc ficar idêntica a da fotos para não bugar o código, o coal() deve sempre ficar na frente do player pois a função ira chegar o gold a frente do player.
     
     
    Ao falar Hi

     
     
    Npc verificando que não tem gold no coal

     
     
    Vencendo uma aposta

     
     
    Perdendo uma aposta

     
    Créditos:
    Markin(Anne)
    Omega pela função de checar o gold
  9. Gostei
    Markin recebeu reputação de tirso em (Resolvido)[AJUDA] erro de servidor por uma script   
    usa esse aqui:
    local config = { positions = { ["Hunts"] = { x = 1024, y = 908, z = 5 }, ["Vocation"] = { x = 1033, y = 909, z = 5 }, ["Konoha"] = { x = 11, y = 794, z = 7 }, ["Retornar"] = { x = 395, y = 1223, z = 7 } } } function onThink(cid, interval, lastExecution) for text, pos in pairs(config.positions) do doSendAnimatedText(pos, text, math.random(1, 255)) end return TRUE end globalevents.xml
    <globalevent name="tpmensagem1" interval="2100" script="tlpmenssage.lua"/>
  10. Gostei
    Markin recebeu reputação de Eddy2000 em NPC Dicer   
    Bom dia jovens, graças ao grande Omega eu consegui terminar o código do NPC Dicer, a função para checar o gold foi feita por ele então deem um beijo nele
    O NPC é parecido com aqueles BOTS que ficam no tibia global em yalahar normalmente, você joga uma quantia em gold e fala L ou H também pode ser Low ou High e com sorte pode ganhar o dobro da quantia apostada, exemplo:
     
    Eu vou lá jogo 20k na mesa e falo Low, caso caia nos números 1, 2 ou 3 eu irei ganhar o dobro da quantia que eu apostei que no foi 20k, mas se cair nos números 4, 5 ou 6 eu iria perder esses 20k.
    O High é a mesma coisa porém ao contrario, se eu falo High e cair nos numero 4, 5 ou 6 eu ganho o dobro da quantia que eu apostei e se cair no 1, 2 ou 3 eu perderia tudo.
     
    Crie um arquivo em data/npc com o nome dicer.xml e adicione isso dentro:
    <?xml version="1.0"?> <npc name="Dicer" script="data/npc/scripts/dicer.lua" walkinterval="1000" floorchange="0"> <health now="100" max="100"/> <look type="132" head="114" body="0" legs="0" feet="114" addons="3"/> <parameters> <parameter key="message_greet" value="Ola {|PLAYERNAME|}, caso queria tentar a sorte diga {L} ou {Low} para apostar nos numeros {1}, {2} ou {3} ||| {H} ou {High} para apostar nos numeros {4}, {5} ou {6}!" /> </parameters> </npc> Agora vá até data/npc/scripts e crie um arquivo com o nome dicer.lua e adicione isso dentro:
    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 local coins = {[2148] = 1, [2152] = 100, [2160] = 10000} function countMoneyOnPos(pos) local money = 0 for stack = 1, 50 do pos.stackpos = stack local item = getThingFromPos(pos) if item and item.uid > 0 then if coins[item.itemid] then money = money + coins[item.itemid] * item.type end end end return money end local posCoal = {x = 169, y = 58, z = 7} -- POSIÇÃO DO COAL, ONDE O GOLD DEVE ESTAR local posNpc = {x = 193, y = 45, z = 7} -- POSIÇÃO DO NPC local pos = getPosByDir(getThingPos(cid), getCreatureLookDirection(cid), 1) -- NÃO ALTERAR if msgcontains(msg, 'l') or msgcontains(msg, 'L') or msgcontains(msg, 'low') or msgcontains(msg, 'Low') then if countMoneyOnPos(pos) > 0 then if math.random(1, 6) <= 3 then doPlayerAddMoney(cid, countMoneyOnPos(pos)*2) doRemoveItem(getTileItemById(pos, 2148).uid) repeat until not doRemoveItem(getTileItemById(pos, 2148).uid) doRemoveItem(getTileItemById(pos, 2152).uid) repeat until not doRemoveItem(getTileItemById(pos, 2152).uid) doRemoveItem(getTileItemById(pos, 2160).uid) repeat until not doRemoveItem(getTileItemById(pos, 2160).uid) doSendMagicEffect(posNpc, 26) doSendMagicEffect(posNpc, 28) doCreatureSay(getNpcId(), getCreatureName(cid)..' tirou o numero '..math.random(1, 3)..', parabéns!', TALKTYPE_ORANGE_1) else doRemoveItem(getTileItemById(pos, 2148).uid) repeat until not doRemoveItem(getTileItemById(pos, 2148).uid) doRemoveItem(getTileItemById(pos, 2152).uid) repeat until not doRemoveItem(getTileItemById(pos, 2152).uid) doRemoveItem(getTileItemById(pos, 2160).uid) repeat until not doRemoveItem(getTileItemById(pos, 2160).uid) doSendMagicEffect(posNpc, 2) doSendMagicEffect(posNpc, 26) doCreatureSay(getNpcId(), getCreatureName(cid)..' tirou o numero '..math.random(4, 6)..', tente novamente!', TALKTYPE_ORANGE_1) end else doCreatureSay(getNpcId(), getCreatureName(cid)..', coloque uma quantia de gold no recipiente para começar a apostar!', TALKTYPE_ORANGE_1) end elseif msgcontains(msg, 'h') or msgcontains(msg, 'H') or msgcontains(msg, 'high') or msgcontains(msg, 'High') then if countMoneyOnPos(pos) > 0 then if math.random(1, 6) <= 3 then doPlayerAddMoney(cid, countMoneyOnPos(pos)*2) doRemoveItem(getTileItemById(pos, 2148).uid) repeat until not doRemoveItem(getTileItemById(pos, 2148).uid) doRemoveItem(getTileItemById(pos, 2152).uid) repeat until not doRemoveItem(getTileItemById(pos, 2152).uid) doRemoveItem(getTileItemById(pos, 2160).uid) repeat until not doRemoveItem(getTileItemById(pos, 2160).uid) doSendMagicEffect(posNpc, 26) doSendMagicEffect(posNpc, 28) doCreatureSay(getNpcId(), getCreatureName(cid)..' tirou o numero '..math.random(4, 6)..', parabéns!', TALKTYPE_ORANGE_1) else doRemoveItem(getTileItemById(pos, 2148).uid) repeat until not doRemoveItem(getTileItemById(pos, 2148).uid) doRemoveItem(getTileItemById(pos, 2152).uid) repeat until not doRemoveItem(getTileItemById(pos, 2152).uid) doRemoveItem(getTileItemById(pos, 2160).uid) repeat until not doRemoveItem(getTileItemById(pos, 2160).uid) doSendMagicEffect(posNpc, 2) doSendMagicEffect(posNpc, 26) doCreatureSay(getNpcId(), getCreatureName(cid)..' tirou o numero '..math.random(1, 3)..', tente novamente!', TALKTYPE_ORANGE_1) end else doCreatureSay(getNpcId(), getCreatureName(cid)..', coloque uma quantia de gold no recipiente para começar a apostar!', TALKTYPE_ORANGE_1) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Você deve fazer alterações nesta parte:
    local posCoal = {x = 169, y = 58, z = 7} -- POSIÇÃO DO COAL, ONDE O GOLD DEVE ESTAR local posNpc = {x = 193, y = 45, z = 7} -- POSIÇÃO DO NPC Aconselhável montar uma área pro npc ficar idêntica a da fotos para não bugar o código, o coal() deve sempre ficar na frente do player pois a função ira chegar o gold a frente do player.
     
     
    Ao falar Hi

     
     
    Npc verificando que não tem gold no coal

     
     
    Vencendo uma aposta

     
     
    Perdendo uma aposta

     
    Créditos:
    Markin(Anne)
    Omega pela função de checar o gold
  11. Gostei
    Markin recebeu reputação de maiconhuca em [Talkaction] Reparar soft e firewalker boots.   
    Sei que é dois scripts insignificantes, ja deve ter aqui seila, mais eu fiz pro meu ot e vo deixar aqui se alguem precisar.

    primeiro vai em talkactions/scripts crie um arquivo .lua e renomeio para soft (soft.lua) e adicione isso dentro:



    function onSay(cid, words, param) if getPlayerItemCount(cid,10021) >= 1 then if getPlayerItemCount(cid,2160) >= 5 then doPlayerRemoveItem(cid, 10021,1) doPlayerRemoveItem(cid, 2160,5) doPlayerAddItem(cid, 6132,1) doPlayerSendTextMessage(cid, 18, "You repaired soft for 50k!") doSendMagicEffect(getCreaturePosition(cid),29) else doPlayerSendTextMessage(cid, 18, "You need 50k for repair soft boots.") end else doPlayerSendTextMessage(cid, 18, "You need one pair of worn soft boots for repair.") end return TRUE end agora em talkactions.xml adicione a tag: <talkaction words="!soft" event="script" value="soft.lua"/> Primeiro script ok. ------------------------------------------------------------------ Agora o da firewalker boots. Em talkactions/scripts crie um arquivo .lua e renomeio para firewalker (firewalker.lua) e adicione isso dentro: function onSay(cid, words, param) if getPlayerItemCount(cid,10022) >= 1 then if getPlayerItemCount(cid,2160) >= 5 then doPlayerRemoveItem(cid, 10022,1) doPlayerRemoveItem(cid, 2160,5) doPlayerAddItem(cid, 9933,1) doPlayerSendTextMessage(cid, 18, "You repaired firewalker boots for 50k!") doSendMagicEffect(getCreaturePosition(cid),29) else doPlayerSendTextMessage(cid, 18, "You need 50k for repair firewalker boots.") end else doPlayerSendTextMessage(cid, 18, "You need one pair of worn firewalker boots for repair.") end return TRUE end em talkactions.xml adicione a seguinte tag: <talkaction words="!firewalker" event="script" value="firewalker.lua"/>

    bye ;*
  12. Gostei
    Markin recebeu reputação de juliolokko em [Aula 2] Lógica da Programaçao   
    acho que no meio dessa aula poderia ter mostrado como fica um script normal(inglês) e outro traduzido para o português para a pessoa entender como funciona mais o menos

    Lindo tutorial.
  13. Gostei
    vai no rme e aperte a tecla F e vê se os monstros aparecem.
  14. Gostei
    Markin recebeu reputação de Magalhaes92 em (Resolvido)[talkactions] Vendendo item com premium account - Ajuda!   
    local premium_days = 15 -- quantos dias de premium seram removidos local recompensa = 2548 -- qual item sera vendido function onSay(cid, words, param, channel) if getPlayerPremiumDays(cid) >= premium_days then doPlayerRemovePremiumDays(cid, premium_days) doPlayerAddItem(cid, recompensa, 1) -- o 1 é o tanto de itens que vai ganhar doPlayerSendTextMessage(cid, 19, "Você acabou de receber uma crown armor!") else doPlayerSendTextMessage(cid, 19, "Você precisa de no minimo 15 dias de premium account para executar este comando.") end return TRUE end
  15. Gostei
    Markin recebeu reputação de Striker Macabrus em [Sistema] Battlefield Event! V.1   
    muito bom kong, parece o ctf

    reputado negativamente.
  16. Gostei
    Markin recebeu reputação de Striker Macabrus em [Sistema] Battlefield Event! V.1   
    eu posso fazer o mapa, depois falo com o vod pra ver certinho como tem que fazer o mapa pro evento.
  17. Gostei
    Markin recebeu reputação de samlecter em O que são Storages?   
    pra quem não sabe como funciona é perfeito, fiz o Exercício só pra interagir mesmo


    function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerStorageValue(cid, 34534) == -1 then if getPlayerLevel(cid) >= 100 then doPlayerAddItem(cid, 2160, 100) doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Você ganhou 1kk!") doPlayerSetStorageValue(cid, 34534, 1) else doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Você não tem level suficiente!") end doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Você já fez a quest!") end return TRUE end
  18. Gostei
    Markin recebeu reputação de CyCu991 em [Gesior AAC] Most Creature Killers   
    Bom, hoje fiquei um bom tempo para achar este conteúdo que eu acho que vale a pena estar neste fórum... Eu achei ele neste fórum porém o tópico que ele foi postado esta tudo bagunçado contendo apenas CTRL+C e CTRL+V(este aqui)...
    --------------------------------------------------------------------------------------------------------------------
    A função deste código é mostrar em uma pagina de seu site um ranking em que mostra quem matou a maior quantidade de determinados monstros...  Eu particularmente acho muito bom este sistema.
     
    Imagem de exemplo:

    --------------------------------------------------------------------------------------------------------------------
     
    Crie um arquivo dentro da pasta htdocs com o nome countKill.php e adicione isso dentro:
    <?php /* Scrip by zonet */ $kills = $config['site']['creatureKills']; $limit = $config['site']['creatureKillShowLimit']; $main_content .= '<table border="0px" cellspacing="1px" cellpadding="4px" width="100%"> <tr bgcolor="#505050" style="color: white;"><th width="10%">Creature</th><th>Creature name</th><th>Most Killer ( '.$limit.' )</th></tr>'; $row = 1; foreach($kills as $name => $storage) { $qa = $SQL->query('SELECT `player_storage`.`player_id`, `player_storage`.`key`, `player_storage`.`value` AS `value`, `players`.`id`, `players`.`name` AS `name` FROM `player_storage` LEFT JOIN `players` ON `player_storage`.`player_id` = `players`.`id` WHERE `player_storage`.`key` = '.$storage.' ORDER BY ABS(value) DESC LIMIT '.$limit)->fetchAll(); $color = ( $row % 2 ? $config['site']['darkborder'] : $config['site']['lightborder']); $row++; $main_content .= '<tr bgcolor="'.$color.'"><td><img src="/images/monsters/'.(str_replace(" ", "" , $name)).'.gif"></td><td width="20%" style="font-size: 13pt; font-weight: bold; color: darkorange;"><center>'.(ucfirst($name)).'</center></td><td>'; $a = 0; foreach( $qa as $q ) { $a++; if($a == 1) $main_content .= '<font color="green">'; if($a == $limit) $main_content .= '<font color="red">'; if($a == $limit/2) $main_content .= '<font color="darkorange">'; $main_content .= '<b>'.$a.'. Name:</b> <a href="?subtopic=characters&name='.urlencode($q['name']).'">'.$q['name'].'</a> (Kills: '.$q['value'].') </font></font></font><br />'; } } $main_content .= '</td></table>'; ?> Em htdocs/config abra o arquivo config.php e adicione a seguinte linha no final:
    $config['site']['creatureKillShowLimit'] = 6; $config['site']['creatureKills'] = array('dragon' => 9541, 'dragon lord' => 9542, 'frost dragon' => 9543, 'wyrm' => 9544, 'demon' => 9545); Agora abra o arquivo index.php que fica dentro da pasta htdocs e logo abaixo desta parte:
    case "killstatistics"; $topic = "Last Kills"; $subtopic = "killstatistics"; include("killstatistics.php"); break; Adicione isso:
    case "countkill"; $topic = "Count Kills"; $subtopic = "countkill"; include("countKill.php"); break; Em htdocs/layouts/tibiacom abra o arquivo layouts.php e logo abaixo disto:
    <a href='index.php?subtopic=killstatistics'> <div id='submenu_killstatistics' 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_killstatistics' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo "$layout_name"; ?>/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'>Last Kills</div> <div class='RightChain' style='background-image:url(<?PHP echo "$layout_name"; ?>/images/general/chain.gif);'></div> </div> </a> Adicione isso:
    <a href='index.php?subtopic=countkill'> <div id='submenu_countkill' 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_killstatistics' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo "$layout_name"; ?>/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'>Count Kills</div> <div class='RightChain' style='background-image:url(<?PHP echo "$layout_name"; ?>/images/general/chain.gif);'></div> </div> </a> Bom a parte do website esta pronta, vamos para o servidor agora!
    Em creaturescripts/scripts crie um arquivo com o nome count.lua e adicione isso dentro:
    local monsters = { ["dragon"] = 9541, ["dragon lord"] = 9542, ["frost dragon"] = 9543, ["wyrm"] = 9544, ["demon"] = 9545, } function onKill(cid, target) if(isPlayer(target) ~= true and isPlayer(cid)) then local name = getCreatureName(target) local monster = monsters[string.lower(name)] if(monster) then local killedMonsters = getPlayerStorageValue(cid, monster) if(killedMonsters < 0) then killedMonsters = 1 end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You killed " .. killedMonsters .. " " .. name .. "'s.") setPlayerStorageValue(cid, monster, killedMonsters + 1) end end return true end Em creaturescripts abra o arquivo creaturescripts.xml e adicione isso dentro:
    <event type="kill" name="countKill" event="script" value="count.lua"/> Em creaturescripts/scripts abra o arquivo login.lua e adicione esta tag:
    registerCreatureEvent(cid, "countKill") Pronto, o sistema foi instalado, agora vamos configurar!
    Para adicionar novos monstros basta modificar esta parte no código lua em creaturescripts:
    local monsters = { ["dragon"] = 9541, ["dragon lord"] = 9542, ["frost dragon"] = 9543, ["wyrm"] = 9544, ["demon"] = 9545, } E nesta parte em layouts.php
    $config['site']['creatureKillShowLimit'] = 6; $config['site']['creatureKills'] = array('dragon' => 9541, 'dragon lord' => 9542, 'frost dragon' => 9543, 'wyrm' => 9544, 'demon' => 9545); Tópico original: Aqui
    Créditos: Zonet
  19. Gostei
    Markin recebeu reputação de thelifeofpbion em NPC Dicer   
    Bom dia jovens, graças ao grande Omega eu consegui terminar o código do NPC Dicer, a função para checar o gold foi feita por ele então deem um beijo nele
    O NPC é parecido com aqueles BOTS que ficam no tibia global em yalahar normalmente, você joga uma quantia em gold e fala L ou H também pode ser Low ou High e com sorte pode ganhar o dobro da quantia apostada, exemplo:
     
    Eu vou lá jogo 20k na mesa e falo Low, caso caia nos números 1, 2 ou 3 eu irei ganhar o dobro da quantia que eu apostei que no foi 20k, mas se cair nos números 4, 5 ou 6 eu iria perder esses 20k.
    O High é a mesma coisa porém ao contrario, se eu falo High e cair nos numero 4, 5 ou 6 eu ganho o dobro da quantia que eu apostei e se cair no 1, 2 ou 3 eu perderia tudo.
     
    Crie um arquivo em data/npc com o nome dicer.xml e adicione isso dentro:
    <?xml version="1.0"?> <npc name="Dicer" script="data/npc/scripts/dicer.lua" walkinterval="1000" floorchange="0"> <health now="100" max="100"/> <look type="132" head="114" body="0" legs="0" feet="114" addons="3"/> <parameters> <parameter key="message_greet" value="Ola {|PLAYERNAME|}, caso queria tentar a sorte diga {L} ou {Low} para apostar nos numeros {1}, {2} ou {3} ||| {H} ou {High} para apostar nos numeros {4}, {5} ou {6}!" /> </parameters> </npc> Agora vá até data/npc/scripts e crie um arquivo com o nome dicer.lua e adicione isso dentro:
    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 local coins = {[2148] = 1, [2152] = 100, [2160] = 10000} function countMoneyOnPos(pos) local money = 0 for stack = 1, 50 do pos.stackpos = stack local item = getThingFromPos(pos) if item and item.uid > 0 then if coins[item.itemid] then money = money + coins[item.itemid] * item.type end end end return money end local posCoal = {x = 169, y = 58, z = 7} -- POSIÇÃO DO COAL, ONDE O GOLD DEVE ESTAR local posNpc = {x = 193, y = 45, z = 7} -- POSIÇÃO DO NPC local pos = getPosByDir(getThingPos(cid), getCreatureLookDirection(cid), 1) -- NÃO ALTERAR if msgcontains(msg, 'l') or msgcontains(msg, 'L') or msgcontains(msg, 'low') or msgcontains(msg, 'Low') then if countMoneyOnPos(pos) > 0 then if math.random(1, 6) <= 3 then doPlayerAddMoney(cid, countMoneyOnPos(pos)*2) doRemoveItem(getTileItemById(pos, 2148).uid) repeat until not doRemoveItem(getTileItemById(pos, 2148).uid) doRemoveItem(getTileItemById(pos, 2152).uid) repeat until not doRemoveItem(getTileItemById(pos, 2152).uid) doRemoveItem(getTileItemById(pos, 2160).uid) repeat until not doRemoveItem(getTileItemById(pos, 2160).uid) doSendMagicEffect(posNpc, 26) doSendMagicEffect(posNpc, 28) doCreatureSay(getNpcId(), getCreatureName(cid)..' tirou o numero '..math.random(1, 3)..', parabéns!', TALKTYPE_ORANGE_1) else doRemoveItem(getTileItemById(pos, 2148).uid) repeat until not doRemoveItem(getTileItemById(pos, 2148).uid) doRemoveItem(getTileItemById(pos, 2152).uid) repeat until not doRemoveItem(getTileItemById(pos, 2152).uid) doRemoveItem(getTileItemById(pos, 2160).uid) repeat until not doRemoveItem(getTileItemById(pos, 2160).uid) doSendMagicEffect(posNpc, 2) doSendMagicEffect(posNpc, 26) doCreatureSay(getNpcId(), getCreatureName(cid)..' tirou o numero '..math.random(4, 6)..', tente novamente!', TALKTYPE_ORANGE_1) end else doCreatureSay(getNpcId(), getCreatureName(cid)..', coloque uma quantia de gold no recipiente para começar a apostar!', TALKTYPE_ORANGE_1) end elseif msgcontains(msg, 'h') or msgcontains(msg, 'H') or msgcontains(msg, 'high') or msgcontains(msg, 'High') then if countMoneyOnPos(pos) > 0 then if math.random(1, 6) <= 3 then doPlayerAddMoney(cid, countMoneyOnPos(pos)*2) doRemoveItem(getTileItemById(pos, 2148).uid) repeat until not doRemoveItem(getTileItemById(pos, 2148).uid) doRemoveItem(getTileItemById(pos, 2152).uid) repeat until not doRemoveItem(getTileItemById(pos, 2152).uid) doRemoveItem(getTileItemById(pos, 2160).uid) repeat until not doRemoveItem(getTileItemById(pos, 2160).uid) doSendMagicEffect(posNpc, 26) doSendMagicEffect(posNpc, 28) doCreatureSay(getNpcId(), getCreatureName(cid)..' tirou o numero '..math.random(4, 6)..', parabéns!', TALKTYPE_ORANGE_1) else doRemoveItem(getTileItemById(pos, 2148).uid) repeat until not doRemoveItem(getTileItemById(pos, 2148).uid) doRemoveItem(getTileItemById(pos, 2152).uid) repeat until not doRemoveItem(getTileItemById(pos, 2152).uid) doRemoveItem(getTileItemById(pos, 2160).uid) repeat until not doRemoveItem(getTileItemById(pos, 2160).uid) doSendMagicEffect(posNpc, 2) doSendMagicEffect(posNpc, 26) doCreatureSay(getNpcId(), getCreatureName(cid)..' tirou o numero '..math.random(1, 3)..', tente novamente!', TALKTYPE_ORANGE_1) end else doCreatureSay(getNpcId(), getCreatureName(cid)..', coloque uma quantia de gold no recipiente para começar a apostar!', TALKTYPE_ORANGE_1) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Você deve fazer alterações nesta parte:
    local posCoal = {x = 169, y = 58, z = 7} -- POSIÇÃO DO COAL, ONDE O GOLD DEVE ESTAR local posNpc = {x = 193, y = 45, z = 7} -- POSIÇÃO DO NPC Aconselhável montar uma área pro npc ficar idêntica a da fotos para não bugar o código, o coal() deve sempre ficar na frente do player pois a função ira chegar o gold a frente do player.
     
     
    Ao falar Hi

     
     
    Npc verificando que não tem gold no coal

     
     
    Vencendo uma aposta

     
     
    Perdendo uma aposta

     
    Créditos:
    Markin(Anne)
    Omega pela função de checar o gold
  20. Gostei
    Markin recebeu reputação de Kyosen em Tutorial Básico Creaturescripts   
    Vim trazer hoje um tutorial bem útil para quem esta aprendendo a linguagem lua.



    Com a autorização do grande Jhon vou postar aqui um tópico desenvolvido por ele.





    Tutorial Básico sobre CreatureScripts

    CreatureScripts = São scripts que serão ativados após uma determinada ação criada pelo monstro ou personagem. Essas ações são determinadas como funções. Existem varias funções utilizadas para a criação de creaturescripts e estas são:


    onDeath(cid, corpse, killer)-- que é executada ao morrer. onPrepareDeath(cid, lastHitKiller, mostDamageKiller) -- semelhante a onDeath. onAttack(cid, target) -- executa ao atacar. onCombat(cid, target) -- semelhante ao onAttack. onLogin(cid) -- executa ao logar. onLook(cid, thing, position, lookDistance) -- executa ao dar look. onAdvance(cid, skill, oldLevel, newLevel) -- executa ao upar skills/levels. onStatsChange(cid, attacker, type, combat, value) -- executa ao perder ou ganhar life/mana/condições. onLogout(cid) -- executa ao deslogar. onKill(cid, target, lastHit) -- executa ao matar. onThink(cid, interval) -- executa em determinado tempo. onJoinChannel(cid, channelId, users) -- executa ao entrar em um chat. onReceiveMail(cid, sender, item, openBox) -- executa ao receber um parcel/carta. onReportBug(cid, comment) -- executa ao reportar bug. Para criar esse tipo de script, primeiramente vai na pasta data/creaturescripts/scripts e duplica um arquivo e salve com "nomedesejado"; Agora você vai determinar que função você vai precisar para criação do seu script. Para exemplo vou usar a função "onAdvance"(ao upar). Neste exemplo, quando o player upar level 100 ele irá ganhar 1kk: 1 function onAdvance(cid, skill, oldLevel, newLevel) 2 if (getPlayerLevel(cid) == 100) then 3 doPlayerAddItem(cid, 2160, 100) 4 doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Parabéns, você ganhou 1kk por atingir level 100!") 5 doSendMagicEffect(getCreaturePosition(cid), 30) 6 end 7 return true 8 end Numerei as linhas para melhor entendimento, nos seus scripts vocês não devem numerar. linha 1 = Inicio da função onAdvance, essa linha recebe algumas informações do player que upou, como seu cid, seus skills o velho level e o novo level. Obs: cid = creature id, numero de identificação do player/monstro. linha 2 = Inicia-se um if onde verifica se o level do player é igual a 100. Se for verdadeiro, o script executa as linhas 3,4 e 5, senão pula direto a linha 6. linha 3 = Adiciona 100 itens com o id 2160 ao player. linha 4 = Manda uma mensagem parabenizando o player. linha 5 = Solta o efeito de numero 30, na posição em que o player esta. linha 6 = Finaliza a verificação do if. linha 7 = Retorna verdadeiro. Obs: sempre é necessario ela linha no final de seu código. linha 8 = Finaliza a função onAdvance. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Por fim para funcionamento do seu script é necessario adicionar 2 tags: 1º- No "data/creaturescripts/creaturescripts.xml" 2º- No arquivo "data/creaturescripts/scripts/login.lua", Obs: se o script que você for fazer for de função onLogin, não precisa adicionar a segunda tag. 1º Tag: Vai em data/creaturescripts/creaturescripts.xml e cole a tag: <event type="advance" name="QualquerNome" event="script" value="nomedesejado.lua"/> O type="" , será o nome da função de seu script após a palavra "on" e sempre tudo em minusculo. O name="", use qualquer nome porem esse nome vai ser usado para registrar no script onLogin na tag2. O value="", é o nome com qual você salvou seu script. Agora em data/creaturescripts/scripts/login.lua, sempre antes do último return true: registerCreatureEvent(cid, "QualquerNome")
    QualquerNome é o name que você adicionou na tag1 do creaturescripts.xml.

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

    Acho que é isso aew, espero ter ajudado a galera que esta iniciando.

    Dica para criação de scripts:
    Para melhor edição e organização use Notepad++: http://www.baixaki.c...ad/notepad-.htm
    Sempre usar uma lista de funções como apoio: http://tibiaking.com...funcoes-em-lua/
    E sempre pesquise por scripts prontos e tutoriais para ter uma base.





    CREDITOS:




    JHON pelo tutorial completo!



    Anne por trazer ao TK.

  21. Gostei
    Markin recebeu reputação de ruan vioto maran em [Aula 2] Lógica da Programaçao   
    acho que no meio dessa aula poderia ter mostrado como fica um script normal(inglês) e outro traduzido para o português para a pessoa entender como funciona mais o menos

    Lindo tutorial.
  22. Gostei
    Markin recebeu reputação de ruan vioto maran em [Aula 1] Introdução   
    opa max, vou estar acompanhando todas as aulas, espero que os membros do TK também contribuam para que as aulas deem continuidade!
  23. Gostei
    Markin recebeu reputação de Sommer em [Download] Arvore By: AnneMotta   
    Bom galera vi que algumas pessoas encontrão dificuldade ao tentar criar arvores de porte grande, eu já tinha visto o tutorial do left4dead em outro fórum e basicamente consegui aprender, depois tentarei entrar em contato com ele para ver se poder trazer seus tutoriais para o TK, mais por em quanto estarei disponibilizando uma arvore que fiz para download, espero que seja útil para alguém




    Imagem da arvore:









    Download:
    Link Aqui!


    Scan:
    Link Aqui!


    Creditos:



    AnneMotta pelo mapa.



    Left4dead pelo tutorial.





    espero comentarios!



    Até :3

  24. Gostei
    Markin recebeu reputação de matheus36000 em Treiners Underwar.org   
    Bom, quase todo mundo que já jogou otserve já deve ter jogar underwar AUHAUHAUAUHUAHUHAUHAUHAUHAUHA




    E todos sabem que ele tem(tinha) um mapa dos treiners exclusivo... Alguém já deve ter mais emfim não achei para download então eu mesma tive o trabalho de trackear e botar para download e ai esta...




    PARA ABRIR O MAPA FAÇA DA SEGUINTE MANEIRA: ABRA O RME | FILE/IMPORT/MAP



    VOCÊ VAI SELECIONAR O MAPA E ABRIR... ELE ESTARÁ TODO PRETO BASTA VOCÊ APERTAR CTRL+F E BOTAR O ID 5787 E CLICAR NA POS QUE VAI APARECER DO LADO < E PRONTO!



    Fotos:










    DOWNLOAD


    SCAN
  25. Gostei
    Markin recebeu reputação de aoliveira em [Talkaction] Reparar soft e firewalker boots.   
    Sei que é dois scripts insignificantes, ja deve ter aqui seila, mais eu fiz pro meu ot e vo deixar aqui se alguem precisar.

    primeiro vai em talkactions/scripts crie um arquivo .lua e renomeio para soft (soft.lua) e adicione isso dentro:



    function onSay(cid, words, param) if getPlayerItemCount(cid,10021) >= 1 then if getPlayerItemCount(cid,2160) >= 5 then doPlayerRemoveItem(cid, 10021,1) doPlayerRemoveItem(cid, 2160,5) doPlayerAddItem(cid, 6132,1) doPlayerSendTextMessage(cid, 18, "You repaired soft for 50k!") doSendMagicEffect(getCreaturePosition(cid),29) else doPlayerSendTextMessage(cid, 18, "You need 50k for repair soft boots.") end else doPlayerSendTextMessage(cid, 18, "You need one pair of worn soft boots for repair.") end return TRUE end agora em talkactions.xml adicione a tag: <talkaction words="!soft" event="script" value="soft.lua"/> Primeiro script ok. ------------------------------------------------------------------ Agora o da firewalker boots. Em talkactions/scripts crie um arquivo .lua e renomeio para firewalker (firewalker.lua) e adicione isso dentro: function onSay(cid, words, param) if getPlayerItemCount(cid,10022) >= 1 then if getPlayerItemCount(cid,2160) >= 5 then doPlayerRemoveItem(cid, 10022,1) doPlayerRemoveItem(cid, 2160,5) doPlayerAddItem(cid, 9933,1) doPlayerSendTextMessage(cid, 18, "You repaired firewalker boots for 50k!") doSendMagicEffect(getCreaturePosition(cid),29) else doPlayerSendTextMessage(cid, 18, "You need 50k for repair firewalker boots.") end else doPlayerSendTextMessage(cid, 18, "You need one pair of worn firewalker boots for repair.") end return TRUE end em talkactions.xml adicione a seguinte tag: <talkaction words="!firewalker" event="script" value="firewalker.lua"/>

    bye ;*

Informação Importante

Confirmação de Termo