Jump to content

[iOS 12 UPDATED!!] [NIC TEMPLATE] Mod Menu Theos Template! Easily Create Your Own iGMMs!


1,155 posts in this topic

Recommended Posts

Posted
On May 4, 2017 at 9:29 AM, shmoo said:

enjoy :D

 
I encounter error while make package : tweak.xm 112 error %orig found outside of hook or subclass, please help
Posted
8 hours ago, saintshl said:
 
I encounter error while make package : tweak.xm 112 error %orig found outside of hook or subclass, please help

really? Can I see your tweak.xm? (offsets removed of course :P)

Posted
8 hours ago, shmoo said:

really? Can I see your tweak.xm? (offsets removed of course :P)

This is the tweak :

#import "Macros.h"
#import "ModMenu.h"
#import "Hack.h"
#import "Hook.h"
#import "SliderHook.h"
#import "TextfieldHook.h"
#import <substrate.h>
#import <initializer_list>
#import <vector>
#import <mach-o/dyld.h>

/*****************************/
static NSString *const title = @""; //title of your menu
static NSString *const credits = @""; //who made the hack?
static NSString *const font = @""; //what font do you want the text to be? don't put anything for the default font
static UIColor *const themeColor = ?; //the overall color for the menu and the button

//replace the ? with anything from this list:
//https://ghostbin.com/paste/mbkfb
//or you could specify a custom color with
//rgb(0xCOLORCODE) ex: rgb(0x738282)

//a complete list of fonts can be found here:
//http://iosfonts.com/

//please refer to README.txt for more info.
/******************************/

uint64_t getRealOffset(uint64_t);

void addHack(NSString *, NSString *, NSString *, std::initializer_list<uint64_t>, std::initializer_list<uint64_t>, std::initializer_list<uint64_t>);
void addHook(NSString *, NSString *, NSString *, uint64_t, void *, void *);
void addSliderHook(NSString *, NSString *, NSString *, float, float, uint64_t, void *, void *);
void addTextfieldHook(NSString *, NSString *, NSString *, uint64_t, void *, void *);

static ModMenu *menu;

bool buttonAdded;

%hook 

- (void)applicationDidBecomeActive:(id)arg0 {
UIWindow *main = [UIApplication sharedApplication].keyWindow.rootViewController.view;

UIButton *openButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
openButton.frame = CGRectMake((main.frame.size.width/2)-15, (main.frame.size.height/2)+75, 30, 30);
openButton.backgroundColor = [UIColor clearColor];
openButton.layer.cornerRadius = 16;
openButton.layer.borderWidth = 2;
openButton.layer.borderColor = themeColor.CGColor;
[openButton addTarget:self action:@selector(wasDragged:withEvent:) 
forControlEvents:UIControlEventTouchDragInside];
[openButton addTarget:self action:@selector(showMenu) 
forControlEvents:UIControlEventTouchDownRepeat];

if(!buttonAdded){
timer((int64_t)1){
UIWindow *main = [UIApplication sharedApplication].keyWindow.rootViewController.view;

menu = [[ModMenu alloc] initWithTitle:title credits:credits fontName:font theme:themeColor];

/***********************
add your features below this multi line comment. they show in the order you have added them.
for example:
addHack(@"God Mode", @"Description of the hack", font, {0x252e1a}, {0x7047}, {0xf0b5});
multi offset hacks can be added like this (there is no limit to the number of offsets you can have!):
addHack(@"No Recoil", @"No recoil prevents any recoil from being applied when you shoot.", font, {0x356a7c, 0x110f0a}, {0x7047, 0x7047}, {0xf0b5, 0xf0b5});
parameters: addHack(hack name, description, font, offset(s), hacked hex(es), original hex(es));

to add a slider hook:
for example:
addSliderHook(@"Field of View Slider", @"Adjust the game's field of view with this slider.", font, 40, 120, 0xc48ea6, (void *)_getFov, (void *)getFov);
parameters:
addSliderHook(hack name, description, font, minimum slider value, maximum slider value, function to hook, hooked function name, original function name);

to retrieve the value of the slider, use:
float val = [SliderHook getSliderValueForHook:@"hack name here"];

to add a textfield hook:
for example:
addTextfieldHook(@"Field of View Textfield", @"Adjust the game's field of view with this textfield.", font, 0xc48ea6, (void *)_getFov, (void *)getFov);
parameters:
addSliderHook(hack name, description, font, function to hook, hooked function name, original function name);

to retrieve the value of the textfield:
int val = [[TextfieldHook getTextfieldValueForHook:@"hack name here"] intValue];
float val = [[TextfieldHook getTextfieldValueForHook:@"hack name here"] floatValue];

to add a normal hook:
for example:
addHook(@"80 FOV", @"When on, your FOV will be changed to 80.", font, 0xc48ea6, (void *)_getFov, (void *)getFov);
parameters:
addHook(hack name, description, font, function to hook, hooked function name, original function name);
to see if the the user turned on the hook or not:
bool isOn = [Hook getHookOnForHook:@"hack name here"]
************************/
//add features here!

 

 

 

[main addSubview:openButton];
[main addSubview:menu];

buttonAdded = true;
});
}

%orig;
}

%new
- (void)showMenu {
[menu show];
}

%new
- (void)wasDragged:(UIButton *)button withEvent:(UIEvent *)event
{
    UITouch *touch = [[event touchesForView:button] anyObject];

    CGPoint previousLocation = [touch previousLocationInView:button];
    CGPoint location = [touch locationInView:button];
    CGFloat delta_x = location.x - previousLocation.x;
    CGFloat delta_y = location.y - previousLocation.y;

    button.center = CGPointMake(button.center.x + delta_x, button.center.y + delta_y);
}
%end

void addHack(@"Boost HP 1", @"Test 1", font, {0x129d9c}, {0x02d0241e}, {0x02102e1e});
addHack(@"Boost HP 2", @"Test 2", font, {0x129dd4}, {0x02d0241e}, {0x02102e1e});
addHack(@"Test 3", @"forgot what test", font, {0x14c558}, {0x01f0271e}, {0x01102c1e});
addHack(@"God Mode1", @"Test 4", font, {0x14f2fc}, {0xc0035fd6}, {0xe923bc6d});
addHack(@"God Mode2", @"Test 5", font, {0x1b1b354}, {0xc0035fd6}, {0xf44fbea9});

    
    offsetVector.insert(offsetVector.begin(), offsets.begin(), offsets.end());
    hackedHexVector.insert(hackedHexVector.begin(), hackedHexes.begin(), hackedHexes.end());
    originalHexVector.insert(originalHexVector.begin(), originalHexes.begin(), originalHexes.end());
    
    Hack *h = [[Hack alloc] initWithHackName:name info:description fontName:fontName theme:themeColor offset:offsetVector hackedHex:hackedHexVector originalHex:originalHexVector];
    [menu addHack:h];
}

void addHook(NSString *name, NSString *description, NSString *fontName, uint64_t offset, void *hooked, void *orig){
    MSHookFunction(((void*)getRealOffset(offset + 1)), hooked, &orig);

    Hook *h = [[Hook alloc] initWithHookName:name info:description fontName:fontName theme:themeColor offset:0x251832];
    [menu addHook:h];
}

void addSliderHook(NSString *name, NSString *description, NSString *fontName, float minValue, float maxValue, uint64_t offset, void *hooked, void *orig){
    MSHookFunction(((void*)getRealOffset(offset + 1)), hooked, &orig);

    SliderHook *sh = [[SliderHook alloc] initWithSliderHookName:name info:description fontName:fontName theme:themeColor offset:offset minValue:minValue maxValue:maxValue];
    [menu addHook:sh];
}

void addTextfieldHook(NSString *name, NSString *description, NSString *fontName, uint64_t offset, void *hooked, void *orig){
    MSHookFunction(((void*)getRealOffset(offset + 1)), hooked, &orig);

    TextfieldHook *th = [[TextfieldHook alloc] initWithTextfieldHookName:name info:description fontName:fontName theme:themeColor offset:offset];
    [menu addHook:th];
}

uint64_t getRealOffset(uint64_t offset){
    return _dyld_get_image_vmaddr_slide(0)+offset;
}

Posted
9 hours ago, saintshl said:

This is the tweak :

#import "Macros.h"
#import "ModMenu.h"
#import "Hack.h"
#import "Hook.h"
#import "SliderHook.h"
#import "TextfieldHook.h"
#import <substrate.h>
#import <initializer_list>
#import <vector>
#import <mach-o/dyld.h>

/*****************************/
static NSString *const title = @""; //title of your menu
static NSString *const credits = @""; //who made the hack?
static NSString *const font = @""; //what font do you want the text to be? don't put anything for the default font
static UIColor *const themeColor = ?; //the overall color for the menu and the button

//replace the ? with anything from this list:
//https://ghostbin.com/paste/mbkfb
//or you could specify a custom color with
//rgb(0xCOLORCODE) ex: rgb(0x738282)

//a complete list of fonts can be found here:
//http://iosfonts.com/

//please refer to README.txt for more info.
/******************************/

uint64_t getRealOffset(uint64_t);

void addHack(NSString *, NSString *, NSString *, std::initializer_list<uint64_t>, std::initializer_list<uint64_t>, std::initializer_list<uint64_t>);
void addHook(NSString *, NSString *, NSString *, uint64_t, void *, void *);
void addSliderHook(NSString *, NSString *, NSString *, float, float, uint64_t, void *, void *);
void addTextfieldHook(NSString *, NSString *, NSString *, uint64_t, void *, void *);

static ModMenu *menu;

bool buttonAdded;

%hook 

- (void)applicationDidBecomeActive:(id)arg0 {
UIWindow *main = [UIApplication sharedApplication].keyWindow.rootViewController.view;

UIButton *openButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
openButton.frame = CGRectMake((main.frame.size.width/2)-15, (main.frame.size.height/2)+75, 30, 30);
openButton.backgroundColor = [UIColor clearColor];
openButton.layer.cornerRadius = 16;
openButton.layer.borderWidth = 2;
openButton.layer.borderColor = themeColor.CGColor;
[openButton addTarget:self action:@selector(wasDragged:withEvent:) 
forControlEvents:UIControlEventTouchDragInside];
[openButton addTarget:self action:@selector(showMenu) 
forControlEvents:UIControlEventTouchDownRepeat];

if(!buttonAdded){
timer((int64_t)1){
UIWindow *main = [UIApplication sharedApplication].keyWindow.rootViewController.view;

menu = [[ModMenu alloc] initWithTitle:title credits:credits fontName:font theme:themeColor];

/***********************
add your features below this multi line comment. they show in the order you have added them.
for example:
addHack(@"God Mode", @"Description of the hack", font, {0x252e1a}, {0x7047}, {0xf0b5});
multi offset hacks can be added like this (there is no limit to the number of offsets you can have!):
addHack(@"No Recoil", @"No recoil prevents any recoil from being applied when you shoot.", font, {0x356a7c, 0x110f0a}, {0x7047, 0x7047}, {0xf0b5, 0xf0b5});
parameters: addHack(hack name, description, font, offset(s), hacked hex(es), original hex(es));

to add a slider hook:
for example:
addSliderHook(@"Field of View Slider", @"Adjust the game's field of view with this slider.", font, 40, 120, 0xc48ea6, (void *)_getFov, (void *)getFov);
parameters:
addSliderHook(hack name, description, font, minimum slider value, maximum slider value, function to hook, hooked function name, original function name);

to retrieve the value of the slider, use:
float val = [SliderHook getSliderValueForHook:@"hack name here"];

to add a textfield hook:
for example:
addTextfieldHook(@"Field of View Textfield", @"Adjust the game's field of view with this textfield.", font, 0xc48ea6, (void *)_getFov, (void *)getFov);
parameters:
addSliderHook(hack name, description, font, function to hook, hooked function name, original function name);

to retrieve the value of the textfield:
int val = [[TextfieldHook getTextfieldValueForHook:@"hack name here"] intValue];
float val = [[TextfieldHook getTextfieldValueForHook:@"hack name here"] floatValue];

to add a normal hook:
for example:
addHook(@"80 FOV", @"When on, your FOV will be changed to 80.", font, 0xc48ea6, (void *)_getFov, (void *)getFov);
parameters:
addHook(hack name, description, font, function to hook, hooked function name, original function name);
to see if the the user turned on the hook or not:
bool isOn = [Hook getHookOnForHook:@"hack name here"]
************************/
//add features here!

 

 

 

[main addSubview:openButton];
[main addSubview:menu];

buttonAdded = true;
});
}

%orig;
}

%new
- (void)showMenu {
[menu show];
}

%new
- (void)wasDragged:(UIButton *)button withEvent:(UIEvent *)event
{
    UITouch *touch = [[event touchesForView:button] anyObject];

    CGPoint previousLocation = [touch previousLocationInView:button];
    CGPoint location = [touch locationInView:button];
    CGFloat delta_x = location.x - previousLocation.x;
    CGFloat delta_y = location.y - previousLocation.y;

    button.center = CGPointMake(button.center.x + delta_x, button.center.y + delta_y);
}
%end

void addHack(@"Boost HP 1", @"Test 1", font, {0x129d9c}, {0x02d0241e}, {0x02102e1e});
addHack(@"Boost HP 2", @"Test 2", font, {0x129dd4}, {0x02d0241e}, {0x02102e1e});
addHack(@"Test 3", @"forgot what test", font, {0x14c558}, {0x01f0271e}, {0x01102c1e});
addHack(@"God Mode1", @"Test 4", font, {0x14f2fc}, {0xc0035fd6}, {0xe923bc6d});
addHack(@"God Mode2", @"Test 5", font, {0x1b1b354}, {0xc0035fd6}, {0xf44fbea9});

    
    offsetVector.insert(offsetVector.begin(), offsets.begin(), offsets.end());
    hackedHexVector.insert(hackedHexVector.begin(), hackedHexes.begin(), hackedHexes.end());
    originalHexVector.insert(originalHexVector.begin(), originalHexes.begin(), originalHexes.end());
    
    Hack *h = [[Hack alloc] initWithHackName:name info:description fontName:fontName theme:themeColor offset:offsetVector hackedHex:hackedHexVector originalHex:originalHexVector];
    [menu addHack:h];
}

void addHook(NSString *name, NSString *description, NSString *fontName, uint64_t offset, void *hooked, void *orig){
    MSHookFunction(((void*)getRealOffset(offset + 1)), hooked, &orig);

    Hook *h = [[Hook alloc] initWithHookName:name info:description fontName:fontName theme:themeColor offset:0x251832];
    [menu addHook:h];
}

void addSliderHook(NSString *name, NSString *description, NSString *fontName, float minValue, float maxValue, uint64_t offset, void *hooked, void *orig){
    MSHookFunction(((void*)getRealOffset(offset + 1)), hooked, &orig);

    SliderHook *sh = [[SliderHook alloc] initWithSliderHookName:name info:description fontName:fontName theme:themeColor offset:offset minValue:minValue maxValue:maxValue];
    [menu addHook:sh];
}

void addTextfieldHook(NSString *name, NSString *description, NSString *fontName, uint64_t offset, void *hooked, void *orig){
    MSHookFunction(((void*)getRealOffset(offset + 1)), hooked, &orig);

    TextfieldHook *th = [[TextfieldHook alloc] initWithTextfieldHookName:name info:description fontName:fontName theme:themeColor offset:offset];
    [menu addHook:th];
}

uint64_t getRealOffset(uint64_t offset){
    return _dyld_get_image_vmaddr_slide(0)+offset;
}

you didn't provide an AppDelegate? it just says %hook

Posted
1 hour ago, shmoo said:

you didn't provide an AppDelegate? it just says %hook

Could you tell me where to add it? And what is AppDelegate? Where to get it from?

Posted (edited)

great job,thank you sir

edit:

<warning>Asked to link theos,but template lacks an optional theos link.Creating one! Contact the author of this template about this issue.

@shmoo

Updated by Curtain
Guest
This topic is now closed to further replies.
  • Our picks

    • Samkok Heroes TD Dynasty Tower Defense v2.27.265 [ +8 Cheats ] ViP Active
      Modded/Hacked App: Samkok Heroes TD By Suga Pte. Ltd.
      Bundle ID: co.imba.threekingdoms.towerdefense
      App Store Link: https://apps.apple.com/us/app/samkok-heroes-td/id6758647943?uo=4
      🤩 Hack Features

      - HP MAX
      - ATK MAX
      - iGG Speed X6 / Wave Skiper
      ::::: VIP :::::
      - ViP Active
      - ADS No
      - Special Pack Daily / Rewards Claim Unlimited
      - Special Pack Weekly / Rewards Claim Unlimited
      - Special Pack Monthly / Rewards Claim Unlimited
      - Hero Unlocked
        • Thanks
        • Winner
        • Like
      • 23 replies
    • Mob Era: Age Evolution v0.3.4 [ +9 Cheats ] Currency Max
      Modded/Hacked App: Mob Era: Age Evolution By HORUS ENTERTAINMENT PTE. LTD.
      Bundle ID: com.horusent.mob.era
      App Store Link: https://apps.apple.com/us/app/mob-era-age-evolution/id6758683774?uo=4

      🤩 Hack Features

      - Unlimited Gems
      - Unlimited Cash
      - Unlimited Stars
      - Unlimited Energy
      - Unlimited Skip AD Ticket
      - Unlimited Trophy
      - Unlimited Buff Card Pack
      - Premium Energy & Gem Active
      - ATK MAX
        • Like
      • 1 reply
    • Card Train v1.8.2 [ +7 Cheats ] Currency Max
      Modded/Hacked App: Card Train By Jinwoo Kim
      Bundle ID: com.kazrahann.cardtrain
      App Store Link: https://apps.apple.com/ph/app/card-train/id6773644764?uo=4

      🤩 Hack Features

      - Enough Cube
      - Enough Gems
      - Unlimited Coins
      - Mana Freeze
      - HP Max
      - HP Freeze
      - ATK Max
        • Like
      • 2 replies
    • Corner Cafe: Merge puzzle game v2.7 [ +3 Cheats ] Currency Max
      Modded/Hacked App: Corner Cafe : Merge & Cook By Alchemical Inc
      Bundle ID: com.grilltown.grill
      App Store Link: https://apps.apple.com/ph/app/corner-cafe-merge-cook/id6748403232?uo=4

      🤩 Hack Features

      - Unlimited Cash / Earn Then Get
      - Unlimited Coins / Sell Items Then Get
      - Unlimited Energy
        • Like
      • 13 replies
    • Warrior Master! v1.37 [ +7 APK MOD  ] Currency Max
      Mod APK Game Name: Warrior Master!
      Rooted Device: Not Required.
      Google Play Store Link: https://play.google.com/store/apps/details?id=com.CrazySeven.warriorMaster&hl=en

       

      🤩 Hack Features

      - Unlimited Gems / ViP
      - Freeze Gems
      - Freeze Coins
      - Faster Food ADD / ViP 
      - Food ADD
      - Base Upgrade Cost 0
      - Base HP Unlimited

      ADS Blocker Luna VPN

       

      ⬇️ Android Mod APK Download Link


      Hidden Content

      iOSGods App for Android







       

      📖 Android Installation Instructions

      STEP 1: Download the modded APK file from the link above using your preferred Android browser or download manager.
      STEP 2: Once the download is complete, open your file manager and locate the downloaded .apk file (usually in the Downloads folder).
      STEP 3: Tap the APK file, then select Install. If prompted, enable Install from Unknown Sources in your device settings.
      STEP 3A: If the mod includes an OBB file, extract it if it’s inside an archive. Then move the folder to: /Android/obb/
      STEP 3B: If the mod includes a DATA file, extract it if it’s archived. Then move the folder to: /Android/data/
      STEP 4: Once installed, open the game and toggle your desired cheats & features through the APK mod menu. Enjoy!

       

      NOTE: If you have any questions or issues, read our Frequently Asked Questions topic. If you still need help, post your issue below and we’ll assist you as soon as possible. If the mod works for you, please share your feedback to help other members!

       

      🙌 Credits

      - IK_IK

       

      📷 Cheat Video/Screenshots

      N/A

       

       iOS & iPadOS App Hacks
      If you’re looking for Non-Jailbroken & No Jailbreak required iOS IPA hacks, visit the iOS Game Cheats & Hacks or the iOSGods App for a variety of modded games and apps for non-jailbroken iOS devices.
        • Agree
      • 2 replies
    • Travel Merge Family Game v3.200 [ +1++ Cheats ] Currency Max
      Travel Merge Family

      🤩 Hack Features

      - Currency Max 
        • Informative
        • Like
      • 21 replies
    • Mystery Inn: Merge Adventure v2.27.2 [ +4 Cheats ] Currency Max
      Modded/Hacked App: Mystery Inn: Merge Adventure By Rhino Games LLC
      Bundle ID: com.rhinogames.hotel.project
      App Store Link: https://apps.apple.com/us/app/mystery-inn-merge-adventure/id1615061176?uo=4

      🤩 Hack Features

      - ADS NO
      - Unlimited Gems
      - Unlimited Coins
      - Unlimited Energy
      • 2 replies
    • Travel Decor V2.0.1 [ +5 Cheats ] Auto Win
      Modded/Hacked App: Travel Decor By SHEN ZHEN QIYOU ICT. CO.LTD
      Bundle ID: com.match.fun.free.traveldecor
      App Store Link: https://apps.apple.com/ca/app/travel-decor/id6480403680?uo=4

      🤩 Hack Features

      - Auto ADS OFF
      - Auto Win / Use 1 Move
      - Unlimited Coins / Use & Earn
      - Unlimited Potion / Use & Earn
      - Unlimited Lives / Use & Earn
        • Like
      • 2 replies
    • Last Legion: Tower Defense TD v1.8.3 [ +13 Cheats ] Currency Max
      Modded/Hacked App: Last Legion: Tower Defense TD By Antares Games s.r.o.
      Bundle ID: last.legion.tower.defense.survival.war.fortress.idle.td
      App Store Link: https://apps.apple.com/us/app/last-legion-tower-defense-td/id6753672104?uo=4

      🤩 Hack Features

      - Unlimited Gems
      - Unlimited Coins
      - Unlimited Energy
      - Unlimited Dice
      - Unlimited Blueprint
      - Unlimited Silver Core
      - Unlimited Gold Core
      - Unlimited Silver Module
      - Unlimited Card / For Weapon UP
      - Unlimited EXP / Battle Rewards
      - Unlimited Battle Rewards / Coins Blueprint EXP
      - Equip Status / ATK
      - Weapon Status / ATK / Area DMG Linked Weapon
        • Agree
        • Thanks
        • Winner
        • Like
      • 12 replies
    • Rumble Raiders v1.0.47 [ +11 Cheats ] Currency Max
      Modded/Hacked App: Rumble Raiders By MINIDRAGON LTD
      Bundle ID: com.minidragon.wow
      App Store Link: https://apps.apple.com/us/app/rumble-raiders/id6757749135?uo=4
      🤩 Hack Features

      - HP MAX / Check Talents Stats
      - ATK MAX / Check Talents Stats
      - DEF MAX / Check Talents Stats
      - CRITI MAX / Check Talents Stats
      - SPEED MAX / Check Talents Stats
      - HP Rec MAX  / Check Talents Stats
      - Gate Cost 0 / Easy To Unlock Next Stage
      :::::: ViP ::::::
      - Unlimited Gems
      - Unlimited Gold
      - Unlimited Scroll
      - Unlimited Materials
        • Thanks
        • Like
      • 12 replies
    • UnderGuild: Offense v1.6.9 [ +3 Cheats ] Currency Max
      Modded/Hacked App: UnderGuild: Offense By SeungHo Chung
      Bundle ID: com.FreeDust.UnderDarkOffense
      App Store Link: https://apps.apple.com/us/app/underguild-offense/id6752882356?uo=4

      🤩 Hack Features

      - Unlimited Diamond
      - Unlimited Gold
      - Max Trop
        • Agree
        • Haha
        • Thanks
        • Winner
        • Like
      • 51 replies
    • Elemental Adventurer v1.21.0 [+9 Cheats ] Currency Max
      Modded/Hacked App: Elemental Adventurer By SkyRise Digital PTE. LTD.
      Bundle ID: com.elementsadventurer.ios
      iTunes Store Link: https://apps.apple.com/us/app/elemental-adventurer/id1671509460?uo=4

      Hack Features:
      - Unlimited Diamonds 
      - Unlimited Coins 
      - Health MAX
      - Damage MAX
      - Skill CD
      - Attack Range
      - Pickup Range
      - Movement Speed
      - Skill Reroll
        • Informative
        • Agree
        • Thanks
        • Winner
        • Like
      • 31 replies
×
  • Create New...

Important Information

We would like to place cookies on your device to help make this website better. The website cannot give you the best user experience without cookies. You can accept or decline our cookies. You may also adjust your cookie settings. Privacy Policy - Guidelines