Jump to content

[D]ELARO ✓

Miembro
  • Contador contenido

    393
  • Ingreso

  • Última visita

  • Días ganados

    29

Mensajes publicados por [D]ELARO ✓

  1. no es lo mismo lo que estas moviendo, el especular normalmente esta en 100 y solo hace que las armas tengan por decirlo asi un "reflejo" y el que da el brillo o efecto a armas y armaduras es de 1 que da el +7, 2 que da el +8 y 3 que da el +9, normalmente las armas ya altas tienen todos un 3.

    otra cosa a añadir es que no tiene efecto directamente desde mysql los brillos ya eso va en el cliente directo desde item_proto

     

  2. Buenas gente ya hace un tiempo no comparto nada, mientras trabajaba una base totalmente limpia me puse a la tarea de buscar el give basic weapon por source pero lamentablemente no lo encontré en ni un lado así que me di a la tarea de extraerlo de mi servidor e implementarlo a la base nueva, a mi me funciono sin ningún tipo de problema así que sera lo mismo para ustedes si siguen correctamente los pasos.

    DE QUE VA EL GIVE BASIC WEAPON POR SOURSE? DE AL INICIAR UN PJ NUEVO SE TE DA TU ARMA, ARMADURA Y ACCESORIOS YA PUESTOS Y CON BONUS YA AÑADIDOS,

    ADEMAS ES PARA TODAS LAS RAZAS INCLUYENDO AL LICANO.

    ESTE ES EL CÓDIGO SOURCE PARA EL SERVIDOR, PUEDEN MODIFICAR LOS BONUS QUE APARECERAN EN CADA ACCESORIO A SU GUSTO, AHORA SOLO SIGAN LAS INSTRUCCIONES.

    //service.h añadir
    
    #define ENABLE_GIVE_BASIC_WEAPON
    
    //char.cpp buscar void CHARACTER::SetEmpire(BYTE bEmpire) y pegar antes:
    
    #ifdef ENABLE_GIVE_BASIC_WEAPON
    void CHARACTER::addbonus(LPCHARACTER ch)
    {
    	BYTE job = ch->GetJob();
    	LPITEM item;
    
    
    	switch (job)
    	{
    	case JOB_WARRIOR:
    	case JOB_ASSASSIN:
    	case JOB_SURA:
    	case JOB_SHAMAN:
    	case JOB_WOLFMAN:
    		{
    			//  -- bonus de casco
    			item = ch->GetWear(WEAR_HEAD);
    			if (item != NULL)
    			{
    				item->ClearAttribute();
    				item->SetForceAttribute( 0, APPLY_ATTBONUS_UNDEAD, 20);
    				item->SetForceAttribute( 1, APPLY_ATTBONUS_ANIMAL, 20);
    				item->SetForceAttribute( 2, APPLY_ATTBONUS_ORC, 20);
    				item->SetForceAttribute( 3, APPLY_ATTBONUS_MILGYO, 20);
    				item->SetForceAttribute( 4, APPLY_ATTBONUS_DEVIL, 20);
    			}
    			// -- bonus de arma
    			item = ch->GetWear(WEAR_WEAPON);
    			if (item != NULL)
    			{
    				item->ClearAttribute();
    				item->SetForceAttribute( 0, APPLY_STR, 12);
    				item->SetForceAttribute( 1, APPLY_CRITICAL_PCT, 10);
    				item->SetForceAttribute( 2, APPLY_ATTBONUS_UNDEAD, 20);
    				item->SetForceAttribute( 3, APPLY_ATTBONUS_ANIMAL, 20);
    				item->SetForceAttribute( 4, APPLY_ATTBONUS_ORC, 20);
    			}
    			// -- bonus de escudo
    			item = ch->GetWear(WEAR_SHIELD);
    			if (item != NULL)
    			{
    				item->ClearAttribute();
    				item->SetForceAttribute( 0, APPLY_STR, 12);
    				item->SetForceAttribute( 1, APPLY_IMMUNE_STUN, 1);
    				item->SetForceAttribute( 2, APPLY_BLOCK, 15);
    				item->SetForceAttribute( 3, APPLY_GOLD_DOUBLE_BONUS, 20);
    				item->SetForceAttribute( 4, APPLY_EXP_DOUBLE_BONUS, 20);
    			}
    			//  -- bonus de armadura
    			item = ch->GetWear(WEAR_BODY);
    			if (item != NULL)
    			{
    				item->ClearAttribute();
    				item->SetForceAttribute( 0, APPLY_MAX_HP, 2000);
    				item->SetForceAttribute( 1, APPLY_RESIST_BOW, 15);
    				item->SetForceAttribute( 2, APPLY_RESIST_FIRE, 15);
    				item->SetForceAttribute( 3, APPLY_RESIST_MAGIC, 15);
    				item->SetForceAttribute( 4, APPLY_ATT_GRADE_BONUS, 50);
    			}
    			//  -- bonus de zapato
    			item = ch->GetWear(WEAR_FOOTS);
    			if (item != NULL)
    			{
    				item->ClearAttribute();
    				item->SetForceAttribute( 0, APPLY_MAX_HP, 2000);
    				item->SetForceAttribute( 1, APPLY_CRITICAL_PCT, 10);
    				item->SetForceAttribute( 2, APPLY_GOLD_DOUBLE_BONUS, 20);
    				item->SetForceAttribute( 3, APPLY_EXP_DOUBLE_BONUS, 20);
    				item->SetForceAttribute( 4, APPLY_RESIST_BOW, 15);
    			}
    			//  -- bonus de brazalete
    			item = ch->GetWear(WEAR_WRIST);
    			if (item != NULL)
    			{
    				item->ClearAttribute();
    				item->SetForceAttribute( 0, APPLY_MAX_HP, 2000);
    				item->SetForceAttribute( 1, APPLY_PENETRATE_PCT, 10);
    				item->SetForceAttribute( 2, APPLY_ITEM_DROP_BONUS, 20);
    				item->SetForceAttribute( 3, APPLY_ATTBONUS_ORC, 20);
    				item->SetForceAttribute( 4, APPLY_RESIST_MAGIC, 15);
    			}
    			//  -- bonus de collar
    			item = ch->GetWear(WEAR_NECK);
    			if (item != NULL)
    			{
    				item->ClearAttribute();
    				item->SetForceAttribute( 0, APPLY_MAX_HP, 2000);
    				item->SetForceAttribute( 1, APPLY_CRITICAL_PCT, 10);
    				item->SetForceAttribute( 2, APPLY_GOLD_DOUBLE_BONUS, 20);
    				item->SetForceAttribute( 3, APPLY_EXP_DOUBLE_BONUS, 20);
    				item->SetForceAttribute( 4, APPLY_RESIST_BOW, 15);
    			}
    			//  -- bonus de pendiente
    			item = ch->GetWear(WEAR_EAR);
    			if (item != NULL)
    			{
    				item->ClearAttribute();
    				item->SetForceAttribute( 0, APPLY_ATTBONUS_UNDEAD, 20);
    				item->SetForceAttribute( 1, APPLY_ATTBONUS_ORC, 20);
    				item->SetForceAttribute( 2, APPLY_ATTBONUS_ANIMAL, 20);
    				item->SetForceAttribute( 3, APPLY_RESIST_BOW, 15);
    				item->SetForceAttribute( 4, APPLY_ITEM_DROP_BONUS, 20);
    			}
    		}
    		break;
    	}
    	ch->ComputePoints();
    	ch->PointChange(POINT_HP, ch->GetMaxHP() - ch->GetHP());
    	ch->PointChange(POINT_SP, ch->GetMaxSP() - ch->GetSP());
    	ch->Save();
    }
    
    void CHARACTER::additems(LPCHARACTER ch)
    {
    	BYTE job = ch->GetJob();
    	LPITEM item;
    	for (int i = 0; i < 6; i++)
    	{
    		item = ch->GetWear(i);
    		if (item != NULL)
    			ch->UnequipItem(item);
    	}
    	item = ch->GetWear(WEAR_SHIELD);
    	if (item != NULL)
    		ch->UnequipItem(item);
    
    	switch (job)
    	{
    	//sura
    	case JOB_SURA:
    		{
    	  
    			item = ITEM_MANAGER::instance().CreateItem(19 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(11609 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(12489 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(13009);
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(14009 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(15009 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(16009 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(17009 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    		}
    		break;
    		//guerrero
    	case JOB_WARRIOR:
    		{
    	  
    			item = ITEM_MANAGER::instance().CreateItem(19 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(11209 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(12209 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(13009 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(14009 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(15009 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(16009 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(17009 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    		}
    		break;
    		//chaman
    	case JOB_SHAMAN:
    		{
    	  
    			item = ITEM_MANAGER::instance().CreateItem(7009 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(11809 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(12629 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(13009 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(14009 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(15009 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(16009 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(17009 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    		}
    		break;
    		//ninja
    	case JOB_ASSASSIN:
    		{
    			item = ITEM_MANAGER::instance().CreateItem(19 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(11409 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(12349 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(13009 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(14009 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(15009 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(16009 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(17009 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    		}
    		break;
    		//licano
    	case JOB_WOLFMAN:
    		{
    			item = ITEM_MANAGER::instance().CreateItem(6009);
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(21009);
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(21509 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(13009 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(14009 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(15009 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(16009 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    			item = ITEM_MANAGER::instance().CreateItem(17009 );
    			if (!item || !item->EquipTo(ch, item->FindEquipCell(ch)))
    				M2_DESTROY_ITEM(item);
    		}
    		break;	
    	}
    }
    #endif
    
    //char.h buscar BYTE GetGMLevel() const; y pegar antes de esa linea entre void SetLevel(BYTE level);
    
    #ifdef ENABLE_GIVE_BASIC_WEAPON
    		void			addbonus(LPCHARACTER ch);
    		void			additems(LPCHARACTER ch);
    #endif
    
    //questlua_pc.cpp buscar esta casi al inicio y pegar despues de:
    
    namespace quest
    {
    	//
    	// "pc" Lua functions
    	//
    
    #ifdef ENABLE_GIVE_BASIC_WEAPON
    	int pc_addbonus(lua_State* L)
    	{
    		LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
    		if(ch)
    			ch->addbonus(ch);
    		return 0;
    	}
    	int pc_additems(lua_State* L)
    	{
    		LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
    		if(ch)
    			ch->additems(ch);
    		return 0;
    	}
    #endif	
    
    // y buscar { NULL,			NULL			} y pegar antes
    
    #ifdef ENABLE_GIVE_BASIC_WEAPON
    			{"addbonus",			pc_addbonus		},
    			{"additems",			pc_additems		},
    #endif

    ESTE ES LA QUEST NECESARIA PARA QUE FUNCIONE CORRECTAMENTE, NO CREO NECESARIO ENSEÑARLES A METER UNA QUEST SI ES ASÍ OLVIDA LO DE METER EL SOURCE XD

    quest give_basic_weapon begin
    	state start begin
    		when login with pc.getqf("login_weapon") == 0 begin
    		function character()
    			local character = {'Warrior ','Ninja ','Sura ','Shaman ','Lycan '}
    			return character[pc.get_job()+1]
    		end	
    		function empire_list()
    			local empire_list = {'Shinsoo','Chunjo','Jinno'}
    			return empire_list[pc.get_empire()]
    		end	
    		function gender()
    			local gender = {'male','female'}
    			return gender[pc.get_sex()+1]
    		end
    		pc.change_gold(500000) --Yang que regalas al inicio
    		say("")
    		say("")
    		say("")
    		say("")
    		say_item_vnum(50187) --Con esto solo te dice la quest que recibiste cofre de aprendiz
    		pc.give_item2("50187",1) --Cofre de Aprendiz Lv1
    		pc . additems( )
    		pc . addbonus( )
    		horse.advance()
    		horse.advance()
    		horse.advance()
    		horse.advance()
    		horse.advance()
    		horse.advance()
    		horse.advance()
    		horse.advance()
    		horse.advance()
    		horse.advance()
    		horse.advance()
    		horse.advance()
    		horse.advance()
    		horse.advance()
    		horse.advance()
    		horse.advance()
    		horse.advance()
    		horse.advance()
    		horse.advance()
    		horse.advance()
    		horse.advance()
    		horse.advance()
    		horse.advance()
    		horse.advance()
    		horse.advance()
    		horse.advance()
    		horse.advance()
    		horse.advance()
    		horse.advance()
    		horse.summon()
    		horse.ride()
    		notice_all(pc.get_name().." es un nuevo jugador en KraizySama!")
    		set_state(__COMPLETE__)
    		end
    	end	
    	
    	state __COMPLETE__ begin
    	end
    end

    Agregar las funciones nuevas en quest_funtions en tu carpeta quest de tus files.

    character
    empire_list
    gender
    pc.addbonus
    pc.additems

    BUENO LO DE EL BAÚL DE APRENDIZ (50187) USTEDES AGREGUEN LAS COSAS QUE QUIERAN A SU GUSTO MODIFICANDO O AÑADIENDO EN SPECIAL_ITEM_GROUP.TXT EN SU SHARE/LOCALE/GERMANY O LO QUE TENGAN DE SU SERVIDOR.

    PRUEBAS DE QUE VA CORRECTAMENTE, DE IGUAL MANERA SIEMPRE HAGAN BACKUP CUANDO SE TRATA DE MODIFICAR SOURCE :v

    1234

     

    BUENO ESO ES TODO ESPERO LES SIRVA, SI LO COMPARTEN EN OTROS FOROS MÍNIMO DEJEN EL CREDITO EL ALEJANDO2020 COF* COF* XD OK ES TODO, INTENTARE AYUDAR SI OBTIENEN PROBLEMAS, PERO NO TENDRÍAN NINGUNO YO MISMO SEGUÍ MI PROPIA GUÍA Y ME FUE PERFECTO AL PRIMER INTENTO YA QUE NO ES NADA COMPLICADO.

    FELIZ NAVIDAD ATRASADA Y FELIZ AÑO NUEVO PRROS!

    FELIZ NAVIDAD 2021 :v y Tema Actualizado.

×
×
  • Crear nuevo...