antiblock
Cyphriun

Rúben Alexandre

Membro
  • Content Count

    303
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by Rúben Alexandre


  1. quest arena_manager begin
            state start begin
                    when 20017.chat."Combate de Treino" begin
                            if game.get_event_flag("arena_close") > 0 then
                                    say_title("Yu-Hwan:")
                                    say("")
                                    ----"12345678901234567890123456789012345678901234567890"|
                                    say("A arena foi destruída devido a uma")
                                    say("terrível batalha.")
                                    say("")
                                    return
                            end
     
                            if not npc.lock() then
                                    say_title("Yu-Hwan:")
                                    say("")
                                    ----"12345678901234567890123456789012345678901234567890"|
                                    say("Alguém se inscreveu para o combate de treino.")
                                    say("")
                                    say("")
                                    return
                            end
     
                            local useMinLevel = game.get_event_flag("arena_use_min_level")
     
                            if useMinLevel == 0 then
                                    useMinLevel = 25 ;
                            end
     
                            if pc.get_level() < useMinLevel then
                                    say_title("Yuhwan:")
                                    say("")
                                    ----"12345678901234567890123456789012345678901234567890"|
                                    say("Ainda não és do nível "..useMinLevel..";")
                                    say("não podes entrar num combate ")
                                    say("")
                                    npc.unlock()
                                    return
                            else
                                    say_title("Yuhwan:")
                                    say("")
                                    ----"12345678901234567890123456789012345678901234567890"|
                                    say("Por favor, escolhe o nome do teu adversário ")
                                    say("para o combate de treino.")
                                    say("")
                                    say("")
     
                                    local sname = input()
     
                                    if sname == "" then
                                    say_title("Yu-Hwan:")
                                    say("")
                                    ----"12345678901234567890123456789012345678901234567890"|
                                    say("Não sabes com quem queres lutar?")
                                    say("")
                                            npc.unlock()
                                            return
                                    else
                                    say_title("Yu-Hwan:")
                                    say("")
                                    ----"12345678901234567890123456789012345678901234567890"|
                                    say(pc.name.." pediu um combate de treino")
                                    say("com "..sname..".")
                                    wait("")
     
                                            local opp_vid = find_pc_by_name(sname)
     
                                            if opp_vid == 0 then
                                    say_title("Yu-Hwan:")
                                    say("")
                                    ----"12345678901234567890123456789012345678901234567890"|
                                    say(sname.." não está disponível.")
                                    say("")
                                                    npc.unlock()
                                                    return
                                            elseif opp_vid == pc.get_vid() then
                                    say_title("Yu-Hwan:")
                                    say("")
                                    ----"12345678901234567890123456789012345678901234567890"|
                                    say("Tens a certeza, queres lutar contigo?")
                                    say("")
                                    say("")
                                                    npc.unlock()
                                                    return
                                            end
     
                                            local old = pc.select(opp_vid)
                                            local opp_level = pc.get_level()
                                            pc.select(old)
     
                                            if opp_level < useMinLevel then
                                    say_title("Yuhwan:")
                                    say("")
                                    ----"12345678901234567890123456789012345678901234567890"|
                                    say("O nível do teu adversário é menor que "..useMinLevel..".")
                                    say("")
                                                    npc.unlock()
                                                    return
                                            end
                                            if not npc.is_near_vid(opp_vid, 10) then
                                    say_title("Yuhwan:")
                                    say("")
                                    ----"12345678901234567890123456789012345678901234567890"|
                                    say("Para começar o combate ")
                                    say(sname.." tem de se aproximar.")
                                    say("")
                                                    npc.unlock()
                                                    return ;
                                            end
     
                                            local a = arena.is_in_arena(opp_vid)
                                            if a == 0 then
                                    say_title("Yuhwan:")
                                    say("")
                                    ----"12345678901234567890123456789012345678901234567890"|
                                    say(sname.." está neste momento em um combate.")
                                    say("")
                                                    npc.unlock()
                                                    return ;
                                            end
                                    say_title("Decisão")
                                    say("")
                                    say(pc.name.." aguarda "..sname.." para")
                                    say("aceitar o combate.")
                                            local agree = confirm(opp_vid, sname.." queres combater com "..pc.name.."", 30)
                                            if agree!= CONFIRM_OK then
                                    say_title("Yuhwan:")
                                    say("")
                                    ----"12345678901234567890123456789012345678901234567890"|
                                    say(sname.." não quer lutar contigo.")
                                    say("")
                                                    npc.unlock()
                                                    return
                                            end
     
                                            s = arena.start_duel(sname, 3)
     
                                            if s == 0 then
                                    say_title("Yu-Hwan:")
                                    say("")
                                    ----"12345678901234567890123456789012345678901234567890"|
                                    say("Houve um problema.")
                                    say("Queres combater mais tarde?")
                                    say("")
                                            elseif s == 2 then
                                    say_title("Yu-Hwan:")
                                    say("")
                                    ----"12345678901234567890123456789012345678901234567890"|
                                    say("As arenas estão cheias, volta mais tarde.")
                                    say("")
                                            elseif s == 3 then
                                    say_title("Yu-Hwan:")
                                    say("")
                                    ----"12345678901234567890123456789012345678901234567890"|
                                    say("A Arena de Duelos está neste momento em uso.")
                                    say("Tenta novamente mais tarde.")
                                    say("")
                                            end
                                    end
                            end
                            npc.unlock()
                    end
     
                    when 20017.chat."Ver um combate de treino" begin
                            local g = arena.get_duel_list()
                            local arena_name = {}
                            local arena_observer = {}
     
                            table.foreachi(g,
                                    function(n, p)
                                            arena_name[n] = p[1].." contra "..p[2]
                                            arena_observer[n] = { p[3], p[4], p[5] }
                                    end
                            )
     
                            table.insert(arena_name, "Fechar")
                            table.insert(arena_observer, 0)
     
                            local count = table.getn(g)
                            if count == 0 then
                            say_title("Yu-Hwan:")
                            say("")
                            ----"12345678901234567890123456789012345678901234567890"|
                            say("Não há neste momento nenhum combate.")
                            say("")
                            return ;
                            else
                            say_title("Yu-Hwan:")
                            say("")
                            ----"12345678901234567890123456789012345678901234567890"|
                            say("Neste momento há "..count.." combates de treino.")
                            say("")
                            wait()
                            end
     
                            if table.getn(g)!= 0 then
                                    local s = select_table(arena_name)
     
                                    if table.getn(arena_observer) == s then
                                            return ;
                                    end
     
                                    if table.getn(arena_observer) >= s then
                                            arena.add_observer(arena_observer[1], arena_observer[2], arena_observer[3])
                                    end
                            end
                    end
            end
    end


  2. Boa noite comunidade, acho que isto será interessante para muitos membros da CG. 

    • /usr/src/game_source/Srcs/Server/game/src
    • open - exchange.cpp
    • linha 485 procurar:

      if (item->GetVnum() >= 80003 && item->GetVnum() <= 80007)

                  {
                      LogManager::instance().GoldBarLog(victim->GetPlayerID(), item->GetID(), EXCHANGE_TAKE, "");
                      LogManager::instance().GoldBarLog(GetOwner()->GetPlayerID(), item->GetID(), EXCHANGE_GIVE, "");
                  }

    • adicionar: 

     

    m_pOwner->CreateFly(FLY_SP_MEDIUM, victim);

    for (int i = 0; i < 3; i++){
        m_pOwner->CreateFly(FLY_SP_SMALL, victim);
    }

     
    Exemplo: 
     


    0825_084427.jpg

    0825_084434.jpg
    0825_084438.jpg
    0825_084441.jpg
    créditos - Just Metin


  3. Boa tarde comunidade, venho aqui partilhar umas sv files (PVM HARD) na minha opinião parecem-me interessantes e poderão ajudar alguns membros da comunidade.

    Game$Mysql download:

    https://mega.nz/#!t513SIJZ!f10bg-sdDR9bdSH96685kuOEuh-Qpyy-W1LbFNROh74

    Password: doar1clickPiColo // PiColodoar1click

     

    Descarga Client:

    https://mega.nz/#!6pQ1TTKL!xepBFR6ljV3jnjNBsVUKvY1XciU65VdiGfhs1ne96k8

     

    aM2Ssfz.png

    T1LR653.png

    UZ6ZCQK.png

    24Cj027.png

    OHvsCzF.png

    Q13OuuK.png

     

    sistema de cofre ativo 50187.png

     

    WMr7KYJ.jpg

    LzvRqO3.jpg

    Lumr89x.jpg

    P5X6zIM.jpg

    BbnAHoK.jpg

    chVaCOe.jpg

    grdNmFQ.jpg

    KQMwtcJ.jpg

     

    source: j4m


  4. Event manager:

        quest event begin
    
                     state start begin
    
                         when letter with pc.get_gm_level()==5 begin
    
                             send_letter(gameforge.event.letter_10)
    
                         end
    
                         when button or info begin
    
                             say_title(gameforge.event.title_20)
    
                             say(gameforge.event.say_30)
    
                             local events_info = {
    
                                 --- event_name , flag
    
                                 {gameforge.event.event_90, "new_2006_drop"},
    
                                 {gameforge.event.event_100, "new_drop_moon"},
    
                                 {gameforge.event.event_110, "new_valentine_drop"},
    
                                 {gameforge.event.event_120, "new_football_drop"},
    
                                 {gameforge.event.event_130, "new_ramadan_drop"},
    
                                 {gameforge.event.event_140, "halloween_hair"},
    
                                 {gameforge.event.event_150, "easter_rabbit"},
    
                                 {gameforge.event.event_160, "new_xmas_event"},
    
                                 {gameforge.event.event_170, "dressup_saleh"},
    
                                 {gameforge.event.event_180, "sertbox_saleh"},
    
                                 -- حالة خاصه , لاتقم بالتعديل هنا
    
                                 {gameforge.event.say_70, nil}, -- rate
    
                                 {gameforge.locale.cancel, ""} -- close
    
                             }
    
                             local menu01 = {}
    
                             for num1,str1 in ipairs(events_info) do
    
                                 table.insert(menu01, str1[1])
    
                             end
    
                             local seltab01 = select_table(menu01, gameforge.locale.cancel)
    
                             if seltab01 == table.getn(menu01) then return end
    
                             say_reward(gameforge.event.say_reward_40)
    
                             if events_info[seltab01][2] == nil then
    
                                 say(gameforge.event.say_80)
    
                                 local min_rate = tonumber(input())
    
                                 if min_rate == nil then
    
                                     say(gameforge.event.say_90)
    
                                     return
    
                                 end
    
                                 game.set_event_flag("event_rate", min_rate)
    
                             else
    
                                 local s = select(gameforge.event.select_50, gameforge.event.select_60, gameforge.locale.cancel)
    
                                 if s == 1 then
    
                                     notice_all(string.format(gameforge.event.notice_70, events_info[seltab01][1]))
    
                                     game.set_event_flag(events_info[seltab01][2], 1)
    
                                 elseif s == 2 then
    
                                     notice_all(string.format(gameforge.event.notice_80, events_info[seltab01][1]))
    
                                     game.set_event_flag(events_info[seltab01][2], 0)
    
                                 else
    
                                     return
    
                                 end
    
                             end
    
                         end
    
                     end
    
                 end 
    

    Event drop:

        quest event_drop begin
    
                     state start begin
    
                         function get_events_table()
    
                             if event_drop.events_info == nil then
    
                                 event_drop.events_info={
    
                                     {gameforge.event.event_90, "new_2006_drop", 50037},
    
                                     {gameforge.event.event_100, "new_drop_moon", 50011},
    
                                     {" صندوق غامض ", "new_kids_day_drop", 50034},
    
                                     {gameforge.event.event_120, "new_football_drop", 50096},
    
                                     {gameforge.event.event_130, "new_ramadan_drop", 30315},
    
                                     {gameforge.event.event_170, "dressup_saleh", 50130},
    
                                     {gameforge.event.event_180, "sertbox_saleh", 50033},
    
                                 }
    
                             end
    
                             return event_drop.events_info
    
                         end
    
                        
    
                         when login or enter begin
    
                             for i,v in ipairs(event_drop.get_events_table()) do
    
                                 if game.get_event_flag(v[2]) == 1 then
    
                                     syschat(gameforge.event.say_100, v[1])
    
                                 end
    
                             end
    
                         end
    
                        
    
                         when kill with not npc.is_pc() begin
    
                             for i,v in ipairs(event_drop.get_events_table()) do
    
                                 if game.get_event_flag(v[2]) == 1 then
    
                                     local level = pc.get_level()
    
                                     local limit = npc.get_level0()
    
                                     local rate = game.get_event_flag("event_rate")
    
                                     if level < limit+5 then
    
                                         if math.random(1, 100) <= rate then
    
                                             game.drop_item_with_ownership(v[3])
    
                                         end
    
                                     end
    
                                 end
    
                             end
    
                         end
    
                     end
    
                 end 
    

  5. Boa noite comunidade, agora que consegui arranjar um trabalho com um horário razoável já posso dedicar mais tempo ao meu projeto de metin2.
    No entanto não consigo lidar com tudo sozinho pois tenho um filho que se for preciso de 5 em 5 minutos desliga a ficha do PC.

    Não irei mencionar aspectos/ideias do projeto em si, apenas necessito de pessoal responsável e de confiança com tempo diariamente disponível. 

    Obrigado a todos.  :banana:


  6. O titulo e autoexplicativo, compro contas lvl30 unranked, de preferencias sem skins sem nada, limpas, pode ser em qualquer servidor.

    Tenho uma conta lv 30 euw mas penso que tem algumas skins (poucas) e acho que tá unranked porque já não jogo para ai a meio ano por isso não fiz pre-season. 


  7. Boa noite comunidade, ando muito desaparecido e estou sem nenhum tempo para dedicar ao servidor que já à muito tempo tentei abrir, entretanto sairam novos updates em relação ao metin2, e por isso decidi juntar algum € e investir.

    Basicamente gostava de alguma pessoa com serviços de metin2, refiro o exemplo do PACIFICADOR já tentei falar com ele mas não consigo por isso caso vejas o tópico gostaria de falar contigo.
    Gostava que quem fizesse este tipo de serviços que comente o tópico que depois eu entro em contacto para acordar serviços / orçamento.

    Sem mais, Rúben Alexandre.


  8. 1º - Descompactar a raiz (root.epk)
    2º - Abram o ficheiro " uiiventory.py "

    3º - Procuram por " defRefreshStatus "


    7xlTMTE.png

    money = player . GetElk ()
    if money <= 100000000 :
    self . wndMoney . SetFontColor ( 1.0 , 0.2 , 0.2 )
    elif money >= 100000001 and money <= 1000000000 :
    self . wndMoney . SetFontColor ( 1.0 , 0.6 , 0.2 )
    elif money >= 1000000001 and money <= 1500000000 :
    self . wndMoney . SetFontColor ( 1.0 , 1.0 , 0.2 )
    elif money >= 1500000001 :
    self . wndMoney . SetFontColor ( 0.6 , 1.0 , 0.2 )
    self . wndMoney . SetText ( localeInfo . NumberToMoneyString ( money ))


     

    Acho isto interessante! 

  9. Boa noite comunidade, desde já este tópico é para partilhar um novo código c++ para utilização cujo o título indica!

    Abram o seguinte ficheiro: input_main.cpp e procuram por " if (ch->IncreaseChatCounter() >= 10) "


    Em baixo adicionem:

    if (!strcmp(ch->LastPlayerMessage, buf) && (thecore_pulse() < (ch->LastMessageAt + SPAM_WAIT_SEC * 25)) && !ch->SpamAllowBuf(buf) && ch->GetGMLevel() < GM_LOW_WIZARD)
    {
    if (ch->BlockChatAfter < 2)
    {
    ch->ChatPacket(CHAT_TYPE_INFO, ("You must wait 5 seconds to repeat your message"));
    ch->BlockChatAfter++;
    return iExtraLen;
    }
    else
    {
    ch->BlockChatAfter = 0;
    ch->PlayerPunish(false, SPAM_CHAT_BAN_TIME);
    return iExtraLen;
    }
    }
    else
    {
    if (!ch->BannListCheck(buf) && ch->GetGMLevel() < GM_LOW_WIZARD)
    {
    ch->PlayerPunish(true, SPAM_BAN_TIME);
    return iExtraLen;
    }
    if (!ch->SpamListCheck(buf) && ch->GetGMLevel() < GM_LOW_WIZARD)
    {
    ch->ChatPacket(CHAT_TYPE_INFO, ("You wrote a not allowed words!"));
    ch->PlayerPunish(false, SPAM_CHAT_BAN_TIME);
    return iExtraLen;
    }
    }
     
    Tot in input_main.cpp cautam:
     
    ch->GetMapIndex(), strlen(ch->GetName())));
     
    Dedesubt adaugam:
     
    strcpy(ch->LastPlayerMessage, buf);
    ch->LastMessageAt = thecore_pulse();
    ch->BlockChatAfter = 0;
     
    Deschidem char.h si cautam:
     
    BYTE  GetChatCounter() const;
     
    Dedesubt adaugam:
     
    int  LastMessageAt;
    int  BlockChatAfter;
    char  LastPlayerMessage[CHAT_MAX_LEN + 1];
    void  PlayerPunish(bool PowerPunish, int Duration);
    bool  SpamListCheck(const char *Message);
    bool  BannListCheck(const char *Message);
    bool  SpamAllowBuf(const char *Message);
     
    Deschidem char.cpp si adaugam la sfarsit:
     
    void CHARACTER::playerPunish(bool PowerPunish, int Duration)
    {
    if (!PowerPunish)
    {
    AddAffect(AFFECT_BLOCK_CHAT, POINT_NONE, 0, AFF_NONE, Duration, 0, true);
    sys_log(0, "%s[%d] has been chatbanned because of spamming/writing words which are in the spamlist.txt", GetName(), GetPlayerID());
    }
    else
    {
    std::auto_ptr<SQLMsg> msg(DBManager::instance().DirectQuery("UPDATE account.account SET availDt = FROM_UNIXTIME(UNIX_TIMESTAMP(CURRENT_TIMESTAMP()) + %i) WHERE id = %d", Duration, GetAID()));
    sys_log(0, "%s[%d] has been banned because of saying blacklisted word", GetName(), GetPlayerID());
    GetDesc()->DelayedDisconnect(5);
    }
    }
     
    bool CHARACTER::SpamAllowBuf(const char *Message)
    {
    if (!strcmp(Message, "(Ȳ´ç)") || !strcmp(Message, "(µ·)") || !strcmp(Message, "(±â»Ý)") || !strcmp(Message, "(ÁÁľĆ)") || !strcmp(Message, "(»ç¶ű)") || !strcmp(Message, "(şĐłë)") || !strcmp(Message, "(ľĆÇĎ)") || !strcmp(Message, "(żěżď)") || !strcmp(Message, "(ÁËĽŰ)"))
    {
    return true;
    }
     
    return false;
    }
     
    bool CHARACTER::SpamListCheck(const char *Message)
    {
    for (int i = 0; i < SpamBlockListArray.size(); i++)
    {
    if (!strcmp(Message, SpamBlockListArray.c_str()))
    {
    return false;
    }
    }
     
    return true;
    }
     
    bool CHARACTER::BannListCheck(const char *Message)
    {
    for (int i = 0; i < SpamBannListArray.size(); i++)
    {
    if (!strcmp(Message, SpamBannListArray.c_str()))
    {
    return false;
    }
    }
     
    return true;
    }
     
    Adaugam in sursa game 2 fisiere:
     
        spamblock.cpp
        spamblock.h
     
    In spamblock.cpp adaugam:
     
    #include "fstream"
    #include "string"
    #include "sstream"
    #include "stdafx.h"
    #include "../../common/length.h"
     
     
    std::vector<std::string> SpamBlockListArray;
    std::vector<std::string> SpamBannListArray;
     
    void LoadBlockSpamList()
    {
    std::string TempBlockList;
    std::ifstream File("chat/blockspamlist.lst");
     
    if (!File.is_open())
    {
    sys_log(0, "WARNING: cannot open chat/blockspamlist.lst");
    return;
    }
     
    SpamBlockListArray.clear();
     
    while (!File.eof())
    {
    File >> TempBlockList;
    SpamBlockListArray.push_back(TempBlockList);
    }
     
    File.close();
    }
     
    void LoadBannSpamList()
    {
    std::string TempBannList;
    std::ifstream File("chat/bannspamlist.lst");
     
    if (!File.is_open())
    {
    sys_log(0, "WARNING: cannot open chat/bannspamlist.lst");
    return;
    }
     
    SpamBannListArray.clear();
     
    while (!File.eof())
    {
    File >> TempBannList;
    SpamBannListArray.push_back(TempBannList);
    }
     
    File.close();
    }
     
    In sapmblock.h adaugam:
     
    #include "string"
    #include "../../common/length.h"
     
     
    extern void LoadBlockSpamList();
    extern void LoadBannSpamList();
    extern std::vector<std::string> SpamBlockListArray;
    extern std::vector<std::string> SpamBannListArray;
     
    Ne ducem iar in char.cpp si adaugam la inceput:
     
    #include "spamblock.h"
     
    Ne ducem in main.cpp si adaugam:
     
    #include "spamblock.h"
     
    Cautam in main.cpp:
     
    PanamaLoad();
     
    si adaugam dedesubt:
     
    LoadBlockSpamList();
    LoadBannSpamList();
     
    Ne ducem in common/length.h si adaugam:
     
    SPAM_WAIT_SEC  = 5, // The player can duplicate his message after 5 sec
    SPAM_CHAT_BAN_TIME  = 60, // The player will receive 60 seconds chat ban, if he is saying a spamlist word
    SPAM_BAN_TIME  = 3600, // The player will receive 1 hour ban, if he is saying a banlist word
     
    Ne ducem in game/cmd_gm.cpp si cautam:
     
    ACMD(do_reload)
     
    si in functia de mai sus ACMD(do_reload) adaugam:
     
    case 'b':
    ch->ChatPacket(CHAT_TYPE_INFO, "Reloading bann/spam list infomations.");
    LoadBlockSpamList();
    LoadBannSpamList();
    sys_log(0, "Reloading bann/spam list infomations.");
    break;
     
    Dupa care ne ducem sus de tot la inceput(tot in cmd_gm.cpp)si adaugam:
     
    #include "spamblock.h"
     
    Acum dupa ce am terminat cu sursa ne ducem in ch-urile noastre si creeam 2 fisiere:
     
    blockspamlist.lst
    bannspamlist.lst



    Em relação ao chat avançado não percebi qual a modificação mas também não experimentei, o mesmo falo em relação aos créditos quem publicou referiu que o criado não quis usar a sua identidade para créditos por isso, só sei que provavelmente é romeno.

    Fonte: FreakPlay(dot)net


  10. Obrigado pela partilha. +1

     

     

    Concordo com essa opinião não só quanto ao centro mas quanto a maior parte do mapa, podia ter sido trabalhado um pouco mais...

     

     

    Aprende a ouvir opiniões, quando se publica algo, habilitas sempre a ouvir opiniões sobre o conteúdo que publicas-te.

    Mas existe a diferença de umas pessoas para as outras, e provavelmente uma pessoa olha para o comentário dele e para o teu e apercebe-se das diferenças, tenho o 9 ano e sei distinguir comentário de uma opinião, mas pronto não vou arranjar confusões  :tease:


  11. Deixa a pedra "normal" ja que isso vai depender de como cada um quer as skills... just it

    desde já obrigado pela tua opinião, mas se formos haver o verdadeiro PVP não se faz de Raiva a P é normal de Raiva a G1 o pvp ser mais equilibrado, a diferençã não é muito mas influência, ainda estaremos em dúvida se iremos colocar 2 opções nas Habilidades Corpo para solucionar essa questão.