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:
Ahora usaremos los do o los set
Todos son para dar algo especial...
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 (:
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 (:
- ObsdarkMiembro
- Mensajes : 13
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.
¿eso era lo que querías. no?
¡Bendiciones!
(Y)(Y)
-Obsdark-
- 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?
¡Bendiciones!
(Y)(Y)
-Obsdark-
Permisos de este foro:
No puedes responder a temas en este foro.