Jump to content
Sign in to follow this  
Joseh Delaro

Give Basic Weapon por Source

Recommended Posts

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.

ESTE ES EL CÓDIGO SOURCE PARA EL SERVIDOR, PUEDEN MODIFICAR LOS BONUS QUE APARECERAN EN CADA ACCESORIO A SU GUSTO, ADVERTENCIA! DEBEN CHECAR QUE LOS TABS ESTÉN BIEN HECHOS POR SI LES SALTA ERROR AL COMPILAR GAME, AHORA SOLO SIGAN LAS INSTRUCCIONES.

Quote
//service.h añadir

#define ENABLE_EQUIPO_INICIO

//char.cpp buscar void CHARACTER::SetEmpire(BYTE bEmpire) y pegar antes:

#ifdef ENABLE_EQUIPO_INICIO
void CHARACTER::efsunver(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_MILGYO, 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_ATTBONUS_ORC, 20);
                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_BLOCK, 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::itemver(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 entre void			SetLevel(BYTE level);

#ifdef ENABLE_EQUIPO_INICIO		
		void            efsunver(LPCHARACTER ch);
		void            itemver(LPCHARACTER ch);
#endif

//questlua_pc.cpp buscar esta casi al inicio y pegar despues de:
	//
	// "pc" Lua functions
	//


#ifdef ENABLE_EQUIPO_INICIO
	int pc_efsunver(lua_State* L)
    {
        LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
        if(ch)
            ch->efsunver(ch);
        return 0;
    }
	int pc_itemver(lua_State* L)
    {
        LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
        if(ch)
            ch->itemver(ch);
        return 0;
    }
#endif	

// y buscar { NULL,			NULL			} y pegar antes

#ifdef ENABLE_EQUIPO_INICIO
			{"efsunver",            pc_efsunver        },
			{"itemver",            pc_itemver        },
#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

Quote
quest give_basic_weapon begin
	state start begin
		when login with pc.getqf("login_weapon") == 0 begin
		function karakter()
			local karakter = {'Guerrero ','Ninja ','Sura ','Chaman ','Lycan '}
			return karakter[pc.get_job()+1]
		end	
		function bayrak_liste()
			local bayrak_liste = {'Shinsoo','Chunjo','Jinno'}
			return bayrak_liste[pc.get_empire()]
		end	
		function cinsiyet()
			local cinsiyet = {'masculino','femenino'}
			return cinsiyet[pc.get_sex()+1]
		end
		pc.change_gold(500000)
		say("")
		say("")
		say("")
		say("")
		say_item_vnum(50187)
		pc.give_item2("50187",1)
		pc . itemver( )
		pc . efsunver( )
		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.advance()
		horse.summon()
		horse.ride()
		notice_all(pc.get_name().." se ha unido al servidor y el nombre de tu servidor :v!")
		set_state(__COMPLETE__)
		end
	end	
	
	state __COMPLETE__ begin
	end
end

 

 

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 LOCALE XX 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!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...