Strona Główna Belxena 8.4 RPG

Forum poświęcone powstawaniu Belxena OTS

  • Nie jesteś zalogowany.
  • Polecamy: Gry

#1 2009-05-02 09:36:45

Wiesiu

Administrator

Zarejestrowany: 2009-04-03
Posty: 59
Punktów :   

Nowe funkcje do ots

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
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

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.


http://images.net.pl/file/u6iur6fo6sojbxta16uv.jpg

Offline

 

Stopka forum

RSS
Powered by PunBB
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi


Darmowe Forum | Ciekawe Fora | Darmowe Fora
www.eurotrucksite.pun.pl www.highriskboys.pun.pl www.cll.pun.pl www.tacbi.pun.pl www.online-menager.pun.pl