What's new

Actions [TFS 1.2] Bro? do ?wicze?

Martix97

User
Joined
Apr 13, 2018
Messages
17
Reaction score
0
Witajcie, to jest pierwsza wersja nowego skryptu do ?wicze?!

jkujujA.gif


Stw?rz folder exercise_training.lua
Code:
local skills = {
    [26397] = {id=SKILL_SWORD,voc=4},
    [26398] = {id=SKILL_AXE,voc=4},
    [26399] = {id=SKILL_CLUB,voc=4},
    [26400] = {id=SKILL_DISTANCE,voc=3,range=CONST_ANI_SIMPLEARROW},
    [26401] = {id=SKILL_MAGLEVEL,voc=2,range=CONST_ANI_ENERGY},
    [26402] = {id=SKILL_MAGLEVEL,voc=1,range=CONST_ANI_FIRE},
}

------- CONFIG -----//
local dummies = {26403,26404}
local skill_gain = 1 -- per hit
local gain_stamina = 60

local function start_train(pid,start_pos,itemid,fpos)
    local player = Player(pid)
    if player ~= nil then
        local pos_n = player:getPosition()

        if start_pos:getDistance(pos_n) == 0 and getTilePzInfo(pos_n) then
            if player:getItemCount(itemid) >= 1 then
                local exercise = player:getItemById(itemid,true)

                if exercise:isItem() then
                    if exercise:hasAttribute(ITEM_ATTRIBUTE_CHARGES) then
                        local charges_n = exercise:getAttribute(ITEM_ATTRIBUTE_CHARGES)

                        if charges_n >= 1 then
                            exercise:setAttribute(ITEM_ATTRIBUTE_CHARGES, (charges_n-1))

                            local required = 0
                            local currently = 0
                            local voc = player:getVocation()

                            if skills[itemid].id == SKILL_MAGLEVEL then
                                required = voc:getRequiredManaSpent(player:getBaseMagicLevel() + 1)/skill_gain
                                currently = player:getManaSpent()
                                player:addManaSpent(required - currently)
                            else
                                required = voc:getRequiredSkillTries(skills[itemid].id, player:getSkillLevel(skills[itemid].id)+1)/skill_gain
                                currently = player:getSkillTries(skills[itemid].id)

                                player:addSkillTries(skills[itemid].id, (required - currently))
                            end

                            fpos:sendMagicEffect(CONST_ME_HITAREA)
                            if skills[itemid].range then
                                pos_n:sendDistanceEffect(fpos, skills[itemid].range)
                            end
                            player:setStamina(player:getStamina() + 60)

                            if charges_n == 1 then
                                exercise:remove(1)
                                return true
                            end
                            local training = addEvent(start_train, voc:getAttackSpeed(), pid,start_pos,itemid,fpos)
                        else
                            exercise:remove(1)
                            stopEvent(training)
                        end
                    end
                end
            end
        else
            stopEvent(training)
        end
    else
        stopEvent(training)
    end
    return true
end

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    local start_pos = player:getPosition()

    if target:isItem() then
        if isInArray(dummies,target:getId()) then
            if not skills[item.itemid].range and (start_pos:getDistance(target:getPosition()) > 1) then
                stopEvent(training)
                return false
            end
            if not player:getVocation():getId() == skills[item.itemid].voc or not player:getVocation():getId() == (skills[item.itemid].voc+4) then
                stopEvent(training)
                return false
            end
            player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You started training.")
            start_train(player:getId(),start_pos,item.itemid,target:getPosition())
        end
    end

    return true
end

Dodaj to w actions.xml
PHP:
<!-- Training -->
<action fromid="26397" toid="26402" script="exercise_training.lua" allowfaruse="1"/>

W events.xml

- Zmie? enable="0" na "1".
PHP:
<event class="Player" method="onTradeRequest" enabled="1" />

W /events/scripts/player.lua
Dodaj ta linijke na samej g?rze
PHP:
local exercise_ids = {26397,26398,26399,26400,26401,26402}

- w folderze function player::eek:nMoveItem dodaj ta linijke na samej gorze
PHP:
-- Exercise Weapons
if isInArray(exercise_ids,item.itemid) then
    self:sendCancelMessage('You cannot move this item outside this container.')
    return false
end

W folderze fukncji function Player::eek:nTradeRequest dodaj t? linijke na samej gorze
PHP:
if isInArray(exercise_ids,item.itemid) then
    return false
end

Mi?ej zabawy!
Autor: Discovery
 
Top