-
Total de itens
631 -
Registro em
-
Última visita
-
Dias Ganhos
13
Tudo que jhon992 postou
-
http://www.xtibia.com/forum/topic/184457-resolvido-sistema-de-invasao/page__p__1241732#entry1241732 http://www.xtibia.com/forum/topic/156691-globalevents-invasao/
-
Configurei para você por um tempo pro cara de mc deslogar. Exemplo: Ali ta configurado em 10 segundos, então se o player estiver de mc e loga normalmente mais aparece a msg e dizendo que ele tomara kick no tempo configurado. E sua dúvida sobre "ignoreIps = {}", pode deixar esse campo vazio que não influencia nada, mais o correto era colocar ips de LanHouse ae dentro para que eles não sejam blokeados. --[[ Anti Multi-Client System ]]-- local config = { msg = "Notorious Anti-MC System has detected that you are multi clienting.", maxMultiClients = 2, allowGroupId = 2, ignoreIps = {}, seconds = 10 -- segundos para ser kikado. } function onLogin(cid) if getPlayerGroupId(cid) >= config.allowGroupId then return TRUE end local number local playersOnline = getPlayersOnline() for _, pid in pairs(playersOnline) do local pip = getPlayerIp(pid) if cid ~= pid and getPlayerIp(cid) == pip and not isInArray(config.ignoreIps, doConvertIntegerToIp(getPlayerIp(cid))) then number = (number or 0) + 1 if number > config.maxMultiClients then config.msg = config.msg.."/n".."You will be kick in"..config.seconds.."seconds." doPlayerPopupFYI(cid, config.msg) addEvent(removePlayer, 1000*config.seconds, cid) end end end return TRUE end function removePlayer(cid) if isPlayer(cid) then doRemoveCreature(cid) end end
-
Então no teu taskcount.lua poe: function onKill(cid, target) local n = getCreatureName(target) if isPlayer(target) then n = "player" end local name_monster = tasktabble[string.lower(n)] if(name_monster and getPlayerStorageValue(cid,name_monster.storage_start) >= 1) then local contagem = getPlayerStorageValue(cid, name_monster.storage) if (contagem == -1) then contagem = 1 end if not tonumber(contagem) then return true end if contagem > name_monster.count then return true end setPlayerStorageValue(cid, name_monster.storage, contagem+1) if contagem == name_monster.count then doPlayerSendTextMessage(cid, 18, "Congratulations! You finished the task of "..n) end end return TRUE end E no SimpletaskLib.lua poe uma nova linha com o nome player: ["player"] = {storage_start = 200240, storage = 91040,count = 1,exp = 10000,reward = {{2656,1},{7730,1},{2152,20}}}
- 9 respostas
-
- é possível...
- otserv
-
(e 1 mais)
Tags:
-
Funciona, basta configurar o nome do player na task: ["jhon992"] = {storage_start = 200240, storage = 91040,count = 1,exp = 10000,reward = {{2656,1},{7730,1},{2152,20}}} Não era isso que você queria?
- 9 respostas
-
- é possível...
- otserv
-
(e 1 mais)
Tags:
-
asuhdau oks. Reportado para moverem para atendidos! Estou vendo que você é um membro novo, então la vai as dicas: Sempre que um pedido ou duvida sua forem resolvidos, clique no botão denunciar e reporte para que um moderador mova o tópico para área de resolvidos, assim mantendo o fórum mais limpo e organizado. E como gratidão ao usuário que lhe ajudou, repute ele clicando na setinha verde abaixo de seu post.
-
É mesmo, já vi o mesmo problema em algum tópico vou dar uma procurada, caso encontre edito esse meu post. Senão espera que alguém aparece pra ajudar.
-
Não é necessário cobrar dinheiro pra desbugar, se buga só no level 631 troca isso: if getPlayerLevel(cid) >= 631 then por isso: if getPlayerLevel(cid) == 631 then Assim vai executar o script só se o player tiver level 631, senão toda hora que ele logar com level maior que isso e tiver dinheiro com ele o dinheiro sera removido automaticamente e sera adicionado mais 1 level. E essa função "addLevel(cid,1)" funciona? Nunca vi antes.
-
Claro.
-
function getPosfromArea1(cid,area) icenter = math.floor(table.getn(area)/2)+1 jcenter = math.floor(table.getn(area[1])/2)+1 center = area[icenter] ivar = table.getn(area) jvar = table.getn(area[1]) i = table.getn(area)^2 j = table.getn(area[1])^2 if center[jcenter] == 3 then if getPlayerLookDir(cid) == 0 then signal = {-1,1,1,2} elseif getPlayerLookDir(cid) == 1 then signal = {1,-1,2,1} elseif getPlayerLookDir(cid) == 2 then signal = {1,-1,1,2} else signal = {-1,1,2,1} end else signal = {-1,1,1,2} end POSITIONS = {} P = 0 repeat pvar = {0,0} I = area[ivar] J = I[jvar] i = i-1 j = j-1 if J == 1 then if jvar < jcenter then pvar[signal[3]] = signal[1]*math.abs((jcenter-jvar)) elseif jvar > jcenter then pvar[signal[3]] = signal[2]*math.abs((jcenter-jvar)) end if ivar < icenter then pvar[signal[4]] = signal[1]*math.abs((icenter-ivar)) elseif ivar > icenter then pvar[signal[4]] = signal[2]*math.abs((icenter-ivar)) end end if jvar > 1 then jvar = (jvar-1) elseif ivar > 1 then jvar = table.getn(area[1]) ivar = (ivar-1) end local pos = getThingPos(cid) local areapos = {x=pos.x+(pvar[1]),y=pos.y+(pvar[2]),z=pos.z} if pos.x ~= areapos.x or pos.y ~= areapos.y then P = P+1 POSITIONS[P] = areapos end until i <= 0 and j <= 0 return POSITIONS end function doPushCreature1(cid,uid,direction,distance,time) if isCreature(uid) == TRUE then local rand = (2*math.random(0,1))-1 local rand2 = math.random(-1,0) if direction == 0 then signal = {0,rand,-rand,rand,-rand,0,-1,-1,-1,0,0,0} elseif direction == 1 then signal = {1,1,1,0,0,0,0,rand,-rand,rand,-rand,0} elseif direction == 2 then signal = {0,rand,-rand,rand,-rand,0,1,1,1,0,0,0} elseif direction == 3 then signal = {-1,-1,-1,0,0,0,0,rand,-rand,rand,-rand,0} elseif direction == 4 then signal = {-1,rand2,(-rand2)-1,0,1,rand2+1,rand2,0} elseif direction == 5 then signal = {1,-rand2,-((-rand2)-1),0,1,rand2+1,rand2,0} elseif direction == 6 then signal = {-1,rand2,(-rand2)-1,0,-1,(-rand2)-1,rand2,0} else signal = {1,-rand2,-((-rand2)-1),0,-1,(-rand2)-1,rand2,0} end local pos = getThingPos(uid) nsig = #signal nvar = 0 repeat nvar = nvar+1 newpos = {x=pos.x+(signal[nvar]),y=pos.y+(signal[(nsig/2)+nvar]),z=pos.z} newtile = {x=newpos.x,y=newpos.y,z=newpos.z,stackpos=0} until getTileThingByPos(newtile).uid ~= 0 and hasProperty(getTileThingByPos(newtile).uid,3) == FALSE and queryTileAddThing(uid,newpos) == 1 or nvar == (nsig/2) if distance == nil or distance == 1 then local hit = math.random((getPlayerLevel(cid) * 0.90 + getPlayerMagLevel(cid) * 0.70) * 1.0,(getPlayerLevel(cid) * 1.00 + getPlayerMagLevel(cid) * 0.80) * 1.0) doTeleportThing(uid,newpos,TRUE) doSendMagicEffect(getCreaturePosition(uid), 43) -- 12, effect ao acertar o player. if getCreatureHealth(uid) > hit then if getCreatureHealth(uid) > 0 then doSendAnimatedText(getCreaturePosition(uid), hit, 144) end doCreatureAddHealth(uid, -hit) else if getCreatureHealth(uid) > 0 then doSendAnimatedText(getCreaturePosition(uid), getCreatureHealth(uid), 144) end doCreatureAddHealth(uid, -getCreatureHealth(uid)) end else distance = distance-1 doTeleportThing(uid,newpos,TRUE) if time ~= nil then addEvent(doPushCreature1,time,cid,uid,direction,distance,time) else addEvent(doPushCreature1,500,cid,uid,direction,distance,500) end end end end function onCastSpell(cid, words, param) local function UM(cid) local area = { {0, 0, 0}, {0, 0, 0}, {1, 1, 1}, {0, 1, 0}, {0, 3, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, } pos = getPosfromArea1(cid,area) n = 0 while n < #pos do n = n+1 doSendMagicEffect(pos[n],2) thing = {x=pos[n].x,y=pos[n].y,z=pos[n].z,stackpos=253} if isCreature(getThingfromPos(thing).uid) == TRUE then doPushCreature1(cid, getThingfromPos(thing).uid,getPlayerLookDir(cid)) end end end local function DOIS(cid) local area = { {1, 1, 1}, {1, 1, 1}, {0, 0, 0}, {0, 0, 0}, {0, 3, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, } pos = getPosfromArea1(cid,area) n = 0 while n < #pos do n = n+1 doSendMagicEffect(pos[n],2) thing = {x=pos[n].x,y=pos[n].y,z=pos[n].z,stackpos=253} if isCreature(getThingfromPos(thing).uid) == TRUE then doPushCreature1(cid, getThingfromPos(thing).uid,getPlayerLookDir(cid)) end end end doSendAnimatedText(getThingPos(cid), "Ice", 215) addEvent(UM, 1, cid) addEvent(DOIS, 300, cid) return TRUE end
-
Da sim, só o taskcount.lua muda pra esse: function onKill(cid, target) local n = getCreatureName(target) local name_monster = tasktabble[string.lower(n)] if(name_monster and getPlayerStorageValue(cid,name_monster.storage_start) >= 1) then local contagem = getPlayerStorageValue(cid, name_monster.storage) if (contagem == -1) then contagem = 1 end if not tonumber(contagem) then return true end if contagem > name_monster.count then return true end setPlayerStorageValue(cid, name_monster.storage, contagem+1) if contagem == name_monster.count then doPlayerSendTextMessage(cid, 18, "Congratulations! You finished the task of "..n) end end return TRUE end E configura a lib com o nome do player que você quiser.
- 9 respostas
-
- é possível...
- otserv
-
(e 1 mais)
Tags:
-
dúvida Como Colocar Exausted No Comando !resetar Em 1 Minuto
pergunta respondeu ao rodrigo031204 de jhon992 em Scripts
--[[ <(Advanced Reset System 2.0)> -=[Características]=- ~( Versão 2.0 )~ - Resets agora Armazenados na DataBase; (Sem Valor de Storage) - Instala o System e cria a Tabela de Resets com o comando "/installreset"; - Resets no Look do jogador ex: 22:10 You see Marcello [Reset 2] (Level 8). He is an elder druid.; - [sTAGES] para "Premium Account" e "Free Account"; ]] --=[Functions]=-- -- installReset()' [instala o Sistema.] -- tableResetInstall()' [Verifica Se o Sistema ja foi instaladao.] -- nowReseting()' [Verifica, retorna o erro ou reseta.] -- getPlayerReset(cid)' [Pega numero de resets do player.] -- checLevelStageReset(cid)' [Verifica o Level para Resetar.] -- newReset(cid)' [Verifica todas as Condições de Reset.] -- addValue(value)' [Adiciona numero de resets.] --=[Comandos de Jogadores]=-- -- "/installreset" -- Só será usado uma vez, para instalar o sistema. -- "!resetar" -- Para Resetar. function onSay(cid, words, param) if words =="!resetar" then --[ Condições de Reset ] -- local coNdConf = { needPz = false, -- Precisa estar em Pz pra resetar? [true, false] needPa = false, -- Precisa ser Premium Account Pra resetar? [true, false] withe = false, -- Players com Pk Withe podem resetar? [true, false] red = true, -- Players com Pk Red pode resetar? [true, false] battle = false, -- Players precisão estar sem battle pra resetar? [true, false] teleport = false, -- Teleportar Player para o templo após resetar? [true, false] look = true, -- Aparecer Resets no Look do Player? [true, false] pid = getPlayerGUID(cid), -- Não Mexer. --[ Configurações do Reset ] -- resetConf = { Level = 350, -- Level Necessário para Resetar. [Valor] backLvl = 8, -- Level que voltará após o Reset. [Valor] time = 2, -- Tempo para o Player deslogar ao resetar, em segundos. [Valor] exausted = 30 -- Exausted em segundos. }, } --[[>> STAGES <<]]-- x=true;X=true -- Não Mexer. local stage = {Abilitar = {x}, Desabilitar = {}, --<< Abilitar Stages?? >>-- [{x};{}] -- [RESETS] | [PREMMY] | [FREE] stage1= {resets= 4, premmy= 350, free= 350}, stage2= {resets= 9, premmy= 360, free= 360}, -- EXPLICANDO e Configurando stages. (Se estiver Abilitado [Abilitar = {x}]) stage3= {resets= 14, premmy= 370, free= 370}, -- resets = Número de resets para o Stage; stage4= {resets= 19, premmy= 380, free= 380}, -- premmy = Level necessário para Premium Accounts; stage5= {resets= 24, premmy= 390, free= 390}, -- free = Level necessário para Free Accounts; stage6= {resets= 29, premmy= 400, free= 400}, -- Coloque em Ordem... stage7= {resets= 34, premmy= 420, free= 420}, -- [OBS: MARQUE UM "X" PARA ABILITAR OU DESABILITAR OS STAGES] stage8= {resets= 39, premmy= 440, free= 440}, -- EX: para desabilitar mude: Abilitar = {}, Desabilitar = {x} stage9= {resets= 44, premmy= 460, free= 460}, stage10={resets= 49, premmy= 480, free= 480}, stage11={resets= 54, premmy= 500, free= 500}, stage12={resets= 59, premmy= 525, free= 525}, stage13={resets= 64, premmy= 550, free= 550}, stage14={resets= 69, premmy= 575, free= 575}, stage15={resets= 74, premmy= 600, free= 600}, stage16={resets= 79, premmy= 650, free= 650}, stage17={resets= 84, premmy= 700, free= 700}, stage18={resets= 89, premmy= 750, free= 750}, stage19={resets= 94, premmy= 800, free= 800}, stage20={resets= 99, premmy= 1000, free= 1000}, } --[[>> FIM STAGES <<]]-- if getPlayerStorageValue(cid, 43216) > os.time() then doPlayerSendCancel(cid, "You are exausted, wait "..(getPlayerStorageValue(cid, 43216) - os.time()).." seconds.") return true end --=[Pega Valor de Resets]=-- function getPlayerReset(cid) local qr = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..coNdConf.pid..";") rss = qr:getDataInt("reset", coNdConf.pid) if rss < 0 then rss = 0 end return rss end local success = " ~~ Sucesso! ~~ \nVocê tem agora "..(getPlayerReset(cid)+1).." resets. \nVocê será deslogado em "..coNdConf.resetConf.time.." segundos." ;err = doPlayerSendTextMessage local qrt = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..coNdConf.pid..";");rss_db = qrt:getDataInt("reset", coNdConf.pid) local lvl_query = "UPDATE `players` SET `level` = "..(coNdConf.resetConf.backLvl)..", `experience` = 0 WHERE `id`= " .. coNdConf.pid .. ";" local reset_query = "UPDATE `players` SET `reset` = "..(getPlayerReset(cid)+(1)).." WHERE `id`= " .. coNdConf.pid .. ";" local nolook_query = "UPDATE `players` SET `description` = '' WHERE `players`.`id`= " .. coNdConf.pid .. ";" local look_query = "UPDATE `players` SET `description` = ' [Reset "..(getPlayerReset(cid)+(1)).."]' WHERE `players`.`id`= " .. coNdConf.pid .. ";" --=[Reseta]=-- function addValue(value) if coNdConf.look == false then doRemoveCreature(cid) db.executeQuery(lvl_query);db.executeQuery(reset_query);db.executeQuery(nolook_query) else doRemoveCreature(cid) db.executeQuery(lvl_query);db.executeQuery(reset_query);db.executeQuery(look_query) return LUA_NO_ERROR end end function nowReseting() if (getPlayerLevel(cid) < coNdConf.resetConf.Level) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "- Level Necessário Para o Reset ["..coNdConf.resetConf.Level.."]. Faltam "..coNdConf.resetConf.Level-getPlayerLevel(cid).." level's para você Resetar. -") return true end if getPlayerLevel(cid) >= coNdConf.resetConf.Level and (coNdConf.teleport == false) then doPlayerPopupFYI(cid, success) setPlayerStorageValue(cid, 43216, os.time()+coNdConf.resetConf.exausted) addEvent(addValue, coNdConf.resetConf.time*1000, value) else doPlayerPopupFYI(cid, success) setPlayerStorageValue(cid, 43216, os.time()+coNdConf.resetConf.exausted) addEvent(doTeleportThing, coNdConf.resetConf.time*900, cid, getTownTemplePosition(getPlayerTown(cid))) addEvent(addValue, coNdConf.resetConf.time*1000, value) return true end end --[sTAGES Nao mexer em nada.]-- function checkLevelStageReset(cid) local stages = { {resets= stage.stage1.resets, premmy= stage.stage1.premmy, free= stage.stage1.free}, {resets= stage.stage2.resets, premmy= stage.stage2.premmy, free= stage.stage2.free}, {resets= stage.stage3.resets, premmy= stage.stage3.premmy, free= stage.stage3.free}, {resets= stage.stage4.resets, premmy= stage.stage4.premmy, free= stage.stage4.free}, {resets= stage.stage5.resets, premmy= stage.stage5.premmy, free= stage.stage5.free}, {resets= stage.stage6.resets, premmy= stage.stage6.premmy, free= stage.stage6.free}, {resets= stage.stage7.resets, premmy= stage.stage7.premmy, free= stage.stage7.free}, {resets= stage.stage8.resets, premmy= stage.stage8.premmy, free= stage.stage8.free}, {resets= stage.stage9.resets, premmy= stage.stage9.premmy, free= stage.stage9.free}, {resets=stage.stage10.resets, premmy=stage.stage10.premmy, free=stage.stage10.free}, {resets=stage.stage11.resets, premmy=stage.stage11.premmy, free=stage.stage11.free}, {resets=stage.stage12.resets, premmy=stage.stage12.premmy, free=stage.stage12.free}, {resets=stage.stage13.resets, premmy=stage.stage13.premmy, free=stage.stage13.free}, {resets=stage.stage14.resets, premmy=stage.stage14.premmy, free=stage.stage14.free}, {resets=stage.stage15.resets, premmy=stage.stage15.premmy, free=stage.stage15.free}, {resets=stage.stage16.resets, premmy=stage.stage16.premmy, free=stage.stage16.free}, {resets=stage.stage17.resets, premmy=stage.stage17.premmy, free=stage.stage17.free}, {resets=stage.stage18.resets, premmy=stage.stage18.premmy, free=stage.stage18.free}, {resets=stage.stage19.resets, premmy=stage.stage19.premmy, free=stage.stage19.free}, {resets=stage.stage20.resets, premmy=stage.stage20.premmy, free=stage.stage20.free}, } local resets = getPlayerReset(cid) for i, tab in ipairs(stages) do if resets <= tab.resets then coNdConf.resetConf.Level = isPremium(cid) and tab.premmy or tab.free break end end if (getPlayerLevel(cid) < coNdConf.resetConf.Level) then err(cid, MESSAGE_STATUS_CONSOLE_BLUE, "- Level Necessário Para o Reset ["..coNdConf.resetConf.Level.."]. Faltam "..coNdConf.resetConf.Level-getPlayerLevel(cid).." level's para você Resetar. -") return TRUE end if getPlayerLevel(cid) >= coNdConf.resetConf.Level and (coNdConf.teleport == false) then doPlayerPopupFYI(cid, success) setPlayerStorageValue(cid, 43216, os.time()+coNdConf.resetConf.exausted) addEvent(addValue, coNdConf.resetConf.time*1000, value) else doPlayerPopupFYI(cid, success) setPlayerStorageValue(cid, 43216, os.time()+coNdConf.resetConf.exausted) addEvent(addValue, coNdConf.resetConf.time*1000, value) addEvent(doTeleportThing, coNdConf.resetConf.time*900, cid, getTownTemplePosition(getPlayerTown(cid))) return true end end function newReset(cid) if(coNdConf.needPz == true) and (getTilePzInfo(getCreaturePosition(cid)) == LUA_ERROR) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa estar em Protection Zone Para Resetar. -") return TRUE end if(coNdConf.needPa == true) and not isPremium(cid) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa ser Premium Account para Resetar. -") return TRUE end if(coNdConf.withe == false) and (getCreatureSkullType(cid) == 3) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você não pode resetar em condições de PK Withe. -") return TRUE end if(coNdConf.red == false) and (getCreatureSkullType(cid) == 4) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você não pode resetar em condições de PK Red. -") return TRUE end if(coNdConf.battle == true) and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa estar sem Battle para Resetar. -") return TRUE end local xy = {true,false} table.insert(stage.Abilitar, false) table.insert(stage.Desabilitar, false) if not exhaustion.check(cid, 26588) then if stage.Abilitar[1] == xy[1] and stage.Desabilitar[1] == xy[2] then checkLevelStageReset(cid) elseif stage.Abilitar[1] == xy[2] and stage.Desabilitar[1] == xy[1] then nowReseting() exhaustion.set(cid, 26588, 60*1000) else doPlayerPopupFYI(cid, "LUA_ERROR; Configure corretamente o Sistema de STAGES!") end end return true end function tableResetInstall() print(not rss_db and LUA_ERROR or "Tabela de Resets: Instalada ... [success] ") addEvent(newReset, 1000, cid) return false end if tableResetInstall() then end end --=[install System]=-- function installReset() if db.executeQuery("ALTER TABLE `players` ADD reset INT(11) NOT NULL DEFAULT 0;") then print("[MarcelloMkez] -= Advanced Reset System 2.0 por DataBase =- Instalado com sucesso!") return TRUE end print('[Advanced Reset System/MarcelloMkez] Não foi possível instalar o Sistema.') return FALSE end local tt = { "Preparando Instalação...", "Instalando: TableReset Db...", "Instalando: getPlayerReset()...", "Instalando: addValue()...", "Instalando: checkLevelStageReset()...", "Instalando: newReset() and nowReseting()...", "Finalizando Instalação...", "...", success = { "Iniciando...", "function: TableReset Db... [success]", "function: getPlayerReset()... [success]", "function: addValue(value)... [success]", "function: checkLevelStageReset()... [success]", "function: newReset() and nowReseting()... [success]", "Fim da Instalação. ", "by: ~~ MarcelloMkez ~~ \nContato: marcello_dirt@hotmail.com", inst = {"MarcelloMkez","Advanced Reset System 2.0 por DataBase" }, }, } if words == "/installreset" and getPlayerAccess(cid) >= 3 then function install() if installReset() then print(""..tt.success[7].."") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,""..tt.success[8].."") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "["..tt.success.inst[1].."] -="..tt.success.inst[2].."=- Instalado com sucesso!") else print("["..tt.success.inst[1].."] FALHA NA INSTALAÇÃO! [O sistema ja foi instalado].") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "["..tt.success.inst[1].."] FALHA NA INSTALAÇÃO! [O sistema ja foi instalado].") end return 1 end function concl(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[7].."") print(""..tt[8].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[7].."") doPlayerSendTextMessage(cid, typetx,""..tt[8].."") addEvent(install, 1000,cid) end function finall(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[6].."") print(""..tt[7].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[6].."") doPlayerSendTextMessage(cid, typetx,""..tt[7].."") addEvent(concl, 3000,cid) end function installDd(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[5].."") print(""..tt[6].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[5].."") doPlayerSendTextMessage(cid, typetx,""..tt[6].."") addEvent(finall, 1000,cid) end function installCc(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[4].."") print(""..tt[5].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[4].."") doPlayerSendTextMessage(cid, typetx,""..tt[5].."") addEvent(installDd, 1000,cid) end function installBb(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[3].."") print(""..tt[4].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[3].."") doPlayerSendTextMessage(cid, typetx,""..tt[4].."") addEvent(installCc, 1000,cid) end function installAa(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[2].."") print(""..tt[3].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[2].."") doPlayerSendTextMessage(cid, typetx,""..tt[3].."") addEvent(installBb, 1000,cid) end function toInstall() local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[1].."") print(""..tt[2].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[1].."") doPlayerSendTextMessage(cid, typetx,""..tt[2].."") addEvent(installAa, 1000,cid) end function preparation() local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt[1].."") doPlayerSendTextMessage(cid, typetx,""..tt[1].."") addEvent(toInstall, 3000,cid) end if preparation() then end end return 1 end -
Em data/creaturescripts/scripts, duplica um arquivo e nomeia para "vipname" sem as aspas e nele cole: function pegarNome(name) return string.sub(name, 7) end function onLogin(cid) local name = getCreatureName(cid) local nome = getPlayerGUID(cid) if isPremium(cid) then if string.sub(name, 1,6) == "[VIP] " then return true else db.executeQuery("UPDATE `players` SET `name` = '[VIP] "..name.."' WHERE `id`= " .. nome .. ";") doPlayerSendTextMessage(cid,19,"You go kicked in 10 seconds for update you name.") addEvent(doRemoveCreature,10000,cid) end else if string.sub(name, 1,6) == "[VIP] " then db.executeQuery("UPDATE `players` SET `name` = '"..pegarNome(getCreatureName(cid)).."' WHERE `id`= " .. nome .. ";") doPlayerSendTextMessage(cid,19,"You go kicked in 10 seconds for update you name.") addEvent(doRemoveCreature,10000,cid) end end return true end Após em data/creaturescripts/creaturescripts.xml cole a tag: <event type="login" name="vipname" event="script" value="vipname.lua"/> Créditos: @SkyDangerous. Caso seja solucionado seu pedido, clique em denunciar abaixo para reportar o tópico a um moderador. Sendo assim movido para pedidos atendidos.
-
@jhonatanpp, que mão de obra hem isso você podia fazer sozinho. kkk ta aew: A unica diferença foi que nas funções ao envez de eu usar: if isPlayer(parameters.cid) then Usei direto o: if isPlayer(cid) then Porque as funções recebiam diretamente o "cid" no seu cabeçalho, e não uma variavel com varios campos como no primeiro script postado. Se sua duvida foi resolvida, use o botão denunciar para reportar o tópico pedindo para move-lo para resolvidos.
-
notícia Teaser #1 – Pequena, Mas Poderosa!
tópico respondeu ao Mophus de jhon992 em Notícias e Discussões - Tibia Global
Ótima noticia, pelo visto o update de verão vai ser bom. -
É mesmo, só resolvi os erros caso o player deslogase, nem me liguei em remover os eventos com o onDeEquip. To viajando, acho que é o ferrugem
-
Pra tu poder arrumar todas, precisa entender um pouco de logica de programação ou scripting. Vamos ao script então, vou tentar te explicar um pouco e por consequência ajudar todos que tenham essa mesma duvida que você. Esse erro ocorre nas funções chamadas pelo "addEvent", então em todas as funções que ele chamar você deve fazer um tratamento para que não ocorra esse erro. Exemplo: Nesta linha de código, addEvent(onCastSpell2, 300, parameters) Ordena a execução da função "onCastSpell2" após 300 mile segundos, passando como informação a variável "parameters". Variável - É um campo na memoria que guarda informações. Nesta linha é criada a variável "parameters" recebendo seus determinados valores: local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat3 = combat3, combat4 = combat4, combat5 = combat5, combat6 = combat6, combat7 = combat7, combat8 = combat8, combat9 = combat9, combat10 = combat10 } O erro que ocorre é que o script manda executar a função após 300 mile segundos, só que ao executar a função, se o player não estiver online vai gerar um erro dizendo que o player não foi encontrado. Para resolver o erro no script você precisa ir na função que o "addEvent" executa: local function onCastSpell2(parameters) doCombat(parameters.cid, parameters.combat2, parameters.var) end E fazer uma verificação para saber se o player realmente esta presente na hora da execução: local function onCastSpell2(parameters) if isPlayer(parameters.cid) then doCombat(parameters.cid, parameters.combat2, parameters.var) end end Como pode ver é adicionado essa linha após o inicio da função: if isPlayer(parameters.cid) then E essa linha no final para finalizar a verificação: end Você precisa fazer esse mesmo procedimento em todos os script que utiliza "addEvent" para poder resolver todos os erros.
-
arrumei la em cima, tenta agora.
-
To sem tempo pra testar, mais parece legal. Parabéns! Rep+, e continue trazendo conteúdo bom para o fórum.
- 10 respostas
-
- card sytem
- pet sytem
- (e 5 mais)
-
Esse ero acontece devido ao addevent, que as vezes antes de executar o player desloga, morre ou algo do tipo. Basta nas funções verificar se o parametro é valido como um player. Script resolvido: local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 3) setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, 46) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -1.2, 0, -1.3, 0) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, 3) setCombatParam(combat2, COMBAT_PARAM_DISTANCEEFFECT, 46) setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -1.2, 0, -1.3, 0) local combat3 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat3, COMBAT_PARAM_EFFECT, 3) setCombatParam(combat3, COMBAT_PARAM_DISTANCEEFFECT, 46) setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -1.2, 0, -1.3, 0) local combat4 = createCombatObject() setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat4, COMBAT_PARAM_EFFECT, 3) setCombatParam(combat4, COMBAT_PARAM_DISTANCEEFFECT, 46) setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -1.2, 0, -1.3, 0) local combat5 = createCombatObject() setCombatParam(combat5, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat5, COMBAT_PARAM_EFFECT, 3) setCombatParam(combat5, COMBAT_PARAM_DISTANCEEFFECT, 46) setCombatFormula(combat5, COMBAT_FORMULA_LEVELMAGIC, -1.2, 0, -1.3, 0) local combat6 = createCombatObject() setCombatParam(combat6, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat6, COMBAT_PARAM_EFFECT, 3) setCombatParam(combat6, COMBAT_PARAM_DISTANCEEFFECT, 46) setCombatFormula(combat6, COMBAT_FORMULA_LEVELMAGIC, -1.2, 0, -1.3, 0) local combat7 = createCombatObject() setCombatParam(combat7, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat7, COMBAT_PARAM_EFFECT, 3) setCombatParam(combat7, COMBAT_PARAM_DISTANCEEFFECT, 46) setCombatFormula(combat7, COMBAT_FORMULA_LEVELMAGIC, -1.2, 0, -1.3, 0) local combat8 = createCombatObject() setCombatParam(combat8, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat8, COMBAT_PARAM_EFFECT, 3) setCombatParam(combat8, COMBAT_PARAM_DISTANCEEFFECT, 46) setCombatFormula(combat8, COMBAT_FORMULA_LEVELMAGIC, -1.2, 0, -1.3, 0) local combat9 = createCombatObject() setCombatParam(combat9, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat9, COMBAT_PARAM_EFFECT, 3) setCombatParam(combat9, COMBAT_PARAM_DISTANCEEFFECT, 46) setCombatFormula(combat9, COMBAT_FORMULA_LEVELMAGIC, -1.2, 0, -1.3, 0) local combat10 = createCombatObject() setCombatParam(combat10, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat10, COMBAT_PARAM_EFFECT, 3) setCombatParam(combat10, COMBAT_PARAM_DISTANCEEFFECT, 46) setCombatFormula(combat10, COMBAT_FORMULA_LEVELMAGIC, -1.2, 0, -1.3, 0) local function onCastSpell1(parameters) if isPlayer(parameters.cid) then doCombat(parameters.cid, parameters.combat1, parameters.var) end end local function onCastSpell2(parameters) if isPlayer(parameters.cid) then doCombat(parameters.cid, parameters.combat2, parameters.var) end end local function onCastSpell3(parameters) if isPlayer(parameters.cid) then doCombat(parameters.cid, parameters.combat3, parameters.var) end end local function onCastSpell4(parameters) if isPlayer(parameters.cid) then doCombat(parameters.cid, parameters.combat4, parameters.var) end end local function onCastSpell5(parameters) if isPlayer(parameters.cid) then doCombat(parameters.cid, parameters.combat5, parameters.var) end end local function onCastSpell6(parameters) if isPlayer(parameters.cid) then doCombat(parameters.cid, parameters.combat6, parameters.var) end end local function onCastSpell7(parameters) if isPlayer(parameters.cid) then doCombat(parameters.cid, parameters.combat7, parameters.var) end end local function onCastSpell8(parameters) if isPlayer(parameters.cid) then doCombat(parameters.cid, parameters.combat8, parameters.var) end end local function onCastSpell9(parameters) if isPlayer(parameters.cid) then doCombat(parameters.cid, parameters.combat9, parameters.var) end end local function onCastSpell10(parameters) if isPlayer(parameters.cid) then doCombat(parameters.cid, parameters.combat9, parameters.var) end end function onCastSpell(cid, var) local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat3 = combat3, combat4 = combat4, combat5 = combat5, combat6 = combat6, combat7 = combat7, combat8 = combat8, combat9 = combat9, combat10 = combat10 } addEvent(onCastSpell1, 0, parameters) addEvent(onCastSpell2, 300, parameters) addEvent(onCastSpell3, 600, parameters) addEvent(onCastSpell4, 900, parameters) addEvent(onCastSpell5, 1200, parameters) addEvent(onCastSpell6, 1500, parameters) addEvent(onCastSpell7, 1800, parameters) addEvent(onCastSpell8, 2100, parameters) addEvent(onCastSpell9, 2400, parameters) addEvent(onCastSpell10, 2700, parameters) end * Se sua dúvida for sanada, use o botão denunciar para que um moderador venha e mova o tópico.
-
function onEquip(cid, item, position, fromPosition) local i = 1 while i <= 61 do addEvent(addSoulMana, i*2000, cid) i = i+1 doPlayerSendTextMessage(cid,25,"Regenerando soul.") doSendMagicEffect(getPlayerPosition(cid), 14) end return true end function addSoulMana(cid) if isPlayer(cid) then doPlayerAddSoul(cid, 3) doPlayerAddMana(cid, -10150) end end
-
function onKill(cid, target) if isPlayer(cid) and isPlayer(target) then local skill = getPlayerSkillLevel(cid, SKILL_FIST) local tries = 1 while (skill == getPlayerSkillLevel(cid, SKILL_FIST)) do doPlayerAddSkillTry(cid, SKILL_FIST, tries) end end return true end function onPrepareDeath(cid, deathList) if isPlayer(cid) then local skill = getPlayerSkillLevel(cid, SKILL_CLUB) local tries = 1 while (skill == getPlayerSkillLevel(cid, SKILL_CLUB)) do doPlayerAddSkillTry(cid, SKILL_CLUB, tries) end end return true end Assim fica funcional, você só precisa por algum script pra não perder skills quando o player morrer.
-
local quantSqm = 3 -- quantidade de sqms function teleportPlayer(cid, position) if (isPlayer(cid)) then local o = 1 local positions = {} for i=1, quantSqm do if getPlayerLookDir(cid) == 0 then position = {x=position.x, y=position.y-1, z=position.z} elseif getPlayerLookDir(cid) == 1 then position = {x=position.x+1, y=position.y, z=position.z} elseif getPlayerLookDir(cid) == 2 then position = {x=position.x, y=position.y+1, z=position.z} elseif getPlayerLookDir(cid) == 3 then position = {x=position.x-1, y=position.y, z=position.z} end if isWalkable(position) then o = o+1 end positions[#positions+1] = position end if o > quantSqm then doTeleportThing(cid, position) for i=1, #positions do doSendMagicEffect(positions[i], CONST_ME_TELEPORT) end return true else doPlayerSendCancel(cid, "Você não pode atravesar isso!") return false end end end function isWalkable(pos, creature, pz, proj) -- nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end local creature = getTopCreature(pos) if creature.type > 0 then return false end if getTilePzInfo(pos) and not pz then return false end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function onCastSpell(cid, var) if teleportPlayer(cid, getPlayerPosition(cid)) then return true end end
-
Arrumei ali em cima pra soltar effect em todos os tiles, mais aqui ta pulando 3 certinho então n arrumei o oque você disse que pula 8.
-
local configs = { ids = {2148, 2152, 2160}, -- adicionado somente os dos dinheiros, mais pode adicionar qual id quiser. premium = true -- só premium usar o auto loot ? [true ou false] } function getItemsInContainerById(container, itemid) local items = {} if getContainerSize(container) > 0 then for slot=0, (getContainerSize(container)-1) do local item = getContainerItem(container, slot) if isContainer(item.uid) then local itemsbag = getItemsInContainerById(item.uid, itemid) for i=0, #itemsbag do table.insert(items, itemsbag[i]) end else if itemid == item.itemid then table.insert(items, item.uid) end end end end return items end function autoGold(cid, pos, stack) if stack > 255 then return true end local position = {x = pos.x, y = pos.y, z = pos.z, stackpos = stack} local tile = getThingFromPos(position) if isCorpse(tile.uid) then corpse = tile else autoGold(cid, pos, stack + 1) end if corpse ~= nil then for _, idmoney in pairs(configs.ids) do tab = getItemsInContainerById(corpse.uid, idmoney) if #tab ~= 0 then for _, uid in pairs(tab) do money = getPlayerMoney(cid) item = getThing(uid) doPlayerRemoveMoney(cid, money) doPlayerAddMoney(cid, money+item.type) doRemoveItem(item.uid, item.type) end end end end end function onKill(cid, target) if not isPremium(cid) and configs.premium then return true end return addEvent(autoGold, 10, cid, getCreaturePosition(target), 0) end
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.