Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Eae galera do Tibiaking Hj Vou Postar um Script de um Amigo meu de PET System... que foi testado em Serve nas Versoes 9,43 e 8,60 heh' Num esta Perfeito mais é Uma Super Base xD Então vamos Lá

Crie um Arquivo em data/lib chamado animais de Estimação.lua e coloque Isso


--Circles

AREA_CIRCLE2X2 =

{

{0, 1, 1, 1, 0},

{1, 1, 1, 1, 1},

{1, 1, 3, 1, 1},

{1, 1, 1, 1, 1},

{0, 1, 1, 1, 0}

}


AREA_CIRCLE3X3 =

{

{0, 0, 1, 1, 1, 0, 0},

{0, 1, 1, 1, 1, 1, 0},

{1, 1, 1, 1, 1, 1, 1},

{1, 1, 1, 3, 1, 1, 1},

{1, 1, 1, 1, 1, 1, 1},

{0, 1, 1, 1, 1, 1, 0},

{0, 0, 1, 1, 1, 0, 0}

}


-- Crosses

AREA_CROSS1X1 =

{

{0, 1, 0},

{1, 3, 1},

{0, 1, 0}

}


AREA_CROSS5X5 =

{

{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},

{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},

{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},

{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},

{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},

{1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1},

{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},

{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},

{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},

{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},

{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}

}


AREA_CROSS6X6 =

{

{0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0},

{0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0},

{0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0},

{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},

{1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1},

{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},

{0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0},

{0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0},

{0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}

}


--Squares

AREA_SQUARE1X1 =

{

{1, 1, 1},

{1, 3, 1},

{1, 1, 1}

}


-- Walls

AREA_WALLFIELD = {

{1, 1, 3, 1, 1}

}


AREADIAGONAL_WALLFIELD =

{

{0, 0, 0, 0, 1},

{0, 0, 0, 1, 1},

{0, 1, 3, 1, 0},

{1, 1, 0, 0, 0},

{1, 0, 0, 0, 0},

}


TYPE_NEAR = 1

TYPE_DISTANCE = 2


petExhaust = 3 --in seconds

petSayExhaust = 3 --in seconds


petGainTicks =

{

health = {func = doCreatureAddHealth, time = 3000, count = 1},

mana = {func = doCreatureAddMana, time = 3000, count = 2}

}


petGainHealth = 30

petGainMana = 30

petExpRate = 1.3


carryItems = 10


petItemsBase = 1250

petItems = {}

blockedItems = {6132, 2195}


for i = 1, carryItems do

table.insert(petItems, petItemsBase + i)

end


petBase = 61200

petStorages =

{

pet = petBase + 1,

level = petBase + 2,

exp = petBase + 3,

items = petBase + 4,

isPet = petBase + 5,

isDead = petBase + 6,

exhaust = petBase + 7,

sayExhaust = petBase + 8,

moveExhaust = petBase + 9,

health = petBase + 10,

mana = petBase + 11

}


reviveCost = 1000


pets =

{

[1] =

{

	 monster = "orc spearman",

	 vocations = {1, 2, 3, 4},

	 level = 30,

	 attacks =

	 {

		 [1] = {name = "", level = 30, petLevel = 30, mana = 50, type = TYPE_DISTANCE, range = 10, combat = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_NONE, distEffect = CONST_ANI_SPEAR, damageMin = 0.7, damageMax = 1.0}

	 }

},

[2] =

{

	 monster = "fire devil",

	 vocations = {1, 2},

	 level = 60,

	 attacks =

	 {

		 [1] = {name = "Fire Strike", level = 60, petLevel = 60, mana = 100, type = TYPE_DISTANCE, combat = COMBAT_FIREDAMAGE, effect = CONST_ME_FIREDAMAGE, distEffect = CONST_ANI_FIRE, damageMin = 1.5, damageMax = 2.0}

	 }

},

[3] =

{

	 monster = "minotaur guard",

	 vocations = {3, 4},

	 level = 60,

	 attacks =

	 {

		 [1] = {name = "Punch", level = 60, petLevel = 60, mana = 55, type = TYPE_NEAR, combat = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_BLOOD, distEffect = CONST_ANI_NONE, damageMin = 1.5, damageMax = 2.0}

	 }

},

[4] =

{

	 monster = "water elemental",

	 vocations = {2},

	 level = 95,

	 attacks =

	 {

		 [1] = {name = "Ice Bomb", level = 100, petLevel = 100, mana = 250, type = TYPE_DISTANCE, range = 3, combat = COMBAT_ICEDAMAGE, effect = CONST_ME_ICEAREA, distEffect = CONST_ANI_ICE, damageMin = 1.5, damageMax = 2.0, area = {{0, 0, 1, 0, 0}, {0, 1, 3, 1, 0}, {0, 0, 1, 0, 0}}},

		 [2] = {name = "Poison Strike", level = 95, petLevel = 95, mana = 80, type = TYPE_DISTANCE, range = 8, combat = COMBAT_EARTHDAMAGE, effect = CONST_ME_GREENRINGS, distEffect = CONST_ANI_POISON, damageMin = 1.2, damageMax = 1.8}

	 }

},

[5] =

{

	 monster = "fire elemental",

	 vocations = {1},

	 level = 95,

	 attacks =

	 {

		 [1] = {name = "Fire Bomb", level = 100, petLevel = 100, mana = 250, type = TYPE_DISTANCE, range = 3, combat = COMBAT_FIREDAMAGE, effect = CONST_ME_FIREDAMAGE, distEffect = CONST_ANI_FIRE, damageMin = 1.5, damageMax = 2.0, area = {{0, 0, 1, 0, 0}, {0, 1, 3, 1, 0}, {0, 0, 1, 0, 0}}},

		 [2] = {name = "Fire Strike", level = 95, petLevel = 95, mana = 80, type = TYPE_DISTANCE, range = 3, combat = COMBAT_FIREDAMAGE, effect = CONST_ME_FIREDAMAGE, distEffect = CONST_ANI_FIRE, damageMin = 1.2, damageMax = 1.8}

	 }

},

[6] =

{

	 monster = "orc warlord",

	 vocations = {4},

	 level = 95,

	 attacks =

	 {

		 [1] = {name = "Throw Knife", level = 95, petLevel = 95, mana = 80, type = TYPE_DISTANCE, combat = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_BLOOD, distEffect = CONST_ANI_THROWINGKNIFE, damageMin = 1.5, damageMax = 2.0}

	 }

},

[7] =

{

	 monster = "golem",

	 vocations = {3},

	 level = 95,

	 attacks =

	 {

		 [1] = {name = "Throw Stone", level = 95, petLevel = 95, mana = 80, type = TYPE_DISTANCE, combat = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_BLOOD, distEffect = CONST_ANI_LARGEROCK, damageMin = 1.5, damageMax = 2.0}

	 }

},

[8] =

{

	 monster = "wyrm",

	 vocations = {1, 2, 3, 4},

	 level = 135

},

[9] =

{

	 monster = "dragon lord",

	 vocations = {1, 2, 3, 4},

	 level = 200,

	 attacks =

	 {

		 [1] = {name = "Fire Bomb", level = 200, petLevel = 200, mana = 300, type = TYPE_DISTANCE, range = 3, combat = COMBAT_FIREDAMAGE, effect = CONST_ME_FIREAREA, distEffect = CONST_ANI_FIRE, damageMin = 1.5, damageMax = 2.0, area = AREA_CROSS1X1},

		 [2] = {name = "Fire Storm", level = 205, petLevel = 220, mana = 700, type = TYPE_NEAR, range = 8, combat = COMBAT_FIREDAMAGE, effect = CONST_ME_FIREAREA, distEffect = CONST_ANI_FIRE, damageMin = 1.8, damageMax = 2.5, area = AREA_CROSS5X5},

		 [3] = {name = "Fire Explosion", level = 203, petLevel = 210, mana = 450, type = TYPE_DISTANCE, range = 6, combat = COMBAT_FIREDAMAGE, effect = CONST_ME_EXPLOSIONHIT, distEffect = CONST_ANI_FIRE, damageMin = 1.5, damageMax = 2.1, area = AREA_CIRCLE2X2},

		 [4] = {name = "Scratch", level = 201, petLevel = 205, mana = 150, type = TYPE_NEAR, range = 1, combat = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_HITAREA, distEffect = CONST_ANI_FIRE, damageMin = 1.3, damageMax = 1.8},

		 [5] = {name = "Fire Strike", level = 203, petLevel = 210, mana = 100, type = TYPE_DISTANCE, range = 3, combat = COMBAT_FIREDAMAGE, effect = CONST_ME_EXPLOSIONAREA, distEffect = CONST_ANI_FIRE, damageMin = 1.8, damageMax = 1.9}

	 }

}

}


function gainStat(pid, stat)


if pid and pid > 0 and isMonster(pid) then

	 stat.func(pid, stat.count)

end

addEvent(gainStat, stat.time, pid, stat)

end


function getLevelByExp(exp)

return math.floor((math.sqrt(3) * math.sqrt(243*(exp+1)^2-48600*(exp+1)+3680000)+27 * (exp+1)-2700)^(1/3)/30^(2/3)-(5*10^(2/3))/(3^(1/3)*(math.sqrt(3)*math.sqrt(243*(exp+1)^2-48600*(exp+1)+3680000)+27*(exp+1)-2700)^(1/3))+2)

end


function getPetInfo(pet)

if isNumber(pet) then

	 return pets[pet] or false

else

	 for _, v in pairs(pets) do

		 if pet:lower() == v.monster then

		 return v

		 end

	 end

end

return false

end


function getPetByLevel(cid)

local level = getPlayerLevel(cid)

local pet

for i = 1, #pets do

	 v = pets[i]

	 if level >= v.level and isInArray(v.vocations, getPlayerVocation(cid)) then

		 pet = v

	 end

end

return (pet ~= nil and pet or false)

end


function getAttackFormula(pid, attack)

return {

		 min = ((getPetLevel(pid) * 2) * (1 + attack.damageMin) + getPetLevel(pid)) / 2.5,

		 max = ((getPetLevel(pid) * 3) * (1 + attack.damageMax) + getPetLevel(pid)) / 2.5

		 }

end


function doAttack(pid, target, param)


local pet = getPetInfo(getCreatureName(pid))

if pet then

	 if pet.attacks and pet.attacks[param] then

		 local attack = pet.attacks[param]

		 if target > 0 and attack.type and attack.type == TYPE_DISTANCE and getDistanceBetween(getCreaturePosition(pid), getCreaturePosition(target)) > (attack.range or 3) or attack.type == TYPE_NEAR and target > 0 and getDistanceBetween(getCreaturePosition(pid), getCreaturePosition(target)) > attack.range then

		 return doPlayerSendCancel(getCreatureMaster(pid), "Target is too far.") and doSendMagicEffect(getCreaturePosition(pid), CONST_ME_POFF)

		 end

		 if target > 0 and not isSightClear(getCreaturePosition(pid), getCreaturePosition(target), true) then

		 return doPlayerSendCancel(getCreatureMaster(pid), "There is not enough room.") and doSendMagicEffect(getCreaturePosition(pid), CONST_ME_POFF)

		 end

		 if target == 0 then

		 return doPlayerSendCancel(getCreatureMaster(pid), "Please select a target first.") and doSendMagicEffect(getCreaturePosition(pid), CONST_ME_POFF)

		 end

		 if getPlayerLevel(getCreatureMaster(pid)) < attack.level then

		 return doPlayerSendCancel(getCreatureMaster(pid), "You need level " .. attack.level .. " or higher to use this attack.") and doSendMagicEffect(getCreaturePosition(pid), CONST_ME_POFF)

		 end

		 if getPetLevel(pid) < attack.petLevel then

		 return doPlayerSendCancel(getCreatureMaster(pid), "Your pet needs level " .. attack.petLevel .. " or higher to use this attack.") and doSendMagicEffect(getCreaturePosition(pid), CONST_ME_POFF)

		 end

		 if attack.mana and getCreatureMana(pid) < attack.mana then

		 return doPlayerSendCancel(getCreatureMaster(pid), "Your pet does not have enough mana.") and doSendMagicEffect(getCreaturePosition(pid), CONST_ME_POFF)

		 end

		 if attack.area then

		 doCastAreaAttack(pid, target, attack.area, attack)

		 else

		 doTargetCombatHealth(pid, target, attack.combat, -getAttackFormula(pid, attack).min, -getAttackFormula(pid, attack).max, attack.effect)

		 end

		 doCreatureAddMana(pid, -attack.mana)

		 return doSendDistanceShoot(getCreaturePosition(pid), (attack.type == TYPE_DISTANCE and getCreaturePosition(target) or getCreaturePosition(pid)), attack.distEffect) and doCreatureSay(pid, attack.name, TALKTYPE_MONSTER)

	 else

		 return doSendMagicEffect(getCreaturePosition(pid), CONST_ME_POFF)

	 end

else

	 return doSendMagicEffect(getCreaturePosition(pid), CONST_ME_POFF) and doPlayerSendCancel(getCreatureMaster(pid), "There is a tecnical problem, please contact a gamemaster.")

end

end


function callPet(cid)


for i = 1, #petStorages do

	 if getCreatureStorage(cid, petStorages[i]) < 0 then

		 doCreatureSetStorage(cid, petStorages[i], 0)

	 end

end


local pet = getPetByLevel(cid)

if not pet then

	 return doPlayerSendCancel(cid, "You do not have enough level to call a pet.")

end


local ret = doCreateMonster(pet.monster, getCreaturePosition(cid))


if getCreatureStorage(cid, petStorages.level) < 1 then

	 doCreatureSetStorage(cid, petStorages.level, pet.level)

end


if getCreatureStorage(cid, petStorages.exp) < 1 then

	 doCreatureSetStorage(cid, petStorages.exp, getExperienceForLevel(pet.level))

end


if getCreatureStorage(cid, petStorages.level) < pet.level then

	 doCreatureSetStorage(cid, petStorages.level, pet.level)

elseif getPlayerLevel(cid) * 3 < getCreatureStorage(cid, petStorages.level) then

	 doCreatureSetStorage(cid, petStorages.level, (getPetByLevel(cid).level or 0))

	 doCreatureSetStorage(cid, petStorages.exp, getExperienceForLevel((getPetByLevel(cid).level or 0)))

end


if getLevelByExp(getCreatureStorage(cid, petStorages.exp)) < getCreatureStorage(cid, petStorages.level) then

	 doCreatureSetStorage(cid, petStorages.exp, getExperienceForLevel(getCreatureStorage(cid, petStorages.level)))

end


if getCreatureStorage(cid, petStorages.health) < 1 then

	 doCreatureSetStorage(cid, petStorages.health, getCreatureStorage(cid, petStorages.level) * petGainHealth)

end


if getCreatureStorage(cid, petStorages.mana) < 1 then

	 doCreatureSetStorage(cid, petStorages.mana, getCreatureStorage(cid, petStorages.level) * petGainMana)

end


doCreatureSetStorage(ret, petStorages.level, getCreatureStorage(cid, petStorages.level))

doCreatureSetStorage(ret, petStorages.exp, getCreatureStorage(cid, petStorages.exp))


doConvinceCreature(cid, ret)

doCreatureSetStorage(ret, petStorages.isPet, 1)

doSendMagicEffect(getCreaturePosition(ret), CONST_ME_TELEPORT)

setCreatureMaxHealth(ret, getPetLevel(ret) * petGainHealth)

doCreatureAddHealth(ret, -getCreatureHealth(ret) + getCreatureStorage(cid, petStorages.health))

setCreatureMaxMana(ret, getPetLevel(ret) * petGainMana)

doCreatureAddMana(ret, -getCreatureMana(ret) + getCreatureStorage(cid, petStorages.mana))

for _, v in pairs(petGainTicks) do

	 gainStat(ret, v)

end

return doCreatureSay(cid, "Go pet!", TALKTYPE_SAY)

end


function doCastAreaAttack(pid, target, area, attack)

local center = {}

local areaxx = {}

center.y = math.floor(#area/2)+1

for y = 1, #area do

	 for x = 1, #area[y] do

		 local number = area[y][x]

		 if number > 0 then

		 center.x = math.floor(table.getn(area[y])/2)+1

		 if attack.type == TYPE_DISTANCE then

			 table.insert(areaxx, {x = getCreaturePosition(target).x + x - center.x, y = getCreaturePosition(target).y + y - center.y, z = getCreaturePosition(target).z})

		 else

			 table.insert(areaxx, {x = getCreaturePosition(pid).x + x - center.x, y = getCreaturePosition(pid).y + y - center.y, z = getCreaturePosition(pid).z})

		 end		

		 end

	 end

end

for i = 1, #areaxx do

	 doAreaCombatHealth(pid, attack.combat, areaxx[i], 0, -getAttackFormula(pid, attack).min, -getAttackFormula(pid, attack).max, attack.effect)

end

end


function isPet(pid)

return getCreatureStorage(pid, petStorages.isPet) > 0 and true or false

end


function doPetAddExperience(pid, exp)


doCreatureSetStorage(pid, petStorages.exp, getCreatureStorage(pid, petStorages.exp) + exp)

doCreatureSetStorage(getCreatureMaster(pid), petStorages.exp, getPetExperience(pid))

doSendAnimatedText(getCreaturePosition(pid), exp, getConfigValue("gainExperienceColor"))

return true

end


function getPetExperience(pid)

return getCreatureStorage(pid, petStorages.exp)

end


function getPetLevel(pid)

return getCreatureStorage(pid, petStorages.level)

end


function doPetSetLevel(pid, level)


doCreatureSetStorage(pid, petStorages.level, level)

doCreatureSetStorage(getCreatureMaster(pid), petStorages.level, level)

setCreatureMaxHealth(pid, getPetLevel(pid) * petGainHealth)

setCreatureMaxMana(pid, getPetLevel(pid) * petGainMana)

return true

end


function getPlayerPet(cid)

local pet

if #getCreatureSummons(cid) < 1 then

	 pet = false

end


for _, it in ipairs(getCreatureSummons(cid)) do

	 if isPet(it) then

		 pet = it

		 break

	 end

end

return pet

end


function getTopItem(p)

p.stackpos = 0

local v = getThingFromPos(p)

repeat

	 p.stackpos = p.stackpos + 1

	 v = getThingFromPos(p)

until v.itemid == 0

p.stackpos = p.stackpos - 1

return getThingFromPos(p)

end

agora em data/creaturescripts criamos 3 Arquivos um chamado petdeath.lua e coloque isso dentro dele:

function onDeath(cid, corpse, deathList)


if not isMonster(cid) or not isPet(cid) then return true end


doCreatureSetStorage(getCreatureMaster(cid), petStorages.isDead, 1)

doPlayerSendTextMessage(getCreatureMaster(cid), MESSAGE_STATUS_CONSOLE_BLUE, "Your pet is dead.")

return true

end

petstats.lua e coloque isso dentro dele:

function onStatsChange(cid, attacker, type, combat, value)


if getPlayerPet(cid) and getPlayerPet(cid) == attacker then

	 return false

end

return true

end

petkill.lua e coloque isso dentro dele:

function onKill(cid, target, lastHit)


if not isMonster(target) or getConfigValue("rateExperience") < 0.1 or getMonsterInfo(getCreatureName(target)) and getMonsterInfo(getCreatureName(target)).experience < 1 then return true end


local pet = getPlayerPet(cid)

if pet then

	 doPetAddExperience(pet, getMonsterInfo(getCreatureName(target)).experience * petExpRate)

	 if getLevelByExp(getPetExperience(pet)) > getPetLevel(pet) then

		 doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Your pet advanced from level " .. getPetLevel(pet) .. " to level " .. getLevelByExp(getPetExperience(pet)) .. ".")

		 doPetSetLevel(pet, getLevelByExp(getPetExperience(pet)))

	 end

end

return true

end

adicione em login.lua os Eventos

registerCreatureEvent(cid, "petKill")

registerCreatureEvent(cid, "petDeath")

registerCreatureEvent(cid, "petSta")

e em creaturescripts.xml

<event type="kill" name="petKill" event="script" value="petkill.lua"/>

<event type="death" name="petDeath" event="script" value="petdeath.lua"/>

<event type="statschange" name="petStats" event="script" value="petstats.lua"/>

vamo agora em data/talkactions/scripts/e crie o arquivo pet.lua

<talkaction words="!pet" event="script" value="pet.lua"/>

Agora umas Img do System:

!pet call // Chamar/retirar mascote.

!pet take // La mascota coge el objeto que esta debajo suyo.

!pet items // Muestra los objetos que tiene la mascota.

!pet attack:index // Atacas con la mascota. Ejemplo: !pet attack:2

!pet give:index // Coger un objeto de la mascota. Ex: !pet give:4

!pet say:text // Haces hablar a tu mascota. Ex: !pet say:Hello World

!pet move:direction //Mueves a la mascota. Ex: !pet move:northeast

!pet mana/health:amount // añade/remueve mana/vida a tu mascota (SOLO para gamemasters)

creditos falção and Me


local l =

{

["north"] = NORTH,

["east"] = EAST,

["south"] = SOUTH,

["west"] = WEST,

["southwest"] = SOUTHWEST,

["southeast"] = SOUTHEAST,

["northwest"] = NORTHWEST,

["northeast"] = NORTHEAST

}

--fixed by falcon--

function onSay(cid, words, param, channel)

if(param == '') then

	 doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.")

	 return true

end


if param:lower() == "call" then

	 if getCreatureStorage(cid, petStorages.isDead) > 0 then

		 return doPlayerSendCancel(cid, "You need to revive your pet first.")

	 end

	 if getTilePzInfo(getCreaturePosition(cid)) then

		 return doPlayerSendCancel(cid, "You cannot call your pet in protection zone.")

	 end

	 local pet = getPlayerPet(cid)

	 if not pet then

		 return callPet(cid)

	 else

		 doCreatureSetStorage(cid, petStorages.health, getCreatureHealth(pet))

		 doCreatureSetStorage(cid, petStorages.mana, getCreatureMana(pet))

		 doSendMagicEffect(getCreaturePosition(pet), CONST_ME_POFF)

		 doRemoveCreature(pet)

		 return doCreatureSay(cid, "It's enough!", TALKTYPE_SAY)

	 end

elseif param:lower() == "info" then

	 local pet = getPlayerPet(cid)

	 if pet then

		 local pet_ = getPetInfo(getCreatureName(pet))

		 local attacks = ""

		 if pet_.attacks and #pet_.attacks > 0 then

		 for i = 1, #pet_.attacks do

			 attacks = attacks .. "Attack ID: " .. i .. "\n" .. (pet_.attacks[i].name ~= "" and " Name: " .. pet_.attacks[i].name .. "\n" or "") .. " Level: " .. pet_.attacks[i].level .. "\n Pet level: " .. pet_.attacks[i].petLevel .. "\n Pet mana: " .. pet_.attacks[i].mana .. "\n"

		 end

		 end

		 return doShowTextDialog(cid, 1948, "Here is your pet info:\n" ..

		 "\nName: " .. getCreatureName(pet) ..

		 "\nHealth: " .. getCreatureHealth(pet) .. "-" .. getCreatureMaxHealth(pet) ..

		 "\nMana: " .. getCreatureMana(pet) .. "-" .. getCreatureMaxMana(pet) ..

		 "\nLevel: " .. getPetLevel(pet) ..

		 "\nExperience: " .. getPetExperience(pet) ..

		 "\n-----Attacks-----\n" .. (attacks ~= "" and attacks or "No attacks"))

	 else

		 return doPlayerSendCancel(cid, "Please call your pet first.")

	 end

elseif param:lower() == "take" then

	 local pet = getPlayerPet(cid)

	 if not pet then

		 return doPlayerSendCancel(cid, "Please call your pet first.")

	 end


	 local slot = 0

	 for i = 1, carryItems do

		 if getCreatureStorage(cid, petItems[i]) < 1 then

		 slot = i

		 break

		 end

	 end


	 if slot == 0 then

		 return doPlayerSendCancel(cid, "You only can carry " .. carryItems .. " items.")

	 end


	 local item = getTopItem(getCreaturePosition(pet))

	 if getItemWeightById(item.itemid, 1) and getItemWeightById(item.itemid, 1) < 1 then

		 return doPlayerSendCancel(cid, "There is no item to carry.")

	 end


	 if isInArray(blockedItems, item.itemid) then

		 return doPlayerSendCancel(cid, "You cannot carry this item.")

	 end

	 doCreatureSetStorage(cid, petItems[slot], item.itemid * 1000 + (item.type > 0 and item.type or 1))

	 doRemoveItem(item.uid)

	 doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You take an item.")

	 return true

elseif param:lower() == "items" then

	 local list = "Here is the list of items:\n"

	 for i = 1, carryItems do

		 if getCreatureStorage(cid, petItems[i]) < 1 then

		 list = list .. "\n" .. i .. ". Empty."

		 else

		 local thing = getCreatureStorage(cid, petItems[i])

		 local item = math.floor(thing / 1000)

		 local count = thing - item * 1000

		 list = list .. "\n" .. i .. ". x" .. count .. " " .. getItemNameById(item) .. "."

		 end

	 end


	 return doShowTextDialog(cid, 1948, list)

else

	 param = string.explode(param, ":")

	 if param[1]:lower() == "attack" then

		 local pet = getPlayerPet(cid)

		 if not pet then

		 return doPlayerSendCancel(cid, "Please call your pet first.")

		 end

		 if not param[2] or not isNumber(param[2]) or tonumber(param[2]) < 1 then

		 return doPlayerSendCancel(cid, "No attack index specified.")

		 end


		 if exhaustion.get(cid, petStorages.exhaust) then

		 return doPlayerSendCancel(cid, "You are exhausted.") and doSendMagicEffect(getCreaturePosition(getCreatureSummons(cid)[1]), CONST_ME_POFF)

		 end


		 doAttack(pet, getCreatureTarget(cid), tonumber(param[2]))

		 exhaustion.set(cid, petStorages.exhaust, petExhaust)

	 elseif param[1]:lower() == "give" then

		 local pet = getPlayerPet(cid)

		 if not pet then

		 return doPlayerSendCancel(cid, "Please call your pet first.")

		 end

		 if not param[2] or not isNumber(param[2]) or tonumber(param[2]) < 1 then

		 return doPlayerSendCancel(cid, "No slot specified.")

		 end


		 if getCreatureStorage(cid, petItems[tonumber(param[2])]) > 0 then

		 local thing = getCreatureStorage(cid, petItems[tonumber(param[2])])

		 local item = math.floor(thing/1000)

		 local count = thing-item*1000

		 doPlayerAddItem(cid, item, count)

		 doCreatureSetStorage(cid, petItems[tonumber(param[2])], 0)

		 doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You get an item.")

		 else

		 return doPlayerSendCancel(cid, "This slot is empty.")

		 end

	 elseif param[1]:lower() == "say" then

		 local pet = getPlayerPet(cid)

		 if not pet then

		 return doPlayerSendCancel(cid, "Please call your pet first.")

		 end

		 if not param[2] or param[2] == "" then

		 return doPlayerSendCancel(cid, "Command param required.")

		 end


		 if exhaustion.get(cid, petStorages.sayExhaust) then

		 return doPlayerSendCancel(cid, "You are exhausted.") and doSendMagicEffect(getCreaturePosition(getCreatureSummons(cid)[1]), CONST_ME_POFF)

		 end


		 doCreatureSay(pet, param[2], TALKTYPE_MONSTER)

		 exhaustion.set(cid, petStorages.sayExhaust, petExhaust)

	 elseif param[1]:lower() == "move" then

		 local pet = getPlayerPet(cid)

		 if not pet then

		 return doPlayerSendCancel(cid, "Please call your pet first.")

		 end

		 if not param[2] or param[2] == "" then

		 return doPlayerSendCancel(cid, "Command param required.")

		 end


		 if exhaustion.get(cid, petStorages.moveExhaust) then

		 return doPlayerSendCancel(cid, "You are exhausted.") and doSendMagicEffect(getCreaturePosition(getCreatureSummons(cid)[1]), CONST_ME_POFF)

		 end


		 local dir

		 if l[param[2]:lower()] then

		 dir = l[param[2]:lower()]

		 local toPos = getPosByDir(getCreaturePosition(pet), dir, 1)

		 local ret = queryTileAddThing(pet, toPos)

		 if ret == RETURNVALUE_NOERROR then

			 doMoveCreature(pet, dir)

			 exhaustion.set(cid, petStorages.moveExhaust, petExhaust)

		 else

			 return doPlayerSendCancel(cid, "There is not enough room.") and doSendMagicEffect(getCreaturePosition(pet), CONST_ME_POFF)

		 end

		 else

		 return doPlayerSendCancel(cid, "No direction specified.")

		 end

	 elseif isInArray({"mana", "health"}, param[1]:lower()) then

		 if getPlayerGroupId(cid) < 3 then

		 return false

		 end

		 local pet = getPlayerPet(cid)

		 if not pet then

		 return doPlayerSendCancel(cid, "Please call your pet first.")

		 end

		 if not param[2] or not isNumber(param[2]) then

		 return doPlayerSendCancel(cid, "Command param required.")

		 end


		 if param[1]:lower() == "health" then

		 doCreatureAddHealth(pet, tonumber(param[2]))

		 elseif param[1]:lower() == "mana" then

		 doCreatureAddMana(pet, tonumber(param[2]))

		 end

		 return doSendMagicEffect(getCreaturePosition(pet), (param[1]:lower() == "health" and CONST_ME_MAGIC_RED or CONST_ME_MAGIC_BLUE))

	 end

end

return true

end

e adicione isso em talkactions.xml
xksw45.png6tiyqb.pngauunhf.png2nqu139.png
Comandos que achei em Espanhol:

Meu Ultimo projeto em desenvolvimento!

 

http://www.tibiaking.com/forum/topic/47753-show-off-ultimo-projeto-para-download/

 

 

Grupo do facebook para OtServidores! (Divulgação + Criação de Equipe)

 

https://www.facebook.com/groups/otservidores/

 

Link para o post
Compartilhar em outros sites

cara a hora que eu fui testar apareceu esta mensagem ( 20:06 Command param required. )

oque devo faze ? te dou rep++

Link para o post
Compartilhar em outros sites

Então cara Foi oq eu falei no Post Não Foi eu que Fiz o System Só o Topico meu Amigo me mando o System e fiz esse Topico e Tipo é Uma base 95% Completa xD Mals Mais Num Sei te ajudar

Meu Ultimo projeto em desenvolvimento!

 

http://www.tibiaking.com/forum/topic/47753-show-off-ultimo-projeto-para-download/

 

 

Grupo do facebook para OtServidores! (Divulgação + Criação de Equipe)

 

https://www.facebook.com/groups/otservidores/

 

Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Fausto32
      Script/Tutorial+ Php +Map +Talkaction +Portal.
      Ps: Antes de falar q o topico já existe no forum teste os outros scripts
      Então começando por informações basícas :
      Para abrir o evento : /zombiestart numero de players . exemplo : /zombiestart 2
      Para Iniciar o evento sem o numero maximo de players: /zombiestart force.
      Apos aberto sempre q um player ente no portal do evento e avisado por broadcast quem
      entrou na arena e o numero de players restantes para o evento ser iniciado.
      Apos o evento ser iniciado um zombie e sumonado a cada 20 segundos, o player que for infectado e teleportado para o templo vence o ultimo player restante na arena.
      Ao terminar o evento e anuciado por broadcast o nome do player vencedor tempo q durou na arena e por quantos zombies ele sobreviveu, entrega de premio automatica, premio configuravel.
      Garantia de funcionabilidade perfeita em TFS 0.4 se configurado corretamente, não testado em outras versões de distros.
      Creditos: Me .. não criei mais montei peguei de varios servers/topicos e corigi os varios bugs de distro colocaria os creditos de onde peguei a maioria do script mais foi de um server sem creditos q nem era pra ter sido postado.
      Enfim Vamos ao Evento !
      Primeiro vou estar postando a pagina classica do Zombie event no Gesior que seria a parte PHP para informar os players sobre o evento.
      Pagina PHP + Tutorial de como implementar ela no seu site.
      Agora alguns mapas para o zombie event:
      Então Agora vamos ao script !
      data\creaturescripts\scripts\zombie – A pasta ‘zombie’ deve ser criada no diretorio citado.
      \data\creaturescripts\scripts\Zombie\onattack.lua
        function loseOnZombieArena(cid) kickPlayerFromZombiesArea(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "BOOM! You are dead.") local players = getZombiesEventPlayers() if(#players <= 1) then local winner = players[1] if(winner) then doPlayerAddItem(winner, 2157, 5, true) doPlayerAddItem(winner, 6119, 1, true) doPlayerSendTextMessage(winner, MESSAGE_STATUS_CONSOLE_BLUE, "You won zombies arena event.") doBroadcastMessage("After " .. os.time() - getPlayerZombiesEventStatus(winner) .. " seconds of fight " .. getCreatureName(winner) .. " won Zombie Arena Event in game versus " .. getStorage(ZE_ZOMBIES_SPAWNED) .. " zombies!") kickPlayerFromZombiesArea(winner) else doBroadcastMessage("Zombie arena event finished! No one win?!?!?! WTF!") end doSetStorage(ZE_STATUS, 0) doSetStorage(ZE_PLAYERS_NUMBER, ZE_DEFAULT_NUMBER_OF_PLAYERS) doSetStorage(ZE_ZOMBIES_TO_SPAWN, 0) doSetStorage(ZE_ZOMBIES_SPAWNED, 0) local width = (math.max(ZE_spawnFromPosition.x, ZE_spawnToPosition.x) - math.min(ZE_spawnFromPosition.x, ZE_spawnToPosition.x)) / 2 + 1 local height = (math.max(ZE_spawnFromPosition.y, ZE_spawnToPosition.y) - math.min(ZE_spawnFromPosition.y, ZE_spawnToPosition.y)) / 2 + 1 local centerPos = {x=math.min(ZE_spawnFromPosition.x, ZE_spawnToPosition.x)+width,y=math.min(ZE_spawnFromPosition.y, ZE_spawnToPosition.y)+height,z=ZE_spawnFromPosition.z} for z = math.min(ZE_spawnFromPosition.z, ZE_spawnToPosition.z), math.max(ZE_spawnFromPosition.z, ZE_spawnToPosition.z) do centerPos.z = z for i, uid in pairs(getSpectators(centerPos, width, height, false)) do if(isMonster(uid)) then doRemoveCreature(uid) end end end end end function onStatsChange(target, cid, changetype, combat, value) if((cid and isMonster(cid) and getCreatureName(cid) == "Zombie Event") or (isInRange(getThingPosition(target), ZE_spawnFromPosition, ZE_spawnToPosition) and changetype == STATSCHANGE_HEALTHLOSS and math.abs(value) >= getCreatureHealth(target))) then doCreatureAddHealth(target, getCreatureMaxHealth(target)) loseOnZombieArena(target) return false end return true end \data\creaturescripts\scripts\Zombie\ondeath.lua
        function onDeath(cid) setZombiesToSpawnCount(getZombiesToSpawnCount() + 2) doCreatureSay(cid, "I'll be back!", 19) return true end \data\creaturescripts\scripts\Zombie\onthink.lua
        function onThink(cid) local target = getCreatureTarget(cid) if(target ~= 0 and not isPlayer(target)) then doRemoveCreature(target) end return true end \data\globalevents\scripts\zombie\ onstartup.lua
        function onstartup() db.executeQuery("UPDATE `player_storage` SET `value` = 0 WHERE `key` = " .. ZE_isOnZombieArea .. ";") doSetStorage(ZE_STATUS, 0) doSetStorage(ZE_PLAYERS_NUMBER, ZE_DEFAULT_NUMBER_OF_PLAYERS) doSetStorage(ZE_ZOMBIES_TO_SPAWN, 0) doSetStorage(ZE_ZOMBIES_SPAWNED, 0) addZombiesEventBlockEnterPosition() return true end \data\globalevents\scripts\zombie\onthink.lua
        function onThink(interval, lastExecution, thinkInterval) if(getStorage(ZE_STATUS) == 2) then setZombiesToSpawnCount(getZombiesToSpawnCount()+1) local players = getZombiesEventPlayers() for i=1, getZombiesToSpawnCount() * 2 do if(getZombiesToSpawnCount() > 0 and spawnNewZombie()) then setZombiesToSpawnCount(getZombiesToSpawnCount()-1) end end end return true end \data\lib\zombie_event.lua
        -- CONFIG ZE_DEFAULT_NUMBER_OF_PLAYERS = 20 ZE_ACCESS_TO_IGNORE_ARENA = 4 -- POSITIONS ZE_blockEnterItemPosition = {x=32341, y=32213, z=7} -- onde nasce o teleport? ZE_enterPosition = {x=32154, y=32578, z=7} -- onde os players nascem dentro da arena zombie? ZE_kickPosition = {x=32368, y=32241, z=7} -- quando morre vai para onde? ZE_spawnFromPosition = {x=32140,y=32566,z=7} -- para sumonar zombie (de) ZE_spawnToPosition = {x=32168,y=32590,z=7} -- para sumonar zombie (ate) -- ITEM IDS --ZE_blockEnterItemID = 2700 ZE_blockEnterItemID = 1387 -- STORAGES -- - player ZE_isOnZombieArea = 34370 -- - global ZE_STATUS = 34370 -- =< 0 - off, 1 - waiting for players, 2 - is running ZE_PLAYERS_NUMBER = 34371 ZE_ZOMBIES_TO_SPAWN = 34372 ZE_ZOMBIES_SPAWNED = 34373 -- FUNCTION function setZombiesEventPlayersLimit(value) doSetStorage(ZE_PLAYERS_NUMBER, value) end function getZombiesEventPlayersLimit() return getStorage(ZE_PLAYERS_NUMBER) end function addPlayerToZombiesArea(cid) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) doTeleportThing(cid, ZE_enterPosition, true) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) if(getPlayerAccess(cid) < ZE_ACCESS_TO_IGNORE_ARENA) then setPlayerZombiesEventStatus(cid, os.time()) end end function kickPlayerFromZombiesArea(cid) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) doTeleportThing(cid, ZE_kickPosition, true) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) setPlayerZombiesEventStatus(cid, 0) end function getPlayerZombiesEventStatus(cid) return getCreatureStorage(cid, ZE_isOnZombieArea) end function setPlayerZombiesEventStatus(cid, value) doCreatureSetStorage(cid, ZE_isOnZombieArea, value) end function getZombiesEventPlayers() local players = {} for i, cid in pairs(getPlayersOnline()) do if(getPlayerZombiesEventStatus(cid) > 0) then table.insert(players, cid) end end return players end function getZombiesCount() return getStorage(ZE_ZOMBIES_SPAWNED) end function addZombiesCount() doSetStorage(ZE_ZOMBIES_SPAWNED, getStorage(ZE_ZOMBIES_SPAWNED)+1) end function resetZombiesCount() doSetStorage(ZE_ZOMBIES_SPAWNED, 0) end function getZombiesToSpawnCount() return getStorage(ZE_ZOMBIES_TO_SPAWN) end function setZombiesToSpawnCount(count) doSetStorage(ZE_ZOMBIES_TO_SPAWN, count) end function addZombiesEventBlockEnterPosition() -- remove tp -- remove o TP local item = getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID) if(item.uid ~= 0) then doRemoveItem(item.uid) end --doRemoveItem(getThingFromPos(Castle.desde).uid) --[[ if(getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID).uid == 0) then doCreateItem(ZE_blockEnterItemID, 1, ZE_blockEnterItemPosition) end ]]-- end function removeZombiesEventBlockEnterPosition() -- add tp if(getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID).uid == 0) then --doCreateItem(ZE_blockEnterItemID, 1, ZE_blockEnterItemPosition) local tp = doCreateTeleport(ZE_blockEnterItemID, ZE_enterPosition, ZE_blockEnterItemPosition) doItemSetAttribute(tp, "aid", "5555") end --[[ local item = getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID) if(item.uid ~= 0) then doRemoveItem(item.uid) end ]]-- end function spawnNewZombie() local posx = {} local posy = {} local posz = {} local pir = {} for i=1, 5 do local posx_tmp = math.random(ZE_spawnFromPosition.x ,ZE_spawnToPosition.x) local posy_tmp = math.random(ZE_spawnFromPosition.y ,ZE_spawnToPosition.y) local posz_tmp = math.random(ZE_spawnFromPosition.z ,ZE_spawnToPosition.z) local pir_tmp = 0 local spec = getSpectators({x=posx_tmp, y=posy_tmp, z=posz_tmp}, 3, 3, false) if(spec and #spec > 0) then for z, pid in pairs(spec) do if(isPlayer(pid)) then pir_tmp = pir_tmp + 1 end end end posx[i] = posx_tmp posy[i] = posy_tmp posz[i] = posz_tmp pir[i] = pir_tmp end local lowest_i = 1 for i=2, 5 do if(pir[i] < pir[lowest_i]) then lowest_i = i end end local ret = doCreateMonster("Zombie Event", {x=posx[lowest_i], y=posy[lowest_i], z=posz[lowest_i]}, false) if type(ret) == "number" then addZombiesCount() setGlobalStorageValue(201201051801, ret) end return type(ret) == "number" end \data\movements\scripts\zombie\ onenter.lua
        function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if(not isPlayer(cid)) then return true end if(getPlayerAccess(cid) >= ZE_ACCESS_TO_IGNORE_ARENA) then addPlayerToZombiesArea(cid) elseif(#getZombiesEventPlayers() < getZombiesEventPlayersLimit() and getStorage(ZE_STATUS) == 1) then addPlayerToZombiesArea(cid) local players_on_arena_count = #getZombiesEventPlayers() if(players_on_arena_count == getZombiesEventPlayersLimit()) then addZombiesEventBlockEnterPosition() -- removeTP doSetStorage(ZE_STATUS, 2) doBroadcastMessage("Zombie Arena Event started.") else doBroadcastMessage(getCreatureName(cid) .. " has entered a Zombie Arena. We still need " .. getZombiesEventPlayersLimit() - players_on_arena_count .. " players.") end else doTeleportThing(cid, fromPosition, true) addZombiesEventBlockEnterPosition() end return true end \data\talkactions\scripts\zombie\ onsay.lua
        function onSay(cid, words, param, channel) if(getStorage(ZE_STATUS) ~= 2) then local players_on_arena_count = #getZombiesEventPlayers() if(param == 'force') then if(players_on_arena_count > 0) then setZombiesEventPlayersLimit(players_on_arena_count ) addZombiesEventBlockEnterPosition() doSetStorage(ZE_STATUS, 2) doBroadcastMessage("Zombie Arena Event started.") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Zombies event started.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Cannot start Zombies event. There is no players on arena.") end else if(param ~= '' and tonumber(param) > 0) then setZombiesEventPlayersLimit(tonumber(param)) end removeZombiesEventBlockEnterPosition() doSetStorage(ZE_STATUS, 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Event started.") doPlayerBroadcastMessage(cid, "Zombie Arena Event teleport is opened. We are waiting for " .. getZombiesEventPlayersLimit() - players_on_arena_count .. " players to start.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Zombies event is already running.") end return true end data\monster\zombie_event.xml
        <monster name="Zombie Event" nameDescription="an event zombie" race="undead" experience="480" speed="170" manacost="0"> <health now="20000" max="20000"/> <look type="311" corpse="9875"/> <targetchange interval="5000" chance="50"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="0"/> <flag attackable="1"/> <flag hostile="1"/> <flag illusionable="0"/> <flag convinceable="0"/> <flag pushable="0"/> <flag canpushitems="1"/> <flag canpushcreatures="1"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="0"/> </flags> <attacks> <attack name="melee" interval="1000" min="-1500" max="-2350"/> </attacks> <defenses armor="0" defense="0"/> <immunities> <immunity paralyze="1"/> <immunity invisible="1"/> <immunity fire="1"/> <immunity energy="1"/> <immunity poison="1"/> </immunities> <voices interval="5000" chance="10"> <voice sentence="You wont last long!"/> <voice sentence="Mmmmh.. braains!"/> </voices> <script> <event name="ZombieThink"/> <event name="ZombieDeath"/> </script> <loot> </loot> </monster> Agora as Tags nos xml’s . /data/creaturescripts/creaturescripts.xml
        <event type="think" name="ZombieThink" event="script" value="zombie/onthink.lua"/> <event type="statschange" name="ZombieAttack" event="script" value="zombie/onattack.lua"/> <event type="death" name="ZombieDeath" event="script" value="zombie/ondeath.lua"/> /data/globalevents/globalevents.xml
        <globalevent name="ZombieGlobalThink" interval="5000" event="script" value="zombie/onthink.lua"/> <globalevent name="ZombieGlobalStartup" type="start" event="script" value="zombie/onstartup.lua"/> /data/movements/movements.xml
        <movevent type="StepIn" actionid="5555" event="script" value="zombie/onenter.lua"/> /data/talkactions/talkactions.xml
        <talkaction log="yes" words="/zombiestart" access="4" event="script" value="zombie/onsay.lua"/> /data/monster/monsters.xml
        <monster name="Zombie Event" file="zombie_event.xml"/> Script Terminado ! Next: Tutorial de como configurar o zombie event ! Estarei postando apenas as partes q podem ou devem ser editadas em cada script. data\creaturescripts\scripts\zombiez\onattack.lua
      Next: \data\lib\zombie_event.lua
      Então galera eh isso ai .-. meu primeiro post não mim crucifiquem k Duvidas, reclamações elogios chigamentos u.u só comentar como dizia o mestre o topico ta explicado nos minimos detalhes e ''de forma bem entendida'' (entendedoresentenderam) então eh isso vlw ai a todos q mim ajudaram nisso e nem sabem ?
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo