Ir para conteúdo
  • 0

Fábrica de Scripts


LuckOake

Pergunta

Olá galera.

 

Tava aqui de boa sem o que fazer, aí tive essa ideia de fazer um tópico pros membros pedirem scripts simples.

 

Regrinhas:

  1. NÃO PEÇA EVENTOS AQUI, SÓ SCRIPTS OU SISTEMAS SIMPLES;
  2. NÃO PEÇA SCRIPTS QUE JÁ EXISTEM;
  3. Se você quer algum script que está sendo vendido em algum lugar, poste aqui que eu faço pra você. Nesse tipo de caso, a regra número 1 pode ser desobedecida;
  4. Sem floods, comentários ou conversas no tópico;
  5. Por uma questão de organização, não gostaria que outros usuários sem minha permissão postassem scripts prontos para resolver pedidos aqui. Se quiserem resolver o pedido de um usuário, mande PM pra ele ou crie um tópico e poste;
  6. Faço qualquer tipo de script desde que seja da versão 8.54 até a 9.8;
  7. Não faço scripts para TFS 1.0;
  8. Não peça scripts ou sistemas que envolvam sources;
  9. Somente scripts que envolvam no máximo dois arquivos serão feitos;
  10. Máximo de dois pedidos por vez para cada usuário;
  11. Use um português adequado e detalhe bem seu pedido. Pedidos pouco detalhados ou com português ruim serão ignorados. Se não for bom com português, ao menos TENTE escrever adequadamente.
  12. O Oneshot e o Manoel Neto tem permissão para atender pedidos no tópico. Oneshot trabalha como quer, do jeito que quer e quando quer. Obs: E odeia leechers.

Caso você não entenda o por quê de postar aqui ao invés de criar um tópico, pense no seguinte. Você quer um script bem feito, bem explicado e de fácil configuração ou um que qualquer usuário chega lá e faz? Garanto que todos os scripts que farei nesse tópico serão, no mínimo, de alta qualidade.

 

Abraços e aproveitem a oportunidade. Ao contrários dos outros tópicos de fábrica de scripts, aqui não vou tentar fazer. Se estiver dentro das regras, vou fazer.

Editado por LuckOake
Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

 

tentei assim, do jeito que tu disse acima /\, e tentei assim:

 

 

function onUse(cid, item)
    local door_pos = {x = 677, y = 1079, z = 7, stackpos = 1} -- Posição da porta
    local global_storage = 13895 -- Global Storage da lever que remove a porta
    local lever_istorage = 13896 -- Global Storage das levers erradas
    local lever_cstorage = 13897 -- Global Storage das levers corretas
    local door_id = 9118 -- ID da porta
    local back_time = 15 -- Tempo, em segundos, para a porta reaparecer
    local lever_pulled = 1945 -- ID da lever não puxada
    local lever_normal = 1946 -- ID da lever puxada
    local levers = {
        [19010] = {gstorage = lever_istorage, add = 1, n_aid = 19011},
        [19011] = {gstorage = lever_istorage, add = -1, n_aid = 19010},
        [19012] = {gstorage = lever_cstorage, add = 1, n_aid = 19013},
        [19013] = {gstorage = lever_cstorage, add = -1, n_aid = 19012},
        [19014] = door_pos,
    }
    
    if not levers[item.actionid].gstorage then
        if getGlobalStorageValue(global_storage) == 1 or getGlobalStorageValue(lever_istorage) ~= -1 or getGlobalStorageValue(lever_cstorage) < 1 then return true end
        
        doRemoveItem(getTileItemById(door_pos, door_id).uid, 1)
        setGlobalStorageValue(global_storage, 1)
        addEvent(function()
                    setGlobalStorageValue(global_storage, -1)
                    doCreateItem(door_id, 1, door_pos)
                end, back_time*1000)
    else
        setGlobalStorageValue(levers[item.actionid].gstorage, getGlobalStorageValue(levers[item.actionid].gstorage)+levers[item.actionid].add)
        doItemSetAttribute(item.uid, "aid", levers[item.actionid].n_aid)
    end
    doTransformItem(item.uid, item.itemid == lever_pulled and lever_normal or lever_pulled)
return true
end

 

 

 

Ambas as opções, não mechem a ultima alavanca, na qual tu mandou eu por ActionID: 19014

 

 

Rapaz, seu server deve estar com algum problema, pois aqui funcionou normalmente. Tente trocar as global storages de novo:

local global_storage = 13895 -- Global Storage da lever que remove a porta
local lever_istorage = 13896 -- Global Storage das levers erradas
local lever_cstorage = 13897 -- Global Storage das levers corretas

---------------------------------------------------------------------------------------------------------

 

Luck, sobre o sistema, seria possível adicionar experiencia como premio também na tabela? Obs: tentei adicionar expgain =

No aguardo, obrigado denovo.

 

Tá aqui:

 

local monsters = { -- [Nome] = {storage, quantia, recompensa {id, quantia}, experiência ganha},
    ["Troll"] = {storage = 18011, count = 1000, reward = {2160, 10}, exp_gain = 100},
    ["Orc"] = {storage = 18012, count = 700, reward = {2160, 10}, exp_gain = 100},
}
 
function onKill(cid, target)
    if monsters[getCreatureName(target)] then
        setPlayerStorageValue(cid, monsters[getCreatureName(target)].storage, getPlayerStorageValue(cid, monsters[getCreatureName(target)].storage) == -1 and 1 or getPlayerStorageValue(cid, monsters[getCreatureName(target)].storage)+1)
        local stor = getPlayerStorageValue(cid, monsters[getCreatureName(target)].storage)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getCreatureName(target).." killed: "..stor.."/"..monsters[getCreatureName(target)].count)
        if stor == monsters[getCreatureName(target)].count then
            doPlayerAddItem(cid, monsters[getCreatureName(target)].reward[1], monsters[getCreatureName(target)].reward[2])
            doPlayerAddExp(cid, monsters[getCreatureName(target)].exp_gain)
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You killed "..getCreatureName(target).." "..(monsters[getCreatureName(target)].count)..". You got "..(monsters[getCreatureName(target)].reward[2]).."x "..(getItemNameById(monsters[getCreatureName(target)].reward[1])).." as a reward.")
            setPlayerStorageValue(cid, monsters[getCreatureName(target)].storage, 0)
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Task reseted.")
        end
    end
return true
end

 

 

 

 

me adiciona no skype que eu te mostro por compartilhamento de tela, aí depois tu exclui, ta tudo certinho.

 

Skype: jonaathaan.rox

 

Desculpa não responder, eu não ví, meu server é 8.6.

Link para o comentário
Compartilhar em outros sites

  • 0

Luck eu tenho as sources aki,

 

Leia a regra número 8.

 

---------------------------------------------------------------------------------------------

 

me adiciona no skype que eu te mostro por compartilhamento de tela, aí depois tu exclui, ta tudo certinho.

 

Skype: jonaathaan.rox

 

Desculpa não responder, eu não ví, meu server é 8.6.

 

Qual rev é o server?

Link para o comentário
Compartilhar em outros sites

  • 0

 

Luck eu tenho as sources aki,

 

Leia a regra número 8.

 

---------------------------------------------------------------------------------------------

 

me adiciona no skype que eu te mostro por compartilhamento de tela, aí depois tu exclui, ta tudo certinho.

 

Skype: jonaathaan.rox

 

Desculpa não responder, eu não ví, meu server é 8.6.

 

Qual rev é o server?

 

 

TFS+0.3.7-r5969

Link para o comentário
Compartilhar em outros sites

  • 0

 

 

Luck eu tenho as sources aki,

 

Leia a regra número 8.

 

---------------------------------------------------------------------------------------------

 

me adiciona no skype que eu te mostro por compartilhamento de tela, aí depois tu exclui, ta tudo certinho.

 

Skype: jonaathaan.rox

 

Desculpa não responder, eu não ví, meu server é 8.6.

 

Qual rev é o server?

 

 

TFS+0.3.7-r5969

 

 

Não sei se você vai concordar, mas sugiro que você use a 0.4 rev3884. Essas versões 0.3.x não são muito legais, na minha opinião.

Link para o comentário
Compartilhar em outros sites

  • 0

 

 

 

Luck eu tenho as sources aki,

 

Leia a regra número 8.

 

---------------------------------------------------------------------------------------------

 

me adiciona no skype que eu te mostro por compartilhamento de tela, aí depois tu exclui, ta tudo certinho.

 

Skype: jonaathaan.rox

 

Desculpa não responder, eu não ví, meu server é 8.6.

 

Qual rev é o server?

 

 

TFS+0.3.7-r5969

 

 

Não sei se você vai concordar, mas sugiro que você use a 0.4 rev3884. Essas versões 0.3.x não são muito legais, na minha opinião.

 

 

Tem alguma base com source para me indicar ? De preferencia alguma que de pra compilar, sem erros :/

Editado por N4K4MUR4
Link para o comentário
Compartilhar em outros sites

  • 0

Deu certo o exp, só que agora que percebi, após matar o ultimo monstro é possível fazer novamente a task.. entao poderia colocar um storage para cada monstro que fosse concluida a task e nao repetir?

 

E outra cosinha, fazer aparecer a quantia de exp recebi em um animmatedtext, 215.

 

Muito obrigado novamento, no aguardo.

Editado por 0BoM
Link para o comentário
Compartilhar em outros sites

  • 0

Deu certo o exp, só que agora que percebi, após matar o ultimo monstro é possível fazer novamente a task.. entao poderia colocar um storage para cada monstro que fosse concluida a task e nao repetir?

 

E outra cosinha, fazer aparecer a quantia de exp recebi em um animmatedtext, 215.

 

Muito obrigado novamento, no aguardo.

 

Tó:

 

local monsters = { -- [Nome] = {storage, quantia, recompensa {id, quantia}, experiência ganha, storage após completar},
    ["Troll"] = {storage = 18011, count = 1000, reward = {2160, 10}, exp_gain = 100, completion_stor = 19011},
    ["Orc"] = {storage = 18012, count = 700, reward = {2160, 10}, exp_gain = 100, completion_stor = 19012},
}
 
function onKill(cid, target)
    if monsters[getCreatureName(target)] then
        setPlayerStorageValue(cid, monsters[getCreatureName(target)].storage, getPlayerStorageValue(cid, monsters[getCreatureName(target)].storage) == -1 and 1 or getPlayerStorageValue(cid, monsters[getCreatureName(target)].storage)+1)
        local stor = getPlayerStorageValue(cid, monsters[getCreatureName(target)].storage)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getCreatureName(target).." killed: "..stor.."/"..monsters[getCreatureName(target)].count)
        if stor == monsters[getCreatureName(target)].count then
            doPlayerAddItem(cid, monsters[getCreatureName(target)].reward[1], monsters[getCreatureName(target)].reward[2])
            doPlayerAddExp(cid, monsters[getCreatureName(target)].exp_gain)
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You killed "..getCreatureName(target).." "..(monsters[getCreatureName(target)].count)..". You got "..(monsters[getCreatureName(target)].reward[2]).."x "..(getItemNameById(monsters[getCreatureName(target)].reward[1])).." as a reward.")
            setPlayerStorageValue(cid, monsters[getCreatureName(target)].storage, 0)
            setPlayerStorageValue(cid, monsters[getCreatureName(target)].completion_stor, 1)
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Task reseted.")
        end
    end
return true
end

Link para o comentário
Compartilhar em outros sites

  • 0

Luck, pode adicionar no skype pra tu me ajudar com o problema do pedido ?

 

:/

 

Depois tu exclui..

 

 

@edit

 

Esta dando erro pra compilar. Eu estou usando Dev C++ e CodeBlocks, nenhum dos dois compila ;s

Editado por N4K4MUR4
Link para o comentário
Compartilhar em outros sites

  • 0

Ainda persistindo em fazer a task denovo!

E também não consigo fazer aparecer a quantia de exp recebida em animmationtext branco (215).

Muito obrigado, no aguardo.

 

Opa, é que não tinha entendido que não era pra resetar. Coloquei uma config para caso você queira ativar o desativar isso. Tó:

 

local monsters = { -- [Nome] = {storage, quantia, recompensa {id, quantia}, experiência ganha, storage após completar},
    ["Troll"] = {storage = 18011, count = 1000, reward = {2160, 10}, exp_gain = 100, completion_stor = 19011},
    ["Orc"] = {storage = 18012, count = 700, reward = {2160, 10}, exp_gain = 100, completion_stor = 19012},
}
local reset_on_complete = false -- Resetar a task ao completar? (true / false)
 
function onKill(cid, target)
    if monsters[getCreatureName(target)] then
        if getPlayerStorageValue(cid, monsters[getCreatureName(target)].storage) < monsters[getCreatureName(target)].count then
            setPlayerStorageValue(cid, monsters[getCreatureName(target)].storage, getPlayerStorageValue(cid, monsters[getCreatureName(target)].storage) == -1 and 1 or getPlayerStorageValue(cid, monsters[getCreatureName(target)].storage)+1)
            local stor = getPlayerStorageValue(cid, monsters[getCreatureName(target)].storage)
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getCreatureName(target).." killed: "..stor.."/"..monsters[getCreatureName(target)].count)
            if stor == monsters[getCreatureName(target)].count then
                doPlayerAddItem(cid, monsters[getCreatureName(target)].reward[1], monsters[getCreatureName(target)].reward[2])
                doPlayerAddExp(cid, monsters[getCreatureName(target)].exp_gain)
                doSendAnimatedText(getCreaturePosition(cid), tostring(monsters[getCreatureName(target)].exp_gain), 215)
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You killed "..getCreatureName(target).." "..(monsters[getCreatureName(target)].count)..". You got "..(monsters[getCreatureName(target)].reward[2]).."x "..(getItemNameById(monsters[getCreatureName(target)].reward[1])).." as a reward.")
                setPlayerStorageValue(cid, monsters[getCreatureName(target)].completion_stor, 1)
                if reset_on_complete then
                    setPlayerStorageValue(cid, monsters[getCreatureName(target)].storage, 0)
                    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Task reseted.")
                end
            end
        end
    end
return true
end

 

 

----------------------------------------------------------------------

Luck, pode adicionar no skype pra tu me ajudar com o problema do pedido ?

 

:/

 

Depois tu exclui..

 

 

@edit

 

Esta dando erro pra compilar. Eu estou usando Dev C++ e CodeBlocks, nenhum dos dois compila ;s

 

Seu Dev-C++ deve estar com problemas ou está desconfigurado, pois a source não possui erros.

Editado por LuckOake
Link para o comentário
Compartilhar em outros sites

  • 0

Bom, o LuckOake deixou o pupilo dele, no caso, eu, atender pedidos aqui na fábrica, para ganhar experiência. Eu tomei a liberdade de refazer o script de task automático, pedido por @0BoM.

MONSTER_TASKS = {
--	["NOME"] = {count = QUANTIDADE, reward = {{ITEM1, QUANTIDADE1}, {ITEM2, QUANTIDADE2}}},
--	Para dar experiência de prêmio, coloque "experience"
	["Troll"] = {count = 10, reward = {{2160, 10}, {"experience", 10}}},
}

function onKill(cid, target)
	local tmp = MONSTER_TASKS[getCreatureName(target)]
	if tmp then
		local name = getCreatureName(target):lower()
		local status_storage = name .."_status"
		if getCreatureStorage(cid, status_storage) == -1 then
			local count_storage = name .."_count"
			doCreatureSetStorage(cid, count_storage, math.max(getCreatureStorage(cid, count_storage), 0) + 1)
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getCreatureName(target) .." killed: ".. getCreatureStorage(cid, count_storage) .."/".. tmp.count ..".")
			if getCreatureStorage(cid, count_storage) >= tmp.count then
				for i=1,#tmp.reward do
					if tmp.reward[i][1] == "experience" then
						doPlayerAddExperience(cid, tmp.reward[i][2])
						doSendAnimatedText(getCreaturePosition(cid), tmp.reward[i][2], COLOR_WHITE)
					else
						doPlayerAddItem(cid, tmp.reward[i][1], tmp.reward[i][2])
					end
				end
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You have killed ".. tmp.count .." of ".. getCreatureName(target) ..". You have completed the task.")
				doCreatureSetStorage(cid, status_storage, 1)
			end
		end
	end
	return true
end 

Ficou bem legal, permite múltiplas recompensas, você não precisa configurar storages.

 

Abraços.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...