Histórico de Curtidas
-
Markin recebeu reputação de GuiAmaro em Gui's place - Show oFFque saudade de mappear :c
-----------------------------------
seus mapas estão lindos!
Achei muito bacana este aqui:
-
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
-
Markin recebeu reputação de Maarkiin em [Gesior AAC] Most Creature KillersBom, 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
-
Markin recebeu reputação de Maarkiin em (Resolvido)[AJUDA] erro de servidor por uma scriptusa 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"/> -
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
-
Markin recebeu reputação de alexzika em [8.60] HollisterOT Baiak + Site + DB = Sem Erros na Distronegativado por desmerecer o trabalho de outros membros.
-
Markin recebeu reputação de tsoad12 em [PEDIDO] NPC vocationarquivo.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()) -
Markin recebeu reputação de Yago Blind. em NPC DicerBom 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
-
Markin recebeu reputação de tirso em (Resolvido)[AJUDA] erro de servidor por uma scriptusa 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"/> -
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
-
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 ;*
-
Markin recebeu reputação de juliolokko em [Aula 2] Lógica da Programaçaoacho 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.
-
Markin recebeu reputação de vuhede em (RESOLVIDO) Problema Rme o.o não consigo colocar nem monstro nem npc no map.vai no rme e aperte a tecla F e vê se os monstros aparecem.
-
Markin recebeu reputação de
Magalhaes92em (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 -
Markin recebeu reputação de Striker Macabrus em [Sistema] Battlefield Event! V.1muito bom kong, parece o ctf
reputado negativamente.
-
Markin recebeu reputação de Striker Macabrus em [Sistema] Battlefield Event! V.1eu posso fazer o mapa, depois falo com o vod pra ver certinho como tem que fazer o mapa pro evento.
-
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
-
Markin recebeu reputação de CyCu991 em [Gesior AAC] Most Creature KillersBom, 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
-
Markin recebeu reputação de thelifeofpbion em NPC DicerBom 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
-
Markin recebeu reputação de Kyosen em Tutorial Básico CreaturescriptsVim 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.
-
Markin recebeu reputação de ruan vioto maran em [Aula 2] Lógica da Programaçaoacho 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.
-
Markin recebeu reputação de ruan vioto maran em [Aula 1] Introduçãoopa max, vou estar acompanhando todas as aulas, espero que os membros do TK também contribuam para que as aulas deem continuidade!
-
Markin recebeu reputação de Sommer em [Download] Arvore By: AnneMottaBom 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
-
Markin recebeu reputação de matheus36000 em Treiners Underwar.orgBom, 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
-
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 ;*