Ir para conteúdo
  • 0

POKE NASCE ALEATORIAMENTE.


jhonatanp

Pergunta

Seguinte como muitos sabem os servidores de pokemon quando você mata um pokemon por exemplo MAGMAR ele quando da respawn tem chance de vir SHINY eu gostaria de um SCRIPT a onde não viria shiny seria desta forma:

 

O player está caçando na outland e ta matando Brave Venusaur, Quando o Brave Venusaur for renascer ele teria 1 chance de nascer 1 pokemon dos listados aleatorios.

 

Os Listados seriam: Magmortar, electrivire, milotic e salamence.

 

 

Ai eu pensei a é so alterar no Spawn.Lua mais n é algo tão facil, bati bati a cabeça e não consegui está ai abaixo o script q faz nascer shiny.

 

 

local shinys = {
"Venusaur", "Blastoise", "Butterfree", "Beedrill", "Pidgeot", "Rattata", "Raticate", "Raichu", "Golbat", "Paras", "Parasect", "Magmar", "Typhlosion", "Xatu", "Growlithe", "Arcanine", "Tentacruel", "Farfetch'd", "Gengar", "Krabby", "Tauros",
"Kingler", "Cubone", "Horsea", "Seadra", "Weezing", "Scyther", "Pinsir", "Crobat", "Zubat", "Tentacool", "Feraligatr", "Machamp", "Meganium", "Alakazam", "Tangela", "Ampharos", "Electabuzz", "Jynx", "Charizard", "Voltorb", "Electrode"}

local raros = {"Dragonair", "Dratini", "Giant Magikarp", "Gyarados", "Magmortar", "Electivire", "Salamence", "Mantine"}

local function ShinyName(cid)
if isCreature(cid) then
if string.find(tostring(getCreatureName(cid)), "Shiny") then
local newName = tostring(getCreatureName(cid)):match("Shiny (.*)")
doCreatureSetNick(cid, newName)
if isMonster(cid) then
doSetCreatureDropLoot(cid, false)
end
end
end
end

local function doSetRandomGender(cid)
if not isCreature(cid) then return true end
if isSummon(cid) then return true end
local gender = 0
local name = getCreatureName(cid)
if not newpokedex[name] then return true end
local rate = newpokedex[name].gender
if rate == 0 then
gender = 3
elseif rate == 500 then
gender = 4
elseif rate == -1 then
gender = 0
elseif math.random(1, 500) <= rate then
gender = 4
else
gender = 3
end
doCreatureSetSkullType(cid, gender)
end

local function doShiny(cid)
if isCreature(cid) then
if isSummon(cid) then return true end
if getPlayerStorageValue(cid, 74469) >= 1 then return true end
if getPlayerStorageValue(cid, 22546) >= 1 then return true end
if isNpcSummon(cid) then return true end
if getPlayerStorageValue(cid, 637500) >= 1 then return true end --alterado v1.9

if isInArray(shinys, getCreatureName(cid)) then --alterado v1.9 \/
chance = 2.0 --1% chance
elseif isInArray(raros, getCreatureName(cid)) then --n coloquem valores menores que 0.1 !!
chance = 1 --1% chance
else
return true
end
if math.random(1, 500) <= chance*10 then
doSendMagicEffect(getThingPos(cid), 18)
local name, pos = "Shiny ".. getCreatureName(cid), getThingPos(cid)
doRemoveCreature(cid)
local shi = doCreateMonster(name, pos, false)
setPlayerStorageValue(shi, 74469, 1)
else
setPlayerStorageValue(cid, 74469, 1)
end --/\
else
return true
end
end

function onSpawn(cid)

registerCreatureEvent(cid, "Experience")
registerCreatureEvent(cid, "GeneralConfiguration")
registerCreatureEvent(cid, "DirectionSystem")
registerCreatureEvent(cid, "CastSystem")

if isSummon(cid) then
registerCreatureEvent(cid, "SummonDeath")
return true
end

addEvent(doShiny, 10, cid)
addEvent(ShinyName, 15, cid)
addEvent(adjustWildPoke, 5, cid)

return true
end

 

 

 

aguardando ajuda

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Se o código acima não funcionar, use este:

 

local shinys = {
"Venusaur", "Blastoise", "Butterfree", "Beedrill", "Pidgeot", "Rattata", "Raticate", "Raichu", "Golbat", "Paras", "Parasect", "Magmar", "Typhlosion", "Xatu", "Growlithe", "Arcanine", "Tentacruel", "Farfetch'd", "Gengar", "Krabby", "Tauros",
"Kingler", "Cubone", "Horsea", "Seadra", "Weezing", "Scyther", "Pinsir", "Crobat", "Zubat", "Tentacool", "Feraligatr", "Machamp", "Meganium", "Alakazam", "Tangela", "Ampharos", "Electabuzz", "Jynx", "Charizard", "Voltorb", "Electrode"}
 
local raros = {"Dragonair", "Dratini", "Giant Magikarp", "Gyarados", "Magmortar", "Electivire", "Salamence", "Mantine"}  
local specialSummon = {
    chance = 1,                                                 --Chance, em porcentagem, do pokémon especial nascer.
    pokes = {
        {"Milotic", "Electivire", "Magmortar", "Salamence"},    --Pokémons que podem ser summonados.
        {"Brave Venusaur", "Ancient Kingdra", "Hard Rhydon"},   --Pokémons que, quando spawnados, há chance de summonar um dos pokémons acima.
    },
}
 
local function ShinyName(cid)
    if isCreature(cid) then
        if string.find(tostring(getCreatureName(cid)), "Shiny") then
            local newName = tostring(getCreatureName(cid)):match("Shiny (.*)")             
            doCreatureSetNick(cid, newName)
            if isMonster(cid) then
                doSetCreatureDropLoot(cid, false)  
            end
        end
    end
end
 
local function doSetRandomGender(cid)
    if not isCreature(cid) then return true end
    if isSummon(cid) then return true end
    local gender = 0
    local name = getCreatureName(cid)
    if not newpokedex[name] then return true end
    local rate = newpokedex[name].gender
    if rate == 0 then
        gender = 3
    elseif rate == 500 then
        gender = 4
    elseif rate == -1 then
        gender = 0
    elseif math.random(1, 500) <= rate then
        gender = 4
    else
        gender = 3
    end
    doCreatureSetSkullType(cid, gender)
end
 
local function doShiny(cid)
    if isCreature(cid) then
        if isSummon(cid) then return true end
        if getPlayerStorageValue(cid, 74469) >= 1 then return true end
        if getPlayerStorageValue(cid, 22546) >= 1 then return true end
        if isNpcSummon(cid) then return true end
        if getPlayerStorageValue(cid, 637500) >= 1 then return true end  --alterado v1.9
 
        if isInArray(shinys, getCreatureName(cid)) then  --alterado v1.9 \/
            chance = 2.0    --1% chance        
        elseif isInArray(raros, getCreatureName(cid)) then   --n coloquem valores menores que 0.1 !!
            chance = 1   --1% chance       
        else
            return true
        end    
        if math.random(1, 500) <= chance*10 then  
            doSendMagicEffect(getThingPos(cid), 18)               
            local name, pos = "Shiny ".. getCreatureName(cid), getThingPos(cid)
            doRemoveCreature(cid)
            local shi = doCreateMonster(name, pos, false)
            setPlayerStorageValue(shi, 74469, 1)      
        else
            setPlayerStorageValue(cid, 74469, 1)
        end                                        --/\
    else                                                            
        return true
    end
end
                                                                
function onSpawn(cid)
 
    registerCreatureEvent(cid, "Experience")
    registerCreatureEvent(cid, "GeneralConfiguration")
    registerCreatureEvent(cid, "DirectionSystem")
    registerCreatureEvent(cid, "CastSystem")
 
    if isSummon(cid) then
        registerCreatureEvent(cid, "SummonDeath")
        return true
    end
    
    addEvent(function()
        if isCreature(cid) then
            if isInArray(specialSummon.pokes[2], getCreatureName(cid)) then
                if math.random(1, 100) <= specialSummon.chance then
                    local position = getThingPos(cid)
                    doRemoveCreature(cid)
                    doCreateMonster(specialSummon.pokes[1][math.random(#specialSummon.pokes[1])], position)
                end
            end
        end
    end, 15)       
    addEvent(doShiny, 10, cid)
    addEvent(ShinyName, 15, cid)
    addEvent(adjustWildPoke, 5, cid)
 
    return true
end
Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 0

Vou ser sincero, primeira pessoa que eu tento ajudar quando o assunto trata-se de derivados.

Segue basicamente a mesma lógica que você tinha antes, não sei se vai dar certo.

 

Teste ai:

 

 

local pokes = {
	["Brave Venusaur"] = {"Magmortar", "Electrivire", "Milotic", "Salamence"},
	["Mew"] = {"Pikachu", "Squirtle", "Onix", "Mister Mime"}
}                               

local function doSummon(cid)
	if isCreature(cid) then
		if isSummon(cid) then return true end
		if getPlayerStorageValue(cid, 74469) >= 1 then return true end
		if getPlayerStorageValue(cid, 22546) >= 1 then return true end
		if isNpcSummon(cid) then return true end
		if getPlayerStorageValue(cid, 637500) >= 1 then return true end
		local name, pos = getCreatureName(cid), getThingPos(cid)
		if pokes[name] then
			chance = 2.0    --2% chance      
		else
			return true
		end    
		if math.random(1, 500) <= chance * 10 then
			local rand = math.random(1, #pokes[name])
			doSendMagicEffect(getThingPos(cid), 18)
			doRemoveCreature(cid)
			local summon = doCreateMonster(pokes[name][rand], pos, false)
			setPlayerStorageValue(summon, 74469, 1)      
	   else
		   setPlayerStorageValue(cid, 74469, 1)
		end                                        --/\
	else                                                            
		return true
	end
end
                                                                
function onSpawn(cid)

    registerCreatureEvent(cid, "Experience")
    registerCreatureEvent(cid, "GeneralConfiguration")
    registerCreatureEvent(cid, "DirectionSystem")
    registerCreatureEvent(cid, "CastSystem")
    
    if isSummon(cid) then
        registerCreatureEvent(cid, "SummonDeath")
		return true
    end
    
    addEvent(doSummon, 10, cid)
    addEvent(adjustWildPoke, 5, cid)
	return true
end
Basta colocar o nome do poke e dentro da array os possíveis summons dele, exemplo:

["Brave Venusaur"] = {"Magmortar", "Electrivire", "Milotic", "Salamence"}

 

Não esqueça de colocar vírgula ao final de cada array caso for criar outra, como eu fiz no script

 

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

  • 0

[03/06/2015 02:36:26] [Error - CreatureScript Interface]
[03/06/2015 02:36:26] In a timer event called from:
[03/06/2015 02:36:26] data/creaturescripts/scripts/spawn.lua:onSpawn
[03/06/2015 02:36:26] Description:
[03/06/2015 02:36:26] (luaGetCreatureName) Creature not found


O POKEMON NASCE MAIS DA ESTE ERRO


up

Link para o comentário
Compartilhar em outros sites

  • 0

 

Se o código acima não funcionar, use este:

local shinys = {
"Venusaur", "Blastoise", "Butterfree", "Beedrill", "Pidgeot", "Rattata", "Raticate", "Raichu", "Golbat", "Paras", "Parasect", "Magmar", "Typhlosion", "Xatu", "Growlithe", "Arcanine", "Tentacruel", "Farfetch'd", "Gengar", "Krabby", "Tauros",
"Kingler", "Cubone", "Horsea", "Seadra", "Weezing", "Scyther", "Pinsir", "Crobat", "Zubat", "Tentacool", "Feraligatr", "Machamp", "Meganium", "Alakazam", "Tangela", "Ampharos", "Electabuzz", "Jynx", "Charizard", "Voltorb", "Electrode"}
 
local raros = {"Dragonair", "Dratini", "Giant Magikarp", "Gyarados", "Magmortar", "Electivire", "Salamence", "Mantine"}  
local specialSummon = {
    chance = 1,                                                 --Chance, em porcentagem, do pokémon especial nascer.
    pokes = {
        {"Milotic", "Electivire", "Magmortar", "Salamence"},    --Pokémons que podem ser summonados.
        {"Brave Venusaur", "Ancient Kingdra", "Hard Rhydon"},   --Pokémons que, quando spawnados, há chance de summonar um dos pokémons acima.
    },
}
 
local function ShinyName(cid)
    if isCreature(cid) then
        if string.find(tostring(getCreatureName(cid)), "Shiny") then
            local newName = tostring(getCreatureName(cid)):match("Shiny (.*)")             
            doCreatureSetNick(cid, newName)
            if isMonster(cid) then
                doSetCreatureDropLoot(cid, false)  
            end
        end
    end
end
 
local function doSetRandomGender(cid)
    if not isCreature(cid) then return true end
    if isSummon(cid) then return true end
    local gender = 0
    local name = getCreatureName(cid)
    if not newpokedex[name] then return true end
    local rate = newpokedex[name].gender
    if rate == 0 then
        gender = 3
    elseif rate == 500 then
        gender = 4
    elseif rate == -1 then
        gender = 0
    elseif math.random(1, 500) <= rate then
        gender = 4
    else
        gender = 3
    end
    doCreatureSetSkullType(cid, gender)
end
 
local function doShiny(cid)
    if isCreature(cid) then
        if isSummon(cid) then return true end
        if getPlayerStorageValue(cid, 74469) >= 1 then return true end
        if getPlayerStorageValue(cid, 22546) >= 1 then return true end
        if isNpcSummon(cid) then return true end
        if getPlayerStorageValue(cid, 637500) >= 1 then return true end  --alterado v1.9
 
        if isInArray(shinys, getCreatureName(cid)) then  --alterado v1.9 \/
            chance = 2.0    --1% chance        
        elseif isInArray(raros, getCreatureName(cid)) then   --n coloquem valores menores que 0.1 !!
            chance = 1   --1% chance       
        else
            return true
        end    
        if math.random(1, 500) <= chance*10 then  
            doSendMagicEffect(getThingPos(cid), 18)               
            local name, pos = "Shiny ".. getCreatureName(cid), getThingPos(cid)
            doRemoveCreature(cid)
            local shi = doCreateMonster(name, pos, false)
            setPlayerStorageValue(shi, 74469, 1)      
        else
            setPlayerStorageValue(cid, 74469, 1)
        end                                        --/\
    else                                                            
        return true
    end
end
                                                                
function onSpawn(cid)
 
    registerCreatureEvent(cid, "Experience")
    registerCreatureEvent(cid, "GeneralConfiguration")
    registerCreatureEvent(cid, "DirectionSystem")
    registerCreatureEvent(cid, "CastSystem")
 
    if isSummon(cid) then
        registerCreatureEvent(cid, "SummonDeath")
        return true
    end
    
    addEvent(function()
        if isCreature(cid) then
            if isInArray(specialSummon.pokes[2], getCreatureName(cid)) then
                if math.random(1, 100) <= specialSummon.chance then
                    local position = getThingPos(cid)
                    doRemoveCreature(cid)
                    doCreateMonster(specialSummon.pokes[1][math.random(#specialSummon.pokes[1])], position)
                end
            end
        end
    end, 15)       
    addEvent(doShiny, 10, cid)
    addEvent(ShinyName, 15, cid)
    addEvent(adjustWildPoke, 5, cid)
 
    return true
end

 

Oi Zipter, sou seu fã, muito obrigado pelo compartilhar, mas esta acontecendo 1 coisa agr

tipo no meu server eu tenho os rates de shinys em 1, e raros em 0.5 e tudo bem, nesse ai eu coloquei 2% e tava nascendo a media de 3 de cada 7 pokes um shiny

 

ai diminui pra 0.1 e nemhun nasceu

ai diminui pra 0.5 e fikei caçando por 1h e 45 mins e nemhum veio

ai coloquei pra 1 e paresce igual q o 2, ta vindo shiny quase td hora... entao sera q o 0.x nao funfa ai?

 

mas funfa nas outras 2 de raros e shinys

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...