Postado Março 15, 2014 11 anos Galera sou meio novo aqui no TibiaKing, e tbm na versão 8.6... queria um script de um NPC, onde o player tenha que ter level 700 +, o primeiro reset custaria 10kk, o segundo 20kk e assim por diante, nao teria limite de reset.. ele voltaria level 20 com 15% do total da mana e life que tinha no level que resetou (7000 - >começaria com 1050) e ganharia skills por vocação Mage - 20 ML voc 9 e 10 Kina - 25 em todos os skills menos dist voc 11 archer - +25 em dist e shielding voc 12 ---------------------------------------------------------- uma nova moeda, onde os NPC as aceitem, Gold - > Platinum -> Crystal - > Ruby 2 rep+ garantidos!
Postado Março 15, 2014 11 anos sobre a primeira: use getCreatureMaxHealth e getPlayerMaxMana e salve num storage a quantidade de vezes que ja resetou pra que o preço aumente. Dps é só setar o level 20, e 15% dos get'sCreatureMaxHealth/Mana. Com alguns if's isSorcerer/isKnight/isPaladin/isDruid você pode ir brincando do jeito que vc quiser. Pra nova moeda é só modificiar no itens.xml pra ruby ser coin, mudar a action que qnd vc clica em 100 crystals ela vire uma ruby e mudar manualmente todos os Npc's do jogo. Procura no google sobre golden nugget que é capaz de achar esse sistema todo pronto já só que ao invés de ser pra ruby ser pro golden nugget, dai vc edita a seu critério Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá! "Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda (obg ao @Beeny por fazer essa linda sign <3)
Postado Março 16, 2014 11 anos Autor o problema e este, eu nao sei muito sobre script .. teria como desenvolver um script do npc pra mim ? porque sou meio leigo nisso.. eu sacava sobre 7.9 agora q migrei pra 8.6 to tentando aprender, mais e tudo diferente e novo pra mim
Postado Março 17, 2014 11 anos eu to sem nenhum ot pra testar isso pra ti agora e por enquanto eu to totalmente sem tempo. Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá! "Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda (obg ao @Beeny por fazer essa linda sign <3)
Postado Março 20, 2014 11 anos Reseter.xml <npc name="Reseter" script="data/npc/scripts/reset.lua" access="5" lookdir="1"> <health now="1000" max="1000"/> <look type="133" head="95" body="86" legs="86" feet="38" addons="3"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|.I've been waiting for you to come.. Say 'reset' or 'quantity'" /> </parameters> </npc> reset.lua --[[Script made 100% by Nogard and Night Wolf. You can feel free to edit anything you want, but don't remove the credits]] local config = { minlevel = 700, --- level inical para resetar price = 10000, --- preço inicial para resetar newlevel = 20, --- level após reset priceByReset = 10000, --- preço acrescentado por reset mlnew = 20, --- quanto de ml vai adicionar ao resetar skillnew = 25 --- quanto de skill vai dar (axe, club, sword, shield, distance) } --- end config function addReset(cid) resets = getResets(cid) setPlayerStorageValue(cid, 378378, resets+1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) ------------------------------------ MUDE AQUI A % DE VIDA QUE GANHA AO RESETAR --------------------- local hp = getCreatureMaxHealth(cid) local resethp = hp*0.25 setCreatureMaxHealth(cid, resethp) local differencehp = (hp - resethp) doCreatureAddHealth(cid, -differencehp) local mana = getCreatureMaxMana(cid) local resetmana = mana*0.25 setCreatureMaxMana(cid, resetmana) local differencemana = (mana - resetmana) doCreatureAddMana(cid, -differencemana) ------------------------------------ FIM ---------------------------- ------------------------------ EDIÇÃO DAS SKILLS -------------------- --TENTATIVA NUMERO 1 --[[local skills = { magic = getPlayerSkillLevel(cid, SKILL__MAGLEVEL), club = getPlayerSkillLevel(cid, SKILL_CLUB), axe = getPlayerSkillLevel(cid, SKILL_AXE), sword = getPlayerSkillLevel(cid, SKILL_SWORD), shield = getPlayerSkillLevel(cid, SKILL_SHIELD), distance = getPlayerSkillLevel(cid, SKILL_DISTANCE) } local amountclub = (skills.club + skillnew) local amountaxe = (skills.axe + skillnew) local amountsword = (skills.sword + skillnew) local amountshield = (skills.shield + skillnew) local amountdistance = (skills.distance + skillnew) local requiredclub = getPlayerRequiredSkillTries(cid, SKILL_CLUB, amountclub) local requiredaxe = getPlayerRequiredSkillTries(cid, SKILL_AXE, amountaxe) local requiredsword = getPlayerRequiredSkillTries(cid, SKILL_SWORD, amountsword) local requiredshield = getPlayerRequiredSkillTries(cid, SKILL_SHIELD, amountshield) local requireddistance = getPlayerRequiredSkillTries(cid, SKILL_DISTANCE, amountdistance) doPlayerAddSkillTry(cid, SKILL_CLUB, requiredclub) doPlayerAddSkillTry(cid, SKILL_AXE, requiredaxe) doPlayerAddSkillTry(cid, SKILL_SWORD, requiredsword) doPlayerAddSkillTry(cid, SKILL_SHIELD, requiredshield) doPlayerAddSkillTry(cid, SKILL_DISTANCE, requireddistance) --TENTATIVA NUMERO 2 local club = getPlayerSkillLevel(cid, SKILL_CLUB) local sword = getPlayerSkillLevel(cid, SKILL_SWORD) local axe = getPlayerSkillLevel(cid, SKILL_AXE) local shield = getPlayerSkillLevel(cid, SKILL_SHIELD) if isInArray({1,5,2,6}, getPlayerVocation(cid)) then db.executeQuery("UPDATE `players` SET `level`="..config.newlevel..",`experience`="..config.newexp..",`maglevel` = `maglevel` + ".. config.newml ..",`manamax`= " .. (resetmana) .. ",`healthmax`= " .. (resethp) .. " WHERE `players`.`id`= ".. playerid .."") end if isInArray({4,8}, getPlayerVocation(cid)) then local club = getPlayerSkillLevel(cid, SKILL_CLUB) local sword = getPlayerSkillLevel(cid, SKILL_SWORD) local axe = getPlayerSkillLevel(cid, SKILL_AXE) local shield = getPlayerSkillLevel(cid, SKILL_SHIELD) db.executeQuery("UPDATE `player_skills` SET `value` = " .. (shield + config.skillnew) .. ", `count` = 0 WHERE `skillid` = 5 and `player_id` = " .. playerid .. ";") db.executeQuery("UPDATE `player_skills` SET `value` = " .. (axe + config.skillnew) .. ", `count` = 0 WHERE `skillid` = 3 and `player_id` = " .. playerid .. ";") db.executeQuery("UPDATE `player_skills` SET `value` = " .. (sword + config.skillnew) .. ", `count` = 0 WHERE `skillid` = 2 and `player_id` = " .. playerid .. ";") db.executeQuery("UPDATE `player_skills` SET `value` = " .. (club + config.skillnew) .. ", `count` = 0 WHERE `skillid` = 1 and `player_id` = " .. playerid .. ";") db.executeQuery("UPDATE `players` SET `level`="..config.newlevel..",`experience`="..config.newexp..",`manamax`= " .. (resetmana) .. ",`healthmax`= " .. (resethp) .. " WHERE `players`.`id`= ".. playerid .."") end if isInArray({3,7}, getPlayerVocation(cid)) then local distance = getPlayerSkillLevel(cid, SKILL_DISTANCE) local shield = getPlayerSkillLevel(cid, SKILL_SHIELD) db.executeQuery("UPDATE `player_skills` SET `value` = " .. (shield + config.skillnew) .. ", `count` = 0 WHERE `skillid` = 5 and `player_id` = " .. playerid .. ";") db.executeQuery("UPDATE `player_skills` SET `value` = " .. (distance + config.skillnew) .. ", `count` = 0 WHERE `skillid` = 4 and `player_id` = " .. playerid .. ";") db.executeQuery("UPDATE `players` SET `level`="..config.newlevel..",`experience`="..config.newexp..",`manamax`= " .. (resetmana) .. ",`healthmax`= " .. (resethp) .. " WHERE `players`.`id`= ".. playerid .."") end --TENTATIVA NUMERO 3 doPlayerAddSkillTry(cid, 1, 90) doPlayerAddSkillTry(cid, 2, 90) doPlayerAddSkillTry(cid, 3, 90) doPlayerAddSkillTry(cid, 4, 90) doPlayerAddSkillTry(cid, 5, 90) doPlayerAddSkillTry(cid, 7, 90) OBS: NENHUMA DESSAS FUNÇÕES FOI CAPAZ DE ADICIONAR SKILL AO PERSONAGEM ]] ------------------------FIM ---------------------------------- doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `description` = ' [Reset: "..resets.."]' WHERE `players`.`id` = "..playerid) db.executeQuery("UPDATE `players` SET `level` = "..config.newlevel..", `experience` = 0 WHERE `id` = "..playerid) return TRUE end function getResets(cid) resets = getPlayerStorageValue(cid, 378378) if resets < 0 then resets = 0 end return resets end 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 creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid local newPrice = config.price + (getResets(cid) * config.priceByReset) if msgcontains(msg, 'reset') then if getResets(cid) == resets then selfSay('You want to reset your character? It will cost '..newPrice..' gp\'s!', cid) talkState[talkUser] = 1 else selfSay('I couldnt acess your bank of acess!', cid) end elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if getPlayerMoney(cid) < newPrice then selfSay('Its necessary to have at least '..newPrice..' gp\'s for reseting!', cid) elseif getPlayerLevel(cid) < config.minlevel then selfSay('The minimum level for reseting is '..config.minlevel..'!', cid) else doPlayerRemoveMoney(cid,newPrice) playerid = getPlayerGUID(cid) addEvent(addReset, (5*1000), cid) local msg ="---[Reset: "..getResets(cid).."]-- You have reseted! You'll be disconnected in 5 seconds." if doPlayerPopupFYI(cid, msg) then end end talkState[talkUser] = 0 elseif(msgcontains(msg, 'no')) and isInArray({1}, talkState[talkUser]) == TRUE then talkState[talkUser] = 0 selfSay('Ok.', cid) elseif msgcontains(msg, 'quantity') then selfSay('You have a total of '..getResets(cid)..' reset(s).', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) OBS: Não consegui fazer a parte de adicionar skills como você pediu e deixei a % da vida sendo 25% pra ser mais legalzinho. OBS2: Agradeça eternamente o Nogard e faça tudo que ele mandar de agora em diante porque ele se dipôs a ficar até as 8:32 da manhã conversando comigo e me ajudando nesse script aqui. Editado Março 20, 2014 11 anos por xWhiteWolf (veja o histórico de edições) Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá! "Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda (obg ao @Beeny por fazer essa linda sign <3)
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.