Jump to content

alin2894

Inactive Member
  • Posts

    192
  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by alin2894

  1. thx for the system i didnt test it or add it
    also iam not c++ progream but your code it seem to be ugly -_-

    good luck :)

    Really? I can't find anything ugly about this. Actually the c++ part is very nice. I didn't check on python.

    And why are you wishing him good luck at his own release? ._. Sometimes I don't understand people...^^

     

    Anyway, the idea behind that is great and I like the c++ part a lot. Oh, and a german sentence slipped through ;)

     

    I know that it isn't the best c++ Code, but I really.love using maps ^^

     

    Py part is 1:1 from wom:o

     

    And yeah the German sentence comes through :D

    sorry for that ^^

    Mobile phone and yeah :D

    i dont know how to tell u why he is ugly

    also iam arabic from libya not germany

    alina wasn't talking to  you when he/she wrote this ---> "and a german sentence slipped through ;)"

    he/she was talking to the topic maker

     

    and for the python part :

    go to uisystem.py in root and search for this tow times

    self.GetChild("help_button").SAFE_SetEvent(self.__ClickHelpButton)

    and under it write this

    self.GetChild("Change_Channel").SAFE_SetEvent(self.__ClickChangeChButton)

    and after this

    	def __ClickInGameShopButton(self):	   	
    	   	self.Close()
    		net.SendChatPacket("/in_game_mall")

    write this

     

    Hidden Content

    3: change systemdialog.py in uiscript with this

     

    Hidden Content

    and finally go to constnfo.py in root and write this

    channel = 0

    and the python part is over <3

    Forgot your post channel for uiscript :D. For press for change and not anything going on.

    • Metin2 Dev 1
  2. I not really understand phase ports, so I port 50000 two core, why should I change?

     

    		    for(int i = 0; i < 4; i++){ //replace with maximum channels -1   actual 1300x - 1330x
    		        for(int i2 = 2; i2 < 9; i2++){ //replace with your core values actual  13x02 - 13x08
    		            micha[13*1000 + i*100 + i2] = i+1;

    in

    		    for(int i = 0; i < 4; i++){ //replace with maximum channels -1   actual 1300x - 1330x
    		        for(int i2 = 2; i2 < 9; i2++){ //replace with your core values actual  13x02 - 13x08
    		            micha[50*1000 + i*100 + i2] = i+1;

    right?

  3. Hello m2dev,

    Does anyone know how to do to see how many players are online all channel?

    I understand that we must alter the function from cmd_gm.cpp, this exactly:

    ACMD(do_who)
    {
    	int iTotal;
    	int * paiEmpireUserCount;
    	int iLocal;
    
    	DESC_MANAGER::instance().GetUserCount(iTotal, &paiEmpireUserCount, iLocal);
    
    	ch->ChatPacket(CHAT_TYPE_INFO, "Total [%d] %d / %d / %d (this server %d)", 
    			iTotal, paiEmpireUserCount[1], paiEmpireUserCount[2], paiEmpireUserCount[3], iLocal);
    }
    
    class user_func
    {
    	public:
    		LPCHARACTER	m_ch;
    		static int count;
    		static char str[128];
    		static int str_len;
    
    		user_func()
    			: m_ch(NULL)
    		{}
    
    		void initialize(LPCHARACTER ch)
    		{
    			m_ch = ch;
    			str_len = 0;
    			count = 0;
    			str[0] = '\0';
    		}
    
    		void operator () (LPDESC d)
    		{
    			if (!d->GetCharacter())
    				return;
    
    			int len = snprintf(str + str_len, sizeof(str) - str_len, "%-16s ", d->GetCharacter()->GetName());
    
    			if (len < 0 || len >= (int) sizeof(str) - str_len)
    				len = (sizeof(str) - str_len) - 1;
    
    			str_len += len;
    			++count;
    
    			if (!(count % 4))
    			{
    				m_ch->ChatPacket(CHAT_TYPE_INFO, str);
    
    				str[0] = '\0';
    				str_len = 0;
    			}
    		}
    };
    
    int	user_func::count = 0;
    char user_func::str[128] = { 0, };
    int	user_func::str_len = 0;

    Would be amended to show how many players are online on all channels?

    Kind regards.

  4. yes using vanilla, but there is something:
    #define PERCENT_LVDELTA(me, victim) aiPercentByDeltaLev[MINMAX(0, (victim + 50) - me, MAX_EXP_DELTA_OF_LEV - 1)]
    #define PERCENT_LVDELTA_BOSS(me, victim) aiPercentByDeltaLevForBoss[MINMAX(0, (victim + 50) - me, MAX_EXP_DELTA_OF_LEV - 1)]

    there is not even #define

    what I have is:
     

    const int * aiPercentByDeltaLev = NULL;
    const int * aiPercentByDeltaLevForBoss = NULL;
    
    const int aiPercentByDeltaLevForBoss_euckr[MAX_EXP_DELTA_OF_LEV] =
    {
    	1,
    	3,
    	5,
    	7,
    	15,
    	30,
    	60,
    	90,
    	91,
    	92,
    	93,
    	94,
    	95,
    	97,
    	99,
    	100,
    	105,
    	110,
    	115,
    	120,
    	125,
    	130,
    	135,
    	140,
    	145,
    	150,
    	155,
    	160,
    	165,
    	170,
    	180
    };

     

  5. Hello everyone,

     

    I have a problem and also a question.

     

    I use this pet system:

     

    pet_system_lv.lua:

    QuestFolder = get_locale_base_path().."/quest/"
    
    -- Classe 
    PetSystem = {['Folder'] = QuestFolder.."io/pet/", ['ItemExp'] = 4000000, ['UpdateFrequency'] = 30, ['Flag'] = "active_pet", ['ExpFlag'] = "exp_blocked"}
    -- Pet 1
    PetSystem[1] = 
    			{['Name'] = "Ates Ankasi", ['Level'] = 22, ['Item'] = 53001, ['MaxLevel'] = 99, ['WindowSize'] = 395,
    			 ['Skill']= {
    						{['type']=apply.MAX_HP,['name']="Max HP",['max_points']=20,['min_level']=1,['desc']="+100HP",['mult']=100,['tag']=" HP"},
    						{['type']=apply.INT,['name']="Zeka",['max_points']=10,['min_level']=1,['desc']="+1 INT",['mult']=1,['tag']=" Zeka"},
    						{['type']=apply.STR,['name']="Guc",['max_points']=10,['min_level']=1,['desc']="+1 STR",['mult']=1,['tag']=" Guc"},
    						{['type']=apply.DEX,['name']="Ceviklik",['max_points']=10,['min_level']=1,['desc']="+1 DEX",['mult']=1,['tag']=" Ceviklik"},						
    						{['type']=apply.PENETRATE_PCT,['name']="Delici vurus",['max_points']=15,['min_level']=60,['desc']="+1% Delici vurus",['mult']=1,['tag']="% Delici"},
    						{['type']=apply.CRITICAL_PCT,['name']="Kritik vurus",['max_points']=15,['min_level']=80,['desc']="+1% Kritik vurus",['mult']=1,['tag']="% Kritik"},
    						{['type']=apply.ATTBONUS_MONSTER,['name']="Canavarlara karsi guc",['max_points']=10,['min_level']=90,['desc']="+1% Canavara karsi guc",['mult']=1,['tag']="% Canavarlara karsi guc"},
    						{['type']=apply.MOV_SPEED,['name']="Hareket hizi'",['max_points']=10,['min_level']=90,['desc']="+1% Buyu hizi",['mult']=1,['tag']="% Hareket hizi"}
    						},
    			 ['ExpTable'] = {300,600,900,1200,1500,1800,2100,2400,2700,3000,		-- Liv 1-10 
    							 3300,3600,3900,4200,4500,4800,5100,5400,5700,6000,		-- Liv 11-20 
    							 6300,6600,6900,7200,7500,7800,8100,8400,8700,9000,		-- Liv 21-30
    							 9300,9600,9900,10200,10500,10800,11100,11400,11700,12000,		-- Liv 31-40
    							 12300,12600,12900,13200,13500,13800,14100,14400,14700,15000,		-- Liv 41-50
    							 15300,15600,15900,16200,16500,16800,17100,17400,17700,18000,		-- Liv 51-60
    							 18300,18600,18900,19200,19500,19800,20100,20400,20700,21000,		-- Liv 61-70
    							 21300,21600,21900,22200,22500,22800,23100,23400,23700,24000,		-- Liv 71-80
    							 24300,24600,24900,25200,25500,25800,26100,26400,26700,27000,		-- Liv 81-90
    							 27300,27600,27900,28200,28500,28800,29100,29400,29700,30000,		-- Liv 91-100
    							 30300,30600,30900,31200,31500,31800,32100,32400,32700,0			-- Liv 101-110
    							}
    			}
    -- Pet 2
    PetSystem[2] = 
    			{['Name'] = "Buz Ankasi", ['Level'] = 23, ['Item'] = 53002, ['MaxLevel'] = 99, ['WindowSize'] = 395,
    			 ['Skill']= {
    						{['type']=apply.MAX_HP,['name']="Max HP",['max_points']=30,['min_level']=1,['desc']="+100HP",['mult']=100,['tag']=" HP"},
    						{['type']=apply.INT,['name']="Zeka",['max_points']=15,['min_level']=1,['desc']="+1 INT",['mult']=1,['tag']=" Zeka"},
    						{['type']=apply.STR,['name']="Guc",['max_points']=15,['min_level']=1,['desc']="+1 STR",['mult']=1,['tag']=" Guc"},
    						{['type']=apply.DEX,['name']="Ceviklik",['max_points']=15,['min_level']=1,['desc']="+1 DEX",['mult']=1,['tag']=" Ceviklik"},
    						{['type']=apply.PENETRATE_PCT,['name']="Delici vurus",['max_points']=15,['min_level']=30,['desc']="+1% Delici vurus",['mult']=1,['tag']="% Delici"},
    						{['type']=apply.CRITICAL_PCT,['name']="Kritik vurus",['max_points']=15,['min_level']=60,['desc']="+1% Kritik vurus",['mult']=1,['tag']="% Kritik"},
    						{['type']=apply.ATTBONUS_MONSTER,['name']="Canavarlara karsi guc",['max_points']=10,['min_level']=90,['desc']="+1% Canavara karsi guc",['mult']=1,['tag']="% Canavarlara karsi guc"}
    						},
    			 ['ExpTable'] = {300,600,900,1200,1500,1800,2100,2400,2700,3000,		-- Liv 1-10
    							 3300,3600,3900,4200,4500,4800,5100,5400,5700,6000,		-- Liv 11-20
    							 6300,6600,6900,7200,7500,7800,8100,8400,8700,9000,		-- Liv 21-30
    							 9300,9600,9900,10200,10500,10800,11100,11400,11700,12000,		-- Liv 31-40
    							 12300,12600,12900,13200,13500,13800,14100,14400,14700,15000,		-- Liv 41-50
    							 15300,15600,15900,16200,16500,16800,17100,17400,17700,18000,		-- Liv 51-60
    							 18300,18600,18900,19200,19500,19800,20100,20400,20700,21000,		-- Liv 61-70
    							 21300,21600,21900,22200,22500,22800,23100,23400,23700,24000,		-- Liv 71-80
    							 24300,24600,24900,25200,25500,25800,26100,26400,26700,27000,		-- Liv 81-90
    							 27300,27600,27900,28200,28500,28800,29100,29400,29700,30000,		-- Liv 91-100
    							 30300,30600,30900,31200,31500,31800,32100,32400,32700,0			-- Liv 101-110
    							}
    			}	
    -- Pet 3
    PetSystem[3] = 
    			{['Name'] = "Bambi", ['Level'] = 24, ['Item'] = 53003, ['MaxLevel'] = 99, ['WindowSize'] = 395,
    			 ['Skill']= {
    						{['type']=apply.MAX_HP,['name']="Max HP",['max_points']=20,['min_level']=1,['desc']="+100HP",['mult']=100,['tag']=" HP"},
    						{['type']=apply.INT,['name']="Zeka",['max_points']=10,['min_level']=1,['desc']="+1 INT",['mult']=1,['tag']=" Zeka"},
    						{['type']=apply.STR,['name']="Guc",['max_points']=10,['min_level']=1,['desc']="+1 STR",['mult']=1,['tag']=" Guc"},
    						{['type']=apply.DEX,['name']="Ceviklik",['max_points']=10,['min_level']=1,['desc']="+1 DEX",['mult']=1,['tag']=" Ceviklik"},
    						{['type']=apply.STEAL_HP,['name']="HP emilimi",['max_points']=10,['min_level']=30,['min_level']=30,['desc']="+1% ass. HP",['mult']=1,['tag']="% Hp Emilimi"},
    						{['type']=apply.PENETRATE_PCT,['name']="Delici vurus",['max_points']=10,['min_level']=30,['desc']="+1% Delici vurus",['mult']=1,['tag']="% Delici"},
    						{['type']=apply.CRITICAL_PCT,['name']="Kritik vurus",['max_points']=10,['min_level']=60,['desc']="+1% Kritik vurus",['mult']=1,['tag']="% Kritik"},
    						{['type']=apply.ATTBONUS_MONSTER,['name']="Canavarlara karsi guc",['max_points']=10,['min_level']=60,['desc']="+1% Canavara karsi guc",['mult']=1,['tag']="% Canavarlara karsi guc"}
    						},
    			 ['ExpTable'] = {300,600,900,1200,1500,1800,2100,2400,2700,3000,		-- Liv 1-10
    							 3300,3600,3900,4200,4500,4800,5100,5400,5700,6000,		-- Liv 11-20
    							 6300,6600,6900,7200,7500,7800,8100,8400,8700,9000,		-- Liv 21-30
    							 9300,9600,9900,10200,10500,10800,11100,11400,11700,12000,		-- Liv 31-40
    							 12300,12600,12900,13200,13500,13800,14100,14400,14700,15000,		-- Liv 41-50
    							 15300,15600,15900,16200,16500,16800,17100,17400,17700,18000,		-- Liv 51-60
    							 18300,18600,18900,19200,19500,19800,20100,20400,20700,21000,		-- Liv 61-70
    							 21300,21600,21900,22200,22500,22800,23100,23400,23700,24000,		-- Liv 71-80
    							 24300,24600,24900,25200,25500,25800,26100,26400,26700,27000,		-- Liv 81-90
    							 27300,27600,27900,28200,28500,28800,29100,29400,29700,30000,		-- Liv 91-100
    							 30300,30600,30900,31200,31500,31800,32100,32400,32700,0			-- Liv 101-110
    							}
    			}
    -- Pet 4
    PetSystem[4] = 
    			{['Name'] = "Minik Azrail", ['Level'] = 25, ['Item'] = 53004, ['MaxLevel'] = 99, ['WindowSize'] = 395,
    			 ['Skill']= {
    						{['type']=apply.MAX_HP,['name']="Max HP",['max_points']=30,['desc']="+100HP",['mult']=100,['tag']=" HP"},
    						{['type']=apply.RESBONUS_WARRIOR,['name']="Savasciya savunma",['max_points']=10,['desc']="+1% res. guerrier",['mult']=1,['tag']="% Savasciya savunma"},
    						{['type']=apply.RESBONUS_ASSASSIN,['name']="ninjaya savunma",['max_points']=10,['desc']="+1% res. ninja",['mult']=1,['tag']="% ninjaya savunma"},
    						{['type']=apply.RESBONUS_SURA,['name']="Suraya savunma",['max_points']=10,['desc']="+1% res. sura",['mult']=1,['tag']="% Suraya savunma"},
    						{['type']=apply.RESBONUS_SHAMAN,['name']="Samana savunma",['max_points']=10,['desc']="+1% res. shaman",['mult']=1,['tag']="% Samana savunma"},
    						{['type']=apply.CAST_SPEED,['name']="Buyu hizi",['max_points']=15,['desc']="+1% vit. magique",['mult']=1,['tag']="% Buyu hizi"},
    						{['type']=apply.ATTBONUS_HUMAN,['name']="Yari-insanlara karsi guc",['max_points']=10,['desc']="+1% DH",['mult']=1,['tag']="% Yari-insanlara karsi guc"}		
    						},
    			 ['ExpTable'] = {300,600,900,1200,1500,1800,2100,2400,2700,3000,		-- Liv 1-10
    							 3300,3600,3900,4200,4500,4800,5100,5400,5700,6000,		-- Liv 11-20
    							 6300,6600,6900,7200,7500,7800,8100,8400,8700,9000,		-- Liv 21-30
    							 9300,9600,9900,10200,10500,10800,11100,11400,11700,12000,		-- Liv 31-40
    							 12300,12600,12900,13200,13500,13800,14100,14400,14700,15000,		-- Liv 41-50
    							 15300,15600,15900,16200,16500,16800,17100,17400,17700,18000,		-- Liv 51-60
    							 18300,18600,18900,19200,19500,19800,20100,20400,20700,21000,		-- Liv 61-70
    							 21300,21600,21900,22200,22500,22800,23100,23400,23700,24000,		-- Liv 71-80
    							 24300,24600,24900,25200,25500,25800,26100,26400,26700,27000,		-- Liv 81-90
    							 27300,27600,27900,28200,28500,28800,29100,29400,29700,30000,		-- Liv 91-100
    							 30300,30600,30900,31200,31500,31800,32100,32400,32700,0			-- Liv 101-110
    							}
    			}
    -- Pet 5
    PetSystem[5] = 
    			{['Name'] = "Rufus", ['Level'] = 26, ['Item'] = 53005, ['MaxLevel'] = 99, ['WindowSize'] = 395,
    			 ['Skill']= {
    						{['type']=apply.MAX_HP,['name']="Max HP",['max_points']=30,['min_level']=1,['desc']="+100HP",['mult']=100,['tag']=" HP"},
    						{['type']=apply.RESBONUS_WARRIOR,['name']="Savasciya savunma",['max_points']=15,['min_level']=20,['desc']="+1% res. guerrier",['mult']=1,['tag']="% Savasciya savunma"},
    						{['type']=apply.ATTBONUS_WARRIOR,['name']="Savasciya karsi guc",['max_points']=15,['min_level']=20,['desc']="+1 att. contre guerrier",['mult']=1,['tag']="% Savasciya karsi guc"},
    						{['type']=apply.CAST_SPEED,['name']="Buyu hizi",['max_points']=20,['min_level']=40,['desc']="+1% vit. magique",['mult']=1,['tag']="% Buyu hizi"},
    						{['type']=apply.ATTBONUS_HUMAN,['name']="Yari-insanlara karsi guc",['max_points']=10,['min_level']=60,['desc']="+1% DH",['mult']=1,['tag']="% Yari-insanlara karsi guc"}
    						},
    			 ['ExpTable'] = {300,600,900,1200,1500,1800,2100,2400,2700,3000,		-- Liv 1-10
    							 3300,3600,3900,4200,4500,4800,5100,5400,5700,6000,		-- Liv 11-20
    							 6300,6600,6900,7200,7500,7800,8100,8400,8700,9000,		-- Liv 21-30
    							 9300,9600,9900,10200,10500,10800,11100,11400,11700,12000,		-- Liv 31-40
    							 12300,12600,12900,13200,13500,13800,14100,14400,14700,15000,		-- Liv 41-50
    							 15300,15600,15900,16200,16500,16800,17100,17400,17700,18000,		-- Liv 51-60
    							 18300,18600,18900,19200,19500,19800,20100,20400,20700,21000,		-- Liv 61-70
    							 21300,21600,21900,22200,22500,22800,23100,23400,23700,24000,		-- Liv 71-80
    							 24300,24600,24900,25200,25500,25800,26100,26400,26700,27000,		-- Liv 81-90
    							 27300,27600,27900,28200,28500,28800,29100,29400,29700,30000,		-- Liv 91-100
    							 30300,30600,30900,31200,31500,31800,32100,32400,32700,0			-- Liv 101-110
    							}
    			}
    -- Pet 6
    PetSystem[6] = 
    			{['Name'] = "Leonidas", ['Level'] = 27, ['Item'] = 53006, ['MaxLevel'] = 99, ['WindowSize'] = 395,
    			 ['Skill']= {
    						{['type']=apply.MAX_HP,['name']="Max HP",['max_points']=30,['min_level']=1,['desc']="+100HP",['mult']=100,['tag']=" HP"},
    						{['type']=apply.RESBONUS_ASSASSIN,['name']="Ninjaya savunma",['max_points']=15,['min_level']=20,['desc']="+1% res. ninja",['mult']=1,['tag']="% Ninjaya savunma"},
    						{['type']=apply.ATTBONUS_ASSASSIN,['name']="Ninjaya karsi guc",['max_points']=15,['min_level']=20,['desc']="+1 att. contre ninja",['mult']=1,['tag']="% Ninjaya karsi guc"},
    						{['type']=apply.CAST_SPEED,['name']="Buyu hizi",['max_points']=20,['min_level']=40,['desc']="+1% vit. magique",['mult']=1,['tag']="% Buyu hizi"},
    						{['type']=apply.ATTBONUS_HUMAN,['name']="Yari-insanlara karsi guc",['max_points']=10,['min_level']=60,['desc']="+1% DH",['mult']=1,['tag']="% Yari-insanlara karsi guc"}
    						},
    			 ['ExpTable'] = {300,600,900,1200,1500,1800,2100,2400,2700,3000,		-- Liv 1-10
    							 3300,3600,3900,4200,4500,4800,5100,5400,5700,6000,		-- Liv 11-20
    							 6300,6600,6900,7200,7500,7800,8100,8400,8700,9000,		-- Liv 21-30
    							 9300,9600,9900,10200,10500,10800,11100,11400,11700,12000,		-- Liv 31-40
    							 12300,12600,12900,13200,13500,13800,14100,14400,14700,15000,		-- Liv 41-50
    							 15300,15600,15900,16200,16500,16800,17100,17400,17700,18000,		-- Liv 51-60
    							 18300,18600,18900,19200,19500,19800,20100,20400,20700,21000,		-- Liv 61-70
    							 21300,21600,21900,22200,22500,22800,23100,23400,23700,24000,		-- Liv 71-80
    							 24300,24600,24900,25200,25500,25800,26100,26400,26700,27000,		-- Liv 81-90
    							 27300,27600,27900,28200,28500,28800,29100,29400,29700,30000,		-- Liv 91-100
    							 30300,30600,30900,31200,31500,31800,32100,32400,32700,0			-- Liv 101-110
    							}
    			}
    -- Pet 7
    PetSystem[7] = 
    			{['Name'] = "Porki", ['Level'] = 28, ['Item'] = 53007, ['MaxLevel'] = 99, ['WindowSize'] = 395,
    			 ['Skill']= {
    						{['type']=apply.MAX_HP,['name']="Max HP",['max_points']=30,['min_level']=1,['desc']="+100HP",['mult']=100,['tag']=" HP"},
    						{['type']=apply.RESBONUS_SURA,['name']="Suraya savunma",['max_points']=15,['min_level']=20,['desc']="+1% res. sura",['mult']=1,['tag']="% Suraya savunma"},
    						{['type']=apply.ATTBONUS_SURA,['name']="Suraya karsi guc",['max_points']=15,['min_level']=20,['desc']="+1 att. contre sura",['mult']=1,['tag']="% Suraya karsi guc"},
    						{['type']=apply.CAST_SPEED,['name']="Buyu hizi",['max_points']=20,['min_level']=40,['desc']="+1% vit. magique",['mult']=1,['tag']="% Buyu hizi"},
    						{['type']=apply.ATTBONUS_HUMAN,['name']="Yari-insanlara karsi guc",['max_points']=10,['min_level']=60,['desc']="+1% DH",['mult']=1,['tag']="% Yari-insanlara karsi guc"}
    						},
    			 ['ExpTable'] = {300,600,900,1200,1500,1800,2100,2400,2700,3000,		-- Liv 1-10
    							 3300,3600,3900,4200,4500,4800,5100,5400,5700,6000,		-- Liv 11-20
    							 6300,6600,6900,7200,7500,7800,8100,8400,8700,9000,		-- Liv 21-30
    							 9300,9600,9900,10200,10500,10800,11100,11400,11700,12000,		-- Liv 31-40
    							 12300,12600,12900,13200,13500,13800,14100,14400,14700,15000,		-- Liv 41-50
    							 15300,15600,15900,16200,16500,16800,17100,17400,17700,18000,		-- Liv 51-60
    							 18300,18600,18900,19200,19500,19800,20100,20400,20700,21000,		-- Liv 61-70
    							 21300,21600,21900,22200,22500,22800,23100,23400,23700,24000,		-- Liv 71-80
    							 24300,24600,24900,25200,25500,25800,26100,26400,26700,27000,		-- Liv 81-90
    							 27300,27600,27900,28200,28500,28800,29100,29400,29700,30000,		-- Liv 91-100
    							 30300,30600,30900,31200,31500,31800,32100,32400,32700,0			-- Liv 101-110
    							}
    			}
    -- Pet 8
    PetSystem[8] = 
    			{['Name'] = "Khan", ['Level'] = 29, ['Item'] = 53008, ['MaxLevel'] = 99, ['WindowSize'] = 395,
    			 ['Skill']= {
    						{['type']=apply.MAX_HP,['name']="Max HP",['max_points']=30,['min_level']=1,['desc']="+100HP",['mult']=100,['tag']=" HP"},
    						{['type']=apply.RESBONUS_SHAMAN,['name']="Samana savunma",['max_points']=15,['min_level']=20,['desc']="+1% res. shaman",['mult']=1,['tag']="% Samana savunma"},
    						{['type']=apply.ATTBONUS_SHAMAN,['name']="Samana karsi guc",['max_points']=15,['min_level']=20,['desc']="+1 att. contre shaman",['mult']=1,['tag']="% Samana karsi guc"},
    						{['type']=apply.CAST_SPEED,['name']="Buyu hizi",['max_points']=20,['min_level']=40,['desc']="+1% vit. magique",['mult']=1,['tag']="% Buyu hizi"},
    						{['type']=apply.ATTBONUS_HUMAN,['name']="Yari-insanlara karsi guc",['max_points']=10,['min_level']=60,['desc']="+1% DH",['mult']=1,['tag']="% Yari-insanlara karsi guc"}
    						},
    			 ['ExpTable'] = {300,600,900,1200,1500,1800,2100,2400,2700,3000,		-- Liv 1-10
    							 3300,3600,3900,4200,4500,4800,5100,5400,5700,6000,		-- Liv 11-20
    							 6300,6600,6900,7200,7500,7800,8100,8400,8700,9000,		-- Liv 21-30
    							 9300,9600,9900,10200,10500,10800,11100,11400,11700,12000,		-- Liv 31-40
    							 12300,12600,12900,13200,13500,13800,14100,14400,14700,15000,		-- Liv 41-50
    							 15300,15600,15900,16200,16500,16800,17100,17400,17700,18000,		-- Liv 51-60
    							 18300,18600,18900,19200,19500,19800,20100,20400,20700,21000,		-- Liv 61-70
    							 21300,21600,21900,22200,22500,22800,23100,23400,23700,24000,		-- Liv 71-80
    							 24300,24600,24900,25200,25500,25800,26100,26400,26700,27000,		-- Liv 81-90
    							 27300,27600,27900,28200,28500,28800,29100,29400,29700,30000,		-- Liv 91-100
    							 30300,30600,30900,31200,31500,31800,32100,32400,32700,0			-- Liv 101-110
    							}
    			}		
    			
    
    --**
    --** Menu Pet
    --**
    function PetSystem.ShowMenu(PetIndex)
    	if horse.is_mine() then
    		local pet_menu
    		if pc.getqf("exp_blocked") == 0 then
    			pet_menu = {"Bilgi","Pet Becerilerini Yönet","Exp Kasmayi Kapat","Evcil Hayvan Statu","Evcil Hayvaný Gönder","Geri Dön (Menüyü Kapat)"}
    		else
    			pet_menu = {"Bilgi","Pet Becerilerini Yönet","Exp Kasmayi Ac","Evcil Hayvan Statu","Evcil Hayvaný Gönder","Geri Dön (Menüyü Kapat)"}
    		end
    		say_title("Evcil Hayvan: "..PetSystem[PetIndex].Name) 
    		local skill_points, liv, ex = PetSystem.ReadStatus(PetIndex)
    		say_light_yellow("Level: "..liv.." / "..PetSystem[PetIndex].MaxLevel.." - Skill Puaný: "..skill_points.."")
    		if not PetSystem.IsExpBlocked() then
    			say_light_yellow("Tecrübe: "..ex.." / "..PetSystem[PetIndex].ExpTable[liv].." (Exp Kasma Açýk)")
    		else
    			say_light_yellow("Tecrübe: "..ex.." / "..PetSystem[PetIndex].ExpTable[liv].." (Exp Kasma Kapalý)")
    		end
    		say("Ýþlemini Seç:")
    		say_size(350, 330)
    		local s = select_table(pet_menu)
    ----------********** Bilgilendirme ***********----------		
    		if s == 1 then
    			say_title("Bilgi")
    			say("Evcil hayvanlar sizinle birlikte pesinizden ayrilmayan hayvanlardir.")
    			say("Bu hayvanlar gelistirilebilir.")
    			say("Levelleri yukseltilebilir.")
    			say("Evcil hayvanlar level atladikca bonuslarida artar.")
    			say("Bu bonuslari siz belirleyebilirsiniz.")
    			say("Bonuslar her evcil hayvanda farklidir.")
    			say("Evcil hayvanlar her mob kestiginizde tecrube kazanir.")
    			say("Exp Kasmayi acik biraktiginiz surece exp kasmaniz mumkundur.")
    			say("Aksi taktirde petiniz kasilmaz.")
    ----------********** Beceri Menu ***********----------			
    		elseif s == 2 then
    			say_title("Evcil Hayvaninin becerilerini yönet: "..PetSystem[PetIndex].Name.."")
    			say_orange("Beceri puaný durumu: "..skill_points.."")
    			say("[ENTER]Bir iþlem seçin:[ENTER]")
    			local a = select("Beceri arttýr","Beceri azalt","iptal")
    			if a == 3 then 
    				return
    			----------********** Beceri attir ***********----------
    			elseif a == 1 then	
    				say_title("Beceri arttýr'")
    				if skill_points == 0 then
    					say("Beceri arttýrmak için puan gereklidir.[ENTER]")
    					return
    				end
    				local skill_value = {}
    				local menu_abi = {}
    				skill_value = PetSystem.LoadSkill(PetIndex)
    				for i = 1, table.getn(PetSystem[PetIndex].Skill) do
    					if liv >= PetSystem[PetIndex].Skill[i].min_level then
    						table.insert(menu_abi, PetSystem[PetIndex].Skill[i].name..": "..skill_value[i].." puan")
    					end
    				end				
    				table.insert(menu_abi, "iptal")
    				if table.getn(menu_abi) == 1 then
    					say("Bu beceriyi arttirmak mumkun degildir..[ENTER]")
    					return
    				end
    				say("Arttýrmak için bir beceri seçin")
    				say_size(350, PetSystem[PetIndex].WindowSize)			
    				local s = select_table(menu_abi)
    				if s == table.getn(menu_abi) then
    					return			
    				end
    				say_title(PetSystem[PetIndex].Skill[s].name)
    				say_orange("Mevcut puan: "..skill_value[s].." [ENTER]")
    				if skill_value[s] == PetSystem[PetIndex].Skill[s].max_points then
    					say("Yetenek maximum seviyeye ulasti.[ENTER]")
    					return
    				end
    				say_light_blue("Her puan "..PetSystem[PetIndex].Skill[s].desc.." vermektedir.")
    				say_light_blue("Bu yetenege max. "..PetSystem[PetIndex].Skill[s].max_points.." puan verebilirsiniz[ENTER]")
    				local a = select("arttir", "iptal")
    				if a == 2 then
    					return
    				end
    				say_title(PetSystem[PetIndex].Skill[s].name)
    				say("Yetenege verebileceginiz maximum puani goz onunde bulundurarak rakamla yaziniz[ENTER]")
    				say("Bu beceriyi kac puan yukseltmek istersiniz ?(Rakam girin)[ENTER]")
    				local points = tonumber(input())
    				say_title(PetSystem[PetIndex].Skill[s].name)
    				if points == nil or points < 1 then
    					say("Gecersiz bir deger girdiniz.[ENTER]")
    					return
    				elseif points > skill_points then
    					say("Yeterli yetenek puani yok[ENTER]")
    					return
    				elseif (skill_value[s]+points) > PetSystem[PetIndex].Skill[s].max_points then
    					say("Secilen beceri icin girdiginiz"..points.." puan gecersiz,")
    					say("beceriye verilebilecek maximum puana bir goz atin.")
    					say("Daha kucuk degerler kullanin.[ENTER]")
    					return
    				end
    				skill_value[s] = skill_value[s]+points
    				PetSystem.ChangeSkillPoints(PetIndex, -points)
    				PetSystem.SaveSkill(PetIndex, skill_value)
    				PetSystem.AddBonus(PetIndex)
    				say("Yetenek arttirma basarili[ENTER]")
    			----------********** Beceri azaltma ***********----------
    			elseif a == 2 then
    				say_title("Beceri Azalt")
    				local skill_value = {}
    				local menu_abi = {}
    				skill_value = PetSystem.LoadSkill(PetIndex)
    				for i = 1, table.getn(PetSystem[PetIndex].Skill) do
    					if liv >= PetSystem[PetIndex].Skill[i].min_level then
    						table.insert(menu_abi, PetSystem[PetIndex].Skill[i].name..": "..skill_value[i].." puan")
    					end
    				end
    				table.insert(menu_abi, "iptal")
    				if table.getn(menu_abi) == 1 then
    					say("Bu becerinin azalmasi mumkun degildir[ENTER]")
    					return
    				end				
    				say("Azaltmak istedigin beceriyi sec")
    				say_size(350, PetSystem[PetIndex].WindowSize)				
    				local s = select_table(menu_abi)
    				if s == table.getn(menu_abi) then
    					return			
    				end		
    				say_title(PetSystem[PetIndex].Skill[s].name)
    				say_orange("Suanki yetenek puani: "..skill_value[s].."")
    				if skill_value[s] == 0 then
    					say("Beceri zaten 0 oldugu icin azaltamazsin[ENTER]")
    					return
    				end
    				say("Ne yapmak istersiniz[ENTER]")
    				local b = select("1 puan sil","tum puanlari sil","iptal")
    				if b == 3 then
    					return
    				elseif b == 1 then
    					say_title(PetSystem[PetIndex].Skill[s].name)
    					say("Evcil hayvaninizin yeteneginden 1 puan")
    					say("silmek istediginden emin misiniz?[ENTER]")
    					local c = select("Evet","Hayir")
    					if c == 2 then
    						return
    					end
    					PetSystem.ChangeSkillPoints(PetIndex, 1)
    					skill_value[s] = skill_value[s]-1
    					PetSystem.SaveSkill(PetIndex, skill_value)
    					PetSystem.AddBonus(PetIndex)
    					say_title(PetSystem[PetIndex].Skill[s].name)
    					say("Pet yeteneginden 1 puan cikarilmistir.[ENTER]")					
    				elseif b == 2 then
    					say_title(PetSystem[PetIndex].Skill[s].name)
    					say("Bu yetenek puanlarini sifira indirmek istediginizden emin misiniz ?[ENTER]")
    					local c = select("Evet","Hayir")
    					if c == 2 then
    						return
    					end
    					PetSystem.ChangeSkillPoints(PetIndex, skill_value[s])
    					skill_value[s] = 0
    					PetSystem.SaveSkill(PetIndex, skill_value)
    					PetSystem.AddBonus(PetIndex)
    					say_title(PetSystem[PetIndex].Skill[s].name)
    					say("Sectiginiz becerinin puani sifira indi.[ENTER]")					
    				end
    			end	
    ----------********** Exp Bloklama/blogu kaldirma ***********----------
    		elseif s == 3 then
    			if not PetSystem.IsExpBlocked() then
    				say_title("Exp kasmayi kapat")
    				say("Exp kasmayi kapat")
    				say("Eger exp kasmayi kapatirsan evcil hayvanin exp kazanmaz[ENTER]")
    				local a = select("kapat","vazgec")
    				if a == 2 then
    					return
    				end
    				say_title("Exp kasmayi kapattin")
    				say("Evcil hayvaniniz artik exp kazanmayacak.[ENTER]")
    				PetSystem.BlockExp()
    			else
    				say_title("Exp kasmayi ac")
    				say("Exp kasmayi acmak istermisiniz[ENTER]")
    				local a = select("Evet","Hayir")
    				if a == 2 then
    					return
    				end
    				say_title("Exp Kasma Acik")
    				say("Evcil hayvaniniz artik exp kazanabilir.[ENTER]")
    				PetSystem.UnblockExp()
    				pc.setqf("current_exp", pc.get_exp())
    			end
    ----------********** pet statusu ***********----------
    		elseif s == 4 then
    			local skill_value = {}
    			skill_value = PetSystem.LoadSkill(PetIndex)		
    			say_title("Guclendirilmis durum' - Pet "..PetSystem[PetIndex].Name.."")
    			say_light_blue("Saglik: "..horse.get_health_pct().."%")
    			say("")
    			for i = 1, table.getn(PetSystem[PetIndex].Skill) do
    				if liv >= PetSystem[PetIndex].Skill[i].min_level then
    					local total = skill_value[i]*PetSystem[PetIndex].Skill[i].mult
    					say_light_yellow(PetSystem[PetIndex].Skill[i].name..": level "..skill_value[i]..". Bonus: "..total..PetSystem[PetIndex].Skill[i].tag)
    				end
    			end
    			say("")	
    ----------********** Peti geri gonderme ***********----------			
    		elseif s == 5 then
    			PetSystem.PetBack()				
    		elseif s == 6 then
    			return
    		end
    	end
    end
    
    --**
    --** Peti geri gonderme
    --**
    function PetSystem.PetBack()
    	cleartimer("give_exp")
    	pet.unsummon()	
    	PetSystem.RemoveBonus()
    	PetSystem.SetInactive()	
    	chat("Evcil Hayvanini Gonderdin")
    end
    				
    --**
    --** Pet yetenekleri
    --**
    function PetSystem.LoadSkill(PetIndex)
    	local FileName = PetSystem.Folder..pc.get_name().."_"..PetSystem[PetIndex].Name.."_skills"
    	local PetSkill = {}
    	if io.open(FileName, "r") == nil then
    		io.output(FileName)
    		for i = 1,table.getn(PetSystem[PetIndex].Skill) do
    			io.write("0n")
    			table.insert(PetSkill, 0)
    		end
    		io.flush()
    		io.close()
    		return PetSkill
    	end
    	for line in io.lines(FileName) do
    		table.insert(PetSkill, tonumber(line))
    	end
    	return PetSkill
    end
    
    --**
    --** Belirtilen yetenekleri kaydetme
    --**
    function PetSystem.SaveSkill(PetIndex, SkillList)
    	local FileName = PetSystem.Folder..pc.get_name().."_"..PetSystem[PetIndex].Name.."_skills"
    	io.output(FileName)
    	for i,v in ipairs(SkillList) do
    		io.write(tostring(v).."n")
    	end
    	io.flush()
    	io.close()
    end
    
    --**
    --** Belirtilen hayvan durumunu okur 
    --**
    function PetSystem.ReadStatus(petIndex)
    	local FileName = PetSystem.Folder..pc.get_name().."_"..PetSystem[petIndex].Name.."_stats"
    	local skill, liv, ex
    	if io.open(FileName, "r") != nil then
    		io.input(FileName)
    		skill = tonumber(io.read())
    		liv = tonumber(io.read())
    		ex = tonumber(io.read())
    		io.input():close()
    	else
    		io.output(FileName)
    		io.write("0n1n0n")
    		io.flush()
    		io.close()	
    		skill = 0
    		liv = 1
    		ex = 0
    	end
    	return skill, liv, ex
    end
    
    --**
    --** Belirtilen petin seviyesini okur 
    --**
    function PetSystem.GetLevel(petIndex)
    	local FileName = PetSystem.Folder..pc.get_name().."_"..PetSystem[petIndex].Name.."_stats"
    	local liv
    	if io.open(FileName, "r") != nil then
    		io.input(FileName)
    		io.read()
    		liv = tonumber(io.read())
    		io.input():close()
    	else
    		liv = 1
    	end
    	return liv
    end
    
    --**
    --** Belirtilen petin beceri puanini duzenleme
    --**
    function PetSystem.ChangeSkillPoints(PetIndex, amount)
    	local FileName = PetSystem.Folder..pc.get_name().."_"..PetSystem[PetIndex].Name.."_stats"
    	local skill, liv, ex
    	if io.open(FileName, "r") != nil then
    		io.input(FileName)
    		skill = tonumber(io.read())
    		liv = tonumber(io.read())
    		ex = tonumber(io.read())
    		skill = skill+amount
    		io.input():close()
    	else
    		skill = amount
    	end
    	io.output(FileName)
    	io.write(tostring(skill).."n")
    	io.write(tostring(liv).."n")
    	io.write(tostring(ex).."n")
    	io.flush()
    	io.close()
    end
    
    --**
    --** Belirtilen hayvanin expisini okur
    --**
    function PetSystem.GiveExp(petIndex, amount)
    	local FileName = PetSystem.Folder..pc.get_name().."_"..PetSystem[petIndex].Name.."_stats"
    	local skill, liv, ex
    	if io.open(FileName, "r") != nil then
    		io.input(FileName)
    		skill = tonumber(io.read())
    		liv = tonumber(io.read())
    		ex = tonumber(io.read())
    		ex = ex+amount
    		io.input():close()
    	else
    		skill = 0
    		liv = 1
    		ex = amount
    	end
    	if liv == PetSystem[petIndex].MaxLevel then
    		return false
    	end
    	if ex > PetSystem[petIndex].ExpTable[liv] then
    		ex = ex-PetSystem[petIndex].ExpTable[liv]
    		skill = skill+1
    		liv = liv+1
    		if liv == PetSystem[petIndex].MaxLevel then
    			ex = 0
    			chat("Evcil hayvaniniz Maximum seviyeye ulasti.")
    		else
    			chat("Evcil hayvaninizin seviyesi "..liv.."!")
    		end
    		chat("farkli bir bir beceri sec")
    		if PetSystem.NewSkillLearnt(petIndex, liv) then
    			send_letter("Yeni bir beceri kilidi acildi!")
    		end
    	end
    	io.output(FileName)
    	io.write(tostring(skill).."n")
    	io.write(tostring(liv).."n")
    	io.write(tostring(ex).."n")
    	io.flush()
    	io.close()	
    	return true
    end
    
    --**
    --** bonus puanina gore hayvaninizin skillerini arttirma
    --**
    function PetSystem.AddBonus(PetIndex)
    	PetSystem.RemoveBonus()
    	local SkillList = {}
    	SkillList = PetSystem.LoadSkill(PetIndex)
    	for i = 1,table.getn(SkillList) do
    		affect.add_hair(PetSystem[PetIndex].Skill[i].type, SkillList[i]*PetSystem[PetIndex].Skill[i].mult, 60*60*24*365)
    	end
    end
    
    --**
    --** Pet bonusunu siler
    --**
    function PetSystem.RemoveBonus()
    	affect.remove(520)
    end
    
    --**
    --** Atin adi ve seviyesini ayarlayin
    --**
    function PetSystem.SetHorseData(level, name)
    	horse.set_name(name)
    	horse.set_level(level)
    end
    
    --**
    --** At ve seviyesinin bir evcil hayvanla iliskili olmadigini kontrol edin
    --**
    function PetSystem.IsPetLevel(level)
    	for i = 1,PetSystem.GetPetNumber() do
    		if level == PetSystem[i].Level then
    			return true
    		end
    	end
    	return false
    end
    
    --**
    --** Evcil hayvaninizin yeni bir beceri ogrenmis olup olmadigini kontrol edin
    --**
    function PetSystem.NewSkillLearnt(PetIndex, PetLevel)
    	for i = 1,table.getn(PetSystem[PetIndex].Skill) do
    		if PetLevel == PetSystem[PetIndex].Skill[i].min_level then
    			return true
    		end
    	end
    	return false
    end
    
    --**
    --** Toplam pet sayisini gosterir
    --**
    function PetSystem.GetPetNumber()
    	return table.getn(PetSystem)
    end
    
    --** Aktif hayvaninizi ayarlayin
    function PetSystem.SetActivePet(petIndex)
    	pc.setqf(PetSystem.Flag, petIndex)
    end
    
    --** pet sistemi etkin edin
    function PetSystem.IsActive()
    	return (pc.getqf(PetSystem.Flag) > 0)
    end
    
    --** pet sistemini devre disi birakin
    function PetSystem.SetInactive()
    	pc.setqf(PetSystem.Flag, 0)
    end
    
    --** Etkin hayvan sayisini gosterir
    function PetSystem.GetActivePet()
    	return pc.getqf(PetSystem.Flag)
    end
    
    --** Bloklu expi gosterir
    function PetSystem.BlockExp()
    	pc.setqf(PetSystem.ExpFlag, 1)
    end
    
    --** Bloksuz expi gosterir
    function PetSystem.UnblockExp()
    	pc.setqf(PetSystem.ExpFlag, 0)
    end
    
    --** Pet expinin kilitli olup olmadigini gosterir
    function PetSystem.IsExpBlocked()
    	return (pc.getqf(PetSystem.ExpFlag) == 1)
    end
    

    Quest:

    quest horse_summon begin
    	state start begin
    		function get_horse_summon_prob_pct() 
    			local prob = {10,15,20,30,40,50,60,70,80,90,100}
    			local skill_level = pc.get_skill_level(131) + 1
    			return prob[skill_level]
    		end
    		
    		when 20349.chat."Nowa Ksiêga Zwyk³ego Konia " with horse.get_grade()==1 and pc.countitem("50051")<1 begin
    			say_title("Stajenny:")
    			say("Zgubi³eœ Ksiêgê Zwyk³ego Konia! ")
    			say("Mogê daæ Ci now¹ za 500.000 Yang.")
    			local b=select("Tak", "Nie")
    			if 1==b then
    				if pc.money>=10000 then
    					pc.changemoney(-10000)
    					say_title("Informacja:")
    					say("Oto nowa Ksiêga Zwyk³ego Konia! [ENTER]Tym razem spróbuj jej nie zgubiæ! ")
    					pc.give_item2("50051", 1)
    				else
    					say_title("Informacja:")
    					say("Nie masz wystarczaj¹co du¿o yang!")
    				end
    			else
    				return
    			end
    		end
    		when 20349.chat."Nowa Ksiêga Opancerz. Konia " with horse.get_grade()==2 and pc.countitem("50052")<1 begin
    			say_title("Stajenny:")
    			say("Zgubi³eœ Ksiêgê Opancerz. Konia! ")
    			say("Mogê daæ Ci now¹ za 500.000 Yang.")
    			local b=select("Tak", "Nie")
    			if 1==b then
    				if pc.money>=50000 then
    					pc.changemoney(-50000)
    					say_title("Informacja:")
    					say("Oto nowa Ksiêga Opancerz. Konia![ENTER]Tym razem spróbuj jej nie zgubiæ! ")
    					pc.give_item2("50052", 1)
    				else
    					say_title("Informacja:")
    					say("Nie masz wystarczaj¹co du¿o yang!")
    				end
    			else
    				return
    			end
    		end
    		when 20349.chat."Nowa Ksiêga Wojskowego Konia " with horse.get_grade()==3 and pc.countitem("50053")<1 begin
    			say_title("Stajenny:")
    			say("Zgubi³eœ Ksiêgê Wojskowego Konia! ")
    			say("Mogê daæ Ci now¹ za 500.000 Yang.")
    			local b=select("Tak", "Nie")
    			if 1==b then
    				if pc.money>=100000 then
    					pc.changemoney(-100000)
    					say_title("Informacja:")
    					say("Oto nowa Ksiêga Wojskowego Konia![ENTER]Tym razem spróbuj jej nie zgubiæ! ")
    					pc.give_item2("50053", 1)
    				else
    					say_title("Informacja:")
    					say("Nie masz wystarczaj¹co du¿o yang!")
    				end
    			else
    				return
    			end
    		end
    		when 50051.use with horse.get_grade()==0 begin
    			say_title("Informacja:")
    			say_reward("Przywo³anie konia jest nie mo¿liwe.[ENTER]Nie posiadasz go!")
    		end
    		when 50051.use with horse.get_grade()==1 begin
    		if PetSystem.IsPetLevel(horse.get_level()) then
    				say("Vous avez fait n'importe quoi avec les")
    				say("commande GM. Mettez le niveau du cheval")
    				say("puis essayez à nouveau.[ENTER]")				
    				return					
    			end	
    			if pc.getsp()>=100 then
    				if number(1, 100)<=horse_summon.get_horse_summon_prob_pct() then
    					say_title("Informacja:")
    					say_reward("Koñ zosta³ przywo³any. ")
    					say("")
    					horse.summon()
    				else
    					say_title("Informacja:")
    					say_reward("Przywo³anie Konia dla profesjonalistów nie ")
    					say_reward("powiod³o siê. ")
    					say_reward("Mo¿esz zwiêkszyæ szansê na pomyœlne ")
    					say_reward("przywo³anie poprzez trening swoich umiejêtnoœci.")
    					say("")
    				end
    				pc.change_sp(-100)
    			else
    				say_title("Informacja:")
    				say_reward("Masz za ma³o Punktów Energii. Aby przywo³aæ ")
    				say_reward("Konia, potrzebujesz ich co najmniej 300. ")
    				say("")
    			end
    		end
    		when 50051.use with horse.get_grade()==2 begin
    			say_title("Informacja:")
    			say_reward("Ta ksiêga nie jest odpowiednia!")
    		end
    		when 50051.use with horse.get_grade()==3 begin
    			say_title("Informacja:")
    			say_reward("Ta ksiêga nie jest odpowiednia!")
    		end
    		when 50052.use with horse.get_grade()==0 begin
    			say_title("Informacja:")
    			say_reward("Ta ksiêga nie jest odpowiednia!")
    		end
    		when 50052.use with horse.get_grade()==1 begin
    			say_title("Informacja:")
    			say_reward("Ta ksiêga nie jest odpowiednia!")
    		end
    		when 50052.use with horse.get_grade()==2 begin
    		if PetSystem.IsPetLevel(horse.get_level()) then
    				say("Vous avez fait n'importe quoi avec les")
    				say("commande GM. Mettez le niveau du cheval")
    				say("puis essayez à nouveau.[ENTER]")				
    				return					
    			end	
    			if pc.getsp()>=200 then
    				if number(1, 100)<=horse_summon.get_horse_summon_prob_pct() then
    					say_title("Informacja:")
    					say_reward("Koñ zosta³ przywo³any.")
    					say("")
    					horse.summon()
    				else
    					say_title("Informacja:")
    					say_reward("Przywo³anie Konia powiod³o siê. ")
    					say_reward("Mo¿esz zwiêkszyæ szansê na pomyœlne ")
    					say_reward("przywo³anie poprzez trening swoich umiejêtnoœci.")
    					say("")
    				end
    				pc.change_sp(-200)
    			else
    				say_title("Informacja:")
    				say_reward("Masz za ma³o Punktów Energii. Aby przywo³aæ ")
    				say_reward("Konia, potrzebujesz ich co najmniej 300. ")
    				say("")
    			end
    		end
    		when 50052.use with horse.get_grade()==3 begin
    			say_title("Informacja:")
    			say_reward("Ta ksiêga nie jest odpowiednia!")
    		end
    		when 50053.use with horse.get_grade()==0 begin
    			say_title("Informacja:")
    			say_reward("Ta ksiêga nie jest odpowiednia!")
    		end
    		when 50053.use with horse.get_grade()==1 begin
    			say_title("Informacja:")
    			say_reward("Ta ksiêga nie jest odpowiednia!")
    		end
    		when 50053.use with horse.get_grade()==2 begin
    			say_title("Informacja:")
    			say_reward("Ta ksiêga nie jest odpowiednia!")
    		end
    		when 50053.use with horse.get_grade()==3 begin
    		if PetSystem.IsPetLevel(horse.get_level()) then
    				say("Vous avez fait n'importe quoi avec les")
    				say("commande GM. Mettez le niveau du cheval")
    				say("puis essayez à nouveau.[ENTER]")				
    				return					
    			end	
    			if pc.getsp()>=300 then
    				if number(1, 100)<=horse_summon.get_horse_summon_prob_pct() then
    					say_title("Informacja:")
    					say_reward("Koñ zosta³ przywo³any.")
    					say("")
    					horse.summon()
    				else
    					say_title("Informacja:")
    					say_reward("Przywo³anie Konia nie powiod³o siê. ")
    					say_reward("Mo¿esz zwiêkszyæ szansê na pomyœlne ")
    					say_reward("przywo³anie poprzez trening swoich umiejêtnoœci. ")
    					say("")
    				end
    				pc.change_sp(-300)
    			else
    				say_title("Informacja:")
    				say_reward("Masz za ma³o Punktów Energii. Aby przywo³aæ ")
    				say_reward("Konia, potrzebujesz ich co najmniej 300. ")
    				say("")
    			end
    		end
    	
    		-----***** Richiamo Pet
    		when 53001.use or 53002.use or 53003.use or 53005.use or 53006.use or 53007.use or 53008.use or 53009.use begin
    			if not PetSystem.IsActive() then
    				local PetNumber = {[53001]=1,[53002]=2,[53003]=3,[53005]=4,[53006]=5,[53007]=6,[53008]=7,[53009]=8}
    				local petIndex = PetNumber[item.get_vnum()]
    				if horse.is_dead() then
    					say_title("Informacja:")
    					say("Nie mo¿na przywo³aæ martwego zwierzêcia.")
    					say("O¿yw zwierze.[ENTER]")
    					return
    				end			
    				local horse_lev = horse.get_level()
    				local horse_name = horse.get_name()
    				PetSystem.SetActivePet(petIndex)
    				PetSystem.AddBonus(petIndex)
    				PetSystem.SetHorseData(PetSystem[petIndex].Level, "Lv"..PetSystem.GetLevel(petIndex).." "..PetSystem[petIndex].Name)
    				pet.summon()
    				PetSystem.SetHorseData(horse_lev, horse_name)
    				cleartimer("give_exp")
    				loop_timer("give_exp", PetSystem.UpdateFrequency)
    				chat(""..PetSystem[petIndex].Name.." zostal przywolany.")
    			else
    				PetSystem.PetBack() 				
    			end
    		end
    		
    		-----*****
    		-----***** Roba varia per Pet
    		-----*****
    		
    		when 30130.use begin
    			if not PetSystem.IsActive() then
    				chat("Nale¿y odwolaæ swojego zwierzaka, aby daæ mu doswiadczenie.")
    				return
    			end
    			local PetHasGotExp = PetSystem.GiveExp(PetSystem.GetActivePet(), PetSystem.ItemExp)
    			if not PetHasGotExp then
    				chat("Twój zwierzak jest na maksymalnym poziomie.")
    			else
    				chat("Twój zwierzak otrzymal"..PetSystem.ItemExp.." punktów doswiadczenia.")
    				pc.remove_item(item.get_vnum(), 1)
    			end
    		end
    		
    		when login begin
    			if PetSystem.IsActive() then
    				if pc.count_item(PetSystem[PetSystem.GetActivePet()].Item) != 0 and not horse.is_dead() then
    					local horse_lev = horse.get_level()
    					local horse_name = horse.get_name()		
    					local PetIndex = PetSystem.GetActivePet()				
    					PetSystem.SetHorseData(PetSystem[PetIndex].Level, "Lv"..PetSystem.GetLevel(PetIndex).." "..PetSystem[PetIndex].Name)
    					pet.summon()
    					PetSystem.SetHorseData(horse_lev, horse_name)
    					loop_timer("give_exp", PetSystem.UpdateFrequency)
    				else
    					PetSystem.SetInactive()
    					timer("remove_bonus", 2)
    				end				
    			end			
    			pc.setqf("current_exp", pc.get_exp())
    		end
    		
    		when remove_bonus.timer begin
    			PetSystem.RemoveBonus()
    		end	
    		
    		when give_exp.timer begin
    			if PetSystem.IsActive() and not PetSystem.IsExpBlocked() then
    				local gained_exp = pc.get_exp()-pc.getqf("current_exp")
    				if gained_exp < 0 then
    					pc.setqf("current_exp", pc.get_exp())
    					return
    				end
    				local pet_exp = math.floor(gained_exp*3/100)
    				if pet_exp != 0 then
    					local PetHasGotExp = PetSystem.GiveExp(PetSystem.GetActivePet(), pet_exp)
    					if PetHasGotExp then
    						pc.give_exp2(-pet_exp)
    						pc.setqf("current_exp", pc.get_exp())
    					end					
    				end
    			end
    		end
    		when button or info begin
    			say_title("Nowe Umiejetnosci")
    			say("Twój zwierzak ma odblokowane")
    			say("nowe umiejêtnoœci, aby dowiedzieæ siê")
    			say("wiêcej przejœdz do menu Umiejêtnoœci .[ENTER]")
    			q.done()
    		end
    
    		  -----***** Menu Pet
      when 20120.click begin PetSystem.ShowMenu(1) end
      when 20121.click begin PetSystem.ShowMenu(1) end
      when 20122.click begin PetSystem.ShowMenu(1) end
      when 20123.click begin PetSystem.ShowMenu(2) end
      when 20124.click begin PetSystem.ShowMenu(2) end
      when 20125.click begin PetSystem.ShowMenu(2) end
      when 20126.click begin PetSystem.ShowMenu(3) end
      when 20127.click begin PetSystem.ShowMenu(3) end
      when 20128.click begin PetSystem.ShowMenu(3) end
      when 20129.click begin PetSystem.ShowMenu(4) end
      when 20130.click begin PetSystem.ShowMenu(4) end
      when 20131.click begin PetSystem.ShowMenu(4) end
      when 20132.click begin PetSystem.ShowMenu(5) end
      when 20133.click begin PetSystem.ShowMenu(5) end
      when 20134.click begin PetSystem.ShowMenu(5) end
      when 20135.click begin PetSystem.ShowMenu(6) end
      when 20136.click begin PetSystem.ShowMenu(6) end
      when 20137.click begin PetSystem.ShowMenu(6) end
      when 20138.click begin PetSystem.ShowMenu(7) end
      when 20139.click begin PetSystem.ShowMenu(7) end
      when 20140.click begin PetSystem.ShowMenu(7) end
      when 20141.click begin PetSystem.ShowMenu(8) end
      when 20142.click begin PetSystem.ShowMenu(8) end
      when 20143.click begin PetSystem.ShowMenu(8) end
    end
    end
    
    



    PROBLEM:

    SYSERR: Jun  3 19:11:07 :: SpawnMob: SpawnMob: no mob data for vnum 0
    SYSERR: Jun  3 19:11:07 :: Summon: [CPetSystem::Summon] Failed to summon the pet. (vnum: 0)
    

    -

    So this system works on game 2089, but it does not work on 34k or 40k.
    I open with notepdat++ game 2089 and searched "pet or Pet" but I found nothing, instead on game 34k or 40k I found.

    My question is: why on game 2089 does not exist pet system and this works? and on 34k or 40k not work ...

     

    I found this in PetSystem.cpp:

    	m_pkChar = CHARACTER_MANAGER::instance().SpawnMob(
    				m_dwVnum, 
    				m_pkOwner->GetMapIndex(), 
    				x, y, z,
    				false, (int)(m_pkOwner->GetRotation()+180), false);
    
    	if (0 == m_pkChar)
    	{
    		sys_err("[CPetSystem::Summon] Failed to summon the pet. (vnum: %d)", m_dwVnum);
    		return 0;
    	}
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.