Witam. Postanowiłem napisać kilka nowych funkcji, które mam nadzieję użyjecie w swoim otsie. Wszystkie funkcje są zrobione w całości przeze mnie. Zabraniam rozpowszechniania tych funkcji bez mojej zgody. No więc zaczynamy:
1. Na początku otwórz plik global.lua, który znajduje się w folderze otsa/data. 2. Teraz zjedź na sam dół.
funkcje lua proste ale przydatne to do roboty :P Wszystkie funkcje wklejamy do global.lua lub w nowszych silnikach functions.lua
#1 funkcja doTeleportThingEffect(cid, pozycja, efektPrzedTeleportacją, efektPo)
Cytat: function doTeleportThingEffect(cid, newpos, effect, aftereffect)
local pos = getPlayerPosition(cid) doSendMagicEffect(pos, effect) doTeleportThing(cid, newpos) doSendMagicEffect(newpos, aftereffect) return 1 end
#2 funkcja doPlayerRemoveHpProcent(cid, procentHpJakieMaByćZabrane)
Cytat:
function doPlayerRemoveHpProcent(cid, procent) local hp = getPlayerHealth(cid) local remove = (hp*procent)/100 doPlayerAddHealth(cid,-remove) return 1 end
#3 funkcja doPlayerRemoveManaProcent(cid, procentManaJakieMaByćZabrane)
Cytat:
function doPlayerRemoveManaProcent(cid, procent) local mana = getPlayerMana(cid) local remove = (mana*procent)/100 doPlayerAddMana(cid,-remove) return 1 end
#4 funkcja doPlayerKill(cid) Bez komentarza :P
Cytat:
function doPlayerKill(cid) local mana = getPlayerMana(cid) local hp = getPlayerHealth(cid) local kill = (mana+hp)+2 doPlayerAddHealth(cid,-kill) return 1 end
Kod:
Dodawanie maksymalnej many gracza Dodawanie maksymalnego hp gracza Dodawanie danego skilla (skillów) graczowi. doSearchCreatureInRoom(posx1, posy1, posx2, posy2, posz) -- Szuka, czy w pomiedzy tymi pozycjami jest jakiś potwór. Zwraca ilość potwórów. Jeżeli nie znalazło żadnych potworów zwraca 0
Jak dodać te funkcje? We wcześniej otwartym pliku global.lua na samym dole dodaj odpowiednie funkcje. Reszte trzeba dorzucić do skryptów ;/ Inaczej się nie dało niestety. Dla doSearchCreatureInRoom: Kod:
function doSearchCreatureInRoom(posx1, posy1, posx2, posy2, posz) local position1 = {x=posx1, y=posy1, z=posz} local position2 = {x=posx2, y=posy2, z=posz} ile_monsterow = 0 for x=position1.x, position2.x do for y=position1.y, position2.y do local monsterpos = {x=x, y=y, z=posz, stackpos=253} local monster = getThingfromPos(monsterpos) if (monster > 0) then if (isPlayer(monster) == 0) then ile_monsterow = ile_monsterow+1 end end end end return ile_monsterow end
Następnie zapisujemy plik i zamykamy.
Przykłady użycia każdej z tych funkcji: doPlayerAddMaxHealth: Kod:
local ile_godzin = 5 local ile_hp = 100 local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN) local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, ile_godzin*1000*60*60) setConditionParam(condition, CONDITION_PARAM_STAT_MAXHITPOINTS, ile_hp) setCombatCondition(combat, condition) function onUse(cid, item, frompos, item2, topos) return doCombat(cid, combat, numberToVariant(cid)) end
doPlayerAddMaxMana: Kod:
local ile_godzin = 5 local ile_many = 100 local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN) local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, ile_godzin*1000*60*60) setConditionParam(condition, CONDITION_PARAM_STAT_MAXMANAPOINTS, ile_many) setCombatCondition(combat, condition) function onUse(cid, item, frompos, item2, topos) return doCombat(cid, combat, numberToVariant(cid)) end end
doPlayerAddSkill: Kod:
local skillid = 1 -- Id skila. Mozliwe: 1-melee, 2-fist, 3-club, 4-sword, 5-axe, 6-distance, 7-shielding, 8-fishing local ile = 10 -- Ile skil dodaje local na_ile = 60*1000 -- Ile ma dzialac w sekundach local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN) local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, na_ile) if (skillid == 1) then setConditionParam(condition, CONDITION_PARAM_SKILL_MELEE, ile) elseif (skillid == 2) then setCondituonParam(condition, CONDITION_PARAM_SKILL_FIST, ile) elseif (skillid == 3) then setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB, ile) elseif (skillid == 4) then setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD, ile) elseif (skillid == 5) then setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, ile) elseif (skillid == 6) then setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, ile) elseif (skillid == 7) then setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, ile) elseif (skillid == 8) then setConditionParam(condition, CONDITION_PARAM_SKILL_FISHING, ile) end setCombatCondition(combat, condition) function onCastSpell(cid, var) return doCombat(cid, combat, var) end
doSearchCreatureInRoom: Kod:
function onUse(cid, item, frompos, item2, topos) local search = doSearchCreatureInRoom(500, 500, 600, 600, 7) if (search == 0) then doPlayerAddItem(cid, 1111, 1) doPlayerSendTextMessage(cid,22,"Na tych pozycjach nie ma zadnego stwora. Dostajesz item o id 1111.") else doPlayerSendTextMessage(cid,22,"Na tej pozycji jest jeszcze ".. search .." potworow.") end end
Mam nadzieję, że funkcje okażą się pomocne. Zostały testowane i działały.
|