Jump to content

L2 Adrenaline Scripts.


Recommended Posts

7 hours ago, MrAnGel_700 said:

Script For Gold bar in 1kkk Adena?

Can u make it with right click on adena icon? If yes,then u can just add and use adena as an item to use every 1 sec in ur bot.Easier way i guess.. 

Link to comment
Share on other sites

  • 3 weeks later...

Hello, how are you? I need help editing this script for the char to get close to gk, but starting with all goddard respawns, can anyone help me? Just to go next to the GK, which is where the npc buffer is, the rest I've done.

  The script is pretty basic, but all the "if" commands I tried to add made me have a runtime error! Thanks in advance!

__________________________________________________________________________________________

var Figth_Flag:boolean;
     Item: TL2Item;
     Npc: TL2Npc;
     Obj: TL2Buff;
     IdBuff: integer;
     Buffs:TL2Buff;
var L2Skill: TL2Skill;


procedure toVillage;
begin
Print('To Village');
  Delay(100);
    if (User.HP=0) then
      begin
       Delay(2000);
       Engine.GoHome;
       Engine.Facecontrol(0,False);
       Buff;
      end;
end;


procedure buff;
begin
     Print('Go Buffer');
     Engine.Settarget(30361); 
     Delay(1500);
     Engine.Settarget(30361);
     Delay(1500);
     Engine.DlgOpen;
     Delay(1500);
     Engine.DlgSel(1);  // BUFFS
     Delay(800);
     Engine.DlgSel(1);   //Wind Walk
     Delay(400);
     Engine.DlgSel(3);   //Shield
     Delay(400);
     Engine.DlgSel(5);   //Bless Body
     Delay(400);
     Engine.DlgSel(7);   //Mag Barrier
     Delay(400);
     Engine.DlgSel(8);   //Concentration
     Delay(400);
     Engine.DlgSel(9);   //zerk
     Delay(400);
     Engine.DlgSel(11);   //Acumen
     Delay(400);
     Engine.DlgSel(12);   //Empower
     Delay(400);
     Engine.DlgSel(18);   //G. Shield
     Delay(400);
     Engine.DlgSel(20);   //W magic
     Delay(400);
     Engine.DlgOpen;
     Delay(1500);
     Engine.DlgSel(2);   //SONGS
     Delay(400);
     Engine.DlgSel(1);   //Song Earth
     Delay(400);
     Engine.DlgSel(4);   //Song Warding
     Delay(400);
     Engine.DlgSel(5);   //Song wind
     Delay(400);
     Engine.DlgSel(7);   //Song Vitality
     Delay(400);
     Engine.DlgSel(9);   //Song renewal
     Delay(400);
     Engine.DlgOpen;
     Delay(1500);
     Engine.DlgSel(3);   //DANCES
     Delay(400);
     Engine.DlgSel(3);   //Dance Mystic
     Delay(400);
     Engine.DlgSel(6);   //Dance Concetration
     Delay(400);
     Engine.DlgSel(8);   //Dance Siren
     Delay(400);
     Engine.DlgSel(16);   //Malaria
     Delay(400);
     Engine.DlgOpen;
     Delay(1500);
     Engine.DlgSel(4);   //PROFECY
     Delay(400);
     Engine.DlgSel(4);   //Magnus
     Delay(400);
     Engine.DlgSel(19);   //Seraphim
     Delay(400);
     RunTo;
end;


procedure RunTo;
begin
     Print('Go Teleporte');
     Engine.MoveTo(146952, -70120, -3664);
     Delay(500);
     Engine.SetTarget(31031);  //Target do NCP GK
     Delay(1500);
     Engine.DlgOpen; // abre chat combat npc
     Delay(1500);
     Engine.DlgSel(4);
     Delay(1500);
     Engine.DlgSel(3);
     Delay(1500);
     Fight;
end;


procedure toBuff;
  begin
  IdBuff:=1204 ;  //Check BUFF
   while not User.Buffs.ById(IdBuff,obj) do begin
        Print('Check Buff');
        Engine.UseItem(736);  //Scroll Escape
        Delay(7000);
        buff;
   end;
end;


procedure Fight;
   begin
   Print('Fight zone');
    Engine.MoveTo(146952, -70120, -3664);
    Delay(500);
    Engine.MoveTo(146872, -70424, -3560);
    Delay(500);
    Engine.MoveTo(145624, -73352, -4336);
    Delay(500);
    Engine.LoadConfig('1');    //Íàçâàíèå Âàøåãî êîíôèãà
    Engine.LoadZone('zona2.zmap');   //zona de combat
    Print('Ôàðì');
    toVillage;
    Engine.Facecontrol(0,True);
end;


//-----------------------------------------------------------------------------
begin    //repete novamente o script
Print('repete novamente');
  repeat
   toBuff;
   toVillage;
  until Engine.Status = lsOffline;
  Delay(5000);
end.

Link to comment
Share on other sites

  • 2 weeks later...

uses SysUtils;

const
buff_ID:integer = 1204;

var
loggedIn:boolean;
 
function ShellExecuteW(hwnd: integer; lpOperation, lpFile, lpParameters, lpDirectory: PChar;  nShowCmd:

integer): integer; stdcall;
  external 'Shell32.dll';
 
function keybd_event(bVk, bScan: byte; dwFlags, dwExtraInfo: integer): integer; stdcall;
  external 'user32.dll';

function ShowWindow(hwnd:cardinal; action:integer):boolean; stdcall;
external 'user32.dll';
 
procedure disconnectMonitor;
const
  login = 'lgn';
  password = 'psw';
  gamePath = 'D:\LINEAGE2INTERLUDE\L2INT5\systemORG\l2.exe';
begin
  while engine.Delay(3000) do begin  
    if (Engine.Status = lsOffline) or (Engine.Status = lsOff) then begin
      loggedIn:=true;
      print('dc');
      Engine.FaceControl(0, false);
      Delay(1000);
      Engine.GameClose;
      Delay(1000);
      ShellExecuteW(0, 'open', PChar(gamePath), nil, nil, 0);
      Delay(15000);
      enterText(login);
      Engine.UseKey('Tab');
      Delay(300);
      enterText(password);
      Delay(300);
      Engine.UseKey('Enter');
      Delay(2000);
      Engine.UseKey('Enter');
      Delay(2000);
      Engine.UseKey('Enter');
      Delay(2000);
      Engine.UseKey('Enter');
      Delay(10000);
      ShowWindow(engine.gamewindow, 6);
    end;
  end;
end;
 
procedure enterText(const text: string);
var
  i: cardinal;
  upperCase: boolean;
begin
  for i:= 1 to length(text) do begin
    if isDigit(text) then
      Engine.UseKey(text)
    else begin
      upperCase:= text = UpCase(text);
      if upperCase then begin
          keybd_event(20, 0, 1, 0);
          keybd_event(20, 0, 2, 0);
          Engine.UseKey(text);
          delay(10);
          keybd_event(20, 0, 1, 0);
          keybd_event(20, 0, 2, 0);
      end else
        Engine.UseKey(text);
    end;
    Delay(50);
  end;
end;
 
function isDigit(ch: char): boolean;
const
  digits = '013456789';
var
  i: cardinal;
begin
  result:= false;
  for i:= 0 to length(digits) do
    if digits = ch then begin
      result:= true;
      exit;
    end;
end;

function buffCheck: Boolean;
var buff: TL2Buff;
begin
Result:=false;
    if not User.Buffs.ByID(buff_ID, buff) then begin
        Result:=true;
        Print('Buffs are needed...');
        if Engine.SetTarget(31600) then begin //NPC ID
           delay(1111);
        Engine.DlgOpen;
        Delay(1000);
        Engine.DlgSel(9);
        Delay(1000);
        Print('Buffed.');
        Engine.BypassToServer('custom_dobuff ProfBuffs FARM');
       delay(7000);
     Engine.CancelTarget;
    delay(1000);
           Print('Buffed.');
        end else begin
           if (user.target.valid) and (user.target.attackable) then
           while not user.target.dead do delay(50);
           Engine.FaceControl(0, false);
           print('No buffer - doing soe...');
           if engine.entertext('/unstuck') and engine.delay(1111) then
           while user.cast.endtime <> 0 do delay(2222);
           delay(5555);
        end;
    end;
end;

function deadCheck: Boolean;
begin
Result:=false;
    if User.Dead then begin
        Result:=true;
        Print('Dead. Pressing to village.');
        Delay(1000);
        Engine.FaceControl(0,false);
        Engine.GoHome;
        Delay(5555);
    end;
end;
procedure farmAndBack;
begin
while true do begin
delay(1111);
if not loggedIn then begin
if engine.status = lsonline then begin
//---------------------------------------------------
// Goddard
//---------------------------------------------------
    if User.InRange(146272, -58176, -2976, 250, 150) then begin // Near storage
      Print ('11');
      Engine.MoveTo(147221, -58386, -2980);
      Engine.MoveTo(147653, -58034, -2980);
      Engine.MoveTo(147936, -55368, -2760); //near GK
    end;
    if User.InRange(145264, -57680, -2976, 250, 150) then begin // Near storage 2
      Print ('12');
      Engine.MoveTo(145588, -56926, -3007);
      Engine.MoveTo(146673, -56095, -2807);
      Engine.MoveTo(147543, -56054, -2807);
      Engine.MoveTo(147936, -55368, -2760);
    end;
    if User.InRange(145696, -57696, -2976, 250, 150) then begin // Near storage 3
      Print ('13');
      Engine.MoveTo(145510, -56930, -3007);
      Engine.MoveTo(146499, -56202, -2807);
      Engine.MoveTo(147481, -56031, -2807);
      Engine.MoveTo(147936, -55368, -2760);
    end;
    if User.InRange(144944, -55392, -2976, 250, 150) then begin // The very edge
      Print ('14');
      Engine.MoveTo(145153, -56813, -3007);
      Engine.MoveTo(145569, -56855, -3007);
      Engine.MoveTo(146467, -56271, -2807);
      Engine.MoveTo(147566, -56034, -2807);
      Engine.MoveTo(147936, -55368, -2760);
    end;
    if User.InRange(144752, -56752, -2976, 250, 150) then begin // The very edge
      Print ('15');
      Engine.MoveTo(145534, -56884, -3007);
      Engine.MoveTo(146265, -56418, -2807);
      Engine.MoveTo(147407, -56063, -2807);
      Engine.MoveTo(147936, -55368, -2760);
    end;
    // East stairs
    if User.InRange(149872, -57424, -2976, 250, 150) then begin
      Print ('16');
      Engine.MoveTo(149897, -56910, -2979);
      Engine.MoveTo(149230, -56412, -2779);
      Engine.MoveTo(147939, -55999, -2772);
      Engine.MoveTo(147936, -55368, -2760);
    end;
    if User.InRange(149120, -58064, -2976, 250, 150 )then begin // score
      Print ('17');
      Engine.MoveTo(147706, -58107, -3007);
      Engine.MoveTo(147751, -56737, -2807);
      Engine.MoveTo(147936, -55368, -2760);
    end;
    if User.InRange(150400, -56752, -2976, 250, 150) then begin // The very edge
      Print ('18');
      Engine.MoveTo(149935, -56870, -3007);
      Engine.MoveTo(149139, -56390, -2807);
      Engine.MoveTo(147929, -56063, -2807);
      Engine.MoveTo(147936, -55368, -2760);
    end;
    if User.InRange(150704, -55744, -2976, 250, 150) then begin // The very edge 2
      Print ('19');
      Engine.MoveTo(149935, -56870, -3007);
      Engine.MoveTo(149139, -56390, -2807);
      Engine.MoveTo(147929, -56063, -2807);
      Engine.MoveTo(147936, -55368, -2760);
    end;
    if User.InRange(147700, -58400, -2976, 500, 150)  then begin
      Print ('20');
      Engine.MoveTo(147727, -57141, -2807);
      Print ('Climbing the stairs')
    end;
    if User.InRange(147727, -57141, -2807, 250, 150)  then begin
      Print ('21');
      Engine.MoveTo(147757, -55301, -2759);
      Print ('Moving to the church');
    end;
    if User.InRange(148288, -58304, -2976, 250, 150) then begin // Bottom center stairs slightly to the right
      Print ('22');
      Engine.MoveTo(147738, -58050, -3007);
      Engine.MoveTo(147727, -57141, -2807);
      Engine.MoveTo(147936, -55368, -2760);
    end;
    if User.InRange(147232, -58480, -2976, 250, 150) then begin  // Bottom center stairs to the left
      Print ('23');
      Engine.MoveTo(147677, -58063, -3007);
      Engine.MoveTo(147727, -57141, -2807);
      Engine.MoveTo(147936, -55368, -2760);
    end;
    if User.InRange(149088, -56256, -2776, 250, 150) then begin
      Print ('24');
      Engine.MoveTo(147854, -56054, -2807);
      Engine.MoveTo(147934, -55354, -2760);
    end;
    // Area
    if User.InRange(146832, -55904, -2776, 250, 150) then begin // Area to the left of the stairs
      Print ('25');
      Engine.MoveTo(147529, -56046, -2807);
      Engine.MoveTo(147936, -55368, -2760);
    end;
    if User.InRange(146368, -56256, -2776, 250, 150) then begin // Area to the left of the stairs 2
      Print ('26');
      Engine.MoveTo(147529, -56046, -2807);
      Engine.MoveTo(147936, -55368, -2760);
    end;
    if User.InRange(147664, -56464, -2776, 250, 150) then begin // Center area
      Print ('27');
      Engine.MoveTo(147936, -55368, -2760);
    end;
    if User.InRange(147680, -56928, -2776, 250, 150) then begin // Center area 2
      Print ('28');
      Engine.MoveTo(147810, -56110, -2807);
      Engine.MoveTo(147936, -55368, -2760);
    end;
    if User.InRange(148560, -55904, -2776, 250, 150) then begin // Area to the right of the stairs
      Print ('29');
      Engine.MoveTo(147908, -55980, -2773);
      Engine.MoveTo(147936, -55368, -2760); //near GK
    end;
    // East
    if User.InRange(150200, -57100, -2976, 600, 200) then begin
      Print ('30');
      Engine.MoveTo(149897, -56910, -2979); // go to the base of the stairs
      Engine.MoveTo(149230, -56412, -2779); // climb the stairs
      Engine.MoveTo(147637, -56074, -2776); // go to the center
      Engine.MoveTo(147728, -55332, -2728); // go to the gatekeeper
    end;
    if User.InRange(144960, -56224, -2976, 250, 150) then begin
      Print ('31');
      Engine.MoveTo(145458, -56853, -2979);
      Engine.MoveTo(146343, -56326, -2779);
      Engine.MoveTo(147625, -55995, -2772);
      Engine.MoveTo(147936, -55368, -2760); // Move near gk
    end;
    if User.InRange(144496, -55088, -2976, 250, 150) then begin
      Print ('32');
      Engine.MoveTo(145327, -56873, -2979);
      Engine.MoveTo(146337, -56445, -2779);
      Engine.MoveTo(147533, -55963, -2766);
      Engine.MoveTo(147936, -55368, -2760); // Move near gk
    end;
    if User.InRange(145392, -56960, -2976, 250, 150) then begin
      Print ('33');
      Engine.MoveTo(146347, -56305, -2779);
      Engine.MoveTo(147514, -56003, -2772);
      Engine.MoveTo(147936, -55368, -2760); // Move near gk
    end;

    if user.inrange(147963, -55257, -2736, 500) then begin
        buffCheck;
    end;                                                
    
    if user.inrange(147963, -55257, -2736, 150) and User.Buffs.ByID(buff_ID, buffCheck) then begin
        //teleport
        engine.settarget(31275);
        delay(1111);
        engine.dlgopen;
        delay(1111);
        engine.dlgsel(1);
        delay(1111);
        engine.dlgsel(4);
        Delay(5000);
    engine.settarget(31320);
    delay(1111);
    engine.dlgopen;
    delay(1111);
    engine.dlgsel(1);
    delay(1111);
    engine.dlgsel(13);
    delay(1111);
    end;    
                
    if User.InRange(123756, -75015, -2897, 250, 150) then begin // Near storage
      Print ('WoA');
      Engine.MoveTo(122794, -74830, -2883);
      Engine.MoveTo(122042, -74800, -3073); //example
      Engine.MoveTo(120707, -74865, -3268);
      Engine.MoveTo(120821, -76343, -3268);
      Engine.MoveTo(120018, -76400, -3268);
      Engine.MoveTo(119010, -76415, -3396);
     engine.useskill(337);
    delay(1000);
    Engine.Facecontrol(0,True);
        while (not (deadCheck or buffCheck)) and (engine.status = lsonline) do delay(2000);
    end;
end;
end else begin
if engine.status = lsonline then begin
if engine.entertext('/unstuck') and engine.delay(1111) then
while user.cast.endtime <> 0 do delay(2222);
delay(5555);
loggedIn:=false;
end;
end;
end;
end;

begin
if engine.status <> lsonline then loggedIn:= true else loggedIn:= false;
  Script.NewThread(@disconnectMonitor);
  Script.NewThread(@farmAndBack);
deadCheck;
end.

==========================================================================

 

After a few deads the char doesnt come back to the town. Can you tell me where is the problem ? Sometimes runs 4 houres sometimes 1h. The char is dead and dont comes back to the town.

Edited by elevator
Link to comment
Share on other sites

On 26/5/2017 at 11:50 AM, adr.bot said:

var
  adena:tl2item;
begin
  while engine.delay(555) do begin
  inventory.user.byid(57, adena);
    if assigned(adena) and (adena.count > 5 * 1000000) then begin // more than 5kk
      while not user.target.dead do delay(11);
      engine.facecontrol(0,false); delay(555);
      engine.entertext('.deposit'); delay(555);
      engine.facecontrol(0,true);
    end;
  end;
end.

how can i change the delay? i have chatban now. xd

Link to comment
Share on other sites

2 hours ago, arturo134 said:

delay(xxxx);

delay(changethisvalue);

thanks.

 

18 hours ago, PaRaNoiC* said:

lf one script for auto pick up for drop events at giran.

autorun with pickup. its easy but i dont know code. who can made for me?

you know how to make this?

Link to comment
Share on other sites

I have a problem with auto login script posted here in this topic. The script works fine on cracked version 1.71. I bought yesterday licence for newest adrenaline and the script doesnt work :/. Somebody had the same problem ? When the login and password should be entered nothing happens. Somebody can help me ?

 

===========================================================================================================================

 

uses SysUtils;

const
buff_ID:integer = 1204;

var
loggedIn:boolean;
 
function ShellExecuteW(hwnd: integer; lpOperation, lpFile, lpParameters, lpDirectory: PChar;  nShowCmd: integer): integer; stdcall;
  external 'Shell32.dll';
 
function keybd_event(bVk, bScan: byte; dwFlags, dwExtraInfo: integer): integer; stdcall;
  external 'user32.dll';

function ShowWindow(hwnd:cardinal; action:integer):boolean; stdcall;
external 'user32.dll';
 
procedure disconnectMonitor;
const
  login = 'LGN';
  password = 'PSW';
  gamePath = 'D:\LINEAGE2INTERLUDE\L2INT5\systemORG\l2.exe';
begin
  while engine.Delay(3000) do begin  
    if (Engine.Status = lsOffline) or (Engine.Status = lsOff) then begin
      loggedIn:=true;
      print('dc');
      Engine.GameClose;
      Delay(1000);
      ShellExecuteW(0, 'open', PChar(gamePath), nil, nil, 0);
      Delay(15000);
      enterText(login);
      Engine.UseKey('Tab');
      Delay(300);
      enterText(password);
      Delay(300);
      Engine.UseKey('Enter');
      Delay(2000);
      Engine.UseKey('Enter');
      Delay(2000);
      Engine.UseKey('Enter');
      Delay(2000);
      Engine.UseKey('Enter');
      Delay(10000);
      ShowWindow(engine.gamewindow, 6);
    end;
  end;
end;
 
procedure enterText(const text: string);
var
  i: cardinal;
  upperCase: boolean;
begin
  for i:= 1 to length(text) do begin
    if isDigit(text) then
      Engine.UseKey(text)
    else begin
      upperCase:= text = UpCase(text);
      if upperCase then begin
          keybd_event(20, 0, 1, 0);
          keybd_event(20, 0, 2, 0);
          Engine.UseKey(text);
          delay(10);
          keybd_event(20, 0, 1, 0);
          keybd_event(20, 0, 2, 0);
      end else
        Engine.UseKey(text);
    end;
    Delay(50);
  end;
end;
 
function isDigit(ch: char): boolean;
const
  digits = '013456789';
var
  i: cardinal;
begin
  result:= false;
  for i:= 0 to length(digits) do
    if digits = ch then begin
      result:= true;
      exit;
    end;
end;
                     
begin
if engine.status <> lsonline then loggedIn:= true else loggedIn:= false;
  Script.NewThread(@disconnectMonitor);
end.

Edited by elevator
Link to comment
Share on other sites

  • 2 weeks later...
On 9/27/2017 at 8:16 AM, the_martines said:

Is there a way to automate the creation of player shops? I mean selling/buing materials and soulshots.

uses SysUtils;
function BetterInt32ToHex(input: Integer): string;
var
  i, j: integer;
  p: string;
  bbI : array[1.. sizeof(integer)] of byte;
begin
  p := '';
  Move(input, bbI[1], SizeOf(Integer));
  for j := Low(bbI) to High(bbI) do
  begin
    p := p + IntToHex(bbI[j],2) + ' ';
  end;
  Result := p;
end;

function StringToHex(S: String): string;
var I: Integer;
begin
  Result:= '';
  for I := 1 to length (S) do
    Result:= Result+IntToHex(ord(S[i]),2) + ' 00 ';
end;

function OpenPrivateStoreSell(itemList: array of Integer; msg: string; packageSale: Boolean): boolean;
var
  packet: string;
  i, j, t: Integer;
  l: Extended;
  item: TL2Item;
begin
  packet := '97 ';
  packet := packet + StringToHex(msg) + '00 00';
  //Print(packet);
  Engine.SendToServer(packet);
  packet := '31 '; // Packet ID
  if(packageSale) then packet := packet + BetterInt32ToHex(1) else packet := packet + BetterInt32ToHex(0); // Package Sale
  l := Length(itemList);
  packet := packet + BetterInt32ToHex(Length(itemList) div 3);
  for i := 0 to Length(itemList) - 1 do
  begin
    j := i + 1;
    t := i + 2;
    if(Inventory.User.ByID(itemList[i], item)) then
    begin
      packet := packet + BetterInt32ToHex(item.OID);
      packet := packet + BetterInt32ToHex(itemList[j]) + '00 00 00 00 '; // Max 2.1b
      packet := packet + BetterInt32ToHex(itemList[t]) + '00 00 00 00 '; // Max 2.1b
    end;
    i := i +2;
  end;
  //Print(packet);
  Engine.SendToServer(packet);
end;

begin
OpenPrivateStoreSell([5591, 50, 5000, 5592, 50, 10000, 7575, 1, 50000000], 'message', true);
end.

Kinda old post I'm replying to but it might help someone else. Engine.OpenPrivateStore doesn't seem to work so I wrote this real quick cause I needed to use that function.  

OpenPrivateStoreSell(array of Integers (itemId, amount, price), string message, boolean packagesale);  

Price and amount are 32 bit, didn't bother making a 64 bit version of the BetterIntToHex function, which I'm so glad I wrote because it returns the proper formatting that Lineage 2 uses for it's packets.

Also there aren't any checks like if you actually have the item in your inventory or the amount you are selling or if the adena you gain will go over the adena max (2.147b bit in interlude, 99b in gracia through h5, 999b in classic) so make sure you call the function correctly. If I fell like it I will add those checks and maybe some configuration ini or something but I don't think many people will need this script at all.

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now



  • Posts

    • Someone ask me for this, it should work on any client that has Kamael race, preview:     Installation - there are two ways to install depending on how you want to use it:   Method 1: If you want to completely replace the original, do:   Copy all lines from your armorgrp to Notepad++, press Ctrl+H, check the "match whole word" option and replace:   kamael.Mkamael_m000_w_ad00   by:   AvengersKamaelWings.Avengers_MKamael_m001_w_ad00   Then replace:   MKamael.Mkamael_m000_t00_w   by:   AvengersKamaelWings.MKamael_m001_t00_w   Now repeat the same process with the female, replace:   kamael.Fkamael_m000_w_ad00   by:   AvengersKamaelWings.Avengers_FKamael_m001_w_ad00   Then replace:   FKamael.Fkamael_m000_t00_w   by:   AvengersKamaelWings.FKamael_m001_t00_w   You're done, paste everything back into File Edit and save!   Method 2: If you only want to replace in specific sets, execute the above process only on the armorgrp of those sets.   Repack by: AvengersTeamBr Password: LadrãoDeFrango      
    • 用于解密、加密和编辑 .u 文件的工具。
    • It's always awesome when you find someone who not only delivers great quality but also does it way ahead of schedule. Makes you feel like you hit the jackpot, right? I'm new around here, just stumbled upon this forum, and seeing posts like yours really gives me hope that there are some real pros hanging out in this community.
    • Dear friends! We have good news to announce that the server that will open in June 1 will be the Main server and every 4 months we will make another season server and integrate ( merge ) it into the main that will always be open..  
  • Topics

×
×
  • Create New...