Postado Novembro 18, 2014 10 anos Boa tarde galera ! Sistema Monsters x Monsters Preciso de ajuda em um sistema de monstro vs monstros .. mais como assim seria o seguinte estou desenvolvendo um servidor estilo league of legends onde as torres criei como monstros e tals... e os minions tanbem são monstros e queria o seguinte , que esses minions atacassem essas torres que tanbem sao monstros. Alem disso tenho esse sistema de npc que reseta players mais alem do level queria que o npc resetasse as skills local config = { minlevel = 250, --- level inical para resetar price = 0, --- preço inicial para resetar newlevel = 100, --- level após reset priceByReset = 0, --- preço acrescentado por reset percent = 1, ---- porcentagem da vida/mana que você terá ao resetar (em relação à sua antiga vida total) levelbyreset = 0 --- quanto de level vai precisar a mais no próximo reset } --- end config function addReset(uid) resets = getResets(uid) setPlayerStorageValue(uid, 378378, resets+1) doTeleportThing(uid, getTownTemplePosition(getPlayerTown(uid))) local hp = getCreatureMaxHealth(uid) local resethp = hp*(config.percent/100) setCreatureMaxHealth(uid, resethp) local differencehp = (hp - resethp) doCreatureAddHealth(uid, -differencehp) local mana = getCreatureMaxMana(uid) local resetmana = mana*(config.percent/100) setCreatureMaxMana(uid, resetmana) local differencemana = (mana - resetmana) doCreatureAddMana(uid, -differencemana) doRemoveCreature(uid) local description = resets+1 db.executeQuery("UPDATE `players` SET `description` = ' [Reset: "..description.."]' WHERE `players`.`id`= ".. playerid .."") db.executeQuery("UPDATE `players` SET `level`="..config.newlevel..",`experience`= 0 WHERE `players`.`id`= ".. playerid .."") return true end function getResets(uid) resets = getPlayerStorageValue(uid, 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) local newminlevel = config.minlevel + (getResets(cid) * config.levelbyreset) if msgcontains(msg, 'reset') then if getResets(cid) == resets then selfSay('Voce deseja mesmo sair ?{yes}!', 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) < newminlevel then selfSay('O level minimo para resetar e '..newminlevel..'!', cid) else doPlayerRemoveMoney(cid,newPrice) playerid = getPlayerGUID(cid) addEvent(addReset, (5*1000), cid) local number = getResets(cid)+1 local msg ="---[Partidas jogadas: "..number.."]-- Voce foi resetado! Voce sera desconectado em 5 segundos." doPlayerPopupFYI(cid, msg) talkState[talkUser] = 0 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) talkState[talkUser] = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Estou procurando tambem um sistema de mata um player e ganha x item somente pois todos scripts que eu encontrei no forum sempre da um problema uma função para um item que eu criei para quando o player usa esse tal item desloga o player Uma vez eu vi um sistema onde o player pegava level x e quando ele falava /mount ele abria uma janelinha (old cliente tibia) onde o players podia escolher entre 3 montarias algum sabe algum script desse ? E por ultimo um sistema para nao tira o item de lugar (slot) de forma alguma "Somos educados pra sermos médios. Se vc tira 1 em português e 10 em matemática, te colocam pra estudar português. Mas se te colocassem pra estudar matemática, você seria um gênio! Lembre-se diariamente: a sociedade te conduz ao medíocre.." FACEBOOK "Deixar de fazer o que gosta é a mesma coisa de jogar 1 milhão de reais em um caminhão de lixo"
Postado Novembro 18, 2014 10 anos é mais facil você colocar as torres como npc '-', pois ai ela pode atacar tanto o player quanto o monstro em relação ao script de remover o skill tenta fazeer o seguinte... doPlayerRemoveSkill(cid, skillId)
Postado Novembro 18, 2014 10 anos Autor é mais facil você colocar as torres como npc '-', pois ai ela pode atacar tanto o player quanto o monstro em relação ao script de remover o skill tenta fazeer o seguinte... doPlayerRemoveSkill(cid, skillId) de qualquer forma eu não saberei criar npc que ataca monstros .... e essa função acho que não daria certo pois acho alem disso deveria especificar qual skill resetar e tals... se puder me ajudar um pouco mais agradeço... "Somos educados pra sermos médios. Se vc tira 1 em português e 10 em matemática, te colocam pra estudar português. Mas se te colocassem pra estudar matemática, você seria um gênio! Lembre-se diariamente: a sociedade te conduz ao medíocre.." FACEBOOK "Deixar de fazer o que gosta é a mesma coisa de jogar 1 milhão de reais em um caminhão de lixo"
Postado Novembro 18, 2014 10 anos Bom amigo.. você pode criar um NPC. Nas funções no NPC, ele permite você fazer algo, sempre que aparecer uma criatura na tela. Você poderia fazer para quando aparecer, ele checar se é inimigo ou aliado, caso seja inimigo, rodar um loop para ataca-lo. Quando esta criatura sumir, faça o loop parar, para não dar lag. Bom.. não vou fazer, porque estou com preguiça, mas dei uma ideia, espero que ajude. Tony Araújo
Postado Novembro 18, 2014 10 anos Autor Bom amigo.. você pode criar um NPC. Nas funções no NPC, ele permite você fazer algo, sempre que aparecer uma criatura na tela. Você poderia fazer para quando aparecer, ele checar se é inimigo ou aliado, caso seja inimigo, rodar um loop para ataca-lo. Quando esta criatura sumir, faça o loop parar, para não dar lag. Bom.. não vou fazer, porque estou com preguiça, mas dei uma ideia, espero que ajude. Tendi foda que eu não tenho a minima ideia de como posso começar a desenvolve essa script.... será que essa script de npc atacar pk pode pega de base... mais mesmo assim não saberei o que fazer para por para atacar o player mesmo sem pk e monstros e tals... local target = 0 local prevTarget = 0 local maxChaseDistance = 20 local origPos = 0 local lastAttack = 0 local followTimeout = 10 local function isSkulled(cid) if(getPlayerSkullType(cid) >= 3 and isPlayerPzLocked(cid) == TRUE) then return true end return false end local function goToOrigPos() target = 0 lastAttack = 0 selfFollow(0) doTeleportThing(getNpcCid(), origPos) end local function updateTarget() if(isPlayer(target) == FALSE) then goToOrigPos() elseif(not isSkulled(target)) then selfSay("Now, behave in the future.") goToOrigPos() end if(target == 0) then local list = getSpectators(getNpcPos(), 9, 9, false) for i = 1, table.getn(list) do local _target = list[i] if(_target ~= 0) then if(isPlayer(_target) == TRUE and isSkulled(_target)) then if(getTilePzInfo(getCreaturePosition(_target)) == FALSE) then if(selfFollow(_target)) then target = _target if(target ~= prevTarget) then selfSay("We do not tolerate people like you here!") end prevTarget = target break end end end end end end end function onCreatureAppear(cid) if(cid == getNpcCid()) then origPos = getNpcPos() end end function onCreatureDisappear(cid) if(cid == target) then goToOrigPos() end end function onCreatureMove(creature, oldPos, newPos) -- end function onThink() updateTarget() if(target == 0) then return end local playerPos = getCreaturePosition(target) local myPos = getNpcPos() if(myPos.z ~= playerPos.z) then goToOrigPos() return end if(math.abs(myPos.x - origPos.x) > maxChaseDistance or math.abs(myPos.y - origPos.y) > maxChaseDistance) then selfSay("I'll catch you next time.") goToOrigPos() return end if(lastAttack == 0) then lastAttack = os.clock() end if(os.clock() - lastAttack > followTimeout) then selfSay("You got me this time, but just wait.") goToOrigPos() return end if((math.abs(playerPos.x - myPos.x) <= 1) and (math.abs(playerPos.y - myPos.y) <= 1)) then doTargetCombatHealth(getNpcCid(), target, COMBAT_LIFEDRAIN, -500, -800, CONST_ME_EXPLOSIONAREA) lastAttack = os.clock() end end "Somos educados pra sermos médios. Se vc tira 1 em português e 10 em matemática, te colocam pra estudar português. Mas se te colocassem pra estudar matemática, você seria um gênio! Lembre-se diariamente: a sociedade te conduz ao medíocre.." FACEBOOK "Deixar de fazer o que gosta é a mesma coisa de jogar 1 milhão de reais em um caminhão de lixo"
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.