OTHispano
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Ir abajo
Dj Ignacio
Dj Ignacio
Miembro
Mensajes Mensajes : 8
http://www.djignacio.com

Escuela de Lua Empty Escuela de Lua

Vie Feb 17, 2012 9:42 pm
Hola bueno hago lo posible para poder ayudarlos con lo poco y nada que se sobre lua.

Empezaremos con Actions - Movements (:

Miren, hacer script es como hacer un queque o cualquier otra cosa...
Si no sabes la receta es dificil pero cuando la dominas, es fluido (:

Los actions usan un tipo de funcion denominada onUse (en uso)
Primero tendremos que saber que queremos hacer... Partiremos con lo basico:
Primer Trabajo:
- Hacer un item que al usarlo te de algo especial (cualquier cosa: un addon, un outfit, un storage, etc.) y a la vez lo remueva.

Osea que dije que habia que hacer? un item, osea, action
Que tiene que tener de especial? Que de algo.
Y que al mismo tiempo? Lo remueva

Ordenemos los ingredientes:

1.- Buscamos el item.
Tienes seleccionado un item especial?
Pues sacas la id (ojo, partiremos con item.id osea veelo en items.xml):
Yo use un vial con agua (2006) -TICKEAMOS-
2.- Que dara?
Seleccionaste lo que dara?
Pues yo seleccione un storage value -TICKEAMOS-
3.- Buscamos las funciones (dejo adjuntado la lista de funciones)

La funcion de onUse es:
function onUse(cid, item, fromPosition, itemEx, toPosition)
Los items tienes distintos tipos de funciones (item.itemid, action.id, unique.id, itemEx, etc)
Pero como dije que usaremos por item.id la funcion es:
item.itemid == xxxx -- (donde xxxx es tu item id)

TIP:
Código:
Existen distintos tipos de igualaciones o denominaciones que son:
< -- si lo que compararemos es menor a lo comparado
> -- si lo que compararemos es mayor a lo comparado
<= -- si lo que compararemos es igual o menor a lo comparado
>= -- si lo que compararemos es igual o mayor a lo comparado
== -- si lo que compararemos es igual a lo comparado
~= -- si lo que compararemos no es igual a lo comparado


Ahora usaremos los do o los set
Todos son para dar algo especial...

Código:
//set*
setCreatureMaxHealth(cid, health)
setCreatureMaxMana(cid, mana)
setPlayerStorageValue(uid, key, newValue) //TODO: from here all bottoms
setPlayerGroupId(cid, newGroupId)
setPlayerPromotionLevel(cid, level)
setPlayerStamina(cid, minutes)
setPlayerExtraExpRate(cid, value)
setPlayerPartner(cid, guid)
setHouseOwner(houseid, ownerGUID)
setHouseAccessList(houseid, listid, listtext)
setItemName(uid)
setItemPluralName(uid)
setItemArticle(uid)
setItemAttack(uid, attack)
setItemExtraAttack(uid, extraattack)
setItemDefense(uid, defense)
setItemArmor(uid, armor)
setItemExtraDefense(uid, extradefense)
setItemAttackSpeed(uid, attackspeed)
setItemHitChance(uid, hitChance)
setItemShootRange(uid, shootRange)
setCombatArea(combat, area)
setCombatCondition(combat, condition)
setCombatParam(combat, key, value)
setConditionParam(condition, key, value)
setCombatCallBack(combat, key, function_name)
setCombatFormula(combat, type, mina, minb, maxa, maxb)
setConditionFormula(combat, mina, minb, maxa, maxb)
setGlobalStorageValue(key, newValue)
setWorldType(type)

//do*
doCreatureAddHealth(cid, health[, force])
doCreatureAddMana(cid, mana)
doCreatureSetDropLoot(cid, doDrop)
doCreatureSetSkullType(cid, skull)
doCreatureSetLookDir(cid, dir)
doCreatureChangeOutfit(cid, outfit)
doCreatureSay(cid, text, type[, pos])
doCreatureSetNoMove(cid, cannotMove)
doSetCreatureLight(cid, lightLevel, lightColor, time)
doSetCreatureOutfit(cid, outfit, time)
doRemoveCreature(cid)
doMoveCreature(cid, direction)
doConvinceCreature(cid, target)
doChallengeCreature(cid, target)
doChangeSpeed(cid, delta)
doSummonMonster(name, pos)
doCreateMonster(name, pos)
doMonsterChangeTarget(cid)
doMonsterSetTarget(cid, target)
doCreateNpc(name, pos)
doSetMonsterOutfit(cid, name, time)
doPlayerBroadcastMessage(cid, message[, type])
doPlayerSetSex(cid, newSex)
doPlayerSetTown(cid, townid)
doPlayerSetVocation(cid,voc)
doPlayerRemoveItem(cid, itemid, count[, subtype])
doPlayerAddExp(cid, exp)
doPlayerSetGuildId(cid, id)
doPlayerSetGuildRank(cid, rank)
doPlayerSetGuildNick(cid, nick)
doPlayerAddOutfit(cid,looktype, addons)
doPlayerRemoveOutfit(cid,looktype, addons)
doPlayerSetRedSkullTicks(cid, amount)
doPlayerSetLossPercent(cid, lossType, newPercent)
doPlayerSetLossSkill(cid, doLose)
doPlayerAddSkillTry(cid, skillid, n)
doPlayerAddSpentMana(cid, amount)
doPlayerAddSoul(cid, soul)
doPlayerAddItem(uid, itemid[, count/subtype[, canDropOnMap]])
doPlayerAddItemEx(cid, uid[, canDropOnMap])
doPlayerSendTextMessage(cid, MessageClasses, message)
doPlayerSendChannelMessage(cid, author, message, SpeakClasses, channel)
doPlayerSendToChannel(cid, targetId, SpeakClasses, message, channel[, time])
doPlayerAddMoney(cid, money)
doPlayerRemoveMoney(cid, money)
doPlayerWithdrawMoney(cid, money)
doPlayerDepositMoney(cid, money)
doPlayerTransferMoneyTo(cid, target, money)
doPlayerPopupFYI(cid, message)
doPlayerSendTutorial(cid, id)
doPlayerAddMapMark(cid, pos, type[, description])
doPlayerAddPremiumDays(cid, days)
doPlayerAddBlessing(cid, blessing)
doPlayerAddStamina(cid, minutes)
doPlayerResetIdleTime(cid)
doPlayerLearnInstantSpell(cid, name)
doPlayerUnlearnInstantSpell(cid, name)
doPlayerFeed(cid, food)
doPlayerSendCancel(cid, text)
doPlayerSendDefaultCancel(cid, ReturnValue)
doPlayerSetRate(cid, type, value)
doPlayerJoinParty(cid, lid)
doPlayerSendOutfitWindow(cid)
doCreateItem(itemid, type/count, pos)
doCreateItemEx(itemid[, count/subtype])
doAddContainerItemEx(uid, virtuid)
doAddContainerItem(uid, itemid[, count/subtype])
doChangeTypeItem(uid, newtype)
doDecayItem(uid)
doRemoveItem(uid[, n])
doTransformItem(uid, toitemid[, count/subtype])
doSetItemActionId(uid, actionid)
doSetItemText(uid, text[, writer[, date]])
doSetItemSpecialDescription(uid, desc)
doSetItemOutfit(cid, item, time)
doSetItemProtection(uid, value)
doTileAddItemEx(pos, uid)
doTileQueryAdd(uid, pos[, flags])
doAddCondition(cid, condition)
doRemoveCondition(cid, type[, subId])
doRemoveConditions(cid[, onlyPersistent])
doAreaCombatHealth(cid, type, pos, area, min, max, effect)
doTargetCombatHealth(cid, target, type, min, max, effect)
doAreaCombatMana(cid, pos, area, min, max, effect)
doTargetCombatMana(cid, target, min, max, effect)
doAreaCombatCondition(cid, pos, area, condition, effect)
doTargetCombatCondition(cid, target, condition, effect)
doAreaCombatDispel(cid, pos, area, type, effect)
doTargetCombatDispel(cid, target, type, effect)
doCombat(cid, combat, param)
doTeleportThing(cid, newpos[, pushmove])
doCreateTeleport(itemid, topos, createpos)
doSendMagicEffect(pos, type[, creature])
doSendDistanceShoot(frompos, topos, type[, creature])
doSendAnimatedText(pos, text, color[, creature])
doShowTextDialog(cid, itemid, text)
doRelocate(pos, posTo)
doBroadcastMessage(message, type)
doWaypointAddTemporial(name, pos)
doSetGameState(id)
doAddIpBanishment(ip[, length[, comment[, admin]]])
doAddNamelock(name[, reason[, action[, comment[, admin]]]])
doAddBanishment(accId[, length[, reason[, action[, comment[, admin]]]]])
doAddDeletion(accId[, reason[, action[, comment[, admin]]]]])
doAddNotation(accId[, reason[, action[, comment[, admin]]]]])
doRemoveIpBanishment(ip[, mask])
doRemoveNamelock(name)
doRemoveBanisment(accId)
doRemoveDeletion(accId)
doRemoveNotations(accId)
doSaveServer()
doReloadInfo()
doCleanHouse(houseId)
doCleanMap()
doRefreshMap()

Como yo use un storage value, la funcion es setPlayerStorageValue(cid, storage que quieres dar)

Y la funcion de remover:
doPlayerRemoveItem(cid, el item id, el conteo) osea...
doPlayerRemoveItem(cid, 2006, 1)

Entonces armamos el codigo:
function onUse(cid, item, fromPosition, itemEx, toPosition)
if item.itemid == 2006 then
setPlayerStorageValue(cid, 1234)
doPlayerRemoveItem(cid, 2006, 1)
end
end

Eso significa que
function onUse(cid, item, fromPosition, itemEx, toPosition)
si el id del item es igual 2006 entonces
setPlayerStorageValue(cid, 1234)
doPlayerRemoveItem(cid, 2006, 1)
end
end

Porque los END?
Al igual que entrar en tu casa, cada vez que entras cierras la puerta al igual que sales...
Cada vez que usamos una funcion o un if lo cerraremos con un end (:

Bueno espero que les sirva hehe (:
Obsdark
Obsdark
Miembro
Mensajes Mensajes : 13

Escuela de Lua Empty Re: Escuela de Lua

Sáb Feb 18, 2012 9:25 am
te falto la parte donde agregas que de el addon, y te falto además la parte donde, si es que tiene el addon lo remueva.

Código:

Value1Addon = getPlayerStorageValue(cid, 1234)
function onUse(cid, item, fromPosition, itemEx, toPosition)
if item.itemid == 2006 and Value1Addon == -1 then
  setPlayerStorageValue(cid, 1234, 1)
  doPlayerAddOutfit(cid,looktype, addons)
  doPlayerRemoveItem(cid, 2006, 1)
elseif item.itemid == 2006 and Value1Addon == 1 then
  setPlayerStorageValue(cid, 1234, -1)
  doPlayerRemoveOutfit(cid,looktype, addons)
  doPlayerRemoveItem(cid, 2006, 1)
end
end

¿eso era lo que querías. no? Wink

¡Bendiciones!
(Y)(Y)


-Obsdark-
Volver arriba
Permisos de este foro:
No puedes responder a temas en este foro.