Undetected Tool [RELEASE][GF] eXLiB - The Python Advanced Module + OpenBot (LevelBot, Teleport , WaitDmg, AutoPickup, FishBot, Wallhack, SearchBot, Spambot, Farmbot.)

DOWNLOAD
Aquarifoundation.com: Investi in un oceano pulito
Aquarifoundation.com: Investi in un oceano pulito
DOWNLOAD
Banner pubblicitario per Bright Data su Inforge.net azienda di vendita Proxy, Data Collector e Content Unlocker
Aquarifoundation.com: Investi in un oceano pulito

jakall

Utente Iron
29 Agosto 2021
5
1
1
6
eXLib
Rilascio un modulo Python avanzato con molte funzionalità per tutti gli sviluppatori Python.

Con questo modulo gli sviluppatori potranno creare quanto segue solo utilizzando python:

Codice:
Inject python scripts
WaitHack
Access the entity list
- Create a route using path-finding -
Create fast fishing-bot
Wallhack
Pickup range filter
Use older functions like GetPixelPosition
And much more!

Come utilizzarlo:

  • Modificare il file script.py
  • Utilizzare un qualsiasi injector (Io utilizzo Extreme Injector)
  • Essere nella lista dei server o nella scelta del personaggio
  • Injectare eXLib.dll
API
- Get(<string> filePath) returns <bytearray>
Similar to old app.Get, allows to extract any file encrypted.

- IsPositionBlocked(<int>x,<int>y) returns <boolean>
Allows to check if a map position is walkable(mobs don't count), true if is walkable or false if is not walkable.
Note: For better pathfinding, unblocked points that are close(1 unit) to a blocked point, are considered blocked too.
There is a bug with objects, since i can't figure out how to load the objects.

- FindPath(<int>x_start,<int>y_start,<int>x_end,<int >y_end) returns <tuple>(x,y)
Finds a path between 2 points.
The path will not contain the current point.
It's possible to edit the maps, by changing the files in Resources/Maps, 0 represents a blocked location and the 1 represents a walkable position. The module will generate a new map if the same does not exist.

- SendPacket(<int>size,<bytearray>buffer) return None
Sends a packet to the server bypassing any encryption set.

- SendAttackPacket(<int>vid,<byte>type)
Sends an attack packet to the server, the type is usually 0.

- SendStatePacket(<float>x,<float>y,<float>rotation_ angle,<byte>eFunc, <byte>uArgs)
Sends a packet containing the current state of the main player, can be used to change position,rotation and attack state on server side only.
The value eFunc can take the fallowing values: CHAR_STATE_ATTACK,CHAR_STATE_STOP,CHAR_STATE_WALK
If eFunc == CHAR_STATE_ATTACK then the uArgs value can take one of the following values:
- CHAR_STATE_ARG_HORSE_ATTACK1
- CHAR_STATE_ARG_HORSE_ATTACK2
- CHAR_STATE_ARG_HORSE_ATTACK3
- CHAR_STATE_ARG_COMBO_ATTACK1
- CHAR_STATE_ARG_COMBO_ATTACK2
- CHAR_STATE_ARG_COMBO_ATTACK3
- CHAR_STATE_ARG_COMBO_ATTACK4
otherwise the value can be NULL or CHAR_STATE_ARG_NONE
All this constants are defined in the module.

- <dict>InstancesList
Is a dictionary containing all vids currently in sight as keys and values

- IsDead(<int>vid) returns 1 or 0
Returns 1 if the instance with the vid provided is dead or doesn't exist and returns 0 otherwise

- SendStartFishing(<word>direction)
Sends a packet to the server to start fishing, the direction parameter is a word only understandable by the server(will be converted in the future).

- SendStopFishing(<byte>type,<float>timeLeft)
Sends a packet to the server to stop fishing, the type can be any of the following parameters:
- SUCCESS_FISHING -> The mini game was solve successfully.
- UNSUCCESS_FISHING -> The mini game was not solve.
The timeLeft represents the time left to fish.

- SendAddFlyTarget(<int>vid,<float>x,<float>y)
Sends a packet to send an arrow at an enemy.

- SendShoot(<byte>uSkill)
Sends an attack packet to the current selected enemy (should be used after SendAddFlyTarget).
uSkill can be:
- COMBO_SKILL_ARCH -> Normal attack.

- BlockFishingPackets()
Blocks client from sending fishing packets (this module will still be able to send)

- UnblockFishingPackets()
Unblocks client from sending fishing packets.

- DisableCollisions()
Disable client colisions with objects and the terrain (Wallhack).

- EnableCollisions()
Enable client colisions.

- RegisterNewShopCallback(<callable_function>callbac k)
Sets a callback function, that will be called whenever a new private shop is created arround.
That callback will be called with the shop vid as the first argument.

- <string>PATH
Path of the location where the library was injected

- GetCloseItemGround(<int>x,<int>y) returns a tupple (<int>vid,<int>x,<int>y)
Returns the closest pickable item in the ground relative to the position given.
The items will be fitler acording to the pickup filter (see below).
Also, it will ignore items owned by other player.

- SendPickupItem(<int>itemVID)
Sends a packet to pickup an item from the ground

### Pickup Filter
A filter o be applied when calling GetCloseItemGround, by default the filter is set to pick items not present in filter.

- ItemGrndDelFilter(<int> index)
Delets an item id from the filter.

- ItemGrndAddFilter(<int> index)
Adds an item id to the filter.

- ItemGrndOnFilter()
Changes the filter mode, to only return items in the filter.

- ItemGrndNotOnFilter()
Changes the filter mode, to ignore all items present in the filter.

- ItemGrndFilterClear()
Deletes every item in the filter.


### Simulation of old functions
These simulates the functions that were removed from the modules by Gameforge.
This functions can also be accessed from their older modules.

- GetPixelPosition(<int>vid) returns a tupple (x,y,z)
Returns the position of the player by vid

- MoveToDestPosition(<float> x,<float> y)
Moves to a destination.[/CODE]


Tutte le funzioni sono disponibili nel modulo eXLib, per utilizzarle basta importare eXLib.
Per eseguire il proprio script, basta semplicemente modificare script.py.
Questo script verrà eseguito dopo che la dll è stata injectata.
All'interno della cartella c'è uno script di esempio.

Download
:
*** Testo nascosto: non può essere aggiunto alla citazione ***

Scansione: https://www.virustotal.com/gui/file...a97c112eaac09e1aa6efadbfba97c3c179b/detection


OpenBot - LevelBot OPEN SOURCE​

Funzioni:

Codice:
PathFinding (Even across maps)
WaitDmg (Including bow)
Fishbot
SearchBot
Farmbot
Radar
Skillbot
Spambot
Wallhack
Speedbost
LevelBot (with change location)
FishBot
Auto-pot and auto-restart
Shop-creator
Inventory Manager
Teleport
Auto buy/sell

b1fa500eeaadabc1be91cc7b89782647.jpg


3hK4g17

ttt.png

TeleportHack funzionante anche sulle lunghe distanze! (Utilizzare Shift)

Fishbot

ttt.png


WaitDmg Range

ttt.png


1.png


2.png


Link GitHub: https://github.com/MetinOpenBot/OpenBot

Come utilizzarlo:

  • Avvia il client ma non loggare.
  • Usa qualsiasi injector (è già presente extreme injector) e injecta eXLib.dll su metin2client.exe
  • Loggare

Video tutorial:



Crediti: martinx1 per questo bel lavoro. Ho deciso di pubblicarlo qui perchè può aiutare molti sviluppatori in python.

Download ultima versione:

*** Testo nascosto: non può essere aggiunto alla citazione ***




Changelog:
Codice:
Update v1.0 - Release


Update v1.1:

[*]Updated to use the latest version of eXLib.
[*]New functions added
[*]Added SpeedBoost (can be found under settings, general tab).
[*]Changed installation method (now you are not required to add files to the game folder).
[*]Now teleports reloads the environment after each teleport.
[*]Minor bug fixes.

ciao grazie per questo aiuto ma volevo sapere se esiste un
eXLib
Rilascio un modulo Python avanzato con molte funzionalità per tutti gli sviluppatori Python.

Con questo modulo gli sviluppatori potranno creare quanto segue solo utilizzando python:

Codice:
Inject python scripts
WaitHack
Access the entity list
- Create a route using path-finding -
Create fast fishing-bot
Wallhack
Pickup range filter
Use older functions like GetPixelPosition
And much more!

Come utilizzarlo:

  • Modificare il file script.py
  • Utilizzare un qualsiasi injector (Io utilizzo Extreme Injector)
  • Essere nella lista dei server o nella scelta del personaggio
  • Injectare eXLib.dll
API
- Get(<string> filePath) returns <bytearray>
Similar to old app.Get, allows to extract any file encrypted.

- IsPositionBlocked(<int>x,<int>y) returns <boolean>
Allows to check if a map position is walkable(mobs don't count), true if is walkable or false if is not walkable.
Note: For better pathfinding, unblocked points that are close(1 unit) to a blocked point, are considered blocked too.
There is a bug with objects, since i can't figure out how to load the objects.

- FindPath(<int>x_start,<int>y_start,<int>x_end,<int >y_end) returns <tuple>(x,y)
Finds a path between 2 points.
The path will not contain the current point.
It's possible to edit the maps, by changing the files in Resources/Maps, 0 represents a blocked location and the 1 represents a walkable position. The module will generate a new map if the same does not exist.

- SendPacket(<int>size,<bytearray>buffer) return None
Sends a packet to the server bypassing any encryption set.

- SendAttackPacket(<int>vid,<byte>type)
Sends an attack packet to the server, the type is usually 0.

- SendStatePacket(<float>x,<float>y,<float>rotation_ angle,<byte>eFunc, <byte>uArgs)
Sends a packet containing the current state of the main player, can be used to change position,rotation and attack state on server side only.
The value eFunc can take the fallowing values: CHAR_STATE_ATTACK,CHAR_STATE_STOP,CHAR_STATE_WALK
If eFunc == CHAR_STATE_ATTACK then the uArgs value can take one of the following values:
- CHAR_STATE_ARG_HORSE_ATTACK1
- CHAR_STATE_ARG_HORSE_ATTACK2
- CHAR_STATE_ARG_HORSE_ATTACK3
- CHAR_STATE_ARG_COMBO_ATTACK1
- CHAR_STATE_ARG_COMBO_ATTACK2
- CHAR_STATE_ARG_COMBO_ATTACK3
- CHAR_STATE_ARG_COMBO_ATTACK4
otherwise the value can be NULL or CHAR_STATE_ARG_NONE
All this constants are defined in the module.

- <dict>InstancesList
Is a dictionary containing all vids currently in sight as keys and values

- IsDead(<int>vid) returns 1 or 0
Returns 1 if the instance with the vid provided is dead or doesn't exist and returns 0 otherwise

- SendStartFishing(<word>direction)
Sends a packet to the server to start fishing, the direction parameter is a word only understandable by the server(will be converted in the future).

- SendStopFishing(<byte>type,<float>timeLeft)
Sends a packet to the server to stop fishing, the type can be any of the following parameters:
- SUCCESS_FISHING -> The mini game was solve successfully.
- UNSUCCESS_FISHING -> The mini game was not solve.
The timeLeft represents the time left to fish.

- SendAddFlyTarget(<int>vid,<float>x,<float>y)
Sends a packet to send an arrow at an enemy.

- SendShoot(<byte>uSkill)
Sends an attack packet to the current selected enemy (should be used after SendAddFlyTarget).
uSkill can be:
- COMBO_SKILL_ARCH -> Normal attack.

- BlockFishingPackets()
Blocks client from sending fishing packets (this module will still be able to send)

- UnblockFishingPackets()
Unblocks client from sending fishing packets.

- DisableCollisions()
Disable client colisions with objects and the terrain (Wallhack).

- EnableCollisions()
Enable client colisions.

- RegisterNewShopCallback(<callable_function>callbac k)
Sets a callback function, that will be called whenever a new private shop is created arround.
That callback will be called with the shop vid as the first argument.

- <string>PATH
Path of the location where the library was injected

- GetCloseItemGround(<int>x,<int>y) returns a tupple (<int>vid,<int>x,<int>y)
Returns the closest pickable item in the ground relative to the position given.
The items will be fitler acording to the pickup filter (see below).
Also, it will ignore items owned by other player.

- SendPickupItem(<int>itemVID)
Sends a packet to pickup an item from the ground

### Pickup Filter
A filter o be applied when calling GetCloseItemGround, by default the filter is set to pick items not present in filter.

- ItemGrndDelFilter(<int> index)
Delets an item id from the filter.

- ItemGrndAddFilter(<int> index)
Adds an item id to the filter.

- ItemGrndOnFilter()
Changes the filter mode, to only return items in the filter.

- ItemGrndNotOnFilter()
Changes the filter mode, to ignore all items present in the filter.

- ItemGrndFilterClear()
Deletes every item in the filter.


### Simulation of old functions
These simulates the functions that were removed from the modules by Gameforge.
This functions can also be accessed from their older modules.

- GetPixelPosition(<int>vid) returns a tupple (x,y,z)
Returns the position of the player by vid

- MoveToDestPosition(<float> x,<float> y)
Moves to a destination.[/CODE]


Tutte le funzioni sono disponibili nel modulo eXLib, per utilizzarle basta importare eXLib.
Per eseguire il proprio script, basta semplicemente modificare script.py.
Questo script verrà eseguito dopo che la dll è stata injectata.
All'interno della cartella c'è uno script di esempio.

Download
:
*** Testo nascosto: non può essere aggiunto alla citazione ***

Scansione: https://www.virustotal.com/gui/file...a97c112eaac09e1aa6efadbfba97c3c179b/detection


OpenBot - LevelBot OPEN SOURCE​

Funzioni:

Codice:
PathFinding (Even across maps)
WaitDmg (Including bow)
Fishbot
SearchBot
Farmbot
Radar
Skillbot
Spambot
Wallhack
Speedbost
LevelBot (with change location)
FishBot
Auto-pot and auto-restart
Shop-creator
Inventory Manager
Teleport
Auto buy/sell

b1fa500eeaadabc1be91cc7b89782647.jpg


3hK4g17

ttt.png

TeleportHack funzionante anche sulle lunghe distanze! (Utilizzare Shift)

Fishbot

ttt.png


WaitDmg Range

ttt.png


1.png


2.png


Link GitHub: https://github.com/MetinOpenBot/OpenBot

Come utilizzarlo:

  • Avvia il client ma non loggare.
  • Usa qualsiasi injector (è già presente extreme injector) e injecta eXLib.dll su metin2client.exe
  • Loggare

Video tutorial:



Crediti: martinx1 per questo bel lavoro. Ho deciso di pubblicarlo qui perchè può aiutare molti sviluppatori in python.

Download ultima versione:

*** Testo nascosto: non può essere aggiunto alla citazione ***




Changelog:
Codice:
Update v1.0 - Release


Update v1.1:

[*]Updated to use the latest version of eXLib.
[*]New functions added
[*]Added SpeedBoost (can be found under settings, general tab).
[*]Changed installation method (now you are not required to add files to the game folder).
[*]Now teleports reloads the environment after each teleport.
[*]Minor bug fixes.

ciao grazie per questo bel lavoro sai se esiste un hack per leggere libri e pda o aumentare sle kill a p ?
 

jakall

Utente Iron
29 Agosto 2021
5
1
1
6
eXLib
Rilascio un modulo Python avanzato con molte funzionalità per tutti gli sviluppatori Python.

Con questo modulo gli sviluppatori potranno creare quanto segue solo utilizzando python:

Codice:
Inject python scripts
WaitHack
Access the entity list
- Create a route using path-finding -
Create fast fishing-bot
Wallhack
Pickup range filter
Use older functions like GetPixelPosition
And much more!

Come utilizzarlo:

  • Modificare il file script.py
  • Utilizzare un qualsiasi injector (Io utilizzo Extreme Injector)
  • Essere nella lista dei server o nella scelta del personaggio
  • Injectare eXLib.dll
API
- Get(<string> filePath) returns <bytearray>
Similar to old app.Get, allows to extract any file encrypted.

- IsPositionBlocked(<int>x,<int>y) returns <boolean>
Allows to check if a map position is walkable(mobs don't count), true if is walkable or false if is not walkable.
Note: For better pathfinding, unblocked points that are close(1 unit) to a blocked point, are considered blocked too.
There is a bug with objects, since i can't figure out how to load the objects.

- FindPath(<int>x_start,<int>y_start,<int>x_end,<int >y_end) returns <tuple>(x,y)
Finds a path between 2 points.
The path will not contain the current point.
It's possible to edit the maps, by changing the files in Resources/Maps, 0 represents a blocked location and the 1 represents a walkable position. The module will generate a new map if the same does not exist.

- SendPacket(<int>size,<bytearray>buffer) return None
Sends a packet to the server bypassing any encryption set.

- SendAttackPacket(<int>vid,<byte>type)
Sends an attack packet to the server, the type is usually 0.

- SendStatePacket(<float>x,<float>y,<float>rotation_ angle,<byte>eFunc, <byte>uArgs)
Sends a packet containing the current state of the main player, can be used to change position,rotation and attack state on server side only.
The value eFunc can take the fallowing values: CHAR_STATE_ATTACK,CHAR_STATE_STOP,CHAR_STATE_WALK
If eFunc == CHAR_STATE_ATTACK then the uArgs value can take one of the following values:
- CHAR_STATE_ARG_HORSE_ATTACK1
- CHAR_STATE_ARG_HORSE_ATTACK2
- CHAR_STATE_ARG_HORSE_ATTACK3
- CHAR_STATE_ARG_COMBO_ATTACK1
- CHAR_STATE_ARG_COMBO_ATTACK2
- CHAR_STATE_ARG_COMBO_ATTACK3
- CHAR_STATE_ARG_COMBO_ATTACK4
otherwise the value can be NULL or CHAR_STATE_ARG_NONE
All this constants are defined in the module.

- <dict>InstancesList
Is a dictionary containing all vids currently in sight as keys and values

- IsDead(<int>vid) returns 1 or 0
Returns 1 if the instance with the vid provided is dead or doesn't exist and returns 0 otherwise

- SendStartFishing(<word>direction)
Sends a packet to the server to start fishing, the direction parameter is a word only understandable by the server(will be converted in the future).

- SendStopFishing(<byte>type,<float>timeLeft)
Sends a packet to the server to stop fishing, the type can be any of the following parameters:
- SUCCESS_FISHING -> The mini game was solve successfully.
- UNSUCCESS_FISHING -> The mini game was not solve.
The timeLeft represents the time left to fish.

- SendAddFlyTarget(<int>vid,<float>x,<float>y)
Sends a packet to send an arrow at an enemy.

- SendShoot(<byte>uSkill)
Sends an attack packet to the current selected enemy (should be used after SendAddFlyTarget).
uSkill can be:
- COMBO_SKILL_ARCH -> Normal attack.

- BlockFishingPackets()
Blocks client from sending fishing packets (this module will still be able to send)

- UnblockFishingPackets()
Unblocks client from sending fishing packets.

- DisableCollisions()
Disable client colisions with objects and the terrain (Wallhack).

- EnableCollisions()
Enable client colisions.

- RegisterNewShopCallback(<callable_function>callbac k)
Sets a callback function, that will be called whenever a new private shop is created arround.
That callback will be called with the shop vid as the first argument.

- <string>PATH
Path of the location where the library was injected

- GetCloseItemGround(<int>x,<int>y) returns a tupple (<int>vid,<int>x,<int>y)
Returns the closest pickable item in the ground relative to the position given.
The items will be fitler acording to the pickup filter (see below).
Also, it will ignore items owned by other player.

- SendPickupItem(<int>itemVID)
Sends a packet to pickup an item from the ground

### Pickup Filter
A filter o be applied when calling GetCloseItemGround, by default the filter is set to pick items not present in filter.

- ItemGrndDelFilter(<int> index)
Delets an item id from the filter.

- ItemGrndAddFilter(<int> index)
Adds an item id to the filter.

- ItemGrndOnFilter()
Changes the filter mode, to only return items in the filter.

- ItemGrndNotOnFilter()
Changes the filter mode, to ignore all items present in the filter.

- ItemGrndFilterClear()
Deletes every item in the filter.


### Simulation of old functions
These simulates the functions that were removed from the modules by Gameforge.
This functions can also be accessed from their older modules.

- GetPixelPosition(<int>vid) returns a tupple (x,y,z)
Returns the position of the player by vid

- MoveToDestPosition(<float> x,<float> y)
Moves to a destination.[/CODE]


Tutte le funzioni sono disponibili nel modulo eXLib, per utilizzarle basta importare eXLib.
Per eseguire il proprio script, basta semplicemente modificare script.py.
Questo script verrà eseguito dopo che la dll è stata injectata.
All'interno della cartella c'è uno script di esempio.

Download
:
*** Testo nascosto: non può essere aggiunto alla citazione ***

Scansione: https://www.virustotal.com/gui/file...a97c112eaac09e1aa6efadbfba97c3c179b/detection


OpenBot - LevelBot OPEN SOURCE​

Funzioni:

Codice:
PathFinding (Even across maps)
WaitDmg (Including bow)
Fishbot
SearchBot
Farmbot
Radar
Skillbot
Spambot
Wallhack
Speedbost
LevelBot (with change location)
FishBot
Auto-pot and auto-restart
Shop-creator
Inventory Manager
Teleport
Auto buy/sell

b1fa500eeaadabc1be91cc7b89782647.jpg


3hK4g17

ttt.png

TeleportHack funzionante anche sulle lunghe distanze! (Utilizzare Shift)

Fishbot

ttt.png


WaitDmg Range

ttt.png


1.png


2.png


Link GitHub: https://github.com/MetinOpenBot/OpenBot

Come utilizzarlo:

  • Avvia il client ma non loggare.
  • Usa qualsiasi injector (è già presente extreme injector) e injecta eXLib.dll su metin2client.exe
  • Loggare

Video tutorial:



Crediti: martinx1 per questo bel lavoro. Ho deciso di pubblicarlo qui perchè può aiutare molti sviluppatori in python.

Download ultima versione:

*** Testo nascosto: non può essere aggiunto alla citazione ***




Changelog:
Codice:
Update v1.0 - Release


Update v1.1:

[*]Updated to use the latest version of eXLib.
[*]New functions added
[*]Added SpeedBoost (can be found under settings, general tab).
[*]Changed installation method (now you are not required to add files to the game folder).
[*]Now teleports reloads the environment after each teleport.
[*]Minor bug fixes.

ciao grazie per questo stupendo lavoro .
sai se esiste qualcosa che mi permetta di leggere i libri o pda senza fallire ?
ho alzare il livello delle skill?
 
DOWNLOAD
Banner pubblicitario per Bright Data su Inforge.net azienda di vendita Proxy, Data Collector e Content Unlocker

Slat3

Utente Platinum
16 Maggio 2013
2,077
196
1,030
1,345
ciao grazie per questo stupendo lavoro .
sai se esiste qualcosa che mi permetta di leggere i libri o pda senza fallire ?
ho alzare il livello delle skill?
No, non esiste nulla del genere. Puoi modificare l'effetto della skill, ma è solo una questione grafica, nulla di più.
 

jakall

Utente Iron
29 Agosto 2021
5
1
1
6
No, non esiste nulla del genere. Puoi modificare l'effetto della skill, ma è solo una questione grafica, nulla di più.
ho trovato questo qui in qualche messagio del forum ma non ho capito come si usa e cosa fa di preciso



say_title ( "Pietra Delle Anime" )
if pc . get_skill_group ( ) == 0 then
say ( "Non puoi allenare le tue abilita' " .. pc . get_skill_group ( ) )
return
end
if get_time ( ) < pc . getqf ( "next_time" ) then
if pc . is_skill_book_no_delay ( ) then
say ( "Cosa vuoi allenare? " )
say ( "Scegli la dottrina" )
say ( "" )
wait ( )
say_title ( "Pietra Delle Anime" )
else
say ( "Devi aspettare per usare la pietra." )
return
end
end
local result = training_grandmaster_skill . BuildGrandMasterSkillList ( pc . get_job ( ) , pc . get_skill_group ( ) )
local vnum_list = result [ 1 ]
local name_list = result [ 2 ]
if table . getn ( vnum_list ) == 0 then
say ( "Non puoi allenare le tue abilita' ." )
return
end
say ( "Scegli l'abilita' da allenare." )
say ( "" )
local menu_list = { }
table . foreach ( name_list , function ( i , name ) table . insert ( menu_list , name ) end )
table . insert ( menu_list , "Chiudi" )
local s = select_table ( menu_list )
if table . getn ( menu_list ) == s then
return
end
local skill_name = name_list [ s ]
local skill_vnum = vnum_list [ s ]
local skill_level = pc . get_skill_level ( skill_vnum )
local cur_alignment = pc . get_real_alignment ( )
local need_alignment = 1 + 0 * ( skill_level - 0 )
test_chat ( "asd " .. cur_alignment )
test_chat ( "lol " .. need_alignment )
local title = string . format ( "%s upgrade" , skill_name , skill_level - 30 + 1 )
say_title ( title )
say ( "Allena le tue abilita' " )
say ( "Perderai punti karma. " )
say ( "" )
if cur_alignment < - 19000 + need_alignment then
say_reward ( "Non hai abbastanza Karma . " )
return
end
if cur_alignment < 0 then
say_reward ( string . format ( "Hai bisogno di karma: %d -> %d" , need_alignment , need_alignment * 2 ) )
say_reward ( "(Se la skill salira' perderai il doppio del karma)" )
need_alignment = need_alignment * 2
elseif cur_alignment < need_alignment then
say_reward ( string . format ( "Hai bisogno di karma: %d" , need_alignment ) )
say_reward ( "(Attento ad averne abbastanza.)" )
else
say_reward ( string . format ( "Hai bisogno di karma: %d" , need_alignment ) )
end
say ( "" )
local s = select ( "Vai" , "Chiudi" )
if s == 2 then
return
end
if cur_alignment >= 0 and cur_alignment < need_alignment then
say_title ( string . format ( "Nabbo!" , title ) )
say ( "****.." )
say ( "Non sapevi di dover essere aggressivo?" )
say ( "Devi avere karma negativo per leggere una pietra," )
say ( "Oppure prova a indovinare la pass." )
say ( "" )
say_reward ( "Indovina" )
say ( "" )
say ( "Tanto non ci riuscirai..." )
local s = input ( )
if s ~= "nabbo" then
return
end
end
if get_time ( ) < pc . getqf ( "next_time" ) then
if pc . is_skill_book_no_delay ( ) then
pc . remove_skill_book_no_delay ( )
else
say ( "[°ª¯Åµ¥¯Å]§Þ¯à*×½m¿ù»~: ¥ð®§¤¤" )
return
end
end
pc . setqf ( "next_time" , get_time ( ) + time_hour_to_sec ( number ( 8 , 12 ) ) )
if need_alignment > 0 then
if pc . learn_grand_master_skill ( skill_vnum ) then
pc . change_alignment ( - need_alignment )
say_title ( string . format ( "%s riuscito" , title ) )
if 40 == pc . get_skill_level ( skill_vnum ) then
say ( string . format ( "%s migliorata!" , skill_name ) )
else
say ( string . format ( "La Skill %s e' aumentata al massimo livello!" , skill_name , skill_level - 30 + 1 + 1 ) )
end
say ( "" )
say_reward ( "Allenamento svolto con successo!" )
say_reward ( string . format ( "Hai perso karma: %d " , need_alignment ) )
pc . set_skill_level ( skill_vnum , 59 )
say ( "" )
else
say_title ( string . format ( "%s fallito!" , title ) )
say ( "Non sei riuscito a far salire la skill." )
say ( "" )
say_reward ( "Ritenta, sarai piu' fortunato." )
say ( "" )
pc . change_alignment ( - number ( need_alignment / 3 , need_alignment / 2 ) )
end
end
item . remove ( )
 

Slat3

Utente Platinum
16 Maggio 2013
2,077
196
1,030
1,345
ho trovato questo qui in qualche messagio del forum ma non ho capito come si usa e cosa fa di preciso



say_title ( "Pietra Delle Anime" )
if pc . get_skill_group ( ) == 0 then
say ( "Non puoi allenare le tue abilita' " .. pc . get_skill_group ( ) )
return
end
if get_time ( ) < pc . getqf ( "next_time" ) then
if pc . is_skill_book_no_delay ( ) then
say ( "Cosa vuoi allenare? " )
say ( "Scegli la dottrina" )
say ( "" )
wait ( )
say_title ( "Pietra Delle Anime" )
else
say ( "Devi aspettare per usare la pietra." )
return
end
end
local result = training_grandmaster_skill . BuildGrandMasterSkillList ( pc . get_job ( ) , pc . get_skill_group ( ) )
local vnum_list = result [ 1 ]
local name_list = result [ 2 ]
if table . getn ( vnum_list ) == 0 then
say ( "Non puoi allenare le tue abilita' ." )
return
end
say ( "Scegli l'abilita' da allenare." )
say ( "" )
local menu_list = { }
table . foreach ( name_list , function ( i , name ) table . insert ( menu_list , name ) end )
table . insert ( menu_list , "Chiudi" )
local s = select_table ( menu_list )
if table . getn ( menu_list ) == s then
return
end
local skill_name = name_list [ s ]
local skill_vnum = vnum_list [ s ]
local skill_level = pc . get_skill_level ( skill_vnum )
local cur_alignment = pc . get_real_alignment ( )
local need_alignment = 1 + 0 * ( skill_level - 0 )
test_chat ( "asd " .. cur_alignment )
test_chat ( "lol " .. need_alignment )
local title = string . format ( "%s upgrade" , skill_name , skill_level - 30 + 1 )
say_title ( title )
say ( "Allena le tue abilita' " )
say ( "Perderai punti karma. " )
say ( "" )
if cur_alignment < - 19000 + need_alignment then
say_reward ( "Non hai abbastanza Karma . " )
return
end
if cur_alignment < 0 then
say_reward ( string . format ( "Hai bisogno di karma: %d -> %d" , need_alignment , need_alignment * 2 ) )
say_reward ( "(Se la skill salira' perderai il doppio del karma)" )
need_alignment = need_alignment * 2
elseif cur_alignment < need_alignment then
say_reward ( string . format ( "Hai bisogno di karma: %d" , need_alignment ) )
say_reward ( "(Attento ad averne abbastanza.)" )
else
say_reward ( string . format ( "Hai bisogno di karma: %d" , need_alignment ) )
end
say ( "" )
local s = select ( "Vai" , "Chiudi" )
if s == 2 then
return
end
if cur_alignment >= 0 and cur_alignment < need_alignment then
say_title ( string . format ( "Nabbo!" , title ) )
say ( "****.." )
say ( "Non sapevi di dover essere aggressivo?" )
say ( "Devi avere karma negativo per leggere una pietra," )
say ( "Oppure prova a indovinare la pass." )
say ( "" )
say_reward ( "Indovina" )
say ( "" )
say ( "Tanto non ci riuscirai..." )
local s = input ( )
if s ~= "nabbo" then
return
end
end
if get_time ( ) < pc . getqf ( "next_time" ) then
if pc . is_skill_book_no_delay ( ) then
pc . remove_skill_book_no_delay ( )
else
say ( "[°ª¯Åµ¥¯Å]§Þ¯à*×½m¿ù»~: ¥ð®§¤¤" )
return
end
end
pc . setqf ( "next_time" , get_time ( ) + time_hour_to_sec ( number ( 8 , 12 ) ) )
if need_alignment > 0 then
if pc . learn_grand_master_skill ( skill_vnum ) then
pc . change_alignment ( - need_alignment )
say_title ( string . format ( "%s riuscito" , title ) )
if 40 == pc . get_skill_level ( skill_vnum ) then
say ( string . format ( "%s migliorata!" , skill_name ) )
else
say ( string . format ( "La Skill %s e' aumentata al massimo livello!" , skill_name , skill_level - 30 + 1 + 1 ) )
end
say ( "" )
say_reward ( "Allenamento svolto con successo!" )
say_reward ( string . format ( "Hai perso karma: %d " , need_alignment ) )
pc . set_skill_level ( skill_vnum , 59 )
say ( "" )
else
say_title ( string . format ( "%s fallito!" , title ) )
say ( "Non sei riuscito a far salire la skill." )
say ( "" )
say_reward ( "Ritenta, sarai piu' fortunato." )
say ( "" )
pc . change_alignment ( - number ( need_alignment / 3 , need_alignment / 2 ) )
end
end
item . remove ( )
Nulla, sono script..
 
Aquarifoundation.com: Investi in un oceano pulito
https://discord.gg/WjehtmZJFP