Sistemul de Energie

Deconectat
Avatar utilizator
DaRealPain
Fost Helper
Fost Helper
Mesaje: 956
Membru din: 05 Oct 2014
Status: I'm happy (:
Server Metin2: Loading ...
Mulțumiri acordate: 8
Mulțumiri primite: 6
Contact:

Sistemul de Energie

Mesajde DaRealPain » 08 Noi 2014, 22:57

Buna tuturor!

Dupa ce am cautat dar nu am gasit nimic ma-m hotarat sa postez sistemul de energie
Nu e ceva nou dar sunt destiu care nu il au implementat

Sa incepem

Serverside:
Intai questul creeat de mine
Il adaugati in folderul cu questuri al serverului vostru apoi editati si numele in quest_list

Cod: Selectaţi tot

quest energy_system begin
   state start begin
      when 20001.chat."Inima albastra" begin
         say_title("Alchimist")
         say("De curand a aparut o noua putere.")
         say("Fiecare monstru are un fragment de energie in el.")
         say("Eu iti pot spune cum poti sa il scoti")
         say("dar aceasta este o technica grea care")
         say("poate fi invatata de abia de la levelul 75.")
         wait()
         say_title("Alchimist")
         say("Daca ai strans destule fragmente de energie,")
         say("eu ti le pot topi, pentru a obtine un cristal.")
         say("Acel cristal iti da un bonus PvP sau PvM.")
         say("Astepta o secunda.Trebuie sa gasesc cartea ...")
         wait()
         say_reward("Ai invatat cum sa obtii fragmente si cum sa le topesti!")
         say_reward("Made by DaRealPain")
         set_state("make")
      end
   end
   state make begin   
      when 20001.chat."Otinerea mult temutului cristals" begin
         say_title("Alchimist")
         say("Ah vrei sa obtii un cristal plin de energie?")
         say("Pentru a putea topi fragmentele trebuie sa ai")
         say("30 din ele si levelul 75.")
         wait()
         if pc.get_level() < 750 then
            say_title("Alchimist")
            say("Inca nu esti destul de puternic.")
            say("Dute, antreneazate si revino cand ai levelul 75!")
         else
            if pc.count_item(51001) >= 30 then
               say_title("Alchimist")
               say_reward("Made by DaRealPain")
               say("Foarte bine! Ai strans toate cele 30 de fragmente.")
               say("Acum ti le pot topi pentru a obtine un cristal!")
               say("Asteapta un moment. O sa incerc sa le topesc.")
               say("Dar nu pot garanta ca o sa functioneze.")
               wait()
               say_title("Alchimist")
               say("Totul este pregatit pentru topire.")
               say("Dar eu trebuie sa si traiesc din ceva.")
               say("Uneltele mele nu cad din cer!")
               say("Am nevoie de o miiiica suma de bani.")
               say("Suma este de vreo 35kk Yang")
               say("Vrei sa platesti?")
               if select("Da, normal!","Nu, nu acum") == 2 then
                  return
               end
               
               pc.change_money(-350000000)
               pc.remove_item(51001,30)
               
               if number(0,1) == 1 then
                  say_title("Alchimist")
                  say("A functionatt!")
                  say("Poftim, aici ai cristalul.")
                  say("Ii simti deja puterea?")
                  pc.give_item2(51002,1)
               else -- NICHT DE
                  say_title("Alchimist")
                  say("Din pacate nu a functionat!")
                  say("Imi pare rau!")
                  return
               end
               
            else -- NICHT DE
               say_title("Alchimist")
               say("Din pacate nu ai cele 30 de fragmente, ")
               say("de care am nevoie. Pleaca!")
               return
            end
            
         end
      end
      
      when login begin
         if getenergytime() < 50000 then
            test_chat("[Energy]Restzeit: "..getenergytime())
            setenergytime(getenergytime() + get_time())
            cmdchat("energysystem "..getenergytyp().."|"..getenergyvalue().."#"..getenergytime())
         end
      end
      when logout begin
         if getenergytime() > get_time() then
            local energy = getenergytime() - get_time()
            if energy > 0 then
               setenergytime(energy)
            end
         end
      end
      
      when 51002.use begin
         if getenergytime() > get_time() then
            chat("Deja te folosesti de puterea unui cristal!")
            return
         end
         
         local anz = number(1,10)
         boni_list = {}
         boni_list [1] = {apply.ATTBONUS_HUMAN,   20}
         boni_list [2] = {apply.ATTBONUS_MONSTER,   15}
         boni_list [5] = {apply.MAX_HP,   3500}
         boni_list [6] = {apply.MAX_SP,   3000}
         boni_list [9] = {apply.ATT_GRADE_BONUS,   75}
         boni_list [10] = {apply.ATT_GRADE_BONUS,   50}
         
--         test_chat(anz)
--         test_chat(boni_list[anz][1])
--         test_chat(boni_list[anz][2])

         affect.add_collect(boni_list[anz][1],boni_list[anz][2],7200)
         setenergy(anz,boni_list[anz][2],get_time() + 7200)

         cmdchat("energysystem "..anz.."|"..boni_list[anz][2].."#"..(get_time() + 7200))
         
   --      setenergytime(get_time() + 7200)
         
         item.remove()
         chat("Simti puterea nemaipomenita a cristalului ..")
         
      end
   end
end


Apoi deschideti questlib.lua si jos de tot adaugati

Cod: Selectaţi tot

function setenergy(typ,value,timez)
    pc.setqf("energy_value", value)
    pc.setqf("energy_date", get_time() + timez)
    pc.setqf("energy_typ", typ)
end
function setenergytime(timez)
    pc.setqf("energy_date", timez)
end
function getenergytyp()
    return pc.getqf("energy_typ")
end
function getenergyvalue()
    return pc.getqf("energy_value")
end
function getenergytime()
    return pc.getqf("energy_date")
end

function split(str, delim, maxNb)
    if str == nil then return str end
    if string.find(str, delim) == nil then return { str } end
    if maxNb == nil or maxNb < 1 then maxNb = 0 end
    local result = {}
    local pat = "(.-)" .. delim .. "()"
    local nb = 0
    local lastPos
    for part, pos in string.gfind(str, pat) do
        nb = nb + 1
        result[nb] = part
        lastPos = pos
        if nb == maxNb then break end
    end
    if nb ~= maxNb then result[nb + 1] = string.sub(str, lastPos) end
    return result
end



mysql_query = function(query)
    local rt = io.open('CONFIG','r'):read('*all')
    local pre= string.gsub(rt,'.+PLAYER_SQL:%s(%S+)%s(%S+)%s(%S+)%s(%S+).+','-h%1 -u%2 -p%3 -D%4')
    math.randomseed(os.time())
    local fi,t,out = 'mysql_data_'..math.random(10^9)+math.random(2^4,2^10),{},{}
    os.execute('mysql '..pre..' --e='..string.format('%q',query)..' > '..fi)   
    for av in io.open(fi,'r'):lines() do table.insert(t,split(av,'\t')) end; os.remove(fi);
    for i = 2, table.getn(t) do table.foreach(t[i],function(a,b)
        out[i-1]        = out[i-1] or {}
        out[i-1][a]        = b
        out[t[1][a]]    = out[t[1][a]] or {}
        out[t[1][a]][i-1]    = b
    end) end
    return out
end

-- Entferne Leerzeichen vor und nach dem String
function string.trim(str)
    return (string.gsub(str, "^%s*(.-)%s*$", "%1"))
end
-- String zu Array über Seperator
function string.explode(str, sep)
    if sep == "" or str == "" then
        error("Parametru lipsa")
    end
    local pos, t = 1, {}
    for s, e in function() return string.find(str, sep, pos) end do
        table.insert(t, string.trim(string.sub(str, pos, s-1)))
        pos = e+1
    end
    table.insert(t, string.trim(string.sub(str, pos)))
    return t
end 


Apoi adaugati in blend.txt

Cod: Selectaţi tot

#충기환
section
   item_vnum   51002
   apply_type   ENERGY
   apply_value   1   3   5   7   10
   apply_duration   7200   7200   7200   7200   7200
end


Clientside:
Descarcati Folderul Trebuie să fii logat sau înregistrat pentru a vedea acest link.
Despachetati root.eix/.epk si apoi deschideti constinfo.py
Sub

Cod: Selectaţi tot

PVPMODE_PROTECTED_LEVEL
puneti

Cod: Selectaţi tot

ENERGY = 0
ENERGY_END_TIME = 0
ENERGY_TYPE = 0
ENABLE_ENERGY_SYSTEM = 1


Luati apoi interfacemodule.py si uitaskbar.py din folderul pe care la-ti descarcat si puneti-l in locul al celor ale voastre

Apoi deschideti game.py si cautati

Cod: Selectaţi tot

def __ServerCommand_Build(self): 

Acolo undeva puneti

Cod: Selectaţi tot

            "energysystem"            : self.__energysystem,
            #Energy System

Apoi dati scroll pana jos de tot si adaugati

Cod: Selectaţi tot

def __energysystem(self, value):
        import constinfo
        constinfo.ENERGY_TYPE = int(value[:value.find("|")])
        constinfo.ENERGY = int(value[value.find("|") + 1:value.find("#")])
        constinfo.ENERGY_END_TIME = int(value[value.find("#") + 1:]) 


Asta a fost cu root.eix/.epk

Apoi despachetati locale_de sau locale_ro (in functie de ce aveti) si intrati in locale/de/ui sau locale/ro/ui
Acolo trageti energybar.py al meu
In fisierul .xml puneti:

Cod: Selectaţi tot

      <File archivedPath="locale/de/ui/energybar.py" type="1"><![CDATA[Source\locale\de\ui\energybar.py]]></File>

sau

Cod: Selectaţi tot

      <File archivedPath="locale/ro/ui/energybar.py" type="1"><![CDATA[Source\locale\ro\ui\energybar.py]]></File>

In functie de ce ati decriptat: locale_de sau locale_ro
Apoi criptati locale_de sau locale_ro
Asta a fost in locale_


Acum decriptati fisierele ETC.eix/.epk
Acolo intrati in ymir work\ui\pattern\
Acolo puneti EnergyGauge din folderul meu si in fisierul .xml adaugati:

Cod: Selectaţi tot

<File archivedPath="d:/ymir work/ui/intro/EnergyGaugepattern/energygauge_base.tga" type="1"><![CDATA[Source\ymir work\ui\intro\pattern\EnergyGaugepattern\energygauge_base.tga]]></File>

Cod: Selectaţi tot

<File archivedPath="d:/ymir work/ui/intro/EnergyGaugepattern/gauge_empty.tga" type="1"><![CDATA[Source\ymir work\ui\intro\pattern\EnergyGaugepattern\gauge_empty.tga]]></File>

Cod: Selectaţi tot

<File archivedPath="d:/ymir work/ui/intro/EnergyGaugepattern/gauge_full.tga" type="1"><![CDATA[Source\ymir work\ui\intro\pattern\EnergyGaugepattern\gauge_full.tga]]></File>

Cod: Selectaţi tot

<File archivedPath="d:/ymir work/ui/intro/EnergyGaugepattern/gauge_hungry.tga" type="1"><![CDATA[Source\ymir work\ui\intro\pattern\EnergyGaugepattern\gauge_hungry.tga]]></File>

Acum puteti inpacheta totul si pune la loc

Coduri pentru item_proto

Cod: Selectaţi tot

INSERT INTO `item_proto` VALUES ('51001', 0xC8B0BCAE, 0x456E657267696573706C6974746572, '0', '0', '0', '1', '0', '4', '0', '', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');
INSERT INTO `item_proto` VALUES ('51002', 0xC3E6B1E2C8AF, 0x456E65726769656B72697374616C6C, '18', '0', '0', '1', '0', '4', '0', '', '0', '0', '0', '0', '0', '0', '1', '35', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); 


Si gata
Acum aveti Sistemul de energie ^.^

P.S. Icon-urile pentru Client nu le am bagat
Daca le vreti le scoateti voi din clientul de la Metin2.ro si le bagati ^.^
Doresti sa iti omori timpul cu un Let's Play de la cele mai actuale jocuri?
Da click pe banner, lasa un like si aboneaza-te.
Trebuie să fii logat sau înregistrat pentru a vedea acest link.

Tutoriale pentru servere de Metin2
Trebuie să fii logat sau înregistrat pentru a vedea acest link.

Deconectat
Avatar utilizator
RocaSS
Utilizator interzis !
Utilizator interzis !
Mesaje: 281
Membru din: 18 Oct 2014
Localitate: Germania, Stuttgart.
Status: Sunt bine mersi ^.^
Server Metin2: N-am. =]]
Regat: Jinno
Mulțumiri acordate: 0
Mulțumiri primite: 4

Re: Sistemul de Energie

Mesajde RocaSS » 09 Noi 2014, 10:19

foarte bun mersi ca l-ai postat !
Imagine
Imagine

Deconectat
Avatar utilizator
M.Seby
Utilizator interzis !
Utilizator interzis !
Mesaje: 3011
Membru din: 10 Sep 2013
Localitate: Suceava
Reputație: Fost Administrator
Fost Organizator echipă
Status: Sunt bine mersi ^.^
Server Metin2: Not Found
Regat: Jinno
Mulțumiri acordate: 1
Mulțumiri primite: 11
Contact:

Re: Sistemul de Energie

Mesajde M.Seby » 08 Iul 2015, 12:29

Mutat în altele!
Imagine

Contact:

Skype: seby_061


Înapoi la “Altele”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: andronic2020, arhire01, FlorinIfrim, nanotek6767, R00tKyDDu, razvansuciu87, Sekaze, SoLuS @ Twix-Work.com, vladmanen123 și 15 vizitatori