luciano0223 2 Postado Junho 21, 2013 Share Postado Junho 21, 2013 Reward:• Fishing 20 (Recompensa:40 dolares)• Fishing 40 (Recompensa:80 dolares)• Fishing 60 (Recompensa:120 dolares)• Fishing 80 (Recompensa:160 dolares)Level:Fishing 20+Quest:°É só falar: Hi, Help, Yes, Bye. Toda vez que alcançar os skills citados. Falas do Npc:Player: HiNpc: Fishing is a great support, practice it regularly!Player: HelpNpc: Every time you move the fishing I have come here a prizePlayer: yesNpc: Oh receive the rewardValendo Rep ++ Link para o comentário Compartilhar em outros sites More sharing options...
StyloMaldoso 330 Postado Junho 21, 2013 Share Postado Junho 21, 2013 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 msg = string.lower(msg) --------- local rewards = { -- fish necessario, id ....quantidade {fish = 20, id = 2152, qt = 40}, -- fishing 20 {fish = 40, id = 2152, qt = 80}, -- fishing 40 {fish = 60, id = 2152, qt = 120}, -- fishing 60 {fish = 80, id = 2152, qt = 160}, -- fishing 80 { -- local playerLVL = 20 local sto = 73829 --// if msgcontains(msg, 'help') or msgcontains(msg, 'ajuda') then if getPlayerStorageValue(cid, sto) == 1 then selfSay("you are complete my mission!", cid) end if getPlayerLevel(cid) < 20 then selfSay("you need level 20 to complete this mission!", cid) return true end selfSay("Every time you move the fishing I have come here a prize!", cid) talkState[talkUser] = 2 return true elseif msgcontains(msg, 'yes') or msgcontains(msg, 'sim') and talkState[talkUser] == 2 then local fishing = iscas.rewards[1].fish if getPlayerSkillLevel(cid, 6) < rewards.rewads[i].fish then return sendMsgToPlayer(cid, 20, "you need fishing "..fishing.." to you reward.") end for i = 1, #rewards do doPlayerAddItem(cid, rewards[i].id, rewards[i].qt) end setPlayerStorageValue(cid, sto, 1) selfSay("Oh receive the reward!", cid) talkState[talkUser] = 0 return true end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Link para o comentário Compartilhar em outros sites More sharing options...
StyloMaldoso 330 Postado Junho 21, 2013 Share Postado Junho 21, 2013 qual XML voce colokou no npc? Link para o comentário Compartilhar em outros sites More sharing options...
StyloMaldoso 330 Postado Junho 21, 2013 Share Postado Junho 21, 2013 huum. O xml pareçe esta tudo normal, eu achei 1 erro no meu script talvez não seja o erro que esta causando no seu executavel. mais testa ae, estarei aguardando a resposta 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 msg = string.lower(msg) --------- local rewards = { -- fish necessario, id ....quantidade {fish = 20, id = 2152, qt = 40}, -- fishing 20 {fish = 40, id = 2152, qt = 80}, -- fishing 40 {fish = 60, id = 2152, qt = 120}, -- fishing 60 {fish = 80, id = 2152, qt = 160}, -- fishing 80 { -- local playerLVL = 20 local sto = 73829 --// if msgcontains(msg, 'help') or msgcontains(msg, 'ajuda') then if getPlayerStorageValue(cid, sto) == 1 then selfSay("you are complete my mission!", cid) return true end if getPlayerLevel(cid) < 20 then selfSay("you need level 20 to complete this mission!", cid) return true end selfSay("Every time you move the fishing I have come here a prize!", cid) talkState[talkUser] = 2 return true elseif msgcontains(msg, 'yes') or msgcontains(msg, 'sim') and talkState[talkUser] == 2 then local fishing = iscas.rewards[1].fish if getPlayerSkillLevel(cid, 6) < rewards.rewads[i].fish then return sendMsgToPlayer(cid, 20, "you need fishing "..fishing.." to you reward.") end for i = 1, #rewards do doPlayerAddItem(cid, rewards[i].id, rewards[i].qt) end setPlayerStorageValue(cid, sto, 1) selfSay("Oh receive the reward!", cid) talkState[talkUser] = 0 return true end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Link para o comentário Compartilhar em outros sites More sharing options...
StyloMaldoso 330 Postado Junho 21, 2013 Share Postado Junho 21, 2013 Isso não faz sentido. Eu simplesmente coloquei o "level necessarío" em uma variavel ficando assim local playerLVL = 20 Mais agora eu percebi que não esta sendo usada para nada. intão tire isso do seu SCRIPT. local playerLVL = 20 Lembra-se, de dar /reload NPC Link para o comentário Compartilhar em outros sites More sharing options...
StyloMaldoso 330 Postado Junho 21, 2013 Share Postado Junho 21, 2013 (editado) posta erro né cara. se quer q eu arrumo algo sendo que você não posto o erro? U,U @Edit testa ae, creditos pro slicer ;x 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 msg = string.lower(msg) --------- local rewards = { --{fish necessario, id, quantidade} {fish = 20, id = 2152, qt = 40}, -- fishing 20 {fish = 40, id = 2152, qt = 80}, -- fishing 40 {fish = 60, id = 2152, qt = 120}, -- fishing 60 {fish = 80, id = 2152, qt = 160}, -- fishing 80 } local playerLVL = 20 local sto = 73829 --------- if msgcontains(msg, 'help') or msgcontains(msg, 'ajuda') then if getPlayerStorageValue(cid, sto) < 1 then setPlayerStorageValue(cid, sto, 1) end if getPlayerStorageValue(cid, sto) > #rewards then selfSay("You already got all my rewards!", cid) talkState[talkUser] = 0 return true elseif getPlayerLevel(cid) < playerLVL then selfSay("You need atleast level "..playerLVL.." to talk to me!", cid) talkState[talkUser] = 0 return true end selfSay("Every time you move the fishing I have come here a prize!", cid) talkState[talkUser] = 2 return true elseif msgcontains(msg, 'yes') or msgcontains(msg, 'sim') and talkState[talkUser] == 2 then local TABLE = rewards[getPlayerStorageValue(cid, sto)] if getPlayerSkillLevel(cid, 6) < TABLE.fish then selfSay("You need fishing "..TABLE.fish.." to get your reward.", cid) talkState[talkUser] = 0 return true end doPlayerAddItem(cid, TABLE.id, TABLE.qt) setPlayerStorageValue(cid, sto, getPlayerStorageValue(cid, sto)+1) selfSay("Oh receive the reward!", cid) talkState[talkUser] = 0 return true elseif msgcontains(msg, "no") or msgcontains(msg, "nao") then selfSay("Ok then, bye!", cid) talkState[talkUser] = 0 return true end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Editado Junho 21, 2013 por StyloMaldoso Link para o comentário Compartilhar em outros sites More sharing options...
StyloMaldoso 330 Postado Junho 21, 2013 Share Postado Junho 21, 2013 (editado) local fishing = { ["Magikarp"] = {skill = 0, level = -2}, ["Qwilfish"] = {skill = 18, level = 3}, ["Remoraid"] = {skill = 16, level = 2}, ["Staryu"] = {skill = 22, level = 6}, ["Tentacool"] = {skill = 20, level = 7}, ["Goldeen"] = {skill = 17, level = 5}, ["Krabby"] = {skill = 14, level = 2}, ["Horsea"] = {skill = 16, level = 3}, ["Poliwag"] = {skill = 15, level = 2}, ["Marill"] = {skill = 21, level = 3}, ["Azumarill"] = {skill = 37, level = 16}, ["Kingler"] = {skill = 35, level = 14}, ["Seaking"] = {skill = 28, level = 11}, ["Starmie"] = {skill = 49, level = 20}, ["Chinchou"] = {skill = 23, level = 6}, ["Poliwhirl"] = {skill = 27, level = 9}, ["Seadra"] = {skill = 41, level = 15}, ["Lanturn"] = {skill = 38, level = 14}, ["Octillery"] = {skill = 30, level = 9}, ["Corsola"] = {skill = 46, level = 16}, } local storage = 15458 local bonus = 1 local limite = 100 local function doFish(cid, pos, ppos, chance, interval, number) if not isCreature(cid) then return false end if getThingPos(cid).x ~= ppos.x or getThingPos(cid).y ~= ppos.y then return false end if getPlayerStorageValue(cid, storage) ~= number then return false end doSendMagicEffect(pos, CONST_ME_LOSEENERGY) local peixe = 0 local playerpos = getClosestFreeTile(cid, getThingPos(cid)) local fishes = {} local randomfish = "" if getPlayerSkillLevel(cid, 6) < limite then doPlayerAddSkillTry(cid, 6, bonus) end for a, b in pairs (fishing) do if getPlayerSkillLevel(cid, 6) >= b.skill then table.insert(fishes, a) end end if math.random(1, 100) <= chance then if getPlayerSkillLevel(cid, 6) < limite then doPlayerAddSkillTry(cid, 6, bonus) end randomfish = fishes[math.random(#fishes)] peixe = doSummonCreature(randomfish, playerpos) if not isCreature(peixe) then addEvent(doFish, interval, cid, pos, ppos, chance, interval, number) return true end doSetMonsterPassive(peixe) doWildAttackPlayer(peixe, cid) doCreatureSetLookDir(cid, getDirectionTo(getThingPos(cid), getThingPos(peixe))) --alterado ver depois if #getCreatureSummons(cid) >= 1 then doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 173) doChallengeCreature(getCreatureSummons(cid)[1], peixe) else doSendMagicEffect(getThingPos(cid), 173) doChallengeCreature(cid, peixe) end return true end addEvent(doFish, interval, cid, pos, ppos, chance, interval, number) return true end local waters = {4614, 4615, 4616, 4617, 4618, 4619, 4608, 4609, 4610, 4611, 4612, 4613, 7236, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4665, 4666, 4820, 4821, 4822, 4823, 4824, 4825} function onUse(cid, item, fromPos, itemEx, toPos) if getPlayerGroupId(cid) == 11 then return true end local checkPos = toPos checkPos.stackpos = 0 if getTileThingByPos(checkPos).itemid <= 0 then doPlayerSendCancel(cid, '!') return true end if not isInArray(waters, getTileInfo(toPos).itemid) then return true end if (getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 63215) >= 1) and not canFishWhileSurfingOrFlying then doPlayerSendCancel(cid, "You can't fish while surfing/flying.") return true end if isInArray(waters, getTileInfo(getThingPos(cid)).itemid) then doPlayerSendCancel(cid, "You can\'t fish while surfing neither flying above water.") return true end if getTileInfo(getThingPos(getCreatureSummons(cid)[1] or cid)).protection then doPlayerSendCancel(cid, "You can't fish pokémons if you or your pokémon is in protection zone.") return true end if not tonumber(getPlayerStorageValue(cid, storage)) then local test = io.open("data/sendtobrun123.txt", "a+") local read = "" if test then read = test:read("*all") test:close() end read = read.."\n[fishing.lua] "..getCreatureName(cid).." - "..getPlayerStorageValue(cid, storage).."" local reopen = io.open("data/sendtobrun123.txt", "w") reopen:write(read) reopen:close() setPlayerStorageValue(cid, storage, 1) end setPlayerStorageValue(cid, storage, getPlayerStorageValue(cid, storage) + 1) if getPlayerStorageValue(cid, storage) >= 800 then setPlayerStorageValue(cid, storage, 1) end local delay = 3500 - getPlayerSkillLevel(cid, 6) * 25 local chance = 10 + getPlayerSkillLevel(cid, 6) / 2.5 doFish(cid, toPos, getThingPos(cid), chance, delay, getPlayerStorageValue(cid, storage)) return true end ah e sobre não passar do 28 de fishing vai em data/XML/vocations.xml e procure algo tipo.. fishing = 3.0 ai tu decha fishing = 1.0 lembra-se de alterar em TODAS vocation. ~ quanto menor o valor mais facil de pescar ~ e não vai funcionar se você colokar 0.5 etc. Editado Junho 21, 2013 por StyloMaldoso Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados