void UAREquipmentComponent::ChangeItem(FARDragDropInfo ItemIn, int32 OldItemSlotID)
{
	bool itemRemoved = false;
	if (GetOwnerRole() < ROLE_Authority)
	{
		ServerChangeItem(ItemIn, OldItemSlotID);
	}
	else
	{
		//check if there is something in that particular slot
		for (AARItem* eqItem : EquippedItems)
		{
			if (eqItem->ItemSlotEquipped == ItemIn.ItemSlot)
			{
				FARDragDropInfo tempItem;
				tempItem.ItemKey = eqItem->ItemID;
				tempItem.ItemSlot = eqItem->ItemSlotEquipped;
				//if there is, Unequip it. Before we proceed.
				UnEquipItem(ItemIn);
				itemRemoved = Inventory->RemoveItemFromInventory(ItemIn.ItemKey, ItemIn.SlotIndex);
				Inventory->AddItemToInventoryOnSlot(tempItem, OldItemSlotID);
			}
		}
		switch (ItemIn.DragDropSlot)
		{
		case EDragDropSlot::Chest:
		{
			if (ChangeChestItem(ItemIn))
			{
				if (!itemRemoved)
				{
					Inventory->RemoveItemFromInventory(ItemIn.ItemKey, ItemIn.SlotIndex);
					break;
				}
			}
			break;
		}
		case EDragDropSlot::LeftHand:
		{
			AddWeapon(ItemIn, OldItemSlotID, 0);
		}
		case EDragDropSlot::RightHand:
		{
			AddWeapon(ItemIn, OldItemSlotID, 1);
		}
		default:
			break;
		}
	}
}
void FPSPlayerComponent::_PickUpWeapon(dt::PhysicsBodyComponent* object) {
    Weapon* weapon = dynamic_cast<Weapon*>(object->GetNode());

    if(weapon != nullptr) {
        AddWeapon(weapon);
    }
}
示例#3
0
void AShooterCharacter::SpawnDefaultInventory()
{
	if (Role < ROLE_Authority)
	{
		return;
	}

	int32 NumWeaponClasses = DefaultInventoryClasses.Num();
	for (int32 i = 0; i < NumWeaponClasses; i++)
	{
		if (DefaultInventoryClasses[i])
		{
			FActorSpawnParameters SpawnInfo;
			SpawnInfo.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
			AWeapon* NewWeapon = GetWorld()->SpawnActor<AWeapon>(DefaultInventoryClasses[i], SpawnInfo);
			AddWeapon(NewWeapon);
		}
	}

	// equip first weapon in inventory
	if (Inventory.Num() > 0)
	{
		EquipWeapon(Inventory[0]);
	}
}
示例#4
0
void WeaponsMenu::RefreshWeaponList()
{
  // reset number of weapon
  for (int i = 0; i < MAX_NUMBER_OF_WEAPON; i++)
    nb_weapon_type[i] = 0;
  weapons_menu->ResetTransformation();
  tools_menu->ResetTransformation();
  // Refreshing Weapons menu

  const std::vector<PolygonItem *>& weapons = weapons_menu->GetItem();
  std::vector<PolygonItem *>::const_iterator item = weapons.begin();
  for (; item != weapons.end(); item++) {
    delete (*item);
  }
  weapons_menu->ClearItem(false);

  // Tools menu
  const std::vector<PolygonItem *>& tools = tools_menu->GetItem();
  item = tools.begin();
  for (; item != tools.end(); item++) {
    delete (*item);
  }
  tools_menu->ClearItem(false);
  // Reinserting weapon
  WeaponsList * weapons_list = Game::GetInstance()->GetWeaponsList();
  for (WeaponsList::iterator it=weapons_list->GetList().begin();
       it != weapons_list->GetList().end();
       ++it)
    AddWeapon(*it);
}
void AAmethystCharacter::SpawnDefaultInventory()
{
	if (Role < ROLE_Authority)
	{
		return;
	}
	
		// @hack to remove rocket launcher
		int32 NumWeaponClasses = DefaultInventoryClasses.Num();	
		for (int32 i = 0; i < NumWeaponClasses; i++)
		{
			if (DefaultInventoryClasses[i])
			{
				FActorSpawnParameters SpawnInfo;
				SpawnInfo.bNoCollisionFail = true;
				AAmethystWeapon* NewWeapon = GetWorld()->SpawnActor<AAmethystWeapon>(DefaultInventoryClasses[i], SpawnInfo);
				AddWeapon(NewWeapon);

			}
		}
	
	// equip first weapon in inventory
	if (Inventory.Num() > 0)
	{
		EquipWeapon(Inventory[0]);
	}
}
//=========================================================
//=========================================================
int CSatchel::AddToPlayer(CBasePlayer *pPlayer)
{
	int bResult = CBasePlayerItem::AddToPlayer(pPlayer);

	pPlayer->pev->weapons |= (1 << m_iId);
	m_chargeReady = 0;// this satchel charge weapon now forgets that any satchels are deployed by it.

	if (bResult) return AddWeapon();
	return FALSE;
}
void Player::ResetWeaponMounts()
{
    //now reset each mount
    u32 weapons = 0;
	m_WeaponSlots = 0;
	u32 i;

	for(i=0;i<(u32)WeaponTable[ClassIndex() * 7];i++) 
	{
        AddWeapon(i+1);
	}

	for (i = 1; i <= PlayerIndex()->RPGInfo.GetHullUpgradeLevel(); i++)
	{
		if (WeaponTable[ClassIndex() * 7 + i] != 0)
		{
			AddWeapon(m_WeaponSlots + 1);
		}
	}
}
示例#8
0
static void LoadWeapons(CArray *weapons, json_t *weaponsNode)
{
	if (!weaponsNode->child)
	{
		// enable all weapons
		AddWeapon(weapons, &gGunDescriptions.Guns);
		AddWeapon(weapons, &gGunDescriptions.CustomGuns);
	}
	else
	{
		for (json_t *child = weaponsNode->child; child; child = child->next)
		{
			const GunDescription *g = StrGunDescription(child->text);
			if (g == NULL)
			{
				continue;
			}
			CArrayPushBack(weapons, &g);
		}
	}
}
void CMissionData::ReadFromMessage(ILTCSBase *pInterface, HMESSAGEREAD hMessage)
{
	if (!hMessage) return;

	// Clear our data...

	Clear();

	// Read in the new data...

    m_nMission = (int) pInterface->ReadFromMessageFloat(hMessage);
    m_nLevel   = (int) pInterface->ReadFromMessageFloat(hMessage);

    int nSize = (int) pInterface->ReadFromMessageDWord(hMessage);

    int i;
	CWeaponData Weapon;
    for (i = 0; i < nSize; i++)
	{
        Weapon.ReadFromMessage(pInterface, hMessage);
		AddWeapon(Weapon.m_nID);
	}

    nSize = (int) pInterface->ReadFromMessageDWord(hMessage);

	CAmmoData Ammo;
	for (i = 0; i < nSize; i++)
	{
        Ammo.ReadFromMessage(pInterface, hMessage);
		AddAmmo(Ammo.m_nID, Ammo.m_nCount);
	}

    nSize = (int) pInterface->ReadFromMessageDWord(hMessage);

	CModData Mod;
	for (i = 0; i < nSize; i++)
	{
        Mod.ReadFromMessage(pInterface, hMessage);
		AddMod(Mod.m_nID);
	}

    nSize = (int) pInterface->ReadFromMessageDWord(hMessage);

	CGearData Gear;
	for (i = 0; i < nSize; i++)
	{
        Gear.ReadFromMessage(pInterface, hMessage);
		AddGear(Gear.m_nID);
	}
}
示例#10
0
//-----------------------------------------------------------------------------
// Purpose: Collect any weapons inside our volume
// Input  : *pOther - 
//-----------------------------------------------------------------------------
void CTriggerWeaponDissolve::StartTouch( CBaseEntity *pOther )
{
	BaseClass::StartTouch( pOther );

	if ( PassesTriggerFilters( pOther ) == false )
		return;

	CBaseCombatWeapon *pWeapon = dynamic_cast<CBaseCombatWeapon *>(pOther);

	if ( pWeapon == NULL )
		return;

	AddWeapon( pWeapon );
}
示例#11
0
Weapon* CreateWeapon(char* weaponName, char* weaponTexture, int weaponType, int weaponRarity, int collisionGroup, float width, float height)
{
	Weapon *CurrentWeapon = AddWeapon();
	Vec3 TextTint;
	int nameLen, statsLen;
	Vec3Set(&TextTint, 0, 0, 0);
	CurrentWeapon->WeaponFOF = PlayerWeapon; // Friend or Foe tag
	CurrentWeapon->objID = GetObjectID();
	CurrentWeapon->WeaponRarity = weaponRarity;
	CurrentWeapon->WeaponType = weaponType;
	CurrentWeapon->WeaponName = (char *) CallocMyAlloc(MAX_NAME_LENGTH, sizeof(char));
	CurrentWeapon->WeaponStatsString = (char *) CallocMyAlloc(MAX_NAME_LENGTH, sizeof(char));
	
	SetWeaponStats(CurrentWeapon, 0, 0, 0);
	if(CurrentWeapon->WeaponName)
		strcpy(CurrentWeapon->WeaponName, weaponName);
	else
		CurrentWeapon->WeaponName = "Error: Memory Allocation Failed!";

	CurrentWeapon->WeaponGlyphs = CreateText(CurrentWeapon->WeaponName, CurrentWeapon->WeaponPickup.Position.x, CurrentWeapon->WeaponPickup.Position.y + CurrentWeapon->WeaponPickup.height * 1.5f + 25, 50, TextTint, Center, Plain);
	CreateStatsString(CurrentWeapon->WeaponStatsString, CurrentWeapon->BonusStrength, CurrentWeapon->BonusAgility, CurrentWeapon->BonusDefense);
	CurrentWeapon->WeaponStatsGlyphs = CreateText(CurrentWeapon->WeaponStatsString, CurrentWeapon->WeaponPickup.Position.x, (CurrentWeapon->WeaponPickup.Position.y + CurrentWeapon->WeaponPickup.height * 1.5f - 25), 50, TextTint, Center, Plain);
	
	ChangeTextZIndex(CurrentWeapon->WeaponGlyphs, 451);
	ChangeTextZIndex(CurrentWeapon->WeaponStatsGlyphs, 451);

	CurrentWeapon->WeaponSprite = (Sprite *) CreateSprite(weaponTexture, 256, 256, 22, 1, 1, 0, 0);
	CreateCollisionBox(&CurrentWeapon->WeaponPickup, &CurrentWeapon->Position, WeaponDrop, width / 2, height, CurrentWeapon->objID);
	CreateCollisionBox(&CurrentWeapon->WeaponAttack, &CurrentWeapon->Position, collisionGroup, height / 4, height / 4, CurrentWeapon->objID);
	CurrentWeapon->WeaponLength = 80.0f;

	nameLen = strlen(CurrentWeapon->WeaponName);
	statsLen = strlen(CurrentWeapon->WeaponStatsString);
	if(nameLen >= statsLen)
	{
		CurrentWeapon->WeaponHoverBackground = (Sprite *) CreateSprite("TextureFiles/WeaponHoverBackground.png", nameLen * 25.0f, 180, 450, 1, 1, CurrentWeapon->WeaponPickup.Position.x, (CurrentWeapon->WeaponPickup.Position.y + CurrentWeapon->WeaponPickup.height * 1.5f - 2 * CurrentWeapon->WeaponGlyphs->Glyph->Height));
	}
	else
	{
		CurrentWeapon->WeaponHoverBackground = (Sprite *) CreateSprite("TextureFiles/WeaponHoverBackground.png", statsLen * 25.0f, 180, 450, 1, 1, CurrentWeapon->WeaponPickup.Position.x, (CurrentWeapon->WeaponPickup.Position.y + CurrentWeapon->WeaponPickup.height * 1.5f - 2 * CurrentWeapon->WeaponGlyphs->Glyph->Height));
	}
	CurrentWeapon->WeaponHoverBackground->Visible = FALSE;

	//Start off shopless
	CurrentWeapon->CurrentShop = NULL;
	CurrentWeapon->WeaponFalling = FALSE;

	return CurrentWeapon;
}
示例#12
0
void FWeaponSlot :: AddWeaponList(const char *list, bool clear)
{
	FString copy(list);
	char *buff = copy.LockBuffer();
	char *tok;

	if (clear)
	{
		Clear();
	}
	tok = strtok(buff, " ");
	while (tok != NULL)
	{
		AddWeapon(tok);
		tok = strtok(NULL, " ");
	}
}
示例#13
0
int CBasePlayerWeapon::AddToPlayer( CBasePlayer *pPlayer )
{
	int bResult = CBasePlayerItem::AddToPlayer( pPlayer );

	pPlayer->pev->weapons |= (1<<m_iId);

	if ( !m_iPrimaryAmmoType )
	{
		m_iPrimaryAmmoType = pPlayer->GetAmmoIndex( pszAmmo1() );
		m_iSecondaryAmmoType = pPlayer->GetAmmoIndex( pszAmmo2() );
	}


	if (bResult)
		return AddWeapon( );
	return FALSE;
}
void ASCharacter::SpawnDefaultInventory()
{
	if (Role < ROLE_Authority)
	{	
		return;
	}

	for (int32 i = 0; i < DefaultInventoryClasses.Num(); i++)
	{
		if (DefaultInventoryClasses[i])
		{
			FActorSpawnParameters SpawnInfo;
			SpawnInfo.bNoCollisionFail = true;
			ASWeapon* NewWeapon = GetWorld()->SpawnActor<ASWeapon>(DefaultInventoryClasses[i], SpawnInfo);

			AddWeapon(NewWeapon);
		}
	}
}
示例#15
0
void ALonelyMenCharacter::SpawnDefaultInventory()
{
	int32 InventoryCount = this->DefaultInventoryClasses.Num();
	for (int32 i = 0; i < InventoryCount;i++)
	{
		if (DefaultInventoryClasses[i])
		{
			FActorSpawnParameters SpawnInfo;
			SpawnInfo.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AdjustIfPossibleButDontSpawnIfColliding;
			ALMWeapon* NewWeapon = GetWorld()->SpawnActor<ALMWeapon>(DefaultInventoryClasses[i], SpawnInfo);
			AddWeapon(NewWeapon);
		}
	}

	if (Inventory.Num()>0)
	{
		EquipWeapon(Inventory[0]);
	}
}
示例#16
0
void AWeapon::AttachToOwner (AActor *other)
{
	Super::AttachToOwner (other);

	Ammo1 = AddAmmo (Owner, AmmoType1, AmmoGive1);
	Ammo2 = AddAmmo (Owner, AmmoType2, AmmoGive2);
	SisterWeapon = AddWeapon (SisterWeaponType);
	if (Owner->player != NULL)
	{
		if (!Owner->player->userinfo.GetNeverSwitch() && !(WeaponFlags & WIF_NO_AUTO_SWITCH))
		{
			Owner->player->PendingWeapon = this;
		}
		if (Owner->player->mo == players[consoleplayer].camera)
		{
			StatusBar->ReceivedWeapon (this);
		}
	}
	GivenAsMorphWeapon = false; // will be set explicitly by morphing code
}
示例#17
0
void ANimModCharacter::SpawnDefaultInventory()
{
	if (Role < ROLE_Authority)
	{
		return;
	}

	//Initialize the empty array of our inventory.
	int32 maxFlatInventoryCount = 10 * MAX_SLOTS_PER_INVENTORY_SLOT;
	for (int32 i = 0; i < maxFlatInventoryCount; ++i)
		Inventory.Add(nullptr);

	int32 NumWeaponClasses = DefaultInventoryClasses.Num();
	for (int32 i = 0; i < NumWeaponClasses; i++)
	{
		if (DefaultInventoryClasses[i])
		{
			FActorSpawnParameters SpawnInfo;
			SpawnInfo.bNoCollisionFail = true;
			ANimModWeapon* NewWeapon = GetWorld()->SpawnActor<ANimModWeapon>(DefaultInventoryClasses[i], SpawnInfo);
			AddWeapon(NewWeapon);
		}
	}


	for (auto *weapon : Inventory)
	{
		if (weapon != nullptr)
		{
			EquipWeapon(weapon);
			break;
		}
	}
	// equip first weapon in inventory
	/*if (Inventory.Num() > 0)
	{
		if (Inventory[0].Num() > 0)
			EquipWeapon(Inventory[0][0]);
	}*/
}
示例#18
0
int CBasePlayerWeapon::AddToPlayer( CBasePlayer *pPlayer )
{
	if (!UTIL_IsMasterTriggered(m_sMaster, pPlayer))		//
		return FALSE;										// AJH allows for locked weapons

	int bResult = CBasePlayerItem::AddToPlayer( pPlayer );

	pPlayer->pev->weapons |= (1<<m_iId);

	if ( !m_iPrimaryAmmoType )
	{
		m_iPrimaryAmmoType = pPlayer->GetAmmoIndex( pszAmmo1() );
		m_iSecondaryAmmoType = pPlayer->GetAmmoIndex( pszAmmo2() );
	}


	if (bResult)
	{
		return AddWeapon( );
	}
	return FALSE;
}
示例#19
0
bool FWeaponSlot::AddWeapon(const char *type)
{
	return AddWeapon(static_cast<PClassWeapon *>(PClass::FindClass(type)));
}
void UAREquipmentComponent::ServerAddWeapon_Implementation(FARDragDropInfo Weapon, int32 SlotID, int32 Hand)
{
	AddWeapon(Weapon, SlotID, Hand);
}
示例#21
0
bool CBotWeapons::Update(bool bOverrideAllFromEngine)
{
	// create mask of weapons data
	short int i = 0;
	unsigned short int iWeaponsSignature = 0x0; // check sum of weapons
	edict_t *pWeapon;
	CBaseHandle *m_Weapons = CClassInterface::GetWeaponList(m_pBot->GetEdict());
	CBaseHandle *m_Weapon_iter;

	m_Weapon_iter = m_Weapons;

	for (i = 0; i < MAX_WEAPONS; i++)
	{
		// create a 'hash' of current weapons
		pWeapon = (m_Weapon_iter == NULL) ? NULL : INDEXENT(m_Weapon_iter->GetEntryIndex());
		iWeaponsSignature += ((unsigned int)pWeapon) + ((pWeapon == NULL) ? 0 : (unsigned int)CClassInterface::GetWeaponState(pWeapon));
		m_Weapon_iter++;
	}

	// if weapons have changed this will be different
	if (iWeaponsSignature != m_iWeaponsSignature) // m_fUpdateWeaponsTime < engine->Time() )
	{
		this->ClearWeapons();

		int iWeaponState;
		register unsigned short int i;
		bool bFound;

		const char *pszClassname;

		CBaseHandle *m_Weapons = CClassInterface::GetWeaponList(m_pBot->GetEdict());
		CBotWeapon *m_BotWeapon_iter = m_theWeapons;

		// loop through the weapons array and see if it is in the CBaseCombatCharacter
		for (i = 0; i < MAX_WEAPONS; i++)
		{
			m_Weapon_iter = &m_Weapons[i];
			iWeaponState = 0;
			bFound = false;

			pWeapon = INDEXENT(m_Weapon_iter->GetEntryIndex());

			if (!pWeapon || pWeapon->IsFree())
			{
				continue;
			}

			iWeaponState = CClassInterface::GetWeaponState(pWeapon);

			pszClassname = pWeapon->GetClassName();

			CWeapon *pWeaponInfo = CWeapons::GetWeapon(pszClassname);

			if (pWeaponInfo != NULL)
			{
				if (iWeaponState != WEAPON_NOT_CARRIED)
				{
					CBotWeapon *pAdded = AddWeapon(pWeaponInfo, i, pWeapon, bOverrideAllFromEngine);
					pAdded->SetHasWeapon(true);
				}
			}
		}

		// check again in 1 second
		m_fUpdateWeaponsTime = engine->Time() + 1.0f;

		m_iWeaponsSignature = iWeaponsSignature;

		return true; // change
	}

	return false;
}
示例#22
0
bool FWeaponSlot::AddWeapon(const char *type)
{
	return AddWeapon (PClass::FindClass (type));
}
示例#23
0
void WeaponInit()
{
	int i;
	for (i = 0; i <= 0xff; i++){
		AddWeapon(i, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3); //3 to make unbuyable by default
	}
	/*
	 * id, name, wpndmg, wpndmg_z1, wpndmg_z2, freq, speed, slot, price, range, accuracy, ammo1, ammo2, reloadtime, special, team
	 *
	 * str = ""
	 * fmt = "AddWeapon(%s, "%s", %s, %s, %s, %s, 1, %s, %s, %s, %s, %s, %s, %s, %s, 0);\n"
	 * wtype = {'name', 'dmg', 'dmz_z1', 'dmg_z2', 'rate', 'slot', 'price', 'range', 'dispersion', 'ammo', 'ammoin', 'reload', 'recoil'}
	 *
	 * function map(f, list)
	 *     r = {}
	 *     for i,v in ipairs(list) do
	 *         r[i] = f(v)
	 *     end
	 *     return r
	 * end
	 *
	 * for i=1,0xff do
	 *     str = str .. fmt:format(i, unpack(map(function(t) return itemtype(i, t) end, wtype)))
	 * end
	 * */

	//weapons table
	AddWeapon(1, "USP", 24, 0, 0, 360, 1, 2, 500, 300, 0, 12, 100, 1100, 1, 0);
	AddWeapon(2, "Glock", 21, 0, 0, 360, 1, 2, 400, 250, 0, 20, 120, 1100, 2, 0);
	AddWeapon(3, "Deagle", 34, 0, 0, 600, 1, 2, 650, 300, 0, 7, 35, 1050, 0, 0);
	AddWeapon(4, "P228", 22, 0, 0, 360, 1, 2, 600, 300, 0, 13, 53, 1350, 0, 0);
	AddWeapon(5, "Elite", 22, 0, 0, 320, 1, 2, 1000, 300, 0, 15, 120, 1250, 0, 0);
	AddWeapon(6, "Five-Seven", 21, 0, 0, 280, 1, 2, 750, 300, 0, 20, 100, 2400, 0, 0);
	AddWeapon(10, "M3", 26, 0, 0, 800, 1, 1, 1700, 50, 10, 8, 32, 2250, 6, 0);
	AddWeapon(11, "XM1014", 22, 0, 0, 480, 1, 1, 3000, 50, 10, 7, 32, 1750, 6, 0);
	AddWeapon(20, "MP5", 13, 0, 0, 120, 1, 1, 1500, 300, 2, 30, 120, 1150, 0, 0);
	AddWeapon(21, "TMP", 9, 0, 0, 80, 1, 1, 1250, 100, 4, 30, 120, 1000, 0, 2);
	AddWeapon(22, "P90", 11, 0, 0, 80, 1, 1, 2350, 300, 3, 50, 100, 1750, 0, 0);
	AddWeapon(23, "Mac 10", 9, 0, 0, 80, 1, 1, 1400, 100, 4, 30, 90, 1700, 0, 1);
	AddWeapon(24, "UMP45", 15, 0, 0, 160, 1, 1, 1700, 300, 3, 25, 90, 1750, 0, 0);
	AddWeapon(30, "AK-47", 22, 0, 0, 120, 1, 1, 2500, 300, 3, 30, 90, 1375, 0, 1);
	AddWeapon(31, "SG552", 24, 35, 0, 160, 1, 1, 3500, 325, 0, 30, 90, 1250, 4, 1);
	AddWeapon(32, "M4A1", 22, 0, 0, 120, 1, 1, 3100, 300, 2, 30, 90, 1100, 1, 2);
	AddWeapon(33, "Aug", 24, 35, 0, 160, 1, 1, 3500, 325, 0, 30, 90, 2100, 4, 2);
	AddWeapon(34, "Scout", 45, 50, 100, 800, 1, 1, 2750, 350, 0, 10, 60, 900, 5, 0);
	AddWeapon(35, "AWP", 50, 65, 150, 2600, 1, 1, 4750, 400, 0, 10, 30, 2000, 5, 0);
	AddWeapon(36, "G3SG1", 32, 37, 45, 240, 1, 1, 5000, 350, 1, 20, 60, 2300, 5, 0);
	AddWeapon(37, "SG550", 30, 35, 40, 240, 1, 1, 4200, 350, 1, 30, 90, 2250, 5, 0);
	AddWeapon(38, "Galil", 13, 0, 0, 120, 1, 1, 2000, 300, 1, 35, 90, 1250, 0, 1);
	AddWeapon(39, "Famas", 14, 0, 0, 120, 1, 1, 2250, 300, 1, 25, 90, 1250, 2, 2);
	AddWeapon(40, "M249", 15, 0, 0, 80, 1, 1, 5750, 300, 8, 100, 200, 2300, 0, 0);
	AddWeapon(41, "Tactical Shield", 0, 0, 0, 0, 1, 1, 1000, 0, 0, 0, 0, 0, 0, 2);
	AddWeapon(45, "Laser", 1000, 0, 0, 1200, 1, 1, 6500, 1000, 0, 15, 45, 1000, 0, 3);
	AddWeapon(46, "Flamethrower", 30, 0, 0, 120, 1, 1, 3200, 55, 0, 100, 200, 1000, 0, 3);
	AddWeapon(47, "RPG Launcher", 325, 0, 0, 2000, 1, 1, 4000, 700, 0, 1, 2, 2500, 0, 3);
	AddWeapon(48, "Rocket Launcher", 70, 0, 0, 800, 1, 1, 5500, 700, 0, 20, 60, 1500, 0, 3);
	AddWeapon(49, "Grenade Launcher", 75, 0, 0, 800, 1, 1, 5500, 320, 0, 20, 60, 1500, 0, 3);
	AddWeapon(50, "Knife", 45, 90, 0, 320, 1, 3, 0, 7, 0, -1, -1, 0, 3, 0);
	AddWeapon(51, "HE", 105, 0, 0, 400, 1, 4, 300, 320, 0, 1, 0, 0, 7, 0);
	AddWeapon(52, "Flashbang", 0, 0, 0, 400, 1, 4, 200, 320, 0, 2, 0, 0, 7, 0);
	AddWeapon(53, "Smoke Grenade", 0, 0, 0, 400, 1, 4, 300, 320, 0, 1, 0, 0, 7, 0);
	AddWeapon(54, "Flare", 0, 0, 0, 400, 1, 4, 150, 320, 0, 1, 0, 0, 7, 0);
	AddWeapon(55, "Bomb", 0, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 0, 3);
	AddWeapon(56, "Defuse Kit", 0, 0, 0, 0, 1, 0, 200, 0, 0, 0, 0, 0, 0, 2);
	AddWeapon(57, "Kevlar", 0, 0, 0, 0, 1, 0, 650, 0, 0, 0, 0, 0, 0, 0);
	AddWeapon(58, "Kevlar+Helm", 0, 0, 0, 0, 1, 0, 1000, 0, 0, 0, 0, 0, 0, 0);
	AddWeapon(59, "Night Vision", 0, 0, 0, 0, 1, 0, 1250, 0, 0, 0, 0, 0, 0, 0);
	AddWeapon(61, "Primary Ammo", 0, 0, 0, 0, 1, 0, 50, 0, 0, 0, 0, 0, 0, 0);
	AddWeapon(62, "Secondary Ammo", 0, 0, 0, 0, 1, 0, 50, 0, 0, 0, 0, 0, 0, 0);
	AddWeapon(63, "Planted Bomb", 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3);

}
示例#24
0
void CWeapons::LoadWeapons(const char *szWeaponListName, WeaponsData_t *pDefault)
{
	if ((szWeaponListName != NULL) && (szWeaponListName[0] != 0))
	{
		KeyValues *kv = new KeyValues("Weapons");
		char szFilename[1024];

		CBotGlobals::BuildFileName(szFilename, "weapons", BOT_CONFIG_FOLDER, "ini", false);

		if (kv)
		{
			if (kv->LoadFromFile(filesystem, szFilename, NULL))
			{
				kv = kv->FindKey(szWeaponListName);

				if (kv)
				{
					kv = kv->GetFirstSubKey();

					if (0)
						kv = kv->GetFirstTrueSubKey();

					while (kv != NULL)
					{
						WeaponsData_t newWeapon;

						memset(&newWeapon, 0, sizeof(WeaponsData_t));

						const char *szKeyName = kv->GetName();

						char lowered[64];

						strncpy(lowered, szKeyName, 63);
						lowered[63] = 0;

						__strlow(lowered);

						newWeapon.szWeaponName = CStrings::GetString(lowered);
						newWeapon.iId = kv->GetInt("id");
						newWeapon.iSlot = kv->GetInt("slot");
						newWeapon.minPrimDist = kv->GetFloat("minPrimDist");
						newWeapon.maxPrimDist = kv->GetFloat("maxPrimDist");
						newWeapon.m_fProjSpeed = kv->GetFloat("m_fProjSpeed");
						newWeapon.m_iAmmoIndex = kv->GetInt("m_iAmmoIndex");
						newWeapon.m_iPreference = kv->GetInt("m_iPreference");

						KeyValues *flags = kv->FindKey("flags");

						if (flags)
						{
							int i = 0;

							while (szWeaponFlags[i][0] != '\0')
							{
								if (flags->FindKey(szWeaponFlags[i]) && (flags->GetInt(szWeaponFlags[i]) == 1))
									newWeapon.m_iFlags |= (1 << i);

								i++;
							}
						}

						AddWeapon(new CWeapon(&newWeapon));

						kv = kv->GetNextTrueSubKey();
					}
				}

			}


			kv->deleteThis();

		}
	}

	if (pDefault != NULL)
	{
		// No weapons from INI file then add default
		if (m_theWeapons.size() == 0)
		{
			while (pDefault->szWeaponName[0] != '\0')
			{
				AddWeapon(new CWeapon(pDefault));
				pDefault++;
			}
		}
	}
}
示例#25
0
Weapon* CreateDroppedWeapon(int weaponType, int weaponRarity, float width, float height, float xPos, float yPos)
{
	Weapon *CurrentWeapon = AddWeapon();
	Vec2 ColliderPos;
	Vec3 TextTint;
	int nameLen, statsLen;
	Vec2Set(&ColliderPos, xPos, yPos);
	Vec3Set(&TextTint, 0, 0, 0);

	CurrentWeapon->WeaponFOF = DroppedWeapon; // Friend or Foe tag
	CurrentWeapon->objID = GetObjectID();
	CurrentWeapon->WeaponRarity = weaponRarity;
	CurrentWeapon->WeaponType = weaponType;
	CurrentWeapon->WeaponName = (char *) CallocMyAlloc(MAX_NAME_LENGTH, sizeof(char));
	CurrentWeapon->WeaponStatsString = (char *) CallocMyAlloc(MAX_NAME_LENGTH, sizeof(char));
	CurrentWeapon->WeaponLength = 80.0f;

	if(CurrentWeapon->WeaponName)
		CreateWeaponName(&CurrentWeapon->WeaponName, CurrentWeapon->WeaponType, CurrentWeapon->WeaponRarity);
	else
		CurrentWeapon->WeaponName = "Error: Memory Allocation Failed!";

	CreateWeaponStats(CurrentWeapon->WeaponType, CurrentWeapon->WeaponRarity, &CurrentWeapon->BonusStrength, &CurrentWeapon->BonusAgility, &CurrentWeapon->BonusDefense);

	Vec2Set(&CurrentWeapon->Position, xPos, yPos);
	CurrentWeapon->WeaponSprite = CreateWeaponSprite(CurrentWeapon->WeaponType, CurrentWeapon->WeaponRarity, xPos, yPos);

	// Special Weapon!!
	if (!strcmp(CurrentWeapon->WeaponName,"Sausage Sausage of sausage"))
	{
		CurrentWeapon->WeaponSprite->SpriteTexture = LoadTexture("TextureFiles/BattleAxe.png");
		CurrentWeapon->WeaponType = Axe;
		CurrentWeapon->BonusAgility += 12;
		CurrentWeapon->BonusStrength += 12;
		CurrentWeapon->BonusDefense += 12;
	}

	CreateCollisionBox(&CurrentWeapon->WeaponPickup, &CurrentWeapon->Position, WeaponDrop, width / 2, height, CurrentWeapon->objID);
	CreateCollisionBox(&CurrentWeapon->WeaponAttack, &CurrentWeapon->Position, WeaponDrop, width / 3, height / 2, CurrentWeapon->objID);

	CurrentWeapon->WeaponGlyphs = CreateText(CurrentWeapon->WeaponName, CurrentWeapon->WeaponPickup.Position.x, CurrentWeapon->WeaponPickup.Position.y + CurrentWeapon->WeaponPickup.height * 1.5f + 25, 50, TextTint, Center, Plain);
	CreateStatsString(CurrentWeapon->WeaponStatsString, CurrentWeapon->BonusStrength, CurrentWeapon->BonusAgility, CurrentWeapon->BonusDefense);
	CurrentWeapon->WeaponStatsGlyphs = CreateText(CurrentWeapon->WeaponStatsString, CurrentWeapon->WeaponPickup.Position.x, (CurrentWeapon->WeaponPickup.Position.y + CurrentWeapon->WeaponPickup.height * 1.5f - 25), 50, TextTint, Center, Plain);
	
	ChangeTextZIndex(CurrentWeapon->WeaponGlyphs, 451);
	ChangeTextZIndex(CurrentWeapon->WeaponStatsGlyphs, 451);

	nameLen = strlen(CurrentWeapon->WeaponName);
	statsLen = strlen(CurrentWeapon->WeaponStatsString);
	if(nameLen >= statsLen)
	{
		CurrentWeapon->WeaponHoverBackground = (Sprite *) CreateSprite("TextureFiles/WeaponHoverBackground.png", nameLen * 25.0f, 180, 450, 1, 1, CurrentWeapon->WeaponPickup.Position.x, (CurrentWeapon->WeaponPickup.Position.y + CurrentWeapon->WeaponPickup.height * 1.5f));// + CurrentWeapon->WeaponGlyphs->Glyph->Height));
	}
	else
	{
		CurrentWeapon->WeaponHoverBackground = (Sprite *) CreateSprite("TextureFiles/WeaponHoverBackground.png", statsLen * 25.0f, 180, 450, 1, 1, CurrentWeapon->WeaponPickup.Position.x, (CurrentWeapon->WeaponPickup.Position.y + CurrentWeapon->WeaponPickup.height * 1.5f));// + CurrentWeapon->WeaponGlyphs->Glyph->Height));
	}
	CurrentWeapon->WeaponHoverBackground->Visible = FALSE;

	CurrentWeapon->WeaponParticle = CreateFoxParticleSystem("TextureFiles/ParticlePlatform.png", xPos, yPos, 9, -1, 3, .15f, 270, 0, 0.3f, 0, 110, 100, 50.0f, 1.0f, 0.7f);

	//Start off shopless
	CurrentWeapon->CurrentShop = NULL;
	CurrentWeapon->WeaponFalling = FALSE;
	
	return CurrentWeapon;
}